From 0fe94975523095f058058acbd4200271dc0a32d9 Mon Sep 17 00:00:00 2001 From: iamboss Date: Mon, 6 Apr 2026 15:08:59 +0800 Subject: [PATCH] update ISO coordinate rendering for 3+2axis machine. --- App/Hi.WpfPlus.dll | Bin 70656 -> 70656 bytes App/HiCbtr.dll | Bin 125952 -> 125952 bytes App/HiDisp.dll | Bin 11493376 -> 11493376 bytes App/HiGeom.dll | Bin 423424 -> 421888 bytes App/HiLicense.dll | Bin 81408 -> 81408 bytes App/HiMech.dll | Bin 896000 -> 950272 bytes App/HiNC-2025-win-desktop.deps.json | 150 +- App/HiNC-2025-win-desktop.dll | Bin 873472 -> 873984 bytes App/HiNC-2025-win-desktop.exe | Bin 215552 -> 215552 bytes App/HiNC-2025-win-desktop.pdb | Bin 328744 -> 328824 bytes App/HiNc-Resource.dll | Bin 56320 -> 56320 bytes App/HiNc.dll | Bin 391680 -> 388608 bytes App/HiUniNc.dll | Bin 189440 -> 187392 bytes App/en/HiGeom.resources.dll | Bin 4608 -> 4608 bytes App/en/HiMech.resources.dll | Bin 4608 -> 4608 bytes .../HiAPI-docsite/api/Hi.Cbtr.CubeTree.html | 20 +- ....html => Hi.Common.IProgressFraction.html} | 30 +- ...ml => Hi.Common.Messages.MessageUtil.html} | 50 +- .../HiAPI-docsite/api/Hi.Common.Messages.html | 2 +- ...iveProgresses.NativeProgressFraction.html} | 42 +- .../api/Hi.Common.NativeProgresses.html | 15 +- ...t.html => Hi.Common.ProgressFraction.html} | 62 +- App/wwwroot/HiAPI-docsite/api/Hi.Common.html | 10 + ...ingEquipmentUtils.IMachiningEquipment.html | 3 + ...ningEquipmentUtils.MachiningEquipment.html | 3 + ...EquipmentUtils.MachiningEquipmentUtil.html | 39 + ...ocs.DynamicMachiningProjectDisplayee0.html | 500 - ...Hi.MachiningProcs.LocalProjectService.html | 42 +- .../Hi.MachiningProcs.MachiningActRunner.html | 18 +- .../api/Hi.MachiningProcs.RuntimeApi.html | 4 +- .../Hi.MachiningProcs.RuntimeController.html | 4 +- .../Hi.MachiningProcs.SessionMessagePack.html | 12 +- ...ningProcs.SessionProgress.FilterFlag.html} | 20 +- ...=> Hi.MachiningProcs.SessionProgress.html} | 58 +- .../HiAPI-docsite/api/Hi.MachiningProcs.html | 16 +- ...i.NcMech.Xyzabc.CodeXyzabcMachineTool.html | 33 + ...cs.CoordinateTransformationChainClaim.html | 311 - .../api/Hi.NcParsers.Claims.IClaim.html | 170 - ...Claims.ICoordinateTransformationClaim.html | 240 - .../Hi.NcParsers.Claims.IFeedrateClaim.html | 179 - .../api/Hi.NcParsers.Claims.IMcXyzClaim.html | 205 - .../Hi.NcParsers.Claims.IMcXyzabcClaim.html | 217 - .../Hi.NcParsers.Claims.IMessageClaim.html | 204 - .../Hi.NcParsers.Claims.IModalFlagClaim.html | 204 - .../Hi.NcParsers.Claims.IOneShotClaim.html | 171 - .../api/Hi.NcParsers.Claims.IPauseClaim.html | 204 - .../api/Hi.NcParsers.Claims.IPolarClaim.html | 348 - ...cParsers.Claims.IPositioningModeClaim.html | 204 - .../Hi.NcParsers.Claims.IProgramXyzClaim.html | 209 - ...i.NcParsers.Claims.ISpindleSpeedClaim.html | 182 - .../api/Hi.NcParsers.Claims.IToolClaim.html | 204 - ...Parsers.Claims.Iso.G68CoordinateClaim.html | 525 - .../api/Hi.NcParsers.Claims.Iso.html | 149 - .../api/Hi.NcParsers.Claims.html | 228 - ...endencys.ControllerParameterTableBase.html | 119 +- ...Dependencys.Fanuc.FanucParameterTable.html | 141 +- ...s.Dependencys.Generic.FallbackConfig.html} | 129 +- ...dencys.Generic.NcKinematicsDependency.html | 612 ++ .../api/Hi.NcParsers.Dependencys.Generic.html | 37 + ...s.Heidenhain.HeidenhainParameterTable.html | 168 +- ...rsers.Dependencys.ICannedCycleConfig.html} | 48 +- ...ers.Dependencys.IRapidFeedrateConfig.html} | 57 +- ...encys.Siemens.SiemensMachineDataTable.html | 75 +- ...pendencys.Syntec.SyntecParameterTable.html | 1196 +++ ...l => Hi.NcParsers.Dependencys.Syntec.html} | 29 +- .../api/Hi.NcParsers.Dependencys.html | 23 + ...Hi.NcParsers.Keywords.CompoundMotion.html} | 142 +- ....html => Hi.NcParsers.Keywords.Dwell.html} | 36 +- .../api/Hi.NcParsers.Keywords.Feedrate.html | 74 + ...cParsers.Keywords.Generic.IsoKeywords.html | 829 +- ...cParsers.Keywords.Generic.MotionForm.html} | 103 +- .../api/Hi.NcParsers.Keywords.Generic.html | 7 + .../Hi.NcParsers.Keywords.IArcMotionDef.html | 313 + ...NcParsers.Keywords.ICompoundMotionDef.html | 213 + ...l => Hi.NcParsers.Keywords.IDwellDef.html} | 36 +- .../Hi.NcParsers.Keywords.IFeedrateDef.html | 36 +- ... => Hi.NcParsers.Keywords.IMotionDef.html} | 89 +- ...cParsers.Keywords.IPositioningModeDef.html | 5 +- ...cParsers.Keywords.ISpindleControlDef.html} | 38 +- ...sers.Keywords.ISpindleOrientationDef.html} | 40 +- ...i.NcParsers.Keywords.ISpindleSpeedDef.html | 47 +- ...html => Hi.NcParsers.Keywords.Motion.html} | 85 +- ...Hi.NcParsers.Keywords.SpindleControl.html} | 77 +- ...cParsers.Keywords.SpindleOrientation.html} | 71 +- .../Hi.NcParsers.Keywords.SpindleSpeed.html | 33 + .../api/Hi.NcParsers.Keywords.html | 89 +- ...Parsers.LogicSyntaxs.BackBoringSyntax.html | 443 + ...arsers.LogicSyntaxs.BoringCycleSyntax.html | 449 + ...LogicSyntaxs.CannedCycleResolveSyntax.html | 419 + ...ers.LogicSyntaxs.CircularMotionSyntax.html | 443 + ...sers.LogicSyntaxs.DrillingCycleSyntax.html | 444 + ...NcParsers.LogicSyntaxs.FeedrateSyntax.html | 8 +- ...Parsers.LogicSyntaxs.FineBoringSyntax.html | 442 + ...ogicSyntaxs.G53p1RotaryPositionSyntax.html | 457 + ...hain.HeidenhainCoordinateOffsetSyntax.html | 8 +- ...LogicSyntaxs.HighSpeedPeckCycleSyntax.html | 442 + ...LogicSyntaxs.IncrementalResolveSyntax.html | 528 + ...ogicSyntaxs.IsoCoordinateOffsetSyntax.html | 8 +- ...ers.LogicSyntaxs.IsoG68RotationSyntax.html | 8 +- ...rsers.LogicSyntaxs.IsoG68p2TiltSyntax.html | 8 +- ...yntaxs.IsoLocalCoordinateOffsetSyntax.html | 10 +- ...rsers.LogicSyntaxs.LinearMotionSyntax.html | 439 + ...LogicSyntaxs.MachineCoordSelectSyntax.html | 450 + ...rs.LogicSyntaxs.McAbcCyclicPathSyntax.html | 8 +- ...Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html | 391 + ...Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html | 379 + ....LogicSyntaxs.PeckDrillingCycleSyntax.html | 450 + ...rs.LogicSyntaxs.PositioningModeSyntax.html | 72 +- ...Parsers.LogicSyntaxs.ProgramXyzSyntax.html | 131 +- ...NcParsers.LogicSyntaxs.ProgramXyzUtil.html | 432 + ...rs.LogicSyntaxs.ReferenceReturnSyntax.html | 461 + ...NcParsers.LogicSyntaxs.RotaryAxisUtil.html | 263 + ...Siemens.SiemensCoordinateOffsetSyntax.html | 8 +- ...rsers.LogicSyntaxs.SpindleSpeedSyntax.html | 19 +- ...rsers.LogicSyntaxs.TappingCycleSyntax.html | 444 + ...s.LogicSyntaxs.ToolHeightOffsetSyntax.html | 8 +- .../api/Hi.NcParsers.LogicSyntaxs.html | 391 +- ...im.html => Hi.NcParsers.NcDiagnostic.html} | 157 +- ...=> Hi.NcParsers.NcDiagnosticCategory.html} | 40 +- .../Hi.NcParsers.NcDiagnosticProgress.html | 815 ++ ...=> Hi.NcParsers.NcDiagnosticSeverity.html} | 40 +- ...mmentSyntaxs.HeadPercentCommentSyntax.html | 8 +- ...axs.CommentSyntaxs.QuoteCommentSyntax.html | 8 +- ...taxs.CommentSyntaxs.TailCommentSyntax.html | 8 +- ...Parsers.ParsingSyntaxs.CsScriptSyntax.html | 8 +- ...i.NcParsers.ParsingSyntaxs.FlagSyntax.html | 8 +- ...s.ParsingSyntaxs.FloatTagValueSyntax.html} | 62 +- ...arsers.ParsingSyntaxs.HeadIndexSyntax.html | 8 +- ...fSyntaxs.HeidenhainDatumSettingSyntax.html | 8 +- ...DefSyntaxs.HeidenhainDatumShiftSyntax.html | 8 +- ...xs.Heidenhain.HeidenhainBlkFormSyntax.html | 8 +- ...ntaxs.Heidenhain.HeidenhainCallSyntax.html | 8 +- ...xs.Heidenhain.HeidenhainCyclDefSyntax.html | 8 +- ...idenhain.HeidenhainFnAssignmentSyntax.html | 2 +- ...gSyntaxs.Heidenhain.HeidenhainLSyntax.html | 8 +- ...yntaxs.Heidenhain.HeidenhainLblSyntax.html | 8 +- ...taxs.Heidenhain.HeidenhainPlaneSyntax.html | 8 +- ...xs.Heidenhain.HeidenhainProgramSyntax.html | 8 +- ...s.Heidenhain.HeidenhainToolCallSyntax.html | 8 +- ...ParsingSyntaxs.IntegerTagValueSyntax.html} | 62 +- ...rsingSyntaxs.NamedVarAssignmentSyntax.html | 8 +- ...ers.ParsingSyntaxs.NumberedFlagSyntax.html | 8 +- ...arsingSyntaxs.ParameterizedFlagSyntax.html | 10 +- ...gSyntaxs.ShrinkIfNoDecimalPointSyntax.html | 12 +- ...rs.ParsingSyntaxs.TagAssignmentSyntax.html | 10 +- ...arsers.ParsingSyntaxs.TagValueSyntax.html} | 84 +- .../api/Hi.NcParsers.ParsingSyntaxs.html | 20 +- ...arsers.Segmenters.HeidenhainSegmenter.html | 8 +- .../Hi.NcParsers.Segmenters.ISegmenter.html | 8 +- ...arsers.Segmenters.SingleLineSegmenter.html | 8 +- ...sers.Semantics.CompoundMotionSemantic.html | 374 + .../Hi.NcParsers.Semantics.INcSemantic.html | 8 +- ...mantics.MachineCoordinateStepSemantic.html | 12 +- ...Parsers.Semantics.McArcMotionSemantic.html | 376 + ...sers.Semantics.McLinearMotionSemantic.html | 380 + .../Hi.NcParsers.Semantics.SemanticPiece.html | 338 - ...rsers.Semantics.SpindleSpeedSemantic.html} | 234 +- .../api/Hi.NcParsers.Semantics.html | 45 +- .../api/Hi.NcParsers.SoftNcRunner.html | 55 +- .../api/Hi.NcParsers.SoftNcUtil.html | 113 + .../Hi.NcParsers.Syntaxs.BundleSyntax.html | 8 +- .../Hi.NcParsers.Syntaxs.CleanupSyntax.html | 8 +- .../Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html | 2 +- ...i.NcParsers.Syntaxs.GenericSyntaxKit.html} | 75 +- ...cParsers.Syntaxs.HeidenhainSyntaxUtil.html | 10 +- ....NcParsers.Syntaxs.IExpandingNcSyntax.html | 8 +- .../Hi.NcParsers.Syntaxs.ISituNcSyntax.html | 8 +- .../Hi.NcParsers.Syntaxs.NcSyntaxUtil.html | 58 +- .../api/Hi.NcParsers.Syntaxs.SyntaxPiece.html | 4 +- ...Hi.NcParsers.Syntaxs.SyntecSyntaxUtil.html | 8 +- ...tml => Hi.NcParsers.Syntaxs.TagValue.html} | 58 +- .../api/Hi.NcParsers.Syntaxs.html | 6 +- .../HiAPI-docsite/api/Hi.NcParsers.html | 33 +- .../api/Hi.Numerical.Acts.ActActualTime.html | 40 +- ...cal.Acts.ActClDerivedMcXyzabcContour.html} | 58 +- .../api/Hi.Numerical.Acts.ActCooling.html | 40 +- .../api/Hi.Numerical.Acts.ActLineBegin.html | 40 +- .../api/Hi.Numerical.Acts.ActLineEnd.html | 40 +- ...umerical.Acts.ActMcPolarLinearContour.html | 36 +- ....Numerical.Acts.ActMcXyzLinearContour.html | 5 +- ...Numerical.Acts.ActMcXyzSpiralContour.html} | 70 +- ...erical.Acts.ActMcXyzabcLinearContour.html} | 54 +- .../api/Hi.Numerical.Acts.ActRapid.html | 40 +- ...Numerical.Acts.ActSpindleOrientation.html} | 150 +- .../HiAPI-docsite/api/Hi.Numerical.Acts.html | 32 +- ...Hi.Numerical.CoordinateEntryDisplayee.html | 521 - .../Hi.Numerical.FilePlayers.CsvRunner.html | 8 +- ...Hi.Numerical.FilePlayers.HardNcRunner.html | 8 +- .../api/Hi.Numerical.HardNcEnv.html | 64 +- .../api/Hi.Numerical.IControlRunner.html | 8 +- ...i.Numerical.Xyzabc.IMachineKinematics.html | 99 - .../api/Hi.Numerical.Xyzabc.XyzabcSolver.html | 18 +- .../HiAPI-docsite/api/Hi.Numerical.html | 10 - App/wwwroot/HiAPI-docsite/api/toc.html | 317 +- App/wwwroot/HiAPI-docsite/api/toc.json | 2 +- .../dev-doc/basic/geom/basic-geometry.html | 58 +- .../dev-doc/build-hinc/general-rules.html | 6 +- .../dev-doc/build-hinc/main-panel.html | 4 +- .../message-section-on-main-panel.html | 2 +- .../session-message-panel/index.html | 22 +- .../build-hinc/widget/vec3d/index.html | 6 +- .../dev-doc/general-hinc-workflow/index.html | 2 +- .../dev-doc/release-note/index.html | 2 +- App/wwwroot/HiAPI-docsite/index.json | 775 +- App/wwwroot/HiAPI-docsite/manifest.json | 1422 +-- ...ommon.DemoMessageAndExceptionHandling.html | 83 +- .../Sample.Common.DemoSessionMessage.html | 249 +- .../sample/Sample.Geom.DemoBuildGeom.html | 58 +- .../Sample.Geom.DemoIExpandToBox3d.html | 43 +- ....DemoBuildMachineToolWithoutGeometrys.html | 37 +- ...ing.DemoBuildGeomOnlyMachiningProject.html | 123 +- ...e.Machining.DemoBuildMachiningProject.html | 359 +- ...ple.Machining.DemoUseMachiningProject.html | 108 +- App/wwwroot/HiAPI-docsite/xrefmap.yml | 9101 ++++++++++------- App/zh-Hans/HiMech.resources.dll | Bin 13312 -> 13312 bytes App/zh-Hans/HiNc.resources.dll | Bin 4608 -> 4608 bytes App/zh-Hant/HiGeom.resources.dll | Bin 4608 -> 4608 bytes App/zh-Hant/HiMech.resources.dll | Bin 13312 -> 13312 bytes App/zh-Hant/HiNc.resources.dll | Bin 6656 -> 6656 bytes 219 files changed, 23941 insertions(+), 12629 deletions(-) rename App/wwwroot/HiAPI-docsite/api/{Hi.Common.NativeProgresses.IProgressReport.html => Hi.Common.IProgressFraction.html} (83%) rename App/wwwroot/HiAPI-docsite/api/{Hi.Common.Messages.MessageHost.html => Hi.Common.Messages.MessageUtil.html} (82%) rename App/wwwroot/HiAPI-docsite/api/{Hi.Common.NativeProgresses.NativeProgressReport.html => Hi.Common.NativeProgresses.NativeProgressFraction.html} (82%) rename App/wwwroot/HiAPI-docsite/api/{Hi.Common.NativeProgresses.ProgressReport.html => Hi.Common.ProgressFraction.html} (77%) delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.DynamicMachiningProjectDisplayee0.html rename App/wwwroot/HiAPI-docsite/api/{Hi.MachiningProcs.SessionMessageHost.FilterFlag.html => Hi.MachiningProcs.SessionProgress.FilterFlag.html} (88%) rename App/wwwroot/HiAPI-docsite/api/{Hi.MachiningProcs.SessionMessageHost.html => Hi.MachiningProcs.SessionProgress.html} (82%) delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.Classics.CoordinateTransformationChainClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.IClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.ICoordinateTransformationClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.IFeedrateClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.IMcXyzClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.IMcXyzabcClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.IMessageClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.IModalFlagClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.IOneShotClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.IPauseClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.IPolarClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.IPositioningModeClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.IProgramXyzClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.ISpindleSpeedClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.IToolClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.Iso.G68CoordinateClaim.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.Iso.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Claims.html rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.SoftNcEnv.html => Hi.NcParsers.Dependencys.Generic.FallbackConfig.html} (66%) create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.ICoordinateTranslationClaim.html => Hi.NcParsers.Dependencys.ICannedCycleConfig.html} (70%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.ICoordinateMarkClaim.html => Hi.NcParsers.Dependencys.IRapidFeedrateConfig.html} (73%) create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.Classics.html => Hi.NcParsers.Dependencys.Syntec.html} (82%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.Iso.OrthogonalPlaneClaim.html => Hi.NcParsers.Keywords.CompoundMotion.html} (73%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.SentenceClaim.html => Hi.NcParsers.Keywords.Dwell.html} (86%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.ProgramXyzClaim.html => Hi.NcParsers.Keywords.Generic.MotionForm.html} (63%) create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.IArcMotionDef.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ICompoundMotionDef.html rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.Iso.IIsoHeightIdClaim.html => Hi.NcParsers.Keywords.IDwellDef.html} (82%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.IHubClaim.html => Hi.NcParsers.Keywords.IMotionDef.html} (70%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.IHeightOffsetClaim.html => Hi.NcParsers.Keywords.ISpindleControlDef.html} (78%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.IPreparedToolClaim.html => Hi.NcParsers.Keywords.ISpindleOrientationDef.html} (77%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.Iso.IsoHeightOffsetClaim.html => Hi.NcParsers.Keywords.Motion.html} (76%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.McXyzClaim.html => Hi.NcParsers.Keywords.SpindleControl.html} (79%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.SoftNcComment.html => Hi.NcParsers.Keywords.SpindleOrientation.html} (82%) create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.BackBoringSyntax.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.DrillingCycleSyntax.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.FineBoringSyntax.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.HighSpeedPeckCycleSyntax.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.Classics.RadialRadiusOffsetClaim.html => Hi.NcParsers.NcDiagnostic.html} (59%) rename App/wwwroot/HiAPI-docsite/api/{Hi.Numerical.CoordinateEntryRenderingFlag.html => Hi.NcParsers.NcDiagnosticCategory.html} (66%) create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.PositioningMode.html => Hi.NcParsers.NcDiagnosticSeverity.html} (80%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.ParsingSyntaxs.FloatTagSetupSyntax.html => Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html} (79%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.ParsingSyntaxs.IntegerTagSetupSyntax.html => Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html} (79%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.ParsingSyntaxs.TagSetupSyntax.html => Hi.NcParsers.ParsingSyntaxs.TagValueSyntax.html} (79%) create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.CompoundMotionSemantic.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.McArcMotionSemantic.html create mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.McLinearMotionSemantic.html delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.SemanticPiece.html rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.Iso.G54CoordinateClaim.html => Hi.NcParsers.Semantics.SpindleSpeedSemantic.html} (57%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Syntaxs.GeneralSyntaxKit.html => Hi.NcParsers.Syntaxs.GenericSyntaxKit.html} (78%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Syntaxs.TagSetup.html => Hi.NcParsers.Syntaxs.TagValue.html} (83%) rename App/wwwroot/HiAPI-docsite/api/{Hi.Numerical.Acts.ActLinearClAndLinearMcAbcMcXyzabcContour.html => Hi.Numerical.Acts.ActClDerivedMcXyzabcContour.html} (76%) rename App/wwwroot/HiAPI-docsite/api/{Hi.Numerical.Acts.ActSpiralMcXyzContour.html => Hi.Numerical.Acts.ActMcXyzSpiralContour.html} (85%) rename App/wwwroot/HiAPI-docsite/api/{Hi.Numerical.Acts.ActMcXyzabcOrientableLinearContour.html => Hi.Numerical.Acts.ActMcXyzabcLinearContour.html} (79%) rename App/wwwroot/HiAPI-docsite/api/{Hi.NcParsers.Claims.Classics.PauseClaim.html => Hi.Numerical.Acts.ActSpindleOrientation.html} (70%) delete mode 100644 App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CoordinateEntryDisplayee.html diff --git a/App/Hi.WpfPlus.dll b/App/Hi.WpfPlus.dll index 4f91814e23093f96a437dd4812bd9df54db12576..caeb32fd114c906cdd9b6762cc87a468fd9ab727 100644 GIT binary patch delta 313 zcmZoz!P2mTWkLr_qPX6QjXlTY7#k-C%Ud$GOzxF0XRO-Hs?aPZP%z`rR7*1p|F%^< zUpH-LE8aZAYzeESrJex;gDE3}fw7*Uo}rPYwna)(qLHbQrE!u$l8JGWp;@Y#nPqZ{ znWd3&nsK5@qM4~#T4HKi^5jw*XBM0L_PZzVu?Y~^pT7CXlKY#z=P$LW;I;JlHd)5j zLjfwd`#w|h|_?qR3Mo=JzRj%5@^9h0mgi006oZHDF6Tf delta 313 zcmZoz!P2mTWkLswRc7_-jXlTY7#k)B%Ud!wPwtg3XRO@Js?aPZ;6C%)+JtjXPLmh0 z+`IYWMDXSrW=mKtE%Xc+7)%)%42<;*^$d+Hv`vlEEG-ff%?(r1%*;$JQqm05Oe_ z4+W@TWC~OesM@*VVA+&Chi8hv>)*3x^24~U&3txO&T%#{FfuSRFfcT1f6c?Vl9AD3 z`&2&0e8yl425kmY24jXa21^DDhD0DVXE0<)0rJg&&=e>JVjBXn2~b5MLoyH>17(sK kQo*{+fZ~QgF-wLdpw2V~0|uk%;R1}7Kno@cFy=D@07`#f3;+NC diff --git a/App/HiCbtr.dll b/App/HiCbtr.dll index 54f0a10211deb620f0b925ef9649f6b0d3149476..7b5d59c4159794d5261394486269af3cd287548f 100644 GIT binary patch delta 20264 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 diff --git a/App/HiDisp.dll b/App/HiDisp.dll index 2940ff7bae71be4e92aab1bd1539480cbb8128a3..6b11b04f826c6971bde010febc4f10185e03d466 100644 GIT binary patch delta 74402 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

j|HlnPBaU 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 AlK=n! delta 74418 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

bUv&^OC~iEwFFIS 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

V2Xtv2t?rlvwqdpW3C^ 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

  • OcQW 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 delta 148142 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%0D_U!X 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 T+)YqWZx93(4*k6Pwn^) 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 Q7=BuZ3SIEK4)b*X0011z`v3p{ diff --git a/App/HiMech.dll b/App/HiMech.dll index 36089de8c1925b4bfba33268abfd878dcc6f6f3f..5afec553eb14b5d2b2954e7b3bac1b057586e681 100644 GIT binary patch literal 950272 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ΞOA*LC(u)EhkOYMf^M!g`{mBlMcAJU}`6Up)+zd6;SEvvm_ozvTiGRn$|H2Qe z!`{rdNP{HI>C=HR0s^btG3h8r(?}^L- zyYUrsdNr@bpy+kcqncSEyRa3JZ7n9Cn1R-8$SFe*4naQzb7z0})je*X^^zMwo^vyq z-!BT+MvmF=L7@rLu~vxEAMj#6ifmL(`{p$O2G`Dp(fBafW?$eAHGw1bD~vG%-w1$m zH*=9?sPk~-2<^|2!VP068-j?xdLlHF-l2|cSU*-}!)PoaeJm_NA5MG$pf*X9thcq~ z^mDBXZ$LT9uAChPrJ9vsgWFH0+Bb$b+8BOhm?G79TQK55SPXT;+QR z%7jU+SW1j@6$K}24bQWK&^*>J4|@&Yn6I%^uS)Hl?)Nn~%#INYvPhnyO- z$2U}f$&)_QOvDp>jj;|n-9%jQ4fR4YH)*0RW~ufCK=T z;Q$fFMn=#$F)MVNK*UWjnD1jJ}|I|S2xYF#Ga)|&*- zPmBXd0D$!zKmq_19Y6x;9UCLpx=VOAVfoX{dXPNY^R#ov=pQU1YNxX+EFkg9>>>TH zlYL|Nj}1@?P^IzYd!FJ4#=~!<_`&h;3s{SW{_zF~>NDi(IQ?UNppyL~qR%%Q0@ctz zBKqLUHx@pk4|jSs;#2)&4LE9E0R6=$BSybnS%XAaD14F0Y+J_nRlN$RmGeI`xFraL z;F1L)n+IXmIb>5H%=(37JHiy3Py_`+%mfr>M&^?d`D7#r_qKS{D8m%)%@j8>An*Rj zAfNO6@*EIgb|eyaEONsHVlB9RQ?GueA}KLF+YOOrilZw(oUtW9v^7b?4txT&y~LLJ z-H8N2^oa^*kTX%zpnqD?oJqXOeF;1}5_VmAKfvgNGeo(L%YhHe{=k&`VYZn+U|py` znO9fQT;%eafW1+Vcava$kYpCJSjo!e!gZ0dh>h<7EP12e@-c;|8VW%z*as&gJ?zYO zI6aVxzCt*Hd|1g5c$|vQ!BPOilUXDtgnS9YQ}~7`8z%XD5P?Ve;nbVs`2mE2YEn=<(;rzMB@9jp24J%bh1?H>aX~OzyC*z??`A#L9?ink z+AMgH_|hOznXEPA32IFK60`eaKjkY@1bO{NJx0`5 zq$H3b$f~&fR~IA6X!a6ho>tTISWh&;e64R#VE|uxV?6-gh~RUAfo|WN4p6^u&X7k> zMKCsE-5AwX*_fG(EX1$O{hG`G$bkz7A^ymM7(S?QLi~|U`P)_D!wivrzgvr8{`zg; zV<@8|%zkidEZR|=R`?UV37FZzm4vT4eVi?;M5SId-B}T^DO?}9hRCX5DP%_Q3-slF z@?$0MO<4Mdh=P?^Qo=>T(~yNM5;9Pp$Miz0L}*E_G4Xqny2cc*vthN7^=r(CYgiSn zI)AZ_C@kX*Vjp0My{I7r<@t;#yi>kwJhsnfOvh1H0sw6801~*wFK@)OY-PLE%li3K zCBAknoFjVYNGL%hWYrqQb$eK^aO*%i`8^_qGOWo(*U-|^b_LFHbYM?(CuTC_1(&=Rcu(1Qh9l`4M&4Ix<9(dcJIGES%ne76E zuoflDiyPosnhZliR1uyZLDFJ}*KI#$4N3bWV&HBpy1|s8fD32Vm9Pa%023&Ae6suT z2+)>j#=+?Uq*D0fo0EVDw?u3xFCs;GeH=imyv{c_LvVBX!bs&jP;Q^w6BlY7X8B%TJvr44n_X_^UX@&!PUD#JRWqLQ^Sc99Vdf-q6}Vx zh=JK4Wsd0zB>cj$heChx(d^wUZV_r=aO4G}CCZ@R0N3UDCxoX&_&y}osfcf`M&ekK z%`mdDvy`Y<><1!JxHV9*6{mM;zMw_8yXLqys1SRstGpPAD!YJbb~H3(s`^;Gk5J#- zh`h~)go=;FjtS_z2)dI(Z$ez`(%@ITDazNv(5UQ8TkHvmJ9X*Rqh&>B=Q#4cKaqaYKw@eo0DGl{QiE5Um!s<-cjsQ2;X)q5S^ z+{}#WV&UnF=IP!72nA+2Bm?9&JJ4>K|^GT6r$zRoy%~vc1 z6zAe;ZnN+kfGTyV9Yg5@OwHbddF8L*5=8q=n!uTM+5lqOp*(g%shI?j^lMCt3Nf0h zLA9)5T<(gv*0_`$t#L`P=;!YVRnEASC}L;JSVx=s1h#Kb-i2aSFzf^}3b0E+UEhmG zjnbz(O`j%oRuC2;+xSk(#t_!p5@1#BGE_YfKcm?<5iwS~POmb66o*n?+`A2mi zGiuknA+CX$mv$kcD^eQd+(Q0J>Hh`tsrOYHSg#)9lDvW>SVS&=2M)nD=_c%Nu~*i7 zTv?rhxTN$d!lmMmp}ZA`2A(h5&iU}$$O-rQrjiVh<}@goi}|(Cyr3~n8k9=&grr&6 zm?jNMrO|RWYfO^{rP63Q(Rd=O^^L>WUqMZB7^7bfPB%9CTnoKm1+G9hg zBkc~i_U@PW=CHO0MBc4Qj6JL#z!*BOFW>2e4NiQ@X12?lmhVFkMGpu5&(d#poaW8iqseLN6w1 z$@~o(Dr7SO8TW{$a5|bhq%HtF?gAFh{to!lc$nQW1eBNHCwxYstJ2VC70Uh*zJVXE zZ7c^L?eHUYvBM9+GW`4*@$B>fTxU0srk23=39joD%&qgJ$0U{|Tw}=?lm3oJjl+zN zNk1X<6wFBu1_+Ns^l>O3(&dU5tp*9vev27^x`UV{1yKS3Fhc=I003q!00{uVLIfZI z01k5i2~bzy=(iVQ%qus;^eEthf+G+GJoy(&tsKtq2!CalRIC$D9L1)eP&u=0!#tan z3wchvH81D1t<8k~!|G`N(bL)yNG5G^s5}jl6HzZXmxb5t3|V*)o+z22yK%LT{4xOu zw)^^=F&C#*j|8~5a<1HN+V!xT%sjqm?w+^Lf-A;zi)3zIlW1&*-EIGwdzAeBYSG;P zF$Y|H&)<+j^H^n59L4gUf|XV~nju->VyJo&enzt!lXcMvX%NErFmQOjEf4#qU(UVH zMXWmeCSISAQPmB*|ATH@IR<$I<~6!0#&tzhEHZFS6V)z;lX0wtpqZf_IR~wV^4JTUpvy0cPpPR^2 zm~|pgN?|xmMN;!4w5OUAq}xIN8bMhL2aQb+)(KGh0&iso1 z3`_@}c8cX%|vr(3sD<8v`K5*p^ab}+SWrn zJG4y`eZi)cm~KGliyhFBFPRlZ(Se=qhLt4mWbmV>kS*_xYW8K#-_gDM%$xXa>2B?q zkT?4P-az*rG$dF-42c`zQKNp+A+eKC2;|9xa72>;xV8xpb{%bBMh+Pu=hKIod$4I$3!UK!q;l!>(Bs{vsky{f5Ih%MtFv0APALoX* z<(g(g@n$xBh7H*)TGMPO6wHRt`fRKub1aVQB@4;c-!4%J@mj+^JhG8B4f?`ujh9AW zxOl;tCv(YDo!@EFxI;l&6v+YH%tJh?%LIs>%I(wdh;a3E2*_x5KLnHGqq&ar0=8w~ z;S1{Cscg%hN*R&yIF%2v($r5Z?SdtKVsODqdO%Uu0`o;KnMFgTIEEpfbq5pwD+*p< zzLbh*J;7S6|Chw06b9z{R6KG0O8KW*C$QK*O(c|Sx95x2#l9JNAS6ZKw2LZ(ZyEua z@NB|2ilQ1|L$nUr8%?Yiww4X77X-*_*&wE&0QDnPD4-AHWZjty#f43IM&>Sey zLRw$A3w_7-RtVejx=a#OK7ayz(+8R> zXR@p_v2j}?tgG@teVoI`>`{p+zAjj!_aF`!$CwzFM02)h^9=z+b579=M@E1NKMj&Z z0{xK+-$iT>1W_&iY9b7R&Tt4nt$xmqFB|Edc*}W)sc>x1{*|*yQ$9Qhc@5^wLO@HC z@;QHm@Z*=4Z$`md3oV$^l`N9)B1cd`Hjx=dCR$~US&@48R6c|(OQAo)S79tXQSI9{ zwC2gT8BqDAN7$N)22@&TtP2~(g(d)^%o|s)MMD7Ga-5B;q^q2M7@I&3SGMG@m z*F-r$=ePWyJvzVFA7R@`E6#7hX1g?Mp_J0qODqrP z0&eBuBM253Ll7In70rEy&_JM-fnR_ykpaoXANeRyNg?{QBHylPhiA9+*e#5iyqk2sB z^9XrkLO`jX_rYQ%CHqzsRc z@*)iviqswnAm&vPqcf9h&nQLZqW~At>dcm=$8YQSO?2j;hmpK;Y z;0B0fgb`+#z%Zf~A{b4n3Cwa3F@T+8e84=)RN5aoM(M=1iuyn@`?{3LOgmhbq}Ga* zWT}x95;5ak$BfHKMpxwueS8`Z(WimOGqU^xVMJCWB0eq6u*AmKrI|>uw)UVwVf=M8 zFrme->+sAVJdUiC8cBYVG?_@V)+EZfEs~%_dZA6yj|p^{))ymllbFv5LWL^LHBO{7 zppJ2IKcT5P4%)J9xfs}5A28bp>0@0oGRlC<}zJ-Gw4%);mLRn%$6{nIu&cbh`Z8t&R1oiS)A*R%ZBn%uWuMx7v4_Bb9)&+Fh?|{n@UZhrS z;pqrM{d9C>%?B9FHRC2(p%#!c02zD<*Y#vayKyI+y{@M@JQMJNU7EuYrhr*1Wa7c1 zm)R#CXWCajZKP#odTw<#<=UIFVlPYO_HO}EXCbrA4%X{|{L$`xqVjT?W#|(VW}q*4 zCwsF$;Z0d zyB2*;{h%&@^i{ur*U{`92&QK3U*@d6bA!BhagH@ZJBM)QROr8 zDshLGXjzrd3haHHV(id4T)8@qQrma9at&Y0HL#)2(l|6+-U)1QuZe-aTp^EkP9PUL z_n=wB4amFq92@zS8~JyLLrzYl3_qBlW4HH0M|UDOTZ5R6G_sBkxIRVIOVRP#*=xcN z&28A#DqWN`$a|%u^0_r`q8$@;aP1d0Q5u=1x3)NyQjy!a%4{_Ta*0FEPa&nI-cpA& zDP$eT=OmCRj*rvwwXG8g>Z@0WOjpm_GL>>4`CIIW+&qPpl*RWs70Tt3)#6 z2#V^StX|*Ty1I8IQl{!Yp0uTj{QqMODxasE+LZ(ANOWUrNl(A?kOJvJH93uT8Ps23 zzLG-AI%)^JF>a=AybJ2bOv93Ve_+1a7;mQG8Om73Fhfa$%*|1ZJD^Cb*MVu`UZ`WhovxmJHDan?N~6C+^oOV< zYs8p;qGskgDfyNtU;4!g7uvzNZ!pEV?Mq4RAXOV#O!8=xY^8 zGA=M85*Kkyw5{DS`Z^W^b%`j1O;`^)2|C{NwKaKMzM)Uu6I?jV}{=_8mj~3Bs>d2ag z1h8U3gGT@o0N>dLH(*xDzyE6=2^$&*rN{{Q585Sez#DJG!U|AgaI71U|ATb=U;D^Y z%e~G75>fD6%hw_6n&bc4M{ZuDjQMX^cnSN6tF@e}i6WB#0Gy`@Kmzk{?GV(Xc?{D< zteXWgZ!}i`#Kc#*xDtR44CMZ%*<8CYD-j9bQ|dEIu=p_8($D+aIH=@`2F_81>g`CJ zFgYHk7S`**h%uwo@;OB0_@=%Q7+Bl=NfT^_9iHZwE%gG%EMaHd#$3*$o$)qD-OpG; zIop&Xp9gT>;V6Y;=hbasaqUVs|N2^XxG z%2*yDgYZJ&bT2ec&*3{{b~pyNZJBPggOk%ttdfo)*i zQ?v-U9)OLf(M|fBWZgw(eBEk0f(C*H2$_R`$Rn?_Tn$!?Tj-?KZsJP&sBr#o2XZ%t<9)Ak7_V zVCg2KfnKu5_2qYtH&nhIG}Sm6wBJIx5bq!ddeZl{#gpw8m|LO~IuDYIa<;a~JcO{c zQnV2H+M=OWs|@ZwXLwmL(hJ2`F!75rk*Vkx)6DrUnSs%J}%7r1!tj7T=2MFKzLa zbmi`eD@RPSavb~LUERJN6_su;Z41an9W6JdY58GH3o-vqT7H!jF3Lq1Nq9oIVu{ll ztPQJ#nv-&x^A1xn^ubkxN_L>>;uBmn)ZfgpJ<|(wyY; z$G9`7HLt0{1JNCwbI_Y_SAN2_LmS@5=VAJkh6^eL;kH{8rFKo$YeWC|sMPsosWVO; zHJPunEJHO;1$^@xz@-A_Mr3M! zi`NAgYQlOZ_YLMEZoZ4`O1!5=rTpEbYB5_v?dX*tV=(WBWFF{bAE0ltB953q zZ}UUaa+kxWQJ(n?W^qpPu0cN{dOhm({ z6v29_Yyp9ZPbqv>5mXf+tA#vYXZQ^bv#*6OY4{a}U)AvQ48MRM+`qt@yT0FqYji#) zeV+u@o!2v`<0w>o#y~ASk{p<=kw=Ufzz0Rr5VJUn03Ct3bNo)Tcc6qxY8r&ElG(3n zU`?xJ$N+d9KJouB_a@+x6;=EAoqM})Z%I#XI@8Il0fvMkoeU7hAu|J$unjoKz9kuU zm_cCR3hnSIO^1jIilBgsii(Qj4z3^|`wp^+?E4}pn+`7QhX4DXs=IYE==c1-@A-du zp7gCcb?Vf1>eQ+2l%%$ONK7IlwIoFC5F+T*B7c}#66C@Z3G-i}$?%F|t>XOk6O!7F zAu)-}CufqNNaaiNyiNL!R|yS z7bz_ch_1T=fHc7#R@?s>N9>Grdx*%)u$ zv}o;ms855W9=hc@k(h{o^F6$@ksP+_Oe0Pl1E=~T##pwE`Vt*b1UWp?<`0#UNS|N` zH3Z4Ges4j>R-?30=MiIon!H|O$HJ3YYu7CldD%#fqdDrswzfsREfpS+A&G4s48KkbIBrNY=z$U;FZl3Ln1zQ;(??q{a>%^h!o9nS>f_}9HF>t}*_rU4J+lQWo|R<%cZ;!Gg!C}uOz}QfPP!1 z0K$&{O~i2I(H4EZ&)BZ#eLc&-s zp3>=Ucic!-t@0qG4&fC}A;zB3bBTld2&~3YwISLh^5OJ*uzrA{ozZbItb{U*a{{by zpuSED5EYLQLJdzGn7y_G&&*ygV99{R*Ew;}yU`BL6!bK=l^4Z=D zERkv(3v);XGq_HCGrmX;nuIVKH#aXsvSB%7RS1(!CrMq*=s1ceEA z7dWFe3s&`$fJ?)P1G(*ytjV&&x7l#umCXQZFj>AiK#cw@qp#LqGhZMGS1-0B1|n}c zIr2gi`KcgnaV*2J^k-smLH%h%onJ$p&KUJYlc{e->f{~Uf-sW5K!_O=cy*>1z_!yj zyXr#N^rHm^CPfKEMJ1w3`NY3~#{Uyt<`))cS)+DZNh-6{VbDqS81-YF)c;IchfksE zUP-yIn5jGJi1mdp(BZ4r7v3MsJ?q}Jjy3sKWIs`FRe8r{tDPnSsYpgba?(E5s~iu>+T_ zeh-2EMfmYxaG7OjA6bg6K`R>)UivK^t9@9<%i--^nlJRS@);@dG2R{x;Ac39Ikd7= z@Ct#?S}^M6vt9vrO!1VhmtM3Be^)9z^O--Y)a>QFtolCl(Y!|efH^LfOVca!m`Shb zO<$va2%y4&DwEymxTY}Oo9;EYkMuw4VJt79WV#509XO!xxrK76W#C!Ke2dPy=XsLT z9KI|<^~X%8)%9AvRMqm(;6DMtYYA)O0v$UjddVy4qU-1*r8ciED&I#9_0kNWNrmXt zM!XsG`?jC+^0SL(4K6H%&eDu7uWeti3Qaapf}Dj zsAsv8DyGWkuPtJ&qq+^ih!EGY^+Nh@u&6TjBJd~NBY+c)SvvUgD0tNr!6Sf~*sGJl zpMJ8fb2O8#_#u%V8C*ct}s5J^yMM!gqE@;TbyCgX5zAPH)S8PG5X zx~iu{)8mZfCl&6AR(C~`7--n^J{bsZwq&rV<$s3(LG^HW#@X4-aez_y zaX-wlHo|~?4&{OWZGgJ`U!cdg56dmIe8N}oe~F;xfs0TvSP}RYJiMpnzkz5<<`G-U z-*ba2c_B?MVHs(=ZgBIIm#*MCoBB1Ptx=ca*F+uRwKo5sAmU#J==^{P?tE$JZ;0y- z2j0u!)dN8WBS`fMc;!l5KqZ18lUE{i$?p38moriRa45kta@($BwEA0MG`X3qx(W^_ ztFFdpPgrEQhTn9ydM&@#FwI#1sLwOo|1=T#^ejG(= zlxass!6!`-d=y|Nb}bQ%wayPCD&@;dY(vTyacH@E4DxU;+pu~avRi){DAkieAn&H? zufpS|>wm$=hzqwy7*1bZ59A5Vps_l646xCk!#?Np^Z;hsb!OuR;Hl~C*e(1y9xy$h z-V5n|5$RUPBr&J{SDn~8d=v{K{TJ58;RLZ$@TuNNVjk$o%9LAU6k8oljGDx|2?#P? zX!}xMBK>g$^UaFafL!(AK_4Sg-N(wH{R#N0H8slVdBSqH0kB2F3;i#E*ja;TmXn>y84i#X8uzm3ot~BjR zqAvoF?dTsspLraJWA@lT0G)8Z1ZUK5!1+g!^F@C+1og;2TNLa1-+^z&bVnTxtY{2W zsqk=$oP+r%Q02s(PUFi=;||vQI73t$d1eNG&S0i^7vNx>l%<$8Asi(Uo>+K?bbbdq zV)gd3@QuBmOzAvg+$kwBM3s?sb& zJyKkTaN1TGdn<|aHR9YWI1Ev9NL+N?C7=!C3FvoBRmLwowTy1e!Ar{R`1ipH2uBLJ zmJCHV8YV)S-(+=G0zLPOpfyfDl4lP-1z*pK>U;Qf>0^-o1VN(_3p)P40MYFYQ%ln@ zbD`nwKOjkxP;;4K(-Ekuj=c-w6Yg&rDLj0Fj&M16y64J}>0?~G&;t1LO!d(0q2w2(>DEQ-TsTT}S z;^@as8iY5f%8Wu@dMCgY2Lz5zOxC5oMI4kh1`_>54$ENS?{b7oKZtq&57cOMT0RR+ zmofu7K+O}*(0v3)v#qazH=MN)qS(&hq9Rf8h$nuxY*!DUd2~G2Ct3eNwpW?kxx{cL z<2ebu<+0po-ENV3h%_DlVNzOv@%Azh;<3&b@V+^dpax`|RC{zv!v+#+K91;IG6RN8 zz7i3~$uZ%yYcmw6`aOVI$rB90T!vpWm!Z>Ew-Ny_Cvla${+@u$g89`ZDuH4{U{BN) z3}K-kU5g;|-i^8$?q2&zEVN%mSGWFhO9-0RkpN*I@&Lz}2>K1(B@8877%_YmN zJVgPrY`N@P;307UFf9Ox0{}Y!h(r21)GyrKZ^&bt&On>aK-*Lq&|_+og_kNMecDX8 z6|}xC<-Lv>kCoan`sp76Bek)!E$R_8S@lu;6z12&4(+D~tB=78Tl3e04u{ew=ivQR zfSzoVXR;=izR7sX}s=OB7rt+uI9fu7$t%gB(^|6b+J&*^}0Dt%k2d#3st=3 zjdx3IYiFzN09{7gT5R>L4%`=5ZNCiMt=5mP(r(J;MW}~wpdPAsBB8w7*;IE>@w%O5 zx&X!NE(BE{N8$>nyeriw;DX^{{GxHWKFf7D{@JyEft~ucacCwqs16*@c@n6$y3v#* z1O!C`;3;CX*BM>rHFp3vv_mcLiERb?-()`TmVDavG_nbGF@;art})ZW*3mu8?%BcC zkz|)=1NC~L&L?BVx?{)an)w}lJM8n$hPk0pylRe6p}1zHU5ik|&MEVcK$>&;VQe~L zOt}AG!f|PSjHorJBgeuW6Zs3)n%^9hM?>p5#0+4;dUbv>OlDv8LM*@#kTu7869a-3 z?llQDDK^J{1o?wRI(B{G&+G8x)))SS4)@m={wE#&k@bbYh;YgSt}FjQSBE9bH!^n3 z4%U^!{9_XyF`_XH8d#Kh?2b1CcBnAt*phDuoThl+TKRo0NT13G6qA8hSzd|8MaG#|Rf3g3(jH zW{eOJhVKWFt%l+IA%GZ*3@2h*9Kd~YGVW6bms|^b%r$;Z3c|=5A`Gk^Gq~hep(_p~ z#BRXI{F=zpGc-h)Ts_0c$iuUf^YEOZ+Z@mp2j~_9fH;KrYzqgm^_>=J5mP8`nvOzD zvB6wgjnq2C0YMw7mk`if(yeIXa7kpeM}t%a9vxkr(W1K!AJt*_NF7RYBV0?%Q>l3w z#5JC1K<7A=9vu`o|=sZ;nW5gYSr^dd(T#@UHh)VYAbvltk;Tq zfn}VfI6oCyDQoZdqh%|qpIXmPt3M&KJOgsArm0h~)my+(f7YqS(?MNgFAVg*jl4RN z*|Ps3wwhgi5$Ni5MAS)0pxdsn>R3^SVlT;m83>q(&L=>&Dc@$EqxprzO)06BbAw?_ zhUe-lA#JS@2S{dS$0Dg$NnZ42jWeuy_gp)U^w$QY5sh@TK~n3Y@KGJ4+ov04<{1vd zFzW`<|8yL@A{NGRO`Hk6uW>v^z_A%%gb8;xW`dDUpo24jncz8zU^M3mh^l2z+WG?0 z<{!>`wt`qtGpahp0Q&|6iE0KlM}0IA3^Rg_ATG*p%*JQ|evhNpCL?gwKM6`k059aC zyDKb=jNjpkNtiubH6ifKBf~Rl7{9~J*=jlhH9v9h$Vx_uR){}_JN6bbdbM7w`uw}-|LZ` z0m>EI+6e9P9g)q<66TieuFo9{QbG>71!E|Yk5blwz`qdq)wzOh*ULx?D2!cir@O}A zK3CRvd+_!)0=oJz<-)xKR%4*u&V#%9cW|ESk|xAYS3%7HG{aK0fryN(;?Vnn?6-Pt zl0@mWj_2SL!ClolhRX|X7({(&~i&)@lHSDpX2hfZ2na7=^|+4z=C zYp1N;+?j4Frp(TJbG8_6!lyFD;Fj;xgQKtl817XU)25^XcXQQ$A~|fhr?exR5^IE| zT)EUV0DE;-%4-rMgxJ?_&Zuvp4tqc3H9PLu9F(=IuhiW(;eHR$>d*1hHBRW*+$iWG z2K`!s2vy&Q6UPADVp{zG&dLg*H7|WDw{!j7KHBPA7nDM17 zQ7Q!(-PXwz)J6zLG8+;N1%BTu+b~MzyTCWe5Gu(~c4*z{d*G#Ve&BRAP1;>EI$Xdb zw6CKLo660VW3uf>=Q;-uKJ4J$19Aa#UokjZN)@rxf^D*kK^xUYlaa-=Kz;#;SVjyw zfVFT#r<8WF^_J$vZd~vnbwhXc!TuZY!2oe{u5+mWY`1+FdoTW*fDImtO6S@tY~^Fl zdJ%cve+vQCxABvo0i%%bz|mCMrqx#O!o{=0|H9W90S7;d&T$m?42$W_=Xj}de>*nq zfG`0B|2_P`lt z*Ip59UBtne<}L0;RtiXZ$x(XSGB;5^JuE-U(!?;O!(c-5Q(+hsgK4;IZ{xJ}ii5T6 zwXN%|3l7%yEN#3h^HeRcZ5i!r>n_608g(!@MtjHR3#+zwk8K3U1g-#qU7L||*EmB| zH%FIE_(L5II)9uV`$CK!y<;0E>GehQ7%~+-AFc9z@>ieJR>4@vj?6>QWodp#piTo6 z>-d`jEr`ODCr3#_!D@_BNV(bJeKNy(ZuJwS{R8QPWpFeZze)3db1POcr;{bkY49d=jMJZ z9302G7{WzWaRAUA0K~DvD3H|>@YNQeW#$e0pe}xhx~L8S#ywbtcm~<6(c^!V>g8q# zHhyeb!uWnU6KExi5map>T}76`QLc(kf$JuiCs;os{Y8fUCLrn7_-m^Lfcb}lTmaad zfEgg=9{{MW=*J@DR`^uQ1h?Zy_LVr_!L1js)#_|APxV^rdLBvH9%85!TT>*iZXg6V z0r{-iEjsJB!~;l8)@*{%TjQZjBoQiQ zS_aPOMF=v}hY$OK-kZ~PI5(`qL>3q$NaVJ7BBT)nY!U_N`UCSVU>f8`aR9Jc01yW> z@$Jz%#85lX0St^eI*K>|*dhRkqu*9Lu|anyIt?A|LEp~wA?SmXgH|wz`nPRuin{(W zdGJ)gU?ji314z3y{!);E!9IzA>Ke4PIu<`T%uV>%01#xeaw|9{+!Kj33oOtz&JdeR zJ(Zpl@!ZCj5rS7Z_9nhl-;&skx|BKs6ic}Z&yXH2 zPA}Ix8wXT7fo6NzoKBMlXGRf>w|c!S)Pk(q4?a*^fzHtPqbIlXGQB(=i}4$qC_!>F zg5*FcKPlF;Pd3G4(JcKwAS!&K8OYy&c`a0Cdj)?(I-6RX)JDvhRD@4ChakzrI~%C0qd~SCtYP+ZuCi9P zPiuk~V}51YM!N>?>NNHBzyrwTm^c+xSF89 z2_m{VkXLY^WYi^>%+e|oPSix|B>TU%0luqs=p}*9)NH-_wsunnau1C2NW5+WK6B(( zY;IRV<2aVp9~j56)(tL#WU%qv#3s~?^!y&oVqJ`SFQ$6837*4q^mBN5SKpi86nWG_ zPyY@t$~m~iI*bbHfx}h%8Py3m`T}b;qAlqa>c+CZ& zf=TCytVEkIytEU9(W%3RWd%Cxx1%I0n{xpN3~k<#^@)|$uS0ztPHoO9-rw5?D$IH?IFAEi`QCm= z(}TbVy))2XvT{HYGeaMcjxEcTP5|{o0&rv`v=SM<1f`spYS*s3 z$6DnRS-djf^Ffj&KLcvmB#jR9ri<-w$-MFv6GX#_fsX~tcbOPX0IqLk<}b=`UE%vx5aQ-OooykYg-t>!_aGe z82{sFmOtY^4>$jAv7JTpu`3(Q{4`@m;?dE7o)lCN;aQOZY3n11`*X^Gbnl^#W|U<~ zMmd>`vQT)6A!YS>?nII@$i z`NE-IW?jZU>cBkdP6+KQR(Hk+XY5@6gG_;a*|s(V-X}4VmC1`61bic^TsY5Jm?Hn{ zhUtIYorzOOu>nJ3OfTX!v*S?-#We0i(gCG_5lSr? zF4I;A0rGc4jmEOIsGNz=3o(=&=7A^-Dlm(_0yWGXybfAL#*F>9pfp#IPm^=~>X}G` zEVY6xrB7(NHF|t5p{eZ{(RTcWh^W=|zK7!HMM0AbIdPiePta^~FnNt=+W&?o z`;(pne!%KGEI0@GS*!1|=o}>P0>~Wj{>n-Pblgo+Gj5{Qg3o5#e=DS0!WA6_5Zs%#oT{bO`(pn3uYmv}6 z7wlwz<%57-1-__$3SbJ29T6h3pxdp{Ei$7Jt-61j`7~nSG`f>wfR-^SvwKc-^ogN&v?ZA$-+I-*eO-_hZo30OO27w&?&_=twA(vJ-x zk1;kng;~;U#1ORfzC^H1PX zg@uQwC5P41k)}?tCdt>&%SZ`7enya6RbQI)n09qRw57c^q4e zpIG1cFZK=O2jd4r^z3pa{B~_0_*V_0C-MDHyTYplG%JD|fw{3F~X45r_e+>D{ZesQ)d=gE}kp_q@0jOSVsP6f#yG*65F!f=4B z4j4+aZS+1R_q$j$BWrdC?sXww>UW;mKcaV@g)QZsXKpo71aYsaPF94Q8%}kyDBRq2 zs*{T-$kaE0t>-!4K^kCDuX-@5AG7-BAzcdPrh!ud#{<7lz}sx2mc%7W!wBaK&Z6b` z3G9N%S&}ta7=rndN>>h}Y-Wua2c8}r#u+8wz3U+O?J3_BzvHL1W3RqUmWSl;rPstK)bh%jkplgL$C@i z@h{@m4md#1k+S{QV6~?;BQy7IFVpAA)AGzaz2jqb+9!b^GRf`-g}6 z;4WhsS!26=gM_uuzy7AcjqRrO$8~Cb$hj@QL46I4H2C!lx>-YW8JPnI$PJTbEZ(sy zbSV~j>1-memFbB>WcP0u`x5UWzc&f*aknu)@CW$Ok+|E)7ht&C*n}_7fHmjTHc&+{ z5@0ijOZIvhENguDa8t3m1e{e$^Bm1;cyoFi(ybhU!%?yg8SO1$O<1-exwf0G@!-Rv zWt2bSG;{IW2ZtA8@59T<>5Ixdo(^N$CT>G&NJF+Izld!~oW6>k%)&z_h_z%xuo}W} zi#Xb5?9qDuA=dG~5B3-{)(fv{H}#GRMrT|C!1|PaRJplQ!luQEs1jKe6{#?s2k2yg z`u+&|FlIp=M{iiT9iuZx&sueNjdeM zMj$2CBp@YU42T6h_rNJ>#6lVf#X^KyG!P6Pf$B5mT(V48WumB=a(nei)HC$AIT)9$ zoVCHGL7nbm-QK3px6K+m2yG2HJucr_V+R|re087P3AMn#K&TB0uJIXbT;s&o$MUZR z(~TVg?}YmYIAf>wKaA{j<8c1f(13gXqE%T(T|<2sbA-H)12p+w9%M;^QpRfUGH|@Q z1tfd!Q%po()edoS$rHfnB)ks;0(m(JuP<%m_N}?KD>QI9nfN49@sC2z*5dTiwCeSw zfm@dN_&4E)L)am#6CS}42LOi>fWz_pnltZo+UhpO;F!xh)3>lM*A7EK-$wDwrTwFk z9L~Bo*>3e1IP1jGm^4&FAMdK-LgyNULaic%I*5>85zvy`-(LftBa+Usxt8K@2B5l= zc{wS8%ydZ^<|fp!aC6*ttSa(~8>!fB(G@6kBh-L2-U17rHLJ{%B*da=2+RA&fuyY0 z@Br2xnBetg)Ro9ZB?EsJt)cud0}4Cxuzg|I4rl#nvpg&wR8&Ib`s&^EYqLB-o!%Pe z6E+%LbuBr`^>+Z{=(6Y45a{~HOFFP^bsZ5FRPO_&aq^^GI=TkF;NIy2aF2Z$ArtPO z;f%Nye0n`2>#^`?b^!bZOnXC;Y4>zg5~8n*T3ncdSkL#i1eX(^9#qdTd2snuF|Gu% zM)pe7E`;TV1tzPF*BsxKlbN>YYCCIE;-_=y0iRd9S^t}0A z=#Xkw+atGQ$08##i`ErAf#}tp(Fk4R3{g7($3(O6Iv0c~Ye@@5|6#2BQYPwijvp3T zBb8`lXaGZDvA7W%$NjY&v~nreh}K0giwn_ei)i)#3k<7^p+&1n>re;lHdwe`%#{c1UR^eu3F;m< z6V|ik_Tpkn9sc-7Bb$rQ(5ROKRSXky_Sy?&P!|G3B!s2lT5<0|9y;v*WL!R~Gs&N{w-f7XQv#l^cb>${jz}1#q<}HNYCf6SU4vb(3 z>b|(GwfLW4(*R*87wY$;>SUA)MmR!Dv0cITk6XJ#t0(=~2F(q$f+lANejPNpfv>Ng zUIC6O722@(&s7QFw+wLg6d-hsGeqr3aUI&>Yb4S{BD!fKbByTJ zUAE3n>%!vMev1O$Z^4jQBqjSrKu34aNG+B+=G7&rzj&^kjKJS=-6T zUKpoUnBQ0Ww)Wa1(o!> zY~^`l|COwxcGi&|02rc{qmH^{h%R-=cnzYhUT0%MNF+4Z=(Ue}9V<(-yjcwv15(~B zY}e0<*$gPn4psz)yxAj3pCLI?n&X9~qU|DY&agLA8)}^EmAtu=IIPu_xG?}#EoK`( z3(mq!cShVE7cBM0Ijs$rfJ4%5PlgBvVmJssF43STF9deGkpaquEQKpR>R4F;Jv3QWI5#Ph$#zbgU?VMOLZ zGSv_Rnc*X!LCY4ZFu7`XL0$~7bDr2d~p^?q3 zY&yteRz`@-%3u`^Vq{a+?1JhHc*ZG=IPiV~9hP5QTjG~!pENz#cmp*c0vo zI3opE2j2qa&;)NbMewar@aBnNOx12fSkGmO35XhOt4)YP#hsVpAHvti1%SMmAPi?s zA7{onu@?u%=92<|akQz8L52f;EeH{Z=z6hv)AUfmy*;krG7pm#T5>Oj_H2*$85_w4F4N6+8+nUiQZ3+{tr?!D%}vghUV zKK(M`%R?EPuPmA0`RSJt@;u-R=D)5E_`(hU{4?Ae&EJ$x^+&kN^YagV_aocn{{(kF z!lC6e+$ls!I4YF!WXdIAAJxrziROF1<9u%mz`$7Z@!@=r-yU1d#YYb)?=#V3h6_3x$EH?yUuq0cUrM1=((e3l4Dq4WoFsx>tU` z+(h>}fkTQV}LnR9yOJ8O(3px1nBpQN9CM;z!O zp9%ot0N~R)M(s57J>7gi6CjEMh(9Di&!2dH=uYaq0+h8iap7T2`L2Bn(^;s(8Mn

    i3V6p*;mdn%lIJ&d+w z?jk=w0#u$Kxe2Ja>UOgv6pIJhiN%RWnZPHJ7qt^qi*A}G-xeT0d>2rj1Qd;ORnLi2 z20E+ctw73|A0rV{7k@xL?v}bBP}c=rz1wNDNp&HS*WwllXP22woBt`+kcRfcCJ>HQ zXR>YnH^DflH))Ls;`d^(WkdBJ(W@7VZM6(}S1Xt~dEt+Y3|T19T|y|? z8qgt@^B^!$og8BLYXpAO!EYHRby+7sBLjXF;in^`)z9$fV8%XGV)NHGv9E57JqUnF z@OVt&s~7T#&Fu&j8K+jjNnZLah)5R|$1JI4;jOII?^@P9+s8+BJzR99&@2I_!M798tBuWumUv)eK0!|u`MK%}kPs*AeYn?7{&2f?}y1gUC1yGdV^Q6pL}Z#5icfxLE1!LmEkt=~V4!VO+$u8v8=ECmExT z*x0W-aB}n{=>4M~Fgbb>^nTIp>iJM4bxx?K<*jWU%et33(v!$t9vBZzLhGgs3X^9LlbBN{AljSora2}G+~Bh@yy z#^j<6-V3{CMuP;@iT@zNtVkH*C_W;@HcHl?%Y^`*fl2_8Ekc7L*U$K z5Wrco{~&|&BKf9;qOO8=T?MwHY}ECj?h7`$FYM~fMRHCHtcGZ(P8}^DNh({N9%j#j zuzCu<>gU+U_X0bb2I?$Caw8bXA|avWz?ny~LGRJ6ZL1?eN2*I3rbAwvqE3c)ErQ@6 zh32S_;WdcH&|=hiY;`h1r{WOx6|k+QC-!G?s$ZnU(5IkwW}*^^RudK@6uY)Mh{@uN zuX!96OdASVTOE?jlYb`aC=(S)h(^N5R);6>{j-P;bqxK<<-0Q0@7bTIj$x9@Z2Hus z;3jwK(n0QUN6zOsjQ|dnVZh!D;82PH@`lgx6mAY$A<{lX;+Td2a)Qsn74E3THy!&W zx|Xal>uKU`z^Hy6dF>i!h}stDasIhhbcRF?uGB zUG&Cx(WA1YWACER5-}<3ls^DJd|veOI4alS^X_7DZD3y{Tz0@|W$rQS&Cg#UN3piM z9oaBz-wct>&-W+r>m-3YA_5Fi!>E{%X!nVg@HxPxcErKGQM;jI$J9la&XfPjV z2Kf*N0GvBY#>BBq_gCGe*NoCIrHFzB!OdRSrL=3DU`iZufC#6W0uTrLs%;G*e_Xq> zPd*!=lC`{XOF?1W_$U?}r+YFS2#FQLrOBNrK={Y8J_?#R(T6gB5K&|M-O$m}>I>+8 zfgDI2!%=A@&~OZgkICy@O`aO$v75Y$y4G@_DY|Tel|0;=cSl)yKVmUY(qD6+i6Hyr zui#g2pYlc3qmj4JehoLz%|iOn7luX^^&-;ZOkAo=9R0RpXKpZz&8{tH9&tv?!tjN< zJQvZVaeJGMM=q&j0Wlga)BgGByIA3iHJafk%fg91Z78#O;IpVroQ>1Z1vPg^wl*ps zGz;Mg;6nYNS6>3ysYbx;T}fbG%n(cKl~Oom$@cD@2Z!WUKVLYVXNofcY`B1o+=dRi zZ=*k^~p5&W~&3FO8cdPQ$9-fap!9XdpVV#n*je~f_-amn9b zLW;uQ;s8zVWnF;pAB2y;9JUE8&aOoqXG<`&Ky~9dYcGOclw@Mpe*vq!u75v%^<&mq z?V&xtk1~@J2q|RbH2o@VtYD=&8)6}3f3xrS)}ZX0Hkqg8>r5CkjT1p5%iNzAgxtwIo>}~z|MhQZM%IC%2rZd zWJbeWktA~Uamf|Lh&l-_O^mXH8U1RIQE>q9wE!Rv0L~8p;sD_50YDr8a3xThN*q_l z^&C%)O83_9M*j(da4qgS;NkX6w^po}2QD8EDs!-Ya25dSbNH#ugzxjAub>Wx`cPdB?!>`Oi7m8K7G%2h z0BBeLAhhiI)yP3q9&F2~`=MwT=FG|rtGN&!L0DYiZ#;G>V#V}>-+@^59MSCfl9URS$G`o@M`vp!GHt*m4(QEhZde|O=^=m*NGlEmtIk!glN-wo0 z3{~eMk@~d&m$8^|Dsqa6#r;hEiwIB$AYI-?r5cKre)(c8;6Q*y)r37H93C-FFW7fl zh&p+Yb@BkBLDj2Y2l_#|Wvj~6$;^%nu92+2RxU%lSgqX2eCb+YNKh+>102>$cJ%$~ z;(A0wnx;1Bo1!*u0610~4>HxswXq^m8`?AW8$^v|_%24(Dmp{7ihd9)Z@o2$=f#Bq zak%(9hyuMUP5r}qi2Pe4Xh{X$>O&w6UeZcQ{G4WQHlq)7;E<&}#N3tP&QnD;e>3Ve zI&q*nFUqOB!wdw0UWCE0DchbEbW@?P49Y9WS-~){>oiQijQl0ANuUAgE=$b^dlf1t z+34LM+htyP&gp!788KilB}_6adeQsnL10}yNrkKj|Csm867DW3Bg8k{*eO}=1`5Rs| zrKb(c{n|NpIr0|cfx8i0{VJ0fXGmN1Yj9V$$IbxS*0H!({V>~h!o880dm;t6Z=(Br zV(tY1YM8l}R9qbwGH)3`ka=p*e22_eHqsyqFGO-8B*g&$cUc4=4gk2tA^>qfBm6c< zG-!n1(Nt>}1-RnC_>|`RQf5A(=R~n5VKraI09sd!0Kw`JwC3O#U}YOQ=P6oq2-|e* z3M3q>&wG%c>er<{8KMqGcM`oXZ)PI_H~xFdS0*Xn8&PJ+WXkF>$Vas^&`f*qz@jW; zrqx>RA8B4_gr59;P}90PI`>749`df9Z&1H%gi(J2`iVprEhVJD!8twwzzcw;W2->hrnL46X^7u5gr0_#B`wijM}3n>c&GWdmd~+L8!(xI4wgf#VTrk zIEdB8SX1MeIN70EW5wd2p1DW6Grs%_xSg_h3p4AayUQ87Dp`^D zMHR^qbqG2R4;jlKA!{5^Z>&d!Pq=^u)@TpTW8ofOAaCL9(Q8Wu>RUgC)@+E+18^^a37>WYZXokP_7V;bbGF`Yd=7f^>sVFSgfIZ*K1thisuwN1@xTBM^uxVyJhPE|j=oku0vv?>tk=!=aWI_jqnzie?y@pCDz4TfA4h4hO zC~_EtAUw48;HBL8ciqXqb%Xj4j==p3f$uLzF1o@d_rE1x)2KuKcj2vGhl4VpOX^|c z4vqTXBOvErL@K-&R!VnaZ%I}dWi#DhL0VOLL#0DMpQ7J4H)XIad87o9s!KRa&iIS@ z$@&ZM(T|+#cg`~Ui8B-J%|ZRj8Lo>H-Mnq4pEdLMW7HNNS>q}t`b@#1O@+s&s@D%r zQLoDq^%|xKbF{liVcw^TqYD3TR_ym1EA|Hjn6%do`ajh5{G+g*adTjb8Y^YG^sCkK zeoNQXRh^llUeRdsY@Df3lW^ORel#xf^4&OH!9Qk>5(ykMWZLpSPoU+$mB4ZT^9jh) z-NGkbF@DAEZn7}P)SR^=c;|^JcxQZF!9L2eK z*WU>}-!vNpa>SR(pzKgAs0?G&2YH3ypd_Aji6o_mg*J%W1l{ZqZpUjWv2GB;l@`!6=J;^GmV>93StumhlF)vWiERk#^WsWVwtMN$WM zF7m=dAh;n|N#vlHri#Pigu_apYnOZc3qXz_?!1^0zV68OKEk+*q{C()>`Celj(-=m)^O|^mu#Fhss#i_tA8PB zU~!$rU~z53u5l?NiM2X;7m^ccb8?n8p;BV2>1o!nf4t}xJYuMM8Kn7=-T>Z$&eg1k^CJmX&sk6q(YO;KQU^qw;es6i9btSV~+ zJ-Z>**om|wz*wkTTOT;E^?`%Gu>vrm{T;~5gjO8j`=^l)!}r0>usZ`BaUjxN0YDr8 z+#LYK0l+;0KpX(v8vw)s!0!oIjU$jGY96E}OrKcnIdy#@=w{CdC)u_80-EBW9la+U zi?;N<>U%)pmg%$j)*l0&TjOuvH1O&=z_eFhV_yKY*8zgjMWP5yy+(lg6MmQchKonj zO0=TXIa+@rq@`CxJfo6E3rfwo#dx2`syc{LO4&JBM}oO2w|WVhQ>{WQNSssbLwb*dE0SUyvjf|J{+4CErqN^QbNK1B_fSI0$Q=W{)>72 zmE@Hn>KG=zMhGKgd?%w)e;NUx!H=HQv?No3)$avJM`OejV|HC;mkGp4!zk3)qsfd+ zM3u&n$(8mJ5N!24e)~pD%QnurFyYAbZjFm<;l=7u?+(XOd6T)i9d&o!qZX@C)qZ%@ z3m|O>H*V`;zu;vid~Bxo=<2T-Etipp?_gAT0A_Nyn}-1y%gc{TsXDs(o{hz#e+xlf zrKUOqaNDm?Z3ZF#QqVv=Zoc(hi~CXeiE?b`4QAP20hUgbBWv&8UUR7kL&09Lb-KDA z63=V)FJnGhU}U64{RU3mjJE@8dH~gQ85~YbQ{VYD1Cj2=S=jQ zSLfS1K4r@_EZdspY_P;J?yNJkvmK_|MANMPYzBI%U9faJFxmg)sRWTn5m` z0qq?6ajMgp-J7QVxgl2ge2mc8g8oW)C1#p>JqG`0XjyNXrmfIC6-1zQ0lf+Gf)++n zdQX7}_T8cSD1F>$zG)-3t1$4^nN=cHT|Q&{+-m=K!5`|4qB8$g?i zItB2_zy@F6Q6tatEl4tx+q;)5EK{hoq8uT|q*V!_fC$4p4_?IM8WF>|c&sjqZDR7A z>t6w;67!f@%|f9~oX%4M`z_~KE#J|$7hyo-4lupBswEP+y-tWs&fh?);Z?1-;Tfm! z>{-@v)?BbdSJ}ZaJm*4Q*}4*m_FNgjL)kXjQKh+N6U`Rc-}5>~NlJJv`yPTTCi~t& zsz&xPLj@w4ps zzeTpy@j@&{@`m-7!xjlE3pKHloEJnuUYLkj>0u$`UJm@vB9Pzb%=eG{@)C?V5b%5e z5XbAbDj=J|D%DlUZErMipabd9gayzV`nFsaVLC4an`X(;}9o zJOFwefALK8zQ@r}ech?v`8M9)Isg#I-y6UF)yRcG`RsJyNgSm0rywnH0PyDkAP%;P zZJ}$*U$Bh)=6iK!&D@x9>Z~9;)#sEeun>0*QmV76?6hh_&TKru&?MiqDl(@?!(odcwVYbYIa&*f#yx+ROB2n;L9Q~og-p; zTq$JOAnq@odf3JU1H<=FY|>4B>wjTD&hbFOlRtZ#R0&y z03Z&S2wEjs-3!04A8gm`AY2>(H~~N$?EfhXBHMbNd_JR|LvZ!Wh)vNv7aqg=ZjByo zmwgeFhym)XdOpR>Dh|#8oCkOHY>a)X07))GfZBl(8}Pm|1>Sa3;C*!pyye6*8TlyK ztj?AV0M}7Yv1tQ1_&#C9_rbx@z+)#08EU>2LRTvu_nJgoES0B$ESJ&O5)#$A6!J# z;IB7;chul-B)|dHrGT1eCUv^o5P-=t-ksEdWdVj}WDWLjk`&3#F+dQ7y(N+NT>=^b z#;%Qk-5UX9<3z^x2>__Ol(ijX77qD9KC@or(I~!fu?hMrt3liL!$M8y7ONog-ji6U z)baZ7b$Nqx7+6?*7$>EhQ80A^__lfrT(QtkOcAR4(Cui)KQk}26q?RFLq+`>hDY;t z!i+O5PNs&|VzU&2Vb`+i1q6obSyL<^kAQOXz;97v*m0+kSKi6BK^tWPC zSeDJ#XQE^{R|sSXw9n%cbwE9LScC(0I{~hXb%Vwo^AJrYB`t7FxSwW3oGiiO5kusm zIcedZAVO<0!f8IF;g;FxY>5Oozq`(kW<-BHvt&Rme#tUpD7DnAh;eooK ztlAvkmqk7_3(;;YbqW?_&Z(q(JGltsiykYx@^#{|4O130Fxr5JY$;0I#fg-o zKOQ#KRqz=SqVVb(XNZU}$py$Us%+iaA!Q=00!Wy02SoB z;sF#fLBJG`2#a(huZeiGJ9^ro@F|YeJ$V~^V_VOpE$c5Rzq9xrxE%E>i1R|GbA!!4 zl<6#t?3h83XpjVFCgk78mg2?6e=CNwOlNt)ahc9JBRc}YDk2ny#HHQ;%W`-44_k1zeYZ=guLz2X3)xZ?z(gq zz5|s+pay0;_gK0K1B;2kZI|K_rNmswz}GN6i<8AENdzumx-A3mXJC7f=Alc+CGe=F z*krN>FfFp2&h8*|cw|Qh`8)+dU&8;7i1H;t*|Y(L$Jc(2f6Q*I0k9INEN(#IYWbb` z$11!vu$!RFZ9u`{a(P_wUqq=8Mcqvfco$r_M1W-h-V*};4>lc8Ujxj;Iko+THnA40(>q6 z-cR6x0{mkL#5oV}zW|>PfmjH$2DTL73n38F(i)ftATBqdGv^29h?{~XKhPrXL&cpE z_u=Ax6On9ngt$on=hMZF?Krsi6gTsw)rb7RZQ@=n@T0iFya7|wyQJgBi(67{Nb^Q8>SD-FV6)2P|+fE&*$!?5`Dj?h38f-b> zp==&kq%kMt7=LfR$5;NSW2CL0qHo-YF{-nr`a3ECB1|+F=}U{KrMwSgI|!mkF{72- zXN(0=u-J+`rv5~(j0I7W;La<98e>tOXbzkdL;<21a#9fGmFCY$K@=uN+igsX!pBzR z-bt}2ZEQtmo)koxqj`H$5G9YT$m)}VD1WBrY;yi2bV{bF(b?RS&?&Q~MkfPILZ>vF zn$4%o4CUO^=u>8f5^!qtDKkUaXsfCE#FUw#)SMc9%FIxnPK`cgW+-W=?nzT-hBA0+ z^eHn#={z<1l$qf$s(UV!>#(Cr&uwT@=xJ%|N%UKs1%Yl!0SXWc;t^*{rN`ketpz0CmFkz9E) z-2m8CTzN^|0N5E|zZZ;e0A%+}JPH{)6OTfc&BUXSDfPqbh6dSAzt?U6WUOpF3Rx!? zPle2pi>Jco&&8ue4a|$3$rhGm@c#Satc=f`df@4Dnf~z2a{UrTmd15)=E=f)&pP_} zi9@4uo(*&C*1}w4d$6GXjI{NdIgT8w7wLlq!AfgEy%dEgE{o&5f?3`n%S$#uswp7V zq+Sjqz<6$qR8x#pQv)e>hk#UbK&n~25|YBZpD|L+F;dM9q{4KDKldG!ZQI>T2k!6tgEfs^DlE9XHa^um zxk|7Ws{~`^W zOu+fNq`ZM8NBs3Ok>WJ(Uu^{2I?_VOagD2BV!;~iJI-Bh6`H-=KCM7)W`h4;x9Ip+UjzQ|Fd>TmB`Uw>a; zsMObbL#4jrp$+wgcP+VRR=pdYlJ9rRR*H|6m^@6|eiNL8&jtKoSFRI?vY{vr05%8! z;s9X703Z$kHVOdZz`KwNIc-`Ur01X=DSZ33Kd1CJiPfp;N--CF36Kc0LOf*QB& zz7LokJ*;~36e!b%ebkO?qc|m`8)B67P<8xsv^dy06lJmT-m zvmrl2;QQ?f{F33U{}Yfm?g`*++rL0a_2Ra#t)gPvin)aT$-4WW*&dL(;r4*k^oUXztxL?7gy^;pj-SxS3dH&bG7u^?z5{eM; zxCJT7e+6zW&x1=~n-7`YB$_=4Z!0)*4{UTL-+@S3yFvGRE35;v5Urj>IoGb5!jc3p z)!`kTXx5KMa2gMBh8OanL>~ZrpBL;xpj?n^%En2A_1>KIe~*IU$wRJlU|;b*`e3L{5T8gVf75{!xb1MqU?*nieGC}IFGV>eMc`1Vn z7;;Ot8F(wu)_wOpiMt&*cIoPO-jFYXmmENwD^0Lhi^sZk2+ovF!zpf5t$7#iCF=v7 z)8yQvZGGPQ$zts$&qR9yWb*ufcTYeVS?>v?WN+hb^55@;RD&+(_(SNGx?_P2d)bd2 z^>d(t8Sldu3z)8>E(5CO@DCvU2b1Y{C)2+nN}nN;zC35c zXSV`{R_eeJn^agO_o@#uFVg=_DIN73K=sW)0VzIAn&FsX1;_a?1fbIo3#dEWUrQN)Ad#pxQ~+roI|%Q36T`k7-{6X4lms%_6=x@}L#-v@Vk0+~Mz zV*NCc+SzUeBa1E;*k?ep87p^d_s7s6Hk(@X9euB*vd}#62Rm00uv1}lYu=eYj$hc*^J&MYlnHX2#<6krZFHW#f_ea* zQeVwZMdwp{3+llbd?|GkZ2#o}e<%juj_`+(BhYy`gnMat9|^rSe2<1c^*E9(Wp!F9 zpOj0vYzfCHNvwThTB%UPCGKhl0~Bhv`Xiw4iQ$F@#{Ao%(#eBGP3jOlf|aWs3P7%Q z2!7Q+7-sG*L%0M(ljZ5L4DShT14XG+RF8ln%JC>Z)kl!`lf-7y;u{dDnBJpYOzq)k zY3}J%ly__;nqQ>)C>#^+KN;z4F5`_eBsv)9Q^TGd{eWcj*Q4kRiAAUOJvsV;$>?uH z(HRnpPR)Ga>M2WbP?E-*5eN4$QASHG@NWXY+^WSRR>rp>Bw48yFMKhRwI`8- z!2J~5u(uEkFm4GLDU|}mry0qF(LLgoiE$7@*VU-Bo9LU`@+9$Gixfkh8c=G#hHV1cj^C#SCh+Taah4Y`o&*Ia#96rBBOx?a42R>=vF2f66*J$9{n68bHtSDNg z?f~8`-05{k+==Jc3+fEau1cGDInxhTE$qpu4o*-)-Y#wCZ4waKY(!4kiG2~o>RRP_ zqu$2y+qz08sOS&uA)q=qLoIFUDQ{C0i^}r0$d+lkO>Is&R`ngt-%rh z3_Lqi+T81Nyv_Y}h+diD^`V`~UpBIk@iy^aW3qi-g*oah=86UXZ-i{5JKRWVBd-%z z)bSKsF)IVxV2+E~^Bf@lg@`yu%e#Y^qWuv~IC#iA@4crVf0yBQ@E>o#_a5iFZ5Hmq zVTYc2PeNuwUd}*>k(Z&U+!t9~{H8$>RhR{nD1Q;&4{N(OJ$u{ zStnLrUt)H|oejtMAS26=ijjQ7i-4Y|(`!XmAo=myod<5lgd?h>SS1 zM+4Waz`9c)66SbwimvYabG^B;Y_!VDjdYdfrA(aBm~ah?V;t-BmIP$_tX1CZFjPyM zNT{Q)W=2c%9XtuxVR8r=KHJMu>{Hx8n$Jypo!-1+9*+S^rj1zHI4)MYysqA|2RjmH zQ+#xL8#`WiAU-xW+ye1|&NNSp4~S_dIs@V(uf<14AU-<084wT{Cj;?uD8)y~0iuWx zv!b)&-NqH2xDa^?LZxThITRn3yghfdgEcuw4O!p;>;_vVQC$DC{gs$b1-}QtE!C7f z&D=BExv@;q=D+sg=RR}kn}1w3Zf0t=WoTtth!+Qz*#`rFI8MVITy)0X>A2F1ulC`R zQP?OwzYK1!)hVd$RDDZ+()ES>6jOETF}z8(2wyB$L9a|(%fVsOARF!4Qa~LMw04a# zM%S#&V+CR>IQik6#2{O}hzj=Sh`Tlf1b?26(kW541!UOY0Pb`zOS2s@4u_YkIordd zmuKz^n}aYk$Bz7@>pSp+=GaNT>H2c{y7is$mHpBS&^Ala@f}AJw`(6nh%8UmnHlX5 zt9QYCR1rBN@4|xE3vj?M93t_C{XY}r)R=3#wjv}&f2w!Du}|IwE<Ys0PXnVv->*(1r4CEM5_q!crf z4Kf(p5F~cu5cb8EF}nc+p@C+#7)9)1UjhV+C192ik^l*Tgh0S>Ll(#aBtY2Ak_2v8 z5<)@(goy8bPgQmINV0+Z-TOb!_di#UJ$3q=T27tXPF0<%k~U3Fu|ly8dQ-o@HWh3q zKp_?EAV3}ZKmhIl%dEdKl?rxDe5O;uPKi%UgxH^SXR}KS#q?4+`ol8L$SDnXfaRPO zSS0KYu)uRMqOv!>abSjFaFk<94Ba{qF5=}!A{1`Kh%l9f3^u^p;tjCp+IYR>*J7Oa zaR=xJB4Qx%ukHV_OOBxI+e8j&-GSYJ4h;9a?idwPF1Q_SHy3;dzfx6n>UI|hN>*^E zc(}`Y&;pa>3UmD$PIP?}JFnuVR*J`oGmZY-`%x5zay=>8Vzz5yF$>M{YD5MP*Tf!h zBeu)w^gP}+A8|JtFsBjR0ajdvSvF?B`os8)9)e9oBH0=pQ$#mW2EA0>a3MxLu4=+y zyDkc!s%y6&zJ><3oQgJ>HqyZtuNY5?q8>t!5^Ay#Zpg~w>MNE@!NtKWwprcmq%vfa z7?zF7RhC7#$di>b3ESrYD}j)2H5!*tvM7Gap|x67gk7s2DBROZ_Xw- zOSYJIbLi{Fv5L|mJz^x9VqJY|fE{ta1YcNTe`&``8kVO~pAd+HrLI;BD}+;$aa}Pt zZt>DOjskpge911X&@t6GC1a}Y&pEmR&2A(mBdA7mEJaujidw)6D;k#0Q>wc=KoLr# z5luCZI>p^$WT26k)8L<+GtrGh`}7I|n7Yt&eQOE7Sf>8no*LTmT#Knn$pr7JH!z zPA_z;y|fJ;#ze95E-u?Lg0FXi>p5`ss6mQ`tvLNl%ZAncGuZe zNBiFwFZRfCXvee!S%$_M+z4Opz;XDEPUiXpLa@1v^myF=ba>T*KTHIylWU*GulV%)r^r_n% zOb*sX*kV@t14#z!)47eCcv6=2w3tJ5#cW0M@)`KWI3}@(>alU7TlFoRVEkpWmLOBi zg~CZO3m$lM7mGDGyW7BDSF!fs@GhM(hj-DBoJ2PAJiME)2yE7Qbco(gIln8}&=`Gw zSMp*wG5E#81CAey$%I-T>6!e?d0o{h2;qIHDG~1K^k<^;x~G5@#7QnB4imA_Eaki| zX>PsWU1+E^+hVolr5JARLea?{Sd89j@T>4FOFLHp81WAS10i&1tbLQBPcwcFB{q1u zcx>!!8u4lF5k7^EtYe5+HG&m!y^mH4J6!IgskzL^C>{=}$E{L&^BcQ!NhYq8xN&Y% zGqEgYf|UO<6Y~udvD#G5l7}Ba5Nh*rINWx8Da{;QQO)4tF@vOxI`i2WNns0<1~xqA z#+m1ha2pH`S4VjSqts_rNlBbl#l6zf7**dm9B&s#TP4$(gI86@e`L%uDQjeTt8o%p zqgbx4PUDMl8lsNVfhCRk|rWV^{REONrgiJQ(HOuO2)%iG@G3(Y$${O>r z6BAKf^$?wO<6_)>s}iu~U0lT#kEm1c!KO2Y6dyMr1(?qGjRi~U(>`&{0Hd?pAAS8$ zaou9w(qdt;#E8B@&4vfp1F$mzS8?$pRb}axQcZ}wUoE1Cw3-8lPpEJVz!`#~kFCb5 zuy?&!Eujbb{+fI*mhUv^*U0w)(f9T8y&t}*UJODiqFxAqgJ~R!wEbYhs0AL`r!oKs zB)VU+0R`YV>p2}5;J8NODlG70plzOo3oksb?-x96Z6u?X>M@D4E2rrtRSA8A0rZMZ zgn`SjHM5xM4B2!90OC}O5CDkNEJ6SvPPYgFfH=b<1OVbpix2>avn)aYAkMZ30f6|j zMF;@IITj%R5a(Ki06?5)5duIqlo9RjGt@IDX!z=+B?{H=4(Bf zduS7Q*%(Nez%SLI7Dvq~j?WWqM`q38R*25es6NOfD;o!EO+Lg1xV~C~YY;B&=$#yR zHuk2zEEM}{H^{0sqitZjvzcHiLUs8H)~Wdt65E}klrr2C;qwUZ21)x&tTuacqZ5pC z__$I*pH$MvlOq0vf7xh>HlFZi0Vm_0%**V&78s|NX$)LgRW|%8RWUAi2&+BFybCt> z1W=(b9n!|PKH|d~6z)_`p;r*^xJHb3#X%E5>giw)zyh+qT*PE}qm=+aaE2rZ0f68f zNe}`6!C8_Z1OS5bBtZxO#AOyCfNl@8r!6p_>Oe4#<8dAO@`>6`T%S1U4lL|vN}^E> zUWd>LMeP`P4__BWjTCOhl*3(7ze-yeVZYR?XMZ!pL*aLbsuj;^uny9F17R`u)C(EE zV1jQGumw(!Nl8Jg=y1vtXH6g-D=tpnfT@njqJ+$#}1o(IA&Mzj;i9LF6!;w)xT zI=>8us}qXhi6-0)$#5rChojzEnvd0NMjo64PIi`0hB2Qw&7vnRH2Kz6iBd=RMLH9Z zPRh%>wdq18t1lb(`xgO(tn&Rh%R)O1Je9$HtECz%s9dla7|sREx_ue!?FWnm-qvr= zsk_Kqj~ko;maCun3C;vc*E@X&^ck>`aTP9iKpkgV{qm??J|(Dh0#&PDnDd0tpB6{k zb{Nzm{T^O)F*}yati6QlW4R8inaGp66dVlR4k?ZJH&UdtfDCZuN?yH<&ra6xZ-Oed zQ-Dsq#0JWR%Sif`B?$n;w=F_|f0%XkW>1@S-2tjpOr79OOzN3OtLw4S;+QTfN zC(CzDLHAsZ($A7#ES~=p)^ejfSEID&3&rzERWWNy27N7_XSsl@sFDRd=~v~gknP$R zcblr^5f- zhPC+aI(WRP9*+!B+x&Roy^q4bFtH-`Ww?%t*Z%O?b3>^HR}#9;&zyNR);2uj;Hfhd zgj0<38{*anIR|n;oLkLTX4q>=2k#&W6;hc+T5T7ga^OZ+6%`;}8MG-PbX*JYj8lxCtfFGo zah{J$pzLGUt-gM#8yjq2L6EfiG28X6aiVJuEEz3rWm}G`Rv?1@Qhus#`<`DT2XQSKer;(rtVPs9IC{6{b0l;`-t@8GRa-qa7C6=0?x zJTCxVa9J(DR6lr0fJQ%fMF49_@!m)1YL`F&)H50oAN676m$hsOPI8kee^}_A=poSW zi+CqAxDtf$FDQFnNYtG11BS?|Yw;Vr4K&}I#dD$b*7LIHUMb;u62pg=0L|k`6a7ra z8>u-m7zV=ZnM;t@xDP5^h+n?Xka4~b{?<^x_Z?fmgAWnse{q;R1c%-TTBjq@3MXc0OD?o5CDkpTZ8~W{JQ}A3&sD+>6G; zXwXE;Xe5*YdIkpQYLt%ohqeGb_5Rop)u==W7L%tw7#pG* zl?Xvudg@-RtF%?junhF2e4C6Z z0dm8$*WR`;GJ=)>zxdDIy$%1%GjJa@n^6g_G$FW@IKQRl;&!+RlkM$r|E5e4Bd^&T zAuQ?uZl)4-z|rc!U(w?)M;oefcz5EIsIQ`O3n%lJ6dM{d$sI9se`xQcm?;zcdAyO1BJu53*j#fsC3-4ogW`@6jGeqwt zoKz225!oN!3#Y@*kMIcC!$gnhUXqI5;KK+2D?034$GxN`J9x>@kW*D;w(|QV9ZW$5 z0OCg$Apj8fTZ91UM1PCqMs=c3k{kGa!1@&ch*cIL01yvagaAN1WDx=Y@gEi;01!X6 z2muas6*UJ}QEhM)bq1O3<24;K%cM2~cmSoZsL=qH38!c^2u|$+@65r!sr1<3 zRD5i3QGU>G$Ek~{I!FBfgf}gbyDgo*usTU5vEw6-*+?PBOQWE#M?sUlJVkALdFnW) zp?>l&(Z|PL(3d~PSUA7}eu6LuSis~$X?cj6W#l26mZCi1hvHB=)1q%FooP|I6f+G! zQsh#|TIYhvwfwDtA3fV&TRFHX?MKp0>9Ue^Q@X4q-Lx`E$~eb04F0VlO`T2HK9J+I z&K#CtBmtO!OXOGtmWXi>MPhDKHE0_~PsEvswZ^{+^~qB%0>qQ5E)F`?s6=N?0gN7# zBt+CLCk8+nrpWxK8>U!@p7O?WRgFq;MTva6fsL~JbORfu{OJa^rxAkde!la%E(Rx_ zzpgW8T#H1mn_F@Knw%W;*zS_V*5shahL|L_#bVT*M3OiqIU=&}ND`+eM?`ihN#eBR zi1<`B(T<4h!KGH|5%I!iSN)ABw0piSjd$4eVuxPlknsYt@|?3FD?Mg%iZ^=9Tn{)@ zZl{bZQlxostYj6VE4?9HRtJ8wkm<7MN}ql#Jp?+u9!n2Gih3-yJSE3cXpd$FsEZB{ z66x+SU!J9Va~WmXDaj~HQOhVxv5p>P7ldyDi>JQXKLutG3g5y$b^4d`8fqj+2AkWYsBxaQhqeK88}0pSxsh>>}2a< zJ?e*x6>Y5Rhpq62Id46jmf73mfq4Mky?A7nE><%NaGQtypibQCX)UI|8KCV{I7gTx zwY+yd@Dr=&2mrJ2A0@UhD((;KJ()7lNPP^wHKo&R4S~K)?Y+9w#;op&Rh0Hah6=Q*<9jhxXnk^p- z;hf*Aci~5tSJFLylr@u7&ofva#G-!BFI~IH`%AC!Ww|#q%ee z(B{SSNt~!)@kFmU>mgg#g*`R61`@V>zqAHYotw$#;-c}?P?bj-c+cZl3!^C*3XQj{ zoSn-#CQPWfvW%>c%>#zmAM*T4E94X+=k%GC6L|^ch*Tl0x%!8OWL~SpX72^DD zcwxzIusX)G-kRRrSYO^8uhNyfn(+`F-sNVy!4cRA#ffnpEl$Lm^~B=DT+fTe2>@{d zE8FwyVm-k6VtuCP0W8vEDYHhZpr=lcGR#E?-rj;`dYq9>k1x@3$%wPD0j3K~zG%eI z5Q|}Dv53@)@VNkScK>qqtm<4ea@Hw<8-?$c#YXsVEH=U@0#Ww7Vp(K;_tY8HEMh&L zEH=T^eB45hS)7FJB(m6KSe%q(u?a~wt&zoMvM7O@4U5h2-&}-ZqggCDHGR}rcB<*U zz}^|tRWo?2g)=q(@rZ>Nxtm_>ntNqFbT^%C-`2}G2co^UqP@m-+w2|SP$Ev=IdKjJ zkNXwu0%(IDZ5a584Ffzrsh0@+svU!3T5lQ9z_7r0qn4oK#ls&_#JTA?vlEe1XHxWA zqYxWlBiOPK*V{Efp#AFSygp8Jgj{txW^1CkF+UeC&LKX&qhoYrsoY)1$9=$6j~2hY8u6ozKqgtmK1As){A)*V7{1l z6$ggi1JSzdIaEEE^u8uHF2Waj7G2D}rvMc<5s_6bpK@Ln7mTUNb;EI9H2d|Li2Dgq zSxrck6;4L#veH*eMhw>*hRrk2rp8?mw*%p$z&@ag52>yb$MBJmVnf77LxPV6bRV*; z)KFcPMZ<^bP$E94b4WLD=QZ&fsjH|TNd8CdG*MSD_^O>Iwx+6`rg*5(#gZhp#e;<| z#w2lyzp`U$W@X2;Y_wO^g2>HY74;xr?p{K*bX1gwR=Zmk4PH8*$(UQ##?$1r@T8|l zNRMkEJ2PSYnSEiH7=Sy)F&PUK6r19Z3z(u(98m$YhZoHRFndg`IC!F+RYV=Yy4zF` zN|)-!6?}k3r0e8`%dm38N&!Iq3+R5VQ^G;}Z{z+)B7i2(f@K#I)XJBJwd&QcJs@Jz zHBO_jUq+PYFZTQ;nZ;gaiQpGY^Twnb=`9f>gw)=pWQq}sI+|Iy(46rI``w;bZcKXC zewN@?W6B__QyA9nCy9Lt#%&5BXF_T>3d!9qZW#_eu1$Kh}H)2_9 zlbwAa&fUzO0pqBgT94^VjTw_63|-kY=U(N;TqV=RGdzIg6j#q@kVY=nK1b4>WRlj z$UyiZT5QJ7+wDr$oSF3zunNi48UeFX^S_4nIUI`{?U1 zD|R1!J?x{icI&yYo(X4FCosu9bq48q((I`#@HCBaVS{552zFOJ&0Y2BK$u;134~pB ztlBdL-5NB55>CIllW|J_s|WtC9*C#Lxit3wo*roTZIebBqxHJ~vJTY&+oO&)=yg+! zUZ>4EIA&+~F1dq8Z;CA~ZMq%$qA@i$H=A*2jVpUHRkyz5dzQuqlijr{-;=E;YwQ>u z$2B*1RQYZ-z9UbOjbycNYBrYZ$ZrIggT5=xy4+|EqBza1A1k9oYv+C!eU%*{R~6=- zj?V_K%{w7cKyLRXSS`f zfe+!|eHZt&53j)Ag$OLbnP;2m?woBfE2dfCo(F7T3TG()RG()1$@>j(^p{t)|MD03 z+b3A1nVLPz0Eo^8mUOPa!i4$Vl_tUVA)8K1pN{1hQ!Vgjl(Gcg@-h?Vkn0WbnNv-4 z&Kw)dCKmWpuT6QAeSi45!gu%SYZvKE{c>OXD+^n`|M;OtuWJA6-xn-8Ys208+BeF6 zYij>K+x4}(_oW+}dVdwAyyP1Xeel5}NB6bA{^r3)pYg*>`r5B5Y*=?umR<&Q;{piz6 ziF~weNDspI_T#w=E-qovn`kuz$mdD|5uU488fue^8qX-oedrOcvoZn4t- z@(or_QSC-7;>X#>0_a&-g;B#65TpN+;bWN=U?s`y7BO{`r7Z>?~RFP z@3(bd`@gr(9remS+gfQq6G?mOlAG?mclXQs+NG*3SlQQpLe05v-hU5j*os3=y7$B{ zfZI2Ic<{6SVw9O?K}FS5zHfn$UtZpH+xD-ZoNJ#rf7{bnU9qZt&#x?aCwpJ2ul=`= z-gVA|+Ico`XB7DCmws^mRsR6nJAUKyKY4lI6@Be*|Lo4rW3of5+8F6FIV;sMUGv2>a2KjE6wcfb*bpOFngXZ997a%Ys75ag2kkD zosg>#SjX{!$F-Y<<21%A8 zB#vKv2vO;CTt8*z@fWqZe^ZL1wz=>)Zr-#FHL@nU?grFHYobf@^^`MX4e{$fLDj5@ zuKNk)u8A(y7wyk?U|%VJimHv|CDP%e+-cz_EkRo1tm(2(5+}#`(p4czY>hLeYetd? zD<;dat|&?3lsG%O-Xw^6d6jE-Py%&+XbLg)0w4QZH~_({a2c8fva&-nxUxg@f;ojG zi+P2luu^@5Du$&3kq@5Nk-8|m7B;@PHp=$LmHIG-mISL#0*n1=TOSkHR-N}ze%o}W zM`5Sv+*V@~JbKQ7;4!wHn4GYkh$|y)C*(`29&IP&ODY;|C*(`26>TTvODYjxoF=$i->^4j$&l zZ&#Zo=RiIQn3hHGPytYiDJW)5f+2#YA;mw~6a@g{j}{>S%pC&65}P~lD>irFmoaxZ zO7o@D=x@Pd{s|!VxAwO#q%dB!(Fy>>YZf5@>T%k+7UjdWe$#j9UE<>rOJw$-j>Z?v z9_GR9L20uGvM|={L9@~GlB{fL&U$_=1`wLBp8H)-HkMV$80*SN^jJVSy?<(6d}j`N zUZsw56d=4(h+nBo8HfEp|J;_Amb4lqS&tuj+|c8NXh}+PpvBnStcN2#4C&!Vd!oTc zsvDyXxiGu9Wh_9;r@lT--_G#i#PMue&FG7@%#zxLyi>B=Yg+y z;Ov^_scKBZVx&C9i&v8pR;I?BrBOhdw~(eyT(WbYMY}SF8?=M@N|i@r2Q!z0UcwaSvT-~W%6mnoFk{VM8tc>D z(_oKMFZR%ImP0Fo!--4a_)fl4HwZpCiCu{Lam;0|UyHfS{Qa;HG|FN|AJ8-wGi{_F zP;F~6p}ZY8$~S^d3oT~Y3~4V@Eb6|HjnG)Dpub|c35TrJ~C zTE>&AWXv7{*B(z=S!{qcLxVMP`Nn8F95Hec&tr^Sq(^zhQ&&{wu4|#IOMNsU=1=i!yeR#mG)~?0QhB*_ie<^W1~3wze}(?k)FO_%AhYJ#XP_ zyv6UuHZ`Ytjxz&&T-=VtUIGSSsktws9mS>_+V#u_g1Q`cUXUW8)&@~wNEJ(Sno`zwwjUp zKVgj3%*5Dw2bW(P+oNK_Y6j0p=sXvb47U^~8itMSo#`|#h+C4b{iCdf3X1Bl435)t z)+8l5XXvVBpoW{E?Tj+3IU>eanbk1=NfVaVcns9tT9Vin4{KV!N#c}v6w|8l`6tJR z@TOv3H4S?+>%=xUry=Dko11e{|M(Z@Fgl^0u(=t{aLd{lp1d}OTi3#{HOQfz^$PH` zuINH+3}SfF+MoAYm(+UxtOZ`{Vl9g$brA>*tJ)Gg(`=~*wV3x7NSjLI{!VF98Ef@| zPLOr%!ey=f3kzO$R;%YPYF*67ou%se!;w#2Gonw7mggX#w}R^sDaS=0v!3vKGO!o$ zC?vL>p=K_HdbkIAw=!&K$U_!p2Eqc&1v4Ej3u}vM86~cdzPPFwf3Y9FzL>IxZ!!qp zW%PCCx90}2dp0%sQeLyLS;Tx}#>A@McCoSQCtl(&orWH*k#iYd?$sd^1B3BzFbOUV zMq<(Pg&gm5b=n~h7z#1ECA|E?n5T4aJ@t)O=Ct*096!!9f@^Zp+IVGLs>cIs%&qQY z8=Qt3bs;`ct`vywuo_(4#BdQl{mkqyW^=PKb*I2Rm?TlJ*Ib5s0ab#uGS3xls?aw4Ykdcoi- z-lLRuQ;Wqe#e=Ddw**KcXrE#bdd_Y6l{mkUi$n6xZtp5-CR^a8JC(MIVs zei>7hPi^y3pAs*)w2gjnjjd@d>1MgzMLG>{I9b(@F8c@au|E3;o@n6onMNr^T=h_& zqE*V-z!<9(_8&d3>UQMIeFz;^rwXH(80?vCg>Jt2lZH$?+N`${ggxr(= z-2dud|EqtoNB)0Q|C(mium8`rla4m1Q&XT$O|3F@S+0A4u?Z-3Skei8!dHu zspjwud=hHW5c`I0&^L6ljmwQDdB4lWGUoBT*B%doWHZfjr#&!V2L=~4wPnY#L=o$b zQWLNKz$#MS4Zn+Y)VG-!Rw@MrYq&ct5@(oiC#?r>*}@IJ#}6!i^1}=6N|NrbB7L7< zSiO3a8RF$~0s!%rMF@bt#&d2&zVzPPI?>kKbKGb%S0}t38Mk2j<`zV(Rdz=`Pfs!l zbJPoK3UKQh0<2zBfZG@V_n7fe=8K6GWM_?gY3!ph`WD@mMbRx0*sO5s@js9MfN!NHa4VeJ5lyL~Yw2Y^;+3n3W%9v4nDj73<8(@sckgNA>t^@$$eTxtv z7SE5!d`dk4hqdPe>rDV4{$&vY0P&$k2mr*tEkXbwMl3=ANL2ln+&;=AD4VqNBgjUf zJi{k|N2(gd&kJFC_LdOs(>MZzF zs1D`Y%!SKD$;VYu%_;>SKulg-m(B@x*ZPzJsQJ%pVE30YE&L-Uun4)+y|@|+>c*(fcesQ35IE~ z!g|d7p8{n-bzf6FO5Aw3?p!cW>*$bDo^=zMQ9)>cV zLAb8XvMs|f^%i(mcJeTu))Kfq+dACfYq$kh!tp&$Z6^_~0#`wnLeXc;R!E_{;8MB_ z0Z@XTMF;>y$|3|n9(?Br#t^CWdPDnedX#c)&T ziP&o_lqbS8{v<$kFdC<|TP?m%#&`E?tLq!wk>oGJRGAS{~ku4n#8)dz1KwdUTs z4V-D)NmnCp$uB{^yQ1`i0vHVI@PlG}9z2-b1@%A`%Iju>2>|MRl-Wc8aEfsB{jric zbJ*|c)%k3fZw@T7nK=5+y!D;#U8ReIz2-pLmVy94_!c1m5E+XQ0Ogc&_KM1BKU7fl z5_lZ1oVv#=rx)RQbU6hL$bc!5N5Lq|WPha5Eiz#USG|m1l*#YupiI8ZGHHh&`9rxh zB8oz}fO2R8gmPKPGMNOp`wd+tPbJIbk0^~J7f0pM?X)J!V-X^q8KoUGBa*NMKPZn^ zkv__UJOz`1DwL;XgKkJc$|DB=<-ul~StPkKW%1k^%VL8sL}ih+k`@4>&sl^3K;$h# z0F;I2;A%i?^O84~q>g$i9`W!F7kE{;i#2a?ySnyB+4DePY$Q(uV@cc?=GL(tqY6E|_%e>@VKiOj?M& za9PhwuB*rsuE+i}9BuQ#vs#;BH$;>4vH?)|d%JheTx{`S=FjlHiBf##Wj;Vp!AS_g#n6adSG@;nFq?_# zmD0&7;?h;`Gw6t4OY#Hc1$F>s?NP4^qNY;5?2TY|;#I5-h8%jmBQI7M#SAf=8WQq=j7k7jkSSnV@SpT9u@ z9Ydrj^cH1>nMzsp0|K)m8@iMNU1pfqOd#M8Q0zZ>4n03LR^?H0(-M z@YHK;tYY2t3syWlN0L`lz+o^IKa7{Ghur5gY zCe5B#GRX44WX1@$)wpfOonqXnbU9TK03N4VgaEATuCtYqnY&K79ulZ9QVTO;w>fMl zo{?La3Ak!~q8XE}iKX3KH3OV_!LImqgSilEC)TiVZ8E=8Y8o8s7&Xp`NOQLInd<`= zbRZ&JMuVQW6HqOdI6nh7_!eluDZt&o$FSv$G(R5=TdwLD8&SmdN31OjU6%>pbM}c^thmxNut(;%NQEahwGK!*ftZf+n*B)kSPv7vrb2Rv&mewp^NmG4U=VYcEL1dbX7{ z4mPSTL>qMDr+aGjITN3qt|6wB0w=a8emuG;ydY5&Hs(SKWluaAitqK(R` zZ%12Jhd6yVYnWsHWcb;Hef2D`+~Ecif8ND?(`4F*3{uYP@G}Q~s${UEl|kCd09tpx zdlOszzDDV{w%}C@xmdnny=8-q;Lpkir!Gqg;e2zg!r9p*S%*WUS~!yATzpBjl_cAu zBpXxKAFh_xiRxg*RCTJij82tx($w)qORe0#ucE{5@WD2Bh_TN#=i^x zx-u6q|?DBptmdv=D@La?Yhw!tEy{@OzMp(Ow%a9M!XJCOb06>1~$dTA({h9 zRdZlG#4My*>Q-+se)`vrPQSU7OUU-%qpfVubq;yk$~G-Fkni)=p(`C}<`^f3)53X78U6EoxXCWe%){1qa^1TB>X8W^j`KqaEcL4llqwyy zUOvJg&&TjqV(XmanD6X?^fyELst1Y6C_Q%E)f}N@lN_0$H#Y9l$t3k3>MWSQ%U{Ux z1?FqxCJoguQmlo82jeIp_Vd-?gCfMC8OPLCtlrn5c)P_pJ5{t z0El%hLV$5&@71wyX=2?%V)Z(kN|HDe>WdQ^VM5g?oA!D(DFNo&jHn$<#M{Rae-;u! z;a|nV2b1gDkOBbFVG#lV(Mbf{&(LLkt&w>eUY|vMrK%8YK_T0ZN1%hLOF4SEYBy4Q zK@I!x6KshettV{7&)q@AI&msfSUm+j!PdZ8Jpl(W&5}b?DU0zQ6Fb-0*jaZ^-9~RU z$_rV9PO}X{R>&q`oczdF$f{9lR)1ozUO;x;;0n&1NWV5(meIPsrnrNb6Ja*#D_{8(A*TP2L^Mjob))$%8LS{8qX8VwznpkG&TgS)@`t7#WGTRdA zg*#hr7>AbGC*)<9@p;+zzr@Q{`$oMxiLri@;*j0sEriby%B%c zwn^R23=5*-$y;ypFg|$W>3RsoJY}JE9YDF8ImuO{l>;}a2=8ZDs7qO0PgvL?sq0x5 zsGN*qVT|r)VkxFZadG8nE)x35vg57HE^?0imxj4t@D4nkJom*eZPDF1CB!x=*W zv@QrEV5tOJ6VZcNU9P)UU5$=E+!uBR%QLxvS?Wx6b>fBK=EiinnQP(0jktEi*Q8<^ z<~z{AiYY8&lWL}Dox;tw zR6>*NRF$u=WBf<_hz>eFGnb5JCaHtAImeu5%lIZIoLs{#J1JAFzc|}Mrd}6D4m|H= z3KSjNLP#v67K+ErsH3Fh7eykHN$8#^;L*Bgrb_pu9>sa?c1R~Y2Xf_F*-Q?eDaCaq zENq<%Cw!D+`rcg6A#Xa&_6&2L2{TKF*B{h0h@@>~+*K z;Pbw^9HoFa+wVgumgKj?3-(1c{@?~EH(CEu07m>X;6L0Cl#U@%c&9=+v0#CvsPGba zk^6HdA)N(Chpz>qx*W))JeX)6MGv5{p0Eyo-uOvz)%4aO5{ z4Jmar*f4zP{&7d}k!D+p*-dkyZm&#sxGs16nP5p6*(#@*;+2(iu(8?TYo6n9{+zq%cjwe#e2fM4|`7+}#exOxE^m=9)bXM8@IJ1Edh*1-$%nPtZ3rFF7pg z=7O&RgmW}XWF~ z&Ted%!7+$3U!H@8b}S%nKZS60t9%y&5)j7$VdoaOF*z^oPHvDwsN+HGeo(i(zeIfp zx(?IsGS1cubl-8aJJ61Z1Tyq5kG`ALehl0!TDV>~tHmt6MseY+L#k;Ih1TmxQDFFzr8Lgc zvBVKCrTGDRMyv-+MW6o`m5G46W5Pf%#X_LH4O;he2#u-ym0(=&lZiZJPht~iw&{ml zr{Zj2_Hwum!TjyP{AvF4CIgagEz+$?raQpgO1gwVi_!(xak{=N8y1jzcTDajidb|K zj~nM6{KvUBg(Om=M^kmYaXAvo9W67EU+xQdvfEy*o4Es=D5?+9nnw9$OCRl*6GZJ7E6LdD*X!^C0I`up z2oM`zUWk}5x44-6uzu0@LE5~!fE0BRegn=tOdmikNBRIyCJ>M%8@|jU0JB%{f|>BH z$ugI)?cbHeec zXx>S7G`d`;I@34P>9nb9F|X&Mdykcj06@&P2myfD*dhb~ViSuHU=Sk}a(w(NFxu_t zuI)6YL+^c53Tl}K=4r0%!R{@2iu_`SJPSGH>4%KWv9Ss;AKFtm9W=EPk<0#K8uR;w z5{K9okUhH%ArmS!44}DMTWjP+ zv(mY`DbodALo5kmn}WD6`Mh(}+jcCQ@2vVj!<-u*je3N^7jN*iT2r^GY{*uiHCLma zY3$1JS|^z3PEGGFyVKWI!!_O$>cZS_aQ>#7^zzrmSo zPNP=Y&*|EuuF|QDwxrfdFX#HX_}#@w`Iur)JVe`lu43O%Wwqm~%b6YQxJ`<+I*l}j zJ(FW?#Z(CPQ^ppnHP%r~5haLi>J7?G&;MAny{6`%nMJ+{irm-(asQKhH2lK}r|aQu zZ99}#YI>}I(wxZ(n^sN171~FXwCGfxF^YN>^U8n~jr)+2SZOCL=zbfRE-vzU>gyzS zvVBR@61|}Tye(qe!kpzBpyyYoJDc*W;ZctXak5t?-SZjz?GrdFZ%0ycEEI@Y#{>CTcmb2Dax~;^M1G6T=K=JsDwjl()4MDrHWAIL-vuAermS1<#K<{_Bl3={2YfJx|J7-t;(ZlMb89c>apuS_Ia< zv6%I0d}yRXO~Xx9sA$--*adOu{%m@ER0PR`GNP8KYjscZ=UBe3=q>6fv-Qa&Y8cxmL=1p4Li0-qV&#@^yX%QbD3UND_RX%t!S}h(P>UhVwiAs%Bx1D zZ1uT1XB%U~9%()mW(Wdie(a;q_adFaEr1yDe+n>Rz>Cq?3pT~VsQMuY*od~rrqqM{ zZc{g6TBge>&W2riE{9zquC#L6BF0w71!gXZvk5XPS)UL zfUO#A1=yy+Hh@z!I0fKT4Ne6(O@q?_uA{+q08YdGnFyN3Hp&(z6Ak510r9ZEYif;EehzuI~lXTLuV<#7`JcIAjxvqMGY5f=@E?%^w7xg=f z2p^%BD_}T9KRO;fs7hEO!y~PPB_i0}kia2Rh`i^Np{gR?4)q@|izf(6O>#m(HYK5N zB3D)6gb!31=3k711OTGXA_PEX66PL8W^mpRH`M^p+`um-CV>TbN-Y(OD<)`FgP)2J zo)WH^vm`!*I!l`zhLZlcA}xw-l+ql(Xu!f9_I|^FN{HB0hd(Dk9{e%pO~(% z-+P*DKlB7g39`5 zde|2yEf|rmoNp17fQO()lAy%17m%Vupce8&YGE=8jaKMa^Wj#kgs7d2LF1Pu2qsOX z>tLKFDiHaU3M2p!+gOAE7pkn(D8`$tIXJ@uOn9NLKlCH@XSeG5Qze8oRvMjQl|v-s zRvO8(t`ncPb%MoG-RDQq8~NHg5k;%TlBg55?Ej9qhFHWb`@iC&^j&p0y6#SOiu~fB z4PN&Ge(-bfG~#E0P1J)nbqlJqw#$Fn=HJwcw|gtwA&fmY6J2o~0p=e3s1k*X5qV{M zh6#@$xC24``k~rCI+VfzQ(i8vM#&hepBnua`1RB`qJ}0Rrl9RrqrxL>dY-yc}mM-$NjahwMM#JJ3Q7aS^R z*0|tgCdIR-;Xb2~>?+hrEmPBP?{#?UB97T9#oMe@kILE87&C{Nw*mu_Ag)r$Elghv5;(9F;_xKFh&WV}E7jrft`*$PUgy z?k2es3CBW(vDfzS7G8}kDBJ+eRHH&rtcFsDGct|S^~dS~V+v?+XQUv8MY`s0!-%gz z#2rJVsOu5ET8W=*fcEia} zRxKR2WYv;2R@;B=4&Q@&0z2X_1eoZ*Fr{KgsAPT~&*?wU=(n&+J6=cNH`WDqM;vBd zU=It1;u-xOiHUUq3Bz>(;xVK%0Q*aEk?tyLEv!S?Dmj%zwxFkBAp- zrE2|$1zkNCNUZ-*uH&u$NI}TDkevqX4WC1-FB}N>z=y3!oC^#t0%61t7~3p%nOODA zm+TV8UMy@qWnL(tEMeScP~%de^&N=FFe^NmNj>t({bIxDFa}xaD(W|8B1!#5lr`)j zP`?p$AReKoX+?;B4Am}L!~`fu63#AKkYXl`iEz}CSf80E8UFT&xxY+P0`soYGU1jc}~nxv6~nzmY4#nTDLd~-iKH>S!p?! zvz3-p*TKagjQFPkOjKHwjVzT>kw?#EmTc8>exm2XRup!-^Ge9u;X)RM=3<2?!(4&V zO0)P!Ttb)S2jf{Pjb4zb!bpTD{eD~e0-PYzP905EDc{Kcy-ld4Ya=dii{_}KR*r<7 zD`dtlGFOpL!y?6IGzeX1wn75$7&uF28`;NZQ~)5BScCvT>}wGM#JM~RF`#GoGM%*S?xf{f1a*dvTAgm(v*{uq zoChBWm*)~)btbSK-3vQiS3C~xk7PtA+7G~pe+kIpO){L5qHe-SK6pU2pG)cIQIvYe z5Gjf__#Jsg#&`+C#c+oh8;50XLY105?(cSi2h7J|8`TV?KBuU6sc;#AV0cGDTCGCN zun+$t=R^O6a7Qy7v7k<7)@;l zzu97a@HCm6iH}Zrk%L@JxGs5+3lZ+dZ0-PGV{$S95k}NpaYFDt`npRZTvJZK{N3;{ ze^VL();Huvntj)rnz`yqh_Nx{2ft*=O)M{Mn5ce5uvjcs9n7IBiks*)lBTsQfH0rM zhT!{10Y{o}J#0}Q?_o~)aTW8zk79#ts0TlQPbBgfP~De;pNS*QUye-QykH3aIcM0B zc8G^N8xCvz-NkOwhGl(b$90aY+3-dSKU}lnyB6NE=CPtH=XzY+G<59s8s`2r)L-Wi zwg)*80h61VDcwwA`6?$N(5!h9A|obDsDV5PkuYAe<1W`-4wZO#L;>+k9u-g4&v@z{ zMY9(zMF1cUvj_ozSY{Cd0CBiQ2ynj}{t!8@kQxnOE0GSm_8aM>)y;HZ z^LqatZqPC}_zBC5ngmJ~r&TYY3ZeNPleDf7q~{_Q5Xo zPoQ`zF)&YB`|8rw}^rTLVSj81{ni z4ju_1iHdLpfD!*YEWQ7LOge^03BHa3sGJDMZ?2p~XMhE!{*82amvmYEm<7;WIi56s zfIfqVfvPMgqPcQ1oJ@c^WOr-r?QhzFGlcH|bf$k&v=M3~s zAk??;(`ncksbZsatE-Fq5qkb7vfHxARZ@xxO!z3M&}8mFv_s4^HJSCNQm^m^enA@7 z61QQ$f%9EBPlEd=CM`hE?3X-scq^M}ZD))NUQVNex&COpYQolj=z#&_*Q`I?=?c_)BlgGW4(l~;}@LL&xH-CV?>NZfZ zkuR`RImu{>yR>+G(hqJ26AiBV6_W3sZTv~~T8qD0l}32o5?pCSD7pKQQ1~Dl*tb~- z>^thzuMsVe@%nRDLR>ofhFr5zs&mRGAEH#}rY|h|3m@0EgZhz>hD@*o@pa*JTY%S0 z^3ajap_7qqti4Tac^g|k5nF!xmT_$Qy^w}%92<^7MX_adY(@0&cy-8c?cEEbe+Gwn za?u`bT5+Sh`D zVM;!36&a}lIL7%H3m*caz6&E<=Zh#;SDK1Dz&7OtkHg2{Q2-OI;Z92Y2@pDlNKv;z z?%138Eim1@^w=MG5}-6nZ!oA1`#pwzO2U$&ZfBX@fgg0K-+?3bu#i#TwQyZ7tG)*A z(XgIIFg!5xC>Ta5^Y86myuTm`w`_#c(q0xFX;64g4)?X@a3AaM7?LNs2am31=Pt7I zjIcvWv%)#Ra$`oz0LA|tN$Nz@sYa^IIOCZQ&O}SY3s2>ZbQQ!oj#g+Qjd^HRs3S6@ z0mrr@ljh)g#8Jd$H;uVsP6r8KZkF#^W#5C)^6FJ6e|Lc0k}Y$>8e__Q_o&PpO;s+a zY+U9#B3tGTw`Of+V5esZ)s=y>7Opc>q*FLgk~ZrF(hh%!T;x~R#g@|A(2{Gn{A+4* z>QHTHXL$+|5Y@CAbyFsuh>gf#{bQk9q*%+yTa=eghDudBIQN>N?VQQJ?BVE=v8b z7h|>rCit20{BwGq&bPm>ZBKZPFyi?Udftsjr>CPsF$&T5P+N2!edpWABmX=%c$s;4 z76G)k!OOv#w4ciWjQB5t621aI9YdtJ!S4aLxWOOj&-xT>iBTDZwM1a3X^7 zBv$w*WXjW-Vx#QZ3hniE;2NQdW7_xz!P@#%L#=ufAe^`01b-%+SAT)i{S2l>`H|)+ z(KM~-*XCwS{0vMpySJ@Rqf>5*8t6w<1-1t74TYR-f{C`7wYchLIl)(lAxyW|T%HIR z*1h@0I!s9qC$d)V&dT;)hS!%^|MXtUlTO*u^DN%8I}>s|2IYi{NznmDh3W+j5Q7&K z@w=#HVfZ$(gIjk03a2plCB%h6`5k=J)u#qmRM(*2vj*vUOA1b!{tX@n{*E7>MwO3u z`5|@KVo0_yse{ASvHl^Bm6XA&s>y#OS=VY(2CuFrze=*M)ugEJv;XE9`pKwfKfp)V zgbY&u2NFhi{!j9P>pS7hZ_<-(oQuM1jrLAw2vf_l?EGyVD@&+Rm>V1mS$e^UQzFqxGaF&12Wl`GlGV6b*`~(Y7al=DXp#;ROo9i|>u_}eLuk)28phEV zpuVacMv1PvZ2ZwJ@hwMu;rqw}u2A{_jvM?7zcNTRrZT~i2pV+Z2VLia~pa^h$UM65| zhPkpCnOHPJo{g0~3IGQ$In%@&gzIU9For>SVlk(#0!6d{g@jnlke>20?sFOqN>ZwP#hdUwcq1qyC^ppfSxCuVRa}D+Ue*#1WtBkv zbX&rYke>R!|JNlq{;?Yp^EeJq zgEt}9G7f8b`jqDn(a1W6NEy7jnw%jyg|s?`NKwdES^b@bXZnbXorC{w?F-U!7VbEd zL6}20u2I~AK(H_P2E(!x^&UXPp{xD|B-EZf(@7&81zz-Z$$C@Z&;OO;^rSdhzpg{V zQojViO3vFzPirKBkL2iwwL|;}00irZAOxW9HXn7GdlKG^zO5!;c-zp$!IJvud{l;| zD5IO>>5T9Hqx@=YWK`Fx9xTluy)>K*Xt$wEuzR$>PDt1@7> zdtHBkK~xqg;!RN2Ihp5YK@4-ukgMKhaLBYkndX5DYWY(j73tFkak?L zGi`5OPat5nJhWNgc>sKzNO?>UdAOB3K=JF-mG6k_SH24um%Jl-B-FA{y$%RB1mHKA z0N(I;RXT;NP9(F>0IQzF4_=np77Hrq1h~lUXP>iEM6A%P#-^=Jdyz?--_09hS3#I4BK-6A{)mI{etWm1D!%+dInVG18Z?4C+ndG)F0;p01@oP=*7bgAD{lMz(95jjT} zwlW=zF`RE;Z7A!YR?1)88As<&qTUu)gSR1E;->H^WN3ih6>L`6T?JEtu@|h+oGtnFg;N`3mvA`VrblhdaQwtfqs|Y1;lq2)|syvpKs1wt83<~{XKO5hN8fQps-%Jx?ZqlY8z;- zAM;NSsZB_6@IT;h#NURAM?C%lUAXtNMXF(tjd_&PK|g>QeDA0{D*+L>Ts#s_jrDF62>J2IxGsr z0Zr_yt5Mp%8ftG|O+$K~T2>umIyk6C`K_4cz0MWV4hgWw*Z|e2>HvuE@Tw3o`7?+Q z^)Tn$V`PBtG0u#l+@6Gf&K9mG1@ZVi zI$SN*tPeZx_;71STgNK{W2YmAa9`Y}U-{8!#QhpE13qx?F#R2aiY+H% zEBBG6G)bc1k=;&??017A1GxY|eBUAj0OAK0Apj6$n?cDaU9v`(iEuS$U8F5Lj<7(B zKfKvB7m;WEMDu`5JqK1w&H%@Q?Gc1}(!=mv6$Cd4qsQNY zIX#^lA={%@>BJ$G0ZL*_v^LID80Y6qoIjB`6aICa3r59>%#l@Ql73NlJqHF@_Uxv8 zS=muXvc_vI2m9bK6AT9UgQ-~FKD5H=J9+|E^3p3I+df86)=OO_(K5H92EjH50xMxP zK^o7q;T6a+=o>`zbl{>t2)?TEYCL>tc~}p25UdAexjF;zYzu4qRLcE#*f&7O-3Lmz zD~%mT{4EI&Bl2)JATX#gWwD>|%JKQ_sp7V>5TQJT+-L7_pE!%587{i$}uDt|FByn=uCJP@o4MF5j! zCY}m#n?Lm$eP8n;q>u5Py+ubpI2L)<`{-PXHZ->Sh}JgvQ>NZF_%k{S++b&fA- za6fvnIyWotm*>>_NZPy)_oJlcwVfkx;B0@iog?e_dIs4~AC5faG5Px?GRzw)BQ2rw z3t$w5A)10a_z1qGuhFtOjG6DCwm3wJdH~#DusDL~PM~SVrRUHbZ+JfeDy#D)rg@~K znX3E>;auJ+_!;=`+9cx-5Q9;y!JXb?=C!V>rAj6}J`|o~P z_aVg9wTV0UXm!SyF|jVh(J@2{?Iq<=G^ThH-U_Q}S(p$1Hi45x{VIJ%QZ#Vb&D3Xx zOA*TuCCSH2)8YR3EX~A>U?#}CY+?@JC`Ru0u60fk)fE#eF{faJ?f?rDa|)KSsAFbM zv6V^D70KgiO!RfXCQ}Psbre`Kt#nh4s31K?65Pk>a-HXKs=3nsX(%mrj7pG1{Q{`kjF?07ElM8P+a z*OjzdvBBWW;6qx@O8`dv8{jR(CNC-wDe5530APt##!ho0y`mxuI*zpZY8}>vF@nVW z6cza~^k7fG*e*@b3+g4{utIVm#(!*@3geTo44Vn|Mt5!_#>JvA-7Dsr6xNsWUAw#L zXaoyRf&iOfV|YB{O*J*aEU=jNG7$%bcqbAA`Tg*fOgpU}V%n+jOK?i*Cbb(nt}bl8 zV#^5ik?Hxt3S>!6t7sgA&6Htvh~MA@q^}X!5;_?lb=Zu}9uGTB7lwp|dDo$Gxat_D zQac;v5Hjdy=Mq~iu!uIt+WFS#@O3_C2G=3agRfMV#El3P?m%G-k)r;_lE7G4F4me6 z@$KGzb!`zH&pHiRMRLWRW&xTlP$p;&;*%|5a8TkJj`AIuS zJK)Ya9rZLd?@!F;yx-&3YaeL3ZTpv(pV8aj-o5qIH(r_3)+7Am{rz*b_H(hx~T)*sGK?nc@85M*8K#*fW2ml0G7lZ&nFb{$dK;+ejvYC$coA7ny1_t2;C<4J7fIEG4 z2WMgeyMAyb8evz?pFSgaQ>fD`29O7eptrit9PG=Sg>qJJ!H1{nqNwmtF={Fxy= zRi7lBo*+y}63$EzCMF4ICkVwP;hY4aAxSt71i6+FtMd9mC7mr#H731XkO<$DBwUmr zOiB_i0YP4BnmIb+=A^f;B*M2O371ENmJ)Bl8pbya1b8vn%sRI#i=!Ub099%(@!~7C zrFzJif9fxgr5g+}g0}(A*kI2+Z|YZDqUE>)tcbx@02fxFSskm;TZ?a2%3zy>?`;Lm zsu^sTKyNQ-R?uLF1p0G=W;G2KB+#E1G%IVcV*>pJL9@yRJ0;M6Wp1Pf2k!v1eD5s2 zS$%_D625m8G%Ini8__%yb3EImmKNm%ok#v$Z?la7dh=*=q2&deZb(hNi*)8;)yzo< z&C{aW9g)ua7p1J_Nx^y2tOFsvL{cm~Pa1fz2SYtfQY=7EntHG&Nw<;|3(=ECAM8ca zMI^<7^rZO*dxO+e@8PK2eqSuGvi*J^R-4p--2ce*;my5rS3 z)Sa)+mF|FbPIM=%xz`=B=2&;enoH@Bb)SELW(&4R(#`COeww|?uF&+@iQr*#SFzLB zwH_FD61&!8)MBTwTRpTnHv3)cv$#`K0379Dv);QNss$VFuJzagVnf{(Gm4dPhp1t~ zc(mKzJcAoGar-})-xs(tn7cBVtDE83%5DqrIKVXpxvh)#IGdwXYSF+C$C%uO3+^(( zB0$}38M);l*b-Vqd-3(|Q&)WTn9ptudP`|CrvaK)L)M=H3KMuA*umzqz;f zS(2Wa^ekDX6PTgW-4jT{k_k(~zAq7xWWu6|C=j_o6Bjx?jJP8%2%?~XiQ@j@h8wbo z2;zo_ihK$I{ZtSX5d{Ht_`mNtb+?{Li2U?<{_{N3Rrj2#Q>RXyI<;4&oRy%B`SK!{ zDrbjFmHBCwDhm-zmo2-I3hd6O$mu@V6(9dbVvjH}xPP$jqt<96*aal??Cv$@3`Il=l>qd_ zN`gqbf*UbOo3~|HFR#q-#_A^nQa=Gd*nVd|hcKSm7is%DqpzXlv;fd}=ZtBrgI)BY~g z#%843;d&ytSnM4Uo3e~R!88kwn^w(_$ndV{A0!!uvbTVy#PZC{WE|}0NJ7l7xXdIO z`6h%2k`aJX4M^TeMt&^J-yg=&Uo^L&_NYHCy`VPFBqP<%&(>a_HM7Xv z?Fd{uBda0g5Fqt{dYjt--7yOQ2DFqM@sWh#51f2~x=<_WXAPg$G%pdf=MxgNPPJ2kQKt z_)435P=Ug;=b_%Z=8iFofxWUfZMwBEjQblw`0Q zQMfkPoJjh(VGhAsmht9BQgzL@fREqcG!Ii}Ny?8xw81L2+jtVDNSX=pEOlk}z~H&> zj9g&{!DP%WAVBN>*C4ET0C+Y4hzEe@0)Th`_(uQ`4*-870OiIx$UmZR-a$JiP+2h( z->?Ggw8A||UCs_FRL-mVAAm{?t88nQs^5jF6$SYNG#=M+(XYCriWZ9lLfeL-wEYjT z0!b(>$1qH{P-4;gy~~B{EW5mp|U+bFer66`l#2I;+1^noDN2l^oH<;p)^Rnbyp2_*_A$~rch zpv>@ik?M%oBneFggs^pj-68ab`NeR}EV49<9&88A*b}Thfs5m9B$@t2Btr0hWMd2@K zm$>)?`Sf81O%h}kN-ChJDyq@6Y_|%}1{1dRxm3$_r1R5q9Z!-r=V=OE?7YYRp8P3P zG-=A+`opkJO6H ztmU9B*3BCvY3Hnv00T;WJS(8@X=KR)A4gL$@07?(XyN28Zl$6-AFRR;CxVAYZc1>r z=_$Fl`y$waRBd6(lT|frKa-^?%$(9PXBHoh2jJNi?5%jUm2Qvtv4Ayb?9gV0iH0^a z>@Lh1riVR{{b87})WyvS_0NFB`6b@=$r9S|9@sa#(vm~Ru5yqXMCpQgF%CrZs%?x#|a@M@1z4t0QkR&#zY?`Oz@mAyhEJ6w_%VCrWg57>J`r4RVI zRrnz!df5d*qTXWK7%{ z8$Qrl$_*b{_x|m;_LdKk99Jtf$>@=C@WOVJYX68Bv609pp*&MZ7!Na4G!Vf(iC*lg)?0zq{un!DfdGWmw%?OjG&x&(0PY`e2%B^Ihje}yhzKugUnD^ zbUJ}%8~i*I1WoDtzwc^b%ZssXw3+Xywm+lO@oXQdp0B!&fPk1v@QzGEDXPIJ3$tT9H?4x2U zERNarRB@{4i}!Q@dCY)1$rlb0+C9FV+G1>14(JbigGTB zGKq{ym!)SF#6W?z8gBYhkbPYVredUHQDUWFqdbjtE2qG~u)@lfNGe9(hqy7#?V)~8 z(5eLc@~h}E)SqLlUz*QjH}6Cm$nn-$&~bt0fSSzAPMVuZT*ZRHW-|+9P?3Gw6;nh& z)aEaMYGk+7IJXmJX5kk$Fe7i>zaRR7zTiG#U+{~Jr~STO^Al(REYFuBnE7(d&wimi zdV4o}K(c^q&ZZT69;@nlsmTvGXDs;;W`Y9+a_L9NBKp|O-EJTk&A4PJE?P73a2|xS z2A6{0dI~u&xF(NC{y9jmt=a&W=fc;X8R)BHzM+77P-6F;dAVp%u1fDC41z>ApS1)J z$Ld=R&dmGQpuCZE9Z9cvqaF#xlY57R-7m8fCU^0|JLW2bJ#AgiyROpy7yBPrL3J); zJ0Zns3doXI>+s~33*FN{qv8pbl8;^(==?NFMu0D2QCiKM!2^xcjV7 ze+HVB>umvO*Yg(0Za94Q`73NUs6*HtFh!v-oe9D&I^*bQQ`>|+t3X$7J-mtO8Ov=9 zdHewL7?oI|Di6%D>|E1gCe89@;2gRS2GE=SviQYT~Jz^i2i=+$#sD0b$9bKk- zz3VuaBVF9{jf&yF4sq+R$4>$M^J)WULH#%23)g3)acnbNU5k5V6oTWb@{}+xmw6)- z9EE2`kN{Y|7b%TPo~aSIxSj~!J^Y0&a9Gm>|)BhFE$-az*)B-|OlfiB?a zvZ)+#mP|O}324jGsR2u~LY9^XEb;C%(T7x$r(%q!S<~=z%hq_hw3Vld-j6nW#_H38 zyU*Mi%?kqm^)n85Ch%{Xadvno+QIID7rULPZjOuBgU`8E{ph)|R-qm0fiuDOBxr}e zi*8FjOC;iOZjocP57NdC0LZ&G@(4W>HZ2_Ews{ApB>}7?z%Ao{XZ&+Pwt6`Bwa!7r z`UHxqy}BPh=SH8)@HsE~+!3GiqtDs+9E?8gVe)LQ{&&~{oOw(+_aTW7(T>Q>W&KK- ziSs`M$A1&j^Do3tM|CHd^*8hL8kDL$)+p1kvx?Eqak(1}!QO&kBX>jgIJ~$us*GFFJRDjZWt8UgQsZS*_?coCeJer2To18mQ9d zRJ9a1M&QW;?@pn_ajio7?#%x0 zSEo{mbyZ`%U>^Rd{AQb>V;$Srh~(dk80!&BM71R+pltaU>}4=jRBvpGSWG8vcAAAz`8v%k1GbD+3+bC|dVbA-5U<`}p#|Ju5b#;*XQiFrP+uh0}de`oq7 zSv>Maza;JXqx4Jip1&vk!h+}TN58P)`3KN1ta$#R^b0$le>nZZlII^yzp#Z~Re@%f z{a5iEhIa>mb&c?L4SI6yd9?*$!~;Nk01(eo++#DT^84McqWXW;gt<3H7{W zE+J_|Toy(YyIw*$T*-Q7m_cQOcLKiw!N(Y$bTlEb(GjpA9soK6fOr6y834p{kdob@ zZ{&cN{$oM^s&yPqQmP6!C*z)y%0ZUPqgJ_QC2;GQ>?$Vvax0Em0a5WFm0|!8&kb&) z3xFCf*rHp({v?))%zC>U36hy_EOQ82^37)H!;){NXTat7pNixR5SI zk%BwYW|@5E`DzX@53u#?P>(sMgC4)odSNQDolJ2#fZ*Fu@6F384rH%8$ewrr=m`Mg zLAy=u;>-&*jxlBj0mK8bQ{{B4v&{8D?5hEB%~AN3E$WtcHqo-Ls8Irmp^+ipr7V%T zTRKL^tOIj6lFeXz+Ql3TO0wICA1@0(kkXNo67l+i4P}H4K6d{SiR&CXLj*}MH4Pq1 zQvvl?a$@-?*Bno}o;iesPo$_oleCY7d${b4BJJA#ZlhQ7G8*PZ_Iy(ia`Rp+gMJ7! zC2le)G#NF69o6T%W-X|xEyh&bY51t$&habOh^k^=FfP?O%Z+`AWOCFOSN+F;*vNpA z@O$xr-B|T30yG&kQ^{2BRb-EOoIx>j&D8u?A*&-@`r(>&0GU;+1agr%xI&S$`p~5j zqRV<)If!@dasBr#-21k1fc%h$6>kPCcs7+5T@D=#jU-Pzd|R z8zd(4ugfr}^byoc@Z4L?X-yn1*@t^cAhads{%$9;eqHz|>~`j^4U|h&%wV#Pw};en z>(_PE-;PSi`yJEEH$iO0^!m)0-YvSphI@8pF}prLwuaaC6>}DtU$r*oUt?AwZ@hc4 zm~$mxYxmeC`dG8u4uP?Wc03jX#<_7@r05BK;!~;M%0Ep*FoKQe=wWWi5 zs&9NJ;AJgv7@o<@)43Be3a5X1d9RdY7-C{?DhAfP55u^GIZ<0`TLuSYQ6&2bT; z>)jlf5Eo!dE?KPH6ZTVHgJiJhlKDbEg>Wm zWyE7yl@4SWbP0ndGdV`k89~0=f@5WlQxRJpgw_oDG_oPJePYxs{@@tiyoVyY3nv)? z^b0V3;kIZ{SM!WZDK%*u{}corv+aBnvgKc#z-}e6ALc^T>G4I#aI8i>gSd4x9;i{o zm=4quIZb9IYm+z?!NyH8>fad^<2OVlCb|}zc@5bQKRS??@MC8DV-`QaGj$w0N}b!J zjVFcRN@A))reeAgumx1=vC3idkC0ZkE<=21%#f-K>RhNZ(t?jylDT;{$_+7Q5`s|u z5x%%ysC>N-0Y_$PNdTx}G{Y^tO~Y=Q-#{oo7ax0=lFb5VYYY0d9~ zFuz*2)n?gp;MmE#!b(T`W-mqft6^vBnE{U4Q_Vd<6fbFD#sKp=Spe%VgQ}RH!D6>% zOFQEtMXka)t7sy-5N4P})+T{!x&x?5ng zgbb(;#T3%vXuH&NWj08SSVA#V)C6af^2WN=f$~;VhWd zo6VAVLXK~sS!Qo>JHo#H-w4Z#MU?J#^1CGD_dlfPJA`UFZf!wO8N!NFF?%r8ZQw_R zE42$dhH@0k5>VrP87`-VJhLst9$=hHnfOc%2M z56bl5knVQM^ibw)JHsCSpO?dtA-^IAy%R#)0$wpwjmNdKnK;ZiO zVWNg6h%rBhJsclNhWRJMTq7QSZ z*ag>o8BTkbD{XX}?eNtqwr{t-BX93e`Nqm!V@*glzcz1sdr`Y0IvdgdiqikWf0DlE zybk<-^ac4pGU7iwX0VPSXU=!nXph0SWThLk*XDW*zSqO8!j>0P>tvukrlN~w5qXUB zu&q4)cX@aV7~ee^Jy!t*)1T-0VZenEYBzXTeKHXLmM-LVvZL=em)OLncb(Pb(ZZQ&4#A? z@0t7CtV~Y$FVQ{ezeM-tt#n7ia^Ai%=P4i%$dGY2iT#hq z{le7oss)|OxMT4me=mw$?Ro-yNeC7jzt-}o{Q#K(5QPucD==EcoSE_v*Y4>xeo-KT zK;t=mAnoNg$KO=ZWcS9@BQ{@Dd<<)B?q6K`I0OFw6#s%m{FHN6i!Q`vxt~!1#9@mu zMLJ~`3xnry6?-QnV6aUroWcrwat7;h1wBH@y#Ke-{^)k3{Q~nY)0F$A0aa_G{$0Jn zx$^&~a{FKy|DbqfdMm&@iXwwVv8ZpK0>Kj`(RAF2u*~7y+{y8em&ZR&;s?uUIrL+* z)ORuL!+_iU3T6!ZRIuq5n`UqY;Z@wU;+YSk-CZ4QJbC8%<2i}S2^HHe>;SKS5NV_C zM=gaM`uQ670$|cYgHy-+H4F*Uf;FH|fscw-EM5FnF)urWd-AKeNH?8>=^*W zGaplfF0Pz5@G60ANT#|Tgj+up=>xcOP?3xk1K(`2s=6n*cve~P3 zLnq0ie>E~_uE9?gQ3!F(9J2KR27ixN>kI;ZbSq)N$0iDiViXSmn*)G&0Qgt{5KnNP z#xoxW9OZE>(NmzGAoLE`d=f4XV$k*cPvQ4sj!`gd`7|-O#gMM&e+Iu;-K1{Mf^N%N zre{72D7G4y&k@VIwg$L4qW6oj(XLkVuBD5u7JLS1B%3jhaB~H&YC!}kqLFrwyECvi zT0~eB>4w4D1N*OtaUuGt%38!iG}-p~rt zhm$n*T08(8K>*&jYto~iEX@-TkKvCb8tzfnJ(@1#iwB5fEMm2FkG1Ygt$Q3@mJ1eu zoKHxf$;Ok#P+@T3# z%oawIeyHbsA8Eky7K1%4cdwLu;wq=f+31$f$<)7$h)rh3t#83o#A>k93nI#`_Ri+HmV{L~%AL61OvL zjzL5>JDE9$oPPzRk)G?+zsf`?CfBWh3#cY#4TF3zgLh_{qFj*h%K#RUi$}(TFF`)} zhiioq*mR-#MlW5!59_Q zY%+5SNY=jrb}D0ollAlPHRLwWfP99$=IIpEJphj@_*?~_LnqaI9i4RZd^#wnH;9{V zo(C5^^1KN5)O`2W#7#FZ5;xPl7%u5?Y_kFGr=@j$ zaA%k(#2um#;>GNK#(#ebg>J*X17UGR%EBC)WNgFQN{ml3hVbAzd&B*V@URNGfwqeI zvT5eC{zV8|sFsrSvpIhg;b;)|MJ%O--Qzg_^VydCBrhPAJtzM{i42V#G8_~w&GBxr zbJmOOrR#*xv-iN$UzB5;!RYTo9O2wRQgK;bq_V1E-~SiEpnn4t7yd89uYEsf@hWpU znm4l%6WRVZsn@YA*UrZVS!BqD#g4Co0wz&cJYD+CV^&koiN|3Da~;NyQh#t1&JwtL zrOY|7Q$(`uxVKn1O7fCmgC$to_+Mp1E=JfoBVFmif*n5KRw$aS{b7*tj^}LpZ$f z=A|5Y{7ZQ;t6i$}Fi`e-pu#W8x{pOfR%`h$) zEQc2imcqQ@bpAP*&_jzz_SLRG1oOe>UmC~yElAiea*p9WZi8v6$@RYlc%YFTFhc&V z0AOTx2H2Qj>xq`!uq|!_AD=_r@Op6Y{v#M}Wh&?kJ^_jxzn<&K**iZCv3hcEk$CIB zML<2r&og~Gwi|2<2X_NFJRgqXcngxm3I=jN4$BBbKOXQ)V5bc8_^z<$ycy~I59@G) zjjps~;ON`Pl{bEpKzfJAwOgZIDWqUhAr>M;ZYtC6`IXzdP)}QY-PDKoF zDSe!GEqjFbf!Z=jbUoPAT@!Z^ElR z&K4-r>yeH7oh`7(Z=erKcqY^6X|AU;I4Mao9dvI%YiGw@;*d1_qmH|$`Z=dGHp6kQ z6Iqi72#f7%d-gzdfF#f>;69B1g$P$FJTL;sovj&ayaquxd>w#}eCL-^I;hdPA=;vus{J+Bf zlP~^{;-6;`y6iuX627zLKY%d|!xGPUbV-9WNqhNQ@Z&r%jvw4qO9?xf!GA2yWCj+y zTh4U0yaxBy66%@@1-a#T*Stl2N8&158{zMZvzfs>VvIUlFpzt@#(0~>K1FN+*g4J? zTx0l7#lAzZEZB<#(9>*CG(F9Y>NM3Er-KSeu|QZeHiA*?7)UpQ`uASPy(I9z*_r*J z!2eOl-5mHoYszRIPT3k&KE>C z$PiSB9c0vR?D>>HXP_MMgrjpj{txsVXC4$4cj!9L;(s?3%0u}7amI00fzJ8(hYffu z9B8d5Mo#*JZsTlF_3uZ8YtpCR8?Ht;n1&5`e;zP7vm4~*-vOJfUOe+rM_}_^K>R!L z<2E+nyOc9)7;qjeFy647hid8{3IFf|9|6yJqF5|64sw4FQKI)eMJ0x}G;-$qfN!Z= z9g)v+R^ALzw@EdUc zL#`Ga-2x%xrcNRhh{q*SqxYk*@B~K6f0CWgLvgQ)%daQ!rG@2x3;A~&uV;cH63w97 zcq1TYjH3SmB&gaAgG`oay{YZ~4}s~4pOD{7NyXjhgs{*N{U({l_j3p z{vhsdjH~*zd_Mh}W6ayRd|0`*Y-`zVE4GdP3Hn)V!)f+sg6uB;B|w(O^`ya9IPRjo zD7M=s>MM|de*{|wsk^ZEfWlyqi%(IZ|y@I)T(gZI5q})IWqsQc|66 zu~Q{A5ajk?ayO`ftxy9=(QpNlQZ|TLaXOBGs5!I7W;ya2q1F=$)b$D?maz zOzk*9KY?tTG~|MO%=9nB*Nf4B=cdWmEVnpI^ED^PmrtGsHE>J5Xn%uz#Wi4V5O*2l zS`C;RPLsDTx7ek5n-}nRDGZ}KsDWGZ#ujC| zyv+~d9?!ToZ>#86?Pj;BySvyu`eV_|?kSxoX-)>85i-l)A(}~$_MduCqA;J^shNM* zT-M@sc(z-dt+^b`2drXjfNW~$cs9SQEo6|*hVUV(`5IA8wwpi_y!=Gc&@4*-tW+$G z{z|e4yUzaMR=Q}~Y(5>&EqT~PyXkgj_o->J+vgVhY<3Glc5gz{=MHM`g|Ip2HIG(2&oR9xk#{A-Zx=rBTMV;!zJS)Bvr#3waE{w8ObU!qdC z=Xy*JraVUf0%&gZG5(ra0IYb3UcVFG@sp8KY-QuMNTmK_RO6uuV$82Gg(26D%9h~Y z;H$O-1KjbKC!?LkXm?9AV$AsH!`Ym2S0I zqH;0Q`)+i^a5;R5*N{$@{)`V z%bDYt0Il~fK;6chNwe`*{AOjY(rvsQ{(M%(18ze~xbaR2^e+7Rw<0%k&&!$hbLq`t z8;h(=;AY%Gco(6|E*U}=GN&@@_kelxQ~V4Ub7l!3O-|qxb25)p+Y#}~@p#=unB96Z zqT6^kq9{-P{z$=9ze=PpDUlKv(I_ezr*r)JL%>>l6gW<^_KjVg!8!U>5z21R8I0^dTzpopx?S4dNg4 z<$a(8=l$wjN~ey;ku%N9>DB5qv9GsNf&!c0 zLzS_YVPN`jUuX?CXZmnoYz;Se`fy)r4L5K4a9?f>H-GwY*SCfnOoXfP)sG}7croN* zR^iVeI$!-LCu3p7wgogLmS+|u;>esb1p5^-bTi9&0F#cxD95~mZPM~*Sn5(3;TsZR z@nG8skQcuZ2E#tl&>NMBYiLp9$UYMmgljgnAp1=yeb;=f1vy|sk-O&F7UUcg${D*Y zT99)iNn*nVkUANV^O7&X&x<63Efk~yjklT7C*L1`@d{15z`7tSyy5}ik^mqc09Z{V zgm?g8g%N;w0JtmwhzEcV1OV{>z=|bN!~+0pl>o$pjSF18Ywd(#S6TOJ>s~{bvPnCWkde%j2J@+;VSa`ts8^=83T~1kM54XD^m&gVD9F515^#Z@?wpPIEta?9O%N%meT=zZ((f zV9j2zpVe!IikSxS{=a}xQcLU+5Rw`yX0tx`@M>EAAQCC!DD)^?J&tocHsQBpDN=Yp z6hy3dCA^si^Plt2M{b(8z?*6C*XR3d+_shJO!Lh(iFyda`#(dk$%f&JY^ii-%9F=) z+p;Envo-idXjhJtkw*z+}ooPt!MK$~dGP-c{(26+g)~c%wG?}+~zKOI)KCf zYyh9_RabeI4*dIjLWggEbGqv*sN*y7I01SOyxa%-E=6Zqn`GlVc1!TO@r>-TkV}i& z@B(mW+J6iov{vB;7EE4vKChAL@^FdYJ8%UaLi~v|7GNE@JDv95%Tf$#L{zR>OQ}1T z_W9;ucRuY?f4ifDV%=@|(WQ_<-d~SoO8an(S6=}+ak??rypvKKzaGCbPWv)ElbOXV zwr|SWLt@N1?0E4AV|Q1vt5}@O?8yL!A%MYK5f;^5?D8=)S}1mlv$ng(`iebE))l+Q zzmiO2XOcjxfw3Sl2D1@WbEw20|7tSmE>TcoH0U}+UEAGOU0duL|5`Hqk|;beG16V* zUrz>I8U-aLLAs~Ay{EgQr@PY@su)}L%|_cGL##jGMm0F*W^gk43{);N`Xqk!UcLT3 zWg15A*ppd7&p#do+&#OP#~OuLDm-uzJ%){^nvr*N3i!#6w0HID=9gk`wHk!#7>+?_ zOYo9!u=T^Q;77K?boX}k+Hv|b&&ytz?oz%uyI9KMR@-CoWHuKFu$;6XyhYK>Y%ycL zOe^jc+q*itI&JJHF6cE6VG}{Ivz9M*BF1KZbkt@SI}lOqeleT!ik$|F^tfOct1un7 z_o=Pki*THy_ws%hym2+QstN`=>kAlcmX#~FniOaGkH9v7%FN=d`m=!WeU(n#xBP8k(te*5^$O;QSKA%5?(g<0-j}zX?CcbxP@EL5J;M zIt-Zh-;D_PWWCi|41QVXJG1`taQwNXoAv)eP};u~!QxuRPQJexiDV)B5`ub4B$du~ z;*w`763QW<#r-Xvxmv!H7dvxDjFOT(X7Yv`Wq>#qH0kaDlVa042%uEPzYGB^EpFMS ztTeek|48xwA*AUuitN0^rC(_gZ+CXfU^kva6%iASyP~(DSrVJa*wf_XX!GRu30|Lyv>yylK zpobFkg`&tq?>K}vI@3eyp3mRlOix7L(^UR~RB)yzO2E@(o<@qnnVz4M>+xVGhs4t& z)UZ;Ha;ArZ;+Y=G<#=o^_nMo*GD`Ymbkfa_(+LXvsCa=hoRqJ4P~eOq0Pz68xB?K* zwBYe>qXD?6JgQBR7=e;R2(hoV$HDJ}o+fCoDCFtdw$Sg_WC zyCa33Du>cg4bga_CY945UkaZ3L^<;XX^M5V9Q(T#TtTlsK_^hCqvHz20HQA9f&MV4 z0K_w`{wxTKutk5KK)Tz|pWxiz!Z1E~XL}SV%?@#dbUnqIsBS!ofGxW56hH|x@hFMK z)ZrN^U}nvKmIZ8&13o8UX3+l!!BXxNi!T&e?ng%DuIK(p+VlAv*ocU@*N`Os30f%M zh`J}z^#28TP`-aB%aM&>ye5B8*5pS@N^At>!ZM{8R*Q}JB!i`zpQ4j)ewt2Dq{qaI zl;NZV#e*Vc3;~D-0LB%7c&07m9mAq%DPtF{>Nd)lZA6QW7z#^y~8lv$;O~gh}@YE;DnKpuARU7dcMol$8OD9mM)p3Pl08tn5Kz|ri0OFZee@s|} zE&9{7ZT$&s#G)`hlty-0+m1ygj$mh5wMlJ6558M;qnE3aLBBw-lsm=Z3&m+|1WDttAASQH5fS$^i8jze`9{<|k*41ccu>CmWI3`C zWUa{`lrQ;_k`fz1xv)$rhSilTZL2Zc%*VIegNanE%4ej1Z2rKJZH0uNw819~eW;HSj|8rnL3ST?`{7(Q74*=H%0Pz6u`2Zju0KO0a!~?(= z1Auq{_)-865BB8i;-Wi@1OJ_r)#CaH7@Oc+L1n(zXs{oK-L#wo9*6Dz8pmrJ*!9CT z(ws{Qr$;hAyI+{T%*wz>=RfASGO^}1I5irLBFx7zEUhie%1Fx2l*lX!_UwU3R^|$` zGTXtUB40q?IByylN44`15_y@0@x|B4%X#cqBzV~=HoUUmIMz_#k~u1pL{rlzoIapW}~j5D0^Z_d`>F-_qg*I_XOZP|=3{W%UE z%|`rSzdmOmH6cRd!aA%ag*P)+6F(ifT6-=pQ%HUhIm_X7PK3q!R@ONT<@626#+CUq zzYAzw9dEkf;wcYl|9jxqbX=J^bQ_#;b7i8|mHAt+A;tS`Ql-q>o!5Zw4MLZt={9ba z-*3w=ryr90O!XjFC#j{Sl6x@s z@fz45gJ^dm=%k!B{T_T$ZNvi&|9$`v4*)+10OA4QhXFu5+W%dIynR#h_9I|pXMW%6 z%DG!Yaqjj}RQD-oep}Vf z47os~w_{6ZsUv=lFAts2cdPQw+EapiF&aM!xDyX-ElHOA8*nFwi`CfG_^S7U4RZi| zm2cyUZYH^thU>NA%zglp(b?6svD>GQ1ZWsHwD+2$;fvD+uoMF-5u7%v_aU7o#b#Sy z=6nuny&vW7`d9E6+rBuZw^ev6l} zn#prO_0t$=g$v;E00!@6==+PhiKk?0G2E2`7-5QA24 zTnwboe|YkU21<%=X|$;xWkv6;Hc3J2#U_V*{>Cex{KfhE>}qmS@GVfhwM1pZg+utY zvHiKIJUfIDgH$zSM_%<$%nI$tFy7KuLlYVewGOI@VMPl}iP{WR&^VIS9d?CIi{6Hz zw(7C=p&OIIv?AuSAX48C%wf%7FZf~Jp@%wNzg5au-Y3}uA+!)A)R2@l3Y*V|w0YTe z?fw`Fs(u1~I`SyUeL>3KSt2ohUTIUmPN05?#%S5w^mr#7?nOgeHiiIJMUJ1u3$YJP5Ho&n68##Y=RsSCCWsmT zMG}2_geHcs7*=!UYAh)g_y*spKu<7>l`b!}hCgHMwcJMtdoAJt;C};vc(6BTJtA({ zgf0Vvnb+d0f>nXD;0}!}LkHws@p10~225DP*svVEdiIgB>E>IWJ7JXa*?}^f-{d%%cyDbb+haNeD8bH_eESy3QGJ`GV`!=4W&rpc(dH1|Qmod0Uh5L@Lew8u5)5ZazGJA}|o=b;gxCo?|zguKVRq&|;QwSRqgsO2Sh^TesGb!Q zk$D`tJc98yB2)*=cX01g9Q$WrWeahky4+L|rcm8QB{s4!C=lvLETcms9m8^e6P1=R z^v*kxNmRn94!;blgLnY=RR9nV>c<2#eFlE0rSfrp{NoM$z+inGuEk$YP*hA85R)=* zB9wNUeycf1FtO^?uRrx(SGr?;(m zcS!!WB-49`j@Jl9dViTNf35K(y{*MVX*~#9V&239z(WB*JcnUV+Pfile+c!=ypJWI zZRepVgYQZ`3DI7?0X(WHAsK%dG28}umGNLZ9^iT#DeWY1mXW~q_M1#)7`F5Mzz^%5 z#@$d4?*x4h_a}ML^F8(wk1)+PTzkge-RzER@7nIv^4q|cGJs)@K}tUD0++-`Hv@%< z3I^vIbgp;JvO|iglrY_m6T_s5tpHhnQIhcvx0u}q=fzY96q& zrN*gDCu+Ary^}q}a`6!5?cx>%$N3)REj6`Jouec&DnzygxLd}}Rx-V73z^c+zwSW< zo-s#%#`!+trDVHM%2bi0RRPf%47Wq}>op*8=jHN!5vd0k3BG~I+VR7?n02f!xRSF=ddxK!k5crcZ_;sIpFyZ9uulD+b4 zMi6+U9V)^0V8zWLx~~OIWm$1eh#rWc(XsWTRyA$dGSP~cU^QznkmeXR38!hY^J5VY zpC+Q5cJ4%XbR>*f!}(`I7Ke}l3z0TPsONY}crg-2S$E{KE5APZ{PUPJZ{QAxa)nuKv69lN)zsHwUb@2f3Z~zbw0FML!@c{6L03aR!9t{BE0pPI! zARYkz7y!frz@Gwuc&KY=P313ahp&X#Vco{5I1K& z1sCms>%6*!o__@}Mu>X;hv^r}o_`hnLf-SQp zza+U2?vYKK&++>+_+kCYISVlN@&l{aTaDm#0XJ1~{ZC`l zT$}5E5>9)z=H*7(&CXN-&@7}deDz6h{Lc`g^uZs82S+MEu8w_e=;;zuGE2~rZhRgZ z*nv0uB*qiT7+;8D5EF}`U4GnLJ%$?TUkg6Q|B{URMaF%b^!SM}X*4|Dg|32m7hpEI zCzDaW6eUMYEV=Hq>wk=i{52Wl%TXf4OqNG*;_BN^tSfkvCoO!E^SuU~>)j%JJPnP-8Gnz&UEw zI)5{%<*|`0FPBAi=Q4arFpX_S*~StSBAlgka`jJxUko&^gEPT$#2SRp^F2X*Fjr&i zub$bt5n;yvjxdv%JDAIsBR#u7LoE8c2{cD6Pmwf7EaCy+=>Q;}6=Aje2BP8&&=L?s zJxa?xYphCPfXC2}j1Ke!=Tfjguxh@BxSm-`O$|@{)Hwc0f`T}YGLEDN`aGv{x~;Q@ zITaFp*r3MaY$i zOE9?2X&L?d!xD6%9GQywF!F(Aie2Lf@@Jk@#DgqljiDF$F0S7W^aRyUj#k`+FDll| zf>kW>K##8CGKXirN4%7)>#TtLBgp3NSEBWmJ!dnqhl?LF+B3T&E9S3A7=q|bpeh;v zPMgrIAR+NY3VRpvM+NHX{|KK(U|7WC2W~+Xx5w;(WJWT20jz3)V zUW!NLrDK^NlZVCvpkrg1H|ki1Q1tcxE)vTwdr;*(eLU&wZ+E20GvMDZlO7l^kL>LK$tzQ`trYYNe?I#0590fDjHJ)~pPY2rj#n;Hiu zVJ_%s-1j0q{$WLuhQ{y1kfnF6oY^YLVYA7$8Mv*25$s*g^kRt8GNaKan&_F5{Xqa8L7eABO^ddhGvTdl*jepZ%?!_F%}D6W@&mh zdGlsx%nGEed@_>dQyCC;FpndQ{Cf;k$N=r5c)$badW_|z4|54jVfJFIvWQ6Jb7?0o zXX0mOO;a*}neVjuE2V%w`crUio82Gg>2ClQGP4)EybU!h14^J8Fd!ZPY6K`BZ$Nzh zDUezAMuzo6M}cW$AZ=_zmsle2Ov&uYGV+=v6d*WcoGx&$25zusXxV5Ce=pD=dn4qA zGI_nS0$vER;-^;u34T`NQ3fH1+eX@L0HNqMXb6N)T-(Cf+WASF9gz>&jW2Z~V1*%+ z6)Bf@20YYvMX#pGw$I+k%;wIm?+vD#JJT!M!(6Yv4xnKz&4QgaXv+r>G%%y5R`-b4FnTHAD~YEv5WpdIhD z_w{nm!9tAXeo7jprf6D8R4bWYoI&#d*pqk5iz&=P$j!v&SAf-5A&01=_XmE=h7j)W z3%G*Cy9H-kYP=Xh?jm*@vymYwnY7sgF}RIV3!taTAlO?$M8@9_GSoFB&DEw~E~FHo9AAHhNkBJxvBdB1B|gR3cKp>IX`0SswoT(Z{m2 z?jS;??v^G!Y!s5(JvjsOHywfCXRF|)DE-S2)jt@Ky0h5vflDdi^#>px_z#7DHnY&;CKCue^W>V;Ph2sk_hK4F-_-|7=vR>tbsc}gHETswS{>g zHumntV7}cGwO#%(a$AJO>_7%NIW>~+O!chpO!us=?f@fo!ke1kaK1;Ep|l zd)Hue%WVRiPsEx}tHR~jZp>mK>cARY=@CVp!_O${Tz+cQ6y`iJ zp2jcEEu~f-hiTEyRBmpm{%Q=#S9>Efd)X8*Uz*`;-&mNx4zD|3>Mkr_f}tfY#IyOs zopd8O@`St<+caA^Ue>1h>c|%h$Zq>4ago0cWl}zozYb+mK9Ro;WfHV|*DCc`Mmr@G zGTIrVfsA&>Xdt7VN<#wATN5NbZ%s?$^VYN^KW|NffvqGzZ%qpW^VYPmFmFx7gq=k$ zK-z_3KDF|@m|^Tp=jZmSwAl>c+Io6T4n-T--=m>PKZl-qBd~Q+<=+@qc^Ost zM?rlGRqRtZ8XkWU;@Z1@{}dl&Me!SmuXCI(PF?lxuH&sac!Loyv^n>RofZ~itvLpl zsQT;)O7rDv&97jrT0nZ(Q`O02wHX4R+qBHUjKMu`<;6+rZWFxBITs@$jfgp z%;GXERrIda>R-&N>viS2@+O1);^s;J7|1-26$82myQVvfj~sEQyj z{?^87ij=KQJj@w=b6^uc=nQ@}u!%o(1|JLjN6y&c>>0c=S^5<3fs3t$w(a&K#gV4l zP1ScoE`~fg2xx6%#(#;hCz?i0N$J?1{V;YOQetv^ycJOx#{Rko(FWm7r@+!f^NyA1 z>=Vvj29=2#0jo1qY}(s>EpM3Ejp?;lTFNJD?qkzNE4?(;Q>a2o2*CbFKsXa@Bal67 zzcbD;&|Uty4fbB#2D>s^a=V;6P21esBM94O=?6^dA53Y>H33b`b2qZv;BI8QE}Bu< zjueGMQK=JaJE7ApeJ^!P3grT-!plZ>8iZ=K6MYBUh1gCuMHn^_yy>9)nl#97optS> z*uGGOb^&ub&M!odo@05NC-J+>jEZZrAXLku`nQpy*#h|JEi8nRYDU~(vCjK1g?4c9 zP^%Kpv4=%n%xH0~V-+ebIlI)ItG>#WfIL>bW-Rjdt{Lm?%45Eqwa`|zwi4T%uJ%}O z(N;^XYq%|ybrhAY9X-P~?HLxaXvqs?i`k_gh$$5gXnI~f;*wvrT*zxab zKUd(LG8#Ppw}>{(`OO*58Q|-_(4J12-;|cPty;@UOWcm9(Xa`=FyfV}GvUVseF0le z42WRs?3NvKKKIpU{lggMhg*8Gd^|&j61XQB599)TKWycUxu{OgJZJfF+D^M*_1Kex zHrsQsUDNqr@MQNWb5m|=ByUC$eX`AUWY|}bU%4!X>c)j)R^(!8Ef$YNB9a&MQ`4m- zM{%)bO{`+>vX}i>1Ae=+sF%eo?v2q=nN(jQ7|UM^Py3c~F^4La)hbpW6IeUeUU9{M zW-F(|j(l}3T2c->c;&G_h+ALm9W?@P8ia9oK^CC`MUZ?Ku$tbJeDCQU0i3qQ@%LRvjd%V9}WE1JEslkIA#vU z6~Bd!{W7Uz9oAm-%4k9s?o&E|DyFJ<-eDM0;$259+upU?3Wd=+o~q2-5vz>8{1aI| zSk73C#&rZ!0vwWch4lTCfUe*KhM-{?h|XB3I~~+gaLvhxiHPDj;+W?!Yg<1I2`PbK zuHc9@fj)0F|J2uQ=ZzAOP}`8wboqb9w)20=wE0(PYyJhA%)e&biXoPN3EG-}&P6?k z^8XdfzvNAqkwKYFYSDp$c{3`92o@HOCDh;`n+IoDY_*y#-r5e9xg=Nr2uh{NSP-KN z3cYJzRQhOJBz=zQY3*$KDycAis~nzc#XrOJ84LA=HZ$VL5Cpg1%^3}o;xBs7eEDK;lrqEmTYsnqi0%aYXQ zMbwCaXeUW6J9`p9y-yk(bvYLJFz#c z1g_H~76ZUuzYl3(J$nwE3FZMLaF!15PCyn9(8l-rQrD3c)+&^5>SE5LnAZey+upF? zZC6d8vAcEmuGKgtk@`zKiWI5eqRS z^SY!r<;wt}cdZN&WX52!&2xeiqnF>;)t7{y~gLr_R{enE4BO#OrpOev2-XV=`rhRT0x5t&ZWTZ|;Xg`^cKo;js z;REL}R2JL@fc`}&OG{WAZbN1l7_DV#9G?BwmPGveXW_n}+)Ih{~p+etS@E)6jrD z;Ie6Gjy*27sjp<-h{TfP24|Iw8@$1GOWaP14)xmU(4js%5enjZl7__f*bIs58JSH( za|5pC1zgP!xEjodYz+oy_%;md9Gus!Ay(i9b+-z{ zLBL~9)|}4_g{DNavcr{E@b7yor+U=Z?7?LGXV7)^8zK;TaVZmz==d8$i03!qx5STG zHRg}w(-zJZoJhu&nhOAu5;7Bv*KdUw%t{aS1{2aleZgFGDNzhTnQk*iARl4*d2s3Z z4)d_XGWq-I%Bh}h83eaTN@Im7 zu7g_J_;FZ3DF)k$9Jj^A*5v4m;+3S1TYH23u6CbOU$D(dtGa4n;$3pwX$c!(UQ5+% zL9kJbzu8yW2V1%1A~Dar2^s?%oOXPSN##7EE>)(Q%h_(Ho1=8_TsIv&(YZHVPfo_^ ztRl9hLks1UoPzZvCJ$diL0DR839*fE=zhuZvgV#lBdh+sBv~O4C!>i0a(S`}jJY)7ohT>2tAil|?Cxt_e#sB6iAZTV24?%=uUSd%QA>I(=1c?ER|YIw4&Kn(OvFFN-BufZFW<5kGqj7q;T^U z$`@L306-Ny1WDJ^ZupD}DmK3{Z@fRz2zH4kj>V4uu1gCw=+%!~Ko)m4q;L#3m>8kyRWI$KQuy zj*jE*>e@ON_UQEu6p+GosXRp;)JaFqKTB@$$SL`3O@NjQ2Seo;uba(8;l(DWosWa$ z9IQDHwppDsyNlQ{Z%lg0!s@fC)~{JeA_vSK5))%9N-T+-YnBTVhYJq}l2>e~w#_%A zTFjWSrfieZ1`CEeSvLp8E{u(}q%_rq| zgZ#dSzf{kI5Wey{bv-$NSerpDCfqe^5lr>Sb4HNM&D0}_!$X=U0IOeJj{jy<-C7QB zGOuGCw1?s%g@c&_H(-eefI|X+cyR5+TM)I$4^?9%$o(>>A-(@&daZcRXTttl5vx#L zfO32reCUc3iW!Nw;|tC^;P~&P-!T`#8Mzmepx88gdAN}So9>TC6tjj5V}26nU0lpD zFFst?5eLlI7Z5?a_&j*|ZIYMznTS@%q?$*7@l3jTWXQi~zJZ9b4eZBbh9C(tsc?(? zH&CwQhas{|+Gz2e4$}1-fEbz}1~*5qC*)nohIt+nF6KmhR*wVO8xkqCl07_0_Kb)u zF(CWesboR)n+c-+H&ETJka#BLOvvJQkVXA0L@s2!=24`TZXONCPzRIy?n7d(p|r!N zAwtfz;J}Pe^u^30%Au+Ob(ejCb78bNqJL&g5+0d}y(DRChn{)<_(}!`X#A^y<7RG# z;ruu*q4uvPY;pb7a3&~V+*pG`_j#Vlghlv62+02teyD1gqZkf|_1eP+Fdsq@?AK z{aj{$z}!e(zbI@+ZVFW(%$$*smm8)cMQp-AI1$bC$gLEc%t7piJpLYX^ETjg0jFSw z&}cE7|8C^vbX#y?1M|>I^B%w}GRsqWS*&2uTQ+Y*ywxbfjc_NJMVxY}zYZUjFKOQ2 z0{{3+CGQu*8|B@o@uOmj!Fx#{2k}5K#|8lLz#N@~piO>Qb2MOXrf_HnR!hmjPP7IB zi?@U#!%2!la72aWZYDqxA;QYxONg|np1BZ6wXu2UC`;ckJIQ(!l6TDoKx!-1awcU6 zZRVSR+j>|Wu$w)AxS~G=2CbmtxJGb)rCeJ z7iffd0C-sd5Kq+GlB965lw{E*AThQVt^;8@gK{UwC4dc$v=4Jm7gCy&twJ{MM`|<{ z$Dq;2c@oZRLhy_Z;3olG@0ZZ>YuiIwZ-;!Ljtqgd%8;g`G&3=pp*@uQ&WGBL&k8Bl zoev}S1SMJ7&lB@^C7QzedjYLj1HvA{_*#+m=i!ZHO#`wf5Q2EVI;Dpg)?{3i!X9Fi z;le6(D+@{bqnsb--@ik^tzU*-BsS@=E%Kj6&&OO#zAutajV;TM17bUG=F(Vs8X_t$ z0Wb7~O$J^*hET2pXo6X$LHQH|vaTGcEMh$n>6veX_wf@%EZ;(iNGyt`fwAaYlW5gY z$Zjl+{Y5ftTN&4U z8DBwdh}jNL_9;CQx8*y+mNTx{@-~Q;QLU<_voe}EzLFBn4h7CO8gdQx-zVAzJhn{= zajIGcv~r+w5smV?1Ns58K-aj)%cmr{0?y;Eld19dGdogNdFNx6Ct+O_X&^XL8M5V?pEEOP@@1|d}hEL3eaf)e7N0sB3Y zje<)s1ZS}df8wF7ITP~zgVe1Hb(!sC^FgSNiq6_I-^KHh8K1(8L;MdRAnxwf@DyJh zoAFyA5*~NELQzRdC2l-+b{E%w3&;dDvw}sT&Q$%U_=f(DQh(P2tolpe_*wXw%sh<% zG5tm6&R}e~XVRr;Ukgv5#7$zcZYfC7t+aE7)vcDG(Ml5^4Bj zO8qBhi1sHhZ<;dcamg5ZFopg=r(?SNFe0=(4c8mj*GHz}`=aDs^GD#P)6v&ZJX9)r zRH^=gpcoGG5C3gGg}b2ONqA zfU^UDcmQB*$%A+RI5z-@hvnuvHRS0r>BBw;!hy1X7`Z@wnFJ`axD$2mUran>o+kjT zdCfX#LG{j~lWxKuSw``S#rq(f@D&S&6DGt1CKy8i;sJnh1t1>svX%lZ*W=l)dHrp{A*(1j|!MF z^EVMJcUV*OzNE?Y&}Wpt@O=ZO==uB&?kp$QgHsq z0T1rB9$;p#3lvu9sh%heRThmW8Y6d?vk-XCHD%7b%PHcQ>bY;27Uz%DP5&me1cfTL zecTLBzt75Q4V@ocaRgwvJwUykjA^4LA#VqFBDQ8=E8cldUWTskS6 z1$hW4>;D--%lS{>w}0839PhqBo@h|ZSR-}Jr@(;4LyhfUX2dRY8k}|>ZSTkDyx@&dCuW^_~?)eQiuA*G`mHn!Y zgDFLaFO2Pue<@&m!-%{tFe2gs;PnAOJkfBV3<<)DE`-Bg=Ad;K&_yGjfkif1{CFlu zsT{K3&U zxKF@+gU1h=IJjTH{eu?_u2S%6LSz8o&f$UbEnsGFRva@&FmuWn^g4s{;+VODnOpuN zF+0RD^8_=mJQLM;aAh1bUoi8_M-ekqF=q$|gLy#>=F2An*Qcnn6jcCf=I~&ld@`dI z6Sy|TwUy5%&az=iwkyf@@}Uyw6nJ zY{ktkzl69Q6Iq}dL7JuV>xf&Jz)_ii>n(qXxFj#sDB$|ac$ppd-XyX>wL%v9%ijks zS$I?}L>nmokkJMb$x*q0n^VT*MyOp@np7{~=9WDVxMZPI!GN1r?jde=f)!P7ejKP|mX|7OY5A`}B{^KCsAc8n zB9xW=u0TQQb}i#lgjS{7O{48r#yoUO#&%cK?qzK5ZQ*_oMeR}Uk5D$T<(k;?@*E~+ zO}NF4DsHsAKXKNITHFf7tth{QI9qG1^!L={_AI{=xMZ2_rKr8icucm1|GgEpcX|C3 z)IN&Zr~KL}sFjLZSw3qDYL%i^mGRtbOIrIXYTxqNKqZTFKSk|VK5t5_{S~!;c|(M< z;y3^(l-U90*8zpS3DRy_+<}TauslIrTLO2G;tnd~a=j2|#dxqLcX0XgC^?HdL{W#7 zKR5+-sG<%ne+a1mkFfI&=<#d+xQLQ$%1AC0A!SBL_Ffs8S(S_i$_S~9>{WI)k&wL= zNoKa9jBK*EGJog&+{e}Txc~TlpXd8{{eI`=I_JL5yzkGaJ2~cLL)vSVwWoEcOkE5* zXk{HJ8f68QMt0Q7I?{pvl*yKK(yHr3r$m{$PIT7(T4y?ozb02R*_19?Sr|v0o5F4ldtvOXk!r}4jo zp|4h5UpkXhoxJXTT2VhbpHn2SyT2B(KP4lg+`nX*n^xvV4^gHbXa;B@2ausS3ajhq zK&@yX<<%7p(uxLAK2fBupM$lc!DK9oWVU4UhiFAZsDLh@yH?~*rn-P0T9F48()}$@ zt;mxK>xzbIMMJ5GuE5OEJAN{d$h9}&KpCufrsLRkRO zBAqam1rSB(glQ~*XqgaX@5?HtvjC#yI$;J2AX=dl!dL*&N}V7+SC^LwqE$L!77HMX z)CqWFm6j+Ft=0*1SOC!)A*h+0%L0hj3qejfnTL5SfM}yG!h9A$6r~duumGZHov@Gv z5N+29i&y|rtWH?W0*LnLgm4x>v|lGgumGY%LXg8%=3xm7AUZAtHBn1h08zXU)Dg9e z1rVJOf?P{w70X!wQKGI5D_8*0xf~%(n>Z^qp;%=C(Ip|2uc9rkvW`_80z{v4LP#N! z1rTKmL2d@Jj@6nV>HyIn)M2gEv4%r{$Vxm{QU~2y7C=-*2(k{@h;=N0sD=>K-dN89 zh-wQ#o-$;F4J?4Dp{@-ZSpbof5afO+BWz*;L@jd!nTXArAQAzh4np{Q`yfL^aR?Cg z6^6VF8Da~E0MS5%kQ=28v6VxBXrwUIR7JA@qR~Q7uVWhvAetZqb=bwQ0HVo4PzUaI z7C;mv1U1<^SOC!sA*f?!rzVJ0foQG}{@y;wOvJJQqNOn8DOF}-mu84f0YqDJDv`o& z7C^K^2x_+XXo6@3i1wfk`4C99VlNvYO8QSLq_K|;5T(M9JtmF)Y=Gzy4EYRDHuQjI zh${h+`2E;_^C?3dyATl!kcZwZm0YoM_f~-S)mkAL>GC)*N z2!HQhq;ZrD5S7&%$JhW-RT%OHTDJ4JW{67#QG=XjNFj~|5H->X@hpI-i4fG`i-)XQ zDnQgcCxX0=lbRr|6hy6r@b@M`HX=bYL@PnmHz$M?PO$(YHzBA)D^U|f9UvNlI^_Ma z3~`!6fJprG@jus*!~%#$2|=A@XIKD{_~FsNGhJTjSxpd)0Fn5ax_^hwISv6L@pb3F z*CAVZo&^wzFDCwNrL5zECWtyfB)*#T@36VZ28hImp?nuEVhhTL`{UC9-f}F0HPK;;ROpIYO516SpZQd zo$!(c5OvcDuUG(4FP-q31rYVu32#^c(O{kMmIV+E%@O3}e5VOwa)M~25dKb1X}o6x zL=#}hM|{%wzy^rIV5sMTk8FS_Tp!~T8z5S*Z^vggK(rHve8ei-@r4Z#9fl#FeM;ji z8z2(D44NN1O5+rTUWj=DV0ita%e)BHW{5o(L=A+YHp7HNfT$rt$X!`BRJ<8i zUJ8hM!%#0){1zc;fXEw$I!p_)0ivn;7=_pX(J~n7)W_%X+6fv&n_;M3TZ9b|9f2Wl zYUH&PWdlSPV5nVNj13T_!BD#ezur-62Z+AFke?^WTJRkz%>a?HsjiliY=FodhB^qv z4}8fOAhLp?UW+*!AgTvL?Uzz)fT$e|b-I*h14MmbR8WqFW!M1GL>Thvg1p+YY=9^N zhI~LF4GT6vbXaecV*^C@V5pm@rDlkM45BPy$opMn=xnQ21| zL{>254Uo)76*fR*r;lO728bHMP^Vl~HbB%?Z&YIgM6NK@300j95P8B-2eK_2AQ}fl zUBzl>hUk0{g$YAl2<|~N014{3&6FMgD4Jl z$Sq&iQJX`6=!`JbXO?wX0MWS|LDo@M6T}e-L>Ewp+VS<+08uIo_0AVxKNRg0$pX;> zVW@ZT^;rPX6CtQGx`8H$R)FX^>QFn?kqr=i)f)}j08!q;B8D7XGFy!_L$nh_#f2f; zDU;EdLx9K}A=EMM#0H2e{Kt@$G|>!E35co-LtR&#SpZQ@ozRp85Y-ccdN^vP2_jn{ zazG>0wY)hSAZnpETCf44t}xVfxFs7P8Vy5T%UiJlqEHy>{@9ug5G{kDo(9^m0iswK z>P&0P28hnXP`j-i8z6cNL!Bq>HA8d?h+YdrZAJ$U0iw4Ep+2$b$Oee;-P?bLS0~L7 zm4K*_Fx1Daoml`;VIinba=WkqA~PYV)43}PASxvUH5D$JAch8rEQIj)s36B@Hx2Zs|X2_g|7YA=MpH&il2Uk(AHp2AS~_kJ7#MEwy$9X0*g08xOx5;x5dV**6M!capD z;1D1RMF=^EWIG3P2oNn3hI)n=#34Ym8X@G@*<^^p90Eiqg`xKO5Eej`psT}O6GS>e zbQX1}E29S+Ai4%aF5$8jo|++Y0ip-OP`8PpEP&{VPViy@L@#v0Fcv`cS|MR?>0*E>aLEX#zSpboXE|MMl5%c@NHI5t2u42HT7jb{Ty6JV&1MkcTUqEHy>DJPH(5Y3074)BR=fM~fs z#w0dCvHwXp8KM;+Dp-skt;=qk#vwpdQV9QS+tb+qkv$CgMIjku1{)yi0zNC3X53)k)sgQQ%JZb zhyey7C)A-%rU*7b)CPt+WtXr4qOLI1{bZ?Th<1W#pfJ>paT$jIktagPPLa#(at;Ba zF~U$Ubp;C`3J`*NNLZ-};!;6033bTDUe>XSLx3nu80v>mkt~2{K~5bq!fF;kv{VS{ zVP}mdh(>^D6&hiu+~2Qd14QRwsH1Nk8z8z3L!N+TGuCT{$Tx^y3PbJo4IBbQZxKSh z1KY?UK=e}>>ImP&AwXnULWGbrUbbR0hX7F-VW^u{6bm4t96_!sTQosr3q+MshdM{L zvH_ynFx0z&Xf{C95{CLnZW|jQ>IFj`Ix%d3C;*1quiM!G(LxyNeBZ$ah@xSrH_kiR z0MQ{BYPZF*0itU#)aOUL*Z|Rc81e^UWKMUp0it3hg`uw0d)NSx4GguGy=;J}jo#SD z28f2jkl*-~?by!-h-Sl3*Wm+ffM^*E_36+-HbAr$hT8jw*Z|QH80rW*%m#>(V5sBc z2pb@}4MWYxQ8qyI4Tic+A7cYVre?xWujM!!ASwq#%|{#?AgTsKT^Zup08v92BbC+V z1REfV`cFILtUak2V(kFYL1Cy9KY>GlC>|ly)%+A2AWDa!ZuN<5faoI(b(=oT28i;R z>uO1214I>Js4>p40U`&zah44bwTGc5{Tv%0>IFkh`gt}$FhdL%k2a%>sx*grK%FO%ucp2BKN0L%qXHX9GkLFw}kF4jUla2tysDci8~Z zE*R=6caIGa9n-htJ{ur914GSd1{)wsgP~4^2W)^S6NdVT;dfT*56#&b46)C`9D5y=ZSK-2|> zn$k=*Kr{q~dbKav0MTd|YSLe^0isYC>L&P_4G=}>Yk9*4h&IBIEtON@t!9Xh1JMCt zsAr^i90Ekg_04$C28b@hP*;}^Y=G#A-uTD{h`z&6+wqAF5Sf?BxfHqnd}aeg)nKUY z_`(K=n!=E4hfK#;%@FATQ4e9L6aO2B08xK^GqTtKksl0olxDL5qDe5+#p630APW0W zEwZ6MG($8LL@R}%9>RaJ0HSp{f=t&hO%O{Mh@w!3I^TY?0iuI?;}07kItxRcE4gz2 z{R9m}DKOOKTD(A0e#Qo(Oc?4+5brya28gm@sIy7D;Yu1HGA=6&b*_jPNJ#@kWnjn{ zGNa<{M=(T2K~z;3>ccwmG7c$#sG1PeTUGID4k>`hRtV|=O1#5EHUdPo(Fk>fiuZa* z14M0MG*(V}CTxIcI*bO2A$}j8i~*wKFw}IJvH_xtFw}>e1=#@6BN*y^Pa!ryBz|Aw zzXo0$pnZ4>q7oLuP`kbe8z8cQq23u4WdlUbVW{mW#s-MQOR4|u`r>SWNW2pHU!w#Y zAQG=%{kNs!ce2WB0a3(%+98LJnP!OL1EL+mP3uY#2Zh{S6S z|6MssvjL*(Fw~TmVFN_ZV5qaHEE^yaFM0d79TseWNW2P(*C%DGYTvuf!oh zU(P+Jamtbh)97HoR!9S5R&dIN8U(dH6}#QR78-65UX z0MT!~(Uc7kl_)P_r~{}O8z8cVp?>bsoDC4Q(i<(<0FfsQwO?AY0ipoC(TWWaO@pB> zldahR(K;CNlVv$;+pqzmM7`0L4G=wtp)R%U*Z|QN81iQtWi9R50Fedhj1FvosD<9> z$Oec;z^JC2TspA;Ez2_SI7}#1aIe_rg$j1y>e8^ic@vuF#7G5PcJZdZ_Kq0*JD7 zRrFy2MBjB)^ko4=e{uvlcKT_8*jGSgSW)CkecaMtGsJa*$Wj>UzT&0{A_Ryk2;pxC zS;+u4K-B0zhD_!_%@CDvH+q(I>Czt5XI?)VJv_sQ6~&%0Yv9> z1eu8unjkU(qANo9dxs%gIZ`vkb%N-bFl3)g!J7pTW$FYU7C`h`C-|}eqIWvMj|C8Y z)Cr?l0MVBmL0;!*O%T@!qAVf&J7^4~DIzePyiD#e;;jalI1c>qrp?oWC(8v%0 z90Ek0g`rN5u^a+KE(oC>s>ZPaqQNlK{e3(eAoAD8n7{^zrs-n@vH_x{FlsB~etPhfT1RRDjOhb3q#$Sr?CMdR~YIMVLBTi8UsTe9y8bg(Oej6OT*Xz z(OMYlfoLWhAc}{fW^5K4Ai4`f?YP-&faoaOplb8z3^W7KZv^$2>Mb zR1t=nkNIqXs1XeHG0XxsK;!~L?YV_)fXH2MEMfyhV_~QV#KmlYXu94AX9GkLFw}fR zumPfI80xhwVFN_*Fw|SzrEGxcIt=x3&@whal&O!goDC5Df}t)!E7$;0!OA)9kkfXh zW{7DEq6)%L4=bx!08vFD$T27*M6v*)YC=#a%W6#!i!F$1q7mv;Si=U0TEI}Jqo0Fw`NqnGFza`;Q@0 z8l@ScQ$TcB7;4V9umGZyLQr$QRTD(cL39Rn$jKz@h~^L=x-AU(@LvksSO8Im5Y&fj zF`6Li0MSF#A^Svz*v=t9^hOtA2ZsRBJAH_q90Ei?bRl9n1c-j=L+s)ZAj)5bFGMzT zHwz#tpcD460HT6AVJ{0HDx4$81IIp15V-V$X}K;)Yv$VQyd1koiR8jVJ%i_S?lKokr^UBwgF08s=CbvZc2 z28g!6ke4dkk;n#!PQs8slOo6GY0VJH0MSEXs53E%LxAWpLa3|b88$%l4u*ORILiiz ze(H^LY=9`gjfkNh1J1JnA}bj3I3h3Qf@X+I0Z|QMs3)3>90El35JKI3li2`Kdl>3D z;Sw7l>JLNRTQ9Q#B7YcaO0Td1qPZ~CW&A1|AX)`OZRs^OK(tG5TxSDBr(vi|=nc&f z2?NnpVWg4G^7!A*Z!W`V-9%Ne5AiFw~2E z${|3Mju7g_K4Sw!k739WCM$Wa8KM#peb80%f=Q`eS2oRMMhWdqww;TdQRtO;J7&yTLCuK(rr*y2$=!14O4_s0sh08RAkwbXgc`K6B;y z`#B7VQV~MUrvV!vdJ02bAak<;qHq6chP+t3C|~=u2Sjl$jP8KR*eDl80jWaMQ5 zM8$=mUP(Sp5D5iQS=6C!jYe#MsOEoKA=_!p28bHNP=`i-HbB%JhI*zkVFN^iV5s>j zzy^rMz)kD79r7tsvSD9wF3ADaHnf(qO2oaBPzP~Y z4gsP@2qC|!F1y5nLx8BSFw`z7$00y803p)mP1rQy}5#)5X)&$XIAc_~l->E1Y zQJF)4=&CM66%GNS8wjEHx(yp3dI>{4so>XrXkW+xQI;^&Ua!U>K$NS72%(wfB3~A+9Ux{RT%0Sv<4d>Y6wH!)$BAw^cjd+2t&=dJqsXetrKdp0HSs}p%x1u z>L>(xG?YD3n*|WL2tgedbyxsVube7muh-QC(d!`UD}=urfvlq*hX9eEt`QC_fG9vG z)Mo)ifkIH%tOlAO8UdmZG(ug$9oYcUY#8dA)lf4;cYtV#Fx2j7!~%$x3qd_+<2S}= zg91dW^>sLL2oP<}2_bXUgar`o5Q4hiIBSBqQV{Ld*U^+ifaq9G2w6un7C>|&N043G zToXhcAWB3X>MchL4gsR8!jQR=AzE?>5Zyosbt1Q714J)jsB2nl%@7>|qQZ9n_Ieu* z0U|RY{Bx*l%La(-V5r}nX~zbL9AT)_w7q7CW`L-+V#f9+Cj@X|=fXG@H>N&`bLx89X zLZ}xqfDI5efT5m)25N@55D+yNhB{jZaR?B#LJ0L-IhYL)^@O1|bO;+D@_`{g>y+to z*9_4N5X~2c96M6*U;#vna|F4ncxr;kCy17!4t3`q$_9v{VW`hjyx0KIei-VWI7~A{ zJ3(|s80w`C=MW&eh7jt#&j>a^^bCfYjFFllDgjZxnw$)It==30L?%M`J9ebu!v=^f zV5m=(eKkW=0wO12r~}lGLx89SLa3u_6dNGw0Yg2Uj%EWy!(hnCDEoDcW{75hC|DTk z`19uwAexF0>VyyA5FlEW6GGN8mIV;4$q{6>#%Y2WJ0Mz*I@I|-o- z2X#Uq3m`h2BgjTf)CAE85FJG$)B!w+4G>*|p(blG8z6cHL+z0uHbC?phB`i{umPgN zwRG(WW&=bOVW@Y3A#8xCCJc4a2xS9AO<}0lGL;Pw^?{*Y%QQAXqS-LiM>pYYfG84%Iwd1CLnI7D`-GvMN0x915FJ7Ybqp?L14LK#%~-|; zh#tX^>5%=lTr)&7K=f4@vJxq*U;#wgI$ zPTimxBAX!c)K#*PLx5-)LZ}PeCN@A61Vde%HnRbu`7qp-c@o72h~C3ckFs0X0MQS9 zEnC?DQGt3QhI$@}W&=d#Fd8ZC*v1Bky1`J}5yJ+E++e8Z;q7dIC;*1cnC#gdnjw-7 zqS?Yw=gCeE0it;bp{6vJ4G^u?SF%epL?s~FlT(Ro#cmcrv|lIeVF5&kas)X5_iBO| zfFL@GMyLaD9~&S_)*JiT0MUIIYCaFJ0irMZ7zfz^k&%Olp&qRcu>qn|FyvDvnT^Am zA<_jRJ7K7Oa)d*Gs1`z~pC=q;14K>#Q;AI2F*ZQt3PZgEKCT&}86X-c4E2dx9ESjr z7edH8TzMt&90Eksg`uv~CpZL%W+8<7RmqcVfG8S+~5GK=e!qYOkKv1Tlm`lqrON&R*x( z0MR!XYK-%2fT&1)VW=bH0vjMI4?{iSU1S49HS{r(*#J>v80tcNi473Bz)&BhUSpTgpAcSW14M~1)C0>6Hb9iBujM8iAbJHu zT{u$M08#D+!cdo|R5n0V0*2aix7YwtB^YW;Z?gd+2YoGRY=Ee(-biNyM1A$f9X3GZ z4MUxgci8|@pgzVuHb68NhWfhR`)q({2Ml$bX0QRGqcGI0KVSny*Z$KEIqx58hM4yt zdMpfejeEo)K=kTAA>=~(m<e}#v4G_7)Q0GD>8z348L*2YyvH_w|dgB!vAPR+{&ivPGfM~fs#v3+3 z6b(b2EpOQX(NP%c;piP3AWDLvj-U5zfanGcIpgH$_@Ei0TR`+k80zTw$RR-VQs0bE zY=Gzs3^nPW*#OaR80v$(FPb5m0V3mu{DeXd!LJ+wL?%M`Ctu�Fea@b#=*N14Pwf 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

    8w5>Zk20KRsZ@M5}-Lly4GFwuWm;$cly5IDQ%? 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 F{|QOte^CGc diff --git a/App/HiNC-2025-win-desktop.deps.json b/App/HiNC-2025-win-desktop.deps.json index 73a0296..fee0bd9 100644 --- a/App/HiNC-2025-win-desktop.deps.json +++ b/App/HiNC-2025-win-desktop.deps.json @@ -11,9 +11,9 @@ "dependencies": { "AvalonEdit": "6.3.0.90", "FontAwesome.Sharp": "6.3.0", - "Hi.WpfPlus": "3.1.128", - "HiNc": "3.1.161", - "HiNc-Resource": "3.1.44", + "Hi.WpfPlus": "3.1.129", + "HiNc": "3.1.162", + "HiNc-Resource": "3.1.45", "runtimepack.Microsoft.NETCore.App.Runtime.win-x64": "10.0.4", "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64": "10.0.4", "runtimepack.Microsoft.AspNetCore.App.Runtime.win-x64": "10.0.4" @@ -1673,36 +1673,36 @@ } } }, - "Hi.WpfPlus/3.1.128": { + "Hi.WpfPlus/3.1.129": { "dependencies": { - "HiDisp": "3.1.131" + "HiDisp": "3.1.132" }, "runtime": { "lib/net10.0-windows7.0/Hi.WpfPlus.dll": { - "assemblyVersion": "3.1.128.0", - "fileVersion": "3.1.128.0" + "assemblyVersion": "3.1.129.0", + "fileVersion": "3.1.129.0" } } }, - "HiCbtr/3.1.131": { + "HiCbtr/3.1.132": { "dependencies": { - "HiDisp": "3.1.131" + "HiDisp": "3.1.132" }, "runtime": { "lib/net10.0/HiCbtr.dll": { - "assemblyVersion": "3.1.131.0", - "fileVersion": "3.1.131.0" + "assemblyVersion": "3.1.132.0", + "fileVersion": "3.1.132.0" } } }, - "HiDisp/3.1.131": { + "HiDisp/3.1.132": { "dependencies": { - "HiGeom": "3.1.121" + "HiGeom": "3.1.122" }, "runtime": { "lib/net10.0/HiDisp.dll": { - "assemblyVersion": "3.1.131.0", - "fileVersion": "3.1.131.0" + "assemblyVersion": "3.1.132.0", + "fileVersion": "3.1.132.0" } }, "native": { @@ -1720,7 +1720,7 @@ } } }, - "HiGeom/3.1.121": { + "HiGeom/3.1.122": { "dependencies": { "Google.Protobuf": "3.28.3", "Grpc.AspNetCore": "2.66.0", @@ -1730,8 +1730,8 @@ }, "runtime": { "lib/net10.0/HiGeom.dll": { - "assemblyVersion": "3.1.121.0", - "fileVersion": "3.1.121.0" + "assemblyVersion": "3.1.122.0", + "fileVersion": "3.1.122.0" } }, "resources": { @@ -1743,27 +1743,27 @@ } } }, - "HiLicense/3.1.122": { + "HiLicense/3.1.123": { "dependencies": { - "HiGeom": "3.1.121" + "HiGeom": "3.1.122" }, "runtime": { "lib/net10.0/HiLicense.dll": { - "assemblyVersion": "3.1.122.0", - "fileVersion": "3.1.122.0" + "assemblyVersion": "3.1.123.0", + "fileVersion": "3.1.123.0" } } }, - "HiMech/3.1.142": { + "HiMech/3.1.143": { "dependencies": { "CommandLineParser": "2.9.1", - "HiCbtr": "3.1.131", + "HiCbtr": "3.1.132", "Microsoft.CodeAnalysis.CSharp.Scripting": "5.3.0" }, "runtime": { "lib/net10.0/HiMech.dll": { - "assemblyVersion": "3.1.142.0", - "fileVersion": "3.1.142.0" + "assemblyVersion": "3.1.143.0", + "fileVersion": "3.1.143.0" } }, "resources": { @@ -1778,21 +1778,21 @@ } } }, - "HiNc/3.1.161": { + "HiNc/3.1.162": { "dependencies": { "Dapper": "2.1.35", "Google.Protobuf": "3.28.3", "Grpc.AspNetCore": "2.66.0", "Grpc.Net.Client": "2.66.0", - "HiLicense": "3.1.122", - "HiMech": "3.1.142", - "HiUniNc": "3.1.138", + "HiLicense": "3.1.123", + "HiMech": "3.1.143", + "HiUniNc": "3.1.139", "Microsoft.Data.Sqlite": "9.0.0" }, "runtime": { "lib/net10.0/HiNc.dll": { - "assemblyVersion": "3.1.161.0", - "fileVersion": "3.1.161.0" + "assemblyVersion": "3.1.162.0", + "fileVersion": "3.1.162.0" } }, "resources": { @@ -1804,22 +1804,22 @@ } } }, - "HiNc-Resource/3.1.44": { + "HiNc-Resource/3.1.45": { "runtime": { "lib/net10.0/HiNc-Resource.dll": { - "assemblyVersion": "3.1.44.0", - "fileVersion": "3.1.44.0" + "assemblyVersion": "3.1.45.0", + "fileVersion": "3.1.45.0" } } }, - "HiUniNc/3.1.138": { + "HiUniNc/3.1.139": { "dependencies": { - "HiMech": "3.1.142" + "HiMech": "3.1.143" }, "runtime": { "lib/net10.0/HiUniNc.dll": { - "assemblyVersion": "3.1.138.0", - "fileVersion": "3.1.138.0" + "assemblyVersion": "3.1.139.0", + "fileVersion": "3.1.139.0" } } }, @@ -2201,68 +2201,68 @@ "path": "grpc.net.common/2.66.0", "hashPath": "grpc.net.common.2.66.0.nupkg.sha512" }, - "Hi.WpfPlus/3.1.128": { + "Hi.WpfPlus/3.1.129": { "type": "package", "serviceable": true, - "sha512": "sha512-p8xNVsFMO80MftqLDUc64YkKm0Ia0Gch1fm4xi/MI7M3dzVM2Am5sYg80GFIZQwtwTtwN6+XvrvL+lpQnDP6Pg==", - "path": "hi.wpfplus/3.1.128", - "hashPath": "hi.wpfplus.3.1.128.nupkg.sha512" + "sha512": "sha512-98Ip4hQFLGEvamrZjikn9kEINkWWrdEzVdbukHALzopR6j+y+6wCGdqLEhHaXVJg3zZiHL1222Xye2EM7l++SQ==", + "path": "hi.wpfplus/3.1.129", + "hashPath": "hi.wpfplus.3.1.129.nupkg.sha512" }, - "HiCbtr/3.1.131": { + "HiCbtr/3.1.132": { "type": "package", "serviceable": true, - "sha512": "sha512-se1eFzYRSLuY5VP3RsrLain1f12ctxh+DpFbLZDcKwUmpK8TGW8B4nGP+nSUhcWtH2MargoyeO+f2+RbtLgZ6w==", - "path": "hicbtr/3.1.131", - "hashPath": "hicbtr.3.1.131.nupkg.sha512" + "sha512": "sha512-ayXNng3wSEDockQ/6KzRUiLHklZWV8smGPMbCxcoOCc9gQCEC86jvUcyX2hU4Pt4mJaJnBhJRfmfe+gSXtjxKg==", + "path": "hicbtr/3.1.132", + "hashPath": "hicbtr.3.1.132.nupkg.sha512" }, - "HiDisp/3.1.131": { + "HiDisp/3.1.132": { "type": "package", "serviceable": true, - "sha512": "sha512-RFdCXBfrrA1P9rKd8iqRPXsx0G3WQb3JCiiuZ5Bs4Am0vcNfImqes+uLOXJ0JG6h6y2b+OnMQsEvha+s5gSdAQ==", - "path": "hidisp/3.1.131", - "hashPath": "hidisp.3.1.131.nupkg.sha512" + "sha512": "sha512-c1OmsO3+8+0Ru7M9p5gU6zouySgrt/wN+XN137FwQY7oWkIQOXUROTtEt5dQF1h9IrBAGPEBC48vyLzyWTw4dA==", + "path": "hidisp/3.1.132", + "hashPath": "hidisp.3.1.132.nupkg.sha512" }, - "HiGeom/3.1.121": { + "HiGeom/3.1.122": { "type": "package", "serviceable": true, - "sha512": "sha512-yvR0rxWbDgwZFFnPnKM+zUDb+68eI0JLJCCzEUx/QQgwSLxFDBV/V0X/PtyvdF3NVFVvvTtf9ji6OJPa1eL1FQ==", - "path": "higeom/3.1.121", - "hashPath": "higeom.3.1.121.nupkg.sha512" + "sha512": "sha512-inlUedOd4h6Yy5BlQPl24TGPaDdBWI334jygdSpEs9FRSaFtojl6VAN/8gBcpebKi+5wxYHDtucoc8rEg+AS7Q==", + "path": "higeom/3.1.122", + "hashPath": "higeom.3.1.122.nupkg.sha512" }, - "HiLicense/3.1.122": { + "HiLicense/3.1.123": { "type": "package", "serviceable": true, - "sha512": "sha512-a1M/7MIiCJO01+UXQSsIEZlrSmT7lY9t6xIaUeL0cJO278hr92mSQ1JeIWZTO9dK53cQL4EJtHqxpipjYrRsEQ==", - "path": "hilicense/3.1.122", - "hashPath": "hilicense.3.1.122.nupkg.sha512" + "sha512": "sha512-g4tf3xf03NNN1SNfj4EA495RbMEshQKGdVEpcYvMo3494g6+iBdP+Ru3NWfxJU5/l7RX5lwe+rXIOjgcGU8pIw==", + "path": "hilicense/3.1.123", + "hashPath": "hilicense.3.1.123.nupkg.sha512" }, - "HiMech/3.1.142": { + "HiMech/3.1.143": { "type": "package", "serviceable": true, - "sha512": "sha512-UamFQCxGUAALWIL88FQyKSvTaabmBX0xWzziNp+B0FUM+rjlOBODaelwkfTUztLYAyA8zR7IiE/R6AfiAhpiGQ==", - "path": "himech/3.1.142", - "hashPath": "himech.3.1.142.nupkg.sha512" + "sha512": "sha512-wXffL7Iya2IDiN9NZdUqRsOQ4FSEhQAypcfhSCch/7hNKL+h/ic+Agv7p9SrdEzWh0hJIf8x4GBxG/A3RvRSxA==", + "path": "himech/3.1.143", + "hashPath": "himech.3.1.143.nupkg.sha512" }, - "HiNc/3.1.161": { + "HiNc/3.1.162": { "type": "package", "serviceable": true, - "sha512": "sha512-MWPozCk3PWaQn1/80EqDSg/8M8cqoQA9IB0AL7GW9lkK44fzfG2kGO3oGJYRQd2qbkN/0vyz2mouOWDK+8d0Eg==", - "path": "hinc/3.1.161", - "hashPath": "hinc.3.1.161.nupkg.sha512" + "sha512": "sha512-iP5JEeKhgzT8PJXgc5x/LfziAoeQaiknVSc7uJvt9scR69U92SHUKIApObRh/oFV9+FW0CwgEvp9zOyjacAS7g==", + "path": "hinc/3.1.162", + "hashPath": "hinc.3.1.162.nupkg.sha512" }, - "HiNc-Resource/3.1.44": { + "HiNc-Resource/3.1.45": { "type": "package", "serviceable": true, - "sha512": "sha512-YsFZFturqeYAo2no4AXkxWVVN5KpOwBjthpZEYnXHXaPEvDqoszCKmyHt83FRgBWOiRguzzZXAD0bPTvrWPHEw==", - "path": "hinc-resource/3.1.44", - "hashPath": "hinc-resource.3.1.44.nupkg.sha512" + "sha512": "sha512-tFgxyuQddjDkmJRu6kBCCu/1FUNbELdWaAaCQbENAifVIVi00M51Io6OncigtEs0X/CJj6N9VLEoYm5Zux/4eQ==", + "path": "hinc-resource/3.1.45", + "hashPath": "hinc-resource.3.1.45.nupkg.sha512" }, - "HiUniNc/3.1.138": { + "HiUniNc/3.1.139": { "type": "package", "serviceable": true, - "sha512": "sha512-lvvU/mXrf6FfX3HAii6PwsSwP9FAEGyuNFaoHWigDUjUDatDwsitz2e10PWqOUzg/S5sDAsGQDOGsVZftEjWjw==", - "path": "hiuninc/3.1.138", - "hashPath": "hiuninc.3.1.138.nupkg.sha512" + "sha512": "sha512-WLTSrDCVGEphDRL0NLKulF54TArOchGs3lNuI/t4Ko7mYH5hSjL2lt6x4ElYECVTiTZL1O9/9ljy3TM4By78Ow==", + "path": "hiuninc/3.1.139", + "hashPath": "hiuninc.3.1.139.nupkg.sha512" }, "MathNet.Numerics/5.0.0": { "type": "package", diff --git a/App/HiNC-2025-win-desktop.dll b/App/HiNC-2025-win-desktop.dll index 87bd04e1d1b55457738caf372d001e6292354ada..a5acef78fab12193418dedf186fd7b0a4223ca42 100644 GIT binary patch delta 55825 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 delta 101 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 delta 38291 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

    !D^YGTu7005;#%ki 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%0AJd?3}|h+~ikyOfN;u`rs9I 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 T0--g%2mf6bt&bT7|HI`^l_%Fn literal 896000 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

  • @@ -2705,12 +2652,39 @@ Hi.NcParsers.LogicSyntaxs
  • @@ -2887,6 +2888,9 @@ Hi.NcParsers.Semantics @@ -2913,7 +2923,7 @@ FanucSyntaxUtil
  • - GeneralSyntaxKit + GenericSyntaxKit
  • HeidenhainSyntaxUtil @@ -2943,7 +2953,7 @@ SyntecSyntaxUtil
  • - TagSetup + TagValue
  • TransformationUtil @@ -2961,12 +2971,6 @@
  • CommentMark
  • -
  • - CoordinateEntryDisplayee -
  • -
  • - CoordinateEntryRenderingFlag -
  • CoordinateInterpolationMode
  • @@ -3139,6 +3143,9 @@
  • ActClArc
  • +
  • + ActClDerivedMcXyzabcContour +
  • ActClLinear
  • @@ -3175,20 +3182,20 @@
  • ActLineEnd
  • -
  • - ActLinearClAndLinearMcAbcMcXyzabcContour -
  • ActMcPolarLinearContour
  • ActMcXyzLinearContour
  • +
  • + ActMcXyzSpiralContour +
  • ActMcXyzStep
  • - ActMcXyzabcOrientableLinearContour + ActMcXyzabcLinearContour
  • ActMcXyzabcStep @@ -3200,10 +3207,10 @@ ActSpindleDirection
  • - ActSpindleSpeed + ActSpindleOrientation
  • - ActSpiralMcXyzContour + ActSpindleSpeed
  • ActToolingStep diff --git a/App/wwwroot/HiAPI-docsite/api/toc.json b/App/wwwroot/HiAPI-docsite/api/toc.json index 1a76ece..4ad7e78 100644 --- a/App/wwwroot/HiAPI-docsite/api/toc.json +++ b/App/wwwroot/HiAPI-docsite/api/toc.json @@ -1,2 +1,2 @@ -{"items":[{"name":"Hi.Cbtr","href":"Hi.Cbtr.html","topicHref":"Hi.Cbtr.html","topicUid":"Hi.Cbtr","type":"Namespace","items":[{"name":"CachedTris","href":"Hi.Cbtr.CachedTris.html","topicHref":"Hi.Cbtr.CachedTris.html","topicUid":"Hi.Cbtr.CachedTris","type":"Class"},{"name":"CachedTris.SweepingMode","href":"Hi.Cbtr.CachedTris.SweepingMode.html","topicHref":"Hi.Cbtr.CachedTris.SweepingMode.html","topicUid":"Hi.Cbtr.CachedTris.SweepingMode","type":"Enum"},{"name":"CbtrPickable","href":"Hi.Cbtr.CbtrPickable.html","topicHref":"Hi.Cbtr.CbtrPickable.html","topicUid":"Hi.Cbtr.CbtrPickable","type":"Class"},{"name":"ConstructionDefectDisplayee","href":"Hi.Cbtr.ConstructionDefectDisplayee.html","topicHref":"Hi.Cbtr.ConstructionDefectDisplayee.html","topicUid":"Hi.Cbtr.ConstructionDefectDisplayee","type":"Class"},{"name":"CubeTree","href":"Hi.Cbtr.CubeTree.html","topicHref":"Hi.Cbtr.CubeTree.html","topicUid":"Hi.Cbtr.CubeTree","type":"Class"},{"name":"CubeTree.DefectNodeInfo","href":"Hi.Cbtr.CubeTree.DefectNodeInfo.html","topicHref":"Hi.Cbtr.CubeTree.DefectNodeInfo.html","topicUid":"Hi.Cbtr.CubeTree.DefectNodeInfo","type":"Class"},{"name":"CubeTree.DefectNodeInfo.TriWireInfo","href":"Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo.html","topicHref":"Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo.html","topicUid":"Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo","type":"Class"},{"name":"CubeTree.DefectTriWireInfoInterop","href":"Hi.Cbtr.CubeTree.DefectTriWireInfoInterop.html","topicHref":"Hi.Cbtr.CubeTree.DefectTriWireInfoInterop.html","topicUid":"Hi.Cbtr.CubeTree.DefectTriWireInfoInterop","type":"Struct"},{"name":"CubeTree.InfNodeInfo","href":"Hi.Cbtr.CubeTree.InfNodeInfo.html","topicHref":"Hi.Cbtr.CubeTree.InfNodeInfo.html","topicUid":"Hi.Cbtr.CubeTree.InfNodeInfo","type":"Class"},{"name":"CubeTree.TriWireRelationInterop","href":"Hi.Cbtr.CubeTree.TriWireRelationInterop.html","topicHref":"Hi.Cbtr.CubeTree.TriWireRelationInterop.html","topicUid":"Hi.Cbtr.CubeTree.TriWireRelationInterop","type":"Struct"},{"name":"CubeTree.diff_response_func_t","href":"Hi.Cbtr.CubeTree.diff_response_func_t.html","topicHref":"Hi.Cbtr.CubeTree.diff_response_func_t.html","topicUid":"Hi.Cbtr.CubeTree.diff_response_func_t","type":"Delegate"},{"name":"CubeTreeFile","href":"Hi.Cbtr.CubeTreeFile.html","topicHref":"Hi.Cbtr.CubeTreeFile.html","topicUid":"Hi.Cbtr.CubeTreeFile","type":"Class"},{"name":"DiffAttachment","href":"Hi.Cbtr.DiffAttachment.html","topicHref":"Hi.Cbtr.DiffAttachment.html","topicUid":"Hi.Cbtr.DiffAttachment","type":"Class"},{"name":"GeomBoolCache","href":"Hi.Cbtr.GeomBoolCache.html","topicHref":"Hi.Cbtr.GeomBoolCache.html","topicUid":"Hi.Cbtr.GeomBoolCache","type":"Class"},{"name":"GeomBoolCacheEnum","href":"Hi.Cbtr.GeomBoolCacheEnum.html","topicHref":"Hi.Cbtr.GeomBoolCacheEnum.html","topicUid":"Hi.Cbtr.GeomBoolCacheEnum","type":"Enum"},{"name":"IGetInitStickConvex","href":"Hi.Cbtr.IGetInitStickConvex.html","topicHref":"Hi.Cbtr.IGetInitStickConvex.html","topicUid":"Hi.Cbtr.IGetInitStickConvex","type":"Interface"},{"name":"InfDefectDisplayee","href":"Hi.Cbtr.InfDefectDisplayee.html","topicHref":"Hi.Cbtr.InfDefectDisplayee.html","topicUid":"Hi.Cbtr.InfDefectDisplayee","type":"Class"},{"name":"InitStickConvex","href":"Hi.Cbtr.InitStickConvex.html","topicHref":"Hi.Cbtr.InitStickConvex.html","topicUid":"Hi.Cbtr.InitStickConvex","type":"Class"},{"name":"LsStl","href":"Hi.Cbtr.LsStl.html","topicHref":"Hi.Cbtr.LsStl.html","topicUid":"Hi.Cbtr.LsStl","type":"Class"},{"name":"Substraction","href":"Hi.Cbtr.Substraction.html","topicHref":"Hi.Cbtr.Substraction.html","topicUid":"Hi.Cbtr.Substraction","type":"Class"},{"name":"UnhighlightablePickable","href":"Hi.Cbtr.UnhighlightablePickable.html","topicHref":"Hi.Cbtr.UnhighlightablePickable.html","topicUid":"Hi.Cbtr.UnhighlightablePickable","type":"Class"},{"name":"UnmanagedSubstraction","href":"Hi.Cbtr.UnmanagedSubstraction.html","topicHref":"Hi.Cbtr.UnmanagedSubstraction.html","topicUid":"Hi.Cbtr.UnmanagedSubstraction","type":"Class"},{"name":"WireCube","href":"Hi.Cbtr.WireCube.html","topicHref":"Hi.Cbtr.WireCube.html","topicUid":"Hi.Cbtr.WireCube","type":"Class"},{"name":"node_diff_t","href":"Hi.Cbtr.node_diff_t.html","topicHref":"Hi.Cbtr.node_diff_t.html","topicUid":"Hi.Cbtr.node_diff_t","type":"Struct"}]},{"name":"Hi.Collision","href":"Hi.Collision.html","topicHref":"Hi.Collision.html","topicUid":"Hi.Collision","type":"Namespace","items":[{"name":"AnchoredCollidableLeaf","href":"Hi.Collision.AnchoredCollidableLeaf.html","topicHref":"Hi.Collision.AnchoredCollidableLeaf.html","topicUid":"Hi.Collision.AnchoredCollidableLeaf","type":"Class"},{"name":"AnchoredCollidablePair","href":"Hi.Collision.AnchoredCollidablePair.html","topicHref":"Hi.Collision.AnchoredCollidablePair.html","topicUid":"Hi.Collision.AnchoredCollidablePair","type":"Class"},{"name":"CollidableStl","href":"Hi.Collision.CollidableStl.html","topicHref":"Hi.Collision.CollidableStl.html","topicUid":"Hi.Collision.CollidableStl","type":"Class"},{"name":"CollisionFlag","href":"Hi.Collision.CollisionFlag.html","topicHref":"Hi.Collision.CollisionFlag.html","topicUid":"Hi.Collision.CollisionFlag","type":"Enum"},{"name":"CollisionIndexPair","href":"Hi.Collision.CollisionIndexPair.html","topicHref":"Hi.Collision.CollisionIndexPair.html","topicUid":"Hi.Collision.CollisionIndexPair","type":"Class"},{"name":"CollisionUtil","href":"Hi.Collision.CollisionUtil.html","topicHref":"Hi.Collision.CollisionUtil.html","topicUid":"Hi.Collision.CollisionUtil","type":"Class"},{"name":"FuncAnchoredCollidable","href":"Hi.Collision.FuncAnchoredCollidable.html","topicHref":"Hi.Collision.FuncAnchoredCollidable.html","topicUid":"Hi.Collision.FuncAnchoredCollidable","type":"Class"},{"name":"IAnchoredCollidableBased","href":"Hi.Collision.IAnchoredCollidableBased.html","topicHref":"Hi.Collision.IAnchoredCollidableBased.html","topicUid":"Hi.Collision.IAnchoredCollidableBased","type":"Interface"},{"name":"IAnchoredCollidableLeaf","href":"Hi.Collision.IAnchoredCollidableLeaf.html","topicHref":"Hi.Collision.IAnchoredCollidableLeaf.html","topicUid":"Hi.Collision.IAnchoredCollidableLeaf","type":"Interface"},{"name":"IAnchoredCollidableNode","href":"Hi.Collision.IAnchoredCollidableNode.html","topicHref":"Hi.Collision.IAnchoredCollidableNode.html","topicUid":"Hi.Collision.IAnchoredCollidableNode","type":"Interface"},{"name":"IAnchoredCollidableStem","href":"Hi.Collision.IAnchoredCollidableStem.html","topicHref":"Hi.Collision.IAnchoredCollidableStem.html","topicUid":"Hi.Collision.IAnchoredCollidableStem","type":"Interface"},{"name":"ICollidable","href":"Hi.Collision.ICollidable.html","topicHref":"Hi.Collision.ICollidable.html","topicUid":"Hi.Collision.ICollidable","type":"Interface"},{"name":"ICollidee","href":"Hi.Collision.ICollidee.html","topicHref":"Hi.Collision.ICollidee.html","topicUid":"Hi.Collision.ICollidee","type":"Interface"},{"name":"ICollisionArena","href":"Hi.Collision.ICollisionArena.html","topicHref":"Hi.Collision.ICollisionArena.html","topicUid":"Hi.Collision.ICollisionArena","type":"Interface"},{"name":"ICollisionIndex","href":"Hi.Collision.ICollisionIndex.html","topicHref":"Hi.Collision.ICollisionIndex.html","topicUid":"Hi.Collision.ICollisionIndex","type":"Interface"},{"name":"IGetAnchoredCollidablePairs","href":"Hi.Collision.IGetAnchoredCollidablePairs.html","topicHref":"Hi.Collision.IGetAnchoredCollidablePairs.html","topicUid":"Hi.Collision.IGetAnchoredCollidablePairs","type":"Interface"},{"name":"IGetCollidable","href":"Hi.Collision.IGetCollidable.html","topicHref":"Hi.Collision.IGetCollidable.html","topicUid":"Hi.Collision.IGetCollidable","type":"Interface"},{"name":"IGetCollisionIndexPairs","href":"Hi.Collision.IGetCollisionIndexPairs.html","topicHref":"Hi.Collision.IGetCollisionIndexPairs.html","topicUid":"Hi.Collision.IGetCollisionIndexPairs","type":"Interface"},{"name":"IGetDefaultCollidablePairs","href":"Hi.Collision.IGetDefaultCollidablePairs.html","topicHref":"Hi.Collision.IGetDefaultCollidablePairs.html","topicUid":"Hi.Collision.IGetDefaultCollidablePairs","type":"Interface"},{"name":"IGetTriTree","href":"Hi.Collision.IGetTriTree.html","topicHref":"Hi.Collision.IGetTriTree.html","topicUid":"Hi.Collision.IGetTriTree","type":"Interface"},{"name":"MechCollisionResult","href":"Hi.Collision.MechCollisionResult.html","topicHref":"Hi.Collision.MechCollisionResult.html","topicUid":"Hi.Collision.MechCollisionResult","type":"Class"},{"name":"MechCollisionUtil","href":"Hi.Collision.MechCollisionUtil.html","topicHref":"Hi.Collision.MechCollisionUtil.html","topicUid":"Hi.Collision.MechCollisionUtil","type":"Class"},{"name":"TriTree","href":"Hi.Collision.TriTree.html","topicHref":"Hi.Collision.TriTree.html","topicUid":"Hi.Collision.TriTree","type":"Class"}]},{"name":"Hi.Collisions","href":"Hi.Collisions.html","topicHref":"Hi.Collisions.html","topicUid":"Hi.Collisions","type":"Namespace","items":[{"name":"AnchoredCollidabled","href":"Hi.Collisions.AnchoredCollidabled.html","topicHref":"Hi.Collisions.AnchoredCollidabled.html","topicUid":"Hi.Collisions.AnchoredCollidabled","type":"Class"},{"name":"IAnchoredCollidabled","href":"Hi.Collisions.IAnchoredCollidabled.html","topicHref":"Hi.Collisions.IAnchoredCollidabled.html","topicUid":"Hi.Collisions.IAnchoredCollidabled","type":"Interface"}]},{"name":"Hi.Coloring","href":"Hi.Coloring.html","topicHref":"Hi.Coloring.html","topicUid":"Hi.Coloring","type":"Namespace","items":[{"name":"ColorUtil","href":"Hi.Coloring.ColorUtil.html","topicHref":"Hi.Coloring.ColorUtil.html","topicUid":"Hi.Coloring.ColorUtil","type":"Class"},{"name":"DictionaryColorGuide","href":"Hi.Coloring.DictionaryColorGuide.html","topicHref":"Hi.Coloring.DictionaryColorGuide.html","topicUid":"Hi.Coloring.DictionaryColorGuide","type":"Class"},{"name":"DiscreteQuantityColorGuide","href":"Hi.Coloring.DiscreteQuantityColorGuide.html","topicHref":"Hi.Coloring.DiscreteQuantityColorGuide.html","topicUid":"Hi.Coloring.DiscreteQuantityColorGuide","type":"Class"},{"name":"FilteredColorGuide","href":"Hi.Coloring.FilteredColorGuide.html","topicHref":"Hi.Coloring.FilteredColorGuide.html","topicUid":"Hi.Coloring.FilteredColorGuide","type":"Class"},{"name":"FuncRangeColorGuide","href":"Hi.Coloring.FuncRangeColorGuide.html","topicHref":"Hi.Coloring.FuncRangeColorGuide.html","topicUid":"Hi.Coloring.FuncRangeColorGuide","type":"Class"},{"name":"IColorGuide","href":"Hi.Coloring.IColorGuide.html","topicHref":"Hi.Coloring.IColorGuide.html","topicUid":"Hi.Coloring.IColorGuide","type":"Interface"},{"name":"IColorGuideProperty","href":"Hi.Coloring.IColorGuideProperty.html","topicHref":"Hi.Coloring.IColorGuideProperty.html","topicUid":"Hi.Coloring.IColorGuideProperty","type":"Interface"},{"name":"IGetColorGuide","href":"Hi.Coloring.IGetColorGuide.html","topicHref":"Hi.Coloring.IGetColorGuide.html","topicUid":"Hi.Coloring.IGetColorGuide","type":"Interface"},{"name":"IGetRangeColorRule","href":"Hi.Coloring.IGetRangeColorRule.html","topicHref":"Hi.Coloring.IGetRangeColorRule.html","topicUid":"Hi.Coloring.IGetRangeColorRule","type":"Interface"},{"name":"IGetRgb","href":"Hi.Coloring.IGetRgb.html","topicHref":"Hi.Coloring.IGetRgb.html","topicUid":"Hi.Coloring.IGetRgb","type":"Interface"},{"name":"IGetRgbWithPriority","href":"Hi.Coloring.IGetRgbWithPriority.html","topicHref":"Hi.Coloring.IGetRgbWithPriority.html","topicUid":"Hi.Coloring.IGetRgbWithPriority","type":"Interface"},{"name":"PlainColorGuide","href":"Hi.Coloring.PlainColorGuide.html","topicHref":"Hi.Coloring.PlainColorGuide.html","topicUid":"Hi.Coloring.PlainColorGuide","type":"Class"},{"name":"QuantityColorGuide","href":"Hi.Coloring.QuantityColorGuide.html","topicHref":"Hi.Coloring.QuantityColorGuide.html","topicUid":"Hi.Coloring.QuantityColorGuide","type":"Class"},{"name":"RangeColorRule","href":"Hi.Coloring.RangeColorRule.html","topicHref":"Hi.Coloring.RangeColorRule.html","topicUid":"Hi.Coloring.RangeColorRule","type":"Class"},{"name":"RatioRgbFuncEnum","href":"Hi.Coloring.RatioRgbFuncEnum.html","topicHref":"Hi.Coloring.RatioRgbFuncEnum.html","topicUid":"Hi.Coloring.RatioRgbFuncEnum","type":"Enum"},{"name":"RgbSeed","href":"Hi.Coloring.RgbSeed.html","topicHref":"Hi.Coloring.RgbSeed.html","topicUid":"Hi.Coloring.RgbSeed","type":"Class"}]},{"name":"Hi.Common","href":"Hi.Common.html","topicHref":"Hi.Common.html","topicUid":"Hi.Common","type":"Namespace","items":[{"name":"BinIoUtil","href":"Hi.Common.BinIoUtil.html","topicHref":"Hi.Common.BinIoUtil.html","topicUid":"Hi.Common.BinIoUtil","type":"Class"},{"name":"BitUtil","href":"Hi.Common.BitUtil.html","topicHref":"Hi.Common.BitUtil.html","topicUid":"Hi.Common.BitUtil","type":"Class"},{"name":"BlockingTimer","href":"Hi.Common.BlockingTimer.html","topicHref":"Hi.Common.BlockingTimer.html","topicUid":"Hi.Common.BlockingTimer","type":"Class"},{"name":"BytesUtil","href":"Hi.Common.BytesUtil.html","topicHref":"Hi.Common.BytesUtil.html","topicUid":"Hi.Common.BytesUtil","type":"Class"},{"name":"ConcurrentTimeCounter","href":"Hi.Common.ConcurrentTimeCounter.html","topicHref":"Hi.Common.ConcurrentTimeCounter.html","topicUid":"Hi.Common.ConcurrentTimeCounter","type":"Class"},{"name":"ConsoleUtil","href":"Hi.Common.ConsoleUtil.html","topicHref":"Hi.Common.ConsoleUtil.html","topicUid":"Hi.Common.ConsoleUtil","type":"Class"},{"name":"CppLogUtil","href":"Hi.Common.CppLogUtil.html","topicHref":"Hi.Common.CppLogUtil.html","topicUid":"Hi.Common.CppLogUtil","type":"Class"},{"name":"CppLogUtil.LogDelegate","href":"Hi.Common.CppLogUtil.LogDelegate.html","topicHref":"Hi.Common.CppLogUtil.LogDelegate.html","topicUid":"Hi.Common.CppLogUtil.LogDelegate","type":"Delegate"},{"name":"CultureUtil","href":"Hi.Common.CultureUtil.html","topicHref":"Hi.Common.CultureUtil.html","topicUid":"Hi.Common.CultureUtil","type":"Class"},{"name":"DebugUtil","href":"Hi.Common.DebugUtil.html","topicHref":"Hi.Common.DebugUtil.html","topicUid":"Hi.Common.DebugUtil","type":"Class"},{"name":"DuplicateUtil","href":"Hi.Common.DuplicateUtil.html","topicHref":"Hi.Common.DuplicateUtil.html","topicUid":"Hi.Common.DuplicateUtil","type":"Class"},{"name":"EnumUtil","href":"Hi.Common.EnumUtil.html","topicHref":"Hi.Common.EnumUtil.html","topicUid":"Hi.Common.EnumUtil","type":"Class"},{"name":"EnumerablePlayer","href":"Hi.Common.EnumerablePlayer.html","topicHref":"Hi.Common.EnumerablePlayer.html","topicUid":"Hi.Common.EnumerablePlayer","type":"Class"},{"name":"ExceptionUtil","href":"Hi.Common.ExceptionUtil.html","topicHref":"Hi.Common.ExceptionUtil.html","topicUid":"Hi.Common.ExceptionUtil","type":"Class"},{"name":"IAbstractNote","href":"Hi.Common.IAbstractNote.html","topicHref":"Hi.Common.IAbstractNote.html","topicUid":"Hi.Common.IAbstractNote","type":"Interface"},{"name":"IBinaryIo","href":"Hi.Common.IBinaryIo.html","topicHref":"Hi.Common.IBinaryIo.html","topicUid":"Hi.Common.IBinaryIo","type":"Interface"},{"name":"IClearCache","href":"Hi.Common.IClearCache.html","topicHref":"Hi.Common.IClearCache.html","topicUid":"Hi.Common.IClearCache","type":"Interface"},{"name":"IDuplicate","href":"Hi.Common.IDuplicate.html","topicHref":"Hi.Common.IDuplicate.html","topicUid":"Hi.Common.IDuplicate","type":"Interface"},{"name":"IGetQuantityByKey","href":"Hi.Common.IGetQuantityByKey.html","topicHref":"Hi.Common.IGetQuantityByKey.html","topicUid":"Hi.Common.IGetQuantityByKey","type":"Interface"},{"name":"IGetSelectionName","href":"Hi.Common.IGetSelectionName.html","topicHref":"Hi.Common.IGetSelectionName.html","topicUid":"Hi.Common.IGetSelectionName","type":"Interface"},{"name":"INameNote","href":"Hi.Common.INameNote.html","topicHref":"Hi.Common.INameNote.html","topicUid":"Hi.Common.INameNote","type":"Interface"},{"name":"IPreferredFileName","href":"Hi.Common.IPreferredFileName.html","topicHref":"Hi.Common.IPreferredFileName.html","topicUid":"Hi.Common.IPreferredFileName","type":"Interface"},{"name":"ISourceFile","href":"Hi.Common.ISourceFile.html","topicHref":"Hi.Common.ISourceFile.html","topicUid":"Hi.Common.ISourceFile","type":"Interface"},{"name":"IToPresentDto","href":"Hi.Common.IToPresentDto.html","topicHref":"Hi.Common.IToPresentDto.html","topicUid":"Hi.Common.IToPresentDto","type":"Interface"},{"name":"IUpdateByContent","href":"Hi.Common.IUpdateByContent.html","topicHref":"Hi.Common.IUpdateByContent.html","topicUid":"Hi.Common.IUpdateByContent","type":"Interface"},{"name":"IUriGetter","href":"Hi.Common.IUriGetter.html","topicHref":"Hi.Common.IUriGetter.html","topicUid":"Hi.Common.IUriGetter","type":"Interface"},{"name":"IWriteBin","href":"Hi.Common.IWriteBin.html","topicHref":"Hi.Common.IWriteBin.html","topicUid":"Hi.Common.IWriteBin","type":"Interface"},{"name":"IndexSegment","href":"Hi.Common.IndexSegment.html","topicHref":"Hi.Common.IndexSegment.html","topicUid":"Hi.Common.IndexSegment","type":"Class"},{"name":"IntegerKeyDictionaryConverter","href":"Hi.Common.IntegerKeyDictionaryConverter.html","topicHref":"Hi.Common.IntegerKeyDictionaryConverter.html","topicUid":"Hi.Common.IntegerKeyDictionaryConverter","type":"Class"},{"name":"IntegerKeyDictionaryConverter","href":"Hi.Common.IntegerKeyDictionaryConverter-1.html","topicHref":"Hi.Common.IntegerKeyDictionaryConverter-1.html","topicUid":"Hi.Common.IntegerKeyDictionaryConverter`1","type":"Class"},{"name":"InternalException","href":"Hi.Common.InternalException.html","topicHref":"Hi.Common.InternalException.html","topicUid":"Hi.Common.InternalException","type":"Class"},{"name":"InvokeUtil","href":"Hi.Common.InvokeUtil.html","topicHref":"Hi.Common.InvokeUtil.html","topicUid":"Hi.Common.InvokeUtil","type":"Class"},{"name":"JsonUtil","href":"Hi.Common.JsonUtil.html","topicHref":"Hi.Common.JsonUtil.html","topicUid":"Hi.Common.JsonUtil","type":"Class"},{"name":"LooseRunner","href":"Hi.Common.LooseRunner.html","topicHref":"Hi.Common.LooseRunner.html","topicUid":"Hi.Common.LooseRunner","type":"Class"},{"name":"LooseRunner.MergedCancellationTokenRun","href":"Hi.Common.LooseRunner.MergedCancellationTokenRun.html","topicHref":"Hi.Common.LooseRunner.MergedCancellationTokenRun.html","topicUid":"Hi.Common.LooseRunner.MergedCancellationTokenRun","type":"Delegate"},{"name":"ManualUtil","href":"Hi.Common.ManualUtil.html","topicHref":"Hi.Common.ManualUtil.html","topicUid":"Hi.Common.ManualUtil","type":"Class"},{"name":"MaskUtil","href":"Hi.Common.MaskUtil.html","topicHref":"Hi.Common.MaskUtil.html","topicUid":"Hi.Common.MaskUtil","type":"Class"},{"name":"NameUtil","href":"Hi.Common.NameUtil.html","topicHref":"Hi.Common.NameUtil.html","topicUid":"Hi.Common.NameUtil","type":"Class"},{"name":"PacePlayee","href":"Hi.Common.PacePlayee.html","topicHref":"Hi.Common.PacePlayee.html","topicUid":"Hi.Common.PacePlayee","type":"Class"},{"name":"PacePlayer","href":"Hi.Common.PacePlayer.html","topicHref":"Hi.Common.PacePlayer.html","topicUid":"Hi.Common.PacePlayer","type":"Class"},{"name":"Pair","href":"Hi.Common.Pair-2.html","topicHref":"Hi.Common.Pair-2.html","topicUid":"Hi.Common.Pair`2","type":"Class"},{"name":"Range","href":"Hi.Common.Range-1.html","topicHref":"Hi.Common.Range-1.html","topicUid":"Hi.Common.Range`1","type":"Class"},{"name":"ResourceUtil","href":"Hi.Common.ResourceUtil.html","topicHref":"Hi.Common.ResourceUtil.html","topicUid":"Hi.Common.ResourceUtil","type":"Class"},{"name":"RoutineBlocker","href":"Hi.Common.RoutineBlocker.html","topicHref":"Hi.Common.RoutineBlocker.html","topicUid":"Hi.Common.RoutineBlocker","type":"Class"},{"name":"RoutineBlocker0","href":"Hi.Common.RoutineBlocker0.html","topicHref":"Hi.Common.RoutineBlocker0.html","topicUid":"Hi.Common.RoutineBlocker0","type":"Class"},{"name":"SearchResult","href":"Hi.Common.SearchResult.html","topicHref":"Hi.Common.SearchResult.html","topicUid":"Hi.Common.SearchResult","type":"Enum"},{"name":"SeqPairUtil","href":"Hi.Common.SeqPairUtil.html","topicHref":"Hi.Common.SeqPairUtil.html","topicUid":"Hi.Common.SeqPairUtil","type":"Class"},{"name":"SeqPair","href":"Hi.Common.SeqPair-1.html","topicHref":"Hi.Common.SeqPair-1.html","topicUid":"Hi.Common.SeqPair`1","type":"Class"},{"name":"ServerFileExplorerConfig","href":"Hi.Common.ServerFileExplorerConfig.html","topicHref":"Hi.Common.ServerFileExplorerConfig.html","topicUid":"Hi.Common.ServerFileExplorerConfig","type":"Class"},{"name":"StringLocalizer","href":"Hi.Common.StringLocalizer.html","topicHref":"Hi.Common.StringLocalizer.html","topicUid":"Hi.Common.StringLocalizer","type":"Class"},{"name":"StringUtil","href":"Hi.Common.StringUtil.html","topicHref":"Hi.Common.StringUtil.html","topicUid":"Hi.Common.StringUtil","type":"Class"},{"name":"TaskUtil","href":"Hi.Common.TaskUtil.html","topicHref":"Hi.Common.TaskUtil.html","topicUid":"Hi.Common.TaskUtil","type":"Class"},{"name":"TimeCounter","href":"Hi.Common.TimeCounter.html","topicHref":"Hi.Common.TimeCounter.html","topicUid":"Hi.Common.TimeCounter","type":"Class"}]},{"name":"Hi.Common.Collections","href":"Hi.Common.Collections.html","topicHref":"Hi.Common.Collections.html","topicUid":"Hi.Common.Collections","type":"Namespace","items":[{"name":"DictionaryUtil","href":"Hi.Common.Collections.DictionaryUtil.html","topicHref":"Hi.Common.Collections.DictionaryUtil.html","topicUid":"Hi.Common.Collections.DictionaryUtil","type":"Class"},{"name":"EnumerableUtil","href":"Hi.Common.Collections.EnumerableUtil.html","topicHref":"Hi.Common.Collections.EnumerableUtil.html","topicUid":"Hi.Common.Collections.EnumerableUtil","type":"Class"},{"name":"FixedSizeConcurrentLinkedListUtil","href":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil.html","topicHref":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil.html","topicUid":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil","type":"Class"},{"name":"LazyLinkedListNode","href":"Hi.Common.Collections.LazyLinkedListNode-1.html","topicHref":"Hi.Common.Collections.LazyLinkedListNode-1.html","topicUid":"Hi.Common.Collections.LazyLinkedListNode`1","type":"Class"},{"name":"LazyLinkedList","href":"Hi.Common.Collections.LazyLinkedList-1.html","topicHref":"Hi.Common.Collections.LazyLinkedList-1.html","topicUid":"Hi.Common.Collections.LazyLinkedList`1","type":"Class"},{"name":"LinkedListUtil","href":"Hi.Common.Collections.LinkedListUtil.html","topicHref":"Hi.Common.Collections.LinkedListUtil.html","topicUid":"Hi.Common.Collections.LinkedListUtil","type":"Class"},{"name":"ListIndexBasedEnumerable","href":"Hi.Common.Collections.ListIndexBasedEnumerable-1.html","topicHref":"Hi.Common.Collections.ListIndexBasedEnumerable-1.html","topicUid":"Hi.Common.Collections.ListIndexBasedEnumerable`1","type":"Class"},{"name":"ListIndexBasedIEnumerator","href":"Hi.Common.Collections.ListIndexBasedIEnumerator-1.html","topicHref":"Hi.Common.Collections.ListIndexBasedIEnumerator-1.html","topicUid":"Hi.Common.Collections.ListIndexBasedIEnumerator`1","type":"Class"},{"name":"ListUtil","href":"Hi.Common.Collections.ListUtil.html","topicHref":"Hi.Common.Collections.ListUtil.html","topicUid":"Hi.Common.Collections.ListUtil","type":"Class"},{"name":"ListUtil.OuterPolationMode","href":"Hi.Common.Collections.ListUtil.OuterPolationMode.html","topicHref":"Hi.Common.Collections.ListUtil.OuterPolationMode.html","topicUid":"Hi.Common.Collections.ListUtil.OuterPolationMode","type":"Enum"},{"name":"SearchTargetMode","href":"Hi.Common.Collections.SearchTargetMode.html","topicHref":"Hi.Common.Collections.SearchTargetMode.html","topicUid":"Hi.Common.Collections.SearchTargetMode","type":"Enum"},{"name":"SeekDirection","href":"Hi.Common.Collections.SeekDirection.html","topicHref":"Hi.Common.Collections.SeekDirection.html","topicUid":"Hi.Common.Collections.SeekDirection","type":"Enum"},{"name":"SortedListUtil","href":"Hi.Common.Collections.SortedListUtil.html","topicHref":"Hi.Common.Collections.SortedListUtil.html","topicUid":"Hi.Common.Collections.SortedListUtil","type":"Class"},{"name":"SubList","href":"Hi.Common.Collections.SubList-1.html","topicHref":"Hi.Common.Collections.SubList-1.html","topicUid":"Hi.Common.Collections.SubList`1","type":"Class"},{"name":"SynList","href":"Hi.Common.Collections.SynList-1.html","topicHref":"Hi.Common.Collections.SynList-1.html","topicUid":"Hi.Common.Collections.SynList`1","type":"Class"}]},{"name":"Hi.Common.CsvUtils","href":"Hi.Common.CsvUtils.html","topicHref":"Hi.Common.CsvUtils.html","topicUid":"Hi.Common.CsvUtils","type":"Namespace","items":[{"name":"CsvInputKit","href":"Hi.Common.CsvUtils.CsvInputKit.html","topicHref":"Hi.Common.CsvUtils.CsvInputKit.html","topicUid":"Hi.Common.CsvUtils.CsvInputKit","type":"Class"},{"name":"CsvOutputKit","href":"Hi.Common.CsvUtils.CsvOutputKit.html","topicHref":"Hi.Common.CsvUtils.CsvOutputKit.html","topicUid":"Hi.Common.CsvUtils.CsvOutputKit","type":"Class"},{"name":"CsvUtil","href":"Hi.Common.CsvUtils.CsvUtil.html","topicHref":"Hi.Common.CsvUtils.CsvUtil.html","topicUid":"Hi.Common.CsvUtils.CsvUtil","type":"Class"},{"name":"ICsvRowIo","href":"Hi.Common.CsvUtils.ICsvRowIo.html","topicHref":"Hi.Common.CsvUtils.ICsvRowIo.html","topicUid":"Hi.Common.CsvUtils.ICsvRowIo","type":"Interface"},{"name":"IGetCsvDictionary","href":"Hi.Common.CsvUtils.IGetCsvDictionary.html","topicHref":"Hi.Common.CsvUtils.IGetCsvDictionary.html","topicUid":"Hi.Common.CsvUtils.IGetCsvDictionary","type":"Interface"}]},{"name":"Hi.Common.FileLines","href":"Hi.Common.FileLines.html","topicHref":"Hi.Common.FileLines.html","topicUid":"Hi.Common.FileLines","type":"Namespace","items":[{"name":"FileBeginEventArgs","href":"Hi.Common.FileLines.FileBeginEventArgs.html","topicHref":"Hi.Common.FileLines.FileBeginEventArgs.html","topicUid":"Hi.Common.FileLines.FileBeginEventArgs","type":"Class"},{"name":"FileEndEventArgs","href":"Hi.Common.FileLines.FileEndEventArgs.html","topicHref":"Hi.Common.FileLines.FileEndEventArgs.html","topicUid":"Hi.Common.FileLines.FileEndEventArgs","type":"Class"},{"name":"FileLineIndex","href":"Hi.Common.FileLines.FileLineIndex.html","topicHref":"Hi.Common.FileLines.FileLineIndex.html","topicUid":"Hi.Common.FileLines.FileLineIndex","type":"Class"},{"name":"FileLinePipingKit","href":"Hi.Common.FileLines.FileLinePipingKit.html","topicHref":"Hi.Common.FileLines.FileLinePipingKit.html","topicUid":"Hi.Common.FileLines.FileLinePipingKit","type":"Class"},{"name":"FileLineUtil","href":"Hi.Common.FileLines.FileLineUtil.html","topicHref":"Hi.Common.FileLines.FileLineUtil.html","topicUid":"Hi.Common.FileLines.FileLineUtil","type":"Class"},{"name":"FileUtil","href":"Hi.Common.FileLines.FileUtil.html","topicHref":"Hi.Common.FileLines.FileUtil.html","topicUid":"Hi.Common.FileLines.FileUtil","type":"Class"},{"name":"IFileChangedEventSupport","href":"Hi.Common.FileLines.IFileChangedEventSupport.html","topicHref":"Hi.Common.FileLines.IFileChangedEventSupport.html","topicUid":"Hi.Common.FileLines.IFileChangedEventSupport","type":"Interface"},{"name":"IFileLine","href":"Hi.Common.FileLines.IFileLine.html","topicHref":"Hi.Common.FileLines.IFileLine.html","topicUid":"Hi.Common.FileLines.IFileLine","type":"Interface"},{"name":"IFileLineIndex","href":"Hi.Common.FileLines.IFileLineIndex.html","topicHref":"Hi.Common.FileLines.IFileLineIndex.html","topicUid":"Hi.Common.FileLines.IFileLineIndex","type":"Interface"},{"name":"IGetFileLineIndex","href":"Hi.Common.FileLines.IGetFileLineIndex.html","topicHref":"Hi.Common.FileLines.IGetFileLineIndex.html","topicUid":"Hi.Common.FileLines.IGetFileLineIndex","type":"Interface"},{"name":"IGetIndexedFileLine","href":"Hi.Common.FileLines.IGetIndexedFileLine.html","topicHref":"Hi.Common.FileLines.IGetIndexedFileLine.html","topicUid":"Hi.Common.FileLines.IGetIndexedFileLine","type":"Interface"},{"name":"IIndexedFileLine","href":"Hi.Common.FileLines.IIndexedFileLine.html","topicHref":"Hi.Common.FileLines.IIndexedFileLine.html","topicUid":"Hi.Common.FileLines.IIndexedFileLine","type":"Interface"},{"name":"ILineChangedEventSupport","href":"Hi.Common.FileLines.ILineChangedEventSupport.html","topicHref":"Hi.Common.FileLines.ILineChangedEventSupport.html","topicUid":"Hi.Common.FileLines.ILineChangedEventSupport","type":"Interface"},{"name":"IndexedFile","href":"Hi.Common.FileLines.IndexedFile.html","topicHref":"Hi.Common.FileLines.IndexedFile.html","topicUid":"Hi.Common.FileLines.IndexedFile","type":"Class"},{"name":"IndexedFileLine","href":"Hi.Common.FileLines.IndexedFileLine.html","topicHref":"Hi.Common.FileLines.IndexedFileLine.html","topicUid":"Hi.Common.FileLines.IndexedFileLine","type":"Class"},{"name":"LineBeginEventArgs","href":"Hi.Common.FileLines.LineBeginEventArgs.html","topicHref":"Hi.Common.FileLines.LineBeginEventArgs.html","topicUid":"Hi.Common.FileLines.LineBeginEventArgs","type":"Class"},{"name":"LineEndEventArgs","href":"Hi.Common.FileLines.LineEndEventArgs.html","topicHref":"Hi.Common.FileLines.LineEndEventArgs.html","topicUid":"Hi.Common.FileLines.LineEndEventArgs","type":"Class"}]},{"name":"Hi.Common.Messages","href":"Hi.Common.Messages.html","topicHref":"Hi.Common.Messages.html","topicUid":"Hi.Common.Messages","type":"Namespace","items":[{"name":"BootstrapTheme","href":"Hi.Common.Messages.BootstrapTheme.html","topicHref":"Hi.Common.Messages.BootstrapTheme.html","topicUid":"Hi.Common.Messages.BootstrapTheme","type":"Enum"},{"name":"MessageBoardUtil","href":"Hi.Common.Messages.MessageBoardUtil.html","topicHref":"Hi.Common.Messages.MessageBoardUtil.html","topicUid":"Hi.Common.Messages.MessageBoardUtil","type":"Class"},{"name":"MessageFlag","href":"Hi.Common.Messages.MessageFlag.html","topicHref":"Hi.Common.Messages.MessageFlag.html","topicUid":"Hi.Common.Messages.MessageFlag","type":"Enum"},{"name":"MessageHost","href":"Hi.Common.Messages.MessageHost.html","topicHref":"Hi.Common.Messages.MessageHost.html","topicUid":"Hi.Common.Messages.MessageHost","type":"Class"},{"name":"MultiTagMessage","href":"Hi.Common.Messages.MultiTagMessage.html","topicHref":"Hi.Common.Messages.MultiTagMessage.html","topicUid":"Hi.Common.Messages.MultiTagMessage","type":"Class"},{"name":"MultiTagMessageUtil","href":"Hi.Common.Messages.MultiTagMessageUtil.html","topicHref":"Hi.Common.Messages.MultiTagMessageUtil.html","topicUid":"Hi.Common.Messages.MultiTagMessageUtil","type":"Class"},{"name":"ShowMessageBoardDelegate","href":"Hi.Common.Messages.ShowMessageBoardDelegate.html","topicHref":"Hi.Common.Messages.ShowMessageBoardDelegate.html","topicUid":"Hi.Common.Messages.ShowMessageBoardDelegate","type":"Delegate"}]},{"name":"Hi.Common.MinMaxUtils","href":"Hi.Common.MinMaxUtils.html","topicHref":"Hi.Common.MinMaxUtils.html","topicUid":"Hi.Common.MinMaxUtils","type":"Namespace","items":[{"name":"IndexedMinMaxPos","href":"Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html","topicHref":"Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html","topicUid":"Hi.Common.MinMaxUtils.IndexedMinMaxPos`2","type":"Class"},{"name":"MinMaxUtil","href":"Hi.Common.MinMaxUtils.MinMaxUtil.html","topicHref":"Hi.Common.MinMaxUtils.MinMaxUtil.html","topicUid":"Hi.Common.MinMaxUtils.MinMaxUtil","type":"Class"}]},{"name":"Hi.Common.NativeProgresses","href":"Hi.Common.NativeProgresses.html","topicHref":"Hi.Common.NativeProgresses.html","topicUid":"Hi.Common.NativeProgresses","type":"Namespace","items":[{"name":"IProgressReport","href":"Hi.Common.NativeProgresses.IProgressReport.html","topicHref":"Hi.Common.NativeProgresses.IProgressReport.html","topicUid":"Hi.Common.NativeProgresses.IProgressReport","type":"Interface"},{"name":"NativeProgressReport","href":"Hi.Common.NativeProgresses.NativeProgressReport.html","topicHref":"Hi.Common.NativeProgresses.NativeProgressReport.html","topicUid":"Hi.Common.NativeProgresses.NativeProgressReport","type":"Class"},{"name":"ProgressReport","href":"Hi.Common.NativeProgresses.ProgressReport.html","topicHref":"Hi.Common.NativeProgresses.ProgressReport.html","topicUid":"Hi.Common.NativeProgresses.ProgressReport","type":"Class"},{"name":"progress_monitor_t","href":"Hi.Common.NativeProgresses.progress_monitor_t.html","topicHref":"Hi.Common.NativeProgresses.progress_monitor_t.html","topicUid":"Hi.Common.NativeProgresses.progress_monitor_t","type":"Struct"},{"name":"report_progress_func_t","href":"Hi.Common.NativeProgresses.report_progress_func_t.html","topicHref":"Hi.Common.NativeProgresses.report_progress_func_t.html","topicUid":"Hi.Common.NativeProgresses.report_progress_func_t","type":"Delegate"}]},{"name":"Hi.Common.ParallelBulkUtils","href":"Hi.Common.ParallelBulkUtils.html","topicHref":"Hi.Common.ParallelBulkUtils.html","topicUid":"Hi.Common.ParallelBulkUtils","type":"Namespace","items":[{"name":"ParallelBulkReader","href":"Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ParallelBulkReader`1","type":"Class"},{"name":"ParallelBulkWriter","href":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter`1","type":"Class"},{"name":"ReadBulkDelegate","href":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate`1","type":"Delegate"},{"name":"SequentialBulkReader","href":"Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html","topicHref":"Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html","topicUid":"Hi.Common.ParallelBulkUtils.SequentialBulkReader`1","type":"Class"}]},{"name":"Hi.Common.PathUtils","href":"Hi.Common.PathUtils.html","topicHref":"Hi.Common.PathUtils.html","topicUid":"Hi.Common.PathUtils","type":"Namespace","items":[{"name":"ExtendedNamedPath","href":"Hi.Common.PathUtils.ExtendedNamedPath.html","topicHref":"Hi.Common.PathUtils.ExtendedNamedPath.html","topicUid":"Hi.Common.PathUtils.ExtendedNamedPath","type":"Class"},{"name":"HttpUtil","href":"Hi.Common.PathUtils.HttpUtil.html","topicHref":"Hi.Common.PathUtils.HttpUtil.html","topicUid":"Hi.Common.PathUtils.HttpUtil","type":"Class"},{"name":"Lang","href":"Hi.Common.PathUtils.Lang.html","topicHref":"Hi.Common.PathUtils.Lang.html","topicUid":"Hi.Common.PathUtils.Lang","type":"Class"},{"name":"NamedPath","href":"Hi.Common.PathUtils.NamedPath.html","topicHref":"Hi.Common.PathUtils.NamedPath.html","topicUid":"Hi.Common.PathUtils.NamedPath","type":"Class"},{"name":"PathUtil","href":"Hi.Common.PathUtils.PathUtil.html","topicHref":"Hi.Common.PathUtils.PathUtil.html","topicUid":"Hi.Common.PathUtils.PathUtil","type":"Class"}]},{"name":"Hi.Common.QueueCacheUtils","href":"Hi.Common.QueueCacheUtils.html","topicHref":"Hi.Common.QueueCacheUtils.html","topicUid":"Hi.Common.QueueCacheUtils","type":"Namespace","items":[{"name":"QueueCacherHost","href":"Hi.Common.QueueCacheUtils.QueueCacherHost-1.html","topicHref":"Hi.Common.QueueCacheUtils.QueueCacherHost-1.html","topicUid":"Hi.Common.QueueCacheUtils.QueueCacherHost`1","type":"Class"},{"name":"QueueCacher","href":"Hi.Common.QueueCacheUtils.QueueCacher-1.html","topicHref":"Hi.Common.QueueCacheUtils.QueueCacher-1.html","topicUid":"Hi.Common.QueueCacheUtils.QueueCacher`1","type":"Class"}]},{"name":"Hi.Common.XmlUtils","href":"Hi.Common.XmlUtils.html","topicHref":"Hi.Common.XmlUtils.html","topicUid":"Hi.Common.XmlUtils","type":"Namespace","items":[{"name":"FileRefSource","href":"Hi.Common.XmlUtils.FileRefSource-1.html","topicHref":"Hi.Common.XmlUtils.FileRefSource-1.html","topicUid":"Hi.Common.XmlUtils.FileRefSource`1","type":"Class"},{"name":"GenMode","href":"Hi.Common.XmlUtils.GenMode.html","topicHref":"Hi.Common.XmlUtils.GenMode.html","topicUid":"Hi.Common.XmlUtils.GenMode","type":"Enum"},{"name":"IMakeXmlSource","href":"Hi.Common.XmlUtils.IMakeXmlSource.html","topicHref":"Hi.Common.XmlUtils.IMakeXmlSource.html","topicUid":"Hi.Common.XmlUtils.IMakeXmlSource","type":"Interface"},{"name":"IToXElement","href":"Hi.Common.XmlUtils.IToXElement.html","topicHref":"Hi.Common.XmlUtils.IToXElement.html","topicUid":"Hi.Common.XmlUtils.IToXElement","type":"Interface"},{"name":"SetFileDelegate","href":"Hi.Common.XmlUtils.SetFileDelegate.html","topicHref":"Hi.Common.XmlUtils.SetFileDelegate.html","topicUid":"Hi.Common.XmlUtils.SetFileDelegate","type":"Delegate"},{"name":"XFactory","href":"Hi.Common.XmlUtils.XFactory.html","topicHref":"Hi.Common.XmlUtils.XFactory.html","topicUid":"Hi.Common.XmlUtils.XFactory","type":"Class"},{"name":"XFactory.GenByXElementDelegate","href":"Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html","topicHref":"Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html","topicUid":"Hi.Common.XmlUtils.XFactory.GenByXElementDelegate","type":"Delegate"},{"name":"XFactory.XmlExceptionDelegate","href":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html","topicHref":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html","topicUid":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate","type":"Delegate"},{"name":"XmlUtil","href":"Hi.Common.XmlUtils.XmlUtil.html","topicHref":"Hi.Common.XmlUtils.XmlUtil.html","topicUid":"Hi.Common.XmlUtils.XmlUtil","type":"Class"}]},{"name":"Hi.CutterLocations","href":"Hi.CutterLocations.html","topicHref":"Hi.CutterLocations.html","topicUid":"Hi.CutterLocations","type":"Namespace","items":[{"name":"IGetProgramCl","href":"Hi.CutterLocations.IGetProgramCl.html","topicHref":"Hi.CutterLocations.IGetProgramCl.html","topicUid":"Hi.CutterLocations.IGetProgramCl","type":"Interface"},{"name":"SimpleCl","href":"Hi.CutterLocations.SimpleCl.html","topicHref":"Hi.CutterLocations.SimpleCl.html","topicUid":"Hi.CutterLocations.SimpleCl","type":"Class"}]},{"name":"Hi.CutterLocations.ClPath","href":"Hi.CutterLocations.ClPath.html","topicHref":"Hi.CutterLocations.ClPath.html","topicUid":"Hi.CutterLocations.ClPath","type":"Namespace","items":[{"name":"ClCircleArc","href":"Hi.CutterLocations.ClPath.ClCircleArc.html","topicHref":"Hi.CutterLocations.ClPath.ClCircleArc.html","topicUid":"Hi.CutterLocations.ClPath.ClCircleArc","type":"Class"},{"name":"ClLinear","href":"Hi.CutterLocations.ClPath.ClLinear.html","topicHref":"Hi.CutterLocations.ClPath.ClLinear.html","topicUid":"Hi.CutterLocations.ClPath.ClLinear","type":"Class"},{"name":"IClPath","href":"Hi.CutterLocations.ClPath.IClPath.html","topicHref":"Hi.CutterLocations.ClPath.IClPath.html","topicUid":"Hi.CutterLocations.ClPath.IClPath","type":"Interface"}]},{"name":"Hi.CutterLocations.ClStrips","href":"Hi.CutterLocations.ClStrips.html","topicHref":"Hi.CutterLocations.ClStrips.html","topicUid":"Hi.CutterLocations.ClStrips","type":"Namespace","items":[{"name":"ClStrip","href":"Hi.CutterLocations.ClStrips.ClStrip.html","topicHref":"Hi.CutterLocations.ClStrips.ClStrip.html","topicUid":"Hi.CutterLocations.ClStrips.ClStrip","type":"Class"},{"name":"ClStripPos","href":"Hi.CutterLocations.ClStrips.ClStripPos.html","topicHref":"Hi.CutterLocations.ClStrips.ClStripPos.html","topicUid":"Hi.CutterLocations.ClStrips.ClStripPos","type":"Class"},{"name":"RgbFunc","href":"Hi.CutterLocations.ClStrips.RgbFunc.html","topicHref":"Hi.CutterLocations.ClStrips.RgbFunc.html","topicUid":"Hi.CutterLocations.ClStrips.RgbFunc","type":"Delegate"}]},{"name":"Hi.Disp","href":"Hi.Disp.html","topicHref":"Hi.Disp.html","topicUid":"Hi.Disp","type":"Namespace","items":[{"name":"Bind","href":"Hi.Disp.Bind.html","topicHref":"Hi.Disp.Bind.html","topicUid":"Hi.Disp.Bind","type":"Class"},{"name":"Box3dDispUtil","href":"Hi.Disp.Box3dDispUtil.html","topicHref":"Hi.Disp.Box3dDispUtil.html","topicUid":"Hi.Disp.Box3dDispUtil","type":"Class"},{"name":"Box3dDispUtil.BoxableExpandToBox3dDel","href":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel.html","topicHref":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel.html","topicUid":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel","type":"Delegate"},{"name":"DelegateFuncDisplayee","href":"Hi.Disp.DelegateFuncDisplayee.html","topicHref":"Hi.Disp.DelegateFuncDisplayee.html","topicUid":"Hi.Disp.DelegateFuncDisplayee","type":"Class"},{"name":"DispEngine","href":"Hi.Disp.DispEngine.html","topicHref":"Hi.Disp.DispEngine.html","topicUid":"Hi.Disp.DispEngine","type":"Class"},{"name":"DispEngine.ImageRequestedDelegate","href":"Hi.Disp.DispEngine.ImageRequestedDelegate.html","topicHref":"Hi.Disp.DispEngine.ImageRequestedDelegate.html","topicUid":"Hi.Disp.DispEngine.ImageRequestedDelegate","type":"Delegate"},{"name":"DispEngineConfig","href":"Hi.Disp.DispEngineConfig.html","topicHref":"Hi.Disp.DispEngineConfig.html","topicUid":"Hi.Disp.DispEngineConfig","type":"Class"},{"name":"DispFrameUtil","href":"Hi.Disp.DispFrameUtil.html","topicHref":"Hi.Disp.DispFrameUtil.html","topicUid":"Hi.Disp.DispFrameUtil","type":"Class"},{"name":"DispList","href":"Hi.Disp.DispList.html","topicHref":"Hi.Disp.DispList.html","topicUid":"Hi.Disp.DispList","type":"Class"},{"name":"DispUtil","href":"Hi.Disp.DispUtil.html","topicHref":"Hi.Disp.DispUtil.html","topicUid":"Hi.Disp.DispUtil","type":"Class"},{"name":"Drawing","href":"Hi.Disp.Drawing.html","topicHref":"Hi.Disp.Drawing.html","topicUid":"Hi.Disp.Drawing","type":"Class"},{"name":"FuncDisplayee","href":"Hi.Disp.FuncDisplayee.html","topicHref":"Hi.Disp.FuncDisplayee.html","topicUid":"Hi.Disp.FuncDisplayee","type":"Class"},{"name":"GL","href":"Hi.Disp.GL.html","topicHref":"Hi.Disp.GL.html","topicUid":"Hi.Disp.GL","type":"Class"},{"name":"IDisplayee","href":"Hi.Disp.IDisplayee.html","topicHref":"Hi.Disp.IDisplayee.html","topicUid":"Hi.Disp.IDisplayee","type":"Interface"},{"name":"IGetDispEngine","href":"Hi.Disp.IGetDispEngine.html","topicHref":"Hi.Disp.IGetDispEngine.html","topicUid":"Hi.Disp.IGetDispEngine","type":"Interface"},{"name":"IGetPickable","href":"Hi.Disp.IGetPickable.html","topicHref":"Hi.Disp.IGetPickable.html","topicUid":"Hi.Disp.IGetPickable","type":"Interface"},{"name":"IGlContextDirver","href":"Hi.Disp.IGlContextDirver.html","topicHref":"Hi.Disp.IGlContextDirver.html","topicUid":"Hi.Disp.IGlContextDirver","type":"Interface"},{"name":"MatStack","href":"Hi.Disp.MatStack.html","topicHref":"Hi.Disp.MatStack.html","topicUid":"Hi.Disp.MatStack","type":"Class"},{"name":"MatStack.ItemDisposable","href":"Hi.Disp.MatStack.ItemDisposable.html","topicHref":"Hi.Disp.MatStack.ItemDisposable.html","topicUid":"Hi.Disp.MatStack.ItemDisposable","type":"Class"},{"name":"MvpBoxRelation","href":"Hi.Disp.MvpBoxRelation.html","topicHref":"Hi.Disp.MvpBoxRelation.html","topicUid":"Hi.Disp.MvpBoxRelation","type":"Enum"},{"name":"Pickable","href":"Hi.Disp.Pickable.html","topicHref":"Hi.Disp.Pickable.html","topicUid":"Hi.Disp.Pickable","type":"Class"},{"name":"PopModelMat","href":"Hi.Disp.PopModelMat.html","topicHref":"Hi.Disp.PopModelMat.html","topicUid":"Hi.Disp.PopModelMat","type":"Class"},{"name":"PushModelMat","href":"Hi.Disp.PushModelMat.html","topicHref":"Hi.Disp.PushModelMat.html","topicUid":"Hi.Disp.PushModelMat","type":"Class"},{"name":"Segment3dDispUtil","href":"Hi.Disp.Segment3dDispUtil.html","topicHref":"Hi.Disp.Segment3dDispUtil.html","topicUid":"Hi.Disp.Segment3dDispUtil","type":"Class"},{"name":"ShowEventPickable","href":"Hi.Disp.ShowEventPickable.html","topicHref":"Hi.Disp.ShowEventPickable.html","topicUid":"Hi.Disp.ShowEventPickable","type":"Class"},{"name":"Stamp","href":"Hi.Disp.Stamp.html","topicHref":"Hi.Disp.Stamp.html","topicUid":"Hi.Disp.Stamp","type":"Enum"},{"name":"StringDrawing","href":"Hi.Disp.StringDrawing.html","topicHref":"Hi.Disp.StringDrawing.html","topicUid":"Hi.Disp.StringDrawing","type":"Class"},{"name":"Tri3dDispUtil","href":"Hi.Disp.Tri3dDispUtil.html","topicHref":"Hi.Disp.Tri3dDispUtil.html","topicUid":"Hi.Disp.Tri3dDispUtil","type":"Class"},{"name":"Vec3dDispUtil","href":"Hi.Disp.Vec3dDispUtil.html","topicHref":"Hi.Disp.Vec3dDispUtil.html","topicUid":"Hi.Disp.Vec3dDispUtil","type":"Class"},{"name":"WrappedDisplayee","href":"Hi.Disp.WrappedDisplayee.html","topicHref":"Hi.Disp.WrappedDisplayee.html","topicUid":"Hi.Disp.WrappedDisplayee","type":"Class"}]},{"name":"Hi.Disp.Flag","href":"Hi.Disp.Flag.html","topicHref":"Hi.Disp.Flag.html","topicUid":"Hi.Disp.Flag","type":"Namespace","items":[{"name":"ColorScaleBar","href":"Hi.Disp.Flag.ColorScaleBar.html","topicHref":"Hi.Disp.Flag.ColorScaleBar.html","topicUid":"Hi.Disp.Flag.ColorScaleBar","type":"Class"},{"name":"CoordinateDrawing","href":"Hi.Disp.Flag.CoordinateDrawing.html","topicHref":"Hi.Disp.Flag.CoordinateDrawing.html","topicUid":"Hi.Disp.Flag.CoordinateDrawing","type":"Class"},{"name":"CubicalFlagDrawing","href":"Hi.Disp.Flag.CubicalFlagDrawing.html","topicHref":"Hi.Disp.Flag.CubicalFlagDrawing.html","topicUid":"Hi.Disp.Flag.CubicalFlagDrawing","type":"Class"},{"name":"DimensionBar","href":"Hi.Disp.Flag.DimensionBar.html","topicHref":"Hi.Disp.Flag.DimensionBar.html","topicUid":"Hi.Disp.Flag.DimensionBar","type":"Class"},{"name":"DispCoverUtil","href":"Hi.Disp.Flag.DispCoverUtil.html","topicHref":"Hi.Disp.Flag.DispCoverUtil.html","topicUid":"Hi.Disp.Flag.DispCoverUtil","type":"Class"}]},{"name":"Hi.Disp.Treat","href":"Hi.Disp.Treat.html","topicHref":"Hi.Disp.Treat.html","topicUid":"Hi.Disp.Treat","type":"Namespace","items":[{"name":"LineWidthSwap","href":"Hi.Disp.Treat.LineWidthSwap.html","topicHref":"Hi.Disp.Treat.LineWidthSwap.html","topicUid":"Hi.Disp.Treat.LineWidthSwap","type":"Class"},{"name":"LineWidthTreat","href":"Hi.Disp.Treat.LineWidthTreat.html","topicHref":"Hi.Disp.Treat.LineWidthTreat.html","topicUid":"Hi.Disp.Treat.LineWidthTreat","type":"Class"},{"name":"PointSizeSwap","href":"Hi.Disp.Treat.PointSizeSwap.html","topicHref":"Hi.Disp.Treat.PointSizeSwap.html","topicUid":"Hi.Disp.Treat.PointSizeSwap","type":"Class"},{"name":"PointSizeTreat","href":"Hi.Disp.Treat.PointSizeTreat.html","topicHref":"Hi.Disp.Treat.PointSizeTreat.html","topicUid":"Hi.Disp.Treat.PointSizeTreat","type":"Class"},{"name":"RgbSwap","href":"Hi.Disp.Treat.RgbSwap.html","topicHref":"Hi.Disp.Treat.RgbSwap.html","topicUid":"Hi.Disp.Treat.RgbSwap","type":"Class"},{"name":"RgbTreat","href":"Hi.Disp.Treat.RgbTreat.html","topicHref":"Hi.Disp.Treat.RgbTreat.html","topicUid":"Hi.Disp.Treat.RgbTreat","type":"Class"},{"name":"RgbWrapper","href":"Hi.Disp.Treat.RgbWrapper.html","topicHref":"Hi.Disp.Treat.RgbWrapper.html","topicUid":"Hi.Disp.Treat.RgbWrapper","type":"Class"},{"name":"TransformationWrapper","href":"Hi.Disp.Treat.TransformationWrapper.html","topicHref":"Hi.Disp.Treat.TransformationWrapper.html","topicUid":"Hi.Disp.Treat.TransformationWrapper","type":"Class"}]},{"name":"Hi.Fanuc","href":"Hi.Fanuc.html","topicHref":"Hi.Fanuc.html","topicUid":"Hi.Fanuc","type":"Namespace","items":[{"name":"FanucVarTable","href":"Hi.Fanuc.FanucVarTable.html","topicHref":"Hi.Fanuc.FanucVarTable.html","topicUid":"Hi.Fanuc.FanucVarTable","type":"Class"},{"name":"FanucVarValue","href":"Hi.Fanuc.FanucVarValue.html","topicHref":"Hi.Fanuc.FanucVarValue.html","topicUid":"Hi.Fanuc.FanucVarValue","type":"Struct"}]},{"name":"Hi.Geom","href":"Hi.Geom.html","topicHref":"Hi.Geom.html","topicUid":"Hi.Geom","type":"Namespace","items":[{"name":"ArrayUtil","href":"Hi.Geom.ArrayUtil.html","topicHref":"Hi.Geom.ArrayUtil.html","topicUid":"Hi.Geom.ArrayUtil","type":"Class"},{"name":"AxisAngle4d","href":"Hi.Geom.AxisAngle4d.html","topicHref":"Hi.Geom.AxisAngle4d.html","topicUid":"Hi.Geom.AxisAngle4d","type":"Class"},{"name":"Box2d","href":"Hi.Geom.Box2d.html","topicHref":"Hi.Geom.Box2d.html","topicUid":"Hi.Geom.Box2d","type":"Class"},{"name":"Box2d.NoInit","href":"Hi.Geom.Box2d.NoInit.html","topicHref":"Hi.Geom.Box2d.NoInit.html","topicUid":"Hi.Geom.Box2d.NoInit","type":"Class"},{"name":"Box3d","href":"Hi.Geom.Box3d.html","topicHref":"Hi.Geom.Box3d.html","topicUid":"Hi.Geom.Box3d","type":"Class"},{"name":"Box3d.NoInit","href":"Hi.Geom.Box3d.NoInit.html","topicHref":"Hi.Geom.Box3d.NoInit.html","topicUid":"Hi.Geom.Box3d.NoInit","type":"Class"},{"name":"Cylindroid","href":"Hi.Geom.Cylindroid.html","topicHref":"Hi.Geom.Cylindroid.html","topicUid":"Hi.Geom.Cylindroid","type":"Class"},{"name":"DVec3d","href":"Hi.Geom.DVec3d.html","topicHref":"Hi.Geom.DVec3d.html","topicUid":"Hi.Geom.DVec3d","type":"Class"},{"name":"Dir","href":"Hi.Geom.Dir.html","topicHref":"Hi.Geom.Dir.html","topicUid":"Hi.Geom.Dir","type":"Enum"},{"name":"ExtendedCylinder","href":"Hi.Geom.ExtendedCylinder.html","topicHref":"Hi.Geom.ExtendedCylinder.html","topicUid":"Hi.Geom.ExtendedCylinder","type":"Class"},{"name":"Flat3d","href":"Hi.Geom.Flat3d.html","topicHref":"Hi.Geom.Flat3d.html","topicUid":"Hi.Geom.Flat3d","type":"Class"},{"name":"FractionStatus","href":"Hi.Geom.FractionStatus.html","topicHref":"Hi.Geom.FractionStatus.html","topicUid":"Hi.Geom.FractionStatus","type":"Enum"},{"name":"Fraction","href":"Hi.Geom.Fraction-1.html","topicHref":"Hi.Geom.Fraction-1.html","topicUid":"Hi.Geom.Fraction`1","type":"Struct"},{"name":"GeomCombination","href":"Hi.Geom.GeomCombination.html","topicHref":"Hi.Geom.GeomCombination.html","topicUid":"Hi.Geom.GeomCombination","type":"Class"},{"name":"GeomUtil","href":"Hi.Geom.GeomUtil.html","topicHref":"Hi.Geom.GeomUtil.html","topicUid":"Hi.Geom.GeomUtil","type":"Class"},{"name":"IExpandToBox2d","href":"Hi.Geom.IExpandToBox2d.html","topicHref":"Hi.Geom.IExpandToBox2d.html","topicUid":"Hi.Geom.IExpandToBox2d","type":"Interface"},{"name":"IExpandToBox3d","href":"Hi.Geom.IExpandToBox3d.html","topicHref":"Hi.Geom.IExpandToBox3d.html","topicUid":"Hi.Geom.IExpandToBox3d","type":"Interface"},{"name":"IFlat3d","href":"Hi.Geom.IFlat3d.html","topicHref":"Hi.Geom.IFlat3d.html","topicUid":"Hi.Geom.IFlat3d","type":"Interface"},{"name":"IGenStl","href":"Hi.Geom.IGenStl.html","topicHref":"Hi.Geom.IGenStl.html","topicUid":"Hi.Geom.IGenStl","type":"Interface"},{"name":"IGeomProperty","href":"Hi.Geom.IGeomProperty.html","topicHref":"Hi.Geom.IGeomProperty.html","topicUid":"Hi.Geom.IGeomProperty","type":"Interface"},{"name":"IGetStl","href":"Hi.Geom.IGetStl.html","topicHref":"Hi.Geom.IGetStl.html","topicUid":"Hi.Geom.IGetStl","type":"Interface"},{"name":"IGetZrContour","href":"Hi.Geom.IGetZrContour.html","topicHref":"Hi.Geom.IGetZrContour.html","topicUid":"Hi.Geom.IGetZrContour","type":"Interface"},{"name":"IGetZrList","href":"Hi.Geom.IGetZrList.html","topicHref":"Hi.Geom.IGetZrList.html","topicUid":"Hi.Geom.IGetZrList","type":"Interface"},{"name":"IStlSource","href":"Hi.Geom.IStlSource.html","topicHref":"Hi.Geom.IStlSource.html","topicUid":"Hi.Geom.IStlSource","type":"Interface"},{"name":"ITri3d","href":"Hi.Geom.ITri3d.html","topicHref":"Hi.Geom.ITri3d.html","topicUid":"Hi.Geom.ITri3d","type":"Interface"},{"name":"IVec","href":"Hi.Geom.IVec-1.html","topicHref":"Hi.Geom.IVec-1.html","topicUid":"Hi.Geom.IVec`1","type":"Interface"},{"name":"IZrListSourceProperty","href":"Hi.Geom.IZrListSourceProperty.html","topicHref":"Hi.Geom.IZrListSourceProperty.html","topicUid":"Hi.Geom.IZrListSourceProperty","type":"Interface"},{"name":"Mat4d","href":"Hi.Geom.Mat4d.html","topicHref":"Hi.Geom.Mat4d.html","topicUid":"Hi.Geom.Mat4d","type":"Class"},{"name":"Mat4d.IndexFlag","href":"Hi.Geom.Mat4d.IndexFlag.html","topicHref":"Hi.Geom.Mat4d.IndexFlag.html","topicUid":"Hi.Geom.Mat4d.IndexFlag","type":"Enum"},{"name":"MathNetUtil","href":"Hi.Geom.MathNetUtil.html","topicHref":"Hi.Geom.MathNetUtil.html","topicUid":"Hi.Geom.MathNetUtil","type":"Class"},{"name":"MathUtil","href":"Hi.Geom.MathUtil.html","topicHref":"Hi.Geom.MathUtil.html","topicUid":"Hi.Geom.MathUtil","type":"Class"},{"name":"NativeFraction","href":"Hi.Geom.NativeFraction.html","topicHref":"Hi.Geom.NativeFraction.html","topicUid":"Hi.Geom.NativeFraction","type":"Class"},{"name":"NativeStl","href":"Hi.Geom.NativeStl.html","topicHref":"Hi.Geom.NativeStl.html","topicUid":"Hi.Geom.NativeStl","type":"Class"},{"name":"NativeTopoStld","href":"Hi.Geom.NativeTopoStld.html","topicHref":"Hi.Geom.NativeTopoStld.html","topicUid":"Hi.Geom.NativeTopoStld","type":"Class"},{"name":"NativeTopoStlfr","href":"Hi.Geom.NativeTopoStlfr.html","topicHref":"Hi.Geom.NativeTopoStlfr.html","topicUid":"Hi.Geom.NativeTopoStlfr","type":"Class"},{"name":"PairZr","href":"Hi.Geom.PairZr.html","topicHref":"Hi.Geom.PairZr.html","topicUid":"Hi.Geom.PairZr","type":"Class"},{"name":"PairZrUtil","href":"Hi.Geom.PairZrUtil.html","topicHref":"Hi.Geom.PairZrUtil.html","topicUid":"Hi.Geom.PairZrUtil","type":"Class"},{"name":"Polar3d","href":"Hi.Geom.Polar3d.html","topicHref":"Hi.Geom.Polar3d.html","topicUid":"Hi.Geom.Polar3d","type":"Class"},{"name":"Segment3d","href":"Hi.Geom.Segment3d.html","topicHref":"Hi.Geom.Segment3d.html","topicUid":"Hi.Geom.Segment3d","type":"Class"},{"name":"Stl","href":"Hi.Geom.Stl.html","topicHref":"Hi.Geom.Stl.html","topicUid":"Hi.Geom.Stl","type":"Class"},{"name":"Stl.StlType","href":"Hi.Geom.Stl.StlType.html","topicHref":"Hi.Geom.Stl.StlType.html","topicUid":"Hi.Geom.Stl.StlType","type":"Enum"},{"name":"StlFile","href":"Hi.Geom.StlFile.html","topicHref":"Hi.Geom.StlFile.html","topicUid":"Hi.Geom.StlFile","type":"Class"},{"name":"StlFuncHost","href":"Hi.Geom.StlFuncHost.html","topicHref":"Hi.Geom.StlFuncHost.html","topicUid":"Hi.Geom.StlFuncHost","type":"Class"},{"name":"StlUtil","href":"Hi.Geom.StlUtil.html","topicHref":"Hi.Geom.StlUtil.html","topicUid":"Hi.Geom.StlUtil","type":"Class"},{"name":"TransformationGeom","href":"Hi.Geom.TransformationGeom.html","topicHref":"Hi.Geom.TransformationGeom.html","topicUid":"Hi.Geom.TransformationGeom","type":"Class"},{"name":"Tri3d","href":"Hi.Geom.Tri3d.html","topicHref":"Hi.Geom.Tri3d.html","topicUid":"Hi.Geom.Tri3d","type":"Class"},{"name":"Tri3dUtil","href":"Hi.Geom.Tri3dUtil.html","topicHref":"Hi.Geom.Tri3dUtil.html","topicUid":"Hi.Geom.Tri3dUtil","type":"Class"},{"name":"Vec2d","href":"Hi.Geom.Vec2d.html","topicHref":"Hi.Geom.Vec2d.html","topicUid":"Hi.Geom.Vec2d","type":"Class"},{"name":"Vec2i","href":"Hi.Geom.Vec2i.html","topicHref":"Hi.Geom.Vec2i.html","topicUid":"Hi.Geom.Vec2i","type":"Class"},{"name":"Vec3d","href":"Hi.Geom.Vec3d.html","topicHref":"Hi.Geom.Vec3d.html","topicUid":"Hi.Geom.Vec3d","type":"Class"}]},{"name":"Hi.Geom.Resolution","href":"Hi.Geom.Resolution.html","topicHref":"Hi.Geom.Resolution.html","topicUid":"Hi.Geom.Resolution","type":"Namespace","items":[{"name":"IPolarResolution2d","href":"Hi.Geom.Resolution.IPolarResolution2d.html","topicHref":"Hi.Geom.Resolution.IPolarResolution2d.html","topicUid":"Hi.Geom.Resolution.IPolarResolution2d","type":"Interface"},{"name":"IPolarResolution2dSourceProperty","href":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html","topicHref":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html","topicUid":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty","type":"Interface"},{"name":"PolarResolution2d","href":"Hi.Geom.Resolution.PolarResolution2d.html","topicHref":"Hi.Geom.Resolution.PolarResolution2d.html","topicUid":"Hi.Geom.Resolution.PolarResolution2d","type":"Class"}]},{"name":"Hi.Geom.Solvers","href":"Hi.Geom.Solvers.html","topicHref":"Hi.Geom.Solvers.html","topicUid":"Hi.Geom.Solvers","type":"Namespace","items":[{"name":"BinarySolverUtil","href":"Hi.Geom.Solvers.BinarySolverUtil.html","topicHref":"Hi.Geom.Solvers.BinarySolverUtil.html","topicUid":"Hi.Geom.Solvers.BinarySolverUtil","type":"Class"},{"name":"BinarySolvingEntry","href":"Hi.Geom.Solvers.BinarySolvingEntry.html","topicHref":"Hi.Geom.Solvers.BinarySolvingEntry.html","topicUid":"Hi.Geom.Solvers.BinarySolvingEntry","type":"Class"},{"name":"DeepSolvingStatus","href":"Hi.Geom.Solvers.DeepSolvingStatus.html","topicHref":"Hi.Geom.Solvers.DeepSolvingStatus.html","topicUid":"Hi.Geom.Solvers.DeepSolvingStatus","type":"Class"},{"name":"NumericalSolver","href":"Hi.Geom.Solvers.NumericalSolver.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.html","topicUid":"Hi.Geom.Solvers.NumericalSolver","type":"Class"},{"name":"NumericalSolver.GetRepondsDelegate","href":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate.html","topicUid":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate","type":"Delegate"},{"name":"NumericalSolver.SetParasDelegate","href":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate.html","topicUid":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate","type":"Delegate"},{"name":"SolverUtil","href":"Hi.Geom.Solvers.SolverUtil.html","topicHref":"Hi.Geom.Solvers.SolverUtil.html","topicUid":"Hi.Geom.Solvers.SolverUtil","type":"Class"},{"name":"SolvingResult","href":"Hi.Geom.Solvers.SolvingResult.html","topicHref":"Hi.Geom.Solvers.SolvingResult.html","topicUid":"Hi.Geom.Solvers.SolvingResult","type":"Class"},{"name":"SolvingStatus","href":"Hi.Geom.Solvers.SolvingStatus.html","topicHref":"Hi.Geom.Solvers.SolvingStatus.html","topicUid":"Hi.Geom.Solvers.SolvingStatus","type":"Enum"},{"name":"SolvingTerm","href":"Hi.Geom.Solvers.SolvingTerm.html","topicHref":"Hi.Geom.Solvers.SolvingTerm.html","topicUid":"Hi.Geom.Solvers.SolvingTerm","type":"Enum"}]},{"name":"Hi.Geom.Topo","href":"Hi.Geom.Topo.html","topicHref":"Hi.Geom.Topo.html","topicUid":"Hi.Geom.Topo","type":"Namespace","items":[{"name":"TopoLine3Hfr","href":"Hi.Geom.Topo.TopoLine3Hfr.html","topicHref":"Hi.Geom.Topo.TopoLine3Hfr.html","topicUid":"Hi.Geom.Topo.TopoLine3Hfr","type":"Class"},{"name":"TopoLine3StockHfr","href":"Hi.Geom.Topo.TopoLine3StockHfr.html","topicHref":"Hi.Geom.Topo.TopoLine3StockHfr.html","topicUid":"Hi.Geom.Topo.TopoLine3StockHfr","type":"Class"},{"name":"TopoPoint3Hfr","href":"Hi.Geom.Topo.TopoPoint3Hfr.html","topicHref":"Hi.Geom.Topo.TopoPoint3Hfr.html","topicUid":"Hi.Geom.Topo.TopoPoint3Hfr","type":"Class"},{"name":"TopoPoint3StockHfr","href":"Hi.Geom.Topo.TopoPoint3StockHfr.html","topicHref":"Hi.Geom.Topo.TopoPoint3StockHfr.html","topicUid":"Hi.Geom.Topo.TopoPoint3StockHfr","type":"Class"},{"name":"TopoStl3Hfr","href":"Hi.Geom.Topo.TopoStl3Hfr.html","topicHref":"Hi.Geom.Topo.TopoStl3Hfr.html","topicUid":"Hi.Geom.Topo.TopoStl3Hfr","type":"Class"},{"name":"TopoStl3HfrFlatDisplayee","href":"Hi.Geom.Topo.TopoStl3HfrFlatDisplayee.html","topicHref":"Hi.Geom.Topo.TopoStl3HfrFlatDisplayee.html","topicUid":"Hi.Geom.Topo.TopoStl3HfrFlatDisplayee","type":"Class"},{"name":"TopoStl3HfrSmoothDisplayee","href":"Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee.html","topicHref":"Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee.html","topicUid":"Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee","type":"Class"},{"name":"TopoTri3Hfr","href":"Hi.Geom.Topo.TopoTri3Hfr.html","topicHref":"Hi.Geom.Topo.TopoTri3Hfr.html","topicUid":"Hi.Geom.Topo.TopoTri3Hfr","type":"Class"},{"name":"TopoTri3StockHfr","href":"Hi.Geom.Topo.TopoTri3StockHfr.html","topicHref":"Hi.Geom.Topo.TopoTri3StockHfr.html","topicUid":"Hi.Geom.Topo.TopoTri3StockHfr","type":"Class"},{"name":"Vec3Hfr","href":"Hi.Geom.Topo.Vec3Hfr.html","topicHref":"Hi.Geom.Topo.Vec3Hfr.html","topicUid":"Hi.Geom.Topo.Vec3Hfr","type":"Struct"}]},{"name":"Hi.Geom.UnitUtils","href":"Hi.Geom.UnitUtils.html","topicHref":"Hi.Geom.UnitUtils.html","topicUid":"Hi.Geom.UnitUtils","type":"Namespace","items":[{"name":"PhysicsUnit","href":"Hi.Geom.UnitUtils.PhysicsUnit.html","topicHref":"Hi.Geom.UnitUtils.PhysicsUnit.html","topicUid":"Hi.Geom.UnitUtils.PhysicsUnit","type":"Enum"},{"name":"StringValueAttribute","href":"Hi.Geom.UnitUtils.StringValueAttribute.html","topicHref":"Hi.Geom.UnitUtils.StringValueAttribute.html","topicUid":"Hi.Geom.UnitUtils.StringValueAttribute","type":"Class"},{"name":"UnitConvertUtil","href":"Hi.Geom.UnitUtils.UnitConvertUtil.html","topicHref":"Hi.Geom.UnitUtils.UnitConvertUtil.html","topicUid":"Hi.Geom.UnitUtils.UnitConvertUtil","type":"Class"}]},{"name":"Hi.Grpcs","href":"Hi.Grpcs.html","topicHref":"Hi.Grpcs.html","topicUid":"Hi.Grpcs","type":"Namespace","items":[{"name":"ClStripService","href":"Hi.Grpcs.ClStripService.html","topicHref":"Hi.Grpcs.ClStripService.html","topicUid":"Hi.Grpcs.ClStripService","type":"Class"},{"name":"ClStripService.ClStripServiceBase","href":"Hi.Grpcs.ClStripService.ClStripServiceBase.html","topicHref":"Hi.Grpcs.ClStripService.ClStripServiceBase.html","topicUid":"Hi.Grpcs.ClStripService.ClStripServiceBase","type":"Class"},{"name":"ClStripService.ClStripServiceClient","href":"Hi.Grpcs.ClStripService.ClStripServiceClient.html","topicHref":"Hi.Grpcs.ClStripService.ClStripServiceClient.html","topicUid":"Hi.Grpcs.ClStripService.ClStripServiceClient","type":"Class"},{"name":"ClStripServiceReflection","href":"Hi.Grpcs.ClStripServiceReflection.html","topicHref":"Hi.Grpcs.ClStripServiceReflection.html","topicUid":"Hi.Grpcs.ClStripServiceReflection","type":"Class"},{"name":"ClStripServiceRunner","href":"Hi.Grpcs.ClStripServiceRunner.html","topicHref":"Hi.Grpcs.ClStripServiceRunner.html","topicUid":"Hi.Grpcs.ClStripServiceRunner","type":"Class"},{"name":"DictionaryStep","href":"Hi.Grpcs.DictionaryStep.html","topicHref":"Hi.Grpcs.DictionaryStep.html","topicUid":"Hi.Grpcs.DictionaryStep","type":"Class"},{"name":"PlayerService","href":"Hi.Grpcs.PlayerService.html","topicHref":"Hi.Grpcs.PlayerService.html","topicUid":"Hi.Grpcs.PlayerService","type":"Class"},{"name":"PlayerService.PlayerServiceBase","href":"Hi.Grpcs.PlayerService.PlayerServiceBase.html","topicHref":"Hi.Grpcs.PlayerService.PlayerServiceBase.html","topicUid":"Hi.Grpcs.PlayerService.PlayerServiceBase","type":"Class"},{"name":"PlayerService.PlayerServiceClient","href":"Hi.Grpcs.PlayerService.PlayerServiceClient.html","topicHref":"Hi.Grpcs.PlayerService.PlayerServiceClient.html","topicUid":"Hi.Grpcs.PlayerService.PlayerServiceClient","type":"Class"},{"name":"PlayerServiceReflection","href":"Hi.Grpcs.PlayerServiceReflection.html","topicHref":"Hi.Grpcs.PlayerServiceReflection.html","topicUid":"Hi.Grpcs.PlayerServiceReflection","type":"Class"},{"name":"PlayerServiceRunner","href":"Hi.Grpcs.PlayerServiceRunner.html","topicHref":"Hi.Grpcs.PlayerServiceRunner.html","topicUid":"Hi.Grpcs.PlayerServiceRunner","type":"Class"}]},{"name":"Hi.HiNcKits","href":"Hi.HiNcKits.html","topicHref":"Hi.HiNcKits.html","topicUid":"Hi.HiNcKits","type":"Namespace","items":[{"name":"BasePathEnum","href":"Hi.HiNcKits.BasePathEnum.html","topicHref":"Hi.HiNcKits.BasePathEnum.html","topicUid":"Hi.HiNcKits.BasePathEnum","type":"Enum"},{"name":"HiNcHost","href":"Hi.HiNcKits.HiNcHost.html","topicHref":"Hi.HiNcKits.HiNcHost.html","topicUid":"Hi.HiNcKits.HiNcHost","type":"Class"},{"name":"LocalApp","href":"Hi.HiNcKits.LocalApp.html","topicHref":"Hi.HiNcKits.LocalApp.html","topicUid":"Hi.HiNcKits.LocalApp","type":"Class"},{"name":"LocalAppConfig","href":"Hi.HiNcKits.LocalAppConfig.html","topicHref":"Hi.HiNcKits.LocalAppConfig.html","topicUid":"Hi.HiNcKits.LocalAppConfig","type":"Class"},{"name":"ProxyConfig","href":"Hi.HiNcKits.ProxyConfig.html","topicHref":"Hi.HiNcKits.ProxyConfig.html","topicUid":"Hi.HiNcKits.ProxyConfig","type":"Class"},{"name":"UserConfig","href":"Hi.HiNcKits.UserConfig.html","topicHref":"Hi.HiNcKits.UserConfig.html","topicUid":"Hi.HiNcKits.UserConfig","type":"Class"},{"name":"UserService","href":"Hi.HiNcKits.UserService.html","topicHref":"Hi.HiNcKits.UserService.html","topicUid":"Hi.HiNcKits.UserService","type":"Class"}]},{"name":"Hi.Licenses","href":"Hi.Licenses.html","topicHref":"Hi.Licenses.html","topicUid":"Hi.Licenses","type":"Namespace","items":[{"name":"AuthFeature","href":"Hi.Licenses.AuthFeature.html","topicHref":"Hi.Licenses.AuthFeature.html","topicUid":"Hi.Licenses.AuthFeature","type":"Enum"},{"name":"AuthorizationFailedEventArgs","href":"Hi.Licenses.AuthorizationFailedEventArgs.html","topicHref":"Hi.Licenses.AuthorizationFailedEventArgs.html","topicUid":"Hi.Licenses.AuthorizationFailedEventArgs","type":"Class"},{"name":"BlockType","href":"Hi.Licenses.BlockType.html","topicHref":"Hi.Licenses.BlockType.html","topicUid":"Hi.Licenses.BlockType","type":"Enum"},{"name":"License","href":"Hi.Licenses.License.html","topicHref":"Hi.Licenses.License.html","topicUid":"Hi.Licenses.License","type":"Class"},{"name":"LicenseType","href":"Hi.Licenses.LicenseType.html","topicHref":"Hi.Licenses.LicenseType.html","topicUid":"Hi.Licenses.LicenseType","type":"Enum"}]},{"name":"Hi.Machining","href":"Hi.Machining.html","topicHref":"Hi.Machining.html","topicUid":"Hi.Machining","type":"Namespace","items":[{"name":"FreeformRemover","href":"Hi.Machining.FreeformRemover.html","topicHref":"Hi.Machining.FreeformRemover.html","topicUid":"Hi.Machining.FreeformRemover","type":"Class"},{"name":"ICutter","href":"Hi.Machining.ICutter.html","topicHref":"Hi.Machining.ICutter.html","topicUid":"Hi.Machining.ICutter","type":"Interface"},{"name":"ICutterAnchorable","href":"Hi.Machining.ICutterAnchorable.html","topicHref":"Hi.Machining.ICutterAnchorable.html","topicUid":"Hi.Machining.ICutterAnchorable","type":"Interface"},{"name":"IGetSweptable","href":"Hi.Machining.IGetSweptable.html","topicHref":"Hi.Machining.IGetSweptable.html","topicUid":"Hi.Machining.IGetSweptable","type":"Interface"},{"name":"IMachiningTool","href":"Hi.Machining.IMachiningTool.html","topicHref":"Hi.Machining.IMachiningTool.html","topicUid":"Hi.Machining.IMachiningTool","type":"Interface"},{"name":"IVolumeRemover","href":"Hi.Machining.IVolumeRemover.html","topicHref":"Hi.Machining.IVolumeRemover.html","topicUid":"Hi.Machining.IVolumeRemover","type":"Interface"},{"name":"MachiningToolHouse","href":"Hi.Machining.MachiningToolHouse.html","topicHref":"Hi.Machining.MachiningToolHouse.html","topicUid":"Hi.Machining.MachiningToolHouse","type":"Class"},{"name":"MachiningVolumeRemovalProc","href":"Hi.Machining.MachiningVolumeRemovalProc.html","topicHref":"Hi.Machining.MachiningVolumeRemovalProc.html","topicUid":"Hi.Machining.MachiningVolumeRemovalProc","type":"Class"},{"name":"MachiningVolumeRemovalProc.StepMotionSnapshot","href":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html","topicHref":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html","topicUid":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot","type":"Class"},{"name":"MatInterpolationKit","href":"Hi.Machining.MatInterpolationKit.html","topicHref":"Hi.Machining.MatInterpolationKit.html","topicUid":"Hi.Machining.MatInterpolationKit","type":"Class"},{"name":"MatRelation","href":"Hi.Machining.MatRelation.html","topicHref":"Hi.Machining.MatRelation.html","topicUid":"Hi.Machining.MatRelation","type":"Enum"},{"name":"MatRelationUtil","href":"Hi.Machining.MatRelationUtil.html","topicHref":"Hi.Machining.MatRelationUtil.html","topicUid":"Hi.Machining.MatRelationUtil","type":"Class"},{"name":"Sweptable","href":"Hi.Machining.Sweptable.html","topicHref":"Hi.Machining.Sweptable.html","topicUid":"Hi.Machining.Sweptable","type":"Class"},{"name":"SweptableUtil","href":"Hi.Machining.SweptableUtil.html","topicHref":"Hi.Machining.SweptableUtil.html","topicUid":"Hi.Machining.SweptableUtil","type":"Class"},{"name":"ToolNotFoundException","href":"Hi.Machining.ToolNotFoundException.html","topicHref":"Hi.Machining.ToolNotFoundException.html","topicUid":"Hi.Machining.ToolNotFoundException","type":"Class"}]},{"name":"Hi.Machining.MachiningEquipmentUtils","href":"Hi.Machining.MachiningEquipmentUtils.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.html","topicUid":"Hi.Machining.MachiningEquipmentUtils","type":"Namespace","items":[{"name":"CollidableComponentEnum","href":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum","type":"Enum"},{"name":"IGetMachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment","type":"Interface"},{"name":"IMachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment","type":"Interface"},{"name":"MachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment","type":"Class"},{"name":"MachiningEquipmentCollisionIndex","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex","type":"Class"},{"name":"MachiningEquipmentCollisionIndexPairsSource","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource","type":"Class"},{"name":"MachiningEquipmentUtil","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil","type":"Class"}]},{"name":"Hi.MachiningProcs","href":"Hi.MachiningProcs.html","topicHref":"Hi.MachiningProcs.html","topicUid":"Hi.MachiningProcs","type":"Namespace","items":[{"name":"ConfigStepFunc","href":"Hi.MachiningProcs.ConfigStepFunc.html","topicHref":"Hi.MachiningProcs.ConfigStepFunc.html","topicUid":"Hi.MachiningProcs.ConfigStepFunc","type":"Delegate"},{"name":"DynamicMachiningProjectDisplayee0","href":"Hi.MachiningProcs.DynamicMachiningProjectDisplayee0.html","topicHref":"Hi.MachiningProcs.DynamicMachiningProjectDisplayee0.html","topicUid":"Hi.MachiningProcs.DynamicMachiningProjectDisplayee0","type":"Class"},{"name":"IMachiningProjectGetter","href":"Hi.MachiningProcs.IMachiningProjectGetter.html","topicHref":"Hi.MachiningProcs.IMachiningProjectGetter.html","topicUid":"Hi.MachiningProcs.IMachiningProjectGetter","type":"Interface"},{"name":"IProjectService","href":"Hi.MachiningProcs.IProjectService.html","topicHref":"Hi.MachiningProcs.IProjectService.html","topicUid":"Hi.MachiningProcs.IProjectService","type":"Interface"},{"name":"LocalProjectService","href":"Hi.MachiningProcs.LocalProjectService.html","topicHref":"Hi.MachiningProcs.LocalProjectService.html","topicUid":"Hi.MachiningProcs.LocalProjectService","type":"Class"},{"name":"LocalProjectService.MachiningProjectChangedDelegate","href":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate.html","topicHref":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate.html","topicUid":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate","type":"Delegate"},{"name":"MachiningActRunner","href":"Hi.MachiningProcs.MachiningActRunner.html","topicHref":"Hi.MachiningProcs.MachiningActRunner.html","topicUid":"Hi.MachiningProcs.MachiningActRunner","type":"Class"},{"name":"MachiningActRunner.MachiningStepBuiltDelegate","href":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html","topicHref":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html","topicUid":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate","type":"Delegate"},{"name":"MachiningActRunnerConfig","href":"Hi.MachiningProcs.MachiningActRunnerConfig.html","topicHref":"Hi.MachiningProcs.MachiningActRunnerConfig.html","topicUid":"Hi.MachiningProcs.MachiningActRunnerConfig","type":"Class"},{"name":"MachiningParallelProc","href":"Hi.MachiningProcs.MachiningParallelProc.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc","type":"Class"},{"name":"MachiningParallelProc.StepTaskBundle","href":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle","type":"Class"},{"name":"MachiningParallelProc.SubstractionResult","href":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult","type":"Class"},{"name":"MachiningProject","href":"Hi.MachiningProcs.MachiningProject.html","topicHref":"Hi.MachiningProcs.MachiningProject.html","topicUid":"Hi.MachiningProcs.MachiningProject","type":"Class"},{"name":"MachiningProjectDisplayee","href":"Hi.MachiningProcs.MachiningProjectDisplayee.html","topicHref":"Hi.MachiningProcs.MachiningProjectDisplayee.html","topicUid":"Hi.MachiningProcs.MachiningProjectDisplayee","type":"Class"},{"name":"MachiningSession","href":"Hi.MachiningProcs.MachiningSession.html","topicHref":"Hi.MachiningProcs.MachiningSession.html","topicUid":"Hi.MachiningProcs.MachiningSession","type":"Class"},{"name":"MillingUtil","href":"Hi.MachiningProcs.MillingUtil.html","topicHref":"Hi.MachiningProcs.MillingUtil.html","topicUid":"Hi.MachiningProcs.MillingUtil","type":"Class"},{"name":"ProxyProjectService","href":"Hi.MachiningProcs.ProxyProjectService.html","topicHref":"Hi.MachiningProcs.ProxyProjectService.html","topicUid":"Hi.MachiningProcs.ProxyProjectService","type":"Class"},{"name":"RenderingFlag","href":"Hi.MachiningProcs.RenderingFlag.html","topicHref":"Hi.MachiningProcs.RenderingFlag.html","topicUid":"Hi.MachiningProcs.RenderingFlag","type":"Enum"},{"name":"RuntimeApi","href":"Hi.MachiningProcs.RuntimeApi.html","topicHref":"Hi.MachiningProcs.RuntimeApi.html","topicUid":"Hi.MachiningProcs.RuntimeApi","type":"Class"},{"name":"RuntimeController","href":"Hi.MachiningProcs.RuntimeController.html","topicHref":"Hi.MachiningProcs.RuntimeController.html","topicUid":"Hi.MachiningProcs.RuntimeController","type":"Class"},{"name":"SessionMessage","href":"Hi.MachiningProcs.SessionMessage.html","topicHref":"Hi.MachiningProcs.SessionMessage.html","topicUid":"Hi.MachiningProcs.SessionMessage","type":"Class"},{"name":"SessionMessageHost","href":"Hi.MachiningProcs.SessionMessageHost.html","topicHref":"Hi.MachiningProcs.SessionMessageHost.html","topicUid":"Hi.MachiningProcs.SessionMessageHost","type":"Class"},{"name":"SessionMessageHost.FilterFlag","href":"Hi.MachiningProcs.SessionMessageHost.FilterFlag.html","topicHref":"Hi.MachiningProcs.SessionMessageHost.FilterFlag.html","topicUid":"Hi.MachiningProcs.SessionMessageHost.FilterFlag","type":"Enum"},{"name":"SessionMessagePack","href":"Hi.MachiningProcs.SessionMessagePack.html","topicHref":"Hi.MachiningProcs.SessionMessagePack.html","topicUid":"Hi.MachiningProcs.SessionMessagePack","type":"Class"},{"name":"SetupController","href":"Hi.MachiningProcs.SetupController.html","topicHref":"Hi.MachiningProcs.SetupController.html","topicUid":"Hi.MachiningProcs.SetupController","type":"Class"},{"name":"SpindleSpeedCache","href":"Hi.MachiningProcs.SpindleSpeedCache.html","topicHref":"Hi.MachiningProcs.SpindleSpeedCache.html","topicUid":"Hi.MachiningProcs.SpindleSpeedCache","type":"Class"}]},{"name":"Hi.MachiningSteps","href":"Hi.MachiningSteps.html","topicHref":"Hi.MachiningSteps.html","topicUid":"Hi.MachiningSteps","type":"Namespace","items":[{"name":"IFlagText","href":"Hi.MachiningSteps.IFlagText.html","topicHref":"Hi.MachiningSteps.IFlagText.html","topicUid":"Hi.MachiningSteps.IFlagText","type":"Interface"},{"name":"IMachiningStepHost","href":"Hi.MachiningSteps.IMachiningStepHost.html","topicHref":"Hi.MachiningSteps.IMachiningStepHost.html","topicUid":"Hi.MachiningSteps.IMachiningStepHost","type":"Interface"},{"name":"MachineMotionStep","href":"Hi.MachiningSteps.MachineMotionStep.html","topicHref":"Hi.MachiningSteps.MachineMotionStep.html","topicUid":"Hi.MachiningSteps.MachineMotionStep","type":"Class"},{"name":"MachiningStep","href":"Hi.MachiningSteps.MachiningStep.html","topicHref":"Hi.MachiningSteps.MachiningStep.html","topicUid":"Hi.MachiningSteps.MachiningStep","type":"Class"},{"name":"MachiningStep.CollidedKeyPair","href":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair.html","topicHref":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair.html","topicUid":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair","type":"Class"},{"name":"MachiningStepUtil","href":"Hi.MachiningSteps.MachiningStepUtil.html","topicHref":"Hi.MachiningSteps.MachiningStepUtil.html","topicUid":"Hi.MachiningSteps.MachiningStepUtil","type":"Class"},{"name":"PresentAccess","href":"Hi.MachiningSteps.PresentAccess.html","topicHref":"Hi.MachiningSteps.PresentAccess.html","topicUid":"Hi.MachiningSteps.PresentAccess","type":"Class"},{"name":"PresentAttribute","href":"Hi.MachiningSteps.PresentAttribute.html","topicHref":"Hi.MachiningSteps.PresentAttribute.html","topicUid":"Hi.MachiningSteps.PresentAttribute","type":"Class"},{"name":"PropertyAccess","href":"Hi.MachiningSteps.PropertyAccess-1.html","topicHref":"Hi.MachiningSteps.PropertyAccess-1.html","topicUid":"Hi.MachiningSteps.PropertyAccess`1","type":"Class"}]},{"name":"Hi.Mapping","href":"Hi.Mapping.html","topicHref":"Hi.Mapping.html","topicUid":"Hi.Mapping","type":"Namespace","items":[{"name":"CsvNcStep","href":"Hi.Mapping.CsvNcStep.html","topicHref":"Hi.Mapping.CsvNcStep.html","topicUid":"Hi.Mapping.CsvNcStep","type":"Class"},{"name":"FileToTimeShotMapping","href":"Hi.Mapping.FileToTimeShotMapping.html","topicHref":"Hi.Mapping.FileToTimeShotMapping.html","topicUid":"Hi.Mapping.FileToTimeShotMapping","type":"Class"},{"name":"IAccelerationShot","href":"Hi.Mapping.IAccelerationShot.html","topicHref":"Hi.Mapping.IAccelerationShot.html","topicUid":"Hi.Mapping.IAccelerationShot","type":"Interface"},{"name":"IForceShot","href":"Hi.Mapping.IForceShot.html","topicHref":"Hi.Mapping.IForceShot.html","topicUid":"Hi.Mapping.IForceShot","type":"Interface"},{"name":"IMomentShot","href":"Hi.Mapping.IMomentShot.html","topicHref":"Hi.Mapping.IMomentShot.html","topicUid":"Hi.Mapping.IMomentShot","type":"Interface"},{"name":"ITimeShot","href":"Hi.Mapping.ITimeShot.html","topicHref":"Hi.Mapping.ITimeShot.html","topicUid":"Hi.Mapping.ITimeShot","type":"Interface"},{"name":"MappingUtil","href":"Hi.Mapping.MappingUtil.html","topicHref":"Hi.Mapping.MappingUtil.html","topicUid":"Hi.Mapping.MappingUtil","type":"Class"},{"name":"StepTimeShotUtil","href":"Hi.Mapping.StepTimeShotUtil.html","topicHref":"Hi.Mapping.StepTimeShotUtil.html","topicUid":"Hi.Mapping.StepTimeShotUtil","type":"Class"},{"name":"StepTimeShotUtil.CycleSamplingMode","href":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html","topicHref":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html","topicUid":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode","type":"Enum"},{"name":"StepTimeShotUtil.GetTimeShotByFileDelegate","href":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate.html","topicHref":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate.html","topicUid":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate","type":"Delegate"},{"name":"TimeMapping","href":"Hi.Mapping.TimeMapping.html","topicHref":"Hi.Mapping.TimeMapping.html","topicUid":"Hi.Mapping.TimeMapping","type":"Class"}]},{"name":"Hi.Mappings","href":"Hi.Mappings.html","topicHref":"Hi.Mappings.html","topicUid":"Hi.Mappings","type":"Namespace","items":[{"name":"FileTimeSection","href":"Hi.Mappings.FileTimeSection.html","topicHref":"Hi.Mappings.FileTimeSection.html","topicUid":"Hi.Mappings.FileTimeSection","type":"Class"},{"name":"FileTimeSection.TimeOption","href":"Hi.Mappings.FileTimeSection.TimeOption.html","topicHref":"Hi.Mappings.FileTimeSection.TimeOption.html","topicUid":"Hi.Mappings.FileTimeSection.TimeOption","type":"Enum"}]},{"name":"Hi.Mech","href":"Hi.Mech.html","topicHref":"Hi.Mech.html","topicUid":"Hi.Mech","type":"Namespace","items":[{"name":"GeneralMechanism","href":"Hi.Mech.GeneralMechanism.html","topicHref":"Hi.Mech.GeneralMechanism.html","topicUid":"Hi.Mech.GeneralMechanism","type":"Class"},{"name":"IGetAnchorToSolidDictionary","href":"Hi.Mech.IGetAnchorToSolidDictionary.html","topicHref":"Hi.Mech.IGetAnchorToSolidDictionary.html","topicUid":"Hi.Mech.IGetAnchorToSolidDictionary","type":"Interface"},{"name":"IGetMachiningChain","href":"Hi.Mech.IGetMachiningChain.html","topicHref":"Hi.Mech.IGetMachiningChain.html","topicUid":"Hi.Mech.IGetMachiningChain","type":"Interface"},{"name":"IMachiningChain","href":"Hi.Mech.IMachiningChain.html","topicHref":"Hi.Mech.IMachiningChain.html","topicUid":"Hi.Mech.IMachiningChain","type":"Interface"},{"name":"IMachiningChainSource","href":"Hi.Mech.IMachiningChainSource.html","topicHref":"Hi.Mech.IMachiningChainSource.html","topicUid":"Hi.Mech.IMachiningChainSource","type":"Interface"},{"name":"MachiningChainUtil","href":"Hi.Mech.MachiningChainUtil.html","topicHref":"Hi.Mech.MachiningChainUtil.html","topicUid":"Hi.Mech.MachiningChainUtil","type":"Class"}]},{"name":"Hi.Mech.Topo","href":"Hi.Mech.Topo.html","topicHref":"Hi.Mech.Topo.html","topicUid":"Hi.Mech.Topo","type":"Namespace","items":[{"name":"Anchor","href":"Hi.Mech.Topo.Anchor.html","topicHref":"Hi.Mech.Topo.Anchor.html","topicUid":"Hi.Mech.Topo.Anchor","type":"Class"},{"name":"AnchorFuncSource","href":"Hi.Mech.Topo.AnchorFuncSource.html","topicHref":"Hi.Mech.Topo.AnchorFuncSource.html","topicUid":"Hi.Mech.Topo.AnchorFuncSource","type":"Class"},{"name":"AnchoredBoxable","href":"Hi.Mech.Topo.AnchoredBoxable.html","topicHref":"Hi.Mech.Topo.AnchoredBoxable.html","topicUid":"Hi.Mech.Topo.AnchoredBoxable","type":"Class"},{"name":"AnchoredDisplayee","href":"Hi.Mech.Topo.AnchoredDisplayee.html","topicHref":"Hi.Mech.Topo.AnchoredDisplayee.html","topicUid":"Hi.Mech.Topo.AnchoredDisplayee","type":"Class"},{"name":"Asmb","href":"Hi.Mech.Topo.Asmb.html","topicHref":"Hi.Mech.Topo.Asmb.html","topicUid":"Hi.Mech.Topo.Asmb","type":"Class"},{"name":"AsmbDraw","href":"Hi.Mech.Topo.AsmbDraw.html","topicHref":"Hi.Mech.Topo.AsmbDraw.html","topicUid":"Hi.Mech.Topo.AsmbDraw","type":"Class"},{"name":"Branch","href":"Hi.Mech.Topo.Branch.html","topicHref":"Hi.Mech.Topo.Branch.html","topicUid":"Hi.Mech.Topo.Branch","type":"Class"},{"name":"DirectionBranchEntry","href":"Hi.Mech.Topo.DirectionBranchEntry.html","topicHref":"Hi.Mech.Topo.DirectionBranchEntry.html","topicUid":"Hi.Mech.Topo.DirectionBranchEntry","type":"Class"},{"name":"DirectionBranchPackUtil","href":"Hi.Mech.Topo.DirectionBranchPackUtil.html","topicHref":"Hi.Mech.Topo.DirectionBranchPackUtil.html","topicUid":"Hi.Mech.Topo.DirectionBranchPackUtil","type":"Class"},{"name":"DynamicFreeform","href":"Hi.Mech.Topo.DynamicFreeform.html","topicHref":"Hi.Mech.Topo.DynamicFreeform.html","topicUid":"Hi.Mech.Topo.DynamicFreeform","type":"Class"},{"name":"DynamicRotation","href":"Hi.Mech.Topo.DynamicRotation.html","topicHref":"Hi.Mech.Topo.DynamicRotation.html","topicUid":"Hi.Mech.Topo.DynamicRotation","type":"Class"},{"name":"DynamicTranslation","href":"Hi.Mech.Topo.DynamicTranslation.html","topicHref":"Hi.Mech.Topo.DynamicTranslation.html","topicUid":"Hi.Mech.Topo.DynamicTranslation","type":"Class"},{"name":"GeneralTransform","href":"Hi.Mech.Topo.GeneralTransform.html","topicHref":"Hi.Mech.Topo.GeneralTransform.html","topicUid":"Hi.Mech.Topo.GeneralTransform","type":"Class"},{"name":"IAnchoredDisplayee","href":"Hi.Mech.Topo.IAnchoredDisplayee.html","topicHref":"Hi.Mech.Topo.IAnchoredDisplayee.html","topicUid":"Hi.Mech.Topo.IAnchoredDisplayee","type":"Interface"},{"name":"IDynamicRegular","href":"Hi.Mech.Topo.IDynamicRegular.html","topicHref":"Hi.Mech.Topo.IDynamicRegular.html","topicUid":"Hi.Mech.Topo.IDynamicRegular","type":"Interface"},{"name":"IDynamicRotation","href":"Hi.Mech.Topo.IDynamicRotation.html","topicHref":"Hi.Mech.Topo.IDynamicRotation.html","topicUid":"Hi.Mech.Topo.IDynamicRotation","type":"Interface"},{"name":"IDynamicTransformer","href":"Hi.Mech.Topo.IDynamicTransformer.html","topicHref":"Hi.Mech.Topo.IDynamicTransformer.html","topicUid":"Hi.Mech.Topo.IDynamicTransformer","type":"Interface"},{"name":"IGetAnchor","href":"Hi.Mech.Topo.IGetAnchor.html","topicHref":"Hi.Mech.Topo.IGetAnchor.html","topicUid":"Hi.Mech.Topo.IGetAnchor","type":"Interface"},{"name":"IGetAnchoredDisplayeeList","href":"Hi.Mech.Topo.IGetAnchoredDisplayeeList.html","topicHref":"Hi.Mech.Topo.IGetAnchoredDisplayeeList.html","topicUid":"Hi.Mech.Topo.IGetAnchoredDisplayeeList","type":"Interface"},{"name":"IGetAsmb","href":"Hi.Mech.Topo.IGetAsmb.html","topicHref":"Hi.Mech.Topo.IGetAsmb.html","topicUid":"Hi.Mech.Topo.IGetAsmb","type":"Interface"},{"name":"IGetFletchBuckle","href":"Hi.Mech.Topo.IGetFletchBuckle.html","topicHref":"Hi.Mech.Topo.IGetFletchBuckle.html","topicUid":"Hi.Mech.Topo.IGetFletchBuckle","type":"Interface"},{"name":"IGetInverseTransformer","href":"Hi.Mech.Topo.IGetInverseTransformer.html","topicHref":"Hi.Mech.Topo.IGetInverseTransformer.html","topicUid":"Hi.Mech.Topo.IGetInverseTransformer","type":"Interface"},{"name":"IGetTopoIndex","href":"Hi.Mech.Topo.IGetTopoIndex.html","topicHref":"Hi.Mech.Topo.IGetTopoIndex.html","topicUid":"Hi.Mech.Topo.IGetTopoIndex","type":"Interface"},{"name":"IStaticTransformer","href":"Hi.Mech.Topo.IStaticTransformer.html","topicHref":"Hi.Mech.Topo.IStaticTransformer.html","topicUid":"Hi.Mech.Topo.IStaticTransformer","type":"Interface"},{"name":"ITopo","href":"Hi.Mech.Topo.ITopo.html","topicHref":"Hi.Mech.Topo.ITopo.html","topicUid":"Hi.Mech.Topo.ITopo","type":"Interface"},{"name":"ITopoDisplayee","href":"Hi.Mech.Topo.ITopoDisplayee.html","topicHref":"Hi.Mech.Topo.ITopoDisplayee.html","topicUid":"Hi.Mech.Topo.ITopoDisplayee","type":"Interface"},{"name":"ITransformer","href":"Hi.Mech.Topo.ITransformer.html","topicHref":"Hi.Mech.Topo.ITransformer.html","topicUid":"Hi.Mech.Topo.ITransformer","type":"Interface"},{"name":"ITransformerProperty","href":"Hi.Mech.Topo.ITransformerProperty.html","topicHref":"Hi.Mech.Topo.ITransformerProperty.html","topicUid":"Hi.Mech.Topo.ITransformerProperty","type":"Interface"},{"name":"NoTransform","href":"Hi.Mech.Topo.NoTransform.html","topicHref":"Hi.Mech.Topo.NoTransform.html","topicUid":"Hi.Mech.Topo.NoTransform","type":"Class"},{"name":"StackTransformer","href":"Hi.Mech.Topo.StackTransformer.html","topicHref":"Hi.Mech.Topo.StackTransformer.html","topicUid":"Hi.Mech.Topo.StackTransformer","type":"Class"},{"name":"StaticFreeform","href":"Hi.Mech.Topo.StaticFreeform.html","topicHref":"Hi.Mech.Topo.StaticFreeform.html","topicUid":"Hi.Mech.Topo.StaticFreeform","type":"Class"},{"name":"StaticRotation","href":"Hi.Mech.Topo.StaticRotation.html","topicHref":"Hi.Mech.Topo.StaticRotation.html","topicUid":"Hi.Mech.Topo.StaticRotation","type":"Class"},{"name":"StaticTranslation","href":"Hi.Mech.Topo.StaticTranslation.html","topicHref":"Hi.Mech.Topo.StaticTranslation.html","topicUid":"Hi.Mech.Topo.StaticTranslation","type":"Class"},{"name":"TopoDisplayee","href":"Hi.Mech.Topo.TopoDisplayee.html","topicHref":"Hi.Mech.Topo.TopoDisplayee.html","topicUid":"Hi.Mech.Topo.TopoDisplayee","type":"Class"},{"name":"TopoDisplayeeUtil","href":"Hi.Mech.Topo.TopoDisplayeeUtil.html","topicHref":"Hi.Mech.Topo.TopoDisplayeeUtil.html","topicUid":"Hi.Mech.Topo.TopoDisplayeeUtil","type":"Class"},{"name":"TopoReflection","href":"Hi.Mech.Topo.TopoReflection.html","topicHref":"Hi.Mech.Topo.TopoReflection.html","topicUid":"Hi.Mech.Topo.TopoReflection","type":"Class"},{"name":"TopoUtil","href":"Hi.Mech.Topo.TopoUtil.html","topicHref":"Hi.Mech.Topo.TopoUtil.html","topicUid":"Hi.Mech.Topo.TopoUtil","type":"Class"},{"name":"TransformerUtil","href":"Hi.Mech.Topo.TransformerUtil.html","topicHref":"Hi.Mech.Topo.TransformerUtil.html","topicUid":"Hi.Mech.Topo.TransformerUtil","type":"Class"}]},{"name":"Hi.Milling","href":"Hi.Milling.html","topicHref":"Hi.Milling.html","topicUid":"Hi.Milling","type":"Namespace","items":[{"name":"IGetDiameter","href":"Hi.Milling.IGetDiameter.html","topicHref":"Hi.Milling.IGetDiameter.html","topicUid":"Hi.Milling.IGetDiameter","type":"Interface"},{"name":"IGetFluteHeight","href":"Hi.Milling.IGetFluteHeight.html","topicHref":"Hi.Milling.IGetFluteHeight.html","topicUid":"Hi.Milling.IGetFluteHeight","type":"Interface"},{"name":"IGetMillingGeomBrief","href":"Hi.Milling.IGetMillingGeomBrief.html","topicHref":"Hi.Milling.IGetMillingGeomBrief.html","topicUid":"Hi.Milling.IGetMillingGeomBrief","type":"Interface"},{"name":"IGetRadialReliefAngle","href":"Hi.Milling.IGetRadialReliefAngle.html","topicHref":"Hi.Milling.IGetRadialReliefAngle.html","topicUid":"Hi.Milling.IGetRadialReliefAngle","type":"Interface"},{"name":"IMillingGeomBriefAccessor","href":"Hi.Milling.IMillingGeomBriefAccessor.html","topicHref":"Hi.Milling.IMillingGeomBriefAccessor.html","topicUid":"Hi.Milling.IMillingGeomBriefAccessor","type":"Interface"},{"name":"MillingGeomBrief","href":"Hi.Milling.MillingGeomBrief.html","topicHref":"Hi.Milling.MillingGeomBrief.html","topicUid":"Hi.Milling.MillingGeomBrief","type":"Class"},{"name":"MillingRemovalUtil","href":"Hi.Milling.MillingRemovalUtil.html","topicHref":"Hi.Milling.MillingRemovalUtil.html","topicUid":"Hi.Milling.MillingRemovalUtil","type":"Class"},{"name":"SpindleCapability","href":"Hi.Milling.SpindleCapability.html","topicHref":"Hi.Milling.SpindleCapability.html","topicUid":"Hi.Milling.SpindleCapability","type":"Class"}]},{"name":"Hi.Milling.Apts","href":"Hi.Milling.Apts.html","topicHref":"Hi.Milling.Apts.html","topicUid":"Hi.Milling.Apts","type":"Namespace","items":[{"name":"AptDerivative","href":"Hi.Milling.Apts.AptDerivative.html","topicHref":"Hi.Milling.Apts.AptDerivative.html","topicUid":"Hi.Milling.Apts.AptDerivative","type":"Class"},{"name":"BallApt","href":"Hi.Milling.Apts.BallApt.html","topicHref":"Hi.Milling.Apts.BallApt.html","topicUid":"Hi.Milling.Apts.BallApt","type":"Class"},{"name":"BullNoseApt","href":"Hi.Milling.Apts.BullNoseApt.html","topicHref":"Hi.Milling.Apts.BullNoseApt.html","topicUid":"Hi.Milling.Apts.BullNoseApt","type":"Class"},{"name":"ColumnApt","href":"Hi.Milling.Apts.ColumnApt.html","topicHref":"Hi.Milling.Apts.ColumnApt.html","topicUid":"Hi.Milling.Apts.ColumnApt","type":"Class"},{"name":"ConeApt","href":"Hi.Milling.Apts.ConeApt.html","topicHref":"Hi.Milling.Apts.ConeApt.html","topicUid":"Hi.Milling.Apts.ConeApt","type":"Class"},{"name":"ExactColumnApt","href":"Hi.Milling.Apts.ExactColumnApt.html","topicHref":"Hi.Milling.Apts.ExactColumnApt.html","topicUid":"Hi.Milling.Apts.ExactColumnApt","type":"Class"},{"name":"GeneralApt","href":"Hi.Milling.Apts.GeneralApt.html","topicHref":"Hi.Milling.Apts.GeneralApt.html","topicUid":"Hi.Milling.Apts.GeneralApt","type":"Class"},{"name":"IAptAlpha","href":"Hi.Milling.Apts.IAptAlpha.html","topicHref":"Hi.Milling.Apts.IAptAlpha.html","topicUid":"Hi.Milling.Apts.IAptAlpha","type":"Interface"},{"name":"IAptBased","href":"Hi.Milling.Apts.IAptBased.html","topicHref":"Hi.Milling.Apts.IAptBased.html","topicUid":"Hi.Milling.Apts.IAptBased","type":"Interface"},{"name":"IAptBeta","href":"Hi.Milling.Apts.IAptBeta.html","topicHref":"Hi.Milling.Apts.IAptBeta.html","topicUid":"Hi.Milling.Apts.IAptBeta","type":"Interface"},{"name":"IAptRc","href":"Hi.Milling.Apts.IAptRc.html","topicHref":"Hi.Milling.Apts.IAptRc.html","topicUid":"Hi.Milling.Apts.IAptRc","type":"Interface"},{"name":"IAptRr","href":"Hi.Milling.Apts.IAptRr.html","topicHref":"Hi.Milling.Apts.IAptRr.html","topicUid":"Hi.Milling.Apts.IAptRr","type":"Interface"},{"name":"IAptRz","href":"Hi.Milling.Apts.IAptRz.html","topicHref":"Hi.Milling.Apts.IAptRz.html","topicUid":"Hi.Milling.Apts.IAptRz","type":"Interface"},{"name":"IGetApt","href":"Hi.Milling.Apts.IGetApt.html","topicHref":"Hi.Milling.Apts.IGetApt.html","topicUid":"Hi.Milling.Apts.IGetApt","type":"Interface"},{"name":"IGetGeneralApt","href":"Hi.Milling.Apts.IGetGeneralApt.html","topicHref":"Hi.Milling.Apts.IGetGeneralApt.html","topicUid":"Hi.Milling.Apts.IGetGeneralApt","type":"Interface"},{"name":"TaperApt","href":"Hi.Milling.Apts.TaperApt.html","topicHref":"Hi.Milling.Apts.TaperApt.html","topicUid":"Hi.Milling.Apts.TaperApt","type":"Class"},{"name":"apt_t","href":"Hi.Milling.Apts.apt_t.html","topicHref":"Hi.Milling.Apts.apt_t.html","topicUid":"Hi.Milling.Apts.apt_t","type":"Struct"}]},{"name":"Hi.Milling.Cutters","href":"Hi.Milling.Cutters.html","topicHref":"Hi.Milling.Cutters.html","topicUid":"Hi.Milling.Cutters","type":"Namespace","items":[{"name":"AptProfile","href":"Hi.Milling.Cutters.AptProfile.html","topicHref":"Hi.Milling.Cutters.AptProfile.html","topicUid":"Hi.Milling.Cutters.AptProfile","type":"Class"},{"name":"ConstRatioProfile","href":"Hi.Milling.Cutters.ConstRatioProfile.html","topicHref":"Hi.Milling.Cutters.ConstRatioProfile.html","topicUid":"Hi.Milling.Cutters.ConstRatioProfile","type":"Class"},{"name":"CustomSpinningProfile","href":"Hi.Milling.Cutters.CustomSpinningProfile.html","topicHref":"Hi.Milling.Cutters.CustomSpinningProfile.html","topicUid":"Hi.Milling.Cutters.CustomSpinningProfile","type":"Class"},{"name":"CutterUtil","href":"Hi.Milling.Cutters.CutterUtil.html","topicHref":"Hi.Milling.Cutters.CutterUtil.html","topicUid":"Hi.Milling.Cutters.CutterUtil","type":"Class"},{"name":"FluteContourDisplayee","href":"Hi.Milling.Cutters.FluteContourDisplayee.html","topicHref":"Hi.Milling.Cutters.FluteContourDisplayee.html","topicUid":"Hi.Milling.Cutters.FluteContourDisplayee","type":"Class"},{"name":"FluteDependentRatioProfile","href":"Hi.Milling.Cutters.FluteDependentRatioProfile.html","topicHref":"Hi.Milling.Cutters.FluteDependentRatioProfile.html","topicUid":"Hi.Milling.Cutters.FluteDependentRatioProfile","type":"Class"},{"name":"IShaperProfile","href":"Hi.Milling.Cutters.IShaperProfile.html","topicHref":"Hi.Milling.Cutters.IShaperProfile.html","topicUid":"Hi.Milling.Cutters.IShaperProfile","type":"Interface"},{"name":"MillingCutter","href":"Hi.Milling.Cutters.MillingCutter.html","topicHref":"Hi.Milling.Cutters.MillingCutter.html","topicUid":"Hi.Milling.Cutters.MillingCutter","type":"Class"},{"name":"MillingCutter.IntegralModeEnum","href":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum.html","topicHref":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum.html","topicUid":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum","type":"Enum"},{"name":"MillingCutter.MassAssignmentMode","href":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode.html","topicHref":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode.html","topicUid":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode","type":"Enum"},{"name":"MillingCutterEditorDisplayee","href":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.html","topicHref":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.html","topicUid":"Hi.Milling.Cutters.MillingCutterEditorDisplayee","type":"Class"},{"name":"MillingCutterEditorDisplayee.ShapeModeEnum","href":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum.html","topicHref":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum.html","topicUid":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum","type":"Enum"}]},{"name":"Hi.Milling.Engagements","href":"Hi.Milling.Engagements.html","topicHref":"Hi.Milling.Engagements.html","topicUid":"Hi.Milling.Engagements","type":"Namespace","items":[{"name":"BitwiseMillingEngagement","href":"Hi.Milling.Engagements.BitwiseMillingEngagement.html","topicHref":"Hi.Milling.Engagements.BitwiseMillingEngagement.html","topicUid":"Hi.Milling.Engagements.BitwiseMillingEngagement","type":"Class"},{"name":"EngagementLayer","href":"Hi.Milling.Engagements.EngagementLayer.html","topicHref":"Hi.Milling.Engagements.EngagementLayer.html","topicUid":"Hi.Milling.Engagements.EngagementLayer","type":"Class"},{"name":"EngagementSlice","href":"Hi.Milling.Engagements.EngagementSlice.html","topicHref":"Hi.Milling.Engagements.EngagementSlice.html","topicUid":"Hi.Milling.Engagements.EngagementSlice","type":"Class"},{"name":"IBitwiseMillingEngagementSupport","href":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport.html","topicHref":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport.html","topicUid":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport","type":"Interface"},{"name":"IGetLayerMillingEngagement","href":"Hi.Milling.Engagements.IGetLayerMillingEngagement.html","topicHref":"Hi.Milling.Engagements.IGetLayerMillingEngagement.html","topicUid":"Hi.Milling.Engagements.IGetLayerMillingEngagement","type":"Interface"},{"name":"LayerMillingEngagement","href":"Hi.Milling.Engagements.LayerMillingEngagement.html","topicHref":"Hi.Milling.Engagements.LayerMillingEngagement.html","topicUid":"Hi.Milling.Engagements.LayerMillingEngagement","type":"Class"},{"name":"MillingEngagementUtil","href":"Hi.Milling.Engagements.MillingEngagementUtil.html","topicHref":"Hi.Milling.Engagements.MillingEngagementUtil.html","topicUid":"Hi.Milling.Engagements.MillingEngagementUtil","type":"Class"}]},{"name":"Hi.Milling.FluteContours","href":"Hi.Milling.FluteContours.html","topicHref":"Hi.Milling.FluteContours.html","topicUid":"Hi.Milling.FluteContours","type":"Namespace","items":[{"name":"ConstHelixSideContour","href":"Hi.Milling.FluteContours.ConstHelixSideContour.html","topicHref":"Hi.Milling.FluteContours.ConstHelixSideContour.html","topicUid":"Hi.Milling.FluteContours.ConstHelixSideContour","type":"Class"},{"name":"FluteContour","href":"Hi.Milling.FluteContours.FluteContour.html","topicHref":"Hi.Milling.FluteContours.FluteContour.html","topicUid":"Hi.Milling.FluteContours.FluteContour","type":"Class"},{"name":"FluteContourUtil","href":"Hi.Milling.FluteContours.FluteContourUtil.html","topicHref":"Hi.Milling.FluteContours.FluteContourUtil.html","topicUid":"Hi.Milling.FluteContours.FluteContourUtil","type":"Class"},{"name":"FreeContourTray","href":"Hi.Milling.FluteContours.FreeContourTray.html","topicHref":"Hi.Milling.FluteContours.FreeContourTray.html","topicUid":"Hi.Milling.FluteContours.FreeContourTray","type":"Class"},{"name":"FreeformSideContour","href":"Hi.Milling.FluteContours.FreeformSideContour.html","topicHref":"Hi.Milling.FluteContours.FreeformSideContour.html","topicUid":"Hi.Milling.FluteContours.FreeformSideContour","type":"Class"},{"name":"IBottomContour","href":"Hi.Milling.FluteContours.IBottomContour.html","topicHref":"Hi.Milling.FluteContours.IBottomContour.html","topicUid":"Hi.Milling.FluteContours.IBottomContour","type":"Interface"},{"name":"IContourTray","href":"Hi.Milling.FluteContours.IContourTray.html","topicHref":"Hi.Milling.FluteContours.IContourTray.html","topicUid":"Hi.Milling.FluteContours.IContourTray","type":"Interface"},{"name":"IFluteNumSourceProperty","href":"Hi.Milling.FluteContours.IFluteNumSourceProperty.html","topicHref":"Hi.Milling.FluteContours.IFluteNumSourceProperty.html","topicUid":"Hi.Milling.FluteContours.IFluteNumSourceProperty","type":"Interface"},{"name":"IGetFluteNum","href":"Hi.Milling.FluteContours.IGetFluteNum.html","topicHref":"Hi.Milling.FluteContours.IGetFluteNum.html","topicUid":"Hi.Milling.FluteContours.IGetFluteNum","type":"Interface"},{"name":"ISideContour","href":"Hi.Milling.FluteContours.ISideContour.html","topicHref":"Hi.Milling.FluteContours.ISideContour.html","topicUid":"Hi.Milling.FluteContours.ISideContour","type":"Interface"},{"name":"IWorkingContour","href":"Hi.Milling.FluteContours.IWorkingContour.html","topicHref":"Hi.Milling.FluteContours.IWorkingContour.html","topicUid":"Hi.Milling.FluteContours.IWorkingContour","type":"Interface"},{"name":"ShiftedWorkingContour","href":"Hi.Milling.FluteContours.ShiftedWorkingContour.html","topicHref":"Hi.Milling.FluteContours.ShiftedWorkingContour.html","topicUid":"Hi.Milling.FluteContours.ShiftedWorkingContour","type":"Class"},{"name":"SideContourDisplayee","href":"Hi.Milling.FluteContours.SideContourDisplayee.html","topicHref":"Hi.Milling.FluteContours.SideContourDisplayee.html","topicUid":"Hi.Milling.FluteContours.SideContourDisplayee","type":"Class"},{"name":"SlideBottomContour","href":"Hi.Milling.FluteContours.SlideBottomContour.html","topicHref":"Hi.Milling.FluteContours.SlideBottomContour.html","topicUid":"Hi.Milling.FluteContours.SlideBottomContour","type":"Class"},{"name":"SpanContourPos4d","href":"Hi.Milling.FluteContours.SpanContourPos4d.html","topicHref":"Hi.Milling.FluteContours.SpanContourPos4d.html","topicUid":"Hi.Milling.FluteContours.SpanContourPos4d","type":"Class"},{"name":"UniformContourTray","href":"Hi.Milling.FluteContours.UniformContourTray.html","topicHref":"Hi.Milling.FluteContours.UniformContourTray.html","topicUid":"Hi.Milling.FluteContours.UniformContourTray","type":"Class"}]},{"name":"Hi.Milling.MillingTools","href":"Hi.Milling.MillingTools.html","topicHref":"Hi.Milling.MillingTools.html","topicUid":"Hi.Milling.MillingTools","type":"Namespace","items":[{"name":"MillingTool","href":"Hi.Milling.MillingTools.MillingTool.html","topicHref":"Hi.Milling.MillingTools.MillingTool.html","topicUid":"Hi.Milling.MillingTools.MillingTool","type":"Class"},{"name":"MillingToolAnchorReference","href":"Hi.Milling.MillingTools.MillingToolAnchorReference.html","topicHref":"Hi.Milling.MillingTools.MillingToolAnchorReference.html","topicUid":"Hi.Milling.MillingTools.MillingToolAnchorReference","type":"Enum"},{"name":"MillingToolEditorDisplayee","href":"Hi.Milling.MillingTools.MillingToolEditorDisplayee.html","topicHref":"Hi.Milling.MillingTools.MillingToolEditorDisplayee.html","topicUid":"Hi.Milling.MillingTools.MillingToolEditorDisplayee","type":"Class"},{"name":"MillingToolUtil","href":"Hi.Milling.MillingTools.MillingToolUtil.html","topicHref":"Hi.Milling.MillingTools.MillingToolUtil.html","topicUid":"Hi.Milling.MillingTools.MillingToolUtil","type":"Class"}]},{"name":"Hi.MillingForces","href":"Hi.MillingForces.html","topicHref":"Hi.MillingForces.html","topicUid":"Hi.MillingForces","type":"Namespace","items":[{"name":"FluteZData","href":"Hi.MillingForces.FluteZData.html","topicHref":"Hi.MillingForces.FluteZData.html","topicUid":"Hi.MillingForces.FluteZData","type":"Class"},{"name":"IGetMillingForce","href":"Hi.MillingForces.IGetMillingForce.html","topicHref":"Hi.MillingForces.IGetMillingForce.html","topicUid":"Hi.MillingForces.IGetMillingForce","type":"Interface"},{"name":"IMillingForceAccessor","href":"Hi.MillingForces.IMillingForceAccessor.html","topicHref":"Hi.MillingForces.IMillingForceAccessor.html","topicUid":"Hi.MillingForces.IMillingForceAccessor","type":"Interface"},{"name":"MillingForce","href":"Hi.MillingForces.MillingForce.html","topicHref":"Hi.MillingForces.MillingForce.html","topicUid":"Hi.MillingForces.MillingForce","type":"Class"},{"name":"MillingForceLicense","href":"Hi.MillingForces.MillingForceLicense.html","topicHref":"Hi.MillingForces.MillingForceLicense.html","topicUid":"Hi.MillingForces.MillingForceLicense","type":"Class"},{"name":"MillingForceLuggage","href":"Hi.MillingForces.MillingForceLuggage.html","topicHref":"Hi.MillingForces.MillingForceLuggage.html","topicUid":"Hi.MillingForces.MillingForceLuggage","type":"Class"},{"name":"MillingForceUtil","href":"Hi.MillingForces.MillingForceUtil.html","topicHref":"Hi.MillingForces.MillingForceUtil.html","topicUid":"Hi.MillingForces.MillingForceUtil","type":"Class"},{"name":"MillingForceUtil.AnglePack","href":"Hi.MillingForces.MillingForceUtil.AnglePack.html","topicHref":"Hi.MillingForces.MillingForceUtil.AnglePack.html","topicUid":"Hi.MillingForces.MillingForceUtil.AnglePack","type":"Class"},{"name":"MillingPhysicsBrief","href":"Hi.MillingForces.MillingPhysicsBrief.html","topicHref":"Hi.MillingForces.MillingPhysicsBrief.html","topicUid":"Hi.MillingForces.MillingPhysicsBrief","type":"Class"},{"name":"PhysicsUtil","href":"Hi.MillingForces.PhysicsUtil.html","topicHref":"Hi.MillingForces.PhysicsUtil.html","topicUid":"Hi.MillingForces.PhysicsUtil","type":"Class"},{"name":"ToolObservationReference","href":"Hi.MillingForces.ToolObservationReference.html","topicHref":"Hi.MillingForces.ToolObservationReference.html","topicUid":"Hi.MillingForces.ToolObservationReference","type":"Enum"}]},{"name":"Hi.MillingForces.Fittings","href":"Hi.MillingForces.Fittings.html","topicHref":"Hi.MillingForces.Fittings.html","topicUid":"Hi.MillingForces.Fittings","type":"Namespace","items":[{"name":"CuttingParaUtil","href":"Hi.MillingForces.Fittings.CuttingParaUtil.html","topicHref":"Hi.MillingForces.Fittings.CuttingParaUtil.html","topicUid":"Hi.MillingForces.Fittings.CuttingParaUtil","type":"Class"},{"name":"ICuttingPara","href":"Hi.MillingForces.Fittings.ICuttingPara.html","topicHref":"Hi.MillingForces.Fittings.ICuttingPara.html","topicUid":"Hi.MillingForces.Fittings.ICuttingPara","type":"Interface"},{"name":"IGetCuttingPara","href":"Hi.MillingForces.Fittings.IGetCuttingPara.html","topicHref":"Hi.MillingForces.Fittings.IGetCuttingPara.html","topicUid":"Hi.MillingForces.Fittings.IGetCuttingPara","type":"Interface"},{"name":"SampleCategory","href":"Hi.MillingForces.Fittings.SampleCategory.html","topicHref":"Hi.MillingForces.Fittings.SampleCategory.html","topicUid":"Hi.MillingForces.Fittings.SampleCategory","type":"Class"},{"name":"SampleFlag","href":"Hi.MillingForces.Fittings.SampleFlag.html","topicHref":"Hi.MillingForces.Fittings.SampleFlag.html","topicUid":"Hi.MillingForces.Fittings.SampleFlag","type":"Enum"},{"name":"SampleFlagUtil","href":"Hi.MillingForces.Fittings.SampleFlagUtil.html","topicHref":"Hi.MillingForces.Fittings.SampleFlagUtil.html","topicUid":"Hi.MillingForces.Fittings.SampleFlagUtil","type":"Class"},{"name":"SampleInstance","href":"Hi.MillingForces.Fittings.SampleInstance.html","topicHref":"Hi.MillingForces.Fittings.SampleInstance.html","topicUid":"Hi.MillingForces.Fittings.SampleInstance","type":"Class"},{"name":"TimeForce","href":"Hi.MillingForces.Fittings.TimeForce.html","topicHref":"Hi.MillingForces.Fittings.TimeForce.html","topicUid":"Hi.MillingForces.Fittings.TimeForce","type":"Class"},{"name":"TimeForceFrequencyDomain","href":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain.html","topicHref":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain.html","topicUid":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain","type":"Class"},{"name":"TimeForceSeries","href":"Hi.MillingForces.Fittings.TimeForceSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeForceSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeForceSeries","type":"Class"},{"name":"TimeForceUtil","href":"Hi.MillingForces.Fittings.TimeForceUtil.html","topicHref":"Hi.MillingForces.Fittings.TimeForceUtil.html","topicUid":"Hi.MillingForces.Fittings.TimeForceUtil","type":"Class"},{"name":"TimeVsForceSeries","href":"Hi.MillingForces.Fittings.TimeVsForceSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeVsForceSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeVsForceSeries","type":"Class"},{"name":"TimeVsTorqueSeries","href":"Hi.MillingForces.Fittings.TimeVsTorqueSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeVsTorqueSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeVsTorqueSeries","type":"Class"},{"name":"TrainingSample","href":"Hi.MillingForces.Fittings.TrainingSample.html","topicHref":"Hi.MillingForces.Fittings.TrainingSample.html","topicUid":"Hi.MillingForces.Fittings.TrainingSample","type":"Class"}]},{"name":"Hi.MillingForces.ProfileMillingParas","href":"Hi.MillingForces.ProfileMillingParas.html","topicHref":"Hi.MillingForces.ProfileMillingParas.html","topicUid":"Hi.MillingForces.ProfileMillingParas","type":"Namespace","items":[{"name":"IGetLocalProfileMillingPara","href":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara.html","topicHref":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara.html","topicUid":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara","type":"Interface"},{"name":"LocalProfileMillingPara","href":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html","topicHref":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html","topicUid":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara","type":"Class"},{"name":"ProfileMillingParaMap","href":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap.html","topicHref":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap.html","topicUid":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap","type":"Class"},{"name":"RtaMillingParaKey","href":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey.html","topicHref":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey.html","topicUid":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey","type":"Enum"}]},{"name":"Hi.MillingForces.RakeFaceCuttingParas","href":"Hi.MillingForces.RakeFaceCuttingParas.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas","type":"Namespace","items":[{"name":"IRakeFaceCuttingPara","href":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara","type":"Interface"},{"name":"MillingPhysicsUtil","href":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil","type":"Class"},{"name":"MultiFormRakeFaceCuttingPara","href":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara","type":"Class"},{"name":"RakeFaceCuttingPara2d","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d","type":"Class"},{"name":"RakeFaceCuttingPara3d","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d","type":"Class"},{"name":"RakeFaceCuttingParaMap","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap","type":"Class"}]},{"name":"Hi.MillingForces.Training","href":"Hi.MillingForces.Training.html","topicHref":"Hi.MillingForces.Training.html","topicUid":"Hi.MillingForces.Training","type":"Namespace","items":[{"name":"MillingTraining","href":"Hi.MillingForces.Training.MillingTraining.html","topicHref":"Hi.MillingForces.Training.MillingTraining.html","topicUid":"Hi.MillingForces.Training.MillingTraining","type":"Class"}]},{"name":"Hi.MillingProcs","href":"Hi.MillingProcs.html","topicHref":"Hi.MillingProcs.html","topicUid":"Hi.MillingProcs","type":"Namespace","items":[{"name":"MillingGuide","href":"Hi.MillingProcs.MillingGuide.html","topicHref":"Hi.MillingProcs.MillingGuide.html","topicUid":"Hi.MillingProcs.MillingGuide","type":"Class"}]},{"name":"Hi.MillingStepUtils","href":"Hi.MillingStepUtils.html","topicHref":"Hi.MillingStepUtils.html","topicUid":"Hi.MillingStepUtils","type":"Namespace","items":[{"name":"ClStripChartConfig","href":"Hi.MillingStepUtils.ClStripChartConfig.html","topicHref":"Hi.MillingStepUtils.ClStripChartConfig.html","topicUid":"Hi.MillingStepUtils.ClStripChartConfig","type":"Class"},{"name":"ClStripChartItemConfig","href":"Hi.MillingStepUtils.ClStripChartItemConfig.html","topicHref":"Hi.MillingStepUtils.ClStripChartItemConfig.html","topicUid":"Hi.MillingStepUtils.ClStripChartItemConfig","type":"Class"},{"name":"ForceCycleFlag","href":"Hi.MillingStepUtils.ForceCycleFlag.html","topicHref":"Hi.MillingStepUtils.ForceCycleFlag.html","topicUid":"Hi.MillingStepUtils.ForceCycleFlag","type":"Enum"},{"name":"ForceCycleLineDivConfig","href":"Hi.MillingStepUtils.ForceCycleLineDivConfig.html","topicHref":"Hi.MillingStepUtils.ForceCycleLineDivConfig.html","topicUid":"Hi.MillingStepUtils.ForceCycleLineDivConfig","type":"Class"},{"name":"LineChartVRangeMode","href":"Hi.MillingStepUtils.LineChartVRangeMode.html","topicHref":"Hi.MillingStepUtils.LineChartVRangeMode.html","topicUid":"Hi.MillingStepUtils.LineChartVRangeMode","type":"Enum"},{"name":"SpindleMomentCycleLineDivConfig","href":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig.html","topicHref":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig.html","topicUid":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig","type":"Class"},{"name":"TimeChartYConfig","href":"Hi.MillingStepUtils.TimeChartYConfig.html","topicHref":"Hi.MillingStepUtils.TimeChartYConfig.html","topicUid":"Hi.MillingStepUtils.TimeChartYConfig","type":"Class"}]},{"name":"Hi.MillingSteps","href":"Hi.MillingSteps.html","topicHref":"Hi.MillingSteps.html","topicUid":"Hi.MillingSteps","type":"Namespace","items":[{"name":"MillingInstance","href":"Hi.MillingSteps.MillingInstance.html","topicHref":"Hi.MillingSteps.MillingInstance.html","topicUid":"Hi.MillingSteps.MillingInstance","type":"Class"},{"name":"MillingStepLuggage","href":"Hi.MillingSteps.MillingStepLuggage.html","topicHref":"Hi.MillingSteps.MillingStepLuggage.html","topicUid":"Hi.MillingSteps.MillingStepLuggage","type":"Class"}]},{"name":"Hi.Motion","href":"Hi.Motion.html","topicHref":"Hi.Motion.html","topicUid":"Hi.Motion","type":"Namespace","items":[{"name":"MotionUtil","href":"Hi.Motion.MotionUtil.html","topicHref":"Hi.Motion.MotionUtil.html","topicUid":"Hi.Motion.MotionUtil","type":"Class"}]},{"name":"Hi.Motion.MatValves","href":"Hi.Motion.MatValves.html","topicHref":"Hi.Motion.MatValves.html","topicUid":"Hi.Motion.MatValves","type":"Namespace","items":[{"name":"ClMachiningValve","href":"Hi.Motion.MatValves.ClMachiningValve.html","topicHref":"Hi.Motion.MatValves.ClMachiningValve.html","topicUid":"Hi.Motion.MatValves.ClMachiningValve","type":"Class"},{"name":"IMotionValve","href":"Hi.Motion.MatValves.IMotionValve.html","topicHref":"Hi.Motion.MatValves.IMotionValve.html","topicUid":"Hi.Motion.MatValves.IMotionValve","type":"Interface"},{"name":"MacroMotionValve","href":"Hi.Motion.MatValves.MacroMotionValve.html","topicHref":"Hi.Motion.MatValves.MacroMotionValve.html","topicUid":"Hi.Motion.MatValves.MacroMotionValve","type":"Class"},{"name":"StepMotionValve","href":"Hi.Motion.MatValves.StepMotionValve.html","topicHref":"Hi.Motion.MatValves.StepMotionValve.html","topicUid":"Hi.Motion.MatValves.StepMotionValve","type":"Class"}]},{"name":"Hi.Native","href":"Hi.Native.html","topicHref":"Hi.Native.html","topicUid":"Hi.Native","type":"Namespace","items":[{"name":"StopSource","href":"Hi.Native.StopSource.html","topicHref":"Hi.Native.StopSource.html","topicUid":"Hi.Native.StopSource","type":"Class"},{"name":"StopToken","href":"Hi.Native.StopToken.html","topicHref":"Hi.Native.StopToken.html","topicUid":"Hi.Native.StopToken","type":"Class"},{"name":"StopTokenKit","href":"Hi.Native.StopTokenKit.html","topicHref":"Hi.Native.StopTokenKit.html","topicUid":"Hi.Native.StopTokenKit","type":"Class"},{"name":"StopTokenUtil","href":"Hi.Native.StopTokenUtil.html","topicHref":"Hi.Native.StopTokenUtil.html","topicUid":"Hi.Native.StopTokenUtil","type":"Class"},{"name":"bind_t","href":"Hi.Native.bind_t.html","topicHref":"Hi.Native.bind_t.html","topicUid":"Hi.Native.bind_t","type":"Struct"},{"name":"box2d","href":"Hi.Native.box2d.html","topicHref":"Hi.Native.box2d.html","topicUid":"Hi.Native.box2d","type":"Struct"},{"name":"box3d","href":"Hi.Native.box3d.html","topicHref":"Hi.Native.box3d.html","topicUid":"Hi.Native.box3d","type":"Struct"},{"name":"expand_to_box3d_func_t","href":"Hi.Native.expand_to_box3d_func_t.html","topicHref":"Hi.Native.expand_to_box3d_func_t.html","topicUid":"Hi.Native.expand_to_box3d_func_t","type":"Delegate"},{"name":"key_event_t","href":"Hi.Native.key_event_t.html","topicHref":"Hi.Native.key_event_t.html","topicUid":"Hi.Native.key_event_t","type":"Struct"},{"name":"key_table__transform_view_by_key_pressing_t","href":"Hi.Native.key_table__transform_view_by_key_pressing_t.html","topicHref":"Hi.Native.key_table__transform_view_by_key_pressing_t.html","topicUid":"Hi.Native.key_table__transform_view_by_key_pressing_t","type":"Struct"},{"name":"mat4d","href":"Hi.Native.mat4d.html","topicHref":"Hi.Native.mat4d.html","topicUid":"Hi.Native.mat4d","type":"Struct"},{"name":"mat_stack_t","href":"Hi.Native.mat_stack_t.html","topicHref":"Hi.Native.mat_stack_t.html","topicUid":"Hi.Native.mat_stack_t","type":"Struct"},{"name":"mouse_button_event_t","href":"Hi.Native.mouse_button_event_t.html","topicHref":"Hi.Native.mouse_button_event_t.html","topicUid":"Hi.Native.mouse_button_event_t","type":"Struct"},{"name":"mouse_button_table__transform_view_by_mouse_drag_t","href":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t.html","topicHref":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t.html","topicUid":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t","type":"Struct"},{"name":"mouse_move_event_t","href":"Hi.Native.mouse_move_event_t.html","topicHref":"Hi.Native.mouse_move_event_t.html","topicUid":"Hi.Native.mouse_move_event_t","type":"Struct"},{"name":"mouse_wheel_event_t","href":"Hi.Native.mouse_wheel_event_t.html","topicHref":"Hi.Native.mouse_wheel_event_t.html","topicUid":"Hi.Native.mouse_wheel_event_t","type":"Struct"},{"name":"panel_state_t","href":"Hi.Native.panel_state_t.html","topicHref":"Hi.Native.panel_state_t.html","topicUid":"Hi.Native.panel_state_t","type":"Struct"},{"name":"picking_event_t","href":"Hi.Native.picking_event_t.html","topicHref":"Hi.Native.picking_event_t.html","topicUid":"Hi.Native.picking_event_t","type":"Struct"},{"name":"picking_mark_t","href":"Hi.Native.picking_mark_t.html","topicHref":"Hi.Native.picking_mark_t.html","topicUid":"Hi.Native.picking_mark_t","type":"Struct"},{"name":"tri3d","href":"Hi.Native.tri3d.html","topicHref":"Hi.Native.tri3d.html","topicUid":"Hi.Native.tri3d","type":"Struct"},{"name":"ui_event_type","href":"Hi.Native.ui_event_type.html","topicHref":"Hi.Native.ui_event_type.html","topicUid":"Hi.Native.ui_event_type","type":"Enum"},{"name":"vec2d","href":"Hi.Native.vec2d.html","topicHref":"Hi.Native.vec2d.html","topicUid":"Hi.Native.vec2d","type":"Struct"},{"name":"vec3d","href":"Hi.Native.vec3d.html","topicHref":"Hi.Native.vec3d.html","topicUid":"Hi.Native.vec3d","type":"Struct"},{"name":"vec3f","href":"Hi.Native.vec3f.html","topicHref":"Hi.Native.vec3f.html","topicUid":"Hi.Native.vec3f","type":"Struct"}]},{"name":"Hi.NcMech","href":"Hi.NcMech.html","topicHref":"Hi.NcMech.html","topicUid":"Hi.NcMech","type":"Namespace","items":[{"name":"ICollisionIndexPairsSource","href":"Hi.NcMech.ICollisionIndexPairsSource.html","topicHref":"Hi.NcMech.ICollisionIndexPairsSource.html","topicUid":"Hi.NcMech.ICollisionIndexPairsSource","type":"Interface"}]},{"name":"Hi.NcMech.Fixtures","href":"Hi.NcMech.Fixtures.html","topicHref":"Hi.NcMech.Fixtures.html","topicUid":"Hi.NcMech.Fixtures","type":"Namespace","items":[{"name":"Fixture","href":"Hi.NcMech.Fixtures.Fixture.html","topicHref":"Hi.NcMech.Fixtures.Fixture.html","topicUid":"Hi.NcMech.Fixtures.Fixture","type":"Class"},{"name":"FixtureEditorDisplayee","href":"Hi.NcMech.Fixtures.FixtureEditorDisplayee.html","topicHref":"Hi.NcMech.Fixtures.FixtureEditorDisplayee.html","topicUid":"Hi.NcMech.Fixtures.FixtureEditorDisplayee","type":"Class"},{"name":"FixtureEditorDisplayeeConfig","href":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html","topicHref":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html","topicUid":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig","type":"Class"}]},{"name":"Hi.NcMech.Holders","href":"Hi.NcMech.Holders.html","topicHref":"Hi.NcMech.Holders.html","topicUid":"Hi.NcMech.Holders","type":"Namespace","items":[{"name":"CylindroidHolder","href":"Hi.NcMech.Holders.CylindroidHolder.html","topicHref":"Hi.NcMech.Holders.CylindroidHolder.html","topicUid":"Hi.NcMech.Holders.CylindroidHolder","type":"Class"},{"name":"FreeformHolder","href":"Hi.NcMech.Holders.FreeformHolder.html","topicHref":"Hi.NcMech.Holders.FreeformHolder.html","topicUid":"Hi.NcMech.Holders.FreeformHolder","type":"Class"},{"name":"HolderEditorDisplayee","href":"Hi.NcMech.Holders.HolderEditorDisplayee.html","topicHref":"Hi.NcMech.Holders.HolderEditorDisplayee.html","topicUid":"Hi.NcMech.Holders.HolderEditorDisplayee","type":"Class"},{"name":"IHolder","href":"Hi.NcMech.Holders.IHolder.html","topicHref":"Hi.NcMech.Holders.IHolder.html","topicUid":"Hi.NcMech.Holders.IHolder","type":"Interface"}]},{"name":"Hi.NcMech.Solids","href":"Hi.NcMech.Solids.html","topicHref":"Hi.NcMech.Solids.html","topicUid":"Hi.NcMech.Solids","type":"Namespace","items":[{"name":"IGetSolid","href":"Hi.NcMech.Solids.IGetSolid.html","topicHref":"Hi.NcMech.Solids.IGetSolid.html","topicUid":"Hi.NcMech.Solids.IGetSolid","type":"Interface"},{"name":"Solid","href":"Hi.NcMech.Solids.Solid.html","topicHref":"Hi.NcMech.Solids.Solid.html","topicUid":"Hi.NcMech.Solids.Solid","type":"Class"},{"name":"Solid.RenderingModeEnum","href":"Hi.NcMech.Solids.Solid.RenderingModeEnum.html","topicHref":"Hi.NcMech.Solids.Solid.RenderingModeEnum.html","topicUid":"Hi.NcMech.Solids.Solid.RenderingModeEnum","type":"Enum"},{"name":"SolidFuncSource","href":"Hi.NcMech.Solids.SolidFuncSource.html","topicHref":"Hi.NcMech.Solids.SolidFuncSource.html","topicUid":"Hi.NcMech.Solids.SolidFuncSource","type":"Class"}]},{"name":"Hi.NcMech.Topo","href":"Hi.NcMech.Topo.html","topicHref":"Hi.NcMech.Topo.html","topicUid":"Hi.NcMech.Topo","type":"Namespace","items":[{"name":"INcStroke","href":"Hi.NcMech.Topo.INcStroke.html","topicHref":"Hi.NcMech.Topo.INcStroke.html","topicUid":"Hi.NcMech.Topo.INcStroke","type":"Interface"},{"name":"INcTransformer","href":"Hi.NcMech.Topo.INcTransformer.html","topicHref":"Hi.NcMech.Topo.INcTransformer.html","topicUid":"Hi.NcMech.Topo.INcTransformer","type":"Interface"},{"name":"ITopoBrick","href":"Hi.NcMech.Topo.ITopoBrick.html","topicHref":"Hi.NcMech.Topo.ITopoBrick.html","topicUid":"Hi.NcMech.Topo.ITopoBrick","type":"Interface"},{"name":"NcRotation","href":"Hi.NcMech.Topo.NcRotation.html","topicHref":"Hi.NcMech.Topo.NcRotation.html","topicUid":"Hi.NcMech.Topo.NcRotation","type":"Class"},{"name":"NcTranslation","href":"Hi.NcMech.Topo.NcTranslation.html","topicHref":"Hi.NcMech.Topo.NcTranslation.html","topicUid":"Hi.NcMech.Topo.NcTranslation","type":"Class"},{"name":"SolidSourceTopoBrick","href":"Hi.NcMech.Topo.SolidSourceTopoBrick.html","topicHref":"Hi.NcMech.Topo.SolidSourceTopoBrick.html","topicUid":"Hi.NcMech.Topo.SolidSourceTopoBrick","type":"Class"},{"name":"StlSourceTopoBrick","href":"Hi.NcMech.Topo.StlSourceTopoBrick.html","topicHref":"Hi.NcMech.Topo.StlSourceTopoBrick.html","topicUid":"Hi.NcMech.Topo.StlSourceTopoBrick","type":"Class"}]},{"name":"Hi.NcMech.Workpieces","href":"Hi.NcMech.Workpieces.html","topicHref":"Hi.NcMech.Workpieces.html","topicUid":"Hi.NcMech.Workpieces","type":"Namespace","items":[{"name":"Workpiece","href":"Hi.NcMech.Workpieces.Workpiece.html","topicHref":"Hi.NcMech.Workpieces.Workpiece.html","topicUid":"Hi.NcMech.Workpieces.Workpiece","type":"Class"},{"name":"WorkpieceEditorDisplayee","href":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html","topicHref":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html","topicUid":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee","type":"Class"},{"name":"WorkpieceEditorDisplayeeConfig","href":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html","topicHref":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html","topicUid":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig","type":"Class"}]},{"name":"Hi.NcMech.Xyzabc","href":"Hi.NcMech.Xyzabc.html","topicHref":"Hi.NcMech.Xyzabc.html","topicUid":"Hi.NcMech.Xyzabc","type":"Namespace","items":[{"name":"CodeXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool","type":"Class"},{"name":"CodeXyzabcMachineToolUri","href":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html","topicHref":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html","topicUid":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri","type":"Class"},{"name":"GeneralXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool","type":"Class"},{"name":"IGetCodeXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool","type":"Interface"},{"name":"IXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.IXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.IXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.IXyzabcMachineTool","type":"Interface"}]},{"name":"Hi.NcOpt","href":"Hi.NcOpt.html","topicHref":"Hi.NcOpt.html","topicUid":"Hi.NcOpt","type":"Namespace","items":[{"name":"CuttingVelocityOptLimit","href":"Hi.NcOpt.CuttingVelocityOptLimit.html","topicHref":"Hi.NcOpt.CuttingVelocityOptLimit.html","topicUid":"Hi.NcOpt.CuttingVelocityOptLimit","type":"Class"},{"name":"FixedFeedPerCycleOptLimit","href":"Hi.NcOpt.FixedFeedPerCycleOptLimit.html","topicHref":"Hi.NcOpt.FixedFeedPerCycleOptLimit.html","topicUid":"Hi.NcOpt.FixedFeedPerCycleOptLimit","type":"Class"},{"name":"FixedFeedPerToothOptLimit","href":"Hi.NcOpt.FixedFeedPerToothOptLimit.html","topicHref":"Hi.NcOpt.FixedFeedPerToothOptLimit.html","topicUid":"Hi.NcOpt.FixedFeedPerToothOptLimit","type":"Class"},{"name":"ICutterOptLimitHost","href":"Hi.NcOpt.ICutterOptLimitHost.html","topicHref":"Hi.NcOpt.ICutterOptLimitHost.html","topicUid":"Hi.NcOpt.ICutterOptLimitHost","type":"Interface"},{"name":"ICutterOptOption","href":"Hi.NcOpt.ICutterOptOption.html","topicHref":"Hi.NcOpt.ICutterOptOption.html","topicUid":"Hi.NcOpt.ICutterOptOption","type":"Interface"},{"name":"ICuttingVelocityOptLimit","href":"Hi.NcOpt.ICuttingVelocityOptLimit.html","topicHref":"Hi.NcOpt.ICuttingVelocityOptLimit.html","topicUid":"Hi.NcOpt.ICuttingVelocityOptLimit","type":"Interface"},{"name":"IFeedPerToothOptLimit","href":"Hi.NcOpt.IFeedPerToothOptLimit.html","topicHref":"Hi.NcOpt.IFeedPerToothOptLimit.html","topicUid":"Hi.NcOpt.IFeedPerToothOptLimit","type":"Interface"},{"name":"MillingCutterOptOption","href":"Hi.NcOpt.MillingCutterOptOption.html","topicHref":"Hi.NcOpt.MillingCutterOptOption.html","topicUid":"Hi.NcOpt.MillingCutterOptOption","type":"Class"},{"name":"NcOptOption","href":"Hi.NcOpt.NcOptOption.html","topicHref":"Hi.NcOpt.NcOptOption.html","topicUid":"Hi.NcOpt.NcOptOption","type":"Class"},{"name":"NcOptProc","href":"Hi.NcOpt.NcOptProc.html","topicHref":"Hi.NcOpt.NcOptProc.html","topicUid":"Hi.NcOpt.NcOptProc","type":"Class"},{"name":"NcOptimizationEmbeddedLogMode","href":"Hi.NcOpt.NcOptimizationEmbeddedLogMode.html","topicHref":"Hi.NcOpt.NcOptimizationEmbeddedLogMode.html","topicUid":"Hi.NcOpt.NcOptimizationEmbeddedLogMode","type":"Enum"},{"name":"ShapeBasedCutterOptLimit","href":"Hi.NcOpt.ShapeBasedCutterOptLimit.html","topicHref":"Hi.NcOpt.ShapeBasedCutterOptLimit.html","topicUid":"Hi.NcOpt.ShapeBasedCutterOptLimit","type":"Class"}]},{"name":"Hi.NcParsers","href":"Hi.NcParsers.html","topicHref":"Hi.NcParsers.html","topicUid":"Hi.NcParsers","type":"Namespace","items":[{"name":"IGetSentence","href":"Hi.NcParsers.IGetSentence.html","topicHref":"Hi.NcParsers.IGetSentence.html","topicUid":"Hi.NcParsers.IGetSentence","type":"Interface"},{"name":"Sentence","href":"Hi.NcParsers.Sentence.html","topicHref":"Hi.NcParsers.Sentence.html","topicUid":"Hi.NcParsers.Sentence","type":"Class"},{"name":"SoftNcComment","href":"Hi.NcParsers.SoftNcComment.html","topicHref":"Hi.NcParsers.SoftNcComment.html","topicUid":"Hi.NcParsers.SoftNcComment","type":"Class"},{"name":"SoftNcEnv","href":"Hi.NcParsers.SoftNcEnv.html","topicHref":"Hi.NcParsers.SoftNcEnv.html","topicUid":"Hi.NcParsers.SoftNcEnv","type":"Class"},{"name":"SoftNcRunner","href":"Hi.NcParsers.SoftNcRunner.html","topicHref":"Hi.NcParsers.SoftNcRunner.html","topicUid":"Hi.NcParsers.SoftNcRunner","type":"Class"},{"name":"SoftNcUtil","href":"Hi.NcParsers.SoftNcUtil.html","topicHref":"Hi.NcParsers.SoftNcUtil.html","topicUid":"Hi.NcParsers.SoftNcUtil","type":"Class"}]},{"name":"Hi.NcParsers.Claims","href":"Hi.NcParsers.Claims.html","topicHref":"Hi.NcParsers.Claims.html","topicUid":"Hi.NcParsers.Claims","type":"Namespace","items":[{"name":"IClaim","href":"Hi.NcParsers.Claims.IClaim.html","topicHref":"Hi.NcParsers.Claims.IClaim.html","topicUid":"Hi.NcParsers.Claims.IClaim","type":"Interface"},{"name":"ICoordinateMarkClaim","href":"Hi.NcParsers.Claims.ICoordinateMarkClaim.html","topicHref":"Hi.NcParsers.Claims.ICoordinateMarkClaim.html","topicUid":"Hi.NcParsers.Claims.ICoordinateMarkClaim","type":"Interface"},{"name":"ICoordinateTransformationClaim","href":"Hi.NcParsers.Claims.ICoordinateTransformationClaim.html","topicHref":"Hi.NcParsers.Claims.ICoordinateTransformationClaim.html","topicUid":"Hi.NcParsers.Claims.ICoordinateTransformationClaim","type":"Interface"},{"name":"ICoordinateTranslationClaim","href":"Hi.NcParsers.Claims.ICoordinateTranslationClaim.html","topicHref":"Hi.NcParsers.Claims.ICoordinateTranslationClaim.html","topicUid":"Hi.NcParsers.Claims.ICoordinateTranslationClaim","type":"Interface"},{"name":"IFeedrateClaim","href":"Hi.NcParsers.Claims.IFeedrateClaim.html","topicHref":"Hi.NcParsers.Claims.IFeedrateClaim.html","topicUid":"Hi.NcParsers.Claims.IFeedrateClaim","type":"Interface"},{"name":"IHeightOffsetClaim","href":"Hi.NcParsers.Claims.IHeightOffsetClaim.html","topicHref":"Hi.NcParsers.Claims.IHeightOffsetClaim.html","topicUid":"Hi.NcParsers.Claims.IHeightOffsetClaim","type":"Interface"},{"name":"IHubClaim","href":"Hi.NcParsers.Claims.IHubClaim.html","topicHref":"Hi.NcParsers.Claims.IHubClaim.html","topicUid":"Hi.NcParsers.Claims.IHubClaim","type":"Interface"},{"name":"IMcXyzClaim","href":"Hi.NcParsers.Claims.IMcXyzClaim.html","topicHref":"Hi.NcParsers.Claims.IMcXyzClaim.html","topicUid":"Hi.NcParsers.Claims.IMcXyzClaim","type":"Interface"},{"name":"IMcXyzabcClaim","href":"Hi.NcParsers.Claims.IMcXyzabcClaim.html","topicHref":"Hi.NcParsers.Claims.IMcXyzabcClaim.html","topicUid":"Hi.NcParsers.Claims.IMcXyzabcClaim","type":"Interface"},{"name":"IMessageClaim","href":"Hi.NcParsers.Claims.IMessageClaim.html","topicHref":"Hi.NcParsers.Claims.IMessageClaim.html","topicUid":"Hi.NcParsers.Claims.IMessageClaim","type":"Interface"},{"name":"IModalFlagClaim","href":"Hi.NcParsers.Claims.IModalFlagClaim.html","topicHref":"Hi.NcParsers.Claims.IModalFlagClaim.html","topicUid":"Hi.NcParsers.Claims.IModalFlagClaim","type":"Interface"},{"name":"IOneShotClaim","href":"Hi.NcParsers.Claims.IOneShotClaim.html","topicHref":"Hi.NcParsers.Claims.IOneShotClaim.html","topicUid":"Hi.NcParsers.Claims.IOneShotClaim","type":"Interface"},{"name":"IPauseClaim","href":"Hi.NcParsers.Claims.IPauseClaim.html","topicHref":"Hi.NcParsers.Claims.IPauseClaim.html","topicUid":"Hi.NcParsers.Claims.IPauseClaim","type":"Interface"},{"name":"IPolarClaim","href":"Hi.NcParsers.Claims.IPolarClaim.html","topicHref":"Hi.NcParsers.Claims.IPolarClaim.html","topicUid":"Hi.NcParsers.Claims.IPolarClaim","type":"Interface"},{"name":"IPositioningModeClaim","href":"Hi.NcParsers.Claims.IPositioningModeClaim.html","topicHref":"Hi.NcParsers.Claims.IPositioningModeClaim.html","topicUid":"Hi.NcParsers.Claims.IPositioningModeClaim","type":"Interface"},{"name":"IPreparedToolClaim","href":"Hi.NcParsers.Claims.IPreparedToolClaim.html","topicHref":"Hi.NcParsers.Claims.IPreparedToolClaim.html","topicUid":"Hi.NcParsers.Claims.IPreparedToolClaim","type":"Interface"},{"name":"IProgramXyzClaim","href":"Hi.NcParsers.Claims.IProgramXyzClaim.html","topicHref":"Hi.NcParsers.Claims.IProgramXyzClaim.html","topicUid":"Hi.NcParsers.Claims.IProgramXyzClaim","type":"Interface"},{"name":"ISpindleSpeedClaim","href":"Hi.NcParsers.Claims.ISpindleSpeedClaim.html","topicHref":"Hi.NcParsers.Claims.ISpindleSpeedClaim.html","topicUid":"Hi.NcParsers.Claims.ISpindleSpeedClaim","type":"Interface"},{"name":"IToolClaim","href":"Hi.NcParsers.Claims.IToolClaim.html","topicHref":"Hi.NcParsers.Claims.IToolClaim.html","topicUid":"Hi.NcParsers.Claims.IToolClaim","type":"Interface"},{"name":"McXyzClaim","href":"Hi.NcParsers.Claims.McXyzClaim.html","topicHref":"Hi.NcParsers.Claims.McXyzClaim.html","topicUid":"Hi.NcParsers.Claims.McXyzClaim","type":"Class"},{"name":"PositioningMode","href":"Hi.NcParsers.Claims.PositioningMode.html","topicHref":"Hi.NcParsers.Claims.PositioningMode.html","topicUid":"Hi.NcParsers.Claims.PositioningMode","type":"Enum"},{"name":"ProgramXyzClaim","href":"Hi.NcParsers.Claims.ProgramXyzClaim.html","topicHref":"Hi.NcParsers.Claims.ProgramXyzClaim.html","topicUid":"Hi.NcParsers.Claims.ProgramXyzClaim","type":"Class"},{"name":"SentenceClaim","href":"Hi.NcParsers.Claims.SentenceClaim.html","topicHref":"Hi.NcParsers.Claims.SentenceClaim.html","topicUid":"Hi.NcParsers.Claims.SentenceClaim","type":"Class"}]},{"name":"Hi.NcParsers.Claims.Classics","href":"Hi.NcParsers.Claims.Classics.html","topicHref":"Hi.NcParsers.Claims.Classics.html","topicUid":"Hi.NcParsers.Claims.Classics","type":"Namespace","items":[{"name":"CoordinateTransformationChainClaim","href":"Hi.NcParsers.Claims.Classics.CoordinateTransformationChainClaim.html","topicHref":"Hi.NcParsers.Claims.Classics.CoordinateTransformationChainClaim.html","topicUid":"Hi.NcParsers.Claims.Classics.CoordinateTransformationChainClaim","type":"Class"},{"name":"PauseClaim","href":"Hi.NcParsers.Claims.Classics.PauseClaim.html","topicHref":"Hi.NcParsers.Claims.Classics.PauseClaim.html","topicUid":"Hi.NcParsers.Claims.Classics.PauseClaim","type":"Class"},{"name":"RadialRadiusOffsetClaim","href":"Hi.NcParsers.Claims.Classics.RadialRadiusOffsetClaim.html","topicHref":"Hi.NcParsers.Claims.Classics.RadialRadiusOffsetClaim.html","topicUid":"Hi.NcParsers.Claims.Classics.RadialRadiusOffsetClaim","type":"Class"}]},{"name":"Hi.NcParsers.Claims.Iso","href":"Hi.NcParsers.Claims.Iso.html","topicHref":"Hi.NcParsers.Claims.Iso.html","topicUid":"Hi.NcParsers.Claims.Iso","type":"Namespace","items":[{"name":"G54CoordinateClaim","href":"Hi.NcParsers.Claims.Iso.G54CoordinateClaim.html","topicHref":"Hi.NcParsers.Claims.Iso.G54CoordinateClaim.html","topicUid":"Hi.NcParsers.Claims.Iso.G54CoordinateClaim","type":"Class"},{"name":"G68CoordinateClaim","href":"Hi.NcParsers.Claims.Iso.G68CoordinateClaim.html","topicHref":"Hi.NcParsers.Claims.Iso.G68CoordinateClaim.html","topicUid":"Hi.NcParsers.Claims.Iso.G68CoordinateClaim","type":"Class"},{"name":"IIsoHeightIdClaim","href":"Hi.NcParsers.Claims.Iso.IIsoHeightIdClaim.html","topicHref":"Hi.NcParsers.Claims.Iso.IIsoHeightIdClaim.html","topicUid":"Hi.NcParsers.Claims.Iso.IIsoHeightIdClaim","type":"Interface"},{"name":"IsoHeightOffsetClaim","href":"Hi.NcParsers.Claims.Iso.IsoHeightOffsetClaim.html","topicHref":"Hi.NcParsers.Claims.Iso.IsoHeightOffsetClaim.html","topicUid":"Hi.NcParsers.Claims.Iso.IsoHeightOffsetClaim","type":"Class"},{"name":"OrthogonalPlaneClaim","href":"Hi.NcParsers.Claims.Iso.OrthogonalPlaneClaim.html","topicHref":"Hi.NcParsers.Claims.Iso.OrthogonalPlaneClaim.html","topicUid":"Hi.NcParsers.Claims.Iso.OrthogonalPlaneClaim","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys","href":"Hi.NcParsers.Dependencys.html","topicHref":"Hi.NcParsers.Dependencys.html","topicUid":"Hi.NcParsers.Dependencys","type":"Namespace","items":[{"name":"AxisType","href":"Hi.NcParsers.Dependencys.AxisType.html","topicHref":"Hi.NcParsers.Dependencys.AxisType.html","topicUid":"Hi.NcParsers.Dependencys.AxisType","type":"Enum"},{"name":"ControllerParameterTableBase","href":"Hi.NcParsers.Dependencys.ControllerParameterTableBase.html","topicHref":"Hi.NcParsers.Dependencys.ControllerParameterTableBase.html","topicUid":"Hi.NcParsers.Dependencys.ControllerParameterTableBase","type":"Class"},{"name":"HeidenhainDatumTable","href":"Hi.NcParsers.Dependencys.HeidenhainDatumTable.html","topicHref":"Hi.NcParsers.Dependencys.HeidenhainDatumTable.html","topicUid":"Hi.NcParsers.Dependencys.HeidenhainDatumTable","type":"Class"},{"name":"IHomeMcConfig","href":"Hi.NcParsers.Dependencys.IHomeMcConfig.html","topicHref":"Hi.NcParsers.Dependencys.IHomeMcConfig.html","topicUid":"Hi.NcParsers.Dependencys.IHomeMcConfig","type":"Interface"},{"name":"IMachineAxisConfig","href":"Hi.NcParsers.Dependencys.IMachineAxisConfig.html","topicHref":"Hi.NcParsers.Dependencys.IMachineAxisConfig.html","topicUid":"Hi.NcParsers.Dependencys.IMachineAxisConfig","type":"Interface"},{"name":"INcDependency","href":"Hi.NcParsers.Dependencys.INcDependency.html","topicHref":"Hi.NcParsers.Dependencys.INcDependency.html","topicUid":"Hi.NcParsers.Dependencys.INcDependency","type":"Interface"},{"name":"IToolOffsetConfig","href":"Hi.NcParsers.Dependencys.IToolOffsetConfig.html","topicHref":"Hi.NcParsers.Dependencys.IToolOffsetConfig.html","topicUid":"Hi.NcParsers.Dependencys.IToolOffsetConfig","type":"Interface"},{"name":"IToolingMcConfig","href":"Hi.NcParsers.Dependencys.IToolingMcConfig.html","topicHref":"Hi.NcParsers.Dependencys.IToolingMcConfig.html","topicUid":"Hi.NcParsers.Dependencys.IToolingMcConfig","type":"Interface"}]},{"name":"Hi.NcParsers.Dependencys.Fanuc","href":"Hi.NcParsers.Dependencys.Fanuc.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc","type":"Namespace","items":[{"name":"CutterCompensationType","href":"Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType","type":"Enum"},{"name":"FanucParameterTable","href":"Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Generic","href":"Hi.NcParsers.Dependencys.Generic.html","topicHref":"Hi.NcParsers.Dependencys.Generic.html","topicUid":"Hi.NcParsers.Dependencys.Generic","type":"Namespace","items":[{"name":"IsoCoordinateTable","href":"Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html","topicHref":"Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html","topicUid":"Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable","type":"Class"},{"name":"ToolOffsetRow","href":"Hi.NcParsers.Dependencys.Generic.ToolOffsetRow.html","topicHref":"Hi.NcParsers.Dependencys.Generic.ToolOffsetRow.html","topicUid":"Hi.NcParsers.Dependencys.Generic.ToolOffsetRow","type":"Class"},{"name":"ToolOffsetTable","href":"Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html","topicHref":"Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html","topicUid":"Hi.NcParsers.Dependencys.Generic.ToolOffsetTable","type":"Class"},{"name":"ToolingMcConfig","href":"Hi.NcParsers.Dependencys.Generic.ToolingMcConfig.html","topicHref":"Hi.NcParsers.Dependencys.Generic.ToolingMcConfig.html","topicUid":"Hi.NcParsers.Dependencys.Generic.ToolingMcConfig","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Heidenhain","href":"Hi.NcParsers.Dependencys.Heidenhain.html","topicHref":"Hi.NcParsers.Dependencys.Heidenhain.html","topicUid":"Hi.NcParsers.Dependencys.Heidenhain","type":"Namespace","items":[{"name":"HeidenhainParameterTable","href":"Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html","topicHref":"Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html","topicUid":"Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Siemens","href":"Hi.NcParsers.Dependencys.Siemens.html","topicHref":"Hi.NcParsers.Dependencys.Siemens.html","topicUid":"Hi.NcParsers.Dependencys.Siemens","type":"Namespace","items":[{"name":"ISiemensToolOffsetConfig","href":"Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig.html","topicHref":"Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig.html","topicUid":"Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig","type":"Interface"},{"name":"SiemensMachineDataTable","href":"Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html","topicHref":"Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html","topicUid":"Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable","type":"Class"}]},{"name":"Hi.NcParsers.Initializers","href":"Hi.NcParsers.Initializers.html","topicHref":"Hi.NcParsers.Initializers.html","topicUid":"Hi.NcParsers.Initializers","type":"Namespace","items":[{"name":"HomeMcInitializer","href":"Hi.NcParsers.Initializers.HomeMcInitializer.html","topicHref":"Hi.NcParsers.Initializers.HomeMcInitializer.html","topicUid":"Hi.NcParsers.Initializers.HomeMcInitializer","type":"Class"},{"name":"INcInitializer","href":"Hi.NcParsers.Initializers.INcInitializer.html","topicHref":"Hi.NcParsers.Initializers.INcInitializer.html","topicUid":"Hi.NcParsers.Initializers.INcInitializer","type":"Interface"},{"name":"StaticInitializer","href":"Hi.NcParsers.Initializers.StaticInitializer.html","topicHref":"Hi.NcParsers.Initializers.StaticInitializer.html","topicUid":"Hi.NcParsers.Initializers.StaticInitializer","type":"Class"}]},{"name":"Hi.NcParsers.Keywords","href":"Hi.NcParsers.Keywords.html","topicHref":"Hi.NcParsers.Keywords.html","topicUid":"Hi.NcParsers.Keywords","type":"Namespace","items":[{"name":"Comment","href":"Hi.NcParsers.Keywords.Comment.html","topicHref":"Hi.NcParsers.Keywords.Comment.html","topicUid":"Hi.NcParsers.Keywords.Comment","type":"Class"},{"name":"CoordinateOffset","href":"Hi.NcParsers.Keywords.CoordinateOffset.html","topicHref":"Hi.NcParsers.Keywords.CoordinateOffset.html","topicUid":"Hi.NcParsers.Keywords.CoordinateOffset","type":"Class"},{"name":"CsScript","href":"Hi.NcParsers.Keywords.CsScript.html","topicHref":"Hi.NcParsers.Keywords.CsScript.html","topicUid":"Hi.NcParsers.Keywords.CsScript","type":"Class"},{"name":"Feedrate","href":"Hi.NcParsers.Keywords.Feedrate.html","topicHref":"Hi.NcParsers.Keywords.Feedrate.html","topicUid":"Hi.NcParsers.Keywords.Feedrate","type":"Class"},{"name":"IFeedrateDef","href":"Hi.NcParsers.Keywords.IFeedrateDef.html","topicHref":"Hi.NcParsers.Keywords.IFeedrateDef.html","topicUid":"Hi.NcParsers.Keywords.IFeedrateDef","type":"Interface"},{"name":"IFlagsDef","href":"Hi.NcParsers.Keywords.IFlagsDef.html","topicHref":"Hi.NcParsers.Keywords.IFlagsDef.html","topicUid":"Hi.NcParsers.Keywords.IFlagsDef","type":"Interface"},{"name":"IMachineCoordinateDef","href":"Hi.NcParsers.Keywords.IMachineCoordinateDef.html","topicHref":"Hi.NcParsers.Keywords.IMachineCoordinateDef.html","topicUid":"Hi.NcParsers.Keywords.IMachineCoordinateDef","type":"Interface"},{"name":"IParsingDef","href":"Hi.NcParsers.Keywords.IParsingDef.html","topicHref":"Hi.NcParsers.Keywords.IParsingDef.html","topicUid":"Hi.NcParsers.Keywords.IParsingDef","type":"Interface"},{"name":"IPositioningModeDef","href":"Hi.NcParsers.Keywords.IPositioningModeDef.html","topicHref":"Hi.NcParsers.Keywords.IPositioningModeDef.html","topicUid":"Hi.NcParsers.Keywords.IPositioningModeDef","type":"Interface"},{"name":"IProgramXyzDef","href":"Hi.NcParsers.Keywords.IProgramXyzDef.html","topicHref":"Hi.NcParsers.Keywords.IProgramXyzDef.html","topicUid":"Hi.NcParsers.Keywords.IProgramXyzDef","type":"Interface"},{"name":"ISpindleSpeedDef","href":"Hi.NcParsers.Keywords.ISpindleSpeedDef.html","topicHref":"Hi.NcParsers.Keywords.ISpindleSpeedDef.html","topicUid":"Hi.NcParsers.Keywords.ISpindleSpeedDef","type":"Interface"},{"name":"ITiltTransformDef","href":"Hi.NcParsers.Keywords.ITiltTransformDef.html","topicHref":"Hi.NcParsers.Keywords.ITiltTransformDef.html","topicUid":"Hi.NcParsers.Keywords.ITiltTransformDef","type":"Interface"},{"name":"IToolHeightCompensationDef","href":"Hi.NcParsers.Keywords.IToolHeightCompensationDef.html","topicHref":"Hi.NcParsers.Keywords.IToolHeightCompensationDef.html","topicUid":"Hi.NcParsers.Keywords.IToolHeightCompensationDef","type":"Interface"},{"name":"ITransformationDef","href":"Hi.NcParsers.Keywords.ITransformationDef.html","topicHref":"Hi.NcParsers.Keywords.ITransformationDef.html","topicUid":"Hi.NcParsers.Keywords.ITransformationDef","type":"Interface"},{"name":"IUnparsedTextDef","href":"Hi.NcParsers.Keywords.IUnparsedTextDef.html","topicHref":"Hi.NcParsers.Keywords.IUnparsedTextDef.html","topicUid":"Hi.NcParsers.Keywords.IUnparsedTextDef","type":"Interface"},{"name":"IndexNote","href":"Hi.NcParsers.Keywords.IndexNote.html","topicHref":"Hi.NcParsers.Keywords.IndexNote.html","topicUid":"Hi.NcParsers.Keywords.IndexNote","type":"Class"},{"name":"LocalCoordinateOffset","href":"Hi.NcParsers.Keywords.LocalCoordinateOffset.html","topicHref":"Hi.NcParsers.Keywords.LocalCoordinateOffset.html","topicUid":"Hi.NcParsers.Keywords.LocalCoordinateOffset","type":"Class"},{"name":"SpindleSpeed","href":"Hi.NcParsers.Keywords.SpindleSpeed.html","topicHref":"Hi.NcParsers.Keywords.SpindleSpeed.html","topicUid":"Hi.NcParsers.Keywords.SpindleSpeed","type":"Class"},{"name":"TiltTransform","href":"Hi.NcParsers.Keywords.TiltTransform.html","topicHref":"Hi.NcParsers.Keywords.TiltTransform.html","topicUid":"Hi.NcParsers.Keywords.TiltTransform","type":"Class"},{"name":"ToolHeightCompensation","href":"Hi.NcParsers.Keywords.ToolHeightCompensation.html","topicHref":"Hi.NcParsers.Keywords.ToolHeightCompensation.html","topicUid":"Hi.NcParsers.Keywords.ToolHeightCompensation","type":"Class"}]},{"name":"Hi.NcParsers.Keywords.Fanuc","href":"Hi.NcParsers.Keywords.Fanuc.html","topicHref":"Hi.NcParsers.Keywords.Fanuc.html","topicUid":"Hi.NcParsers.Keywords.Fanuc","type":"Namespace","items":[{"name":"FanucKeywords","href":"Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html","topicHref":"Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html","topicUid":"Hi.NcParsers.Keywords.Fanuc.FanucKeywords","type":"Class"}]},{"name":"Hi.NcParsers.Keywords.Generic","href":"Hi.NcParsers.Keywords.Generic.html","topicHref":"Hi.NcParsers.Keywords.Generic.html","topicUid":"Hi.NcParsers.Keywords.Generic","type":"Namespace","items":[{"name":"IsoKeywords","href":"Hi.NcParsers.Keywords.Generic.IsoKeywords.html","topicHref":"Hi.NcParsers.Keywords.Generic.IsoKeywords.html","topicUid":"Hi.NcParsers.Keywords.Generic.IsoKeywords","type":"Class"}]},{"name":"Hi.NcParsers.Keywords.Heidenhain","href":"Hi.NcParsers.Keywords.Heidenhain.html","topicHref":"Hi.NcParsers.Keywords.Heidenhain.html","topicUid":"Hi.NcParsers.Keywords.Heidenhain","type":"Namespace","items":[{"name":"ICyclDef","href":"Hi.NcParsers.Keywords.Heidenhain.ICyclDef.html","topicHref":"Hi.NcParsers.Keywords.Heidenhain.ICyclDef.html","topicUid":"Hi.NcParsers.Keywords.Heidenhain.ICyclDef","type":"Interface"}]},{"name":"Hi.NcParsers.Keywords.Siemens","href":"Hi.NcParsers.Keywords.Siemens.html","topicHref":"Hi.NcParsers.Keywords.Siemens.html","topicUid":"Hi.NcParsers.Keywords.Siemens","type":"Namespace","items":[{"name":"SiemensKeywords","href":"Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html","topicHref":"Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html","topicUid":"Hi.NcParsers.Keywords.Siemens.SiemensKeywords","type":"Class"}]},{"name":"Hi.NcParsers.LogicSyntaxs","href":"Hi.NcParsers.LogicSyntaxs.html","topicHref":"Hi.NcParsers.LogicSyntaxs.html","topicUid":"Hi.NcParsers.LogicSyntaxs","type":"Namespace","items":[{"name":"CoordinateOffsetUtil","href":"Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html","topicHref":"Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html","topicUid":"Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil","type":"Class"},{"name":"FeedrateSyntax","href":"Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.FeedrateSyntax","type":"Class"},{"name":"IsoCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax","type":"Class"},{"name":"IsoG68RotationSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax","type":"Class"},{"name":"IsoG68p2TiltSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax","type":"Class"},{"name":"IsoLocalCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax","type":"Class"},{"name":"McAbcCyclicPathSyntax","href":"Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax","type":"Class"},{"name":"PositioningModeSyntax","href":"Hi.NcParsers.LogicSyntaxs.PositioningModeSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.PositioningModeSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.PositioningModeSyntax","type":"Class"},{"name":"ProgramXyzSyntax","href":"Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax","type":"Class"},{"name":"SpindleSpeedSyntax","href":"Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax","type":"Class"},{"name":"TiltTransformUtil","href":"Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html","topicHref":"Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html","topicUid":"Hi.NcParsers.LogicSyntaxs.TiltTransformUtil","type":"Class"},{"name":"ToolHeightOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax","type":"Class"}]},{"name":"Hi.NcParsers.LogicSyntaxs.Heidenhain","href":"Hi.NcParsers.LogicSyntaxs.Heidenhain.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Heidenhain.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Heidenhain","type":"Namespace","items":[{"name":"HeidenhainCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax","type":"Class"}]},{"name":"Hi.NcParsers.LogicSyntaxs.Siemens","href":"Hi.NcParsers.LogicSyntaxs.Siemens.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Siemens.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Siemens","type":"Namespace","items":[{"name":"SiemensCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs","href":"Hi.NcParsers.ParsingSyntaxs.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.html","topicUid":"Hi.NcParsers.ParsingSyntaxs","type":"Namespace","items":[{"name":"CsScriptSyntax","href":"Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax","type":"Class"},{"name":"FlagSyntax","href":"Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.FlagSyntax","type":"Class"},{"name":"FloatTagSetupSyntax","href":"Hi.NcParsers.ParsingSyntaxs.FloatTagSetupSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.FloatTagSetupSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.FloatTagSetupSyntax","type":"Class"},{"name":"HeadIndexSyntax","href":"Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax","type":"Class"},{"name":"IntegerTagSetupSyntax","href":"Hi.NcParsers.ParsingSyntaxs.IntegerTagSetupSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.IntegerTagSetupSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.IntegerTagSetupSyntax","type":"Class"},{"name":"NamedVarAssignmentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax","type":"Class"},{"name":"NumberedFlagSyntax","href":"Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax","type":"Class"},{"name":"ParameterizedFlagSyntax","href":"Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax","type":"Class"},{"name":"ShrinkIfNoDecimalPointSyntax","href":"Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax","type":"Class"},{"name":"TagAssignmentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax","type":"Class"},{"name":"TagSetupSyntax","href":"Hi.NcParsers.ParsingSyntaxs.TagSetupSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.TagSetupSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.TagSetupSyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs","href":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs","type":"Namespace","items":[{"name":"HeadPercentCommentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.HeadPercentCommentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.HeadPercentCommentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.HeadPercentCommentSyntax","type":"Class"},{"name":"QuoteCommentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax","type":"Class"},{"name":"TailCommentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs.Heidenhain","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain","type":"Namespace","items":[{"name":"HeidenhainBlkFormSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax","type":"Class"},{"name":"HeidenhainCallSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax","type":"Class"},{"name":"HeidenhainCyclDefSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax","type":"Class"},{"name":"HeidenhainFnAssignmentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax","type":"Class"},{"name":"HeidenhainLSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax","type":"Class"},{"name":"HeidenhainLblSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax","type":"Class"},{"name":"HeidenhainPlaneSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax","type":"Class"},{"name":"HeidenhainProgramSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax","type":"Class"},{"name":"HeidenhainToolCallSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs","type":"Namespace","items":[{"name":"HeidenhainDatumSettingSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax","type":"Class"},{"name":"HeidenhainDatumShiftSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax","type":"Class"}]},{"name":"Hi.NcParsers.Segmenters","href":"Hi.NcParsers.Segmenters.html","topicHref":"Hi.NcParsers.Segmenters.html","topicUid":"Hi.NcParsers.Segmenters","type":"Namespace","items":[{"name":"HeidenhainSegmenter","href":"Hi.NcParsers.Segmenters.HeidenhainSegmenter.html","topicHref":"Hi.NcParsers.Segmenters.HeidenhainSegmenter.html","topicUid":"Hi.NcParsers.Segmenters.HeidenhainSegmenter","type":"Class"},{"name":"ISegmenter","href":"Hi.NcParsers.Segmenters.ISegmenter.html","topicHref":"Hi.NcParsers.Segmenters.ISegmenter.html","topicUid":"Hi.NcParsers.Segmenters.ISegmenter","type":"Interface"},{"name":"SingleLineSegmenter","href":"Hi.NcParsers.Segmenters.SingleLineSegmenter.html","topicHref":"Hi.NcParsers.Segmenters.SingleLineSegmenter.html","topicUid":"Hi.NcParsers.Segmenters.SingleLineSegmenter","type":"Class"}]},{"name":"Hi.NcParsers.Semantics","href":"Hi.NcParsers.Semantics.html","topicHref":"Hi.NcParsers.Semantics.html","topicUid":"Hi.NcParsers.Semantics","type":"Namespace","items":[{"name":"INcSemantic","href":"Hi.NcParsers.Semantics.INcSemantic.html","topicHref":"Hi.NcParsers.Semantics.INcSemantic.html","topicUid":"Hi.NcParsers.Semantics.INcSemantic","type":"Interface"},{"name":"MachineCoordinateStepSemantic","href":"Hi.NcParsers.Semantics.MachineCoordinateStepSemantic.html","topicHref":"Hi.NcParsers.Semantics.MachineCoordinateStepSemantic.html","topicUid":"Hi.NcParsers.Semantics.MachineCoordinateStepSemantic","type":"Class"},{"name":"SemanticPiece","href":"Hi.NcParsers.Semantics.SemanticPiece.html","topicHref":"Hi.NcParsers.Semantics.SemanticPiece.html","topicUid":"Hi.NcParsers.Semantics.SemanticPiece","type":"Class"}]},{"name":"Hi.NcParsers.Syntaxs","href":"Hi.NcParsers.Syntaxs.html","topicHref":"Hi.NcParsers.Syntaxs.html","topicUid":"Hi.NcParsers.Syntaxs","type":"Namespace","items":[{"name":"BundleSyntax","href":"Hi.NcParsers.Syntaxs.BundleSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.BundleSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.BundleSyntax","type":"Class"},{"name":"CleanupSyntax","href":"Hi.NcParsers.Syntaxs.CleanupSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.CleanupSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.CleanupSyntax","type":"Class"},{"name":"FanucSyntaxUtil","href":"Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.FanucSyntaxUtil","type":"Class"},{"name":"GeneralSyntaxKit","href":"Hi.NcParsers.Syntaxs.GeneralSyntaxKit.html","topicHref":"Hi.NcParsers.Syntaxs.GeneralSyntaxKit.html","topicUid":"Hi.NcParsers.Syntaxs.GeneralSyntaxKit","type":"Class"},{"name":"HeidenhainSyntaxUtil","href":"Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil","type":"Class"},{"name":"IExpandingNcSyntax","href":"Hi.NcParsers.Syntaxs.IExpandingNcSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.IExpandingNcSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.IExpandingNcSyntax","type":"Interface"},{"name":"INcSyntax","href":"Hi.NcParsers.Syntaxs.INcSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.INcSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.INcSyntax","type":"Interface"},{"name":"ISituNcSyntax","href":"Hi.NcParsers.Syntaxs.ISituNcSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.ISituNcSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.ISituNcSyntax","type":"Interface"},{"name":"MazakSyntaxUtil","href":"Hi.NcParsers.Syntaxs.MazakSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.MazakSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.MazakSyntaxUtil","type":"Class"},{"name":"NcSyntaxUtil","href":"Hi.NcParsers.Syntaxs.NcSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.NcSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.NcSyntaxUtil","type":"Class"},{"name":"SiemensSyntaxUtil","href":"Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.SiemensSyntaxUtil","type":"Class"},{"name":"SyntaxPiece","href":"Hi.NcParsers.Syntaxs.SyntaxPiece.html","topicHref":"Hi.NcParsers.Syntaxs.SyntaxPiece.html","topicUid":"Hi.NcParsers.Syntaxs.SyntaxPiece","type":"Class"},{"name":"SyntecSyntaxUtil","href":"Hi.NcParsers.Syntaxs.SyntecSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.SyntecSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.SyntecSyntaxUtil","type":"Class"},{"name":"TagSetup","href":"Hi.NcParsers.Syntaxs.TagSetup.html","topicHref":"Hi.NcParsers.Syntaxs.TagSetup.html","topicUid":"Hi.NcParsers.Syntaxs.TagSetup","type":"Class"},{"name":"TransformationUtil","href":"Hi.NcParsers.Syntaxs.TransformationUtil.html","topicHref":"Hi.NcParsers.Syntaxs.TransformationUtil.html","topicUid":"Hi.NcParsers.Syntaxs.TransformationUtil","type":"Class"}]},{"name":"Hi.Numerical","href":"Hi.Numerical.html","topicHref":"Hi.Numerical.html","topicUid":"Hi.Numerical","type":"Namespace","items":[{"name":"CncBrand","href":"Hi.Numerical.CncBrand.html","topicHref":"Hi.Numerical.CncBrand.html","topicUid":"Hi.Numerical.CncBrand","type":"Enum"},{"name":"CommentMark","href":"Hi.Numerical.CommentMark.html","topicHref":"Hi.Numerical.CommentMark.html","topicUid":"Hi.Numerical.CommentMark","type":"Enum"},{"name":"CoordinateEntryDisplayee","href":"Hi.Numerical.CoordinateEntryDisplayee.html","topicHref":"Hi.Numerical.CoordinateEntryDisplayee.html","topicUid":"Hi.Numerical.CoordinateEntryDisplayee","type":"Class"},{"name":"CoordinateEntryRenderingFlag","href":"Hi.Numerical.CoordinateEntryRenderingFlag.html","topicHref":"Hi.Numerical.CoordinateEntryRenderingFlag.html","topicUid":"Hi.Numerical.CoordinateEntryRenderingFlag","type":"Enum"},{"name":"CoordinateInterpolationMode","href":"Hi.Numerical.CoordinateInterpolationMode.html","topicHref":"Hi.Numerical.CoordinateInterpolationMode.html","topicUid":"Hi.Numerical.CoordinateInterpolationMode","type":"Enum"},{"name":"FlexDictionaryUtil","href":"Hi.Numerical.FlexDictionaryUtil.html","topicHref":"Hi.Numerical.FlexDictionaryUtil.html","topicUid":"Hi.Numerical.FlexDictionaryUtil","type":"Class"},{"name":"HardNcComment","href":"Hi.Numerical.HardNcComment.html","topicHref":"Hi.Numerical.HardNcComment.html","topicUid":"Hi.Numerical.HardNcComment","type":"Class"},{"name":"HardNcEnv","href":"Hi.Numerical.HardNcEnv.html","topicHref":"Hi.Numerical.HardNcEnv.html","topicUid":"Hi.Numerical.HardNcEnv","type":"Class"},{"name":"HardNcLine","href":"Hi.Numerical.HardNcLine.html","topicHref":"Hi.Numerical.HardNcLine.html","topicUid":"Hi.Numerical.HardNcLine","type":"Class"},{"name":"HardNcUtil","href":"Hi.Numerical.HardNcUtil.html","topicHref":"Hi.Numerical.HardNcUtil.html","topicUid":"Hi.Numerical.HardNcUtil","type":"Class"},{"name":"HeidenhainCoordinateEntryDisplayee","href":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee.html","topicHref":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee.html","topicUid":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee","type":"Class"},{"name":"IControlRunner","href":"Hi.Numerical.IControlRunner.html","topicHref":"Hi.Numerical.IControlRunner.html","topicUid":"Hi.Numerical.IControlRunner","type":"Interface"},{"name":"IFlexDictionaryHost","href":"Hi.Numerical.IFlexDictionaryHost-1.html","topicHref":"Hi.Numerical.IFlexDictionaryHost-1.html","topicUid":"Hi.Numerical.IFlexDictionaryHost`1","type":"Interface"},{"name":"IGetFeedrate","href":"Hi.Numerical.IGetFeedrate.html","topicHref":"Hi.Numerical.IGetFeedrate.html","topicUid":"Hi.Numerical.IGetFeedrate","type":"Interface"},{"name":"IGetSpindleSpeed","href":"Hi.Numerical.IGetSpindleSpeed.html","topicHref":"Hi.Numerical.IGetSpindleSpeed.html","topicUid":"Hi.Numerical.IGetSpindleSpeed","type":"Interface"},{"name":"ISetFeedrate","href":"Hi.Numerical.ISetFeedrate.html","topicHref":"Hi.Numerical.ISetFeedrate.html","topicUid":"Hi.Numerical.ISetFeedrate","type":"Interface"},{"name":"ISetSpindleSpeed","href":"Hi.Numerical.ISetSpindleSpeed.html","topicHref":"Hi.Numerical.ISetSpindleSpeed.html","topicUid":"Hi.Numerical.ISetSpindleSpeed","type":"Interface"},{"name":"IsoCoordinateEntryDisplayee","href":"Hi.Numerical.IsoCoordinateEntryDisplayee.html","topicHref":"Hi.Numerical.IsoCoordinateEntryDisplayee.html","topicUid":"Hi.Numerical.IsoCoordinateEntryDisplayee","type":"Class"},{"name":"MechNcUtil","href":"Hi.Numerical.MechNcUtil.html","topicHref":"Hi.Numerical.MechNcUtil.html","topicUid":"Hi.Numerical.MechNcUtil","type":"Class"},{"name":"MillingToolOffsetTable","href":"Hi.Numerical.MillingToolOffsetTable.html","topicHref":"Hi.Numerical.MillingToolOffsetTable.html","topicUid":"Hi.Numerical.MillingToolOffsetTable","type":"Class"},{"name":"MillingToolOffsetTableRow","href":"Hi.Numerical.MillingToolOffsetTableRow.html","topicHref":"Hi.Numerical.MillingToolOffsetTableRow.html","topicUid":"Hi.Numerical.MillingToolOffsetTableRow","type":"Class"},{"name":"NcFlag","href":"Hi.Numerical.NcFlag.html","topicHref":"Hi.Numerical.NcFlag.html","topicUid":"Hi.Numerical.NcFlag","type":"Enum"},{"name":"NcFlagUtil","href":"Hi.Numerical.NcFlagUtil.html","topicHref":"Hi.Numerical.NcFlagUtil.html","topicUid":"Hi.Numerical.NcFlagUtil","type":"Class"},{"name":"NcGroup00","href":"Hi.Numerical.NcGroup00.html","topicHref":"Hi.Numerical.NcGroup00.html","topicUid":"Hi.Numerical.NcGroup00","type":"Enum"},{"name":"NcGroup01","href":"Hi.Numerical.NcGroup01.html","topicHref":"Hi.Numerical.NcGroup01.html","topicUid":"Hi.Numerical.NcGroup01","type":"Enum"},{"name":"NcGroup02","href":"Hi.Numerical.NcGroup02.html","topicHref":"Hi.Numerical.NcGroup02.html","topicUid":"Hi.Numerical.NcGroup02","type":"Enum"},{"name":"NcGroup03","href":"Hi.Numerical.NcGroup03.html","topicHref":"Hi.Numerical.NcGroup03.html","topicUid":"Hi.Numerical.NcGroup03","type":"Enum"},{"name":"NcGroup05","href":"Hi.Numerical.NcGroup05.html","topicHref":"Hi.Numerical.NcGroup05.html","topicUid":"Hi.Numerical.NcGroup05","type":"Enum"},{"name":"NcGroup06","href":"Hi.Numerical.NcGroup06.html","topicHref":"Hi.Numerical.NcGroup06.html","topicUid":"Hi.Numerical.NcGroup06","type":"Enum"},{"name":"NcGroup07","href":"Hi.Numerical.NcGroup07.html","topicHref":"Hi.Numerical.NcGroup07.html","topicUid":"Hi.Numerical.NcGroup07","type":"Enum"},{"name":"NcGroup08","href":"Hi.Numerical.NcGroup08.html","topicHref":"Hi.Numerical.NcGroup08.html","topicUid":"Hi.Numerical.NcGroup08","type":"Enum"},{"name":"NcGroup09","href":"Hi.Numerical.NcGroup09.html","topicHref":"Hi.Numerical.NcGroup09.html","topicUid":"Hi.Numerical.NcGroup09","type":"Enum"},{"name":"NcGroup10","href":"Hi.Numerical.NcGroup10.html","topicHref":"Hi.Numerical.NcGroup10.html","topicUid":"Hi.Numerical.NcGroup10","type":"Enum"},{"name":"NcGroup13","href":"Hi.Numerical.NcGroup13.html","topicHref":"Hi.Numerical.NcGroup13.html","topicUid":"Hi.Numerical.NcGroup13","type":"Enum"},{"name":"NcGroup14","href":"Hi.Numerical.NcGroup14.html","topicHref":"Hi.Numerical.NcGroup14.html","topicUid":"Hi.Numerical.NcGroup14","type":"Enum"},{"name":"NcGroup15","href":"Hi.Numerical.NcGroup15.html","topicHref":"Hi.Numerical.NcGroup15.html","topicUid":"Hi.Numerical.NcGroup15","type":"Enum"},{"name":"NcGroup16","href":"Hi.Numerical.NcGroup16.html","topicHref":"Hi.Numerical.NcGroup16.html","topicUid":"Hi.Numerical.NcGroup16","type":"Enum"},{"name":"NcGroup21","href":"Hi.Numerical.NcGroup21.html","topicHref":"Hi.Numerical.NcGroup21.html","topicUid":"Hi.Numerical.NcGroup21","type":"Enum"},{"name":"NcGroupAttribute","href":"Hi.Numerical.NcGroupAttribute.html","topicHref":"Hi.Numerical.NcGroupAttribute.html","topicUid":"Hi.Numerical.NcGroupAttribute","type":"Class"},{"name":"NcGroupHeidenhainM107M108","href":"Hi.Numerical.NcGroupHeidenhainM107M108.html","topicHref":"Hi.Numerical.NcGroupHeidenhainM107M108.html","topicUid":"Hi.Numerical.NcGroupHeidenhainM107M108","type":"Enum"},{"name":"NcGroupHeidenhainPlane","href":"Hi.Numerical.NcGroupHeidenhainPlane.html","topicHref":"Hi.Numerical.NcGroupHeidenhainPlane.html","topicUid":"Hi.Numerical.NcGroupHeidenhainPlane","type":"Enum"},{"name":"NcGroupHeidenhainShortestRotaryPath","href":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath.html","topicHref":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath.html","topicUid":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath","type":"Enum"},{"name":"NcGroupSpindleRotation","href":"Hi.Numerical.NcGroupSpindleRotation.html","topicHref":"Hi.Numerical.NcGroupSpindleRotation.html","topicUid":"Hi.Numerical.NcGroupSpindleRotation","type":"Enum"},{"name":"NcLifeCycleAttribute","href":"Hi.Numerical.NcLifeCycleAttribute.html","topicHref":"Hi.Numerical.NcLifeCycleAttribute.html","topicUid":"Hi.Numerical.NcLifeCycleAttribute","type":"Class"},{"name":"NcLifeCycleMode","href":"Hi.Numerical.NcLifeCycleMode.html","topicHref":"Hi.Numerical.NcLifeCycleMode.html","topicUid":"Hi.Numerical.NcLifeCycleMode","type":"Enum"},{"name":"NcNameAttribute","href":"Hi.Numerical.NcNameAttribute.html","topicHref":"Hi.Numerical.NcNameAttribute.html","topicUid":"Hi.Numerical.NcNameAttribute","type":"Class"},{"name":"NcNoteCache","href":"Hi.Numerical.NcNoteCache.html","topicHref":"Hi.Numerical.NcNoteCache.html","topicUid":"Hi.Numerical.NcNoteCache","type":"Class"},{"name":"NcProc","href":"Hi.Numerical.NcProc.html","topicHref":"Hi.Numerical.NcProc.html","topicUid":"Hi.Numerical.NcProc","type":"Class"},{"name":"NcWarningSceneEnum","href":"Hi.Numerical.NcWarningSceneEnum.html","topicHref":"Hi.Numerical.NcWarningSceneEnum.html","topicUid":"Hi.Numerical.NcWarningSceneEnum","type":"Enum"},{"name":"NumericUtil","href":"Hi.Numerical.NumericUtil.html","topicHref":"Hi.Numerical.NumericUtil.html","topicUid":"Hi.Numerical.NumericUtil","type":"Class"},{"name":"PolarEntry","href":"Hi.Numerical.PolarEntry.html","topicHref":"Hi.Numerical.PolarEntry.html","topicUid":"Hi.Numerical.PolarEntry","type":"Class"},{"name":"RadiusCompensationBuf","href":"Hi.Numerical.RadiusCompensationBuf.html","topicHref":"Hi.Numerical.RadiusCompensationBuf.html","topicUid":"Hi.Numerical.RadiusCompensationBuf","type":"Class"},{"name":"SourcedActEntry","href":"Hi.Numerical.SourcedActEntry.html","topicHref":"Hi.Numerical.SourcedActEntry.html","topicUid":"Hi.Numerical.SourcedActEntry","type":"Class"},{"name":"SpindleDirection","href":"Hi.Numerical.SpindleDirection.html","topicHref":"Hi.Numerical.SpindleDirection.html","topicUid":"Hi.Numerical.SpindleDirection","type":"Enum"},{"name":"SubStringKit","href":"Hi.Numerical.SubStringKit.html","topicHref":"Hi.Numerical.SubStringKit.html","topicUid":"Hi.Numerical.SubStringKit","type":"Class"},{"name":"SubStringKit.ActivationMode","href":"Hi.Numerical.SubStringKit.ActivationMode.html","topicHref":"Hi.Numerical.SubStringKit.ActivationMode.html","topicUid":"Hi.Numerical.SubStringKit.ActivationMode","type":"Enum"},{"name":"ToolConfigNotFoundException","href":"Hi.Numerical.ToolConfigNotFoundException.html","topicHref":"Hi.Numerical.ToolConfigNotFoundException.html","topicUid":"Hi.Numerical.ToolConfigNotFoundException","type":"Class"}]},{"name":"Hi.Numerical.Acts","href":"Hi.Numerical.Acts.html","topicHref":"Hi.Numerical.Acts.html","topicUid":"Hi.Numerical.Acts","type":"Namespace","items":[{"name":"ActActualTime","href":"Hi.Numerical.Acts.ActActualTime.html","topicHref":"Hi.Numerical.Acts.ActActualTime.html","topicUid":"Hi.Numerical.Acts.ActActualTime","type":"Class"},{"name":"ActClArc","href":"Hi.Numerical.Acts.ActClArc.html","topicHref":"Hi.Numerical.Acts.ActClArc.html","topicUid":"Hi.Numerical.Acts.ActClArc","type":"Class"},{"name":"ActClLinear","href":"Hi.Numerical.Acts.ActClLinear.html","topicHref":"Hi.Numerical.Acts.ActClLinear.html","topicUid":"Hi.Numerical.Acts.ActClLinear","type":"Class"},{"name":"ActClStep","href":"Hi.Numerical.Acts.ActClStep.html","topicHref":"Hi.Numerical.Acts.ActClStep.html","topicUid":"Hi.Numerical.Acts.ActClStep","type":"Class"},{"name":"ActClTeleport","href":"Hi.Numerical.Acts.ActClTeleport.html","topicHref":"Hi.Numerical.Acts.ActClTeleport.html","topicUid":"Hi.Numerical.Acts.ActClTeleport","type":"Class"},{"name":"ActCooling","href":"Hi.Numerical.Acts.ActCooling.html","topicHref":"Hi.Numerical.Acts.ActCooling.html","topicUid":"Hi.Numerical.Acts.ActCooling","type":"Class"},{"name":"ActData","href":"Hi.Numerical.Acts.ActData.html","topicHref":"Hi.Numerical.Acts.ActData.html","topicUid":"Hi.Numerical.Acts.ActData","type":"Class"},{"name":"ActDelay","href":"Hi.Numerical.Acts.ActDelay.html","topicHref":"Hi.Numerical.Acts.ActDelay.html","topicUid":"Hi.Numerical.Acts.ActDelay","type":"Class"},{"name":"ActFeedrate","href":"Hi.Numerical.Acts.ActFeedrate.html","topicHref":"Hi.Numerical.Acts.ActFeedrate.html","topicUid":"Hi.Numerical.Acts.ActFeedrate","type":"Class"},{"name":"ActHiddenStateChanged","href":"Hi.Numerical.Acts.ActHiddenStateChanged.html","topicHref":"Hi.Numerical.Acts.ActHiddenStateChanged.html","topicUid":"Hi.Numerical.Acts.ActHiddenStateChanged","type":"Class"},{"name":"ActIntentionalSkip","href":"Hi.Numerical.Acts.ActIntentionalSkip.html","topicHref":"Hi.Numerical.Acts.ActIntentionalSkip.html","topicUid":"Hi.Numerical.Acts.ActIntentionalSkip","type":"Class"},{"name":"ActLineBegin","href":"Hi.Numerical.Acts.ActLineBegin.html","topicHref":"Hi.Numerical.Acts.ActLineBegin.html","topicUid":"Hi.Numerical.Acts.ActLineBegin","type":"Class"},{"name":"ActLineCsScript","href":"Hi.Numerical.Acts.ActLineCsScript.html","topicHref":"Hi.Numerical.Acts.ActLineCsScript.html","topicUid":"Hi.Numerical.Acts.ActLineCsScript","type":"Class"},{"name":"ActLineEnd","href":"Hi.Numerical.Acts.ActLineEnd.html","topicHref":"Hi.Numerical.Acts.ActLineEnd.html","topicUid":"Hi.Numerical.Acts.ActLineEnd","type":"Class"},{"name":"ActLinearClAndLinearMcAbcMcXyzabcContour","href":"Hi.Numerical.Acts.ActLinearClAndLinearMcAbcMcXyzabcContour.html","topicHref":"Hi.Numerical.Acts.ActLinearClAndLinearMcAbcMcXyzabcContour.html","topicUid":"Hi.Numerical.Acts.ActLinearClAndLinearMcAbcMcXyzabcContour","type":"Class"},{"name":"ActMcPolarLinearContour","href":"Hi.Numerical.Acts.ActMcPolarLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcPolarLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcPolarLinearContour","type":"Class"},{"name":"ActMcXyzLinearContour","href":"Hi.Numerical.Acts.ActMcXyzLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcXyzLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcXyzLinearContour","type":"Class"},{"name":"ActMcXyzStep","href":"Hi.Numerical.Acts.ActMcXyzStep.html","topicHref":"Hi.Numerical.Acts.ActMcXyzStep.html","topicUid":"Hi.Numerical.Acts.ActMcXyzStep","type":"Class"},{"name":"ActMcXyzabcOrientableLinearContour","href":"Hi.Numerical.Acts.ActMcXyzabcOrientableLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcXyzabcOrientableLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcXyzabcOrientableLinearContour","type":"Class"},{"name":"ActMcXyzabcStep","href":"Hi.Numerical.Acts.ActMcXyzabcStep.html","topicHref":"Hi.Numerical.Acts.ActMcXyzabcStep.html","topicUid":"Hi.Numerical.Acts.ActMcXyzabcStep","type":"Class"},{"name":"ActRapid","href":"Hi.Numerical.Acts.ActRapid.html","topicHref":"Hi.Numerical.Acts.ActRapid.html","topicUid":"Hi.Numerical.Acts.ActRapid","type":"Class"},{"name":"ActSpindleDirection","href":"Hi.Numerical.Acts.ActSpindleDirection.html","topicHref":"Hi.Numerical.Acts.ActSpindleDirection.html","topicUid":"Hi.Numerical.Acts.ActSpindleDirection","type":"Class"},{"name":"ActSpindleSpeed","href":"Hi.Numerical.Acts.ActSpindleSpeed.html","topicHref":"Hi.Numerical.Acts.ActSpindleSpeed.html","topicUid":"Hi.Numerical.Acts.ActSpindleSpeed","type":"Class"},{"name":"ActSpiralMcXyzContour","href":"Hi.Numerical.Acts.ActSpiralMcXyzContour.html","topicHref":"Hi.Numerical.Acts.ActSpiralMcXyzContour.html","topicUid":"Hi.Numerical.Acts.ActSpiralMcXyzContour","type":"Class"},{"name":"ActToolingStep","href":"Hi.Numerical.Acts.ActToolingStep.html","topicHref":"Hi.Numerical.Acts.ActToolingStep.html","topicUid":"Hi.Numerical.Acts.ActToolingStep","type":"Class"},{"name":"ActToolingTeleport","href":"Hi.Numerical.Acts.ActToolingTeleport.html","topicHref":"Hi.Numerical.Acts.ActToolingTeleport.html","topicUid":"Hi.Numerical.Acts.ActToolingTeleport","type":"Class"},{"name":"ActUnknownSkip","href":"Hi.Numerical.Acts.ActUnknownSkip.html","topicHref":"Hi.Numerical.Acts.ActUnknownSkip.html","topicUid":"Hi.Numerical.Acts.ActUnknownSkip","type":"Class"},{"name":"ActUtil","href":"Hi.Numerical.Acts.ActUtil.html","topicHref":"Hi.Numerical.Acts.ActUtil.html","topicUid":"Hi.Numerical.Acts.ActUtil","type":"Class"},{"name":"IAct","href":"Hi.Numerical.Acts.IAct.html","topicHref":"Hi.Numerical.Acts.IAct.html","topicUid":"Hi.Numerical.Acts.IAct","type":"Interface"},{"name":"IActClMove","href":"Hi.Numerical.Acts.IActClMove.html","topicHref":"Hi.Numerical.Acts.IActClMove.html","topicUid":"Hi.Numerical.Acts.IActClMove","type":"Interface"},{"name":"IActDuration","href":"Hi.Numerical.Acts.IActDuration.html","topicHref":"Hi.Numerical.Acts.IActDuration.html","topicUid":"Hi.Numerical.Acts.IActDuration","type":"Interface"},{"name":"IActMachineStep","href":"Hi.Numerical.Acts.IActMachineStep.html","topicHref":"Hi.Numerical.Acts.IActMachineStep.html","topicUid":"Hi.Numerical.Acts.IActMachineStep","type":"Interface"},{"name":"IActMcXyzContour","href":"Hi.Numerical.Acts.IActMcXyzContour.html","topicHref":"Hi.Numerical.Acts.IActMcXyzContour.html","topicUid":"Hi.Numerical.Acts.IActMcXyzContour","type":"Interface"},{"name":"IActMcXyzabcContour","href":"Hi.Numerical.Acts.IActMcXyzabcContour.html","topicHref":"Hi.Numerical.Acts.IActMcXyzabcContour.html","topicUid":"Hi.Numerical.Acts.IActMcXyzabcContour","type":"Interface"},{"name":"IActSkip","href":"Hi.Numerical.Acts.IActSkip.html","topicHref":"Hi.Numerical.Acts.IActSkip.html","topicUid":"Hi.Numerical.Acts.IActSkip","type":"Interface"},{"name":"IActTooling","href":"Hi.Numerical.Acts.IActTooling.html","topicHref":"Hi.Numerical.Acts.IActTooling.html","topicUid":"Hi.Numerical.Acts.IActTooling","type":"Interface"},{"name":"IWorkTimeAttrib","href":"Hi.Numerical.Acts.IWorkTimeAttrib.html","topicHref":"Hi.Numerical.Acts.IWorkTimeAttrib.html","topicUid":"Hi.Numerical.Acts.IWorkTimeAttrib","type":"Interface"},{"name":"IWorkTimeGetter","href":"Hi.Numerical.Acts.IWorkTimeGetter.html","topicHref":"Hi.Numerical.Acts.IWorkTimeGetter.html","topicUid":"Hi.Numerical.Acts.IWorkTimeGetter","type":"Interface"},{"name":"IWorkTimeSetter","href":"Hi.Numerical.Acts.IWorkTimeSetter.html","topicHref":"Hi.Numerical.Acts.IWorkTimeSetter.html","topicUid":"Hi.Numerical.Acts.IWorkTimeSetter","type":"Interface"},{"name":"StateActRunner","href":"Hi.Numerical.Acts.StateActRunner.html","topicHref":"Hi.Numerical.Acts.StateActRunner.html","topicUid":"Hi.Numerical.Acts.StateActRunner","type":"Class"}]},{"name":"Hi.Numerical.Args","href":"Hi.Numerical.Args.html","topicHref":"Hi.Numerical.Args.html","topicUid":"Hi.Numerical.Args","type":"Namespace","items":[{"name":"OrthogonalPlaneFlag","href":"Hi.Numerical.Args.OrthogonalPlaneFlag.html","topicHref":"Hi.Numerical.Args.OrthogonalPlaneFlag.html","topicUid":"Hi.Numerical.Args.OrthogonalPlaneFlag","type":"Enum"},{"name":"PolarModeDirEnum","href":"Hi.Numerical.Args.PolarModeDirEnum.html","topicHref":"Hi.Numerical.Args.PolarModeDirEnum.html","topicUid":"Hi.Numerical.Args.PolarModeDirEnum","type":"Enum"}]},{"name":"Hi.Numerical.FilePlayers","href":"Hi.Numerical.FilePlayers.html","topicHref":"Hi.Numerical.FilePlayers.html","topicUid":"Hi.Numerical.FilePlayers","type":"Namespace","items":[{"name":"CsvRunner","href":"Hi.Numerical.FilePlayers.CsvRunner.html","topicHref":"Hi.Numerical.FilePlayers.CsvRunner.html","topicUid":"Hi.Numerical.FilePlayers.CsvRunner","type":"Class"},{"name":"CsvRunnerConfig","href":"Hi.Numerical.FilePlayers.CsvRunnerConfig.html","topicHref":"Hi.Numerical.FilePlayers.CsvRunnerConfig.html","topicUid":"Hi.Numerical.FilePlayers.CsvRunnerConfig","type":"Class"},{"name":"HardNcRunner","href":"Hi.Numerical.FilePlayers.HardNcRunner.html","topicHref":"Hi.Numerical.FilePlayers.HardNcRunner.html","topicUid":"Hi.Numerical.FilePlayers.HardNcRunner","type":"Class"}]},{"name":"Hi.Numerical.MachiningMotionResolutionUtils","href":"Hi.Numerical.MachiningMotionResolutionUtils.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils","type":"Namespace","items":[{"name":"FeedPerCycleMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution","type":"Class"},{"name":"FeedPerToothMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution","type":"Class"},{"name":"FixedMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution","type":"Class"},{"name":"IMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution","type":"Interface"}]},{"name":"Hi.Numerical.NcArgs","href":"Hi.Numerical.NcArgs.html","topicHref":"Hi.Numerical.NcArgs.html","topicUid":"Hi.Numerical.NcArgs","type":"Namespace","items":[{"name":"ArcNcArg","href":"Hi.Numerical.NcArgs.ArcNcArg.html","topicHref":"Hi.Numerical.NcArgs.ArcNcArg.html","topicUid":"Hi.Numerical.NcArgs.ArcNcArg","type":"Class"},{"name":"G28Arg","href":"Hi.Numerical.NcArgs.G28Arg.html","topicHref":"Hi.Numerical.NcArgs.G28Arg.html","topicUid":"Hi.Numerical.NcArgs.G28Arg","type":"Class"},{"name":"Group07NcArg","href":"Hi.Numerical.NcArgs.Group07NcArg.html","topicHref":"Hi.Numerical.NcArgs.Group07NcArg.html","topicUid":"Hi.Numerical.NcArgs.Group07NcArg","type":"Class"},{"name":"Group09NcArg","href":"Hi.Numerical.NcArgs.Group09NcArg.html","topicHref":"Hi.Numerical.NcArgs.Group09NcArg.html","topicUid":"Hi.Numerical.NcArgs.Group09NcArg","type":"Class"},{"name":"HeidenhainCycleDef7Arg","href":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg.html","topicHref":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg.html","topicUid":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg","type":"Class"},{"name":"HeidenhainPlaneSpatialArg","href":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg.html","topicHref":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg.html","topicUid":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg","type":"Class"},{"name":"IHeidenhainBlockCacheArg","href":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg.html","topicHref":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg.html","topicUid":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg","type":"Interface"},{"name":"IHeidenhainPlaneArg","href":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg.html","topicHref":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg.html","topicUid":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg","type":"Interface"},{"name":"ITiltPlaneNcArg","href":"Hi.Numerical.NcArgs.ITiltPlaneNcArg.html","topicHref":"Hi.Numerical.NcArgs.ITiltPlaneNcArg.html","topicUid":"Hi.Numerical.NcArgs.ITiltPlaneNcArg","type":"Interface"},{"name":"NcArgCycle800","href":"Hi.Numerical.NcArgs.NcArgCycle800.html","topicHref":"Hi.Numerical.NcArgs.NcArgCycle800.html","topicUid":"Hi.Numerical.NcArgs.NcArgCycle800","type":"Class"},{"name":"NcArgG68","href":"Hi.Numerical.NcArgs.NcArgG68.html","topicHref":"Hi.Numerical.NcArgs.NcArgG68.html","topicUid":"Hi.Numerical.NcArgs.NcArgG68","type":"Class"},{"name":"NcArgG68p2","href":"Hi.Numerical.NcArgs.NcArgG68p2.html","topicHref":"Hi.Numerical.NcArgs.NcArgG68p2.html","topicUid":"Hi.Numerical.NcArgs.NcArgG68p2","type":"Class"},{"name":"NcArgSiemensFrame","href":"Hi.Numerical.NcArgs.NcArgSiemensFrame.html","topicHref":"Hi.Numerical.NcArgs.NcArgSiemensFrame.html","topicUid":"Hi.Numerical.NcArgs.NcArgSiemensFrame","type":"Class"},{"name":"PausingNcArg","href":"Hi.Numerical.NcArgs.PausingNcArg.html","topicHref":"Hi.Numerical.NcArgs.PausingNcArg.html","topicUid":"Hi.Numerical.NcArgs.PausingNcArg","type":"Class"}]},{"name":"Hi.Numerical.StepSelectionUtils","href":"Hi.Numerical.StepSelectionUtils.html","topicHref":"Hi.Numerical.StepSelectionUtils.html","topicUid":"Hi.Numerical.StepSelectionUtils","type":"Namespace","items":[{"name":"AnchorMode","href":"Hi.Numerical.StepSelectionUtils.AnchorMode.html","topicHref":"Hi.Numerical.StepSelectionUtils.AnchorMode.html","topicUid":"Hi.Numerical.StepSelectionUtils.AnchorMode","type":"Enum"},{"name":"BoundSelector","href":"Hi.Numerical.StepSelectionUtils.BoundSelector.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelector.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelector","type":"Class"},{"name":"BoundSelectorHost","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost","type":"Class"},{"name":"BoundSelectorPair","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair","type":"Class"},{"name":"BoundSelectorPair.BoundLocale","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale","type":"Enum"},{"name":"BoundSelectorStepSectionBundle","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle","type":"Class"},{"name":"BoundSelectorUtil","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil","type":"Class"},{"name":"DistanceShift","href":"Hi.Numerical.StepSelectionUtils.DistanceShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.DistanceShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.DistanceShift","type":"Class"},{"name":"IStepShift","href":"Hi.Numerical.StepSelectionUtils.IStepShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.IStepShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.IStepShift","type":"Interface"},{"name":"TimeShift","href":"Hi.Numerical.StepSelectionUtils.TimeShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.TimeShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.TimeShift","type":"Class"}]},{"name":"Hi.Numerical.Xyzabc","href":"Hi.Numerical.Xyzabc.html","topicHref":"Hi.Numerical.Xyzabc.html","topicUid":"Hi.Numerical.Xyzabc","type":"Namespace","items":[{"name":"Abc","href":"Hi.Numerical.Xyzabc.Abc.html","topicHref":"Hi.Numerical.Xyzabc.Abc.html","topicUid":"Hi.Numerical.Xyzabc.Abc","type":"Struct"},{"name":"CodeXyzabcChain","href":"Hi.Numerical.Xyzabc.CodeXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.CodeXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.CodeXyzabcChain","type":"Class"},{"name":"GeneralXyzabcChain","href":"Hi.Numerical.Xyzabc.GeneralXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.GeneralXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.GeneralXyzabcChain","type":"Class"},{"name":"IGetMcXyzabc","href":"Hi.Numerical.Xyzabc.IGetMcXyzabc.html","topicHref":"Hi.Numerical.Xyzabc.IGetMcXyzabc.html","topicUid":"Hi.Numerical.Xyzabc.IGetMcXyzabc","type":"Interface"},{"name":"IGetXyzabcChain","href":"Hi.Numerical.Xyzabc.IGetXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.IGetXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.IGetXyzabcChain","type":"Interface"},{"name":"IMachineKinematics","href":"Hi.Numerical.Xyzabc.IMachineKinematics.html","topicHref":"Hi.Numerical.Xyzabc.IMachineKinematics.html","topicUid":"Hi.Numerical.Xyzabc.IMachineKinematics","type":"Interface"},{"name":"ISetMcXyzabc","href":"Hi.Numerical.Xyzabc.ISetMcXyzabc.html","topicHref":"Hi.Numerical.Xyzabc.ISetMcXyzabc.html","topicUid":"Hi.Numerical.Xyzabc.ISetMcXyzabc","type":"Interface"},{"name":"IXyzabcChain","href":"Hi.Numerical.Xyzabc.IXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.IXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.IXyzabcChain","type":"Interface"},{"name":"ReflectedXyzabcChain","href":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain","type":"Class"},{"name":"XyzabcSolver","href":"Hi.Numerical.Xyzabc.XyzabcSolver.html","topicHref":"Hi.Numerical.Xyzabc.XyzabcSolver.html","topicUid":"Hi.Numerical.Xyzabc.XyzabcSolver","type":"Class"},{"name":"XyzabcUtil","href":"Hi.Numerical.Xyzabc.XyzabcUtil.html","topicHref":"Hi.Numerical.Xyzabc.XyzabcUtil.html","topicUid":"Hi.Numerical.Xyzabc.XyzabcUtil","type":"Class"}]},{"name":"Hi.PanelModels","href":"Hi.PanelModels.html","topicHref":"Hi.PanelModels.html","topicUid":"Hi.PanelModels","type":"Namespace","items":[{"name":"HiKey","href":"Hi.PanelModels.HiKey.html","topicHref":"Hi.PanelModels.HiKey.html","topicUid":"Hi.PanelModels.HiKey","type":"Enum"},{"name":"HiKeyEvent","href":"Hi.PanelModels.HiKeyEvent.html","topicHref":"Hi.PanelModels.HiKeyEvent.html","topicUid":"Hi.PanelModels.HiKeyEvent","type":"Class"},{"name":"HiModifierKeys","href":"Hi.PanelModels.HiModifierKeys.html","topicHref":"Hi.PanelModels.HiModifierKeys.html","topicUid":"Hi.PanelModels.HiModifierKeys","type":"Enum"},{"name":"HiMouseButton","href":"Hi.PanelModels.HiMouseButton.html","topicHref":"Hi.PanelModels.HiMouseButton.html","topicUid":"Hi.PanelModels.HiMouseButton","type":"Enum"},{"name":"HiMouseButtonEvent","href":"Hi.PanelModels.HiMouseButtonEvent.html","topicHref":"Hi.PanelModels.HiMouseButtonEvent.html","topicUid":"Hi.PanelModels.HiMouseButtonEvent","type":"Class"},{"name":"HiMouseButtonMask","href":"Hi.PanelModels.HiMouseButtonMask.html","topicHref":"Hi.PanelModels.HiMouseButtonMask.html","topicUid":"Hi.PanelModels.HiMouseButtonMask","type":"Enum"},{"name":"HiMouseButtonMaskUtil","href":"Hi.PanelModels.HiMouseButtonMaskUtil.html","topicHref":"Hi.PanelModels.HiMouseButtonMaskUtil.html","topicUid":"Hi.PanelModels.HiMouseButtonMaskUtil","type":"Class"},{"name":"HiMouseMoveEvent","href":"Hi.PanelModels.HiMouseMoveEvent.html","topicHref":"Hi.PanelModels.HiMouseMoveEvent.html","topicUid":"Hi.PanelModels.HiMouseMoveEvent","type":"Class"},{"name":"HiMouseWheelEvent","href":"Hi.PanelModels.HiMouseWheelEvent.html","topicHref":"Hi.PanelModels.HiMouseWheelEvent.html","topicUid":"Hi.PanelModels.HiMouseWheelEvent","type":"Class"},{"name":"PanelModel","href":"Hi.PanelModels.PanelModel.html","topicHref":"Hi.PanelModels.PanelModel.html","topicUid":"Hi.PanelModels.PanelModel","type":"Class"}]},{"name":"Hi.Parallels","href":"Hi.Parallels.html","topicHref":"Hi.Parallels.html","topicUid":"Hi.Parallels","type":"Namespace","items":[{"name":"CurrentThreadTaskScheduler","href":"Hi.Parallels.CurrentThreadTaskScheduler.html","topicHref":"Hi.Parallels.CurrentThreadTaskScheduler.html","topicUid":"Hi.Parallels.CurrentThreadTaskScheduler","type":"Class"},{"name":"DistributedQueueTaskScheduler","href":"Hi.Parallels.DistributedQueueTaskScheduler.html","topicHref":"Hi.Parallels.DistributedQueueTaskScheduler.html","topicUid":"Hi.Parallels.DistributedQueueTaskScheduler","type":"Class"},{"name":"DistributedQueueTaskStarter","href":"Hi.Parallels.DistributedQueueTaskStarter.html","topicHref":"Hi.Parallels.DistributedQueueTaskStarter.html","topicUid":"Hi.Parallels.DistributedQueueTaskStarter","type":"Class"},{"name":"LockUtil","href":"Hi.Parallels.LockUtil.html","topicHref":"Hi.Parallels.LockUtil.html","topicUid":"Hi.Parallels.LockUtil","type":"Class"},{"name":"PriorityTaskScheduler","href":"Hi.Parallels.PriorityTaskScheduler.html","topicHref":"Hi.Parallels.PriorityTaskScheduler.html","topicUid":"Hi.Parallels.PriorityTaskScheduler","type":"Class"},{"name":"QueueTaskScheduler","href":"Hi.Parallels.QueueTaskScheduler.html","topicHref":"Hi.Parallels.QueueTaskScheduler.html","topicUid":"Hi.Parallels.QueueTaskScheduler","type":"Class"},{"name":"ReaderWriterLockUtil","href":"Hi.Parallels.ReaderWriterLockUtil.html","topicHref":"Hi.Parallels.ReaderWriterLockUtil.html","topicUid":"Hi.Parallels.ReaderWriterLockUtil","type":"Class"},{"name":"SemaphoreUtil","href":"Hi.Parallels.SemaphoreUtil.html","topicHref":"Hi.Parallels.SemaphoreUtil.html","topicUid":"Hi.Parallels.SemaphoreUtil","type":"Class"},{"name":"ThreadSafeSet","href":"Hi.Parallels.ThreadSafeSet-1.html","topicHref":"Hi.Parallels.ThreadSafeSet-1.html","topicUid":"Hi.Parallels.ThreadSafeSet`1","type":"Class"}]},{"name":"Hi.Physics","href":"Hi.Physics.html","topicHref":"Hi.Physics.html","topicUid":"Hi.Physics","type":"Namespace","items":[{"name":"AmpPhase","href":"Hi.Physics.AmpPhase.html","topicHref":"Hi.Physics.AmpPhase.html","topicUid":"Hi.Physics.AmpPhase","type":"Class"},{"name":"CoatingMaterial","href":"Hi.Physics.CoatingMaterial.html","topicHref":"Hi.Physics.CoatingMaterial.html","topicUid":"Hi.Physics.CoatingMaterial","type":"Class"},{"name":"CoolantHeatCondition","href":"Hi.Physics.CoolantHeatCondition.html","topicHref":"Hi.Physics.CoolantHeatCondition.html","topicUid":"Hi.Physics.CoolantHeatCondition","type":"Class"},{"name":"CutterMaterial","href":"Hi.Physics.CutterMaterial.html","topicHref":"Hi.Physics.CutterMaterial.html","topicUid":"Hi.Physics.CutterMaterial","type":"Class"},{"name":"IGetThermalLayerList","href":"Hi.Physics.IGetThermalLayerList.html","topicHref":"Hi.Physics.IGetThermalLayerList.html","topicUid":"Hi.Physics.IGetThermalLayerList","type":"Interface"},{"name":"IStructureMaterial","href":"Hi.Physics.IStructureMaterial.html","topicHref":"Hi.Physics.IStructureMaterial.html","topicUid":"Hi.Physics.IStructureMaterial","type":"Interface"},{"name":"ISuccessivePhysicsBriefAccessor","href":"Hi.Physics.ISuccessivePhysicsBriefAccessor.html","topicHref":"Hi.Physics.ISuccessivePhysicsBriefAccessor.html","topicUid":"Hi.Physics.ISuccessivePhysicsBriefAccessor","type":"Interface"},{"name":"ISurfaceMaterial","href":"Hi.Physics.ISurfaceMaterial.html","topicHref":"Hi.Physics.ISurfaceMaterial.html","topicUid":"Hi.Physics.ISurfaceMaterial","type":"Interface"},{"name":"ITimeGetter","href":"Hi.Physics.ITimeGetter.html","topicHref":"Hi.Physics.ITimeGetter.html","topicUid":"Hi.Physics.ITimeGetter","type":"Interface"},{"name":"MillingTemperatureUtil","href":"Hi.Physics.MillingTemperatureUtil.html","topicHref":"Hi.Physics.MillingTemperatureUtil.html","topicUid":"Hi.Physics.MillingTemperatureUtil","type":"Class"},{"name":"SeqPhysicsBrief","href":"Hi.Physics.SeqPhysicsBrief.html","topicHref":"Hi.Physics.SeqPhysicsBrief.html","topicUid":"Hi.Physics.SeqPhysicsBrief","type":"Class"},{"name":"StructureMaterial","href":"Hi.Physics.StructureMaterial.html","topicHref":"Hi.Physics.StructureMaterial.html","topicUid":"Hi.Physics.StructureMaterial","type":"Class"},{"name":"TemperatureUtil","href":"Hi.Physics.TemperatureUtil.html","topicHref":"Hi.Physics.TemperatureUtil.html","topicUid":"Hi.Physics.TemperatureUtil","type":"Class"},{"name":"TemperatureVsHardness","href":"Hi.Physics.TemperatureVsHardness.html","topicHref":"Hi.Physics.TemperatureVsHardness.html","topicUid":"Hi.Physics.TemperatureVsHardness","type":"Class"},{"name":"ThermalLayer1D","href":"Hi.Physics.ThermalLayer1D.html","topicHref":"Hi.Physics.ThermalLayer1D.html","topicUid":"Hi.Physics.ThermalLayer1D","type":"Class"},{"name":"TimeSeriesUtil","href":"Hi.Physics.TimeSeriesUtil.html","topicHref":"Hi.Physics.TimeSeriesUtil.html","topicUid":"Hi.Physics.TimeSeriesUtil","type":"Class"},{"name":"TimeValue","href":"Hi.Physics.TimeValue.html","topicHref":"Hi.Physics.TimeValue.html","topicUid":"Hi.Physics.TimeValue","type":"Class"},{"name":"WorkpieceMaterial","href":"Hi.Physics.WorkpieceMaterial.html","topicHref":"Hi.Physics.WorkpieceMaterial.html","topicUid":"Hi.Physics.WorkpieceMaterial","type":"Class"}]},{"name":"Hi.ScriptApiUtils","href":"Hi.ScriptApiUtils.html","topicHref":"Hi.ScriptApiUtils.html","topicUid":"Hi.ScriptApiUtils","type":"Namespace","items":[{"name":"ICsScriptApi","href":"Hi.ScriptApiUtils.ICsScriptApi.html","topicHref":"Hi.ScriptApiUtils.ICsScriptApi.html","topicUid":"Hi.ScriptApiUtils.ICsScriptApi","type":"Interface"},{"name":"JsAceAttribute","href":"Hi.ScriptApiUtils.JsAceAttribute.html","topicHref":"Hi.ScriptApiUtils.JsAceAttribute.html","topicUid":"Hi.ScriptApiUtils.JsAceAttribute","type":"Class"}]},{"name":"Hi.ShellCommands","href":"Hi.ShellCommands.html","topicHref":"Hi.ShellCommands.html","topicUid":"Hi.ShellCommands","type":"Namespace","items":[{"name":"EnablingWrapper","href":"Hi.ShellCommands.EnablingWrapper.html","topicHref":"Hi.ShellCommands.EnablingWrapper.html","topicUid":"Hi.ShellCommands.EnablingWrapper","type":"Class"},{"name":"GeomDiffCommand","href":"Hi.ShellCommands.GeomDiffCommand.html","topicHref":"Hi.ShellCommands.GeomDiffCommand.html","topicUid":"Hi.ShellCommands.GeomDiffCommand","type":"Class"},{"name":"IShellCommand","href":"Hi.ShellCommands.IShellCommand.html","topicHref":"Hi.ShellCommands.IShellCommand.html","topicUid":"Hi.ShellCommands.IShellCommand","type":"Interface"},{"name":"ITitleCommand","href":"Hi.ShellCommands.ITitleCommand.html","topicHref":"Hi.ShellCommands.ITitleCommand.html","topicUid":"Hi.ShellCommands.ITitleCommand","type":"Interface"},{"name":"Lang","href":"Hi.ShellCommands.Lang.html","topicHref":"Hi.ShellCommands.Lang.html","topicUid":"Hi.ShellCommands.Lang","type":"Class"},{"name":"ListCommand","href":"Hi.ShellCommands.ListCommand.html","topicHref":"Hi.ShellCommands.ListCommand.html","topicUid":"Hi.ShellCommands.ListCommand","type":"Class"},{"name":"MachiningMotionResolutionCommand","href":"Hi.ShellCommands.MachiningMotionResolutionCommand.html","topicHref":"Hi.ShellCommands.MachiningMotionResolutionCommand.html","topicUid":"Hi.ShellCommands.MachiningMotionResolutionCommand","type":"Class"},{"name":"NcCodeCommand","href":"Hi.ShellCommands.NcCodeCommand.html","topicHref":"Hi.ShellCommands.NcCodeCommand.html","topicUid":"Hi.ShellCommands.NcCodeCommand","type":"Class"},{"name":"NcFileCommand","href":"Hi.ShellCommands.NcFileCommand.html","topicHref":"Hi.ShellCommands.NcFileCommand.html","topicUid":"Hi.ShellCommands.NcFileCommand","type":"Class"},{"name":"NcFileListCommand","href":"Hi.ShellCommands.NcFileListCommand.html","topicHref":"Hi.ShellCommands.NcFileListCommand.html","topicUid":"Hi.ShellCommands.NcFileListCommand","type":"Class"},{"name":"NcOptOptionCommand","href":"Hi.ShellCommands.NcOptOptionCommand.html","topicHref":"Hi.ShellCommands.NcOptOptionCommand.html","topicUid":"Hi.ShellCommands.NcOptOptionCommand","type":"Class"},{"name":"OptimizeToFilesCommand","href":"Hi.ShellCommands.OptimizeToFilesCommand.html","topicHref":"Hi.ShellCommands.OptimizeToFilesCommand.html","topicUid":"Hi.ShellCommands.OptimizeToFilesCommand","type":"Class"},{"name":"PostExecutionCommand","href":"Hi.ShellCommands.PostExecutionCommand.html","topicHref":"Hi.ShellCommands.PostExecutionCommand.html","topicUid":"Hi.ShellCommands.PostExecutionCommand","type":"Class"},{"name":"PreSettingCommand","href":"Hi.ShellCommands.PreSettingCommand.html","topicHref":"Hi.ShellCommands.PreSettingCommand.html","topicUid":"Hi.ShellCommands.PreSettingCommand","type":"Class"},{"name":"RecordRuntimeGeomActionEnum","href":"Hi.ShellCommands.RecordRuntimeGeomActionEnum.html","topicHref":"Hi.ShellCommands.RecordRuntimeGeomActionEnum.html","topicUid":"Hi.ShellCommands.RecordRuntimeGeomActionEnum","type":"Enum"},{"name":"RecordRuntimeGeomCommand","href":"Hi.ShellCommands.RecordRuntimeGeomCommand.html","topicHref":"Hi.ShellCommands.RecordRuntimeGeomCommand.html","topicUid":"Hi.ShellCommands.RecordRuntimeGeomCommand","type":"Class"},{"name":"ScriptCommand","href":"Hi.ShellCommands.ScriptCommand.html","topicHref":"Hi.ShellCommands.ScriptCommand.html","topicUid":"Hi.ShellCommands.ScriptCommand","type":"Class"},{"name":"SimpleSessionCommand","href":"Hi.ShellCommands.SimpleSessionCommand.html","topicHref":"Hi.ShellCommands.SimpleSessionCommand.html","topicUid":"Hi.ShellCommands.SimpleSessionCommand","type":"Class"},{"name":"WriteRuntimeGeomToStlCommand","href":"Hi.ShellCommands.WriteRuntimeGeomToStlCommand.html","topicHref":"Hi.ShellCommands.WriteRuntimeGeomToStlCommand.html","topicUid":"Hi.ShellCommands.WriteRuntimeGeomToStlCommand","type":"Class"},{"name":"WriteShotFilesCommand","href":"Hi.ShellCommands.WriteShotFilesCommand.html","topicHref":"Hi.ShellCommands.WriteShotFilesCommand.html","topicUid":"Hi.ShellCommands.WriteShotFilesCommand","type":"Class"},{"name":"WriteStepFilesCommand","href":"Hi.ShellCommands.WriteStepFilesCommand.html","topicHref":"Hi.ShellCommands.WriteStepFilesCommand.html","topicUid":"Hi.ShellCommands.WriteStepFilesCommand","type":"Class"}]},{"name":"Hi.SqliteUtils","href":"Hi.SqliteUtils.html","topicHref":"Hi.SqliteUtils.html","topicUid":"Hi.SqliteUtils","type":"Namespace","items":[{"name":"SqliteIdentityRole","href":"Hi.SqliteUtils.SqliteIdentityRole.html","topicHref":"Hi.SqliteUtils.SqliteIdentityRole.html","topicUid":"Hi.SqliteUtils.SqliteIdentityRole","type":"Class"},{"name":"SqliteIdentityStorage","href":"Hi.SqliteUtils.SqliteIdentityStorage.html","topicHref":"Hi.SqliteUtils.SqliteIdentityStorage.html","topicUid":"Hi.SqliteUtils.SqliteIdentityStorage","type":"Class"},{"name":"SqliteIdentityStorage.RoleRow","href":"Hi.SqliteUtils.SqliteIdentityStorage.RoleRow.html","topicHref":"Hi.SqliteUtils.SqliteIdentityStorage.RoleRow.html","topicUid":"Hi.SqliteUtils.SqliteIdentityStorage.RoleRow","type":"Class"},{"name":"SqliteIdentityStorage.UserRow","href":"Hi.SqliteUtils.SqliteIdentityStorage.UserRow.html","topicHref":"Hi.SqliteUtils.SqliteIdentityStorage.UserRow.html","topicUid":"Hi.SqliteUtils.SqliteIdentityStorage.UserRow","type":"Class"},{"name":"SqliteIdentityUser","href":"Hi.SqliteUtils.SqliteIdentityUser.html","topicHref":"Hi.SqliteUtils.SqliteIdentityUser.html","topicUid":"Hi.SqliteUtils.SqliteIdentityUser","type":"Class"},{"name":"SqliteRoleStore","href":"Hi.SqliteUtils.SqliteRoleStore-1.html","topicHref":"Hi.SqliteUtils.SqliteRoleStore-1.html","topicUid":"Hi.SqliteUtils.SqliteRoleStore`1","type":"Class"},{"name":"SqliteStepStorage","href":"Hi.SqliteUtils.SqliteStepStorage.html","topicHref":"Hi.SqliteUtils.SqliteStepStorage.html","topicUid":"Hi.SqliteUtils.SqliteStepStorage","type":"Class"},{"name":"SqliteStepStorage.MillingStepLuggageRow","href":"Hi.SqliteUtils.SqliteStepStorage.MillingStepLuggageRow.html","topicHref":"Hi.SqliteUtils.SqliteStepStorage.MillingStepLuggageRow.html","topicUid":"Hi.SqliteUtils.SqliteStepStorage.MillingStepLuggageRow","type":"Class"},{"name":"SqliteUserStore","href":"Hi.SqliteUtils.SqliteUserStore-1.html","topicHref":"Hi.SqliteUtils.SqliteUserStore-1.html","topicUid":"Hi.SqliteUtils.SqliteUserStore`1","type":"Class"}]},{"name":"Hi.Test","href":"Hi.Test.html","topicHref":"Hi.Test.html","topicUid":"Hi.Test","type":"Namespace","items":[{"name":"TestCollision","href":"Hi.Test.TestCollision.html","topicHref":"Hi.Test.TestCollision.html","topicUid":"Hi.Test.TestCollision","type":"Class"}]},{"name":"Hi.UiExtensions","href":"Hi.UiExtensions.html","topicHref":"Hi.UiExtensions.html","topicUid":"Hi.UiExtensions","type":"Namespace","items":[{"name":"ChartBoundary","href":"Hi.UiExtensions.ChartBoundary.html","topicHref":"Hi.UiExtensions.ChartBoundary.html","topicUid":"Hi.UiExtensions.ChartBoundary","type":"Class"},{"name":"ChartBoundaryEnum","href":"Hi.UiExtensions.ChartBoundaryEnum.html","topicHref":"Hi.UiExtensions.ChartBoundaryEnum.html","topicUid":"Hi.UiExtensions.ChartBoundaryEnum","type":"Enum"},{"name":"NativeVisibility","href":"Hi.UiExtensions.NativeVisibility.html","topicHref":"Hi.UiExtensions.NativeVisibility.html","topicUid":"Hi.UiExtensions.NativeVisibility","type":"Enum"},{"name":"UiUtil","href":"Hi.UiExtensions.UiUtil.html","topicHref":"Hi.UiExtensions.UiUtil.html","topicUid":"Hi.UiExtensions.UiUtil","type":"Class"},{"name":"UiUtil.InvokeFunc","href":"Hi.UiExtensions.UiUtil.InvokeFunc.html","topicHref":"Hi.UiExtensions.UiUtil.InvokeFunc.html","topicUid":"Hi.UiExtensions.UiUtil.InvokeFunc","type":"Delegate"}]},{"name":"Hi.UniversalNc","href":"Hi.UniversalNc.html","topicHref":"Hi.UniversalNc.html","topicUid":"Hi.UniversalNc","type":"Namespace","items":[{"name":"Lang","href":"Hi.UniversalNc.Lang.html","topicHref":"Hi.UniversalNc.Lang.html","topicUid":"Hi.UniversalNc.Lang","type":"Class"}]},{"name":"Hi.Vibrations","href":"Hi.Vibrations.html","topicHref":"Hi.Vibrations.html","topicUid":"Hi.Vibrations","type":"Namespace","items":[{"name":"AngularVelocityUtil","href":"Hi.Vibrations.AngularVelocityUtil.html","topicHref":"Hi.Vibrations.AngularVelocityUtil.html","topicUid":"Hi.Vibrations.AngularVelocityUtil","type":"Class"},{"name":"ForceAccelAmpPhase","href":"Hi.Vibrations.ForceAccelAmpPhase.html","topicHref":"Hi.Vibrations.ForceAccelAmpPhase.html","topicUid":"Hi.Vibrations.ForceAccelAmpPhase","type":"Class"},{"name":"ForceAccelFourierSeries","href":"Hi.Vibrations.ForceAccelFourierSeries.html","topicHref":"Hi.Vibrations.ForceAccelFourierSeries.html","topicUid":"Hi.Vibrations.ForceAccelFourierSeries","type":"Class"},{"name":"ForceAccelShot","href":"Hi.Vibrations.ForceAccelShot.html","topicHref":"Hi.Vibrations.ForceAccelShot.html","topicUid":"Hi.Vibrations.ForceAccelShot","type":"Class"},{"name":"ForceAccelUtil","href":"Hi.Vibrations.ForceAccelUtil.html","topicHref":"Hi.Vibrations.ForceAccelUtil.html","topicUid":"Hi.Vibrations.ForceAccelUtil","type":"Class"},{"name":"IAngularVelocityOwner","href":"Hi.Vibrations.IAngularVelocityOwner.html","topicHref":"Hi.Vibrations.IAngularVelocityOwner.html","topicUid":"Hi.Vibrations.IAngularVelocityOwner","type":"Interface"},{"name":"VibrationUtil","href":"Hi.Vibrations.VibrationUtil.html","topicHref":"Hi.Vibrations.VibrationUtil.html","topicUid":"Hi.Vibrations.VibrationUtil","type":"Class"},{"name":"WAmpPhase","href":"Hi.Vibrations.WAmpPhase.html","topicHref":"Hi.Vibrations.WAmpPhase.html","topicUid":"Hi.Vibrations.WAmpPhase","type":"Class"},{"name":"WAmpPhaseXyzTransformation","href":"Hi.Vibrations.WAmpPhaseXyzTransformation.html","topicHref":"Hi.Vibrations.WAmpPhaseXyzTransformation.html","topicUid":"Hi.Vibrations.WAmpPhaseXyzTransformation","type":"Class"}]},{"name":"Hi.WinForm.Disp","href":"Hi.WinForm.Disp.html","topicHref":"Hi.WinForm.Disp.html","topicUid":"Hi.WinForm.Disp","type":"Namespace","items":[{"name":"RenderingCanvas","href":"Hi.WinForm.Disp.RenderingCanvas.html","topicHref":"Hi.WinForm.Disp.RenderingCanvas.html","topicUid":"Hi.WinForm.Disp.RenderingCanvas","type":"Class"},{"name":"RenderingForm","href":"Hi.WinForm.Disp.RenderingForm.html","topicHref":"Hi.WinForm.Disp.RenderingForm.html","topicUid":"Hi.WinForm.Disp.RenderingForm","type":"Class"}]},{"name":"Hi.WpfPlus.Disp","href":"Hi.WpfPlus.Disp.html","topicHref":"Hi.WpfPlus.Disp.html","topicUid":"Hi.WpfPlus.Disp","type":"Namespace","items":[{"name":"RenderingCanvas","href":"Hi.WpfPlus.Disp.RenderingCanvas.html","topicHref":"Hi.WpfPlus.Disp.RenderingCanvas.html","topicUid":"Hi.WpfPlus.Disp.RenderingCanvas","type":"Class"},{"name":"RenderingWindow","href":"Hi.WpfPlus.Disp.RenderingWindow.html","topicHref":"Hi.WpfPlus.Disp.RenderingWindow.html","topicUid":"Hi.WpfPlus.Disp.RenderingWindow","type":"Class"},{"name":"WpfDispUtil","href":"Hi.WpfPlus.Disp.WpfDispUtil.html","topicHref":"Hi.WpfPlus.Disp.WpfDispUtil.html","topicUid":"Hi.WpfPlus.Disp.WpfDispUtil","type":"Class"}]},{"name":"HiMachining.Milling","href":"HiMachining.Milling.html","topicHref":"HiMachining.Milling.html","topicUid":"HiMachining.Milling","type":"Namespace","items":[{"name":"ClMillingDevice","href":"HiMachining.Milling.ClMillingDevice.html","topicHref":"HiMachining.Milling.ClMillingDevice.html","topicUid":"HiMachining.Milling.ClMillingDevice","type":"Class"}]},{"name":"HiNc.Grpcs","href":"HiNc.Grpcs.html","topicHref":"HiNc.Grpcs.html","topicUid":"HiNc.Grpcs","type":"Namespace","items":[{"name":"MachiningProjectGrpcServer","href":"HiNc.Grpcs.MachiningProjectGrpcServer.html","topicHref":"HiNc.Grpcs.MachiningProjectGrpcServer.html","topicUid":"HiNc.Grpcs.MachiningProjectGrpcServer","type":"Class"}]},{"name":"numerical","href":"numerical.html","topicHref":"numerical.html","topicUid":"numerical","type":"Namespace","items":[{"name":"Empty","href":"numerical.Empty.html","topicHref":"numerical.Empty.html","topicUid":"numerical.Empty","type":"Class"},{"name":"GrpcCsvRowDictionary","href":"numerical.GrpcCsvRowDictionary.html","topicHref":"numerical.GrpcCsvRowDictionary.html","topicUid":"numerical.GrpcCsvRowDictionary","type":"Class"},{"name":"GrpcNcStep","href":"numerical.GrpcNcStep.html","topicHref":"numerical.GrpcNcStep.html","topicUid":"numerical.GrpcNcStep","type":"Class"},{"name":"NumericalReflection","href":"numerical.NumericalReflection.html","topicHref":"numerical.NumericalReflection.html","topicUid":"numerical.NumericalReflection","type":"Class"},{"name":"NumericalService","href":"numerical.NumericalService.html","topicHref":"numerical.NumericalService.html","topicUid":"numerical.NumericalService","type":"Class"},{"name":"NumericalService.NumericalServiceBase","href":"numerical.NumericalService.NumericalServiceBase.html","topicHref":"numerical.NumericalService.NumericalServiceBase.html","topicUid":"numerical.NumericalService.NumericalServiceBase","type":"Class"},{"name":"NumericalService.NumericalServiceClient","href":"numerical.NumericalService.NumericalServiceClient.html","topicHref":"numerical.NumericalService.NumericalServiceClient.html","topicUid":"numerical.NumericalService.NumericalServiceClient","type":"Class"},{"name":"UniversalNcReflection","href":"numerical.UniversalNcReflection.html","topicHref":"numerical.UniversalNcReflection.html","topicUid":"numerical.UniversalNcReflection","type":"Class"},{"name":"UniversalNcService","href":"numerical.UniversalNcService.html","topicHref":"numerical.UniversalNcService.html","topicUid":"numerical.UniversalNcService","type":"Class"},{"name":"UniversalNcService.UniversalNcServiceBase","href":"numerical.UniversalNcService.UniversalNcServiceBase.html","topicHref":"numerical.UniversalNcService.UniversalNcServiceBase.html","topicUid":"numerical.UniversalNcService.UniversalNcServiceBase","type":"Class"},{"name":"UniversalNcService.UniversalNcServiceClient","href":"numerical.UniversalNcService.UniversalNcServiceClient.html","topicHref":"numerical.UniversalNcService.UniversalNcServiceClient.html","topicUid":"numerical.UniversalNcService.UniversalNcServiceClient","type":"Class"}]}],"memberLayout":"SamePage"} +{"items":[{"name":"Hi.Cbtr","href":"Hi.Cbtr.html","topicHref":"Hi.Cbtr.html","topicUid":"Hi.Cbtr","type":"Namespace","items":[{"name":"CachedTris","href":"Hi.Cbtr.CachedTris.html","topicHref":"Hi.Cbtr.CachedTris.html","topicUid":"Hi.Cbtr.CachedTris","type":"Class"},{"name":"CachedTris.SweepingMode","href":"Hi.Cbtr.CachedTris.SweepingMode.html","topicHref":"Hi.Cbtr.CachedTris.SweepingMode.html","topicUid":"Hi.Cbtr.CachedTris.SweepingMode","type":"Enum"},{"name":"CbtrPickable","href":"Hi.Cbtr.CbtrPickable.html","topicHref":"Hi.Cbtr.CbtrPickable.html","topicUid":"Hi.Cbtr.CbtrPickable","type":"Class"},{"name":"ConstructionDefectDisplayee","href":"Hi.Cbtr.ConstructionDefectDisplayee.html","topicHref":"Hi.Cbtr.ConstructionDefectDisplayee.html","topicUid":"Hi.Cbtr.ConstructionDefectDisplayee","type":"Class"},{"name":"CubeTree","href":"Hi.Cbtr.CubeTree.html","topicHref":"Hi.Cbtr.CubeTree.html","topicUid":"Hi.Cbtr.CubeTree","type":"Class"},{"name":"CubeTree.DefectNodeInfo","href":"Hi.Cbtr.CubeTree.DefectNodeInfo.html","topicHref":"Hi.Cbtr.CubeTree.DefectNodeInfo.html","topicUid":"Hi.Cbtr.CubeTree.DefectNodeInfo","type":"Class"},{"name":"CubeTree.DefectNodeInfo.TriWireInfo","href":"Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo.html","topicHref":"Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo.html","topicUid":"Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo","type":"Class"},{"name":"CubeTree.DefectTriWireInfoInterop","href":"Hi.Cbtr.CubeTree.DefectTriWireInfoInterop.html","topicHref":"Hi.Cbtr.CubeTree.DefectTriWireInfoInterop.html","topicUid":"Hi.Cbtr.CubeTree.DefectTriWireInfoInterop","type":"Struct"},{"name":"CubeTree.InfNodeInfo","href":"Hi.Cbtr.CubeTree.InfNodeInfo.html","topicHref":"Hi.Cbtr.CubeTree.InfNodeInfo.html","topicUid":"Hi.Cbtr.CubeTree.InfNodeInfo","type":"Class"},{"name":"CubeTree.TriWireRelationInterop","href":"Hi.Cbtr.CubeTree.TriWireRelationInterop.html","topicHref":"Hi.Cbtr.CubeTree.TriWireRelationInterop.html","topicUid":"Hi.Cbtr.CubeTree.TriWireRelationInterop","type":"Struct"},{"name":"CubeTree.diff_response_func_t","href":"Hi.Cbtr.CubeTree.diff_response_func_t.html","topicHref":"Hi.Cbtr.CubeTree.diff_response_func_t.html","topicUid":"Hi.Cbtr.CubeTree.diff_response_func_t","type":"Delegate"},{"name":"CubeTreeFile","href":"Hi.Cbtr.CubeTreeFile.html","topicHref":"Hi.Cbtr.CubeTreeFile.html","topicUid":"Hi.Cbtr.CubeTreeFile","type":"Class"},{"name":"DiffAttachment","href":"Hi.Cbtr.DiffAttachment.html","topicHref":"Hi.Cbtr.DiffAttachment.html","topicUid":"Hi.Cbtr.DiffAttachment","type":"Class"},{"name":"GeomBoolCache","href":"Hi.Cbtr.GeomBoolCache.html","topicHref":"Hi.Cbtr.GeomBoolCache.html","topicUid":"Hi.Cbtr.GeomBoolCache","type":"Class"},{"name":"GeomBoolCacheEnum","href":"Hi.Cbtr.GeomBoolCacheEnum.html","topicHref":"Hi.Cbtr.GeomBoolCacheEnum.html","topicUid":"Hi.Cbtr.GeomBoolCacheEnum","type":"Enum"},{"name":"IGetInitStickConvex","href":"Hi.Cbtr.IGetInitStickConvex.html","topicHref":"Hi.Cbtr.IGetInitStickConvex.html","topicUid":"Hi.Cbtr.IGetInitStickConvex","type":"Interface"},{"name":"InfDefectDisplayee","href":"Hi.Cbtr.InfDefectDisplayee.html","topicHref":"Hi.Cbtr.InfDefectDisplayee.html","topicUid":"Hi.Cbtr.InfDefectDisplayee","type":"Class"},{"name":"InitStickConvex","href":"Hi.Cbtr.InitStickConvex.html","topicHref":"Hi.Cbtr.InitStickConvex.html","topicUid":"Hi.Cbtr.InitStickConvex","type":"Class"},{"name":"LsStl","href":"Hi.Cbtr.LsStl.html","topicHref":"Hi.Cbtr.LsStl.html","topicUid":"Hi.Cbtr.LsStl","type":"Class"},{"name":"Substraction","href":"Hi.Cbtr.Substraction.html","topicHref":"Hi.Cbtr.Substraction.html","topicUid":"Hi.Cbtr.Substraction","type":"Class"},{"name":"UnhighlightablePickable","href":"Hi.Cbtr.UnhighlightablePickable.html","topicHref":"Hi.Cbtr.UnhighlightablePickable.html","topicUid":"Hi.Cbtr.UnhighlightablePickable","type":"Class"},{"name":"UnmanagedSubstraction","href":"Hi.Cbtr.UnmanagedSubstraction.html","topicHref":"Hi.Cbtr.UnmanagedSubstraction.html","topicUid":"Hi.Cbtr.UnmanagedSubstraction","type":"Class"},{"name":"WireCube","href":"Hi.Cbtr.WireCube.html","topicHref":"Hi.Cbtr.WireCube.html","topicUid":"Hi.Cbtr.WireCube","type":"Class"},{"name":"node_diff_t","href":"Hi.Cbtr.node_diff_t.html","topicHref":"Hi.Cbtr.node_diff_t.html","topicUid":"Hi.Cbtr.node_diff_t","type":"Struct"}]},{"name":"Hi.Collision","href":"Hi.Collision.html","topicHref":"Hi.Collision.html","topicUid":"Hi.Collision","type":"Namespace","items":[{"name":"AnchoredCollidableLeaf","href":"Hi.Collision.AnchoredCollidableLeaf.html","topicHref":"Hi.Collision.AnchoredCollidableLeaf.html","topicUid":"Hi.Collision.AnchoredCollidableLeaf","type":"Class"},{"name":"AnchoredCollidablePair","href":"Hi.Collision.AnchoredCollidablePair.html","topicHref":"Hi.Collision.AnchoredCollidablePair.html","topicUid":"Hi.Collision.AnchoredCollidablePair","type":"Class"},{"name":"CollidableStl","href":"Hi.Collision.CollidableStl.html","topicHref":"Hi.Collision.CollidableStl.html","topicUid":"Hi.Collision.CollidableStl","type":"Class"},{"name":"CollisionFlag","href":"Hi.Collision.CollisionFlag.html","topicHref":"Hi.Collision.CollisionFlag.html","topicUid":"Hi.Collision.CollisionFlag","type":"Enum"},{"name":"CollisionIndexPair","href":"Hi.Collision.CollisionIndexPair.html","topicHref":"Hi.Collision.CollisionIndexPair.html","topicUid":"Hi.Collision.CollisionIndexPair","type":"Class"},{"name":"CollisionUtil","href":"Hi.Collision.CollisionUtil.html","topicHref":"Hi.Collision.CollisionUtil.html","topicUid":"Hi.Collision.CollisionUtil","type":"Class"},{"name":"FuncAnchoredCollidable","href":"Hi.Collision.FuncAnchoredCollidable.html","topicHref":"Hi.Collision.FuncAnchoredCollidable.html","topicUid":"Hi.Collision.FuncAnchoredCollidable","type":"Class"},{"name":"IAnchoredCollidableBased","href":"Hi.Collision.IAnchoredCollidableBased.html","topicHref":"Hi.Collision.IAnchoredCollidableBased.html","topicUid":"Hi.Collision.IAnchoredCollidableBased","type":"Interface"},{"name":"IAnchoredCollidableLeaf","href":"Hi.Collision.IAnchoredCollidableLeaf.html","topicHref":"Hi.Collision.IAnchoredCollidableLeaf.html","topicUid":"Hi.Collision.IAnchoredCollidableLeaf","type":"Interface"},{"name":"IAnchoredCollidableNode","href":"Hi.Collision.IAnchoredCollidableNode.html","topicHref":"Hi.Collision.IAnchoredCollidableNode.html","topicUid":"Hi.Collision.IAnchoredCollidableNode","type":"Interface"},{"name":"IAnchoredCollidableStem","href":"Hi.Collision.IAnchoredCollidableStem.html","topicHref":"Hi.Collision.IAnchoredCollidableStem.html","topicUid":"Hi.Collision.IAnchoredCollidableStem","type":"Interface"},{"name":"ICollidable","href":"Hi.Collision.ICollidable.html","topicHref":"Hi.Collision.ICollidable.html","topicUid":"Hi.Collision.ICollidable","type":"Interface"},{"name":"ICollidee","href":"Hi.Collision.ICollidee.html","topicHref":"Hi.Collision.ICollidee.html","topicUid":"Hi.Collision.ICollidee","type":"Interface"},{"name":"ICollisionArena","href":"Hi.Collision.ICollisionArena.html","topicHref":"Hi.Collision.ICollisionArena.html","topicUid":"Hi.Collision.ICollisionArena","type":"Interface"},{"name":"ICollisionIndex","href":"Hi.Collision.ICollisionIndex.html","topicHref":"Hi.Collision.ICollisionIndex.html","topicUid":"Hi.Collision.ICollisionIndex","type":"Interface"},{"name":"IGetAnchoredCollidablePairs","href":"Hi.Collision.IGetAnchoredCollidablePairs.html","topicHref":"Hi.Collision.IGetAnchoredCollidablePairs.html","topicUid":"Hi.Collision.IGetAnchoredCollidablePairs","type":"Interface"},{"name":"IGetCollidable","href":"Hi.Collision.IGetCollidable.html","topicHref":"Hi.Collision.IGetCollidable.html","topicUid":"Hi.Collision.IGetCollidable","type":"Interface"},{"name":"IGetCollisionIndexPairs","href":"Hi.Collision.IGetCollisionIndexPairs.html","topicHref":"Hi.Collision.IGetCollisionIndexPairs.html","topicUid":"Hi.Collision.IGetCollisionIndexPairs","type":"Interface"},{"name":"IGetDefaultCollidablePairs","href":"Hi.Collision.IGetDefaultCollidablePairs.html","topicHref":"Hi.Collision.IGetDefaultCollidablePairs.html","topicUid":"Hi.Collision.IGetDefaultCollidablePairs","type":"Interface"},{"name":"IGetTriTree","href":"Hi.Collision.IGetTriTree.html","topicHref":"Hi.Collision.IGetTriTree.html","topicUid":"Hi.Collision.IGetTriTree","type":"Interface"},{"name":"MechCollisionResult","href":"Hi.Collision.MechCollisionResult.html","topicHref":"Hi.Collision.MechCollisionResult.html","topicUid":"Hi.Collision.MechCollisionResult","type":"Class"},{"name":"MechCollisionUtil","href":"Hi.Collision.MechCollisionUtil.html","topicHref":"Hi.Collision.MechCollisionUtil.html","topicUid":"Hi.Collision.MechCollisionUtil","type":"Class"},{"name":"TriTree","href":"Hi.Collision.TriTree.html","topicHref":"Hi.Collision.TriTree.html","topicUid":"Hi.Collision.TriTree","type":"Class"}]},{"name":"Hi.Collisions","href":"Hi.Collisions.html","topicHref":"Hi.Collisions.html","topicUid":"Hi.Collisions","type":"Namespace","items":[{"name":"AnchoredCollidabled","href":"Hi.Collisions.AnchoredCollidabled.html","topicHref":"Hi.Collisions.AnchoredCollidabled.html","topicUid":"Hi.Collisions.AnchoredCollidabled","type":"Class"},{"name":"IAnchoredCollidabled","href":"Hi.Collisions.IAnchoredCollidabled.html","topicHref":"Hi.Collisions.IAnchoredCollidabled.html","topicUid":"Hi.Collisions.IAnchoredCollidabled","type":"Interface"}]},{"name":"Hi.Coloring","href":"Hi.Coloring.html","topicHref":"Hi.Coloring.html","topicUid":"Hi.Coloring","type":"Namespace","items":[{"name":"ColorUtil","href":"Hi.Coloring.ColorUtil.html","topicHref":"Hi.Coloring.ColorUtil.html","topicUid":"Hi.Coloring.ColorUtil","type":"Class"},{"name":"DictionaryColorGuide","href":"Hi.Coloring.DictionaryColorGuide.html","topicHref":"Hi.Coloring.DictionaryColorGuide.html","topicUid":"Hi.Coloring.DictionaryColorGuide","type":"Class"},{"name":"DiscreteQuantityColorGuide","href":"Hi.Coloring.DiscreteQuantityColorGuide.html","topicHref":"Hi.Coloring.DiscreteQuantityColorGuide.html","topicUid":"Hi.Coloring.DiscreteQuantityColorGuide","type":"Class"},{"name":"FilteredColorGuide","href":"Hi.Coloring.FilteredColorGuide.html","topicHref":"Hi.Coloring.FilteredColorGuide.html","topicUid":"Hi.Coloring.FilteredColorGuide","type":"Class"},{"name":"FuncRangeColorGuide","href":"Hi.Coloring.FuncRangeColorGuide.html","topicHref":"Hi.Coloring.FuncRangeColorGuide.html","topicUid":"Hi.Coloring.FuncRangeColorGuide","type":"Class"},{"name":"IColorGuide","href":"Hi.Coloring.IColorGuide.html","topicHref":"Hi.Coloring.IColorGuide.html","topicUid":"Hi.Coloring.IColorGuide","type":"Interface"},{"name":"IColorGuideProperty","href":"Hi.Coloring.IColorGuideProperty.html","topicHref":"Hi.Coloring.IColorGuideProperty.html","topicUid":"Hi.Coloring.IColorGuideProperty","type":"Interface"},{"name":"IGetColorGuide","href":"Hi.Coloring.IGetColorGuide.html","topicHref":"Hi.Coloring.IGetColorGuide.html","topicUid":"Hi.Coloring.IGetColorGuide","type":"Interface"},{"name":"IGetRangeColorRule","href":"Hi.Coloring.IGetRangeColorRule.html","topicHref":"Hi.Coloring.IGetRangeColorRule.html","topicUid":"Hi.Coloring.IGetRangeColorRule","type":"Interface"},{"name":"IGetRgb","href":"Hi.Coloring.IGetRgb.html","topicHref":"Hi.Coloring.IGetRgb.html","topicUid":"Hi.Coloring.IGetRgb","type":"Interface"},{"name":"IGetRgbWithPriority","href":"Hi.Coloring.IGetRgbWithPriority.html","topicHref":"Hi.Coloring.IGetRgbWithPriority.html","topicUid":"Hi.Coloring.IGetRgbWithPriority","type":"Interface"},{"name":"PlainColorGuide","href":"Hi.Coloring.PlainColorGuide.html","topicHref":"Hi.Coloring.PlainColorGuide.html","topicUid":"Hi.Coloring.PlainColorGuide","type":"Class"},{"name":"QuantityColorGuide","href":"Hi.Coloring.QuantityColorGuide.html","topicHref":"Hi.Coloring.QuantityColorGuide.html","topicUid":"Hi.Coloring.QuantityColorGuide","type":"Class"},{"name":"RangeColorRule","href":"Hi.Coloring.RangeColorRule.html","topicHref":"Hi.Coloring.RangeColorRule.html","topicUid":"Hi.Coloring.RangeColorRule","type":"Class"},{"name":"RatioRgbFuncEnum","href":"Hi.Coloring.RatioRgbFuncEnum.html","topicHref":"Hi.Coloring.RatioRgbFuncEnum.html","topicUid":"Hi.Coloring.RatioRgbFuncEnum","type":"Enum"},{"name":"RgbSeed","href":"Hi.Coloring.RgbSeed.html","topicHref":"Hi.Coloring.RgbSeed.html","topicUid":"Hi.Coloring.RgbSeed","type":"Class"}]},{"name":"Hi.Common","href":"Hi.Common.html","topicHref":"Hi.Common.html","topicUid":"Hi.Common","type":"Namespace","items":[{"name":"BinIoUtil","href":"Hi.Common.BinIoUtil.html","topicHref":"Hi.Common.BinIoUtil.html","topicUid":"Hi.Common.BinIoUtil","type":"Class"},{"name":"BitUtil","href":"Hi.Common.BitUtil.html","topicHref":"Hi.Common.BitUtil.html","topicUid":"Hi.Common.BitUtil","type":"Class"},{"name":"BlockingTimer","href":"Hi.Common.BlockingTimer.html","topicHref":"Hi.Common.BlockingTimer.html","topicUid":"Hi.Common.BlockingTimer","type":"Class"},{"name":"BytesUtil","href":"Hi.Common.BytesUtil.html","topicHref":"Hi.Common.BytesUtil.html","topicUid":"Hi.Common.BytesUtil","type":"Class"},{"name":"ConcurrentTimeCounter","href":"Hi.Common.ConcurrentTimeCounter.html","topicHref":"Hi.Common.ConcurrentTimeCounter.html","topicUid":"Hi.Common.ConcurrentTimeCounter","type":"Class"},{"name":"ConsoleUtil","href":"Hi.Common.ConsoleUtil.html","topicHref":"Hi.Common.ConsoleUtil.html","topicUid":"Hi.Common.ConsoleUtil","type":"Class"},{"name":"CppLogUtil","href":"Hi.Common.CppLogUtil.html","topicHref":"Hi.Common.CppLogUtil.html","topicUid":"Hi.Common.CppLogUtil","type":"Class"},{"name":"CppLogUtil.LogDelegate","href":"Hi.Common.CppLogUtil.LogDelegate.html","topicHref":"Hi.Common.CppLogUtil.LogDelegate.html","topicUid":"Hi.Common.CppLogUtil.LogDelegate","type":"Delegate"},{"name":"CultureUtil","href":"Hi.Common.CultureUtil.html","topicHref":"Hi.Common.CultureUtil.html","topicUid":"Hi.Common.CultureUtil","type":"Class"},{"name":"DebugUtil","href":"Hi.Common.DebugUtil.html","topicHref":"Hi.Common.DebugUtil.html","topicUid":"Hi.Common.DebugUtil","type":"Class"},{"name":"DuplicateUtil","href":"Hi.Common.DuplicateUtil.html","topicHref":"Hi.Common.DuplicateUtil.html","topicUid":"Hi.Common.DuplicateUtil","type":"Class"},{"name":"EnumUtil","href":"Hi.Common.EnumUtil.html","topicHref":"Hi.Common.EnumUtil.html","topicUid":"Hi.Common.EnumUtil","type":"Class"},{"name":"EnumerablePlayer","href":"Hi.Common.EnumerablePlayer.html","topicHref":"Hi.Common.EnumerablePlayer.html","topicUid":"Hi.Common.EnumerablePlayer","type":"Class"},{"name":"ExceptionUtil","href":"Hi.Common.ExceptionUtil.html","topicHref":"Hi.Common.ExceptionUtil.html","topicUid":"Hi.Common.ExceptionUtil","type":"Class"},{"name":"IAbstractNote","href":"Hi.Common.IAbstractNote.html","topicHref":"Hi.Common.IAbstractNote.html","topicUid":"Hi.Common.IAbstractNote","type":"Interface"},{"name":"IBinaryIo","href":"Hi.Common.IBinaryIo.html","topicHref":"Hi.Common.IBinaryIo.html","topicUid":"Hi.Common.IBinaryIo","type":"Interface"},{"name":"IClearCache","href":"Hi.Common.IClearCache.html","topicHref":"Hi.Common.IClearCache.html","topicUid":"Hi.Common.IClearCache","type":"Interface"},{"name":"IDuplicate","href":"Hi.Common.IDuplicate.html","topicHref":"Hi.Common.IDuplicate.html","topicUid":"Hi.Common.IDuplicate","type":"Interface"},{"name":"IGetQuantityByKey","href":"Hi.Common.IGetQuantityByKey.html","topicHref":"Hi.Common.IGetQuantityByKey.html","topicUid":"Hi.Common.IGetQuantityByKey","type":"Interface"},{"name":"IGetSelectionName","href":"Hi.Common.IGetSelectionName.html","topicHref":"Hi.Common.IGetSelectionName.html","topicUid":"Hi.Common.IGetSelectionName","type":"Interface"},{"name":"INameNote","href":"Hi.Common.INameNote.html","topicHref":"Hi.Common.INameNote.html","topicUid":"Hi.Common.INameNote","type":"Interface"},{"name":"IPreferredFileName","href":"Hi.Common.IPreferredFileName.html","topicHref":"Hi.Common.IPreferredFileName.html","topicUid":"Hi.Common.IPreferredFileName","type":"Interface"},{"name":"IProgressFraction","href":"Hi.Common.IProgressFraction.html","topicHref":"Hi.Common.IProgressFraction.html","topicUid":"Hi.Common.IProgressFraction","type":"Interface"},{"name":"ISourceFile","href":"Hi.Common.ISourceFile.html","topicHref":"Hi.Common.ISourceFile.html","topicUid":"Hi.Common.ISourceFile","type":"Interface"},{"name":"IToPresentDto","href":"Hi.Common.IToPresentDto.html","topicHref":"Hi.Common.IToPresentDto.html","topicUid":"Hi.Common.IToPresentDto","type":"Interface"},{"name":"IUpdateByContent","href":"Hi.Common.IUpdateByContent.html","topicHref":"Hi.Common.IUpdateByContent.html","topicUid":"Hi.Common.IUpdateByContent","type":"Interface"},{"name":"IUriGetter","href":"Hi.Common.IUriGetter.html","topicHref":"Hi.Common.IUriGetter.html","topicUid":"Hi.Common.IUriGetter","type":"Interface"},{"name":"IWriteBin","href":"Hi.Common.IWriteBin.html","topicHref":"Hi.Common.IWriteBin.html","topicUid":"Hi.Common.IWriteBin","type":"Interface"},{"name":"IndexSegment","href":"Hi.Common.IndexSegment.html","topicHref":"Hi.Common.IndexSegment.html","topicUid":"Hi.Common.IndexSegment","type":"Class"},{"name":"IntegerKeyDictionaryConverter","href":"Hi.Common.IntegerKeyDictionaryConverter.html","topicHref":"Hi.Common.IntegerKeyDictionaryConverter.html","topicUid":"Hi.Common.IntegerKeyDictionaryConverter","type":"Class"},{"name":"IntegerKeyDictionaryConverter","href":"Hi.Common.IntegerKeyDictionaryConverter-1.html","topicHref":"Hi.Common.IntegerKeyDictionaryConverter-1.html","topicUid":"Hi.Common.IntegerKeyDictionaryConverter`1","type":"Class"},{"name":"InternalException","href":"Hi.Common.InternalException.html","topicHref":"Hi.Common.InternalException.html","topicUid":"Hi.Common.InternalException","type":"Class"},{"name":"InvokeUtil","href":"Hi.Common.InvokeUtil.html","topicHref":"Hi.Common.InvokeUtil.html","topicUid":"Hi.Common.InvokeUtil","type":"Class"},{"name":"JsonUtil","href":"Hi.Common.JsonUtil.html","topicHref":"Hi.Common.JsonUtil.html","topicUid":"Hi.Common.JsonUtil","type":"Class"},{"name":"LooseRunner","href":"Hi.Common.LooseRunner.html","topicHref":"Hi.Common.LooseRunner.html","topicUid":"Hi.Common.LooseRunner","type":"Class"},{"name":"LooseRunner.MergedCancellationTokenRun","href":"Hi.Common.LooseRunner.MergedCancellationTokenRun.html","topicHref":"Hi.Common.LooseRunner.MergedCancellationTokenRun.html","topicUid":"Hi.Common.LooseRunner.MergedCancellationTokenRun","type":"Delegate"},{"name":"ManualUtil","href":"Hi.Common.ManualUtil.html","topicHref":"Hi.Common.ManualUtil.html","topicUid":"Hi.Common.ManualUtil","type":"Class"},{"name":"MaskUtil","href":"Hi.Common.MaskUtil.html","topicHref":"Hi.Common.MaskUtil.html","topicUid":"Hi.Common.MaskUtil","type":"Class"},{"name":"NameUtil","href":"Hi.Common.NameUtil.html","topicHref":"Hi.Common.NameUtil.html","topicUid":"Hi.Common.NameUtil","type":"Class"},{"name":"PacePlayee","href":"Hi.Common.PacePlayee.html","topicHref":"Hi.Common.PacePlayee.html","topicUid":"Hi.Common.PacePlayee","type":"Class"},{"name":"PacePlayer","href":"Hi.Common.PacePlayer.html","topicHref":"Hi.Common.PacePlayer.html","topicUid":"Hi.Common.PacePlayer","type":"Class"},{"name":"Pair","href":"Hi.Common.Pair-2.html","topicHref":"Hi.Common.Pair-2.html","topicUid":"Hi.Common.Pair`2","type":"Class"},{"name":"ProgressFraction","href":"Hi.Common.ProgressFraction.html","topicHref":"Hi.Common.ProgressFraction.html","topicUid":"Hi.Common.ProgressFraction","type":"Class"},{"name":"Range","href":"Hi.Common.Range-1.html","topicHref":"Hi.Common.Range-1.html","topicUid":"Hi.Common.Range`1","type":"Class"},{"name":"ResourceUtil","href":"Hi.Common.ResourceUtil.html","topicHref":"Hi.Common.ResourceUtil.html","topicUid":"Hi.Common.ResourceUtil","type":"Class"},{"name":"RoutineBlocker","href":"Hi.Common.RoutineBlocker.html","topicHref":"Hi.Common.RoutineBlocker.html","topicUid":"Hi.Common.RoutineBlocker","type":"Class"},{"name":"RoutineBlocker0","href":"Hi.Common.RoutineBlocker0.html","topicHref":"Hi.Common.RoutineBlocker0.html","topicUid":"Hi.Common.RoutineBlocker0","type":"Class"},{"name":"SearchResult","href":"Hi.Common.SearchResult.html","topicHref":"Hi.Common.SearchResult.html","topicUid":"Hi.Common.SearchResult","type":"Enum"},{"name":"SeqPairUtil","href":"Hi.Common.SeqPairUtil.html","topicHref":"Hi.Common.SeqPairUtil.html","topicUid":"Hi.Common.SeqPairUtil","type":"Class"},{"name":"SeqPair","href":"Hi.Common.SeqPair-1.html","topicHref":"Hi.Common.SeqPair-1.html","topicUid":"Hi.Common.SeqPair`1","type":"Class"},{"name":"ServerFileExplorerConfig","href":"Hi.Common.ServerFileExplorerConfig.html","topicHref":"Hi.Common.ServerFileExplorerConfig.html","topicUid":"Hi.Common.ServerFileExplorerConfig","type":"Class"},{"name":"StringLocalizer","href":"Hi.Common.StringLocalizer.html","topicHref":"Hi.Common.StringLocalizer.html","topicUid":"Hi.Common.StringLocalizer","type":"Class"},{"name":"StringUtil","href":"Hi.Common.StringUtil.html","topicHref":"Hi.Common.StringUtil.html","topicUid":"Hi.Common.StringUtil","type":"Class"},{"name":"TaskUtil","href":"Hi.Common.TaskUtil.html","topicHref":"Hi.Common.TaskUtil.html","topicUid":"Hi.Common.TaskUtil","type":"Class"},{"name":"TimeCounter","href":"Hi.Common.TimeCounter.html","topicHref":"Hi.Common.TimeCounter.html","topicUid":"Hi.Common.TimeCounter","type":"Class"}]},{"name":"Hi.Common.Collections","href":"Hi.Common.Collections.html","topicHref":"Hi.Common.Collections.html","topicUid":"Hi.Common.Collections","type":"Namespace","items":[{"name":"DictionaryUtil","href":"Hi.Common.Collections.DictionaryUtil.html","topicHref":"Hi.Common.Collections.DictionaryUtil.html","topicUid":"Hi.Common.Collections.DictionaryUtil","type":"Class"},{"name":"EnumerableUtil","href":"Hi.Common.Collections.EnumerableUtil.html","topicHref":"Hi.Common.Collections.EnumerableUtil.html","topicUid":"Hi.Common.Collections.EnumerableUtil","type":"Class"},{"name":"FixedSizeConcurrentLinkedListUtil","href":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil.html","topicHref":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil.html","topicUid":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil","type":"Class"},{"name":"LazyLinkedListNode","href":"Hi.Common.Collections.LazyLinkedListNode-1.html","topicHref":"Hi.Common.Collections.LazyLinkedListNode-1.html","topicUid":"Hi.Common.Collections.LazyLinkedListNode`1","type":"Class"},{"name":"LazyLinkedList","href":"Hi.Common.Collections.LazyLinkedList-1.html","topicHref":"Hi.Common.Collections.LazyLinkedList-1.html","topicUid":"Hi.Common.Collections.LazyLinkedList`1","type":"Class"},{"name":"LinkedListUtil","href":"Hi.Common.Collections.LinkedListUtil.html","topicHref":"Hi.Common.Collections.LinkedListUtil.html","topicUid":"Hi.Common.Collections.LinkedListUtil","type":"Class"},{"name":"ListIndexBasedEnumerable","href":"Hi.Common.Collections.ListIndexBasedEnumerable-1.html","topicHref":"Hi.Common.Collections.ListIndexBasedEnumerable-1.html","topicUid":"Hi.Common.Collections.ListIndexBasedEnumerable`1","type":"Class"},{"name":"ListIndexBasedIEnumerator","href":"Hi.Common.Collections.ListIndexBasedIEnumerator-1.html","topicHref":"Hi.Common.Collections.ListIndexBasedIEnumerator-1.html","topicUid":"Hi.Common.Collections.ListIndexBasedIEnumerator`1","type":"Class"},{"name":"ListUtil","href":"Hi.Common.Collections.ListUtil.html","topicHref":"Hi.Common.Collections.ListUtil.html","topicUid":"Hi.Common.Collections.ListUtil","type":"Class"},{"name":"ListUtil.OuterPolationMode","href":"Hi.Common.Collections.ListUtil.OuterPolationMode.html","topicHref":"Hi.Common.Collections.ListUtil.OuterPolationMode.html","topicUid":"Hi.Common.Collections.ListUtil.OuterPolationMode","type":"Enum"},{"name":"SearchTargetMode","href":"Hi.Common.Collections.SearchTargetMode.html","topicHref":"Hi.Common.Collections.SearchTargetMode.html","topicUid":"Hi.Common.Collections.SearchTargetMode","type":"Enum"},{"name":"SeekDirection","href":"Hi.Common.Collections.SeekDirection.html","topicHref":"Hi.Common.Collections.SeekDirection.html","topicUid":"Hi.Common.Collections.SeekDirection","type":"Enum"},{"name":"SortedListUtil","href":"Hi.Common.Collections.SortedListUtil.html","topicHref":"Hi.Common.Collections.SortedListUtil.html","topicUid":"Hi.Common.Collections.SortedListUtil","type":"Class"},{"name":"SubList","href":"Hi.Common.Collections.SubList-1.html","topicHref":"Hi.Common.Collections.SubList-1.html","topicUid":"Hi.Common.Collections.SubList`1","type":"Class"},{"name":"SynList","href":"Hi.Common.Collections.SynList-1.html","topicHref":"Hi.Common.Collections.SynList-1.html","topicUid":"Hi.Common.Collections.SynList`1","type":"Class"}]},{"name":"Hi.Common.CsvUtils","href":"Hi.Common.CsvUtils.html","topicHref":"Hi.Common.CsvUtils.html","topicUid":"Hi.Common.CsvUtils","type":"Namespace","items":[{"name":"CsvInputKit","href":"Hi.Common.CsvUtils.CsvInputKit.html","topicHref":"Hi.Common.CsvUtils.CsvInputKit.html","topicUid":"Hi.Common.CsvUtils.CsvInputKit","type":"Class"},{"name":"CsvOutputKit","href":"Hi.Common.CsvUtils.CsvOutputKit.html","topicHref":"Hi.Common.CsvUtils.CsvOutputKit.html","topicUid":"Hi.Common.CsvUtils.CsvOutputKit","type":"Class"},{"name":"CsvUtil","href":"Hi.Common.CsvUtils.CsvUtil.html","topicHref":"Hi.Common.CsvUtils.CsvUtil.html","topicUid":"Hi.Common.CsvUtils.CsvUtil","type":"Class"},{"name":"ICsvRowIo","href":"Hi.Common.CsvUtils.ICsvRowIo.html","topicHref":"Hi.Common.CsvUtils.ICsvRowIo.html","topicUid":"Hi.Common.CsvUtils.ICsvRowIo","type":"Interface"},{"name":"IGetCsvDictionary","href":"Hi.Common.CsvUtils.IGetCsvDictionary.html","topicHref":"Hi.Common.CsvUtils.IGetCsvDictionary.html","topicUid":"Hi.Common.CsvUtils.IGetCsvDictionary","type":"Interface"}]},{"name":"Hi.Common.FileLines","href":"Hi.Common.FileLines.html","topicHref":"Hi.Common.FileLines.html","topicUid":"Hi.Common.FileLines","type":"Namespace","items":[{"name":"FileBeginEventArgs","href":"Hi.Common.FileLines.FileBeginEventArgs.html","topicHref":"Hi.Common.FileLines.FileBeginEventArgs.html","topicUid":"Hi.Common.FileLines.FileBeginEventArgs","type":"Class"},{"name":"FileEndEventArgs","href":"Hi.Common.FileLines.FileEndEventArgs.html","topicHref":"Hi.Common.FileLines.FileEndEventArgs.html","topicUid":"Hi.Common.FileLines.FileEndEventArgs","type":"Class"},{"name":"FileLineIndex","href":"Hi.Common.FileLines.FileLineIndex.html","topicHref":"Hi.Common.FileLines.FileLineIndex.html","topicUid":"Hi.Common.FileLines.FileLineIndex","type":"Class"},{"name":"FileLinePipingKit","href":"Hi.Common.FileLines.FileLinePipingKit.html","topicHref":"Hi.Common.FileLines.FileLinePipingKit.html","topicUid":"Hi.Common.FileLines.FileLinePipingKit","type":"Class"},{"name":"FileLineUtil","href":"Hi.Common.FileLines.FileLineUtil.html","topicHref":"Hi.Common.FileLines.FileLineUtil.html","topicUid":"Hi.Common.FileLines.FileLineUtil","type":"Class"},{"name":"FileUtil","href":"Hi.Common.FileLines.FileUtil.html","topicHref":"Hi.Common.FileLines.FileUtil.html","topicUid":"Hi.Common.FileLines.FileUtil","type":"Class"},{"name":"IFileChangedEventSupport","href":"Hi.Common.FileLines.IFileChangedEventSupport.html","topicHref":"Hi.Common.FileLines.IFileChangedEventSupport.html","topicUid":"Hi.Common.FileLines.IFileChangedEventSupport","type":"Interface"},{"name":"IFileLine","href":"Hi.Common.FileLines.IFileLine.html","topicHref":"Hi.Common.FileLines.IFileLine.html","topicUid":"Hi.Common.FileLines.IFileLine","type":"Interface"},{"name":"IFileLineIndex","href":"Hi.Common.FileLines.IFileLineIndex.html","topicHref":"Hi.Common.FileLines.IFileLineIndex.html","topicUid":"Hi.Common.FileLines.IFileLineIndex","type":"Interface"},{"name":"IGetFileLineIndex","href":"Hi.Common.FileLines.IGetFileLineIndex.html","topicHref":"Hi.Common.FileLines.IGetFileLineIndex.html","topicUid":"Hi.Common.FileLines.IGetFileLineIndex","type":"Interface"},{"name":"IGetIndexedFileLine","href":"Hi.Common.FileLines.IGetIndexedFileLine.html","topicHref":"Hi.Common.FileLines.IGetIndexedFileLine.html","topicUid":"Hi.Common.FileLines.IGetIndexedFileLine","type":"Interface"},{"name":"IIndexedFileLine","href":"Hi.Common.FileLines.IIndexedFileLine.html","topicHref":"Hi.Common.FileLines.IIndexedFileLine.html","topicUid":"Hi.Common.FileLines.IIndexedFileLine","type":"Interface"},{"name":"ILineChangedEventSupport","href":"Hi.Common.FileLines.ILineChangedEventSupport.html","topicHref":"Hi.Common.FileLines.ILineChangedEventSupport.html","topicUid":"Hi.Common.FileLines.ILineChangedEventSupport","type":"Interface"},{"name":"IndexedFile","href":"Hi.Common.FileLines.IndexedFile.html","topicHref":"Hi.Common.FileLines.IndexedFile.html","topicUid":"Hi.Common.FileLines.IndexedFile","type":"Class"},{"name":"IndexedFileLine","href":"Hi.Common.FileLines.IndexedFileLine.html","topicHref":"Hi.Common.FileLines.IndexedFileLine.html","topicUid":"Hi.Common.FileLines.IndexedFileLine","type":"Class"},{"name":"LineBeginEventArgs","href":"Hi.Common.FileLines.LineBeginEventArgs.html","topicHref":"Hi.Common.FileLines.LineBeginEventArgs.html","topicUid":"Hi.Common.FileLines.LineBeginEventArgs","type":"Class"},{"name":"LineEndEventArgs","href":"Hi.Common.FileLines.LineEndEventArgs.html","topicHref":"Hi.Common.FileLines.LineEndEventArgs.html","topicUid":"Hi.Common.FileLines.LineEndEventArgs","type":"Class"}]},{"name":"Hi.Common.Messages","href":"Hi.Common.Messages.html","topicHref":"Hi.Common.Messages.html","topicUid":"Hi.Common.Messages","type":"Namespace","items":[{"name":"BootstrapTheme","href":"Hi.Common.Messages.BootstrapTheme.html","topicHref":"Hi.Common.Messages.BootstrapTheme.html","topicUid":"Hi.Common.Messages.BootstrapTheme","type":"Enum"},{"name":"MessageBoardUtil","href":"Hi.Common.Messages.MessageBoardUtil.html","topicHref":"Hi.Common.Messages.MessageBoardUtil.html","topicUid":"Hi.Common.Messages.MessageBoardUtil","type":"Class"},{"name":"MessageFlag","href":"Hi.Common.Messages.MessageFlag.html","topicHref":"Hi.Common.Messages.MessageFlag.html","topicUid":"Hi.Common.Messages.MessageFlag","type":"Enum"},{"name":"MessageUtil","href":"Hi.Common.Messages.MessageUtil.html","topicHref":"Hi.Common.Messages.MessageUtil.html","topicUid":"Hi.Common.Messages.MessageUtil","type":"Class"},{"name":"MultiTagMessage","href":"Hi.Common.Messages.MultiTagMessage.html","topicHref":"Hi.Common.Messages.MultiTagMessage.html","topicUid":"Hi.Common.Messages.MultiTagMessage","type":"Class"},{"name":"MultiTagMessageUtil","href":"Hi.Common.Messages.MultiTagMessageUtil.html","topicHref":"Hi.Common.Messages.MultiTagMessageUtil.html","topicUid":"Hi.Common.Messages.MultiTagMessageUtil","type":"Class"},{"name":"ShowMessageBoardDelegate","href":"Hi.Common.Messages.ShowMessageBoardDelegate.html","topicHref":"Hi.Common.Messages.ShowMessageBoardDelegate.html","topicUid":"Hi.Common.Messages.ShowMessageBoardDelegate","type":"Delegate"}]},{"name":"Hi.Common.MinMaxUtils","href":"Hi.Common.MinMaxUtils.html","topicHref":"Hi.Common.MinMaxUtils.html","topicUid":"Hi.Common.MinMaxUtils","type":"Namespace","items":[{"name":"IndexedMinMaxPos","href":"Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html","topicHref":"Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html","topicUid":"Hi.Common.MinMaxUtils.IndexedMinMaxPos`2","type":"Class"},{"name":"MinMaxUtil","href":"Hi.Common.MinMaxUtils.MinMaxUtil.html","topicHref":"Hi.Common.MinMaxUtils.MinMaxUtil.html","topicUid":"Hi.Common.MinMaxUtils.MinMaxUtil","type":"Class"}]},{"name":"Hi.Common.NativeProgresses","href":"Hi.Common.NativeProgresses.html","topicHref":"Hi.Common.NativeProgresses.html","topicUid":"Hi.Common.NativeProgresses","type":"Namespace","items":[{"name":"NativeProgressFraction","href":"Hi.Common.NativeProgresses.NativeProgressFraction.html","topicHref":"Hi.Common.NativeProgresses.NativeProgressFraction.html","topicUid":"Hi.Common.NativeProgresses.NativeProgressFraction","type":"Class"},{"name":"progress_monitor_t","href":"Hi.Common.NativeProgresses.progress_monitor_t.html","topicHref":"Hi.Common.NativeProgresses.progress_monitor_t.html","topicUid":"Hi.Common.NativeProgresses.progress_monitor_t","type":"Struct"},{"name":"report_progress_func_t","href":"Hi.Common.NativeProgresses.report_progress_func_t.html","topicHref":"Hi.Common.NativeProgresses.report_progress_func_t.html","topicUid":"Hi.Common.NativeProgresses.report_progress_func_t","type":"Delegate"}]},{"name":"Hi.Common.ParallelBulkUtils","href":"Hi.Common.ParallelBulkUtils.html","topicHref":"Hi.Common.ParallelBulkUtils.html","topicUid":"Hi.Common.ParallelBulkUtils","type":"Namespace","items":[{"name":"ParallelBulkReader","href":"Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ParallelBulkReader`1","type":"Class"},{"name":"ParallelBulkWriter","href":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter`1","type":"Class"},{"name":"ReadBulkDelegate","href":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate`1","type":"Delegate"},{"name":"SequentialBulkReader","href":"Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html","topicHref":"Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html","topicUid":"Hi.Common.ParallelBulkUtils.SequentialBulkReader`1","type":"Class"}]},{"name":"Hi.Common.PathUtils","href":"Hi.Common.PathUtils.html","topicHref":"Hi.Common.PathUtils.html","topicUid":"Hi.Common.PathUtils","type":"Namespace","items":[{"name":"ExtendedNamedPath","href":"Hi.Common.PathUtils.ExtendedNamedPath.html","topicHref":"Hi.Common.PathUtils.ExtendedNamedPath.html","topicUid":"Hi.Common.PathUtils.ExtendedNamedPath","type":"Class"},{"name":"HttpUtil","href":"Hi.Common.PathUtils.HttpUtil.html","topicHref":"Hi.Common.PathUtils.HttpUtil.html","topicUid":"Hi.Common.PathUtils.HttpUtil","type":"Class"},{"name":"Lang","href":"Hi.Common.PathUtils.Lang.html","topicHref":"Hi.Common.PathUtils.Lang.html","topicUid":"Hi.Common.PathUtils.Lang","type":"Class"},{"name":"NamedPath","href":"Hi.Common.PathUtils.NamedPath.html","topicHref":"Hi.Common.PathUtils.NamedPath.html","topicUid":"Hi.Common.PathUtils.NamedPath","type":"Class"},{"name":"PathUtil","href":"Hi.Common.PathUtils.PathUtil.html","topicHref":"Hi.Common.PathUtils.PathUtil.html","topicUid":"Hi.Common.PathUtils.PathUtil","type":"Class"}]},{"name":"Hi.Common.QueueCacheUtils","href":"Hi.Common.QueueCacheUtils.html","topicHref":"Hi.Common.QueueCacheUtils.html","topicUid":"Hi.Common.QueueCacheUtils","type":"Namespace","items":[{"name":"QueueCacherHost","href":"Hi.Common.QueueCacheUtils.QueueCacherHost-1.html","topicHref":"Hi.Common.QueueCacheUtils.QueueCacherHost-1.html","topicUid":"Hi.Common.QueueCacheUtils.QueueCacherHost`1","type":"Class"},{"name":"QueueCacher","href":"Hi.Common.QueueCacheUtils.QueueCacher-1.html","topicHref":"Hi.Common.QueueCacheUtils.QueueCacher-1.html","topicUid":"Hi.Common.QueueCacheUtils.QueueCacher`1","type":"Class"}]},{"name":"Hi.Common.XmlUtils","href":"Hi.Common.XmlUtils.html","topicHref":"Hi.Common.XmlUtils.html","topicUid":"Hi.Common.XmlUtils","type":"Namespace","items":[{"name":"FileRefSource","href":"Hi.Common.XmlUtils.FileRefSource-1.html","topicHref":"Hi.Common.XmlUtils.FileRefSource-1.html","topicUid":"Hi.Common.XmlUtils.FileRefSource`1","type":"Class"},{"name":"GenMode","href":"Hi.Common.XmlUtils.GenMode.html","topicHref":"Hi.Common.XmlUtils.GenMode.html","topicUid":"Hi.Common.XmlUtils.GenMode","type":"Enum"},{"name":"IMakeXmlSource","href":"Hi.Common.XmlUtils.IMakeXmlSource.html","topicHref":"Hi.Common.XmlUtils.IMakeXmlSource.html","topicUid":"Hi.Common.XmlUtils.IMakeXmlSource","type":"Interface"},{"name":"IToXElement","href":"Hi.Common.XmlUtils.IToXElement.html","topicHref":"Hi.Common.XmlUtils.IToXElement.html","topicUid":"Hi.Common.XmlUtils.IToXElement","type":"Interface"},{"name":"SetFileDelegate","href":"Hi.Common.XmlUtils.SetFileDelegate.html","topicHref":"Hi.Common.XmlUtils.SetFileDelegate.html","topicUid":"Hi.Common.XmlUtils.SetFileDelegate","type":"Delegate"},{"name":"XFactory","href":"Hi.Common.XmlUtils.XFactory.html","topicHref":"Hi.Common.XmlUtils.XFactory.html","topicUid":"Hi.Common.XmlUtils.XFactory","type":"Class"},{"name":"XFactory.GenByXElementDelegate","href":"Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html","topicHref":"Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html","topicUid":"Hi.Common.XmlUtils.XFactory.GenByXElementDelegate","type":"Delegate"},{"name":"XFactory.XmlExceptionDelegate","href":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html","topicHref":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html","topicUid":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate","type":"Delegate"},{"name":"XmlUtil","href":"Hi.Common.XmlUtils.XmlUtil.html","topicHref":"Hi.Common.XmlUtils.XmlUtil.html","topicUid":"Hi.Common.XmlUtils.XmlUtil","type":"Class"}]},{"name":"Hi.CutterLocations","href":"Hi.CutterLocations.html","topicHref":"Hi.CutterLocations.html","topicUid":"Hi.CutterLocations","type":"Namespace","items":[{"name":"IGetProgramCl","href":"Hi.CutterLocations.IGetProgramCl.html","topicHref":"Hi.CutterLocations.IGetProgramCl.html","topicUid":"Hi.CutterLocations.IGetProgramCl","type":"Interface"},{"name":"SimpleCl","href":"Hi.CutterLocations.SimpleCl.html","topicHref":"Hi.CutterLocations.SimpleCl.html","topicUid":"Hi.CutterLocations.SimpleCl","type":"Class"}]},{"name":"Hi.CutterLocations.ClPath","href":"Hi.CutterLocations.ClPath.html","topicHref":"Hi.CutterLocations.ClPath.html","topicUid":"Hi.CutterLocations.ClPath","type":"Namespace","items":[{"name":"ClCircleArc","href":"Hi.CutterLocations.ClPath.ClCircleArc.html","topicHref":"Hi.CutterLocations.ClPath.ClCircleArc.html","topicUid":"Hi.CutterLocations.ClPath.ClCircleArc","type":"Class"},{"name":"ClLinear","href":"Hi.CutterLocations.ClPath.ClLinear.html","topicHref":"Hi.CutterLocations.ClPath.ClLinear.html","topicUid":"Hi.CutterLocations.ClPath.ClLinear","type":"Class"},{"name":"IClPath","href":"Hi.CutterLocations.ClPath.IClPath.html","topicHref":"Hi.CutterLocations.ClPath.IClPath.html","topicUid":"Hi.CutterLocations.ClPath.IClPath","type":"Interface"}]},{"name":"Hi.CutterLocations.ClStrips","href":"Hi.CutterLocations.ClStrips.html","topicHref":"Hi.CutterLocations.ClStrips.html","topicUid":"Hi.CutterLocations.ClStrips","type":"Namespace","items":[{"name":"ClStrip","href":"Hi.CutterLocations.ClStrips.ClStrip.html","topicHref":"Hi.CutterLocations.ClStrips.ClStrip.html","topicUid":"Hi.CutterLocations.ClStrips.ClStrip","type":"Class"},{"name":"ClStripPos","href":"Hi.CutterLocations.ClStrips.ClStripPos.html","topicHref":"Hi.CutterLocations.ClStrips.ClStripPos.html","topicUid":"Hi.CutterLocations.ClStrips.ClStripPos","type":"Class"},{"name":"RgbFunc","href":"Hi.CutterLocations.ClStrips.RgbFunc.html","topicHref":"Hi.CutterLocations.ClStrips.RgbFunc.html","topicUid":"Hi.CutterLocations.ClStrips.RgbFunc","type":"Delegate"}]},{"name":"Hi.Disp","href":"Hi.Disp.html","topicHref":"Hi.Disp.html","topicUid":"Hi.Disp","type":"Namespace","items":[{"name":"Bind","href":"Hi.Disp.Bind.html","topicHref":"Hi.Disp.Bind.html","topicUid":"Hi.Disp.Bind","type":"Class"},{"name":"Box3dDispUtil","href":"Hi.Disp.Box3dDispUtil.html","topicHref":"Hi.Disp.Box3dDispUtil.html","topicUid":"Hi.Disp.Box3dDispUtil","type":"Class"},{"name":"Box3dDispUtil.BoxableExpandToBox3dDel","href":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel.html","topicHref":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel.html","topicUid":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel","type":"Delegate"},{"name":"DelegateFuncDisplayee","href":"Hi.Disp.DelegateFuncDisplayee.html","topicHref":"Hi.Disp.DelegateFuncDisplayee.html","topicUid":"Hi.Disp.DelegateFuncDisplayee","type":"Class"},{"name":"DispEngine","href":"Hi.Disp.DispEngine.html","topicHref":"Hi.Disp.DispEngine.html","topicUid":"Hi.Disp.DispEngine","type":"Class"},{"name":"DispEngine.ImageRequestedDelegate","href":"Hi.Disp.DispEngine.ImageRequestedDelegate.html","topicHref":"Hi.Disp.DispEngine.ImageRequestedDelegate.html","topicUid":"Hi.Disp.DispEngine.ImageRequestedDelegate","type":"Delegate"},{"name":"DispEngineConfig","href":"Hi.Disp.DispEngineConfig.html","topicHref":"Hi.Disp.DispEngineConfig.html","topicUid":"Hi.Disp.DispEngineConfig","type":"Class"},{"name":"DispFrameUtil","href":"Hi.Disp.DispFrameUtil.html","topicHref":"Hi.Disp.DispFrameUtil.html","topicUid":"Hi.Disp.DispFrameUtil","type":"Class"},{"name":"DispList","href":"Hi.Disp.DispList.html","topicHref":"Hi.Disp.DispList.html","topicUid":"Hi.Disp.DispList","type":"Class"},{"name":"DispUtil","href":"Hi.Disp.DispUtil.html","topicHref":"Hi.Disp.DispUtil.html","topicUid":"Hi.Disp.DispUtil","type":"Class"},{"name":"Drawing","href":"Hi.Disp.Drawing.html","topicHref":"Hi.Disp.Drawing.html","topicUid":"Hi.Disp.Drawing","type":"Class"},{"name":"FuncDisplayee","href":"Hi.Disp.FuncDisplayee.html","topicHref":"Hi.Disp.FuncDisplayee.html","topicUid":"Hi.Disp.FuncDisplayee","type":"Class"},{"name":"GL","href":"Hi.Disp.GL.html","topicHref":"Hi.Disp.GL.html","topicUid":"Hi.Disp.GL","type":"Class"},{"name":"IDisplayee","href":"Hi.Disp.IDisplayee.html","topicHref":"Hi.Disp.IDisplayee.html","topicUid":"Hi.Disp.IDisplayee","type":"Interface"},{"name":"IGetDispEngine","href":"Hi.Disp.IGetDispEngine.html","topicHref":"Hi.Disp.IGetDispEngine.html","topicUid":"Hi.Disp.IGetDispEngine","type":"Interface"},{"name":"IGetPickable","href":"Hi.Disp.IGetPickable.html","topicHref":"Hi.Disp.IGetPickable.html","topicUid":"Hi.Disp.IGetPickable","type":"Interface"},{"name":"IGlContextDirver","href":"Hi.Disp.IGlContextDirver.html","topicHref":"Hi.Disp.IGlContextDirver.html","topicUid":"Hi.Disp.IGlContextDirver","type":"Interface"},{"name":"MatStack","href":"Hi.Disp.MatStack.html","topicHref":"Hi.Disp.MatStack.html","topicUid":"Hi.Disp.MatStack","type":"Class"},{"name":"MatStack.ItemDisposable","href":"Hi.Disp.MatStack.ItemDisposable.html","topicHref":"Hi.Disp.MatStack.ItemDisposable.html","topicUid":"Hi.Disp.MatStack.ItemDisposable","type":"Class"},{"name":"MvpBoxRelation","href":"Hi.Disp.MvpBoxRelation.html","topicHref":"Hi.Disp.MvpBoxRelation.html","topicUid":"Hi.Disp.MvpBoxRelation","type":"Enum"},{"name":"Pickable","href":"Hi.Disp.Pickable.html","topicHref":"Hi.Disp.Pickable.html","topicUid":"Hi.Disp.Pickable","type":"Class"},{"name":"PopModelMat","href":"Hi.Disp.PopModelMat.html","topicHref":"Hi.Disp.PopModelMat.html","topicUid":"Hi.Disp.PopModelMat","type":"Class"},{"name":"PushModelMat","href":"Hi.Disp.PushModelMat.html","topicHref":"Hi.Disp.PushModelMat.html","topicUid":"Hi.Disp.PushModelMat","type":"Class"},{"name":"Segment3dDispUtil","href":"Hi.Disp.Segment3dDispUtil.html","topicHref":"Hi.Disp.Segment3dDispUtil.html","topicUid":"Hi.Disp.Segment3dDispUtil","type":"Class"},{"name":"ShowEventPickable","href":"Hi.Disp.ShowEventPickable.html","topicHref":"Hi.Disp.ShowEventPickable.html","topicUid":"Hi.Disp.ShowEventPickable","type":"Class"},{"name":"Stamp","href":"Hi.Disp.Stamp.html","topicHref":"Hi.Disp.Stamp.html","topicUid":"Hi.Disp.Stamp","type":"Enum"},{"name":"StringDrawing","href":"Hi.Disp.StringDrawing.html","topicHref":"Hi.Disp.StringDrawing.html","topicUid":"Hi.Disp.StringDrawing","type":"Class"},{"name":"Tri3dDispUtil","href":"Hi.Disp.Tri3dDispUtil.html","topicHref":"Hi.Disp.Tri3dDispUtil.html","topicUid":"Hi.Disp.Tri3dDispUtil","type":"Class"},{"name":"Vec3dDispUtil","href":"Hi.Disp.Vec3dDispUtil.html","topicHref":"Hi.Disp.Vec3dDispUtil.html","topicUid":"Hi.Disp.Vec3dDispUtil","type":"Class"},{"name":"WrappedDisplayee","href":"Hi.Disp.WrappedDisplayee.html","topicHref":"Hi.Disp.WrappedDisplayee.html","topicUid":"Hi.Disp.WrappedDisplayee","type":"Class"}]},{"name":"Hi.Disp.Flag","href":"Hi.Disp.Flag.html","topicHref":"Hi.Disp.Flag.html","topicUid":"Hi.Disp.Flag","type":"Namespace","items":[{"name":"ColorScaleBar","href":"Hi.Disp.Flag.ColorScaleBar.html","topicHref":"Hi.Disp.Flag.ColorScaleBar.html","topicUid":"Hi.Disp.Flag.ColorScaleBar","type":"Class"},{"name":"CoordinateDrawing","href":"Hi.Disp.Flag.CoordinateDrawing.html","topicHref":"Hi.Disp.Flag.CoordinateDrawing.html","topicUid":"Hi.Disp.Flag.CoordinateDrawing","type":"Class"},{"name":"CubicalFlagDrawing","href":"Hi.Disp.Flag.CubicalFlagDrawing.html","topicHref":"Hi.Disp.Flag.CubicalFlagDrawing.html","topicUid":"Hi.Disp.Flag.CubicalFlagDrawing","type":"Class"},{"name":"DimensionBar","href":"Hi.Disp.Flag.DimensionBar.html","topicHref":"Hi.Disp.Flag.DimensionBar.html","topicUid":"Hi.Disp.Flag.DimensionBar","type":"Class"},{"name":"DispCoverUtil","href":"Hi.Disp.Flag.DispCoverUtil.html","topicHref":"Hi.Disp.Flag.DispCoverUtil.html","topicUid":"Hi.Disp.Flag.DispCoverUtil","type":"Class"}]},{"name":"Hi.Disp.Treat","href":"Hi.Disp.Treat.html","topicHref":"Hi.Disp.Treat.html","topicUid":"Hi.Disp.Treat","type":"Namespace","items":[{"name":"LineWidthSwap","href":"Hi.Disp.Treat.LineWidthSwap.html","topicHref":"Hi.Disp.Treat.LineWidthSwap.html","topicUid":"Hi.Disp.Treat.LineWidthSwap","type":"Class"},{"name":"LineWidthTreat","href":"Hi.Disp.Treat.LineWidthTreat.html","topicHref":"Hi.Disp.Treat.LineWidthTreat.html","topicUid":"Hi.Disp.Treat.LineWidthTreat","type":"Class"},{"name":"PointSizeSwap","href":"Hi.Disp.Treat.PointSizeSwap.html","topicHref":"Hi.Disp.Treat.PointSizeSwap.html","topicUid":"Hi.Disp.Treat.PointSizeSwap","type":"Class"},{"name":"PointSizeTreat","href":"Hi.Disp.Treat.PointSizeTreat.html","topicHref":"Hi.Disp.Treat.PointSizeTreat.html","topicUid":"Hi.Disp.Treat.PointSizeTreat","type":"Class"},{"name":"RgbSwap","href":"Hi.Disp.Treat.RgbSwap.html","topicHref":"Hi.Disp.Treat.RgbSwap.html","topicUid":"Hi.Disp.Treat.RgbSwap","type":"Class"},{"name":"RgbTreat","href":"Hi.Disp.Treat.RgbTreat.html","topicHref":"Hi.Disp.Treat.RgbTreat.html","topicUid":"Hi.Disp.Treat.RgbTreat","type":"Class"},{"name":"RgbWrapper","href":"Hi.Disp.Treat.RgbWrapper.html","topicHref":"Hi.Disp.Treat.RgbWrapper.html","topicUid":"Hi.Disp.Treat.RgbWrapper","type":"Class"},{"name":"TransformationWrapper","href":"Hi.Disp.Treat.TransformationWrapper.html","topicHref":"Hi.Disp.Treat.TransformationWrapper.html","topicUid":"Hi.Disp.Treat.TransformationWrapper","type":"Class"}]},{"name":"Hi.Fanuc","href":"Hi.Fanuc.html","topicHref":"Hi.Fanuc.html","topicUid":"Hi.Fanuc","type":"Namespace","items":[{"name":"FanucVarTable","href":"Hi.Fanuc.FanucVarTable.html","topicHref":"Hi.Fanuc.FanucVarTable.html","topicUid":"Hi.Fanuc.FanucVarTable","type":"Class"},{"name":"FanucVarValue","href":"Hi.Fanuc.FanucVarValue.html","topicHref":"Hi.Fanuc.FanucVarValue.html","topicUid":"Hi.Fanuc.FanucVarValue","type":"Struct"}]},{"name":"Hi.Geom","href":"Hi.Geom.html","topicHref":"Hi.Geom.html","topicUid":"Hi.Geom","type":"Namespace","items":[{"name":"ArrayUtil","href":"Hi.Geom.ArrayUtil.html","topicHref":"Hi.Geom.ArrayUtil.html","topicUid":"Hi.Geom.ArrayUtil","type":"Class"},{"name":"AxisAngle4d","href":"Hi.Geom.AxisAngle4d.html","topicHref":"Hi.Geom.AxisAngle4d.html","topicUid":"Hi.Geom.AxisAngle4d","type":"Class"},{"name":"Box2d","href":"Hi.Geom.Box2d.html","topicHref":"Hi.Geom.Box2d.html","topicUid":"Hi.Geom.Box2d","type":"Class"},{"name":"Box2d.NoInit","href":"Hi.Geom.Box2d.NoInit.html","topicHref":"Hi.Geom.Box2d.NoInit.html","topicUid":"Hi.Geom.Box2d.NoInit","type":"Class"},{"name":"Box3d","href":"Hi.Geom.Box3d.html","topicHref":"Hi.Geom.Box3d.html","topicUid":"Hi.Geom.Box3d","type":"Class"},{"name":"Box3d.NoInit","href":"Hi.Geom.Box3d.NoInit.html","topicHref":"Hi.Geom.Box3d.NoInit.html","topicUid":"Hi.Geom.Box3d.NoInit","type":"Class"},{"name":"Cylindroid","href":"Hi.Geom.Cylindroid.html","topicHref":"Hi.Geom.Cylindroid.html","topicUid":"Hi.Geom.Cylindroid","type":"Class"},{"name":"DVec3d","href":"Hi.Geom.DVec3d.html","topicHref":"Hi.Geom.DVec3d.html","topicUid":"Hi.Geom.DVec3d","type":"Class"},{"name":"Dir","href":"Hi.Geom.Dir.html","topicHref":"Hi.Geom.Dir.html","topicUid":"Hi.Geom.Dir","type":"Enum"},{"name":"ExtendedCylinder","href":"Hi.Geom.ExtendedCylinder.html","topicHref":"Hi.Geom.ExtendedCylinder.html","topicUid":"Hi.Geom.ExtendedCylinder","type":"Class"},{"name":"Flat3d","href":"Hi.Geom.Flat3d.html","topicHref":"Hi.Geom.Flat3d.html","topicUid":"Hi.Geom.Flat3d","type":"Class"},{"name":"FractionStatus","href":"Hi.Geom.FractionStatus.html","topicHref":"Hi.Geom.FractionStatus.html","topicUid":"Hi.Geom.FractionStatus","type":"Enum"},{"name":"Fraction","href":"Hi.Geom.Fraction-1.html","topicHref":"Hi.Geom.Fraction-1.html","topicUid":"Hi.Geom.Fraction`1","type":"Struct"},{"name":"GeomCombination","href":"Hi.Geom.GeomCombination.html","topicHref":"Hi.Geom.GeomCombination.html","topicUid":"Hi.Geom.GeomCombination","type":"Class"},{"name":"GeomUtil","href":"Hi.Geom.GeomUtil.html","topicHref":"Hi.Geom.GeomUtil.html","topicUid":"Hi.Geom.GeomUtil","type":"Class"},{"name":"IExpandToBox2d","href":"Hi.Geom.IExpandToBox2d.html","topicHref":"Hi.Geom.IExpandToBox2d.html","topicUid":"Hi.Geom.IExpandToBox2d","type":"Interface"},{"name":"IExpandToBox3d","href":"Hi.Geom.IExpandToBox3d.html","topicHref":"Hi.Geom.IExpandToBox3d.html","topicUid":"Hi.Geom.IExpandToBox3d","type":"Interface"},{"name":"IFlat3d","href":"Hi.Geom.IFlat3d.html","topicHref":"Hi.Geom.IFlat3d.html","topicUid":"Hi.Geom.IFlat3d","type":"Interface"},{"name":"IGenStl","href":"Hi.Geom.IGenStl.html","topicHref":"Hi.Geom.IGenStl.html","topicUid":"Hi.Geom.IGenStl","type":"Interface"},{"name":"IGeomProperty","href":"Hi.Geom.IGeomProperty.html","topicHref":"Hi.Geom.IGeomProperty.html","topicUid":"Hi.Geom.IGeomProperty","type":"Interface"},{"name":"IGetStl","href":"Hi.Geom.IGetStl.html","topicHref":"Hi.Geom.IGetStl.html","topicUid":"Hi.Geom.IGetStl","type":"Interface"},{"name":"IGetZrContour","href":"Hi.Geom.IGetZrContour.html","topicHref":"Hi.Geom.IGetZrContour.html","topicUid":"Hi.Geom.IGetZrContour","type":"Interface"},{"name":"IGetZrList","href":"Hi.Geom.IGetZrList.html","topicHref":"Hi.Geom.IGetZrList.html","topicUid":"Hi.Geom.IGetZrList","type":"Interface"},{"name":"IStlSource","href":"Hi.Geom.IStlSource.html","topicHref":"Hi.Geom.IStlSource.html","topicUid":"Hi.Geom.IStlSource","type":"Interface"},{"name":"ITri3d","href":"Hi.Geom.ITri3d.html","topicHref":"Hi.Geom.ITri3d.html","topicUid":"Hi.Geom.ITri3d","type":"Interface"},{"name":"IVec","href":"Hi.Geom.IVec-1.html","topicHref":"Hi.Geom.IVec-1.html","topicUid":"Hi.Geom.IVec`1","type":"Interface"},{"name":"IZrListSourceProperty","href":"Hi.Geom.IZrListSourceProperty.html","topicHref":"Hi.Geom.IZrListSourceProperty.html","topicUid":"Hi.Geom.IZrListSourceProperty","type":"Interface"},{"name":"Mat4d","href":"Hi.Geom.Mat4d.html","topicHref":"Hi.Geom.Mat4d.html","topicUid":"Hi.Geom.Mat4d","type":"Class"},{"name":"Mat4d.IndexFlag","href":"Hi.Geom.Mat4d.IndexFlag.html","topicHref":"Hi.Geom.Mat4d.IndexFlag.html","topicUid":"Hi.Geom.Mat4d.IndexFlag","type":"Enum"},{"name":"MathNetUtil","href":"Hi.Geom.MathNetUtil.html","topicHref":"Hi.Geom.MathNetUtil.html","topicUid":"Hi.Geom.MathNetUtil","type":"Class"},{"name":"MathUtil","href":"Hi.Geom.MathUtil.html","topicHref":"Hi.Geom.MathUtil.html","topicUid":"Hi.Geom.MathUtil","type":"Class"},{"name":"NativeFraction","href":"Hi.Geom.NativeFraction.html","topicHref":"Hi.Geom.NativeFraction.html","topicUid":"Hi.Geom.NativeFraction","type":"Class"},{"name":"NativeStl","href":"Hi.Geom.NativeStl.html","topicHref":"Hi.Geom.NativeStl.html","topicUid":"Hi.Geom.NativeStl","type":"Class"},{"name":"NativeTopoStld","href":"Hi.Geom.NativeTopoStld.html","topicHref":"Hi.Geom.NativeTopoStld.html","topicUid":"Hi.Geom.NativeTopoStld","type":"Class"},{"name":"NativeTopoStlfr","href":"Hi.Geom.NativeTopoStlfr.html","topicHref":"Hi.Geom.NativeTopoStlfr.html","topicUid":"Hi.Geom.NativeTopoStlfr","type":"Class"},{"name":"PairZr","href":"Hi.Geom.PairZr.html","topicHref":"Hi.Geom.PairZr.html","topicUid":"Hi.Geom.PairZr","type":"Class"},{"name":"PairZrUtil","href":"Hi.Geom.PairZrUtil.html","topicHref":"Hi.Geom.PairZrUtil.html","topicUid":"Hi.Geom.PairZrUtil","type":"Class"},{"name":"Polar3d","href":"Hi.Geom.Polar3d.html","topicHref":"Hi.Geom.Polar3d.html","topicUid":"Hi.Geom.Polar3d","type":"Class"},{"name":"Segment3d","href":"Hi.Geom.Segment3d.html","topicHref":"Hi.Geom.Segment3d.html","topicUid":"Hi.Geom.Segment3d","type":"Class"},{"name":"Stl","href":"Hi.Geom.Stl.html","topicHref":"Hi.Geom.Stl.html","topicUid":"Hi.Geom.Stl","type":"Class"},{"name":"Stl.StlType","href":"Hi.Geom.Stl.StlType.html","topicHref":"Hi.Geom.Stl.StlType.html","topicUid":"Hi.Geom.Stl.StlType","type":"Enum"},{"name":"StlFile","href":"Hi.Geom.StlFile.html","topicHref":"Hi.Geom.StlFile.html","topicUid":"Hi.Geom.StlFile","type":"Class"},{"name":"StlFuncHost","href":"Hi.Geom.StlFuncHost.html","topicHref":"Hi.Geom.StlFuncHost.html","topicUid":"Hi.Geom.StlFuncHost","type":"Class"},{"name":"StlUtil","href":"Hi.Geom.StlUtil.html","topicHref":"Hi.Geom.StlUtil.html","topicUid":"Hi.Geom.StlUtil","type":"Class"},{"name":"TransformationGeom","href":"Hi.Geom.TransformationGeom.html","topicHref":"Hi.Geom.TransformationGeom.html","topicUid":"Hi.Geom.TransformationGeom","type":"Class"},{"name":"Tri3d","href":"Hi.Geom.Tri3d.html","topicHref":"Hi.Geom.Tri3d.html","topicUid":"Hi.Geom.Tri3d","type":"Class"},{"name":"Tri3dUtil","href":"Hi.Geom.Tri3dUtil.html","topicHref":"Hi.Geom.Tri3dUtil.html","topicUid":"Hi.Geom.Tri3dUtil","type":"Class"},{"name":"Vec2d","href":"Hi.Geom.Vec2d.html","topicHref":"Hi.Geom.Vec2d.html","topicUid":"Hi.Geom.Vec2d","type":"Class"},{"name":"Vec2i","href":"Hi.Geom.Vec2i.html","topicHref":"Hi.Geom.Vec2i.html","topicUid":"Hi.Geom.Vec2i","type":"Class"},{"name":"Vec3d","href":"Hi.Geom.Vec3d.html","topicHref":"Hi.Geom.Vec3d.html","topicUid":"Hi.Geom.Vec3d","type":"Class"}]},{"name":"Hi.Geom.Resolution","href":"Hi.Geom.Resolution.html","topicHref":"Hi.Geom.Resolution.html","topicUid":"Hi.Geom.Resolution","type":"Namespace","items":[{"name":"IPolarResolution2d","href":"Hi.Geom.Resolution.IPolarResolution2d.html","topicHref":"Hi.Geom.Resolution.IPolarResolution2d.html","topicUid":"Hi.Geom.Resolution.IPolarResolution2d","type":"Interface"},{"name":"IPolarResolution2dSourceProperty","href":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html","topicHref":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html","topicUid":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty","type":"Interface"},{"name":"PolarResolution2d","href":"Hi.Geom.Resolution.PolarResolution2d.html","topicHref":"Hi.Geom.Resolution.PolarResolution2d.html","topicUid":"Hi.Geom.Resolution.PolarResolution2d","type":"Class"}]},{"name":"Hi.Geom.Solvers","href":"Hi.Geom.Solvers.html","topicHref":"Hi.Geom.Solvers.html","topicUid":"Hi.Geom.Solvers","type":"Namespace","items":[{"name":"BinarySolverUtil","href":"Hi.Geom.Solvers.BinarySolverUtil.html","topicHref":"Hi.Geom.Solvers.BinarySolverUtil.html","topicUid":"Hi.Geom.Solvers.BinarySolverUtil","type":"Class"},{"name":"BinarySolvingEntry","href":"Hi.Geom.Solvers.BinarySolvingEntry.html","topicHref":"Hi.Geom.Solvers.BinarySolvingEntry.html","topicUid":"Hi.Geom.Solvers.BinarySolvingEntry","type":"Class"},{"name":"DeepSolvingStatus","href":"Hi.Geom.Solvers.DeepSolvingStatus.html","topicHref":"Hi.Geom.Solvers.DeepSolvingStatus.html","topicUid":"Hi.Geom.Solvers.DeepSolvingStatus","type":"Class"},{"name":"NumericalSolver","href":"Hi.Geom.Solvers.NumericalSolver.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.html","topicUid":"Hi.Geom.Solvers.NumericalSolver","type":"Class"},{"name":"NumericalSolver.GetRepondsDelegate","href":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate.html","topicUid":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate","type":"Delegate"},{"name":"NumericalSolver.SetParasDelegate","href":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate.html","topicUid":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate","type":"Delegate"},{"name":"SolverUtil","href":"Hi.Geom.Solvers.SolverUtil.html","topicHref":"Hi.Geom.Solvers.SolverUtil.html","topicUid":"Hi.Geom.Solvers.SolverUtil","type":"Class"},{"name":"SolvingResult","href":"Hi.Geom.Solvers.SolvingResult.html","topicHref":"Hi.Geom.Solvers.SolvingResult.html","topicUid":"Hi.Geom.Solvers.SolvingResult","type":"Class"},{"name":"SolvingStatus","href":"Hi.Geom.Solvers.SolvingStatus.html","topicHref":"Hi.Geom.Solvers.SolvingStatus.html","topicUid":"Hi.Geom.Solvers.SolvingStatus","type":"Enum"},{"name":"SolvingTerm","href":"Hi.Geom.Solvers.SolvingTerm.html","topicHref":"Hi.Geom.Solvers.SolvingTerm.html","topicUid":"Hi.Geom.Solvers.SolvingTerm","type":"Enum"}]},{"name":"Hi.Geom.Topo","href":"Hi.Geom.Topo.html","topicHref":"Hi.Geom.Topo.html","topicUid":"Hi.Geom.Topo","type":"Namespace","items":[{"name":"TopoLine3Hfr","href":"Hi.Geom.Topo.TopoLine3Hfr.html","topicHref":"Hi.Geom.Topo.TopoLine3Hfr.html","topicUid":"Hi.Geom.Topo.TopoLine3Hfr","type":"Class"},{"name":"TopoLine3StockHfr","href":"Hi.Geom.Topo.TopoLine3StockHfr.html","topicHref":"Hi.Geom.Topo.TopoLine3StockHfr.html","topicUid":"Hi.Geom.Topo.TopoLine3StockHfr","type":"Class"},{"name":"TopoPoint3Hfr","href":"Hi.Geom.Topo.TopoPoint3Hfr.html","topicHref":"Hi.Geom.Topo.TopoPoint3Hfr.html","topicUid":"Hi.Geom.Topo.TopoPoint3Hfr","type":"Class"},{"name":"TopoPoint3StockHfr","href":"Hi.Geom.Topo.TopoPoint3StockHfr.html","topicHref":"Hi.Geom.Topo.TopoPoint3StockHfr.html","topicUid":"Hi.Geom.Topo.TopoPoint3StockHfr","type":"Class"},{"name":"TopoStl3Hfr","href":"Hi.Geom.Topo.TopoStl3Hfr.html","topicHref":"Hi.Geom.Topo.TopoStl3Hfr.html","topicUid":"Hi.Geom.Topo.TopoStl3Hfr","type":"Class"},{"name":"TopoStl3HfrFlatDisplayee","href":"Hi.Geom.Topo.TopoStl3HfrFlatDisplayee.html","topicHref":"Hi.Geom.Topo.TopoStl3HfrFlatDisplayee.html","topicUid":"Hi.Geom.Topo.TopoStl3HfrFlatDisplayee","type":"Class"},{"name":"TopoStl3HfrSmoothDisplayee","href":"Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee.html","topicHref":"Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee.html","topicUid":"Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee","type":"Class"},{"name":"TopoTri3Hfr","href":"Hi.Geom.Topo.TopoTri3Hfr.html","topicHref":"Hi.Geom.Topo.TopoTri3Hfr.html","topicUid":"Hi.Geom.Topo.TopoTri3Hfr","type":"Class"},{"name":"TopoTri3StockHfr","href":"Hi.Geom.Topo.TopoTri3StockHfr.html","topicHref":"Hi.Geom.Topo.TopoTri3StockHfr.html","topicUid":"Hi.Geom.Topo.TopoTri3StockHfr","type":"Class"},{"name":"Vec3Hfr","href":"Hi.Geom.Topo.Vec3Hfr.html","topicHref":"Hi.Geom.Topo.Vec3Hfr.html","topicUid":"Hi.Geom.Topo.Vec3Hfr","type":"Struct"}]},{"name":"Hi.Geom.UnitUtils","href":"Hi.Geom.UnitUtils.html","topicHref":"Hi.Geom.UnitUtils.html","topicUid":"Hi.Geom.UnitUtils","type":"Namespace","items":[{"name":"PhysicsUnit","href":"Hi.Geom.UnitUtils.PhysicsUnit.html","topicHref":"Hi.Geom.UnitUtils.PhysicsUnit.html","topicUid":"Hi.Geom.UnitUtils.PhysicsUnit","type":"Enum"},{"name":"StringValueAttribute","href":"Hi.Geom.UnitUtils.StringValueAttribute.html","topicHref":"Hi.Geom.UnitUtils.StringValueAttribute.html","topicUid":"Hi.Geom.UnitUtils.StringValueAttribute","type":"Class"},{"name":"UnitConvertUtil","href":"Hi.Geom.UnitUtils.UnitConvertUtil.html","topicHref":"Hi.Geom.UnitUtils.UnitConvertUtil.html","topicUid":"Hi.Geom.UnitUtils.UnitConvertUtil","type":"Class"}]},{"name":"Hi.Grpcs","href":"Hi.Grpcs.html","topicHref":"Hi.Grpcs.html","topicUid":"Hi.Grpcs","type":"Namespace","items":[{"name":"ClStripService","href":"Hi.Grpcs.ClStripService.html","topicHref":"Hi.Grpcs.ClStripService.html","topicUid":"Hi.Grpcs.ClStripService","type":"Class"},{"name":"ClStripService.ClStripServiceBase","href":"Hi.Grpcs.ClStripService.ClStripServiceBase.html","topicHref":"Hi.Grpcs.ClStripService.ClStripServiceBase.html","topicUid":"Hi.Grpcs.ClStripService.ClStripServiceBase","type":"Class"},{"name":"ClStripService.ClStripServiceClient","href":"Hi.Grpcs.ClStripService.ClStripServiceClient.html","topicHref":"Hi.Grpcs.ClStripService.ClStripServiceClient.html","topicUid":"Hi.Grpcs.ClStripService.ClStripServiceClient","type":"Class"},{"name":"ClStripServiceReflection","href":"Hi.Grpcs.ClStripServiceReflection.html","topicHref":"Hi.Grpcs.ClStripServiceReflection.html","topicUid":"Hi.Grpcs.ClStripServiceReflection","type":"Class"},{"name":"ClStripServiceRunner","href":"Hi.Grpcs.ClStripServiceRunner.html","topicHref":"Hi.Grpcs.ClStripServiceRunner.html","topicUid":"Hi.Grpcs.ClStripServiceRunner","type":"Class"},{"name":"DictionaryStep","href":"Hi.Grpcs.DictionaryStep.html","topicHref":"Hi.Grpcs.DictionaryStep.html","topicUid":"Hi.Grpcs.DictionaryStep","type":"Class"},{"name":"PlayerService","href":"Hi.Grpcs.PlayerService.html","topicHref":"Hi.Grpcs.PlayerService.html","topicUid":"Hi.Grpcs.PlayerService","type":"Class"},{"name":"PlayerService.PlayerServiceBase","href":"Hi.Grpcs.PlayerService.PlayerServiceBase.html","topicHref":"Hi.Grpcs.PlayerService.PlayerServiceBase.html","topicUid":"Hi.Grpcs.PlayerService.PlayerServiceBase","type":"Class"},{"name":"PlayerService.PlayerServiceClient","href":"Hi.Grpcs.PlayerService.PlayerServiceClient.html","topicHref":"Hi.Grpcs.PlayerService.PlayerServiceClient.html","topicUid":"Hi.Grpcs.PlayerService.PlayerServiceClient","type":"Class"},{"name":"PlayerServiceReflection","href":"Hi.Grpcs.PlayerServiceReflection.html","topicHref":"Hi.Grpcs.PlayerServiceReflection.html","topicUid":"Hi.Grpcs.PlayerServiceReflection","type":"Class"},{"name":"PlayerServiceRunner","href":"Hi.Grpcs.PlayerServiceRunner.html","topicHref":"Hi.Grpcs.PlayerServiceRunner.html","topicUid":"Hi.Grpcs.PlayerServiceRunner","type":"Class"}]},{"name":"Hi.HiNcKits","href":"Hi.HiNcKits.html","topicHref":"Hi.HiNcKits.html","topicUid":"Hi.HiNcKits","type":"Namespace","items":[{"name":"BasePathEnum","href":"Hi.HiNcKits.BasePathEnum.html","topicHref":"Hi.HiNcKits.BasePathEnum.html","topicUid":"Hi.HiNcKits.BasePathEnum","type":"Enum"},{"name":"HiNcHost","href":"Hi.HiNcKits.HiNcHost.html","topicHref":"Hi.HiNcKits.HiNcHost.html","topicUid":"Hi.HiNcKits.HiNcHost","type":"Class"},{"name":"LocalApp","href":"Hi.HiNcKits.LocalApp.html","topicHref":"Hi.HiNcKits.LocalApp.html","topicUid":"Hi.HiNcKits.LocalApp","type":"Class"},{"name":"LocalAppConfig","href":"Hi.HiNcKits.LocalAppConfig.html","topicHref":"Hi.HiNcKits.LocalAppConfig.html","topicUid":"Hi.HiNcKits.LocalAppConfig","type":"Class"},{"name":"ProxyConfig","href":"Hi.HiNcKits.ProxyConfig.html","topicHref":"Hi.HiNcKits.ProxyConfig.html","topicUid":"Hi.HiNcKits.ProxyConfig","type":"Class"},{"name":"UserConfig","href":"Hi.HiNcKits.UserConfig.html","topicHref":"Hi.HiNcKits.UserConfig.html","topicUid":"Hi.HiNcKits.UserConfig","type":"Class"},{"name":"UserService","href":"Hi.HiNcKits.UserService.html","topicHref":"Hi.HiNcKits.UserService.html","topicUid":"Hi.HiNcKits.UserService","type":"Class"}]},{"name":"Hi.Licenses","href":"Hi.Licenses.html","topicHref":"Hi.Licenses.html","topicUid":"Hi.Licenses","type":"Namespace","items":[{"name":"AuthFeature","href":"Hi.Licenses.AuthFeature.html","topicHref":"Hi.Licenses.AuthFeature.html","topicUid":"Hi.Licenses.AuthFeature","type":"Enum"},{"name":"AuthorizationFailedEventArgs","href":"Hi.Licenses.AuthorizationFailedEventArgs.html","topicHref":"Hi.Licenses.AuthorizationFailedEventArgs.html","topicUid":"Hi.Licenses.AuthorizationFailedEventArgs","type":"Class"},{"name":"BlockType","href":"Hi.Licenses.BlockType.html","topicHref":"Hi.Licenses.BlockType.html","topicUid":"Hi.Licenses.BlockType","type":"Enum"},{"name":"License","href":"Hi.Licenses.License.html","topicHref":"Hi.Licenses.License.html","topicUid":"Hi.Licenses.License","type":"Class"},{"name":"LicenseType","href":"Hi.Licenses.LicenseType.html","topicHref":"Hi.Licenses.LicenseType.html","topicUid":"Hi.Licenses.LicenseType","type":"Enum"}]},{"name":"Hi.Machining","href":"Hi.Machining.html","topicHref":"Hi.Machining.html","topicUid":"Hi.Machining","type":"Namespace","items":[{"name":"FreeformRemover","href":"Hi.Machining.FreeformRemover.html","topicHref":"Hi.Machining.FreeformRemover.html","topicUid":"Hi.Machining.FreeformRemover","type":"Class"},{"name":"ICutter","href":"Hi.Machining.ICutter.html","topicHref":"Hi.Machining.ICutter.html","topicUid":"Hi.Machining.ICutter","type":"Interface"},{"name":"ICutterAnchorable","href":"Hi.Machining.ICutterAnchorable.html","topicHref":"Hi.Machining.ICutterAnchorable.html","topicUid":"Hi.Machining.ICutterAnchorable","type":"Interface"},{"name":"IGetSweptable","href":"Hi.Machining.IGetSweptable.html","topicHref":"Hi.Machining.IGetSweptable.html","topicUid":"Hi.Machining.IGetSweptable","type":"Interface"},{"name":"IMachiningTool","href":"Hi.Machining.IMachiningTool.html","topicHref":"Hi.Machining.IMachiningTool.html","topicUid":"Hi.Machining.IMachiningTool","type":"Interface"},{"name":"IVolumeRemover","href":"Hi.Machining.IVolumeRemover.html","topicHref":"Hi.Machining.IVolumeRemover.html","topicUid":"Hi.Machining.IVolumeRemover","type":"Interface"},{"name":"MachiningToolHouse","href":"Hi.Machining.MachiningToolHouse.html","topicHref":"Hi.Machining.MachiningToolHouse.html","topicUid":"Hi.Machining.MachiningToolHouse","type":"Class"},{"name":"MachiningVolumeRemovalProc","href":"Hi.Machining.MachiningVolumeRemovalProc.html","topicHref":"Hi.Machining.MachiningVolumeRemovalProc.html","topicUid":"Hi.Machining.MachiningVolumeRemovalProc","type":"Class"},{"name":"MachiningVolumeRemovalProc.StepMotionSnapshot","href":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html","topicHref":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html","topicUid":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot","type":"Class"},{"name":"MatInterpolationKit","href":"Hi.Machining.MatInterpolationKit.html","topicHref":"Hi.Machining.MatInterpolationKit.html","topicUid":"Hi.Machining.MatInterpolationKit","type":"Class"},{"name":"MatRelation","href":"Hi.Machining.MatRelation.html","topicHref":"Hi.Machining.MatRelation.html","topicUid":"Hi.Machining.MatRelation","type":"Enum"},{"name":"MatRelationUtil","href":"Hi.Machining.MatRelationUtil.html","topicHref":"Hi.Machining.MatRelationUtil.html","topicUid":"Hi.Machining.MatRelationUtil","type":"Class"},{"name":"Sweptable","href":"Hi.Machining.Sweptable.html","topicHref":"Hi.Machining.Sweptable.html","topicUid":"Hi.Machining.Sweptable","type":"Class"},{"name":"SweptableUtil","href":"Hi.Machining.SweptableUtil.html","topicHref":"Hi.Machining.SweptableUtil.html","topicUid":"Hi.Machining.SweptableUtil","type":"Class"},{"name":"ToolNotFoundException","href":"Hi.Machining.ToolNotFoundException.html","topicHref":"Hi.Machining.ToolNotFoundException.html","topicUid":"Hi.Machining.ToolNotFoundException","type":"Class"}]},{"name":"Hi.Machining.MachiningEquipmentUtils","href":"Hi.Machining.MachiningEquipmentUtils.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.html","topicUid":"Hi.Machining.MachiningEquipmentUtils","type":"Namespace","items":[{"name":"CollidableComponentEnum","href":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum","type":"Enum"},{"name":"IGetMachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment","type":"Interface"},{"name":"IMachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment","type":"Interface"},{"name":"MachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment","type":"Class"},{"name":"MachiningEquipmentCollisionIndex","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex","type":"Class"},{"name":"MachiningEquipmentCollisionIndexPairsSource","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource","type":"Class"},{"name":"MachiningEquipmentUtil","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil","type":"Class"}]},{"name":"Hi.MachiningProcs","href":"Hi.MachiningProcs.html","topicHref":"Hi.MachiningProcs.html","topicUid":"Hi.MachiningProcs","type":"Namespace","items":[{"name":"ConfigStepFunc","href":"Hi.MachiningProcs.ConfigStepFunc.html","topicHref":"Hi.MachiningProcs.ConfigStepFunc.html","topicUid":"Hi.MachiningProcs.ConfigStepFunc","type":"Delegate"},{"name":"IMachiningProjectGetter","href":"Hi.MachiningProcs.IMachiningProjectGetter.html","topicHref":"Hi.MachiningProcs.IMachiningProjectGetter.html","topicUid":"Hi.MachiningProcs.IMachiningProjectGetter","type":"Interface"},{"name":"IProjectService","href":"Hi.MachiningProcs.IProjectService.html","topicHref":"Hi.MachiningProcs.IProjectService.html","topicUid":"Hi.MachiningProcs.IProjectService","type":"Interface"},{"name":"LocalProjectService","href":"Hi.MachiningProcs.LocalProjectService.html","topicHref":"Hi.MachiningProcs.LocalProjectService.html","topicUid":"Hi.MachiningProcs.LocalProjectService","type":"Class"},{"name":"LocalProjectService.MachiningProjectChangedDelegate","href":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate.html","topicHref":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate.html","topicUid":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate","type":"Delegate"},{"name":"MachiningActRunner","href":"Hi.MachiningProcs.MachiningActRunner.html","topicHref":"Hi.MachiningProcs.MachiningActRunner.html","topicUid":"Hi.MachiningProcs.MachiningActRunner","type":"Class"},{"name":"MachiningActRunner.MachiningStepBuiltDelegate","href":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html","topicHref":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html","topicUid":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate","type":"Delegate"},{"name":"MachiningActRunnerConfig","href":"Hi.MachiningProcs.MachiningActRunnerConfig.html","topicHref":"Hi.MachiningProcs.MachiningActRunnerConfig.html","topicUid":"Hi.MachiningProcs.MachiningActRunnerConfig","type":"Class"},{"name":"MachiningParallelProc","href":"Hi.MachiningProcs.MachiningParallelProc.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc","type":"Class"},{"name":"MachiningParallelProc.StepTaskBundle","href":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle","type":"Class"},{"name":"MachiningParallelProc.SubstractionResult","href":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult","type":"Class"},{"name":"MachiningProject","href":"Hi.MachiningProcs.MachiningProject.html","topicHref":"Hi.MachiningProcs.MachiningProject.html","topicUid":"Hi.MachiningProcs.MachiningProject","type":"Class"},{"name":"MachiningProjectDisplayee","href":"Hi.MachiningProcs.MachiningProjectDisplayee.html","topicHref":"Hi.MachiningProcs.MachiningProjectDisplayee.html","topicUid":"Hi.MachiningProcs.MachiningProjectDisplayee","type":"Class"},{"name":"MachiningSession","href":"Hi.MachiningProcs.MachiningSession.html","topicHref":"Hi.MachiningProcs.MachiningSession.html","topicUid":"Hi.MachiningProcs.MachiningSession","type":"Class"},{"name":"MillingUtil","href":"Hi.MachiningProcs.MillingUtil.html","topicHref":"Hi.MachiningProcs.MillingUtil.html","topicUid":"Hi.MachiningProcs.MillingUtil","type":"Class"},{"name":"ProxyProjectService","href":"Hi.MachiningProcs.ProxyProjectService.html","topicHref":"Hi.MachiningProcs.ProxyProjectService.html","topicUid":"Hi.MachiningProcs.ProxyProjectService","type":"Class"},{"name":"RenderingFlag","href":"Hi.MachiningProcs.RenderingFlag.html","topicHref":"Hi.MachiningProcs.RenderingFlag.html","topicUid":"Hi.MachiningProcs.RenderingFlag","type":"Enum"},{"name":"RuntimeApi","href":"Hi.MachiningProcs.RuntimeApi.html","topicHref":"Hi.MachiningProcs.RuntimeApi.html","topicUid":"Hi.MachiningProcs.RuntimeApi","type":"Class"},{"name":"RuntimeController","href":"Hi.MachiningProcs.RuntimeController.html","topicHref":"Hi.MachiningProcs.RuntimeController.html","topicUid":"Hi.MachiningProcs.RuntimeController","type":"Class"},{"name":"SessionMessage","href":"Hi.MachiningProcs.SessionMessage.html","topicHref":"Hi.MachiningProcs.SessionMessage.html","topicUid":"Hi.MachiningProcs.SessionMessage","type":"Class"},{"name":"SessionMessagePack","href":"Hi.MachiningProcs.SessionMessagePack.html","topicHref":"Hi.MachiningProcs.SessionMessagePack.html","topicUid":"Hi.MachiningProcs.SessionMessagePack","type":"Class"},{"name":"SessionProgress","href":"Hi.MachiningProcs.SessionProgress.html","topicHref":"Hi.MachiningProcs.SessionProgress.html","topicUid":"Hi.MachiningProcs.SessionProgress","type":"Class"},{"name":"SessionProgress.FilterFlag","href":"Hi.MachiningProcs.SessionProgress.FilterFlag.html","topicHref":"Hi.MachiningProcs.SessionProgress.FilterFlag.html","topicUid":"Hi.MachiningProcs.SessionProgress.FilterFlag","type":"Enum"},{"name":"SetupController","href":"Hi.MachiningProcs.SetupController.html","topicHref":"Hi.MachiningProcs.SetupController.html","topicUid":"Hi.MachiningProcs.SetupController","type":"Class"},{"name":"SpindleSpeedCache","href":"Hi.MachiningProcs.SpindleSpeedCache.html","topicHref":"Hi.MachiningProcs.SpindleSpeedCache.html","topicUid":"Hi.MachiningProcs.SpindleSpeedCache","type":"Class"}]},{"name":"Hi.MachiningSteps","href":"Hi.MachiningSteps.html","topicHref":"Hi.MachiningSteps.html","topicUid":"Hi.MachiningSteps","type":"Namespace","items":[{"name":"IFlagText","href":"Hi.MachiningSteps.IFlagText.html","topicHref":"Hi.MachiningSteps.IFlagText.html","topicUid":"Hi.MachiningSteps.IFlagText","type":"Interface"},{"name":"IMachiningStepHost","href":"Hi.MachiningSteps.IMachiningStepHost.html","topicHref":"Hi.MachiningSteps.IMachiningStepHost.html","topicUid":"Hi.MachiningSteps.IMachiningStepHost","type":"Interface"},{"name":"MachineMotionStep","href":"Hi.MachiningSteps.MachineMotionStep.html","topicHref":"Hi.MachiningSteps.MachineMotionStep.html","topicUid":"Hi.MachiningSteps.MachineMotionStep","type":"Class"},{"name":"MachiningStep","href":"Hi.MachiningSteps.MachiningStep.html","topicHref":"Hi.MachiningSteps.MachiningStep.html","topicUid":"Hi.MachiningSteps.MachiningStep","type":"Class"},{"name":"MachiningStep.CollidedKeyPair","href":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair.html","topicHref":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair.html","topicUid":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair","type":"Class"},{"name":"MachiningStepUtil","href":"Hi.MachiningSteps.MachiningStepUtil.html","topicHref":"Hi.MachiningSteps.MachiningStepUtil.html","topicUid":"Hi.MachiningSteps.MachiningStepUtil","type":"Class"},{"name":"PresentAccess","href":"Hi.MachiningSteps.PresentAccess.html","topicHref":"Hi.MachiningSteps.PresentAccess.html","topicUid":"Hi.MachiningSteps.PresentAccess","type":"Class"},{"name":"PresentAttribute","href":"Hi.MachiningSteps.PresentAttribute.html","topicHref":"Hi.MachiningSteps.PresentAttribute.html","topicUid":"Hi.MachiningSteps.PresentAttribute","type":"Class"},{"name":"PropertyAccess","href":"Hi.MachiningSteps.PropertyAccess-1.html","topicHref":"Hi.MachiningSteps.PropertyAccess-1.html","topicUid":"Hi.MachiningSteps.PropertyAccess`1","type":"Class"}]},{"name":"Hi.Mapping","href":"Hi.Mapping.html","topicHref":"Hi.Mapping.html","topicUid":"Hi.Mapping","type":"Namespace","items":[{"name":"CsvNcStep","href":"Hi.Mapping.CsvNcStep.html","topicHref":"Hi.Mapping.CsvNcStep.html","topicUid":"Hi.Mapping.CsvNcStep","type":"Class"},{"name":"FileToTimeShotMapping","href":"Hi.Mapping.FileToTimeShotMapping.html","topicHref":"Hi.Mapping.FileToTimeShotMapping.html","topicUid":"Hi.Mapping.FileToTimeShotMapping","type":"Class"},{"name":"IAccelerationShot","href":"Hi.Mapping.IAccelerationShot.html","topicHref":"Hi.Mapping.IAccelerationShot.html","topicUid":"Hi.Mapping.IAccelerationShot","type":"Interface"},{"name":"IForceShot","href":"Hi.Mapping.IForceShot.html","topicHref":"Hi.Mapping.IForceShot.html","topicUid":"Hi.Mapping.IForceShot","type":"Interface"},{"name":"IMomentShot","href":"Hi.Mapping.IMomentShot.html","topicHref":"Hi.Mapping.IMomentShot.html","topicUid":"Hi.Mapping.IMomentShot","type":"Interface"},{"name":"ITimeShot","href":"Hi.Mapping.ITimeShot.html","topicHref":"Hi.Mapping.ITimeShot.html","topicUid":"Hi.Mapping.ITimeShot","type":"Interface"},{"name":"MappingUtil","href":"Hi.Mapping.MappingUtil.html","topicHref":"Hi.Mapping.MappingUtil.html","topicUid":"Hi.Mapping.MappingUtil","type":"Class"},{"name":"StepTimeShotUtil","href":"Hi.Mapping.StepTimeShotUtil.html","topicHref":"Hi.Mapping.StepTimeShotUtil.html","topicUid":"Hi.Mapping.StepTimeShotUtil","type":"Class"},{"name":"StepTimeShotUtil.CycleSamplingMode","href":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html","topicHref":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html","topicUid":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode","type":"Enum"},{"name":"StepTimeShotUtil.GetTimeShotByFileDelegate","href":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate.html","topicHref":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate.html","topicUid":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate","type":"Delegate"},{"name":"TimeMapping","href":"Hi.Mapping.TimeMapping.html","topicHref":"Hi.Mapping.TimeMapping.html","topicUid":"Hi.Mapping.TimeMapping","type":"Class"}]},{"name":"Hi.Mappings","href":"Hi.Mappings.html","topicHref":"Hi.Mappings.html","topicUid":"Hi.Mappings","type":"Namespace","items":[{"name":"FileTimeSection","href":"Hi.Mappings.FileTimeSection.html","topicHref":"Hi.Mappings.FileTimeSection.html","topicUid":"Hi.Mappings.FileTimeSection","type":"Class"},{"name":"FileTimeSection.TimeOption","href":"Hi.Mappings.FileTimeSection.TimeOption.html","topicHref":"Hi.Mappings.FileTimeSection.TimeOption.html","topicUid":"Hi.Mappings.FileTimeSection.TimeOption","type":"Enum"}]},{"name":"Hi.Mech","href":"Hi.Mech.html","topicHref":"Hi.Mech.html","topicUid":"Hi.Mech","type":"Namespace","items":[{"name":"GeneralMechanism","href":"Hi.Mech.GeneralMechanism.html","topicHref":"Hi.Mech.GeneralMechanism.html","topicUid":"Hi.Mech.GeneralMechanism","type":"Class"},{"name":"IGetAnchorToSolidDictionary","href":"Hi.Mech.IGetAnchorToSolidDictionary.html","topicHref":"Hi.Mech.IGetAnchorToSolidDictionary.html","topicUid":"Hi.Mech.IGetAnchorToSolidDictionary","type":"Interface"},{"name":"IGetMachiningChain","href":"Hi.Mech.IGetMachiningChain.html","topicHref":"Hi.Mech.IGetMachiningChain.html","topicUid":"Hi.Mech.IGetMachiningChain","type":"Interface"},{"name":"IMachiningChain","href":"Hi.Mech.IMachiningChain.html","topicHref":"Hi.Mech.IMachiningChain.html","topicUid":"Hi.Mech.IMachiningChain","type":"Interface"},{"name":"IMachiningChainSource","href":"Hi.Mech.IMachiningChainSource.html","topicHref":"Hi.Mech.IMachiningChainSource.html","topicUid":"Hi.Mech.IMachiningChainSource","type":"Interface"},{"name":"MachiningChainUtil","href":"Hi.Mech.MachiningChainUtil.html","topicHref":"Hi.Mech.MachiningChainUtil.html","topicUid":"Hi.Mech.MachiningChainUtil","type":"Class"}]},{"name":"Hi.Mech.Topo","href":"Hi.Mech.Topo.html","topicHref":"Hi.Mech.Topo.html","topicUid":"Hi.Mech.Topo","type":"Namespace","items":[{"name":"Anchor","href":"Hi.Mech.Topo.Anchor.html","topicHref":"Hi.Mech.Topo.Anchor.html","topicUid":"Hi.Mech.Topo.Anchor","type":"Class"},{"name":"AnchorFuncSource","href":"Hi.Mech.Topo.AnchorFuncSource.html","topicHref":"Hi.Mech.Topo.AnchorFuncSource.html","topicUid":"Hi.Mech.Topo.AnchorFuncSource","type":"Class"},{"name":"AnchoredBoxable","href":"Hi.Mech.Topo.AnchoredBoxable.html","topicHref":"Hi.Mech.Topo.AnchoredBoxable.html","topicUid":"Hi.Mech.Topo.AnchoredBoxable","type":"Class"},{"name":"AnchoredDisplayee","href":"Hi.Mech.Topo.AnchoredDisplayee.html","topicHref":"Hi.Mech.Topo.AnchoredDisplayee.html","topicUid":"Hi.Mech.Topo.AnchoredDisplayee","type":"Class"},{"name":"Asmb","href":"Hi.Mech.Topo.Asmb.html","topicHref":"Hi.Mech.Topo.Asmb.html","topicUid":"Hi.Mech.Topo.Asmb","type":"Class"},{"name":"AsmbDraw","href":"Hi.Mech.Topo.AsmbDraw.html","topicHref":"Hi.Mech.Topo.AsmbDraw.html","topicUid":"Hi.Mech.Topo.AsmbDraw","type":"Class"},{"name":"Branch","href":"Hi.Mech.Topo.Branch.html","topicHref":"Hi.Mech.Topo.Branch.html","topicUid":"Hi.Mech.Topo.Branch","type":"Class"},{"name":"DirectionBranchEntry","href":"Hi.Mech.Topo.DirectionBranchEntry.html","topicHref":"Hi.Mech.Topo.DirectionBranchEntry.html","topicUid":"Hi.Mech.Topo.DirectionBranchEntry","type":"Class"},{"name":"DirectionBranchPackUtil","href":"Hi.Mech.Topo.DirectionBranchPackUtil.html","topicHref":"Hi.Mech.Topo.DirectionBranchPackUtil.html","topicUid":"Hi.Mech.Topo.DirectionBranchPackUtil","type":"Class"},{"name":"DynamicFreeform","href":"Hi.Mech.Topo.DynamicFreeform.html","topicHref":"Hi.Mech.Topo.DynamicFreeform.html","topicUid":"Hi.Mech.Topo.DynamicFreeform","type":"Class"},{"name":"DynamicRotation","href":"Hi.Mech.Topo.DynamicRotation.html","topicHref":"Hi.Mech.Topo.DynamicRotation.html","topicUid":"Hi.Mech.Topo.DynamicRotation","type":"Class"},{"name":"DynamicTranslation","href":"Hi.Mech.Topo.DynamicTranslation.html","topicHref":"Hi.Mech.Topo.DynamicTranslation.html","topicUid":"Hi.Mech.Topo.DynamicTranslation","type":"Class"},{"name":"GeneralTransform","href":"Hi.Mech.Topo.GeneralTransform.html","topicHref":"Hi.Mech.Topo.GeneralTransform.html","topicUid":"Hi.Mech.Topo.GeneralTransform","type":"Class"},{"name":"IAnchoredDisplayee","href":"Hi.Mech.Topo.IAnchoredDisplayee.html","topicHref":"Hi.Mech.Topo.IAnchoredDisplayee.html","topicUid":"Hi.Mech.Topo.IAnchoredDisplayee","type":"Interface"},{"name":"IDynamicRegular","href":"Hi.Mech.Topo.IDynamicRegular.html","topicHref":"Hi.Mech.Topo.IDynamicRegular.html","topicUid":"Hi.Mech.Topo.IDynamicRegular","type":"Interface"},{"name":"IDynamicRotation","href":"Hi.Mech.Topo.IDynamicRotation.html","topicHref":"Hi.Mech.Topo.IDynamicRotation.html","topicUid":"Hi.Mech.Topo.IDynamicRotation","type":"Interface"},{"name":"IDynamicTransformer","href":"Hi.Mech.Topo.IDynamicTransformer.html","topicHref":"Hi.Mech.Topo.IDynamicTransformer.html","topicUid":"Hi.Mech.Topo.IDynamicTransformer","type":"Interface"},{"name":"IGetAnchor","href":"Hi.Mech.Topo.IGetAnchor.html","topicHref":"Hi.Mech.Topo.IGetAnchor.html","topicUid":"Hi.Mech.Topo.IGetAnchor","type":"Interface"},{"name":"IGetAnchoredDisplayeeList","href":"Hi.Mech.Topo.IGetAnchoredDisplayeeList.html","topicHref":"Hi.Mech.Topo.IGetAnchoredDisplayeeList.html","topicUid":"Hi.Mech.Topo.IGetAnchoredDisplayeeList","type":"Interface"},{"name":"IGetAsmb","href":"Hi.Mech.Topo.IGetAsmb.html","topicHref":"Hi.Mech.Topo.IGetAsmb.html","topicUid":"Hi.Mech.Topo.IGetAsmb","type":"Interface"},{"name":"IGetFletchBuckle","href":"Hi.Mech.Topo.IGetFletchBuckle.html","topicHref":"Hi.Mech.Topo.IGetFletchBuckle.html","topicUid":"Hi.Mech.Topo.IGetFletchBuckle","type":"Interface"},{"name":"IGetInverseTransformer","href":"Hi.Mech.Topo.IGetInverseTransformer.html","topicHref":"Hi.Mech.Topo.IGetInverseTransformer.html","topicUid":"Hi.Mech.Topo.IGetInverseTransformer","type":"Interface"},{"name":"IGetTopoIndex","href":"Hi.Mech.Topo.IGetTopoIndex.html","topicHref":"Hi.Mech.Topo.IGetTopoIndex.html","topicUid":"Hi.Mech.Topo.IGetTopoIndex","type":"Interface"},{"name":"IStaticTransformer","href":"Hi.Mech.Topo.IStaticTransformer.html","topicHref":"Hi.Mech.Topo.IStaticTransformer.html","topicUid":"Hi.Mech.Topo.IStaticTransformer","type":"Interface"},{"name":"ITopo","href":"Hi.Mech.Topo.ITopo.html","topicHref":"Hi.Mech.Topo.ITopo.html","topicUid":"Hi.Mech.Topo.ITopo","type":"Interface"},{"name":"ITopoDisplayee","href":"Hi.Mech.Topo.ITopoDisplayee.html","topicHref":"Hi.Mech.Topo.ITopoDisplayee.html","topicUid":"Hi.Mech.Topo.ITopoDisplayee","type":"Interface"},{"name":"ITransformer","href":"Hi.Mech.Topo.ITransformer.html","topicHref":"Hi.Mech.Topo.ITransformer.html","topicUid":"Hi.Mech.Topo.ITransformer","type":"Interface"},{"name":"ITransformerProperty","href":"Hi.Mech.Topo.ITransformerProperty.html","topicHref":"Hi.Mech.Topo.ITransformerProperty.html","topicUid":"Hi.Mech.Topo.ITransformerProperty","type":"Interface"},{"name":"NoTransform","href":"Hi.Mech.Topo.NoTransform.html","topicHref":"Hi.Mech.Topo.NoTransform.html","topicUid":"Hi.Mech.Topo.NoTransform","type":"Class"},{"name":"StackTransformer","href":"Hi.Mech.Topo.StackTransformer.html","topicHref":"Hi.Mech.Topo.StackTransformer.html","topicUid":"Hi.Mech.Topo.StackTransformer","type":"Class"},{"name":"StaticFreeform","href":"Hi.Mech.Topo.StaticFreeform.html","topicHref":"Hi.Mech.Topo.StaticFreeform.html","topicUid":"Hi.Mech.Topo.StaticFreeform","type":"Class"},{"name":"StaticRotation","href":"Hi.Mech.Topo.StaticRotation.html","topicHref":"Hi.Mech.Topo.StaticRotation.html","topicUid":"Hi.Mech.Topo.StaticRotation","type":"Class"},{"name":"StaticTranslation","href":"Hi.Mech.Topo.StaticTranslation.html","topicHref":"Hi.Mech.Topo.StaticTranslation.html","topicUid":"Hi.Mech.Topo.StaticTranslation","type":"Class"},{"name":"TopoDisplayee","href":"Hi.Mech.Topo.TopoDisplayee.html","topicHref":"Hi.Mech.Topo.TopoDisplayee.html","topicUid":"Hi.Mech.Topo.TopoDisplayee","type":"Class"},{"name":"TopoDisplayeeUtil","href":"Hi.Mech.Topo.TopoDisplayeeUtil.html","topicHref":"Hi.Mech.Topo.TopoDisplayeeUtil.html","topicUid":"Hi.Mech.Topo.TopoDisplayeeUtil","type":"Class"},{"name":"TopoReflection","href":"Hi.Mech.Topo.TopoReflection.html","topicHref":"Hi.Mech.Topo.TopoReflection.html","topicUid":"Hi.Mech.Topo.TopoReflection","type":"Class"},{"name":"TopoUtil","href":"Hi.Mech.Topo.TopoUtil.html","topicHref":"Hi.Mech.Topo.TopoUtil.html","topicUid":"Hi.Mech.Topo.TopoUtil","type":"Class"},{"name":"TransformerUtil","href":"Hi.Mech.Topo.TransformerUtil.html","topicHref":"Hi.Mech.Topo.TransformerUtil.html","topicUid":"Hi.Mech.Topo.TransformerUtil","type":"Class"}]},{"name":"Hi.Milling","href":"Hi.Milling.html","topicHref":"Hi.Milling.html","topicUid":"Hi.Milling","type":"Namespace","items":[{"name":"IGetDiameter","href":"Hi.Milling.IGetDiameter.html","topicHref":"Hi.Milling.IGetDiameter.html","topicUid":"Hi.Milling.IGetDiameter","type":"Interface"},{"name":"IGetFluteHeight","href":"Hi.Milling.IGetFluteHeight.html","topicHref":"Hi.Milling.IGetFluteHeight.html","topicUid":"Hi.Milling.IGetFluteHeight","type":"Interface"},{"name":"IGetMillingGeomBrief","href":"Hi.Milling.IGetMillingGeomBrief.html","topicHref":"Hi.Milling.IGetMillingGeomBrief.html","topicUid":"Hi.Milling.IGetMillingGeomBrief","type":"Interface"},{"name":"IGetRadialReliefAngle","href":"Hi.Milling.IGetRadialReliefAngle.html","topicHref":"Hi.Milling.IGetRadialReliefAngle.html","topicUid":"Hi.Milling.IGetRadialReliefAngle","type":"Interface"},{"name":"IMillingGeomBriefAccessor","href":"Hi.Milling.IMillingGeomBriefAccessor.html","topicHref":"Hi.Milling.IMillingGeomBriefAccessor.html","topicUid":"Hi.Milling.IMillingGeomBriefAccessor","type":"Interface"},{"name":"MillingGeomBrief","href":"Hi.Milling.MillingGeomBrief.html","topicHref":"Hi.Milling.MillingGeomBrief.html","topicUid":"Hi.Milling.MillingGeomBrief","type":"Class"},{"name":"MillingRemovalUtil","href":"Hi.Milling.MillingRemovalUtil.html","topicHref":"Hi.Milling.MillingRemovalUtil.html","topicUid":"Hi.Milling.MillingRemovalUtil","type":"Class"},{"name":"SpindleCapability","href":"Hi.Milling.SpindleCapability.html","topicHref":"Hi.Milling.SpindleCapability.html","topicUid":"Hi.Milling.SpindleCapability","type":"Class"}]},{"name":"Hi.Milling.Apts","href":"Hi.Milling.Apts.html","topicHref":"Hi.Milling.Apts.html","topicUid":"Hi.Milling.Apts","type":"Namespace","items":[{"name":"AptDerivative","href":"Hi.Milling.Apts.AptDerivative.html","topicHref":"Hi.Milling.Apts.AptDerivative.html","topicUid":"Hi.Milling.Apts.AptDerivative","type":"Class"},{"name":"BallApt","href":"Hi.Milling.Apts.BallApt.html","topicHref":"Hi.Milling.Apts.BallApt.html","topicUid":"Hi.Milling.Apts.BallApt","type":"Class"},{"name":"BullNoseApt","href":"Hi.Milling.Apts.BullNoseApt.html","topicHref":"Hi.Milling.Apts.BullNoseApt.html","topicUid":"Hi.Milling.Apts.BullNoseApt","type":"Class"},{"name":"ColumnApt","href":"Hi.Milling.Apts.ColumnApt.html","topicHref":"Hi.Milling.Apts.ColumnApt.html","topicUid":"Hi.Milling.Apts.ColumnApt","type":"Class"},{"name":"ConeApt","href":"Hi.Milling.Apts.ConeApt.html","topicHref":"Hi.Milling.Apts.ConeApt.html","topicUid":"Hi.Milling.Apts.ConeApt","type":"Class"},{"name":"ExactColumnApt","href":"Hi.Milling.Apts.ExactColumnApt.html","topicHref":"Hi.Milling.Apts.ExactColumnApt.html","topicUid":"Hi.Milling.Apts.ExactColumnApt","type":"Class"},{"name":"GeneralApt","href":"Hi.Milling.Apts.GeneralApt.html","topicHref":"Hi.Milling.Apts.GeneralApt.html","topicUid":"Hi.Milling.Apts.GeneralApt","type":"Class"},{"name":"IAptAlpha","href":"Hi.Milling.Apts.IAptAlpha.html","topicHref":"Hi.Milling.Apts.IAptAlpha.html","topicUid":"Hi.Milling.Apts.IAptAlpha","type":"Interface"},{"name":"IAptBased","href":"Hi.Milling.Apts.IAptBased.html","topicHref":"Hi.Milling.Apts.IAptBased.html","topicUid":"Hi.Milling.Apts.IAptBased","type":"Interface"},{"name":"IAptBeta","href":"Hi.Milling.Apts.IAptBeta.html","topicHref":"Hi.Milling.Apts.IAptBeta.html","topicUid":"Hi.Milling.Apts.IAptBeta","type":"Interface"},{"name":"IAptRc","href":"Hi.Milling.Apts.IAptRc.html","topicHref":"Hi.Milling.Apts.IAptRc.html","topicUid":"Hi.Milling.Apts.IAptRc","type":"Interface"},{"name":"IAptRr","href":"Hi.Milling.Apts.IAptRr.html","topicHref":"Hi.Milling.Apts.IAptRr.html","topicUid":"Hi.Milling.Apts.IAptRr","type":"Interface"},{"name":"IAptRz","href":"Hi.Milling.Apts.IAptRz.html","topicHref":"Hi.Milling.Apts.IAptRz.html","topicUid":"Hi.Milling.Apts.IAptRz","type":"Interface"},{"name":"IGetApt","href":"Hi.Milling.Apts.IGetApt.html","topicHref":"Hi.Milling.Apts.IGetApt.html","topicUid":"Hi.Milling.Apts.IGetApt","type":"Interface"},{"name":"IGetGeneralApt","href":"Hi.Milling.Apts.IGetGeneralApt.html","topicHref":"Hi.Milling.Apts.IGetGeneralApt.html","topicUid":"Hi.Milling.Apts.IGetGeneralApt","type":"Interface"},{"name":"TaperApt","href":"Hi.Milling.Apts.TaperApt.html","topicHref":"Hi.Milling.Apts.TaperApt.html","topicUid":"Hi.Milling.Apts.TaperApt","type":"Class"},{"name":"apt_t","href":"Hi.Milling.Apts.apt_t.html","topicHref":"Hi.Milling.Apts.apt_t.html","topicUid":"Hi.Milling.Apts.apt_t","type":"Struct"}]},{"name":"Hi.Milling.Cutters","href":"Hi.Milling.Cutters.html","topicHref":"Hi.Milling.Cutters.html","topicUid":"Hi.Milling.Cutters","type":"Namespace","items":[{"name":"AptProfile","href":"Hi.Milling.Cutters.AptProfile.html","topicHref":"Hi.Milling.Cutters.AptProfile.html","topicUid":"Hi.Milling.Cutters.AptProfile","type":"Class"},{"name":"ConstRatioProfile","href":"Hi.Milling.Cutters.ConstRatioProfile.html","topicHref":"Hi.Milling.Cutters.ConstRatioProfile.html","topicUid":"Hi.Milling.Cutters.ConstRatioProfile","type":"Class"},{"name":"CustomSpinningProfile","href":"Hi.Milling.Cutters.CustomSpinningProfile.html","topicHref":"Hi.Milling.Cutters.CustomSpinningProfile.html","topicUid":"Hi.Milling.Cutters.CustomSpinningProfile","type":"Class"},{"name":"CutterUtil","href":"Hi.Milling.Cutters.CutterUtil.html","topicHref":"Hi.Milling.Cutters.CutterUtil.html","topicUid":"Hi.Milling.Cutters.CutterUtil","type":"Class"},{"name":"FluteContourDisplayee","href":"Hi.Milling.Cutters.FluteContourDisplayee.html","topicHref":"Hi.Milling.Cutters.FluteContourDisplayee.html","topicUid":"Hi.Milling.Cutters.FluteContourDisplayee","type":"Class"},{"name":"FluteDependentRatioProfile","href":"Hi.Milling.Cutters.FluteDependentRatioProfile.html","topicHref":"Hi.Milling.Cutters.FluteDependentRatioProfile.html","topicUid":"Hi.Milling.Cutters.FluteDependentRatioProfile","type":"Class"},{"name":"IShaperProfile","href":"Hi.Milling.Cutters.IShaperProfile.html","topicHref":"Hi.Milling.Cutters.IShaperProfile.html","topicUid":"Hi.Milling.Cutters.IShaperProfile","type":"Interface"},{"name":"MillingCutter","href":"Hi.Milling.Cutters.MillingCutter.html","topicHref":"Hi.Milling.Cutters.MillingCutter.html","topicUid":"Hi.Milling.Cutters.MillingCutter","type":"Class"},{"name":"MillingCutter.IntegralModeEnum","href":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum.html","topicHref":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum.html","topicUid":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum","type":"Enum"},{"name":"MillingCutter.MassAssignmentMode","href":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode.html","topicHref":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode.html","topicUid":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode","type":"Enum"},{"name":"MillingCutterEditorDisplayee","href":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.html","topicHref":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.html","topicUid":"Hi.Milling.Cutters.MillingCutterEditorDisplayee","type":"Class"},{"name":"MillingCutterEditorDisplayee.ShapeModeEnum","href":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum.html","topicHref":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum.html","topicUid":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum","type":"Enum"}]},{"name":"Hi.Milling.Engagements","href":"Hi.Milling.Engagements.html","topicHref":"Hi.Milling.Engagements.html","topicUid":"Hi.Milling.Engagements","type":"Namespace","items":[{"name":"BitwiseMillingEngagement","href":"Hi.Milling.Engagements.BitwiseMillingEngagement.html","topicHref":"Hi.Milling.Engagements.BitwiseMillingEngagement.html","topicUid":"Hi.Milling.Engagements.BitwiseMillingEngagement","type":"Class"},{"name":"EngagementLayer","href":"Hi.Milling.Engagements.EngagementLayer.html","topicHref":"Hi.Milling.Engagements.EngagementLayer.html","topicUid":"Hi.Milling.Engagements.EngagementLayer","type":"Class"},{"name":"EngagementSlice","href":"Hi.Milling.Engagements.EngagementSlice.html","topicHref":"Hi.Milling.Engagements.EngagementSlice.html","topicUid":"Hi.Milling.Engagements.EngagementSlice","type":"Class"},{"name":"IBitwiseMillingEngagementSupport","href":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport.html","topicHref":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport.html","topicUid":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport","type":"Interface"},{"name":"IGetLayerMillingEngagement","href":"Hi.Milling.Engagements.IGetLayerMillingEngagement.html","topicHref":"Hi.Milling.Engagements.IGetLayerMillingEngagement.html","topicUid":"Hi.Milling.Engagements.IGetLayerMillingEngagement","type":"Interface"},{"name":"LayerMillingEngagement","href":"Hi.Milling.Engagements.LayerMillingEngagement.html","topicHref":"Hi.Milling.Engagements.LayerMillingEngagement.html","topicUid":"Hi.Milling.Engagements.LayerMillingEngagement","type":"Class"},{"name":"MillingEngagementUtil","href":"Hi.Milling.Engagements.MillingEngagementUtil.html","topicHref":"Hi.Milling.Engagements.MillingEngagementUtil.html","topicUid":"Hi.Milling.Engagements.MillingEngagementUtil","type":"Class"}]},{"name":"Hi.Milling.FluteContours","href":"Hi.Milling.FluteContours.html","topicHref":"Hi.Milling.FluteContours.html","topicUid":"Hi.Milling.FluteContours","type":"Namespace","items":[{"name":"ConstHelixSideContour","href":"Hi.Milling.FluteContours.ConstHelixSideContour.html","topicHref":"Hi.Milling.FluteContours.ConstHelixSideContour.html","topicUid":"Hi.Milling.FluteContours.ConstHelixSideContour","type":"Class"},{"name":"FluteContour","href":"Hi.Milling.FluteContours.FluteContour.html","topicHref":"Hi.Milling.FluteContours.FluteContour.html","topicUid":"Hi.Milling.FluteContours.FluteContour","type":"Class"},{"name":"FluteContourUtil","href":"Hi.Milling.FluteContours.FluteContourUtil.html","topicHref":"Hi.Milling.FluteContours.FluteContourUtil.html","topicUid":"Hi.Milling.FluteContours.FluteContourUtil","type":"Class"},{"name":"FreeContourTray","href":"Hi.Milling.FluteContours.FreeContourTray.html","topicHref":"Hi.Milling.FluteContours.FreeContourTray.html","topicUid":"Hi.Milling.FluteContours.FreeContourTray","type":"Class"},{"name":"FreeformSideContour","href":"Hi.Milling.FluteContours.FreeformSideContour.html","topicHref":"Hi.Milling.FluteContours.FreeformSideContour.html","topicUid":"Hi.Milling.FluteContours.FreeformSideContour","type":"Class"},{"name":"IBottomContour","href":"Hi.Milling.FluteContours.IBottomContour.html","topicHref":"Hi.Milling.FluteContours.IBottomContour.html","topicUid":"Hi.Milling.FluteContours.IBottomContour","type":"Interface"},{"name":"IContourTray","href":"Hi.Milling.FluteContours.IContourTray.html","topicHref":"Hi.Milling.FluteContours.IContourTray.html","topicUid":"Hi.Milling.FluteContours.IContourTray","type":"Interface"},{"name":"IFluteNumSourceProperty","href":"Hi.Milling.FluteContours.IFluteNumSourceProperty.html","topicHref":"Hi.Milling.FluteContours.IFluteNumSourceProperty.html","topicUid":"Hi.Milling.FluteContours.IFluteNumSourceProperty","type":"Interface"},{"name":"IGetFluteNum","href":"Hi.Milling.FluteContours.IGetFluteNum.html","topicHref":"Hi.Milling.FluteContours.IGetFluteNum.html","topicUid":"Hi.Milling.FluteContours.IGetFluteNum","type":"Interface"},{"name":"ISideContour","href":"Hi.Milling.FluteContours.ISideContour.html","topicHref":"Hi.Milling.FluteContours.ISideContour.html","topicUid":"Hi.Milling.FluteContours.ISideContour","type":"Interface"},{"name":"IWorkingContour","href":"Hi.Milling.FluteContours.IWorkingContour.html","topicHref":"Hi.Milling.FluteContours.IWorkingContour.html","topicUid":"Hi.Milling.FluteContours.IWorkingContour","type":"Interface"},{"name":"ShiftedWorkingContour","href":"Hi.Milling.FluteContours.ShiftedWorkingContour.html","topicHref":"Hi.Milling.FluteContours.ShiftedWorkingContour.html","topicUid":"Hi.Milling.FluteContours.ShiftedWorkingContour","type":"Class"},{"name":"SideContourDisplayee","href":"Hi.Milling.FluteContours.SideContourDisplayee.html","topicHref":"Hi.Milling.FluteContours.SideContourDisplayee.html","topicUid":"Hi.Milling.FluteContours.SideContourDisplayee","type":"Class"},{"name":"SlideBottomContour","href":"Hi.Milling.FluteContours.SlideBottomContour.html","topicHref":"Hi.Milling.FluteContours.SlideBottomContour.html","topicUid":"Hi.Milling.FluteContours.SlideBottomContour","type":"Class"},{"name":"SpanContourPos4d","href":"Hi.Milling.FluteContours.SpanContourPos4d.html","topicHref":"Hi.Milling.FluteContours.SpanContourPos4d.html","topicUid":"Hi.Milling.FluteContours.SpanContourPos4d","type":"Class"},{"name":"UniformContourTray","href":"Hi.Milling.FluteContours.UniformContourTray.html","topicHref":"Hi.Milling.FluteContours.UniformContourTray.html","topicUid":"Hi.Milling.FluteContours.UniformContourTray","type":"Class"}]},{"name":"Hi.Milling.MillingTools","href":"Hi.Milling.MillingTools.html","topicHref":"Hi.Milling.MillingTools.html","topicUid":"Hi.Milling.MillingTools","type":"Namespace","items":[{"name":"MillingTool","href":"Hi.Milling.MillingTools.MillingTool.html","topicHref":"Hi.Milling.MillingTools.MillingTool.html","topicUid":"Hi.Milling.MillingTools.MillingTool","type":"Class"},{"name":"MillingToolAnchorReference","href":"Hi.Milling.MillingTools.MillingToolAnchorReference.html","topicHref":"Hi.Milling.MillingTools.MillingToolAnchorReference.html","topicUid":"Hi.Milling.MillingTools.MillingToolAnchorReference","type":"Enum"},{"name":"MillingToolEditorDisplayee","href":"Hi.Milling.MillingTools.MillingToolEditorDisplayee.html","topicHref":"Hi.Milling.MillingTools.MillingToolEditorDisplayee.html","topicUid":"Hi.Milling.MillingTools.MillingToolEditorDisplayee","type":"Class"},{"name":"MillingToolUtil","href":"Hi.Milling.MillingTools.MillingToolUtil.html","topicHref":"Hi.Milling.MillingTools.MillingToolUtil.html","topicUid":"Hi.Milling.MillingTools.MillingToolUtil","type":"Class"}]},{"name":"Hi.MillingForces","href":"Hi.MillingForces.html","topicHref":"Hi.MillingForces.html","topicUid":"Hi.MillingForces","type":"Namespace","items":[{"name":"FluteZData","href":"Hi.MillingForces.FluteZData.html","topicHref":"Hi.MillingForces.FluteZData.html","topicUid":"Hi.MillingForces.FluteZData","type":"Class"},{"name":"IGetMillingForce","href":"Hi.MillingForces.IGetMillingForce.html","topicHref":"Hi.MillingForces.IGetMillingForce.html","topicUid":"Hi.MillingForces.IGetMillingForce","type":"Interface"},{"name":"IMillingForceAccessor","href":"Hi.MillingForces.IMillingForceAccessor.html","topicHref":"Hi.MillingForces.IMillingForceAccessor.html","topicUid":"Hi.MillingForces.IMillingForceAccessor","type":"Interface"},{"name":"MillingForce","href":"Hi.MillingForces.MillingForce.html","topicHref":"Hi.MillingForces.MillingForce.html","topicUid":"Hi.MillingForces.MillingForce","type":"Class"},{"name":"MillingForceLicense","href":"Hi.MillingForces.MillingForceLicense.html","topicHref":"Hi.MillingForces.MillingForceLicense.html","topicUid":"Hi.MillingForces.MillingForceLicense","type":"Class"},{"name":"MillingForceLuggage","href":"Hi.MillingForces.MillingForceLuggage.html","topicHref":"Hi.MillingForces.MillingForceLuggage.html","topicUid":"Hi.MillingForces.MillingForceLuggage","type":"Class"},{"name":"MillingForceUtil","href":"Hi.MillingForces.MillingForceUtil.html","topicHref":"Hi.MillingForces.MillingForceUtil.html","topicUid":"Hi.MillingForces.MillingForceUtil","type":"Class"},{"name":"MillingForceUtil.AnglePack","href":"Hi.MillingForces.MillingForceUtil.AnglePack.html","topicHref":"Hi.MillingForces.MillingForceUtil.AnglePack.html","topicUid":"Hi.MillingForces.MillingForceUtil.AnglePack","type":"Class"},{"name":"MillingPhysicsBrief","href":"Hi.MillingForces.MillingPhysicsBrief.html","topicHref":"Hi.MillingForces.MillingPhysicsBrief.html","topicUid":"Hi.MillingForces.MillingPhysicsBrief","type":"Class"},{"name":"PhysicsUtil","href":"Hi.MillingForces.PhysicsUtil.html","topicHref":"Hi.MillingForces.PhysicsUtil.html","topicUid":"Hi.MillingForces.PhysicsUtil","type":"Class"},{"name":"ToolObservationReference","href":"Hi.MillingForces.ToolObservationReference.html","topicHref":"Hi.MillingForces.ToolObservationReference.html","topicUid":"Hi.MillingForces.ToolObservationReference","type":"Enum"}]},{"name":"Hi.MillingForces.Fittings","href":"Hi.MillingForces.Fittings.html","topicHref":"Hi.MillingForces.Fittings.html","topicUid":"Hi.MillingForces.Fittings","type":"Namespace","items":[{"name":"CuttingParaUtil","href":"Hi.MillingForces.Fittings.CuttingParaUtil.html","topicHref":"Hi.MillingForces.Fittings.CuttingParaUtil.html","topicUid":"Hi.MillingForces.Fittings.CuttingParaUtil","type":"Class"},{"name":"ICuttingPara","href":"Hi.MillingForces.Fittings.ICuttingPara.html","topicHref":"Hi.MillingForces.Fittings.ICuttingPara.html","topicUid":"Hi.MillingForces.Fittings.ICuttingPara","type":"Interface"},{"name":"IGetCuttingPara","href":"Hi.MillingForces.Fittings.IGetCuttingPara.html","topicHref":"Hi.MillingForces.Fittings.IGetCuttingPara.html","topicUid":"Hi.MillingForces.Fittings.IGetCuttingPara","type":"Interface"},{"name":"SampleCategory","href":"Hi.MillingForces.Fittings.SampleCategory.html","topicHref":"Hi.MillingForces.Fittings.SampleCategory.html","topicUid":"Hi.MillingForces.Fittings.SampleCategory","type":"Class"},{"name":"SampleFlag","href":"Hi.MillingForces.Fittings.SampleFlag.html","topicHref":"Hi.MillingForces.Fittings.SampleFlag.html","topicUid":"Hi.MillingForces.Fittings.SampleFlag","type":"Enum"},{"name":"SampleFlagUtil","href":"Hi.MillingForces.Fittings.SampleFlagUtil.html","topicHref":"Hi.MillingForces.Fittings.SampleFlagUtil.html","topicUid":"Hi.MillingForces.Fittings.SampleFlagUtil","type":"Class"},{"name":"SampleInstance","href":"Hi.MillingForces.Fittings.SampleInstance.html","topicHref":"Hi.MillingForces.Fittings.SampleInstance.html","topicUid":"Hi.MillingForces.Fittings.SampleInstance","type":"Class"},{"name":"TimeForce","href":"Hi.MillingForces.Fittings.TimeForce.html","topicHref":"Hi.MillingForces.Fittings.TimeForce.html","topicUid":"Hi.MillingForces.Fittings.TimeForce","type":"Class"},{"name":"TimeForceFrequencyDomain","href":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain.html","topicHref":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain.html","topicUid":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain","type":"Class"},{"name":"TimeForceSeries","href":"Hi.MillingForces.Fittings.TimeForceSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeForceSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeForceSeries","type":"Class"},{"name":"TimeForceUtil","href":"Hi.MillingForces.Fittings.TimeForceUtil.html","topicHref":"Hi.MillingForces.Fittings.TimeForceUtil.html","topicUid":"Hi.MillingForces.Fittings.TimeForceUtil","type":"Class"},{"name":"TimeVsForceSeries","href":"Hi.MillingForces.Fittings.TimeVsForceSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeVsForceSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeVsForceSeries","type":"Class"},{"name":"TimeVsTorqueSeries","href":"Hi.MillingForces.Fittings.TimeVsTorqueSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeVsTorqueSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeVsTorqueSeries","type":"Class"},{"name":"TrainingSample","href":"Hi.MillingForces.Fittings.TrainingSample.html","topicHref":"Hi.MillingForces.Fittings.TrainingSample.html","topicUid":"Hi.MillingForces.Fittings.TrainingSample","type":"Class"}]},{"name":"Hi.MillingForces.ProfileMillingParas","href":"Hi.MillingForces.ProfileMillingParas.html","topicHref":"Hi.MillingForces.ProfileMillingParas.html","topicUid":"Hi.MillingForces.ProfileMillingParas","type":"Namespace","items":[{"name":"IGetLocalProfileMillingPara","href":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara.html","topicHref":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara.html","topicUid":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara","type":"Interface"},{"name":"LocalProfileMillingPara","href":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html","topicHref":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html","topicUid":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara","type":"Class"},{"name":"ProfileMillingParaMap","href":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap.html","topicHref":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap.html","topicUid":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap","type":"Class"},{"name":"RtaMillingParaKey","href":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey.html","topicHref":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey.html","topicUid":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey","type":"Enum"}]},{"name":"Hi.MillingForces.RakeFaceCuttingParas","href":"Hi.MillingForces.RakeFaceCuttingParas.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas","type":"Namespace","items":[{"name":"IRakeFaceCuttingPara","href":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara","type":"Interface"},{"name":"MillingPhysicsUtil","href":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil","type":"Class"},{"name":"MultiFormRakeFaceCuttingPara","href":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara","type":"Class"},{"name":"RakeFaceCuttingPara2d","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d","type":"Class"},{"name":"RakeFaceCuttingPara3d","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d","type":"Class"},{"name":"RakeFaceCuttingParaMap","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap","type":"Class"}]},{"name":"Hi.MillingForces.Training","href":"Hi.MillingForces.Training.html","topicHref":"Hi.MillingForces.Training.html","topicUid":"Hi.MillingForces.Training","type":"Namespace","items":[{"name":"MillingTraining","href":"Hi.MillingForces.Training.MillingTraining.html","topicHref":"Hi.MillingForces.Training.MillingTraining.html","topicUid":"Hi.MillingForces.Training.MillingTraining","type":"Class"}]},{"name":"Hi.MillingProcs","href":"Hi.MillingProcs.html","topicHref":"Hi.MillingProcs.html","topicUid":"Hi.MillingProcs","type":"Namespace","items":[{"name":"MillingGuide","href":"Hi.MillingProcs.MillingGuide.html","topicHref":"Hi.MillingProcs.MillingGuide.html","topicUid":"Hi.MillingProcs.MillingGuide","type":"Class"}]},{"name":"Hi.MillingStepUtils","href":"Hi.MillingStepUtils.html","topicHref":"Hi.MillingStepUtils.html","topicUid":"Hi.MillingStepUtils","type":"Namespace","items":[{"name":"ClStripChartConfig","href":"Hi.MillingStepUtils.ClStripChartConfig.html","topicHref":"Hi.MillingStepUtils.ClStripChartConfig.html","topicUid":"Hi.MillingStepUtils.ClStripChartConfig","type":"Class"},{"name":"ClStripChartItemConfig","href":"Hi.MillingStepUtils.ClStripChartItemConfig.html","topicHref":"Hi.MillingStepUtils.ClStripChartItemConfig.html","topicUid":"Hi.MillingStepUtils.ClStripChartItemConfig","type":"Class"},{"name":"ForceCycleFlag","href":"Hi.MillingStepUtils.ForceCycleFlag.html","topicHref":"Hi.MillingStepUtils.ForceCycleFlag.html","topicUid":"Hi.MillingStepUtils.ForceCycleFlag","type":"Enum"},{"name":"ForceCycleLineDivConfig","href":"Hi.MillingStepUtils.ForceCycleLineDivConfig.html","topicHref":"Hi.MillingStepUtils.ForceCycleLineDivConfig.html","topicUid":"Hi.MillingStepUtils.ForceCycleLineDivConfig","type":"Class"},{"name":"LineChartVRangeMode","href":"Hi.MillingStepUtils.LineChartVRangeMode.html","topicHref":"Hi.MillingStepUtils.LineChartVRangeMode.html","topicUid":"Hi.MillingStepUtils.LineChartVRangeMode","type":"Enum"},{"name":"SpindleMomentCycleLineDivConfig","href":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig.html","topicHref":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig.html","topicUid":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig","type":"Class"},{"name":"TimeChartYConfig","href":"Hi.MillingStepUtils.TimeChartYConfig.html","topicHref":"Hi.MillingStepUtils.TimeChartYConfig.html","topicUid":"Hi.MillingStepUtils.TimeChartYConfig","type":"Class"}]},{"name":"Hi.MillingSteps","href":"Hi.MillingSteps.html","topicHref":"Hi.MillingSteps.html","topicUid":"Hi.MillingSteps","type":"Namespace","items":[{"name":"MillingInstance","href":"Hi.MillingSteps.MillingInstance.html","topicHref":"Hi.MillingSteps.MillingInstance.html","topicUid":"Hi.MillingSteps.MillingInstance","type":"Class"},{"name":"MillingStepLuggage","href":"Hi.MillingSteps.MillingStepLuggage.html","topicHref":"Hi.MillingSteps.MillingStepLuggage.html","topicUid":"Hi.MillingSteps.MillingStepLuggage","type":"Class"}]},{"name":"Hi.Motion","href":"Hi.Motion.html","topicHref":"Hi.Motion.html","topicUid":"Hi.Motion","type":"Namespace","items":[{"name":"MotionUtil","href":"Hi.Motion.MotionUtil.html","topicHref":"Hi.Motion.MotionUtil.html","topicUid":"Hi.Motion.MotionUtil","type":"Class"}]},{"name":"Hi.Motion.MatValves","href":"Hi.Motion.MatValves.html","topicHref":"Hi.Motion.MatValves.html","topicUid":"Hi.Motion.MatValves","type":"Namespace","items":[{"name":"ClMachiningValve","href":"Hi.Motion.MatValves.ClMachiningValve.html","topicHref":"Hi.Motion.MatValves.ClMachiningValve.html","topicUid":"Hi.Motion.MatValves.ClMachiningValve","type":"Class"},{"name":"IMotionValve","href":"Hi.Motion.MatValves.IMotionValve.html","topicHref":"Hi.Motion.MatValves.IMotionValve.html","topicUid":"Hi.Motion.MatValves.IMotionValve","type":"Interface"},{"name":"MacroMotionValve","href":"Hi.Motion.MatValves.MacroMotionValve.html","topicHref":"Hi.Motion.MatValves.MacroMotionValve.html","topicUid":"Hi.Motion.MatValves.MacroMotionValve","type":"Class"},{"name":"StepMotionValve","href":"Hi.Motion.MatValves.StepMotionValve.html","topicHref":"Hi.Motion.MatValves.StepMotionValve.html","topicUid":"Hi.Motion.MatValves.StepMotionValve","type":"Class"}]},{"name":"Hi.Native","href":"Hi.Native.html","topicHref":"Hi.Native.html","topicUid":"Hi.Native","type":"Namespace","items":[{"name":"StopSource","href":"Hi.Native.StopSource.html","topicHref":"Hi.Native.StopSource.html","topicUid":"Hi.Native.StopSource","type":"Class"},{"name":"StopToken","href":"Hi.Native.StopToken.html","topicHref":"Hi.Native.StopToken.html","topicUid":"Hi.Native.StopToken","type":"Class"},{"name":"StopTokenKit","href":"Hi.Native.StopTokenKit.html","topicHref":"Hi.Native.StopTokenKit.html","topicUid":"Hi.Native.StopTokenKit","type":"Class"},{"name":"StopTokenUtil","href":"Hi.Native.StopTokenUtil.html","topicHref":"Hi.Native.StopTokenUtil.html","topicUid":"Hi.Native.StopTokenUtil","type":"Class"},{"name":"bind_t","href":"Hi.Native.bind_t.html","topicHref":"Hi.Native.bind_t.html","topicUid":"Hi.Native.bind_t","type":"Struct"},{"name":"box2d","href":"Hi.Native.box2d.html","topicHref":"Hi.Native.box2d.html","topicUid":"Hi.Native.box2d","type":"Struct"},{"name":"box3d","href":"Hi.Native.box3d.html","topicHref":"Hi.Native.box3d.html","topicUid":"Hi.Native.box3d","type":"Struct"},{"name":"expand_to_box3d_func_t","href":"Hi.Native.expand_to_box3d_func_t.html","topicHref":"Hi.Native.expand_to_box3d_func_t.html","topicUid":"Hi.Native.expand_to_box3d_func_t","type":"Delegate"},{"name":"key_event_t","href":"Hi.Native.key_event_t.html","topicHref":"Hi.Native.key_event_t.html","topicUid":"Hi.Native.key_event_t","type":"Struct"},{"name":"key_table__transform_view_by_key_pressing_t","href":"Hi.Native.key_table__transform_view_by_key_pressing_t.html","topicHref":"Hi.Native.key_table__transform_view_by_key_pressing_t.html","topicUid":"Hi.Native.key_table__transform_view_by_key_pressing_t","type":"Struct"},{"name":"mat4d","href":"Hi.Native.mat4d.html","topicHref":"Hi.Native.mat4d.html","topicUid":"Hi.Native.mat4d","type":"Struct"},{"name":"mat_stack_t","href":"Hi.Native.mat_stack_t.html","topicHref":"Hi.Native.mat_stack_t.html","topicUid":"Hi.Native.mat_stack_t","type":"Struct"},{"name":"mouse_button_event_t","href":"Hi.Native.mouse_button_event_t.html","topicHref":"Hi.Native.mouse_button_event_t.html","topicUid":"Hi.Native.mouse_button_event_t","type":"Struct"},{"name":"mouse_button_table__transform_view_by_mouse_drag_t","href":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t.html","topicHref":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t.html","topicUid":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t","type":"Struct"},{"name":"mouse_move_event_t","href":"Hi.Native.mouse_move_event_t.html","topicHref":"Hi.Native.mouse_move_event_t.html","topicUid":"Hi.Native.mouse_move_event_t","type":"Struct"},{"name":"mouse_wheel_event_t","href":"Hi.Native.mouse_wheel_event_t.html","topicHref":"Hi.Native.mouse_wheel_event_t.html","topicUid":"Hi.Native.mouse_wheel_event_t","type":"Struct"},{"name":"panel_state_t","href":"Hi.Native.panel_state_t.html","topicHref":"Hi.Native.panel_state_t.html","topicUid":"Hi.Native.panel_state_t","type":"Struct"},{"name":"picking_event_t","href":"Hi.Native.picking_event_t.html","topicHref":"Hi.Native.picking_event_t.html","topicUid":"Hi.Native.picking_event_t","type":"Struct"},{"name":"picking_mark_t","href":"Hi.Native.picking_mark_t.html","topicHref":"Hi.Native.picking_mark_t.html","topicUid":"Hi.Native.picking_mark_t","type":"Struct"},{"name":"tri3d","href":"Hi.Native.tri3d.html","topicHref":"Hi.Native.tri3d.html","topicUid":"Hi.Native.tri3d","type":"Struct"},{"name":"ui_event_type","href":"Hi.Native.ui_event_type.html","topicHref":"Hi.Native.ui_event_type.html","topicUid":"Hi.Native.ui_event_type","type":"Enum"},{"name":"vec2d","href":"Hi.Native.vec2d.html","topicHref":"Hi.Native.vec2d.html","topicUid":"Hi.Native.vec2d","type":"Struct"},{"name":"vec3d","href":"Hi.Native.vec3d.html","topicHref":"Hi.Native.vec3d.html","topicUid":"Hi.Native.vec3d","type":"Struct"},{"name":"vec3f","href":"Hi.Native.vec3f.html","topicHref":"Hi.Native.vec3f.html","topicUid":"Hi.Native.vec3f","type":"Struct"}]},{"name":"Hi.NcMech","href":"Hi.NcMech.html","topicHref":"Hi.NcMech.html","topicUid":"Hi.NcMech","type":"Namespace","items":[{"name":"ICollisionIndexPairsSource","href":"Hi.NcMech.ICollisionIndexPairsSource.html","topicHref":"Hi.NcMech.ICollisionIndexPairsSource.html","topicUid":"Hi.NcMech.ICollisionIndexPairsSource","type":"Interface"}]},{"name":"Hi.NcMech.Fixtures","href":"Hi.NcMech.Fixtures.html","topicHref":"Hi.NcMech.Fixtures.html","topicUid":"Hi.NcMech.Fixtures","type":"Namespace","items":[{"name":"Fixture","href":"Hi.NcMech.Fixtures.Fixture.html","topicHref":"Hi.NcMech.Fixtures.Fixture.html","topicUid":"Hi.NcMech.Fixtures.Fixture","type":"Class"},{"name":"FixtureEditorDisplayee","href":"Hi.NcMech.Fixtures.FixtureEditorDisplayee.html","topicHref":"Hi.NcMech.Fixtures.FixtureEditorDisplayee.html","topicUid":"Hi.NcMech.Fixtures.FixtureEditorDisplayee","type":"Class"},{"name":"FixtureEditorDisplayeeConfig","href":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html","topicHref":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html","topicUid":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig","type":"Class"}]},{"name":"Hi.NcMech.Holders","href":"Hi.NcMech.Holders.html","topicHref":"Hi.NcMech.Holders.html","topicUid":"Hi.NcMech.Holders","type":"Namespace","items":[{"name":"CylindroidHolder","href":"Hi.NcMech.Holders.CylindroidHolder.html","topicHref":"Hi.NcMech.Holders.CylindroidHolder.html","topicUid":"Hi.NcMech.Holders.CylindroidHolder","type":"Class"},{"name":"FreeformHolder","href":"Hi.NcMech.Holders.FreeformHolder.html","topicHref":"Hi.NcMech.Holders.FreeformHolder.html","topicUid":"Hi.NcMech.Holders.FreeformHolder","type":"Class"},{"name":"HolderEditorDisplayee","href":"Hi.NcMech.Holders.HolderEditorDisplayee.html","topicHref":"Hi.NcMech.Holders.HolderEditorDisplayee.html","topicUid":"Hi.NcMech.Holders.HolderEditorDisplayee","type":"Class"},{"name":"IHolder","href":"Hi.NcMech.Holders.IHolder.html","topicHref":"Hi.NcMech.Holders.IHolder.html","topicUid":"Hi.NcMech.Holders.IHolder","type":"Interface"}]},{"name":"Hi.NcMech.Solids","href":"Hi.NcMech.Solids.html","topicHref":"Hi.NcMech.Solids.html","topicUid":"Hi.NcMech.Solids","type":"Namespace","items":[{"name":"IGetSolid","href":"Hi.NcMech.Solids.IGetSolid.html","topicHref":"Hi.NcMech.Solids.IGetSolid.html","topicUid":"Hi.NcMech.Solids.IGetSolid","type":"Interface"},{"name":"Solid","href":"Hi.NcMech.Solids.Solid.html","topicHref":"Hi.NcMech.Solids.Solid.html","topicUid":"Hi.NcMech.Solids.Solid","type":"Class"},{"name":"Solid.RenderingModeEnum","href":"Hi.NcMech.Solids.Solid.RenderingModeEnum.html","topicHref":"Hi.NcMech.Solids.Solid.RenderingModeEnum.html","topicUid":"Hi.NcMech.Solids.Solid.RenderingModeEnum","type":"Enum"},{"name":"SolidFuncSource","href":"Hi.NcMech.Solids.SolidFuncSource.html","topicHref":"Hi.NcMech.Solids.SolidFuncSource.html","topicUid":"Hi.NcMech.Solids.SolidFuncSource","type":"Class"}]},{"name":"Hi.NcMech.Topo","href":"Hi.NcMech.Topo.html","topicHref":"Hi.NcMech.Topo.html","topicUid":"Hi.NcMech.Topo","type":"Namespace","items":[{"name":"INcStroke","href":"Hi.NcMech.Topo.INcStroke.html","topicHref":"Hi.NcMech.Topo.INcStroke.html","topicUid":"Hi.NcMech.Topo.INcStroke","type":"Interface"},{"name":"INcTransformer","href":"Hi.NcMech.Topo.INcTransformer.html","topicHref":"Hi.NcMech.Topo.INcTransformer.html","topicUid":"Hi.NcMech.Topo.INcTransformer","type":"Interface"},{"name":"ITopoBrick","href":"Hi.NcMech.Topo.ITopoBrick.html","topicHref":"Hi.NcMech.Topo.ITopoBrick.html","topicUid":"Hi.NcMech.Topo.ITopoBrick","type":"Interface"},{"name":"NcRotation","href":"Hi.NcMech.Topo.NcRotation.html","topicHref":"Hi.NcMech.Topo.NcRotation.html","topicUid":"Hi.NcMech.Topo.NcRotation","type":"Class"},{"name":"NcTranslation","href":"Hi.NcMech.Topo.NcTranslation.html","topicHref":"Hi.NcMech.Topo.NcTranslation.html","topicUid":"Hi.NcMech.Topo.NcTranslation","type":"Class"},{"name":"SolidSourceTopoBrick","href":"Hi.NcMech.Topo.SolidSourceTopoBrick.html","topicHref":"Hi.NcMech.Topo.SolidSourceTopoBrick.html","topicUid":"Hi.NcMech.Topo.SolidSourceTopoBrick","type":"Class"},{"name":"StlSourceTopoBrick","href":"Hi.NcMech.Topo.StlSourceTopoBrick.html","topicHref":"Hi.NcMech.Topo.StlSourceTopoBrick.html","topicUid":"Hi.NcMech.Topo.StlSourceTopoBrick","type":"Class"}]},{"name":"Hi.NcMech.Workpieces","href":"Hi.NcMech.Workpieces.html","topicHref":"Hi.NcMech.Workpieces.html","topicUid":"Hi.NcMech.Workpieces","type":"Namespace","items":[{"name":"Workpiece","href":"Hi.NcMech.Workpieces.Workpiece.html","topicHref":"Hi.NcMech.Workpieces.Workpiece.html","topicUid":"Hi.NcMech.Workpieces.Workpiece","type":"Class"},{"name":"WorkpieceEditorDisplayee","href":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html","topicHref":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html","topicUid":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee","type":"Class"},{"name":"WorkpieceEditorDisplayeeConfig","href":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html","topicHref":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html","topicUid":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig","type":"Class"}]},{"name":"Hi.NcMech.Xyzabc","href":"Hi.NcMech.Xyzabc.html","topicHref":"Hi.NcMech.Xyzabc.html","topicUid":"Hi.NcMech.Xyzabc","type":"Namespace","items":[{"name":"CodeXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool","type":"Class"},{"name":"CodeXyzabcMachineToolUri","href":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html","topicHref":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html","topicUid":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri","type":"Class"},{"name":"GeneralXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool","type":"Class"},{"name":"IGetCodeXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool","type":"Interface"},{"name":"IXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.IXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.IXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.IXyzabcMachineTool","type":"Interface"}]},{"name":"Hi.NcOpt","href":"Hi.NcOpt.html","topicHref":"Hi.NcOpt.html","topicUid":"Hi.NcOpt","type":"Namespace","items":[{"name":"CuttingVelocityOptLimit","href":"Hi.NcOpt.CuttingVelocityOptLimit.html","topicHref":"Hi.NcOpt.CuttingVelocityOptLimit.html","topicUid":"Hi.NcOpt.CuttingVelocityOptLimit","type":"Class"},{"name":"FixedFeedPerCycleOptLimit","href":"Hi.NcOpt.FixedFeedPerCycleOptLimit.html","topicHref":"Hi.NcOpt.FixedFeedPerCycleOptLimit.html","topicUid":"Hi.NcOpt.FixedFeedPerCycleOptLimit","type":"Class"},{"name":"FixedFeedPerToothOptLimit","href":"Hi.NcOpt.FixedFeedPerToothOptLimit.html","topicHref":"Hi.NcOpt.FixedFeedPerToothOptLimit.html","topicUid":"Hi.NcOpt.FixedFeedPerToothOptLimit","type":"Class"},{"name":"ICutterOptLimitHost","href":"Hi.NcOpt.ICutterOptLimitHost.html","topicHref":"Hi.NcOpt.ICutterOptLimitHost.html","topicUid":"Hi.NcOpt.ICutterOptLimitHost","type":"Interface"},{"name":"ICutterOptOption","href":"Hi.NcOpt.ICutterOptOption.html","topicHref":"Hi.NcOpt.ICutterOptOption.html","topicUid":"Hi.NcOpt.ICutterOptOption","type":"Interface"},{"name":"ICuttingVelocityOptLimit","href":"Hi.NcOpt.ICuttingVelocityOptLimit.html","topicHref":"Hi.NcOpt.ICuttingVelocityOptLimit.html","topicUid":"Hi.NcOpt.ICuttingVelocityOptLimit","type":"Interface"},{"name":"IFeedPerToothOptLimit","href":"Hi.NcOpt.IFeedPerToothOptLimit.html","topicHref":"Hi.NcOpt.IFeedPerToothOptLimit.html","topicUid":"Hi.NcOpt.IFeedPerToothOptLimit","type":"Interface"},{"name":"MillingCutterOptOption","href":"Hi.NcOpt.MillingCutterOptOption.html","topicHref":"Hi.NcOpt.MillingCutterOptOption.html","topicUid":"Hi.NcOpt.MillingCutterOptOption","type":"Class"},{"name":"NcOptOption","href":"Hi.NcOpt.NcOptOption.html","topicHref":"Hi.NcOpt.NcOptOption.html","topicUid":"Hi.NcOpt.NcOptOption","type":"Class"},{"name":"NcOptProc","href":"Hi.NcOpt.NcOptProc.html","topicHref":"Hi.NcOpt.NcOptProc.html","topicUid":"Hi.NcOpt.NcOptProc","type":"Class"},{"name":"NcOptimizationEmbeddedLogMode","href":"Hi.NcOpt.NcOptimizationEmbeddedLogMode.html","topicHref":"Hi.NcOpt.NcOptimizationEmbeddedLogMode.html","topicUid":"Hi.NcOpt.NcOptimizationEmbeddedLogMode","type":"Enum"},{"name":"ShapeBasedCutterOptLimit","href":"Hi.NcOpt.ShapeBasedCutterOptLimit.html","topicHref":"Hi.NcOpt.ShapeBasedCutterOptLimit.html","topicUid":"Hi.NcOpt.ShapeBasedCutterOptLimit","type":"Class"}]},{"name":"Hi.NcParsers","href":"Hi.NcParsers.html","topicHref":"Hi.NcParsers.html","topicUid":"Hi.NcParsers","type":"Namespace","items":[{"name":"IGetSentence","href":"Hi.NcParsers.IGetSentence.html","topicHref":"Hi.NcParsers.IGetSentence.html","topicUid":"Hi.NcParsers.IGetSentence","type":"Interface"},{"name":"NcDiagnostic","href":"Hi.NcParsers.NcDiagnostic.html","topicHref":"Hi.NcParsers.NcDiagnostic.html","topicUid":"Hi.NcParsers.NcDiagnostic","type":"Class"},{"name":"NcDiagnosticCategory","href":"Hi.NcParsers.NcDiagnosticCategory.html","topicHref":"Hi.NcParsers.NcDiagnosticCategory.html","topicUid":"Hi.NcParsers.NcDiagnosticCategory","type":"Enum"},{"name":"NcDiagnosticProgress","href":"Hi.NcParsers.NcDiagnosticProgress.html","topicHref":"Hi.NcParsers.NcDiagnosticProgress.html","topicUid":"Hi.NcParsers.NcDiagnosticProgress","type":"Class"},{"name":"NcDiagnosticSeverity","href":"Hi.NcParsers.NcDiagnosticSeverity.html","topicHref":"Hi.NcParsers.NcDiagnosticSeverity.html","topicUid":"Hi.NcParsers.NcDiagnosticSeverity","type":"Enum"},{"name":"Sentence","href":"Hi.NcParsers.Sentence.html","topicHref":"Hi.NcParsers.Sentence.html","topicUid":"Hi.NcParsers.Sentence","type":"Class"},{"name":"SoftNcRunner","href":"Hi.NcParsers.SoftNcRunner.html","topicHref":"Hi.NcParsers.SoftNcRunner.html","topicUid":"Hi.NcParsers.SoftNcRunner","type":"Class"},{"name":"SoftNcUtil","href":"Hi.NcParsers.SoftNcUtil.html","topicHref":"Hi.NcParsers.SoftNcUtil.html","topicUid":"Hi.NcParsers.SoftNcUtil","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys","href":"Hi.NcParsers.Dependencys.html","topicHref":"Hi.NcParsers.Dependencys.html","topicUid":"Hi.NcParsers.Dependencys","type":"Namespace","items":[{"name":"AxisType","href":"Hi.NcParsers.Dependencys.AxisType.html","topicHref":"Hi.NcParsers.Dependencys.AxisType.html","topicUid":"Hi.NcParsers.Dependencys.AxisType","type":"Enum"},{"name":"ControllerParameterTableBase","href":"Hi.NcParsers.Dependencys.ControllerParameterTableBase.html","topicHref":"Hi.NcParsers.Dependencys.ControllerParameterTableBase.html","topicUid":"Hi.NcParsers.Dependencys.ControllerParameterTableBase","type":"Class"},{"name":"HeidenhainDatumTable","href":"Hi.NcParsers.Dependencys.HeidenhainDatumTable.html","topicHref":"Hi.NcParsers.Dependencys.HeidenhainDatumTable.html","topicUid":"Hi.NcParsers.Dependencys.HeidenhainDatumTable","type":"Class"},{"name":"ICannedCycleConfig","href":"Hi.NcParsers.Dependencys.ICannedCycleConfig.html","topicHref":"Hi.NcParsers.Dependencys.ICannedCycleConfig.html","topicUid":"Hi.NcParsers.Dependencys.ICannedCycleConfig","type":"Interface"},{"name":"IHomeMcConfig","href":"Hi.NcParsers.Dependencys.IHomeMcConfig.html","topicHref":"Hi.NcParsers.Dependencys.IHomeMcConfig.html","topicUid":"Hi.NcParsers.Dependencys.IHomeMcConfig","type":"Interface"},{"name":"IMachineAxisConfig","href":"Hi.NcParsers.Dependencys.IMachineAxisConfig.html","topicHref":"Hi.NcParsers.Dependencys.IMachineAxisConfig.html","topicUid":"Hi.NcParsers.Dependencys.IMachineAxisConfig","type":"Interface"},{"name":"INcDependency","href":"Hi.NcParsers.Dependencys.INcDependency.html","topicHref":"Hi.NcParsers.Dependencys.INcDependency.html","topicUid":"Hi.NcParsers.Dependencys.INcDependency","type":"Interface"},{"name":"IRapidFeedrateConfig","href":"Hi.NcParsers.Dependencys.IRapidFeedrateConfig.html","topicHref":"Hi.NcParsers.Dependencys.IRapidFeedrateConfig.html","topicUid":"Hi.NcParsers.Dependencys.IRapidFeedrateConfig","type":"Interface"},{"name":"IToolOffsetConfig","href":"Hi.NcParsers.Dependencys.IToolOffsetConfig.html","topicHref":"Hi.NcParsers.Dependencys.IToolOffsetConfig.html","topicUid":"Hi.NcParsers.Dependencys.IToolOffsetConfig","type":"Interface"},{"name":"IToolingMcConfig","href":"Hi.NcParsers.Dependencys.IToolingMcConfig.html","topicHref":"Hi.NcParsers.Dependencys.IToolingMcConfig.html","topicUid":"Hi.NcParsers.Dependencys.IToolingMcConfig","type":"Interface"}]},{"name":"Hi.NcParsers.Dependencys.Fanuc","href":"Hi.NcParsers.Dependencys.Fanuc.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc","type":"Namespace","items":[{"name":"CutterCompensationType","href":"Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType","type":"Enum"},{"name":"FanucParameterTable","href":"Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Generic","href":"Hi.NcParsers.Dependencys.Generic.html","topicHref":"Hi.NcParsers.Dependencys.Generic.html","topicUid":"Hi.NcParsers.Dependencys.Generic","type":"Namespace","items":[{"name":"FallbackConfig","href":"Hi.NcParsers.Dependencys.Generic.FallbackConfig.html","topicHref":"Hi.NcParsers.Dependencys.Generic.FallbackConfig.html","topicUid":"Hi.NcParsers.Dependencys.Generic.FallbackConfig","type":"Class"},{"name":"IsoCoordinateTable","href":"Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html","topicHref":"Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html","topicUid":"Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable","type":"Class"},{"name":"NcKinematicsDependency","href":"Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html","topicHref":"Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html","topicUid":"Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency","type":"Class"},{"name":"ToolOffsetRow","href":"Hi.NcParsers.Dependencys.Generic.ToolOffsetRow.html","topicHref":"Hi.NcParsers.Dependencys.Generic.ToolOffsetRow.html","topicUid":"Hi.NcParsers.Dependencys.Generic.ToolOffsetRow","type":"Class"},{"name":"ToolOffsetTable","href":"Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html","topicHref":"Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html","topicUid":"Hi.NcParsers.Dependencys.Generic.ToolOffsetTable","type":"Class"},{"name":"ToolingMcConfig","href":"Hi.NcParsers.Dependencys.Generic.ToolingMcConfig.html","topicHref":"Hi.NcParsers.Dependencys.Generic.ToolingMcConfig.html","topicUid":"Hi.NcParsers.Dependencys.Generic.ToolingMcConfig","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Heidenhain","href":"Hi.NcParsers.Dependencys.Heidenhain.html","topicHref":"Hi.NcParsers.Dependencys.Heidenhain.html","topicUid":"Hi.NcParsers.Dependencys.Heidenhain","type":"Namespace","items":[{"name":"HeidenhainParameterTable","href":"Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html","topicHref":"Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html","topicUid":"Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Siemens","href":"Hi.NcParsers.Dependencys.Siemens.html","topicHref":"Hi.NcParsers.Dependencys.Siemens.html","topicUid":"Hi.NcParsers.Dependencys.Siemens","type":"Namespace","items":[{"name":"ISiemensToolOffsetConfig","href":"Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig.html","topicHref":"Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig.html","topicUid":"Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig","type":"Interface"},{"name":"SiemensMachineDataTable","href":"Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html","topicHref":"Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html","topicUid":"Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Syntec","href":"Hi.NcParsers.Dependencys.Syntec.html","topicHref":"Hi.NcParsers.Dependencys.Syntec.html","topicUid":"Hi.NcParsers.Dependencys.Syntec","type":"Namespace","items":[{"name":"SyntecParameterTable","href":"Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html","topicHref":"Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html","topicUid":"Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable","type":"Class"}]},{"name":"Hi.NcParsers.Initializers","href":"Hi.NcParsers.Initializers.html","topicHref":"Hi.NcParsers.Initializers.html","topicUid":"Hi.NcParsers.Initializers","type":"Namespace","items":[{"name":"HomeMcInitializer","href":"Hi.NcParsers.Initializers.HomeMcInitializer.html","topicHref":"Hi.NcParsers.Initializers.HomeMcInitializer.html","topicUid":"Hi.NcParsers.Initializers.HomeMcInitializer","type":"Class"},{"name":"INcInitializer","href":"Hi.NcParsers.Initializers.INcInitializer.html","topicHref":"Hi.NcParsers.Initializers.INcInitializer.html","topicUid":"Hi.NcParsers.Initializers.INcInitializer","type":"Interface"},{"name":"StaticInitializer","href":"Hi.NcParsers.Initializers.StaticInitializer.html","topicHref":"Hi.NcParsers.Initializers.StaticInitializer.html","topicUid":"Hi.NcParsers.Initializers.StaticInitializer","type":"Class"}]},{"name":"Hi.NcParsers.Keywords","href":"Hi.NcParsers.Keywords.html","topicHref":"Hi.NcParsers.Keywords.html","topicUid":"Hi.NcParsers.Keywords","type":"Namespace","items":[{"name":"Comment","href":"Hi.NcParsers.Keywords.Comment.html","topicHref":"Hi.NcParsers.Keywords.Comment.html","topicUid":"Hi.NcParsers.Keywords.Comment","type":"Class"},{"name":"CompoundMotion","href":"Hi.NcParsers.Keywords.CompoundMotion.html","topicHref":"Hi.NcParsers.Keywords.CompoundMotion.html","topicUid":"Hi.NcParsers.Keywords.CompoundMotion","type":"Class"},{"name":"CoordinateOffset","href":"Hi.NcParsers.Keywords.CoordinateOffset.html","topicHref":"Hi.NcParsers.Keywords.CoordinateOffset.html","topicUid":"Hi.NcParsers.Keywords.CoordinateOffset","type":"Class"},{"name":"CsScript","href":"Hi.NcParsers.Keywords.CsScript.html","topicHref":"Hi.NcParsers.Keywords.CsScript.html","topicUid":"Hi.NcParsers.Keywords.CsScript","type":"Class"},{"name":"Dwell","href":"Hi.NcParsers.Keywords.Dwell.html","topicHref":"Hi.NcParsers.Keywords.Dwell.html","topicUid":"Hi.NcParsers.Keywords.Dwell","type":"Class"},{"name":"Feedrate","href":"Hi.NcParsers.Keywords.Feedrate.html","topicHref":"Hi.NcParsers.Keywords.Feedrate.html","topicUid":"Hi.NcParsers.Keywords.Feedrate","type":"Class"},{"name":"IArcMotionDef","href":"Hi.NcParsers.Keywords.IArcMotionDef.html","topicHref":"Hi.NcParsers.Keywords.IArcMotionDef.html","topicUid":"Hi.NcParsers.Keywords.IArcMotionDef","type":"Interface"},{"name":"ICompoundMotionDef","href":"Hi.NcParsers.Keywords.ICompoundMotionDef.html","topicHref":"Hi.NcParsers.Keywords.ICompoundMotionDef.html","topicUid":"Hi.NcParsers.Keywords.ICompoundMotionDef","type":"Interface"},{"name":"IDwellDef","href":"Hi.NcParsers.Keywords.IDwellDef.html","topicHref":"Hi.NcParsers.Keywords.IDwellDef.html","topicUid":"Hi.NcParsers.Keywords.IDwellDef","type":"Interface"},{"name":"IFeedrateDef","href":"Hi.NcParsers.Keywords.IFeedrateDef.html","topicHref":"Hi.NcParsers.Keywords.IFeedrateDef.html","topicUid":"Hi.NcParsers.Keywords.IFeedrateDef","type":"Interface"},{"name":"IFlagsDef","href":"Hi.NcParsers.Keywords.IFlagsDef.html","topicHref":"Hi.NcParsers.Keywords.IFlagsDef.html","topicUid":"Hi.NcParsers.Keywords.IFlagsDef","type":"Interface"},{"name":"IMachineCoordinateDef","href":"Hi.NcParsers.Keywords.IMachineCoordinateDef.html","topicHref":"Hi.NcParsers.Keywords.IMachineCoordinateDef.html","topicUid":"Hi.NcParsers.Keywords.IMachineCoordinateDef","type":"Interface"},{"name":"IMotionDef","href":"Hi.NcParsers.Keywords.IMotionDef.html","topicHref":"Hi.NcParsers.Keywords.IMotionDef.html","topicUid":"Hi.NcParsers.Keywords.IMotionDef","type":"Interface"},{"name":"IParsingDef","href":"Hi.NcParsers.Keywords.IParsingDef.html","topicHref":"Hi.NcParsers.Keywords.IParsingDef.html","topicUid":"Hi.NcParsers.Keywords.IParsingDef","type":"Interface"},{"name":"IPositioningModeDef","href":"Hi.NcParsers.Keywords.IPositioningModeDef.html","topicHref":"Hi.NcParsers.Keywords.IPositioningModeDef.html","topicUid":"Hi.NcParsers.Keywords.IPositioningModeDef","type":"Interface"},{"name":"IProgramXyzDef","href":"Hi.NcParsers.Keywords.IProgramXyzDef.html","topicHref":"Hi.NcParsers.Keywords.IProgramXyzDef.html","topicUid":"Hi.NcParsers.Keywords.IProgramXyzDef","type":"Interface"},{"name":"ISpindleControlDef","href":"Hi.NcParsers.Keywords.ISpindleControlDef.html","topicHref":"Hi.NcParsers.Keywords.ISpindleControlDef.html","topicUid":"Hi.NcParsers.Keywords.ISpindleControlDef","type":"Interface"},{"name":"ISpindleOrientationDef","href":"Hi.NcParsers.Keywords.ISpindleOrientationDef.html","topicHref":"Hi.NcParsers.Keywords.ISpindleOrientationDef.html","topicUid":"Hi.NcParsers.Keywords.ISpindleOrientationDef","type":"Interface"},{"name":"ISpindleSpeedDef","href":"Hi.NcParsers.Keywords.ISpindleSpeedDef.html","topicHref":"Hi.NcParsers.Keywords.ISpindleSpeedDef.html","topicUid":"Hi.NcParsers.Keywords.ISpindleSpeedDef","type":"Interface"},{"name":"ITiltTransformDef","href":"Hi.NcParsers.Keywords.ITiltTransformDef.html","topicHref":"Hi.NcParsers.Keywords.ITiltTransformDef.html","topicUid":"Hi.NcParsers.Keywords.ITiltTransformDef","type":"Interface"},{"name":"IToolHeightCompensationDef","href":"Hi.NcParsers.Keywords.IToolHeightCompensationDef.html","topicHref":"Hi.NcParsers.Keywords.IToolHeightCompensationDef.html","topicUid":"Hi.NcParsers.Keywords.IToolHeightCompensationDef","type":"Interface"},{"name":"ITransformationDef","href":"Hi.NcParsers.Keywords.ITransformationDef.html","topicHref":"Hi.NcParsers.Keywords.ITransformationDef.html","topicUid":"Hi.NcParsers.Keywords.ITransformationDef","type":"Interface"},{"name":"IUnparsedTextDef","href":"Hi.NcParsers.Keywords.IUnparsedTextDef.html","topicHref":"Hi.NcParsers.Keywords.IUnparsedTextDef.html","topicUid":"Hi.NcParsers.Keywords.IUnparsedTextDef","type":"Interface"},{"name":"IndexNote","href":"Hi.NcParsers.Keywords.IndexNote.html","topicHref":"Hi.NcParsers.Keywords.IndexNote.html","topicUid":"Hi.NcParsers.Keywords.IndexNote","type":"Class"},{"name":"LocalCoordinateOffset","href":"Hi.NcParsers.Keywords.LocalCoordinateOffset.html","topicHref":"Hi.NcParsers.Keywords.LocalCoordinateOffset.html","topicUid":"Hi.NcParsers.Keywords.LocalCoordinateOffset","type":"Class"},{"name":"Motion","href":"Hi.NcParsers.Keywords.Motion.html","topicHref":"Hi.NcParsers.Keywords.Motion.html","topicUid":"Hi.NcParsers.Keywords.Motion","type":"Class"},{"name":"SpindleControl","href":"Hi.NcParsers.Keywords.SpindleControl.html","topicHref":"Hi.NcParsers.Keywords.SpindleControl.html","topicUid":"Hi.NcParsers.Keywords.SpindleControl","type":"Class"},{"name":"SpindleOrientation","href":"Hi.NcParsers.Keywords.SpindleOrientation.html","topicHref":"Hi.NcParsers.Keywords.SpindleOrientation.html","topicUid":"Hi.NcParsers.Keywords.SpindleOrientation","type":"Class"},{"name":"SpindleSpeed","href":"Hi.NcParsers.Keywords.SpindleSpeed.html","topicHref":"Hi.NcParsers.Keywords.SpindleSpeed.html","topicUid":"Hi.NcParsers.Keywords.SpindleSpeed","type":"Class"},{"name":"TiltTransform","href":"Hi.NcParsers.Keywords.TiltTransform.html","topicHref":"Hi.NcParsers.Keywords.TiltTransform.html","topicUid":"Hi.NcParsers.Keywords.TiltTransform","type":"Class"},{"name":"ToolHeightCompensation","href":"Hi.NcParsers.Keywords.ToolHeightCompensation.html","topicHref":"Hi.NcParsers.Keywords.ToolHeightCompensation.html","topicUid":"Hi.NcParsers.Keywords.ToolHeightCompensation","type":"Class"}]},{"name":"Hi.NcParsers.Keywords.Fanuc","href":"Hi.NcParsers.Keywords.Fanuc.html","topicHref":"Hi.NcParsers.Keywords.Fanuc.html","topicUid":"Hi.NcParsers.Keywords.Fanuc","type":"Namespace","items":[{"name":"FanucKeywords","href":"Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html","topicHref":"Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html","topicUid":"Hi.NcParsers.Keywords.Fanuc.FanucKeywords","type":"Class"}]},{"name":"Hi.NcParsers.Keywords.Generic","href":"Hi.NcParsers.Keywords.Generic.html","topicHref":"Hi.NcParsers.Keywords.Generic.html","topicUid":"Hi.NcParsers.Keywords.Generic","type":"Namespace","items":[{"name":"IsoKeywords","href":"Hi.NcParsers.Keywords.Generic.IsoKeywords.html","topicHref":"Hi.NcParsers.Keywords.Generic.IsoKeywords.html","topicUid":"Hi.NcParsers.Keywords.Generic.IsoKeywords","type":"Class"},{"name":"MotionForm","href":"Hi.NcParsers.Keywords.Generic.MotionForm.html","topicHref":"Hi.NcParsers.Keywords.Generic.MotionForm.html","topicUid":"Hi.NcParsers.Keywords.Generic.MotionForm","type":"Class"}]},{"name":"Hi.NcParsers.Keywords.Heidenhain","href":"Hi.NcParsers.Keywords.Heidenhain.html","topicHref":"Hi.NcParsers.Keywords.Heidenhain.html","topicUid":"Hi.NcParsers.Keywords.Heidenhain","type":"Namespace","items":[{"name":"ICyclDef","href":"Hi.NcParsers.Keywords.Heidenhain.ICyclDef.html","topicHref":"Hi.NcParsers.Keywords.Heidenhain.ICyclDef.html","topicUid":"Hi.NcParsers.Keywords.Heidenhain.ICyclDef","type":"Interface"}]},{"name":"Hi.NcParsers.Keywords.Siemens","href":"Hi.NcParsers.Keywords.Siemens.html","topicHref":"Hi.NcParsers.Keywords.Siemens.html","topicUid":"Hi.NcParsers.Keywords.Siemens","type":"Namespace","items":[{"name":"SiemensKeywords","href":"Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html","topicHref":"Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html","topicUid":"Hi.NcParsers.Keywords.Siemens.SiemensKeywords","type":"Class"}]},{"name":"Hi.NcParsers.LogicSyntaxs","href":"Hi.NcParsers.LogicSyntaxs.html","topicHref":"Hi.NcParsers.LogicSyntaxs.html","topicUid":"Hi.NcParsers.LogicSyntaxs","type":"Namespace","items":[{"name":"BackBoringSyntax","href":"Hi.NcParsers.LogicSyntaxs.BackBoringSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.BackBoringSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.BackBoringSyntax","type":"Class"},{"name":"BoringCycleSyntax","href":"Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax","type":"Class"},{"name":"CannedCycleResolveSyntax","href":"Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax","type":"Class"},{"name":"CircularMotionSyntax","href":"Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax","type":"Class"},{"name":"CoordinateOffsetUtil","href":"Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html","topicHref":"Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html","topicUid":"Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil","type":"Class"},{"name":"DrillingCycleSyntax","href":"Hi.NcParsers.LogicSyntaxs.DrillingCycleSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.DrillingCycleSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.DrillingCycleSyntax","type":"Class"},{"name":"FeedrateSyntax","href":"Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.FeedrateSyntax","type":"Class"},{"name":"FineBoringSyntax","href":"Hi.NcParsers.LogicSyntaxs.FineBoringSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.FineBoringSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.FineBoringSyntax","type":"Class"},{"name":"G53p1RotaryPositionSyntax","href":"Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax","type":"Class"},{"name":"HighSpeedPeckCycleSyntax","href":"Hi.NcParsers.LogicSyntaxs.HighSpeedPeckCycleSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.HighSpeedPeckCycleSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.HighSpeedPeckCycleSyntax","type":"Class"},{"name":"IncrementalResolveSyntax","href":"Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax","type":"Class"},{"name":"IsoCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax","type":"Class"},{"name":"IsoG68RotationSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax","type":"Class"},{"name":"IsoG68p2TiltSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax","type":"Class"},{"name":"IsoLocalCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax","type":"Class"},{"name":"LinearMotionSyntax","href":"Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax","type":"Class"},{"name":"MachineCoordSelectSyntax","href":"Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax","type":"Class"},{"name":"McAbcCyclicPathSyntax","href":"Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax","type":"Class"},{"name":"McAbcSyntax","href":"Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.McAbcSyntax","type":"Class"},{"name":"McXyzSyntax","href":"Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.McXyzSyntax","type":"Class"},{"name":"PeckDrillingCycleSyntax","href":"Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax","type":"Class"},{"name":"PositioningModeSyntax","href":"Hi.NcParsers.LogicSyntaxs.PositioningModeSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.PositioningModeSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.PositioningModeSyntax","type":"Class"},{"name":"ProgramXyzSyntax","href":"Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax","type":"Class"},{"name":"ProgramXyzUtil","href":"Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil","type":"Class"},{"name":"ReferenceReturnSyntax","href":"Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax","type":"Class"},{"name":"RotaryAxisUtil","href":"Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html","topicHref":"Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html","topicUid":"Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil","type":"Class"},{"name":"SpindleSpeedSyntax","href":"Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax","type":"Class"},{"name":"TappingCycleSyntax","href":"Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax","type":"Class"},{"name":"TiltTransformUtil","href":"Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html","topicHref":"Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html","topicUid":"Hi.NcParsers.LogicSyntaxs.TiltTransformUtil","type":"Class"},{"name":"ToolHeightOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax","type":"Class"}]},{"name":"Hi.NcParsers.LogicSyntaxs.Heidenhain","href":"Hi.NcParsers.LogicSyntaxs.Heidenhain.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Heidenhain.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Heidenhain","type":"Namespace","items":[{"name":"HeidenhainCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax","type":"Class"}]},{"name":"Hi.NcParsers.LogicSyntaxs.Siemens","href":"Hi.NcParsers.LogicSyntaxs.Siemens.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Siemens.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Siemens","type":"Namespace","items":[{"name":"SiemensCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs","href":"Hi.NcParsers.ParsingSyntaxs.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.html","topicUid":"Hi.NcParsers.ParsingSyntaxs","type":"Namespace","items":[{"name":"CsScriptSyntax","href":"Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax","type":"Class"},{"name":"FlagSyntax","href":"Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.FlagSyntax","type":"Class"},{"name":"FloatTagValueSyntax","href":"Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax","type":"Class"},{"name":"HeadIndexSyntax","href":"Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax","type":"Class"},{"name":"IntegerTagValueSyntax","href":"Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax","type":"Class"},{"name":"NamedVarAssignmentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax","type":"Class"},{"name":"NumberedFlagSyntax","href":"Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax","type":"Class"},{"name":"ParameterizedFlagSyntax","href":"Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax","type":"Class"},{"name":"ShrinkIfNoDecimalPointSyntax","href":"Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax","type":"Class"},{"name":"TagAssignmentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax","type":"Class"},{"name":"TagValueSyntax","href":"Hi.NcParsers.ParsingSyntaxs.TagValueSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.TagValueSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.TagValueSyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs","href":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs","type":"Namespace","items":[{"name":"HeadPercentCommentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.HeadPercentCommentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.HeadPercentCommentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.HeadPercentCommentSyntax","type":"Class"},{"name":"QuoteCommentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax","type":"Class"},{"name":"TailCommentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs.Heidenhain","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain","type":"Namespace","items":[{"name":"HeidenhainBlkFormSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax","type":"Class"},{"name":"HeidenhainCallSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax","type":"Class"},{"name":"HeidenhainCyclDefSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax","type":"Class"},{"name":"HeidenhainFnAssignmentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax","type":"Class"},{"name":"HeidenhainLSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax","type":"Class"},{"name":"HeidenhainLblSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax","type":"Class"},{"name":"HeidenhainPlaneSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax","type":"Class"},{"name":"HeidenhainProgramSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax","type":"Class"},{"name":"HeidenhainToolCallSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs","type":"Namespace","items":[{"name":"HeidenhainDatumSettingSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax","type":"Class"},{"name":"HeidenhainDatumShiftSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax","type":"Class"}]},{"name":"Hi.NcParsers.Segmenters","href":"Hi.NcParsers.Segmenters.html","topicHref":"Hi.NcParsers.Segmenters.html","topicUid":"Hi.NcParsers.Segmenters","type":"Namespace","items":[{"name":"HeidenhainSegmenter","href":"Hi.NcParsers.Segmenters.HeidenhainSegmenter.html","topicHref":"Hi.NcParsers.Segmenters.HeidenhainSegmenter.html","topicUid":"Hi.NcParsers.Segmenters.HeidenhainSegmenter","type":"Class"},{"name":"ISegmenter","href":"Hi.NcParsers.Segmenters.ISegmenter.html","topicHref":"Hi.NcParsers.Segmenters.ISegmenter.html","topicUid":"Hi.NcParsers.Segmenters.ISegmenter","type":"Interface"},{"name":"SingleLineSegmenter","href":"Hi.NcParsers.Segmenters.SingleLineSegmenter.html","topicHref":"Hi.NcParsers.Segmenters.SingleLineSegmenter.html","topicUid":"Hi.NcParsers.Segmenters.SingleLineSegmenter","type":"Class"}]},{"name":"Hi.NcParsers.Semantics","href":"Hi.NcParsers.Semantics.html","topicHref":"Hi.NcParsers.Semantics.html","topicUid":"Hi.NcParsers.Semantics","type":"Namespace","items":[{"name":"CompoundMotionSemantic","href":"Hi.NcParsers.Semantics.CompoundMotionSemantic.html","topicHref":"Hi.NcParsers.Semantics.CompoundMotionSemantic.html","topicUid":"Hi.NcParsers.Semantics.CompoundMotionSemantic","type":"Class"},{"name":"INcSemantic","href":"Hi.NcParsers.Semantics.INcSemantic.html","topicHref":"Hi.NcParsers.Semantics.INcSemantic.html","topicUid":"Hi.NcParsers.Semantics.INcSemantic","type":"Interface"},{"name":"MachineCoordinateStepSemantic","href":"Hi.NcParsers.Semantics.MachineCoordinateStepSemantic.html","topicHref":"Hi.NcParsers.Semantics.MachineCoordinateStepSemantic.html","topicUid":"Hi.NcParsers.Semantics.MachineCoordinateStepSemantic","type":"Class"},{"name":"McArcMotionSemantic","href":"Hi.NcParsers.Semantics.McArcMotionSemantic.html","topicHref":"Hi.NcParsers.Semantics.McArcMotionSemantic.html","topicUid":"Hi.NcParsers.Semantics.McArcMotionSemantic","type":"Class"},{"name":"McLinearMotionSemantic","href":"Hi.NcParsers.Semantics.McLinearMotionSemantic.html","topicHref":"Hi.NcParsers.Semantics.McLinearMotionSemantic.html","topicUid":"Hi.NcParsers.Semantics.McLinearMotionSemantic","type":"Class"},{"name":"SpindleSpeedSemantic","href":"Hi.NcParsers.Semantics.SpindleSpeedSemantic.html","topicHref":"Hi.NcParsers.Semantics.SpindleSpeedSemantic.html","topicUid":"Hi.NcParsers.Semantics.SpindleSpeedSemantic","type":"Class"}]},{"name":"Hi.NcParsers.Syntaxs","href":"Hi.NcParsers.Syntaxs.html","topicHref":"Hi.NcParsers.Syntaxs.html","topicUid":"Hi.NcParsers.Syntaxs","type":"Namespace","items":[{"name":"BundleSyntax","href":"Hi.NcParsers.Syntaxs.BundleSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.BundleSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.BundleSyntax","type":"Class"},{"name":"CleanupSyntax","href":"Hi.NcParsers.Syntaxs.CleanupSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.CleanupSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.CleanupSyntax","type":"Class"},{"name":"FanucSyntaxUtil","href":"Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.FanucSyntaxUtil","type":"Class"},{"name":"GenericSyntaxKit","href":"Hi.NcParsers.Syntaxs.GenericSyntaxKit.html","topicHref":"Hi.NcParsers.Syntaxs.GenericSyntaxKit.html","topicUid":"Hi.NcParsers.Syntaxs.GenericSyntaxKit","type":"Class"},{"name":"HeidenhainSyntaxUtil","href":"Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil","type":"Class"},{"name":"IExpandingNcSyntax","href":"Hi.NcParsers.Syntaxs.IExpandingNcSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.IExpandingNcSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.IExpandingNcSyntax","type":"Interface"},{"name":"INcSyntax","href":"Hi.NcParsers.Syntaxs.INcSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.INcSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.INcSyntax","type":"Interface"},{"name":"ISituNcSyntax","href":"Hi.NcParsers.Syntaxs.ISituNcSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.ISituNcSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.ISituNcSyntax","type":"Interface"},{"name":"MazakSyntaxUtil","href":"Hi.NcParsers.Syntaxs.MazakSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.MazakSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.MazakSyntaxUtil","type":"Class"},{"name":"NcSyntaxUtil","href":"Hi.NcParsers.Syntaxs.NcSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.NcSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.NcSyntaxUtil","type":"Class"},{"name":"SiemensSyntaxUtil","href":"Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.SiemensSyntaxUtil","type":"Class"},{"name":"SyntaxPiece","href":"Hi.NcParsers.Syntaxs.SyntaxPiece.html","topicHref":"Hi.NcParsers.Syntaxs.SyntaxPiece.html","topicUid":"Hi.NcParsers.Syntaxs.SyntaxPiece","type":"Class"},{"name":"SyntecSyntaxUtil","href":"Hi.NcParsers.Syntaxs.SyntecSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.SyntecSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.SyntecSyntaxUtil","type":"Class"},{"name":"TagValue","href":"Hi.NcParsers.Syntaxs.TagValue.html","topicHref":"Hi.NcParsers.Syntaxs.TagValue.html","topicUid":"Hi.NcParsers.Syntaxs.TagValue","type":"Class"},{"name":"TransformationUtil","href":"Hi.NcParsers.Syntaxs.TransformationUtil.html","topicHref":"Hi.NcParsers.Syntaxs.TransformationUtil.html","topicUid":"Hi.NcParsers.Syntaxs.TransformationUtil","type":"Class"}]},{"name":"Hi.Numerical","href":"Hi.Numerical.html","topicHref":"Hi.Numerical.html","topicUid":"Hi.Numerical","type":"Namespace","items":[{"name":"CncBrand","href":"Hi.Numerical.CncBrand.html","topicHref":"Hi.Numerical.CncBrand.html","topicUid":"Hi.Numerical.CncBrand","type":"Enum"},{"name":"CommentMark","href":"Hi.Numerical.CommentMark.html","topicHref":"Hi.Numerical.CommentMark.html","topicUid":"Hi.Numerical.CommentMark","type":"Enum"},{"name":"CoordinateInterpolationMode","href":"Hi.Numerical.CoordinateInterpolationMode.html","topicHref":"Hi.Numerical.CoordinateInterpolationMode.html","topicUid":"Hi.Numerical.CoordinateInterpolationMode","type":"Enum"},{"name":"FlexDictionaryUtil","href":"Hi.Numerical.FlexDictionaryUtil.html","topicHref":"Hi.Numerical.FlexDictionaryUtil.html","topicUid":"Hi.Numerical.FlexDictionaryUtil","type":"Class"},{"name":"HardNcComment","href":"Hi.Numerical.HardNcComment.html","topicHref":"Hi.Numerical.HardNcComment.html","topicUid":"Hi.Numerical.HardNcComment","type":"Class"},{"name":"HardNcEnv","href":"Hi.Numerical.HardNcEnv.html","topicHref":"Hi.Numerical.HardNcEnv.html","topicUid":"Hi.Numerical.HardNcEnv","type":"Class"},{"name":"HardNcLine","href":"Hi.Numerical.HardNcLine.html","topicHref":"Hi.Numerical.HardNcLine.html","topicUid":"Hi.Numerical.HardNcLine","type":"Class"},{"name":"HardNcUtil","href":"Hi.Numerical.HardNcUtil.html","topicHref":"Hi.Numerical.HardNcUtil.html","topicUid":"Hi.Numerical.HardNcUtil","type":"Class"},{"name":"HeidenhainCoordinateEntryDisplayee","href":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee.html","topicHref":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee.html","topicUid":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee","type":"Class"},{"name":"IControlRunner","href":"Hi.Numerical.IControlRunner.html","topicHref":"Hi.Numerical.IControlRunner.html","topicUid":"Hi.Numerical.IControlRunner","type":"Interface"},{"name":"IFlexDictionaryHost","href":"Hi.Numerical.IFlexDictionaryHost-1.html","topicHref":"Hi.Numerical.IFlexDictionaryHost-1.html","topicUid":"Hi.Numerical.IFlexDictionaryHost`1","type":"Interface"},{"name":"IGetFeedrate","href":"Hi.Numerical.IGetFeedrate.html","topicHref":"Hi.Numerical.IGetFeedrate.html","topicUid":"Hi.Numerical.IGetFeedrate","type":"Interface"},{"name":"IGetSpindleSpeed","href":"Hi.Numerical.IGetSpindleSpeed.html","topicHref":"Hi.Numerical.IGetSpindleSpeed.html","topicUid":"Hi.Numerical.IGetSpindleSpeed","type":"Interface"},{"name":"ISetFeedrate","href":"Hi.Numerical.ISetFeedrate.html","topicHref":"Hi.Numerical.ISetFeedrate.html","topicUid":"Hi.Numerical.ISetFeedrate","type":"Interface"},{"name":"ISetSpindleSpeed","href":"Hi.Numerical.ISetSpindleSpeed.html","topicHref":"Hi.Numerical.ISetSpindleSpeed.html","topicUid":"Hi.Numerical.ISetSpindleSpeed","type":"Interface"},{"name":"IsoCoordinateEntryDisplayee","href":"Hi.Numerical.IsoCoordinateEntryDisplayee.html","topicHref":"Hi.Numerical.IsoCoordinateEntryDisplayee.html","topicUid":"Hi.Numerical.IsoCoordinateEntryDisplayee","type":"Class"},{"name":"MechNcUtil","href":"Hi.Numerical.MechNcUtil.html","topicHref":"Hi.Numerical.MechNcUtil.html","topicUid":"Hi.Numerical.MechNcUtil","type":"Class"},{"name":"MillingToolOffsetTable","href":"Hi.Numerical.MillingToolOffsetTable.html","topicHref":"Hi.Numerical.MillingToolOffsetTable.html","topicUid":"Hi.Numerical.MillingToolOffsetTable","type":"Class"},{"name":"MillingToolOffsetTableRow","href":"Hi.Numerical.MillingToolOffsetTableRow.html","topicHref":"Hi.Numerical.MillingToolOffsetTableRow.html","topicUid":"Hi.Numerical.MillingToolOffsetTableRow","type":"Class"},{"name":"NcFlag","href":"Hi.Numerical.NcFlag.html","topicHref":"Hi.Numerical.NcFlag.html","topicUid":"Hi.Numerical.NcFlag","type":"Enum"},{"name":"NcFlagUtil","href":"Hi.Numerical.NcFlagUtil.html","topicHref":"Hi.Numerical.NcFlagUtil.html","topicUid":"Hi.Numerical.NcFlagUtil","type":"Class"},{"name":"NcGroup00","href":"Hi.Numerical.NcGroup00.html","topicHref":"Hi.Numerical.NcGroup00.html","topicUid":"Hi.Numerical.NcGroup00","type":"Enum"},{"name":"NcGroup01","href":"Hi.Numerical.NcGroup01.html","topicHref":"Hi.Numerical.NcGroup01.html","topicUid":"Hi.Numerical.NcGroup01","type":"Enum"},{"name":"NcGroup02","href":"Hi.Numerical.NcGroup02.html","topicHref":"Hi.Numerical.NcGroup02.html","topicUid":"Hi.Numerical.NcGroup02","type":"Enum"},{"name":"NcGroup03","href":"Hi.Numerical.NcGroup03.html","topicHref":"Hi.Numerical.NcGroup03.html","topicUid":"Hi.Numerical.NcGroup03","type":"Enum"},{"name":"NcGroup05","href":"Hi.Numerical.NcGroup05.html","topicHref":"Hi.Numerical.NcGroup05.html","topicUid":"Hi.Numerical.NcGroup05","type":"Enum"},{"name":"NcGroup06","href":"Hi.Numerical.NcGroup06.html","topicHref":"Hi.Numerical.NcGroup06.html","topicUid":"Hi.Numerical.NcGroup06","type":"Enum"},{"name":"NcGroup07","href":"Hi.Numerical.NcGroup07.html","topicHref":"Hi.Numerical.NcGroup07.html","topicUid":"Hi.Numerical.NcGroup07","type":"Enum"},{"name":"NcGroup08","href":"Hi.Numerical.NcGroup08.html","topicHref":"Hi.Numerical.NcGroup08.html","topicUid":"Hi.Numerical.NcGroup08","type":"Enum"},{"name":"NcGroup09","href":"Hi.Numerical.NcGroup09.html","topicHref":"Hi.Numerical.NcGroup09.html","topicUid":"Hi.Numerical.NcGroup09","type":"Enum"},{"name":"NcGroup10","href":"Hi.Numerical.NcGroup10.html","topicHref":"Hi.Numerical.NcGroup10.html","topicUid":"Hi.Numerical.NcGroup10","type":"Enum"},{"name":"NcGroup13","href":"Hi.Numerical.NcGroup13.html","topicHref":"Hi.Numerical.NcGroup13.html","topicUid":"Hi.Numerical.NcGroup13","type":"Enum"},{"name":"NcGroup14","href":"Hi.Numerical.NcGroup14.html","topicHref":"Hi.Numerical.NcGroup14.html","topicUid":"Hi.Numerical.NcGroup14","type":"Enum"},{"name":"NcGroup15","href":"Hi.Numerical.NcGroup15.html","topicHref":"Hi.Numerical.NcGroup15.html","topicUid":"Hi.Numerical.NcGroup15","type":"Enum"},{"name":"NcGroup16","href":"Hi.Numerical.NcGroup16.html","topicHref":"Hi.Numerical.NcGroup16.html","topicUid":"Hi.Numerical.NcGroup16","type":"Enum"},{"name":"NcGroup21","href":"Hi.Numerical.NcGroup21.html","topicHref":"Hi.Numerical.NcGroup21.html","topicUid":"Hi.Numerical.NcGroup21","type":"Enum"},{"name":"NcGroupAttribute","href":"Hi.Numerical.NcGroupAttribute.html","topicHref":"Hi.Numerical.NcGroupAttribute.html","topicUid":"Hi.Numerical.NcGroupAttribute","type":"Class"},{"name":"NcGroupHeidenhainM107M108","href":"Hi.Numerical.NcGroupHeidenhainM107M108.html","topicHref":"Hi.Numerical.NcGroupHeidenhainM107M108.html","topicUid":"Hi.Numerical.NcGroupHeidenhainM107M108","type":"Enum"},{"name":"NcGroupHeidenhainPlane","href":"Hi.Numerical.NcGroupHeidenhainPlane.html","topicHref":"Hi.Numerical.NcGroupHeidenhainPlane.html","topicUid":"Hi.Numerical.NcGroupHeidenhainPlane","type":"Enum"},{"name":"NcGroupHeidenhainShortestRotaryPath","href":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath.html","topicHref":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath.html","topicUid":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath","type":"Enum"},{"name":"NcGroupSpindleRotation","href":"Hi.Numerical.NcGroupSpindleRotation.html","topicHref":"Hi.Numerical.NcGroupSpindleRotation.html","topicUid":"Hi.Numerical.NcGroupSpindleRotation","type":"Enum"},{"name":"NcLifeCycleAttribute","href":"Hi.Numerical.NcLifeCycleAttribute.html","topicHref":"Hi.Numerical.NcLifeCycleAttribute.html","topicUid":"Hi.Numerical.NcLifeCycleAttribute","type":"Class"},{"name":"NcLifeCycleMode","href":"Hi.Numerical.NcLifeCycleMode.html","topicHref":"Hi.Numerical.NcLifeCycleMode.html","topicUid":"Hi.Numerical.NcLifeCycleMode","type":"Enum"},{"name":"NcNameAttribute","href":"Hi.Numerical.NcNameAttribute.html","topicHref":"Hi.Numerical.NcNameAttribute.html","topicUid":"Hi.Numerical.NcNameAttribute","type":"Class"},{"name":"NcNoteCache","href":"Hi.Numerical.NcNoteCache.html","topicHref":"Hi.Numerical.NcNoteCache.html","topicUid":"Hi.Numerical.NcNoteCache","type":"Class"},{"name":"NcProc","href":"Hi.Numerical.NcProc.html","topicHref":"Hi.Numerical.NcProc.html","topicUid":"Hi.Numerical.NcProc","type":"Class"},{"name":"NcWarningSceneEnum","href":"Hi.Numerical.NcWarningSceneEnum.html","topicHref":"Hi.Numerical.NcWarningSceneEnum.html","topicUid":"Hi.Numerical.NcWarningSceneEnum","type":"Enum"},{"name":"NumericUtil","href":"Hi.Numerical.NumericUtil.html","topicHref":"Hi.Numerical.NumericUtil.html","topicUid":"Hi.Numerical.NumericUtil","type":"Class"},{"name":"PolarEntry","href":"Hi.Numerical.PolarEntry.html","topicHref":"Hi.Numerical.PolarEntry.html","topicUid":"Hi.Numerical.PolarEntry","type":"Class"},{"name":"RadiusCompensationBuf","href":"Hi.Numerical.RadiusCompensationBuf.html","topicHref":"Hi.Numerical.RadiusCompensationBuf.html","topicUid":"Hi.Numerical.RadiusCompensationBuf","type":"Class"},{"name":"SourcedActEntry","href":"Hi.Numerical.SourcedActEntry.html","topicHref":"Hi.Numerical.SourcedActEntry.html","topicUid":"Hi.Numerical.SourcedActEntry","type":"Class"},{"name":"SpindleDirection","href":"Hi.Numerical.SpindleDirection.html","topicHref":"Hi.Numerical.SpindleDirection.html","topicUid":"Hi.Numerical.SpindleDirection","type":"Enum"},{"name":"SubStringKit","href":"Hi.Numerical.SubStringKit.html","topicHref":"Hi.Numerical.SubStringKit.html","topicUid":"Hi.Numerical.SubStringKit","type":"Class"},{"name":"SubStringKit.ActivationMode","href":"Hi.Numerical.SubStringKit.ActivationMode.html","topicHref":"Hi.Numerical.SubStringKit.ActivationMode.html","topicUid":"Hi.Numerical.SubStringKit.ActivationMode","type":"Enum"},{"name":"ToolConfigNotFoundException","href":"Hi.Numerical.ToolConfigNotFoundException.html","topicHref":"Hi.Numerical.ToolConfigNotFoundException.html","topicUid":"Hi.Numerical.ToolConfigNotFoundException","type":"Class"}]},{"name":"Hi.Numerical.Acts","href":"Hi.Numerical.Acts.html","topicHref":"Hi.Numerical.Acts.html","topicUid":"Hi.Numerical.Acts","type":"Namespace","items":[{"name":"ActActualTime","href":"Hi.Numerical.Acts.ActActualTime.html","topicHref":"Hi.Numerical.Acts.ActActualTime.html","topicUid":"Hi.Numerical.Acts.ActActualTime","type":"Class"},{"name":"ActClArc","href":"Hi.Numerical.Acts.ActClArc.html","topicHref":"Hi.Numerical.Acts.ActClArc.html","topicUid":"Hi.Numerical.Acts.ActClArc","type":"Class"},{"name":"ActClDerivedMcXyzabcContour","href":"Hi.Numerical.Acts.ActClDerivedMcXyzabcContour.html","topicHref":"Hi.Numerical.Acts.ActClDerivedMcXyzabcContour.html","topicUid":"Hi.Numerical.Acts.ActClDerivedMcXyzabcContour","type":"Class"},{"name":"ActClLinear","href":"Hi.Numerical.Acts.ActClLinear.html","topicHref":"Hi.Numerical.Acts.ActClLinear.html","topicUid":"Hi.Numerical.Acts.ActClLinear","type":"Class"},{"name":"ActClStep","href":"Hi.Numerical.Acts.ActClStep.html","topicHref":"Hi.Numerical.Acts.ActClStep.html","topicUid":"Hi.Numerical.Acts.ActClStep","type":"Class"},{"name":"ActClTeleport","href":"Hi.Numerical.Acts.ActClTeleport.html","topicHref":"Hi.Numerical.Acts.ActClTeleport.html","topicUid":"Hi.Numerical.Acts.ActClTeleport","type":"Class"},{"name":"ActCooling","href":"Hi.Numerical.Acts.ActCooling.html","topicHref":"Hi.Numerical.Acts.ActCooling.html","topicUid":"Hi.Numerical.Acts.ActCooling","type":"Class"},{"name":"ActData","href":"Hi.Numerical.Acts.ActData.html","topicHref":"Hi.Numerical.Acts.ActData.html","topicUid":"Hi.Numerical.Acts.ActData","type":"Class"},{"name":"ActDelay","href":"Hi.Numerical.Acts.ActDelay.html","topicHref":"Hi.Numerical.Acts.ActDelay.html","topicUid":"Hi.Numerical.Acts.ActDelay","type":"Class"},{"name":"ActFeedrate","href":"Hi.Numerical.Acts.ActFeedrate.html","topicHref":"Hi.Numerical.Acts.ActFeedrate.html","topicUid":"Hi.Numerical.Acts.ActFeedrate","type":"Class"},{"name":"ActHiddenStateChanged","href":"Hi.Numerical.Acts.ActHiddenStateChanged.html","topicHref":"Hi.Numerical.Acts.ActHiddenStateChanged.html","topicUid":"Hi.Numerical.Acts.ActHiddenStateChanged","type":"Class"},{"name":"ActIntentionalSkip","href":"Hi.Numerical.Acts.ActIntentionalSkip.html","topicHref":"Hi.Numerical.Acts.ActIntentionalSkip.html","topicUid":"Hi.Numerical.Acts.ActIntentionalSkip","type":"Class"},{"name":"ActLineBegin","href":"Hi.Numerical.Acts.ActLineBegin.html","topicHref":"Hi.Numerical.Acts.ActLineBegin.html","topicUid":"Hi.Numerical.Acts.ActLineBegin","type":"Class"},{"name":"ActLineCsScript","href":"Hi.Numerical.Acts.ActLineCsScript.html","topicHref":"Hi.Numerical.Acts.ActLineCsScript.html","topicUid":"Hi.Numerical.Acts.ActLineCsScript","type":"Class"},{"name":"ActLineEnd","href":"Hi.Numerical.Acts.ActLineEnd.html","topicHref":"Hi.Numerical.Acts.ActLineEnd.html","topicUid":"Hi.Numerical.Acts.ActLineEnd","type":"Class"},{"name":"ActMcPolarLinearContour","href":"Hi.Numerical.Acts.ActMcPolarLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcPolarLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcPolarLinearContour","type":"Class"},{"name":"ActMcXyzLinearContour","href":"Hi.Numerical.Acts.ActMcXyzLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcXyzLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcXyzLinearContour","type":"Class"},{"name":"ActMcXyzSpiralContour","href":"Hi.Numerical.Acts.ActMcXyzSpiralContour.html","topicHref":"Hi.Numerical.Acts.ActMcXyzSpiralContour.html","topicUid":"Hi.Numerical.Acts.ActMcXyzSpiralContour","type":"Class"},{"name":"ActMcXyzStep","href":"Hi.Numerical.Acts.ActMcXyzStep.html","topicHref":"Hi.Numerical.Acts.ActMcXyzStep.html","topicUid":"Hi.Numerical.Acts.ActMcXyzStep","type":"Class"},{"name":"ActMcXyzabcLinearContour","href":"Hi.Numerical.Acts.ActMcXyzabcLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcXyzabcLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcXyzabcLinearContour","type":"Class"},{"name":"ActMcXyzabcStep","href":"Hi.Numerical.Acts.ActMcXyzabcStep.html","topicHref":"Hi.Numerical.Acts.ActMcXyzabcStep.html","topicUid":"Hi.Numerical.Acts.ActMcXyzabcStep","type":"Class"},{"name":"ActRapid","href":"Hi.Numerical.Acts.ActRapid.html","topicHref":"Hi.Numerical.Acts.ActRapid.html","topicUid":"Hi.Numerical.Acts.ActRapid","type":"Class"},{"name":"ActSpindleDirection","href":"Hi.Numerical.Acts.ActSpindleDirection.html","topicHref":"Hi.Numerical.Acts.ActSpindleDirection.html","topicUid":"Hi.Numerical.Acts.ActSpindleDirection","type":"Class"},{"name":"ActSpindleOrientation","href":"Hi.Numerical.Acts.ActSpindleOrientation.html","topicHref":"Hi.Numerical.Acts.ActSpindleOrientation.html","topicUid":"Hi.Numerical.Acts.ActSpindleOrientation","type":"Class"},{"name":"ActSpindleSpeed","href":"Hi.Numerical.Acts.ActSpindleSpeed.html","topicHref":"Hi.Numerical.Acts.ActSpindleSpeed.html","topicUid":"Hi.Numerical.Acts.ActSpindleSpeed","type":"Class"},{"name":"ActToolingStep","href":"Hi.Numerical.Acts.ActToolingStep.html","topicHref":"Hi.Numerical.Acts.ActToolingStep.html","topicUid":"Hi.Numerical.Acts.ActToolingStep","type":"Class"},{"name":"ActToolingTeleport","href":"Hi.Numerical.Acts.ActToolingTeleport.html","topicHref":"Hi.Numerical.Acts.ActToolingTeleport.html","topicUid":"Hi.Numerical.Acts.ActToolingTeleport","type":"Class"},{"name":"ActUnknownSkip","href":"Hi.Numerical.Acts.ActUnknownSkip.html","topicHref":"Hi.Numerical.Acts.ActUnknownSkip.html","topicUid":"Hi.Numerical.Acts.ActUnknownSkip","type":"Class"},{"name":"ActUtil","href":"Hi.Numerical.Acts.ActUtil.html","topicHref":"Hi.Numerical.Acts.ActUtil.html","topicUid":"Hi.Numerical.Acts.ActUtil","type":"Class"},{"name":"IAct","href":"Hi.Numerical.Acts.IAct.html","topicHref":"Hi.Numerical.Acts.IAct.html","topicUid":"Hi.Numerical.Acts.IAct","type":"Interface"},{"name":"IActClMove","href":"Hi.Numerical.Acts.IActClMove.html","topicHref":"Hi.Numerical.Acts.IActClMove.html","topicUid":"Hi.Numerical.Acts.IActClMove","type":"Interface"},{"name":"IActDuration","href":"Hi.Numerical.Acts.IActDuration.html","topicHref":"Hi.Numerical.Acts.IActDuration.html","topicUid":"Hi.Numerical.Acts.IActDuration","type":"Interface"},{"name":"IActMachineStep","href":"Hi.Numerical.Acts.IActMachineStep.html","topicHref":"Hi.Numerical.Acts.IActMachineStep.html","topicUid":"Hi.Numerical.Acts.IActMachineStep","type":"Interface"},{"name":"IActMcXyzContour","href":"Hi.Numerical.Acts.IActMcXyzContour.html","topicHref":"Hi.Numerical.Acts.IActMcXyzContour.html","topicUid":"Hi.Numerical.Acts.IActMcXyzContour","type":"Interface"},{"name":"IActMcXyzabcContour","href":"Hi.Numerical.Acts.IActMcXyzabcContour.html","topicHref":"Hi.Numerical.Acts.IActMcXyzabcContour.html","topicUid":"Hi.Numerical.Acts.IActMcXyzabcContour","type":"Interface"},{"name":"IActSkip","href":"Hi.Numerical.Acts.IActSkip.html","topicHref":"Hi.Numerical.Acts.IActSkip.html","topicUid":"Hi.Numerical.Acts.IActSkip","type":"Interface"},{"name":"IActTooling","href":"Hi.Numerical.Acts.IActTooling.html","topicHref":"Hi.Numerical.Acts.IActTooling.html","topicUid":"Hi.Numerical.Acts.IActTooling","type":"Interface"},{"name":"IWorkTimeAttrib","href":"Hi.Numerical.Acts.IWorkTimeAttrib.html","topicHref":"Hi.Numerical.Acts.IWorkTimeAttrib.html","topicUid":"Hi.Numerical.Acts.IWorkTimeAttrib","type":"Interface"},{"name":"IWorkTimeGetter","href":"Hi.Numerical.Acts.IWorkTimeGetter.html","topicHref":"Hi.Numerical.Acts.IWorkTimeGetter.html","topicUid":"Hi.Numerical.Acts.IWorkTimeGetter","type":"Interface"},{"name":"IWorkTimeSetter","href":"Hi.Numerical.Acts.IWorkTimeSetter.html","topicHref":"Hi.Numerical.Acts.IWorkTimeSetter.html","topicUid":"Hi.Numerical.Acts.IWorkTimeSetter","type":"Interface"},{"name":"StateActRunner","href":"Hi.Numerical.Acts.StateActRunner.html","topicHref":"Hi.Numerical.Acts.StateActRunner.html","topicUid":"Hi.Numerical.Acts.StateActRunner","type":"Class"}]},{"name":"Hi.Numerical.Args","href":"Hi.Numerical.Args.html","topicHref":"Hi.Numerical.Args.html","topicUid":"Hi.Numerical.Args","type":"Namespace","items":[{"name":"OrthogonalPlaneFlag","href":"Hi.Numerical.Args.OrthogonalPlaneFlag.html","topicHref":"Hi.Numerical.Args.OrthogonalPlaneFlag.html","topicUid":"Hi.Numerical.Args.OrthogonalPlaneFlag","type":"Enum"},{"name":"PolarModeDirEnum","href":"Hi.Numerical.Args.PolarModeDirEnum.html","topicHref":"Hi.Numerical.Args.PolarModeDirEnum.html","topicUid":"Hi.Numerical.Args.PolarModeDirEnum","type":"Enum"}]},{"name":"Hi.Numerical.FilePlayers","href":"Hi.Numerical.FilePlayers.html","topicHref":"Hi.Numerical.FilePlayers.html","topicUid":"Hi.Numerical.FilePlayers","type":"Namespace","items":[{"name":"CsvRunner","href":"Hi.Numerical.FilePlayers.CsvRunner.html","topicHref":"Hi.Numerical.FilePlayers.CsvRunner.html","topicUid":"Hi.Numerical.FilePlayers.CsvRunner","type":"Class"},{"name":"CsvRunnerConfig","href":"Hi.Numerical.FilePlayers.CsvRunnerConfig.html","topicHref":"Hi.Numerical.FilePlayers.CsvRunnerConfig.html","topicUid":"Hi.Numerical.FilePlayers.CsvRunnerConfig","type":"Class"},{"name":"HardNcRunner","href":"Hi.Numerical.FilePlayers.HardNcRunner.html","topicHref":"Hi.Numerical.FilePlayers.HardNcRunner.html","topicUid":"Hi.Numerical.FilePlayers.HardNcRunner","type":"Class"}]},{"name":"Hi.Numerical.MachiningMotionResolutionUtils","href":"Hi.Numerical.MachiningMotionResolutionUtils.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils","type":"Namespace","items":[{"name":"FeedPerCycleMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution","type":"Class"},{"name":"FeedPerToothMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution","type":"Class"},{"name":"FixedMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution","type":"Class"},{"name":"IMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution","type":"Interface"}]},{"name":"Hi.Numerical.NcArgs","href":"Hi.Numerical.NcArgs.html","topicHref":"Hi.Numerical.NcArgs.html","topicUid":"Hi.Numerical.NcArgs","type":"Namespace","items":[{"name":"ArcNcArg","href":"Hi.Numerical.NcArgs.ArcNcArg.html","topicHref":"Hi.Numerical.NcArgs.ArcNcArg.html","topicUid":"Hi.Numerical.NcArgs.ArcNcArg","type":"Class"},{"name":"G28Arg","href":"Hi.Numerical.NcArgs.G28Arg.html","topicHref":"Hi.Numerical.NcArgs.G28Arg.html","topicUid":"Hi.Numerical.NcArgs.G28Arg","type":"Class"},{"name":"Group07NcArg","href":"Hi.Numerical.NcArgs.Group07NcArg.html","topicHref":"Hi.Numerical.NcArgs.Group07NcArg.html","topicUid":"Hi.Numerical.NcArgs.Group07NcArg","type":"Class"},{"name":"Group09NcArg","href":"Hi.Numerical.NcArgs.Group09NcArg.html","topicHref":"Hi.Numerical.NcArgs.Group09NcArg.html","topicUid":"Hi.Numerical.NcArgs.Group09NcArg","type":"Class"},{"name":"HeidenhainCycleDef7Arg","href":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg.html","topicHref":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg.html","topicUid":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg","type":"Class"},{"name":"HeidenhainPlaneSpatialArg","href":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg.html","topicHref":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg.html","topicUid":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg","type":"Class"},{"name":"IHeidenhainBlockCacheArg","href":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg.html","topicHref":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg.html","topicUid":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg","type":"Interface"},{"name":"IHeidenhainPlaneArg","href":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg.html","topicHref":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg.html","topicUid":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg","type":"Interface"},{"name":"ITiltPlaneNcArg","href":"Hi.Numerical.NcArgs.ITiltPlaneNcArg.html","topicHref":"Hi.Numerical.NcArgs.ITiltPlaneNcArg.html","topicUid":"Hi.Numerical.NcArgs.ITiltPlaneNcArg","type":"Interface"},{"name":"NcArgCycle800","href":"Hi.Numerical.NcArgs.NcArgCycle800.html","topicHref":"Hi.Numerical.NcArgs.NcArgCycle800.html","topicUid":"Hi.Numerical.NcArgs.NcArgCycle800","type":"Class"},{"name":"NcArgG68","href":"Hi.Numerical.NcArgs.NcArgG68.html","topicHref":"Hi.Numerical.NcArgs.NcArgG68.html","topicUid":"Hi.Numerical.NcArgs.NcArgG68","type":"Class"},{"name":"NcArgG68p2","href":"Hi.Numerical.NcArgs.NcArgG68p2.html","topicHref":"Hi.Numerical.NcArgs.NcArgG68p2.html","topicUid":"Hi.Numerical.NcArgs.NcArgG68p2","type":"Class"},{"name":"NcArgSiemensFrame","href":"Hi.Numerical.NcArgs.NcArgSiemensFrame.html","topicHref":"Hi.Numerical.NcArgs.NcArgSiemensFrame.html","topicUid":"Hi.Numerical.NcArgs.NcArgSiemensFrame","type":"Class"},{"name":"PausingNcArg","href":"Hi.Numerical.NcArgs.PausingNcArg.html","topicHref":"Hi.Numerical.NcArgs.PausingNcArg.html","topicUid":"Hi.Numerical.NcArgs.PausingNcArg","type":"Class"}]},{"name":"Hi.Numerical.StepSelectionUtils","href":"Hi.Numerical.StepSelectionUtils.html","topicHref":"Hi.Numerical.StepSelectionUtils.html","topicUid":"Hi.Numerical.StepSelectionUtils","type":"Namespace","items":[{"name":"AnchorMode","href":"Hi.Numerical.StepSelectionUtils.AnchorMode.html","topicHref":"Hi.Numerical.StepSelectionUtils.AnchorMode.html","topicUid":"Hi.Numerical.StepSelectionUtils.AnchorMode","type":"Enum"},{"name":"BoundSelector","href":"Hi.Numerical.StepSelectionUtils.BoundSelector.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelector.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelector","type":"Class"},{"name":"BoundSelectorHost","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost","type":"Class"},{"name":"BoundSelectorPair","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair","type":"Class"},{"name":"BoundSelectorPair.BoundLocale","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale","type":"Enum"},{"name":"BoundSelectorStepSectionBundle","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle","type":"Class"},{"name":"BoundSelectorUtil","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil","type":"Class"},{"name":"DistanceShift","href":"Hi.Numerical.StepSelectionUtils.DistanceShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.DistanceShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.DistanceShift","type":"Class"},{"name":"IStepShift","href":"Hi.Numerical.StepSelectionUtils.IStepShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.IStepShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.IStepShift","type":"Interface"},{"name":"TimeShift","href":"Hi.Numerical.StepSelectionUtils.TimeShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.TimeShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.TimeShift","type":"Class"}]},{"name":"Hi.Numerical.Xyzabc","href":"Hi.Numerical.Xyzabc.html","topicHref":"Hi.Numerical.Xyzabc.html","topicUid":"Hi.Numerical.Xyzabc","type":"Namespace","items":[{"name":"Abc","href":"Hi.Numerical.Xyzabc.Abc.html","topicHref":"Hi.Numerical.Xyzabc.Abc.html","topicUid":"Hi.Numerical.Xyzabc.Abc","type":"Struct"},{"name":"CodeXyzabcChain","href":"Hi.Numerical.Xyzabc.CodeXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.CodeXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.CodeXyzabcChain","type":"Class"},{"name":"GeneralXyzabcChain","href":"Hi.Numerical.Xyzabc.GeneralXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.GeneralXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.GeneralXyzabcChain","type":"Class"},{"name":"IGetMcXyzabc","href":"Hi.Numerical.Xyzabc.IGetMcXyzabc.html","topicHref":"Hi.Numerical.Xyzabc.IGetMcXyzabc.html","topicUid":"Hi.Numerical.Xyzabc.IGetMcXyzabc","type":"Interface"},{"name":"IGetXyzabcChain","href":"Hi.Numerical.Xyzabc.IGetXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.IGetXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.IGetXyzabcChain","type":"Interface"},{"name":"IMachineKinematics","href":"Hi.Numerical.Xyzabc.IMachineKinematics.html","topicHref":"Hi.Numerical.Xyzabc.IMachineKinematics.html","topicUid":"Hi.Numerical.Xyzabc.IMachineKinematics","type":"Interface"},{"name":"ISetMcXyzabc","href":"Hi.Numerical.Xyzabc.ISetMcXyzabc.html","topicHref":"Hi.Numerical.Xyzabc.ISetMcXyzabc.html","topicUid":"Hi.Numerical.Xyzabc.ISetMcXyzabc","type":"Interface"},{"name":"IXyzabcChain","href":"Hi.Numerical.Xyzabc.IXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.IXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.IXyzabcChain","type":"Interface"},{"name":"ReflectedXyzabcChain","href":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain","type":"Class"},{"name":"XyzabcSolver","href":"Hi.Numerical.Xyzabc.XyzabcSolver.html","topicHref":"Hi.Numerical.Xyzabc.XyzabcSolver.html","topicUid":"Hi.Numerical.Xyzabc.XyzabcSolver","type":"Class"},{"name":"XyzabcUtil","href":"Hi.Numerical.Xyzabc.XyzabcUtil.html","topicHref":"Hi.Numerical.Xyzabc.XyzabcUtil.html","topicUid":"Hi.Numerical.Xyzabc.XyzabcUtil","type":"Class"}]},{"name":"Hi.PanelModels","href":"Hi.PanelModels.html","topicHref":"Hi.PanelModels.html","topicUid":"Hi.PanelModels","type":"Namespace","items":[{"name":"HiKey","href":"Hi.PanelModels.HiKey.html","topicHref":"Hi.PanelModels.HiKey.html","topicUid":"Hi.PanelModels.HiKey","type":"Enum"},{"name":"HiKeyEvent","href":"Hi.PanelModels.HiKeyEvent.html","topicHref":"Hi.PanelModels.HiKeyEvent.html","topicUid":"Hi.PanelModels.HiKeyEvent","type":"Class"},{"name":"HiModifierKeys","href":"Hi.PanelModels.HiModifierKeys.html","topicHref":"Hi.PanelModels.HiModifierKeys.html","topicUid":"Hi.PanelModels.HiModifierKeys","type":"Enum"},{"name":"HiMouseButton","href":"Hi.PanelModels.HiMouseButton.html","topicHref":"Hi.PanelModels.HiMouseButton.html","topicUid":"Hi.PanelModels.HiMouseButton","type":"Enum"},{"name":"HiMouseButtonEvent","href":"Hi.PanelModels.HiMouseButtonEvent.html","topicHref":"Hi.PanelModels.HiMouseButtonEvent.html","topicUid":"Hi.PanelModels.HiMouseButtonEvent","type":"Class"},{"name":"HiMouseButtonMask","href":"Hi.PanelModels.HiMouseButtonMask.html","topicHref":"Hi.PanelModels.HiMouseButtonMask.html","topicUid":"Hi.PanelModels.HiMouseButtonMask","type":"Enum"},{"name":"HiMouseButtonMaskUtil","href":"Hi.PanelModels.HiMouseButtonMaskUtil.html","topicHref":"Hi.PanelModels.HiMouseButtonMaskUtil.html","topicUid":"Hi.PanelModels.HiMouseButtonMaskUtil","type":"Class"},{"name":"HiMouseMoveEvent","href":"Hi.PanelModels.HiMouseMoveEvent.html","topicHref":"Hi.PanelModels.HiMouseMoveEvent.html","topicUid":"Hi.PanelModels.HiMouseMoveEvent","type":"Class"},{"name":"HiMouseWheelEvent","href":"Hi.PanelModels.HiMouseWheelEvent.html","topicHref":"Hi.PanelModels.HiMouseWheelEvent.html","topicUid":"Hi.PanelModels.HiMouseWheelEvent","type":"Class"},{"name":"PanelModel","href":"Hi.PanelModels.PanelModel.html","topicHref":"Hi.PanelModels.PanelModel.html","topicUid":"Hi.PanelModels.PanelModel","type":"Class"}]},{"name":"Hi.Parallels","href":"Hi.Parallels.html","topicHref":"Hi.Parallels.html","topicUid":"Hi.Parallels","type":"Namespace","items":[{"name":"CurrentThreadTaskScheduler","href":"Hi.Parallels.CurrentThreadTaskScheduler.html","topicHref":"Hi.Parallels.CurrentThreadTaskScheduler.html","topicUid":"Hi.Parallels.CurrentThreadTaskScheduler","type":"Class"},{"name":"DistributedQueueTaskScheduler","href":"Hi.Parallels.DistributedQueueTaskScheduler.html","topicHref":"Hi.Parallels.DistributedQueueTaskScheduler.html","topicUid":"Hi.Parallels.DistributedQueueTaskScheduler","type":"Class"},{"name":"DistributedQueueTaskStarter","href":"Hi.Parallels.DistributedQueueTaskStarter.html","topicHref":"Hi.Parallels.DistributedQueueTaskStarter.html","topicUid":"Hi.Parallels.DistributedQueueTaskStarter","type":"Class"},{"name":"LockUtil","href":"Hi.Parallels.LockUtil.html","topicHref":"Hi.Parallels.LockUtil.html","topicUid":"Hi.Parallels.LockUtil","type":"Class"},{"name":"PriorityTaskScheduler","href":"Hi.Parallels.PriorityTaskScheduler.html","topicHref":"Hi.Parallels.PriorityTaskScheduler.html","topicUid":"Hi.Parallels.PriorityTaskScheduler","type":"Class"},{"name":"QueueTaskScheduler","href":"Hi.Parallels.QueueTaskScheduler.html","topicHref":"Hi.Parallels.QueueTaskScheduler.html","topicUid":"Hi.Parallels.QueueTaskScheduler","type":"Class"},{"name":"ReaderWriterLockUtil","href":"Hi.Parallels.ReaderWriterLockUtil.html","topicHref":"Hi.Parallels.ReaderWriterLockUtil.html","topicUid":"Hi.Parallels.ReaderWriterLockUtil","type":"Class"},{"name":"SemaphoreUtil","href":"Hi.Parallels.SemaphoreUtil.html","topicHref":"Hi.Parallels.SemaphoreUtil.html","topicUid":"Hi.Parallels.SemaphoreUtil","type":"Class"},{"name":"ThreadSafeSet","href":"Hi.Parallels.ThreadSafeSet-1.html","topicHref":"Hi.Parallels.ThreadSafeSet-1.html","topicUid":"Hi.Parallels.ThreadSafeSet`1","type":"Class"}]},{"name":"Hi.Physics","href":"Hi.Physics.html","topicHref":"Hi.Physics.html","topicUid":"Hi.Physics","type":"Namespace","items":[{"name":"AmpPhase","href":"Hi.Physics.AmpPhase.html","topicHref":"Hi.Physics.AmpPhase.html","topicUid":"Hi.Physics.AmpPhase","type":"Class"},{"name":"CoatingMaterial","href":"Hi.Physics.CoatingMaterial.html","topicHref":"Hi.Physics.CoatingMaterial.html","topicUid":"Hi.Physics.CoatingMaterial","type":"Class"},{"name":"CoolantHeatCondition","href":"Hi.Physics.CoolantHeatCondition.html","topicHref":"Hi.Physics.CoolantHeatCondition.html","topicUid":"Hi.Physics.CoolantHeatCondition","type":"Class"},{"name":"CutterMaterial","href":"Hi.Physics.CutterMaterial.html","topicHref":"Hi.Physics.CutterMaterial.html","topicUid":"Hi.Physics.CutterMaterial","type":"Class"},{"name":"IGetThermalLayerList","href":"Hi.Physics.IGetThermalLayerList.html","topicHref":"Hi.Physics.IGetThermalLayerList.html","topicUid":"Hi.Physics.IGetThermalLayerList","type":"Interface"},{"name":"IStructureMaterial","href":"Hi.Physics.IStructureMaterial.html","topicHref":"Hi.Physics.IStructureMaterial.html","topicUid":"Hi.Physics.IStructureMaterial","type":"Interface"},{"name":"ISuccessivePhysicsBriefAccessor","href":"Hi.Physics.ISuccessivePhysicsBriefAccessor.html","topicHref":"Hi.Physics.ISuccessivePhysicsBriefAccessor.html","topicUid":"Hi.Physics.ISuccessivePhysicsBriefAccessor","type":"Interface"},{"name":"ISurfaceMaterial","href":"Hi.Physics.ISurfaceMaterial.html","topicHref":"Hi.Physics.ISurfaceMaterial.html","topicUid":"Hi.Physics.ISurfaceMaterial","type":"Interface"},{"name":"ITimeGetter","href":"Hi.Physics.ITimeGetter.html","topicHref":"Hi.Physics.ITimeGetter.html","topicUid":"Hi.Physics.ITimeGetter","type":"Interface"},{"name":"MillingTemperatureUtil","href":"Hi.Physics.MillingTemperatureUtil.html","topicHref":"Hi.Physics.MillingTemperatureUtil.html","topicUid":"Hi.Physics.MillingTemperatureUtil","type":"Class"},{"name":"SeqPhysicsBrief","href":"Hi.Physics.SeqPhysicsBrief.html","topicHref":"Hi.Physics.SeqPhysicsBrief.html","topicUid":"Hi.Physics.SeqPhysicsBrief","type":"Class"},{"name":"StructureMaterial","href":"Hi.Physics.StructureMaterial.html","topicHref":"Hi.Physics.StructureMaterial.html","topicUid":"Hi.Physics.StructureMaterial","type":"Class"},{"name":"TemperatureUtil","href":"Hi.Physics.TemperatureUtil.html","topicHref":"Hi.Physics.TemperatureUtil.html","topicUid":"Hi.Physics.TemperatureUtil","type":"Class"},{"name":"TemperatureVsHardness","href":"Hi.Physics.TemperatureVsHardness.html","topicHref":"Hi.Physics.TemperatureVsHardness.html","topicUid":"Hi.Physics.TemperatureVsHardness","type":"Class"},{"name":"ThermalLayer1D","href":"Hi.Physics.ThermalLayer1D.html","topicHref":"Hi.Physics.ThermalLayer1D.html","topicUid":"Hi.Physics.ThermalLayer1D","type":"Class"},{"name":"TimeSeriesUtil","href":"Hi.Physics.TimeSeriesUtil.html","topicHref":"Hi.Physics.TimeSeriesUtil.html","topicUid":"Hi.Physics.TimeSeriesUtil","type":"Class"},{"name":"TimeValue","href":"Hi.Physics.TimeValue.html","topicHref":"Hi.Physics.TimeValue.html","topicUid":"Hi.Physics.TimeValue","type":"Class"},{"name":"WorkpieceMaterial","href":"Hi.Physics.WorkpieceMaterial.html","topicHref":"Hi.Physics.WorkpieceMaterial.html","topicUid":"Hi.Physics.WorkpieceMaterial","type":"Class"}]},{"name":"Hi.ScriptApiUtils","href":"Hi.ScriptApiUtils.html","topicHref":"Hi.ScriptApiUtils.html","topicUid":"Hi.ScriptApiUtils","type":"Namespace","items":[{"name":"ICsScriptApi","href":"Hi.ScriptApiUtils.ICsScriptApi.html","topicHref":"Hi.ScriptApiUtils.ICsScriptApi.html","topicUid":"Hi.ScriptApiUtils.ICsScriptApi","type":"Interface"},{"name":"JsAceAttribute","href":"Hi.ScriptApiUtils.JsAceAttribute.html","topicHref":"Hi.ScriptApiUtils.JsAceAttribute.html","topicUid":"Hi.ScriptApiUtils.JsAceAttribute","type":"Class"}]},{"name":"Hi.ShellCommands","href":"Hi.ShellCommands.html","topicHref":"Hi.ShellCommands.html","topicUid":"Hi.ShellCommands","type":"Namespace","items":[{"name":"EnablingWrapper","href":"Hi.ShellCommands.EnablingWrapper.html","topicHref":"Hi.ShellCommands.EnablingWrapper.html","topicUid":"Hi.ShellCommands.EnablingWrapper","type":"Class"},{"name":"GeomDiffCommand","href":"Hi.ShellCommands.GeomDiffCommand.html","topicHref":"Hi.ShellCommands.GeomDiffCommand.html","topicUid":"Hi.ShellCommands.GeomDiffCommand","type":"Class"},{"name":"IShellCommand","href":"Hi.ShellCommands.IShellCommand.html","topicHref":"Hi.ShellCommands.IShellCommand.html","topicUid":"Hi.ShellCommands.IShellCommand","type":"Interface"},{"name":"ITitleCommand","href":"Hi.ShellCommands.ITitleCommand.html","topicHref":"Hi.ShellCommands.ITitleCommand.html","topicUid":"Hi.ShellCommands.ITitleCommand","type":"Interface"},{"name":"Lang","href":"Hi.ShellCommands.Lang.html","topicHref":"Hi.ShellCommands.Lang.html","topicUid":"Hi.ShellCommands.Lang","type":"Class"},{"name":"ListCommand","href":"Hi.ShellCommands.ListCommand.html","topicHref":"Hi.ShellCommands.ListCommand.html","topicUid":"Hi.ShellCommands.ListCommand","type":"Class"},{"name":"MachiningMotionResolutionCommand","href":"Hi.ShellCommands.MachiningMotionResolutionCommand.html","topicHref":"Hi.ShellCommands.MachiningMotionResolutionCommand.html","topicUid":"Hi.ShellCommands.MachiningMotionResolutionCommand","type":"Class"},{"name":"NcCodeCommand","href":"Hi.ShellCommands.NcCodeCommand.html","topicHref":"Hi.ShellCommands.NcCodeCommand.html","topicUid":"Hi.ShellCommands.NcCodeCommand","type":"Class"},{"name":"NcFileCommand","href":"Hi.ShellCommands.NcFileCommand.html","topicHref":"Hi.ShellCommands.NcFileCommand.html","topicUid":"Hi.ShellCommands.NcFileCommand","type":"Class"},{"name":"NcFileListCommand","href":"Hi.ShellCommands.NcFileListCommand.html","topicHref":"Hi.ShellCommands.NcFileListCommand.html","topicUid":"Hi.ShellCommands.NcFileListCommand","type":"Class"},{"name":"NcOptOptionCommand","href":"Hi.ShellCommands.NcOptOptionCommand.html","topicHref":"Hi.ShellCommands.NcOptOptionCommand.html","topicUid":"Hi.ShellCommands.NcOptOptionCommand","type":"Class"},{"name":"OptimizeToFilesCommand","href":"Hi.ShellCommands.OptimizeToFilesCommand.html","topicHref":"Hi.ShellCommands.OptimizeToFilesCommand.html","topicUid":"Hi.ShellCommands.OptimizeToFilesCommand","type":"Class"},{"name":"PostExecutionCommand","href":"Hi.ShellCommands.PostExecutionCommand.html","topicHref":"Hi.ShellCommands.PostExecutionCommand.html","topicUid":"Hi.ShellCommands.PostExecutionCommand","type":"Class"},{"name":"PreSettingCommand","href":"Hi.ShellCommands.PreSettingCommand.html","topicHref":"Hi.ShellCommands.PreSettingCommand.html","topicUid":"Hi.ShellCommands.PreSettingCommand","type":"Class"},{"name":"RecordRuntimeGeomActionEnum","href":"Hi.ShellCommands.RecordRuntimeGeomActionEnum.html","topicHref":"Hi.ShellCommands.RecordRuntimeGeomActionEnum.html","topicUid":"Hi.ShellCommands.RecordRuntimeGeomActionEnum","type":"Enum"},{"name":"RecordRuntimeGeomCommand","href":"Hi.ShellCommands.RecordRuntimeGeomCommand.html","topicHref":"Hi.ShellCommands.RecordRuntimeGeomCommand.html","topicUid":"Hi.ShellCommands.RecordRuntimeGeomCommand","type":"Class"},{"name":"ScriptCommand","href":"Hi.ShellCommands.ScriptCommand.html","topicHref":"Hi.ShellCommands.ScriptCommand.html","topicUid":"Hi.ShellCommands.ScriptCommand","type":"Class"},{"name":"SimpleSessionCommand","href":"Hi.ShellCommands.SimpleSessionCommand.html","topicHref":"Hi.ShellCommands.SimpleSessionCommand.html","topicUid":"Hi.ShellCommands.SimpleSessionCommand","type":"Class"},{"name":"WriteRuntimeGeomToStlCommand","href":"Hi.ShellCommands.WriteRuntimeGeomToStlCommand.html","topicHref":"Hi.ShellCommands.WriteRuntimeGeomToStlCommand.html","topicUid":"Hi.ShellCommands.WriteRuntimeGeomToStlCommand","type":"Class"},{"name":"WriteShotFilesCommand","href":"Hi.ShellCommands.WriteShotFilesCommand.html","topicHref":"Hi.ShellCommands.WriteShotFilesCommand.html","topicUid":"Hi.ShellCommands.WriteShotFilesCommand","type":"Class"},{"name":"WriteStepFilesCommand","href":"Hi.ShellCommands.WriteStepFilesCommand.html","topicHref":"Hi.ShellCommands.WriteStepFilesCommand.html","topicUid":"Hi.ShellCommands.WriteStepFilesCommand","type":"Class"}]},{"name":"Hi.SqliteUtils","href":"Hi.SqliteUtils.html","topicHref":"Hi.SqliteUtils.html","topicUid":"Hi.SqliteUtils","type":"Namespace","items":[{"name":"SqliteIdentityRole","href":"Hi.SqliteUtils.SqliteIdentityRole.html","topicHref":"Hi.SqliteUtils.SqliteIdentityRole.html","topicUid":"Hi.SqliteUtils.SqliteIdentityRole","type":"Class"},{"name":"SqliteIdentityStorage","href":"Hi.SqliteUtils.SqliteIdentityStorage.html","topicHref":"Hi.SqliteUtils.SqliteIdentityStorage.html","topicUid":"Hi.SqliteUtils.SqliteIdentityStorage","type":"Class"},{"name":"SqliteIdentityStorage.RoleRow","href":"Hi.SqliteUtils.SqliteIdentityStorage.RoleRow.html","topicHref":"Hi.SqliteUtils.SqliteIdentityStorage.RoleRow.html","topicUid":"Hi.SqliteUtils.SqliteIdentityStorage.RoleRow","type":"Class"},{"name":"SqliteIdentityStorage.UserRow","href":"Hi.SqliteUtils.SqliteIdentityStorage.UserRow.html","topicHref":"Hi.SqliteUtils.SqliteIdentityStorage.UserRow.html","topicUid":"Hi.SqliteUtils.SqliteIdentityStorage.UserRow","type":"Class"},{"name":"SqliteIdentityUser","href":"Hi.SqliteUtils.SqliteIdentityUser.html","topicHref":"Hi.SqliteUtils.SqliteIdentityUser.html","topicUid":"Hi.SqliteUtils.SqliteIdentityUser","type":"Class"},{"name":"SqliteRoleStore","href":"Hi.SqliteUtils.SqliteRoleStore-1.html","topicHref":"Hi.SqliteUtils.SqliteRoleStore-1.html","topicUid":"Hi.SqliteUtils.SqliteRoleStore`1","type":"Class"},{"name":"SqliteStepStorage","href":"Hi.SqliteUtils.SqliteStepStorage.html","topicHref":"Hi.SqliteUtils.SqliteStepStorage.html","topicUid":"Hi.SqliteUtils.SqliteStepStorage","type":"Class"},{"name":"SqliteStepStorage.MillingStepLuggageRow","href":"Hi.SqliteUtils.SqliteStepStorage.MillingStepLuggageRow.html","topicHref":"Hi.SqliteUtils.SqliteStepStorage.MillingStepLuggageRow.html","topicUid":"Hi.SqliteUtils.SqliteStepStorage.MillingStepLuggageRow","type":"Class"},{"name":"SqliteUserStore","href":"Hi.SqliteUtils.SqliteUserStore-1.html","topicHref":"Hi.SqliteUtils.SqliteUserStore-1.html","topicUid":"Hi.SqliteUtils.SqliteUserStore`1","type":"Class"}]},{"name":"Hi.Test","href":"Hi.Test.html","topicHref":"Hi.Test.html","topicUid":"Hi.Test","type":"Namespace","items":[{"name":"TestCollision","href":"Hi.Test.TestCollision.html","topicHref":"Hi.Test.TestCollision.html","topicUid":"Hi.Test.TestCollision","type":"Class"}]},{"name":"Hi.UiExtensions","href":"Hi.UiExtensions.html","topicHref":"Hi.UiExtensions.html","topicUid":"Hi.UiExtensions","type":"Namespace","items":[{"name":"ChartBoundary","href":"Hi.UiExtensions.ChartBoundary.html","topicHref":"Hi.UiExtensions.ChartBoundary.html","topicUid":"Hi.UiExtensions.ChartBoundary","type":"Class"},{"name":"ChartBoundaryEnum","href":"Hi.UiExtensions.ChartBoundaryEnum.html","topicHref":"Hi.UiExtensions.ChartBoundaryEnum.html","topicUid":"Hi.UiExtensions.ChartBoundaryEnum","type":"Enum"},{"name":"NativeVisibility","href":"Hi.UiExtensions.NativeVisibility.html","topicHref":"Hi.UiExtensions.NativeVisibility.html","topicUid":"Hi.UiExtensions.NativeVisibility","type":"Enum"},{"name":"UiUtil","href":"Hi.UiExtensions.UiUtil.html","topicHref":"Hi.UiExtensions.UiUtil.html","topicUid":"Hi.UiExtensions.UiUtil","type":"Class"},{"name":"UiUtil.InvokeFunc","href":"Hi.UiExtensions.UiUtil.InvokeFunc.html","topicHref":"Hi.UiExtensions.UiUtil.InvokeFunc.html","topicUid":"Hi.UiExtensions.UiUtil.InvokeFunc","type":"Delegate"}]},{"name":"Hi.UniversalNc","href":"Hi.UniversalNc.html","topicHref":"Hi.UniversalNc.html","topicUid":"Hi.UniversalNc","type":"Namespace","items":[{"name":"Lang","href":"Hi.UniversalNc.Lang.html","topicHref":"Hi.UniversalNc.Lang.html","topicUid":"Hi.UniversalNc.Lang","type":"Class"}]},{"name":"Hi.Vibrations","href":"Hi.Vibrations.html","topicHref":"Hi.Vibrations.html","topicUid":"Hi.Vibrations","type":"Namespace","items":[{"name":"AngularVelocityUtil","href":"Hi.Vibrations.AngularVelocityUtil.html","topicHref":"Hi.Vibrations.AngularVelocityUtil.html","topicUid":"Hi.Vibrations.AngularVelocityUtil","type":"Class"},{"name":"ForceAccelAmpPhase","href":"Hi.Vibrations.ForceAccelAmpPhase.html","topicHref":"Hi.Vibrations.ForceAccelAmpPhase.html","topicUid":"Hi.Vibrations.ForceAccelAmpPhase","type":"Class"},{"name":"ForceAccelFourierSeries","href":"Hi.Vibrations.ForceAccelFourierSeries.html","topicHref":"Hi.Vibrations.ForceAccelFourierSeries.html","topicUid":"Hi.Vibrations.ForceAccelFourierSeries","type":"Class"},{"name":"ForceAccelShot","href":"Hi.Vibrations.ForceAccelShot.html","topicHref":"Hi.Vibrations.ForceAccelShot.html","topicUid":"Hi.Vibrations.ForceAccelShot","type":"Class"},{"name":"ForceAccelUtil","href":"Hi.Vibrations.ForceAccelUtil.html","topicHref":"Hi.Vibrations.ForceAccelUtil.html","topicUid":"Hi.Vibrations.ForceAccelUtil","type":"Class"},{"name":"IAngularVelocityOwner","href":"Hi.Vibrations.IAngularVelocityOwner.html","topicHref":"Hi.Vibrations.IAngularVelocityOwner.html","topicUid":"Hi.Vibrations.IAngularVelocityOwner","type":"Interface"},{"name":"VibrationUtil","href":"Hi.Vibrations.VibrationUtil.html","topicHref":"Hi.Vibrations.VibrationUtil.html","topicUid":"Hi.Vibrations.VibrationUtil","type":"Class"},{"name":"WAmpPhase","href":"Hi.Vibrations.WAmpPhase.html","topicHref":"Hi.Vibrations.WAmpPhase.html","topicUid":"Hi.Vibrations.WAmpPhase","type":"Class"},{"name":"WAmpPhaseXyzTransformation","href":"Hi.Vibrations.WAmpPhaseXyzTransformation.html","topicHref":"Hi.Vibrations.WAmpPhaseXyzTransformation.html","topicUid":"Hi.Vibrations.WAmpPhaseXyzTransformation","type":"Class"}]},{"name":"Hi.WinForm.Disp","href":"Hi.WinForm.Disp.html","topicHref":"Hi.WinForm.Disp.html","topicUid":"Hi.WinForm.Disp","type":"Namespace","items":[{"name":"RenderingCanvas","href":"Hi.WinForm.Disp.RenderingCanvas.html","topicHref":"Hi.WinForm.Disp.RenderingCanvas.html","topicUid":"Hi.WinForm.Disp.RenderingCanvas","type":"Class"},{"name":"RenderingForm","href":"Hi.WinForm.Disp.RenderingForm.html","topicHref":"Hi.WinForm.Disp.RenderingForm.html","topicUid":"Hi.WinForm.Disp.RenderingForm","type":"Class"}]},{"name":"Hi.WpfPlus.Disp","href":"Hi.WpfPlus.Disp.html","topicHref":"Hi.WpfPlus.Disp.html","topicUid":"Hi.WpfPlus.Disp","type":"Namespace","items":[{"name":"RenderingCanvas","href":"Hi.WpfPlus.Disp.RenderingCanvas.html","topicHref":"Hi.WpfPlus.Disp.RenderingCanvas.html","topicUid":"Hi.WpfPlus.Disp.RenderingCanvas","type":"Class"},{"name":"RenderingWindow","href":"Hi.WpfPlus.Disp.RenderingWindow.html","topicHref":"Hi.WpfPlus.Disp.RenderingWindow.html","topicUid":"Hi.WpfPlus.Disp.RenderingWindow","type":"Class"},{"name":"WpfDispUtil","href":"Hi.WpfPlus.Disp.WpfDispUtil.html","topicHref":"Hi.WpfPlus.Disp.WpfDispUtil.html","topicUid":"Hi.WpfPlus.Disp.WpfDispUtil","type":"Class"}]},{"name":"HiMachining.Milling","href":"HiMachining.Milling.html","topicHref":"HiMachining.Milling.html","topicUid":"HiMachining.Milling","type":"Namespace","items":[{"name":"ClMillingDevice","href":"HiMachining.Milling.ClMillingDevice.html","topicHref":"HiMachining.Milling.ClMillingDevice.html","topicUid":"HiMachining.Milling.ClMillingDevice","type":"Class"}]},{"name":"HiNc.Grpcs","href":"HiNc.Grpcs.html","topicHref":"HiNc.Grpcs.html","topicUid":"HiNc.Grpcs","type":"Namespace","items":[{"name":"MachiningProjectGrpcServer","href":"HiNc.Grpcs.MachiningProjectGrpcServer.html","topicHref":"HiNc.Grpcs.MachiningProjectGrpcServer.html","topicUid":"HiNc.Grpcs.MachiningProjectGrpcServer","type":"Class"}]},{"name":"numerical","href":"numerical.html","topicHref":"numerical.html","topicUid":"numerical","type":"Namespace","items":[{"name":"Empty","href":"numerical.Empty.html","topicHref":"numerical.Empty.html","topicUid":"numerical.Empty","type":"Class"},{"name":"GrpcCsvRowDictionary","href":"numerical.GrpcCsvRowDictionary.html","topicHref":"numerical.GrpcCsvRowDictionary.html","topicUid":"numerical.GrpcCsvRowDictionary","type":"Class"},{"name":"GrpcNcStep","href":"numerical.GrpcNcStep.html","topicHref":"numerical.GrpcNcStep.html","topicUid":"numerical.GrpcNcStep","type":"Class"},{"name":"NumericalReflection","href":"numerical.NumericalReflection.html","topicHref":"numerical.NumericalReflection.html","topicUid":"numerical.NumericalReflection","type":"Class"},{"name":"NumericalService","href":"numerical.NumericalService.html","topicHref":"numerical.NumericalService.html","topicUid":"numerical.NumericalService","type":"Class"},{"name":"NumericalService.NumericalServiceBase","href":"numerical.NumericalService.NumericalServiceBase.html","topicHref":"numerical.NumericalService.NumericalServiceBase.html","topicUid":"numerical.NumericalService.NumericalServiceBase","type":"Class"},{"name":"NumericalService.NumericalServiceClient","href":"numerical.NumericalService.NumericalServiceClient.html","topicHref":"numerical.NumericalService.NumericalServiceClient.html","topicUid":"numerical.NumericalService.NumericalServiceClient","type":"Class"},{"name":"UniversalNcReflection","href":"numerical.UniversalNcReflection.html","topicHref":"numerical.UniversalNcReflection.html","topicUid":"numerical.UniversalNcReflection","type":"Class"},{"name":"UniversalNcService","href":"numerical.UniversalNcService.html","topicHref":"numerical.UniversalNcService.html","topicUid":"numerical.UniversalNcService","type":"Class"},{"name":"UniversalNcService.UniversalNcServiceBase","href":"numerical.UniversalNcService.UniversalNcServiceBase.html","topicHref":"numerical.UniversalNcService.UniversalNcServiceBase.html","topicUid":"numerical.UniversalNcService.UniversalNcServiceBase","type":"Class"},{"name":"UniversalNcService.UniversalNcServiceClient","href":"numerical.UniversalNcService.UniversalNcServiceClient.html","topicHref":"numerical.UniversalNcService.UniversalNcServiceClient.html","topicUid":"numerical.UniversalNcService.UniversalNcServiceClient","type":"Class"}]}],"memberLayout":"SamePage"} diff --git a/App/wwwroot/HiAPI-docsite/dev-doc/basic/geom/basic-geometry.html b/App/wwwroot/HiAPI-docsite/dev-doc/basic/geom/basic-geometry.html index 3a167ab..e46bbf4 100644 --- a/App/wwwroot/HiAPI-docsite/dev-doc/basic/geom/basic-geometry.html +++ b/App/wwwroot/HiAPI-docsite/dev-doc/basic/geom/basic-geometry.html @@ -121,42 +121,40 @@ using System.Collections.Generic; using Hi.Geom; using Hi.Mech.Topo; -namespace Sample.Geom +namespace Sample.Geom; + +/// <summary> +/// Demonstrates the creation and manipulation of geometric objects in HiAPI. +/// Shows how to create and transform various geometry types including boxes, cylindroids, and STL files. +/// </summary> +/// <remarks> +/// ### Source Code +/// [!code-csharp[SampleCode](~/../Hi.Sample/Geom/DemoBuildGeom.cs)] +/// </remarks> +public static class DemoBuildGeom { /// <summary> - /// Demonstrates the creation and manipulation of geometric objects in HiAPI. - /// Shows how to create and transform various geometry types including boxes, cylindroids, and STL files. + /// Generates a collection of geometric objects for demonstration purposes. + /// Creates various geometry types including boxes, cylindroids, STL files, and transformed geometries. /// </summary> - /// <remarks> - /// ### Source Code - /// [!code-csharp[SampleCode](~/../Hi.Sample/Geom/DemoBuildGeom.cs)] - /// </remarks> - public static class DemoBuildGeom + /// <returns>A list of geometries implementing the IGetStl interface</returns> + public static List<IGetStl> GenGeoms() { - /// <summary> - /// Generates a collection of geometric objects for demonstration purposes. - /// Creates various geometry types including boxes, cylindroids, STL files, and transformed geometries. - /// </summary> - /// <returns>A list of geometries implementing the IGetStl interface</returns> - public static List<IGetStl> GenGeoms() - { - Box3d box = new Box3d(0, 0, -50, 70, 50, 0); - Cylindroid cylindroid = new Cylindroid([ new PairZr(0,12),new PairZr(20,12), + Box3d box = new Box3d(0, 0, -50, 70, 50, 0); + Cylindroid cylindroid = new Cylindroid([ new PairZr(0,12),new PairZr(20,12), new PairZr(20,16),new PairZr(30,16)]); - Stl stl = new Stl("geom.stl"); - StlFile stlFile = new StlFile("geom.stl"); - TransformationGeom transformationGeom = new TransformationGeom() - { - Transformer = new GeneralTransform(1, - new StaticRotation(new Vec3d(0, 0, 1), MathUtil.ToRad(15), new Vec3d(0, 0, 0)), - new StaticTranslation(new Vec3d(0, 0, 0))), - Geom = stl - }; - GeomCombination geomCombination = new GeomCombination(stlFile, transformationGeom); - return new List<IGetStl>([box, cylindroid, stl, stlFile, transformationGeom]); - } + Stl stl = new Stl("geom.stl"); + StlFile stlFile = new StlFile("geom.stl"); + TransformationGeom transformationGeom = new TransformationGeom() + { + Transformer = new GeneralTransform(1, + new StaticRotation(new Vec3d(0, 0, 1), MathUtil.ToRad(15), new Vec3d(0, 0, 0)), + new StaticTranslation(new Vec3d(0, 0, 0))), + Geom = stl + }; + GeomCombination geomCombination = new GeomCombination(stlFile, transformationGeom); + return new List<IGetStl>([box, cylindroid, stl, stlFile, transformationGeom]); } - } diff --git a/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/general-rules.html b/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/general-rules.html index f18d15f..bf336df 100644 --- a/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/general-rules.html +++ b/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/general-rules.html @@ -89,13 +89,13 @@

    This document describes the common patterns and conventions used throughout the HiNC GUI codebase.

    Message and Exception Handling

    -

    The HiNC applications use MessageHost to display user-facing messages, and ExceptionUtil.ShowException(Exception, object) to handle exceptions with detailed treatment. All messages are displayed in the Message Section on Main Panel.

    +

    The HiNC applications use <xref:Hi.Common.Messages.MessageHost> to display user-facing messages, and ExceptionUtil.ShowException(Exception, object) to handle exceptions with detailed treatment. All messages are displayed in the Message Section on Main Panel.

    For examples of message and exception handling patterns:

    1. Normal message handling:
    -
    MessageHost.ReportMessage("Operation completed successfully.");
    -MessageHost.ReportWarning("Please check your input.");
    +
    MessageUtil.ReportMessage("Operation completed successfully.");
    +MessageUtil.ReportWarning("Please check your input.");
     
    1. Exception handling in synchronous code:
    2. diff --git a/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/main-panel.html b/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/main-panel.html index 56a80f9..a3f253f 100644 --- a/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/main-panel.html +++ b/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/main-panel.html @@ -183,10 +183,10 @@ Users can refresh the log content or download the current day's log file for off -

      All operation results (success or exception) are displayed via MessageHost. When a project is loaded, the Player Panel's RenderingCanvas is set to isometric view using SetViewToIsometricView().

      +

      All operation results (success or exception) are displayed via <xref:Hi.Common.Messages.MessageHost>. When a project is loaded, the Player Panel's RenderingCanvas is set to isometric view using SetViewToIsometricView().

      Note
      -

      The implementation uses static functions of MessageHost for message handling. Async operations ensure smooth user experience during file I/O.

      +

      The implementation uses static functions of <xref:Hi.Common.Messages.MessageHost> for message handling. Async operations ensure smooth user experience during file I/O.

      Platform-Specific Differences

      WPF Application

      diff --git a/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/message-section-on-main-panel.html b/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/message-section-on-main-panel.html index b800c30..b7c490b 100644 --- a/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/message-section-on-main-panel.html +++ b/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/message-section-on-main-panel.html @@ -89,7 +89,7 @@

      The Message Section displays application messages and logs at the bottom of the Main Panel.

      Message Handling

      -

      The Message Section is connected to MessageHost.Default through the ProgressChanged event. When a message is reported:

      +

      The Message Section is connected to <xref:Hi.Common.Messages.MessageHost>.<xref:Hi.Common.Messages.MessageHost.Default> through the ProgressChanged event. When a message is reported:

      1. The Brief Message Text Field content is updated
      2. The message is appended to the daily log file at logs/log-{DateTime.Now:yyyy-MM-dd}.txt
      3. diff --git a/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/session-message-panel/index.html b/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/session-message-panel/index.html index 7e867e9..6b2a9d8 100644 --- a/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/session-message-panel/index.html +++ b/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/session-message-panel/index.html @@ -87,7 +87,7 @@

        Session Message Panel

        -

        The model is SessionMessageHost.

        +

        The model is <xref:Hi.MachiningProcs.LocalProjectService.SessionMessageHost>.

        LocalProjectService is obtained via dependency injection.

        Layout

          @@ -112,16 +112,16 @@
        • Central Message Table

        Central Message Table

        -

        The model of Central Message Table is SessionMessageHost.MessageCollection.

        -

        Only take last 1000 filtered elements in the MessageCollection by GetFliteredList(FilterFlag, string) to show for user experience. Find the usage example in the code:

        +

        The model of Central Message Table is <xref:Hi.MachiningProcs.SessionMessageHost>.<xref:Hi.MachiningProcs.SessionMessageHost.MessageCollection>.

        +

        Only take last 1000 filtered elements in the <xref:Hi.MachiningProcs.SessionMessageHost.MessageCollection> by <xref:Hi.MachiningProcs.SessionMessageHost.GetFliteredList(Hi.MachiningProcs.SessionMessageHost.FilterFlag,System.String)> to show for user experience. Find the usage example in the code:

        internal static void DemoUseSessionMessageHost(LocalProjectService localProjectService)
         {
        -    SessionMessageHost sessionMessageHost = localProjectService.SessionMessageHost;
        +    SessionProgress sessionMessageHost = localProjectService.SessionProgress;
         
        -    SessionMessageHost.FilterFlag filterFlags =
        -        SessionMessageHost.FilterFlag.NC |
        -        SessionMessageHost.FilterFlag.Progress |
        -        SessionMessageHost.FilterFlag.Error;
        +    SessionProgress.FilterFlag filterFlags =
        +        SessionProgress.FilterFlag.NC |
        +        SessionProgress.FilterFlag.Progress |
        +        SessionProgress.FilterFlag.Error;
             string filterText = null;
             var filteredSessionMessageList = sessionMessageHost
                 .GetFliteredList(filterFlags, filterText);
        @@ -150,7 +150,7 @@
         }
         

        In the table, show the columns: Role, NC/Message.

        -

        Add update table event to CollectionItemChanged. The updating process has to be called by Loose Manner for user experience.

        +

        Add update table event to <xref:Hi.MachiningProcs.SessionMessageHost.CollectionItemChanged>. The updating process has to be called by Loose Manner for user experience.

        Tip

        On window desktop application (WPF), consider use textarea instead of datagrid to MessageTable for better performance. Use padding to show the different columns. And use the font in the textarea that with consistent width.

        @@ -160,9 +160,9 @@

        The message display should be real-time.

        Behavior of Export Button

        -

        Export ALL filtered elements in the MessageCollection by GetFliteredList(FilterFlag, string).

        +

        Export ALL filtered elements in the <xref:Hi.MachiningProcs.SessionMessageHost.MessageCollection> by <xref:Hi.MachiningProcs.SessionMessageHost.GetFliteredList(Hi.MachiningProcs.SessionMessageHost.FilterFlag,System.String)>.

        SignalR Implementation (Webapi Only)

        -

        SessionMessageHub provides real-time message updates with method GetSessionMessages(string filterFlags, string filterText, int limit) and event SessionMessagesUpdated. SessionMessageService monitors CollectionItemChanged and broadcasts updates. The service uses LooseRunner for non-blocking async operations. The JavaScript component connects to /sessionMessageHub to receive real-time message updates.

        +

        SessionMessageHub provides real-time message updates with method GetSessionMessages(string filterFlags, string filterText, int limit) and event SessionMessagesUpdated. SessionMessageService monitors <xref:Hi.MachiningProcs.SessionMessageHost.CollectionItemChanged> and broadcasts updates. The service uses LooseRunner for non-blocking async operations. The JavaScript component connects to /sessionMessageHub to receive real-time message updates.

        Source Code Path

        See this page for git repository.

        WPF Application Source Code Path

        diff --git a/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/widget/vec3d/index.html b/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/widget/vec3d/index.html index 25b3f33..6d8eafe 100644 --- a/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/widget/vec3d/index.html +++ b/App/wwwroot/HiAPI-docsite/dev-doc/build-hinc/widget/vec3d/index.html @@ -307,7 +307,7 @@ namespace HiNC_2025_win_desktop.Geom } catch (Exception ex) { - MessageHost.ReportError(string.Format(Application.Current.FindResource("Vec3d_Update_Error").ToString(), ex.Message)); + MessageUtil.ReportError(string.Format(Application.Current.FindResource("Vec3d_Update_Error").ToString(), ex.Message)); ex.ShowException(this); } finally @@ -398,7 +398,7 @@ namespace HiNC_2025_win_desktop.Geom } catch (Exception ex) { - MessageHost.ReportError(string.Format(Application.Current.FindResource("Vec3d_Update_Error").ToString(), ex.Message)); + MessageUtil.ReportError(string.Format(Application.Current.FindResource("Vec3d_Update_Error").ToString(), ex.Message)); ex.ShowException(this); } finally @@ -555,7 +555,7 @@ namespace HiNC_2025_win_desktop.Geom catch (Exception ex) { // 记录异常但不中断用户操作 - MessageHost.ReportError(string.Format(Application.Current.FindResource("Vec3d_Update_Error").ToString(), ex.Message)); + MessageUtil.ReportError(string.Format(Application.Current.FindResource("Vec3d_Update_Error").ToString(), ex.Message)); ex.ShowException(this); } finally diff --git a/App/wwwroot/HiAPI-docsite/dev-doc/general-hinc-workflow/index.html b/App/wwwroot/HiAPI-docsite/dev-doc/general-hinc-workflow/index.html index 77dd40f..1dc7dcc 100644 --- a/App/wwwroot/HiAPI-docsite/dev-doc/general-hinc-workflow/index.html +++ b/App/wwwroot/HiAPI-docsite/dev-doc/general-hinc-workflow/index.html @@ -143,7 +143,7 @@

        The PacePlayer controls the execution pace of the simulation, allowing you to observe the machining process in detail or run it at full speed.

        View the Analysis During Process or Result

        -

        SessionMessageHost contains a sequence of simulation messages and step data, which can be used to monitor and analyze the simulation process and results.

        +

        <xref:Hi.MachiningProcs.SessionMessageHost> contains a sequence of simulation messages and step data, which can be used to monitor and analyze the simulation process and results.

        UI Pattern

        The user interface navigation bar matches the workflow. Top-level navigation items include:

          diff --git a/App/wwwroot/HiAPI-docsite/dev-doc/release-note/index.html b/App/wwwroot/HiAPI-docsite/dev-doc/release-note/index.html index b2ff0ce..de933bd 100644 --- a/App/wwwroot/HiAPI-docsite/dev-doc/release-note/index.html +++ b/App/wwwroot/HiAPI-docsite/dev-doc/release-note/index.html @@ -117,7 +117,7 @@
          • Add cubetree geometry defect scanning (ScanRuntimeGeomInfDefect) and clearing (ClearDefectDisplayee) for detecting and visualizing geometry anomalies in workpieces (see 幾何缺陷掃描)
          • Upgrade internal fraction representation to float128 precision for improved cubetree geometry accuracy and numerical stability
          • -
          • Refactor messaging system from IMessageHost to standard IProgress<T> pattern; SessionMessageHost now implements IProgress<T>, and all messaging methods renamed from Add* to Report* (e.g., AddProgressReportProgress)
          • +
          • Refactor messaging system from IMessageHost to standard IProgress<T> pattern; <xref:Hi.MachiningProcs.SessionMessageHost> now implements IProgress<T>, and all messaging methods renamed from Add* to Report* (e.g., AddProgressReportProgress)
          • Fix cubetree initialization crash
          • Improve postprocess precision by applying sin–cos parameterization instead of direct angle-based formulation for rotary axis numerical solving in XyzabcSolver
          • Add asynchronous anchor solid preparation on project load for improved startup performance
          • diff --git a/App/wwwroot/HiAPI-docsite/index.json b/App/wwwroot/HiAPI-docsite/index.json index 1730f00..8e72596 100644 --- a/App/wwwroot/HiAPI-docsite/index.json +++ b/App/wwwroot/HiAPI-docsite/index.json @@ -52,7 +52,7 @@ "api/Hi.Cbtr.CubeTree.html": { "href": "api/Hi.Cbtr.CubeTree.html", "title": "Class CubeTree | HiAPI-C# 2025", - "summary": "Class CubeTree Namespace Hi.Cbtr Assembly HiCbtr.dll Cube-based data structure. CubeTree has high performance for free-form geometry manipulation include volume removal and addition. public class CubeTree : IDisposable, IDisplayee, ICollidee, ICollidable, IExpandToBox3d, IGetCollidable Inheritance object CubeTree Implements IDisposable IDisplayee ICollidee ICollidable IExpandToBox3d IGetCollidable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CollisionUtil.Detect(CubeTree, TriTree, Mat4d, double, int) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) SweptableUtil.RemoveBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool) CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CubeTree(NativeStl, double, CancellationToken, IProgress) Ctor. This ctor is faster than CubeTree(NativeStl, double, CancellationToken, IProgress). public CubeTree(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress progress) Parameters stl NativeStl Triangle Grid. The triangles must be manifold geometry. preferredGridWidth double The expected resolution. token CancellationToken Cancellation token for the operation progress IProgress Progress reporter for the operation Remarks The applied resolution is equal or smaller than the expected resolution. The applied resolution is c*(2^i). Where c is a constant; i is a integer to make the closest value of the formula. Errors relative to the input geometry are distributed at sharp edges and curved surfaces. CubeTree(Stl, double, CancellationToken, IProgress) Can be initialized with Stl or NativeStl objects; using NativeStl is faster. The input triangle mesh must be manifold geometry, i.e., triangle vertices are aligned with other triangles' vertices, and the geometry must be closed. public CubeTree(Stl stl, double expectedResolution, CancellationToken token, IProgress progress) Parameters stl Stl expectedResolution double Sets the preferred resolution. The actual resolution will be equal to or smaller than the specified value, approximately spaced by powers of 2. Errors relative to the input geometry are distributed at sharp edges and curved surfaces. token CancellationToken Cancellation token for the operation progress IProgress Progress reporter for the operation CubeTree(string) Initializes a new instance of the CubeTree class from a file. public CubeTree(string file) Parameters file string The path to the cube tree file. Fields KeyDll Key dll path. public const string KeyDll = \"hi-key.dll\" Field Value string defaultPreferredGridWidth The default grid_width for the constructor. public const double defaultPreferredGridWidth = 0.0625 Field Value double Properties CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag CubetreePtr Private element. public nint CubetreePtr { get; } Property Value nint DispCacheMb Display cache size in Mb. The cahce cost from graphic card and RAM. public static long DispCacheMb { get; set; } Property Value long Resolution Get initialized resolution. public double Resolution { get; } Property Value double TotalCacheMb Cache size used by CubeTree. Sum of TrisCacheMb and DispCacheMb. TotalCacheMb Setter distributes (2/5 of the setting value) for DispCacheMb. public static long TotalCacheMb { get; set; } Property Value long TrisCacheMb Triangles cache size in Mb. The cache costs from RAM. public static long TrisCacheMb { get; set; } Property Value long Methods CleanCache() Call Hi.Cbtr.CubeTree.CleanTrisCache() and Hi.Cbtr.CubeTree.CleanDispCache_(). public static void CleanCache() CleanDispCachee() Clean display cache of this. public void CleanDispCachee() ContainsInfEdgeCuts() Checks if any existing node in the cube tree contains inf or -inf in its edge_cuts array. public bool ContainsInfEdgeCuts() Returns bool true if any node contains inf or -inf in edge_cuts, false otherwise. Diff(NativeStl, double, RangeColorRule, IProgress) Compares the cube tree with an ideal geometry and returns difference attachments. public ConcurrentBag Diff(NativeStl idealGeom, double diffRadius, RangeColorRule diffRangeColorRule, IProgress progress = null) Parameters idealGeom NativeStl The ideal geometry to compare with. diffRadius double The radius for difference detection. diffRangeColorRule RangeColorRule The color rule for visualizing differences. progress IProgress Progress reporter for the operation. Returns ConcurrentBag A collection of difference attachments. Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~CubeTree() dtor protected ~CubeTree() GetCollidable() Gets the collidable object. public ICollidable GetCollidable() Returns ICollidable The collidable object (this instance). GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetInfEdgeCutsInfo() Gets info for all nodes that contain inf or -inf in their edge_cuts array. Each node's box is grouped with its corresponding inf edge indices. This is useful for identifying and visualizing non-manifold geometry issues in the cube tree. public List GetInfEdgeCutsInfo() Returns List A list of node info, each containing a box and its inf edge indices. GetRgbTrisNativeArray(double) Get triangles in type of double array. The returned triangles is non-manifold. It may not be closed model and the apexes of triangle grid may not be overlapped. public double[] GetRgbTrisNativeArray(double resolution = 0) Parameters resolution double The preferred resolution. The real resolution may be smaller or equal the prefered resolution. The real resolution is discrete. The resolution value is at 2^i. The geometric error mainly locate at corner. Returns double[] rgb traingle grid. In sequence of r,g,b,n.x,n.y,n.z,p0.x,p0.y,p0.z,p1.x,p1.y,p1.z,p2.x,p2.y,p2.z, repetitively. A triangle take 15 double. GetTris(double) Get triangles. The returned triangles is non-manifold. It may not be closed model and the apexes of triangle grid may not be overlapped. public List GetTris(double resolution = 0) Parameters resolution double Sets the preferred resolution. The actual resolution will be equal to or smaller than the specified value, approximately spaced by powers of 2. Errors relative to the input geometry are distributed at sharp edges and curved surfaces. A larger resolution results in fewer triangles and faster computation. Returns List Triangle mesh NewWithDefectInfos(NativeStl, double, CancellationToken, IProgress) Creates a new CubeTree and collects defect node infos during construction. public static (CubeTree cubeTree, List defectInfos) NewWithDefectInfos(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress progress) Parameters stl NativeStl preferredGridWidth double token CancellationToken progress IProgress Returns (CubeTree cubeTree, List defectInfos) NewWithDefectInfos(Stl, double, CancellationToken, IProgress) Creates a new CubeTree and collects defect node infos during construction. public static (CubeTree cubeTree, List defectInfos) NewWithDefectInfos(Stl stl, double preferredGridWidth, CancellationToken token, IProgress progress) Parameters stl Stl preferredGridWidth double token CancellationToken progress IProgress Returns (CubeTree cubeTree, List defectInfos) RebuildAttach(CbtrPickable) Every node in CubeTree can contain one CbtrPickable object. This function put or replace the contained data of all nodes to src. Using UpdateAttach(CbtrPickable) will place nodes that have not yet stored data (CbtrPickable is null) into src. public void RebuildAttach(CbtrPickable src) Parameters src CbtrPickable RemoveFlyPiece() Removes disconnected pieces (fly pieces) from the cube tree. public void RemoveFlyPiece() Substract(CachedTris, double, bool, bool) Using BufferedTris is more efficient than NativeStl. If the resolution of the subtraction region differs from the body's resolution, the lower resolution is applied to that region. public UnmanagedSubstraction Substract(CachedTris cutterBufferedTris, double preferredCubeWidth, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters cutterBufferedTris CachedTris Subtraction geometry preferredCubeWidth double The preferred cube width for the operation. isBuildContactContours bool If true, the returned Substraction contains contour groups at the intersection of the subtraction geometry and the workpiece geometry, which can be used for further analysis. isAggressiveCut bool If true, uses aggressive cutting mode. Returns UnmanagedSubstraction Substract(GeomBoolCache, bool, bool) Subtracts a geometry from the cube tree using a geometry boolean cache. public UnmanagedSubstraction Substract(GeomBoolCache geomBoolCache, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters geomBoolCache GeomBoolCache The geometry boolean cache containing the geometry to subtract. isBuildContactContours bool If true, the returned Substraction will contain contact contours. isAggressiveCut bool If true, uses aggressive cutting mode. Returns UnmanagedSubstraction The result of the subtraction operation. Substract(InitStickConvex, Mat4d, double, bool, bool) Subtracts a stick convex geometry from the cube tree. public UnmanagedSubstraction Substract(InitStickConvex initStickConvex, Mat4d mat, double preferredCubeWidth, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters initStickConvex InitStickConvex The stick convex geometry to subtract. mat Mat4d The transformation matrix to apply to the stick convex. preferredCubeWidth double The preferred cube width for the operation. isBuildContactContours bool If true, the returned Substraction will contain contact contours. isAggressiveCut bool If true, uses aggressive cutting mode. Returns UnmanagedSubstraction The result of the subtraction operation. Substract(NativeStl, double, bool, bool) Same functionality as Substract(BufferedTris,...). Less efficient due to the additional step of converting to CachedTris. public UnmanagedSubstraction Substract(NativeStl cutterStl, double preferredCubeWidth = 0, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters cutterStl NativeStl preferredCubeWidth double isBuildContactContours bool isAggressiveCut bool Returns UnmanagedSubstraction TestDiff(out CubeTree, out NativeStl) Tests the difference calculation between a cube tree and an ideal geometry. public static void TestDiff(out CubeTree cubeTree_, out NativeStl idealGeom_) Parameters cubeTree_ CubeTree The resulting cube tree. idealGeom_ NativeStl The ideal geometry used for comparison. TestIO() Tests the input/output operations for a cube tree. public static CubeTree TestIO() Returns CubeTree The cube tree created or loaded during the test. TestSimpleRemove(out CubeTree) Tests the simple removal operation on a cube tree. public static void TestSimpleRemove(out CubeTree cubeTree_) Parameters cubeTree_ CubeTree The resulting cube tree after the removal operation. UpdateAttach(CbtrPickable) Every node in CubeTree can contain one CbtrPickable object. This function put src to the nodes that contain null. public void UpdateAttach(CbtrPickable src) Parameters src CbtrPickable WriteFile(string) Writes the cube tree to a file. public void WriteFile(string file) Parameters file string The path where the cube tree will be written." + "summary": "Class CubeTree Namespace Hi.Cbtr Assembly HiCbtr.dll Cube-based data structure. CubeTree has high performance for free-form geometry manipulation include volume removal and addition. public class CubeTree : IDisposable, IDisplayee, ICollidee, ICollidable, IExpandToBox3d, IGetCollidable Inheritance object CubeTree Implements IDisposable IDisplayee ICollidee ICollidable IExpandToBox3d IGetCollidable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CollisionUtil.Detect(CubeTree, TriTree, Mat4d, double, int) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) SweptableUtil.RemoveBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool) CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CubeTree(NativeStl, double, CancellationToken, IProgress) Ctor. This ctor is faster than CubeTree(NativeStl, double, CancellationToken, IProgress). public CubeTree(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress progress) Parameters stl NativeStl Triangle Grid. The triangles must be manifold geometry. preferredGridWidth double The expected resolution. token CancellationToken Cancellation token for the operation progress IProgress Progress reporter for the operation Remarks The applied resolution is equal or smaller than the expected resolution. The applied resolution is c*(2^i). Where c is a constant; i is a integer to make the closest value of the formula. Errors relative to the input geometry are distributed at sharp edges and curved surfaces. CubeTree(Stl, double, CancellationToken, IProgress) Can be initialized with Stl or NativeStl objects; using NativeStl is faster. The input triangle mesh must be manifold geometry, i.e., triangle vertices are aligned with other triangles' vertices, and the geometry must be closed. public CubeTree(Stl stl, double expectedResolution, CancellationToken token, IProgress progress) Parameters stl Stl expectedResolution double Sets the preferred resolution. The actual resolution will be equal to or smaller than the specified value, approximately spaced by powers of 2. Errors relative to the input geometry are distributed at sharp edges and curved surfaces. token CancellationToken Cancellation token for the operation progress IProgress Progress reporter for the operation CubeTree(string) Initializes a new instance of the CubeTree class from a file. public CubeTree(string file) Parameters file string The path to the cube tree file. Fields KeyDll Key dll path. public const string KeyDll = \"hi-key.dll\" Field Value string defaultPreferredGridWidth The default grid_width for the constructor. public const double defaultPreferredGridWidth = 0.0625 Field Value double Properties CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag CubetreePtr Private element. public nint CubetreePtr { get; } Property Value nint DispCacheMb Display cache size in Mb. The cahce cost from graphic card and RAM. public static long DispCacheMb { get; set; } Property Value long Resolution Get initialized resolution. public double Resolution { get; } Property Value double TotalCacheMb Cache size used by CubeTree. Sum of TrisCacheMb and DispCacheMb. TotalCacheMb Setter distributes (2/5 of the setting value) for DispCacheMb. public static long TotalCacheMb { get; set; } Property Value long TrisCacheMb Triangles cache size in Mb. The cache costs from RAM. public static long TrisCacheMb { get; set; } Property Value long Methods CleanCache() Call Hi.Cbtr.CubeTree.CleanTrisCache() and Hi.Cbtr.CubeTree.CleanDispCache_(). public static void CleanCache() CleanDispCachee() Clean display cache of this. public void CleanDispCachee() ContainsInfEdgeCuts() Checks if any existing node in the cube tree contains inf or -inf in its edge_cuts array. public bool ContainsInfEdgeCuts() Returns bool true if any node contains inf or -inf in edge_cuts, false otherwise. Diff(NativeStl, double, RangeColorRule, IProgress) Compares the cube tree with an ideal geometry and returns difference attachments. public ConcurrentBag Diff(NativeStl idealGeom, double diffRadius, RangeColorRule diffRangeColorRule, IProgress progress = null) Parameters idealGeom NativeStl The ideal geometry to compare with. diffRadius double The radius for difference detection. diffRangeColorRule RangeColorRule The color rule for visualizing differences. progress IProgress Progress reporter for the operation. Returns ConcurrentBag A collection of difference attachments. Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~CubeTree() dtor protected ~CubeTree() GetCollidable() Gets the collidable object. public ICollidable GetCollidable() Returns ICollidable The collidable object (this instance). GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetInfEdgeCutsInfo() Gets info for all nodes that contain inf or -inf in their edge_cuts array. Each node's box is grouped with its corresponding inf edge indices. This is useful for identifying and visualizing non-manifold geometry issues in the cube tree. public List GetInfEdgeCutsInfo() Returns List A list of node info, each containing a box and its inf edge indices. GetRgbTrisNativeArray(double) Get triangles in type of double array. The returned triangles is non-manifold. It may not be closed model and the apexes of triangle grid may not be overlapped. public double[] GetRgbTrisNativeArray(double resolution = 0) Parameters resolution double The preferred resolution. The real resolution may be smaller or equal the prefered resolution. The real resolution is discrete. The resolution value is at 2^i. The geometric error mainly locate at corner. Returns double[] rgb traingle grid. In sequence of r,g,b,n.x,n.y,n.z,p0.x,p0.y,p0.z,p1.x,p1.y,p1.z,p2.x,p2.y,p2.z, repetitively. A triangle take 15 double. GetTris(double) Get triangles. The returned triangles is non-manifold. It may not be closed model and the apexes of triangle grid may not be overlapped. public List GetTris(double resolution = 0) Parameters resolution double Sets the preferred resolution. The actual resolution will be equal to or smaller than the specified value, approximately spaced by powers of 2. Errors relative to the input geometry are distributed at sharp edges and curved surfaces. A larger resolution results in fewer triangles and faster computation. Returns List Triangle mesh NewWithDefectInfos(NativeStl, double, CancellationToken, IProgress) Creates a new CubeTree and collects defect node infos during construction. public static (CubeTree cubeTree, List defectInfos) NewWithDefectInfos(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress progress) Parameters stl NativeStl preferredGridWidth double token CancellationToken progress IProgress Returns (CubeTree cubeTree, List defectInfos) NewWithDefectInfos(Stl, double, CancellationToken, IProgress) Creates a new CubeTree and collects defect node infos during construction. public static (CubeTree cubeTree, List defectInfos) NewWithDefectInfos(Stl stl, double preferredGridWidth, CancellationToken token, IProgress progress) Parameters stl Stl preferredGridWidth double token CancellationToken progress IProgress Returns (CubeTree cubeTree, List defectInfos) RebuildAttach(CbtrPickable) Every node in CubeTree can contain one CbtrPickable object. This function put or replace the contained data of all nodes to src. Using UpdateAttach(CbtrPickable) will place nodes that have not yet stored data (CbtrPickable is null) into src. public void RebuildAttach(CbtrPickable src) Parameters src CbtrPickable RemoveFlyPiece() Removes disconnected pieces (fly pieces) from the cube tree. public void RemoveFlyPiece() Substract(CachedTris, double, bool, bool) Using BufferedTris is more efficient than NativeStl. If the resolution of the subtraction region differs from the body's resolution, the lower resolution is applied to that region. public UnmanagedSubstraction Substract(CachedTris cutterBufferedTris, double preferredCubeWidth, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters cutterBufferedTris CachedTris Subtraction geometry preferredCubeWidth double The preferred cube width for the operation. isBuildContactContours bool If true, the returned Substraction contains contour groups at the intersection of the subtraction geometry and the workpiece geometry, which can be used for further analysis. isAggressiveCut bool If true, uses aggressive cutting mode. Returns UnmanagedSubstraction Substract(GeomBoolCache, bool, bool) Subtracts a geometry from the cube tree using a geometry boolean cache. public UnmanagedSubstraction Substract(GeomBoolCache geomBoolCache, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters geomBoolCache GeomBoolCache The geometry boolean cache containing the geometry to subtract. isBuildContactContours bool If true, the returned Substraction will contain contact contours. isAggressiveCut bool If true, uses aggressive cutting mode. Returns UnmanagedSubstraction The result of the subtraction operation. Substract(InitStickConvex, Mat4d, double, bool, bool) Subtracts a stick convex geometry from the cube tree. public UnmanagedSubstraction Substract(InitStickConvex initStickConvex, Mat4d mat, double preferredCubeWidth, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters initStickConvex InitStickConvex The stick convex geometry to subtract. mat Mat4d The transformation matrix to apply to the stick convex. preferredCubeWidth double The preferred cube width for the operation. isBuildContactContours bool If true, the returned Substraction will contain contact contours. isAggressiveCut bool If true, uses aggressive cutting mode. Returns UnmanagedSubstraction The result of the subtraction operation. Substract(NativeStl, double, bool, bool) Same functionality as Substract(BufferedTris,...). Less efficient due to the additional step of converting to CachedTris. public UnmanagedSubstraction Substract(NativeStl cutterStl, double preferredCubeWidth = 0, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters cutterStl NativeStl preferredCubeWidth double isBuildContactContours bool isAggressiveCut bool Returns UnmanagedSubstraction TestDiff(out CubeTree, out NativeStl) Tests the difference calculation between a cube tree and an ideal geometry. public static void TestDiff(out CubeTree cubeTree_, out NativeStl idealGeom_) Parameters cubeTree_ CubeTree The resulting cube tree. idealGeom_ NativeStl The ideal geometry used for comparison. TestIO() Tests the input/output operations for a cube tree. public static CubeTree TestIO() Returns CubeTree The cube tree created or loaded during the test. TestSimpleRemove(out CubeTree) Tests the simple removal operation on a cube tree. public static void TestSimpleRemove(out CubeTree cubeTree_) Parameters cubeTree_ CubeTree The resulting cube tree after the removal operation. UpdateAttach(CbtrPickable) Every node in CubeTree can contain one CbtrPickable object. This function put src to the nodes that contain null. public void UpdateAttach(CbtrPickable src) Parameters src CbtrPickable WriteFile(string) Writes the cube tree to a file. public void WriteFile(string file) Parameters file string The path where the cube tree will be written." }, "api/Hi.Cbtr.CubeTreeFile.html": { "href": "api/Hi.Cbtr.CubeTreeFile.html", @@ -654,6 +654,11 @@ "title": "Interface IPreferredFileName | HiAPI-C# 2025", "summary": "Interface IPreferredFileName Namespace Hi.Common Assembly HiGeom.dll Interface for objects that can specify a preferred file name. Generally used to suggest a name when generating or saving files. public interface IPreferredFileName Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties PreferredFileName Gets or sets the preferred file name for this object when generating or saving files. string PreferredFileName { get; set; } Property Value string" }, + "api/Hi.Common.IProgressFraction.html": { + "href": "api/Hi.Common.IProgressFraction.html", + "title": "Interface IProgressFraction | HiAPI-C# 2025", + "summary": "Interface IProgressFraction Namespace Hi.Common Assembly HiDisp.dll Interface for progress reporting functionality. public interface IProgressFraction Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetDenominator() Gets the denominator value for progress calculation. int GetDenominator() Returns int The denominator value. GetDetail() Gets the detailed information about the progress. string GetDetail() Returns string The detail string. GetMsg() Get message. string GetMsg() Returns string The message string. GetNumerator() Gets the numerator value for progress calculation. int GetNumerator() Returns int The numerator value." + }, "api/Hi.Common.ISourceFile.html": { "href": "api/Hi.Common.ISourceFile.html", "title": "Interface ISourceFile | HiAPI-C# 2025", @@ -744,10 +749,10 @@ "title": "Enum MessageFlag | HiAPI-C# 2025", "summary": "Enum MessageFlag Namespace Hi.Common.Messages Assembly HiGeom.dll Enumeration of common message types used for system notifications. public enum MessageFlag Extension Methods InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MaskUtil.GetMaskedValue(T, T, bool) MaskUtil.SetMask(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Error = 1 General error messages. For exception which is consciously handled. Exception = 0 System error messages. For exception which is not consciously handled. Info = 7 System behavior that end user not need to know. The message make help to tracing end user behavior. Message = 6 Something else from the upper flags to tell the end user. Progress = 4 Progress update messages. Success = 5 Progress complete on success messages. Warning = 2 Warning messages." }, - "api/Hi.Common.Messages.MessageHost.html": { - "href": "api/Hi.Common.Messages.MessageHost.html", - "title": "Class MessageHost | HiAPI-C# 2025", - "summary": "Class MessageHost Namespace Hi.Common.Messages Assembly HiGeom.dll Provides utility methods for handling messages. public static class MessageHost Inheritance object MessageHost Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties Default Gets the default MessageKit instance. public static Progress Default { get; set; } Property Value Progress Methods Default_ProgressChanged(object, object) Default handler for progress changes that writes the argument to the console. public static void Default_ProgressChanged(object sender, object arg) Parameters sender object The event sender. arg object The progress argument to display. ReportError(string) Adds an error message to the default message kit. Apply ExceptionUtil.ShowException(Exception, object) if the error message comes from exception for better treatment. public static void ReportError(string message) Parameters message string The message to write. ReportException(Exception) Adds an exception to the default message kit. public static void ReportException(Exception exception) Parameters exception Exception The exception to add. ReportInfo(string) Adds an info message to the default message kit. public static void ReportInfo(string message) Parameters message string The message to write. ReportMessage(string) Adds a plain message to the default message kit. public static void ReportMessage(string message) Parameters message string The message to write. ReportProgress(string) Adds a progress message to the default message kit. public static void ReportProgress(string message) Parameters message string The message to write. ReportSuccess(string) Adds a success message to the default message kit. public static void ReportSuccess(string message) Parameters message string The message to write. ReportWarning(string) Adds a warning message to the default message kit. public static void ReportWarning(string message) Parameters message string The message to write." + "api/Hi.Common.Messages.MessageUtil.html": { + "href": "api/Hi.Common.Messages.MessageUtil.html", + "title": "Class MessageUtil | HiAPI-C# 2025", + "summary": "Class MessageUtil Namespace Hi.Common.Messages Assembly HiGeom.dll Provides utility methods for handling messages. public static class MessageUtil Inheritance object MessageUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties Default Gets the default MessageKit instance. public static Progress Default { get; set; } Property Value Progress Methods Default_ProgressChanged(object, object) Default handler for progress changes that writes the argument to the console. public static void Default_ProgressChanged(object sender, object arg) Parameters sender object The event sender. arg object The progress argument to display. ReportError(string) Adds an error message to the default message kit. Apply ExceptionUtil.ShowException(Exception, object) if the error message comes from exception for better treatment. public static void ReportError(string message) Parameters message string The message to write. ReportException(Exception) Adds an exception to the default message kit. public static void ReportException(Exception exception) Parameters exception Exception The exception to add. ReportInfo(string) Adds an info message to the default message kit. public static void ReportInfo(string message) Parameters message string The message to write. ReportMessage(string) Adds a plain message to the default message kit. public static void ReportMessage(string message) Parameters message string The message to write. ReportProgress(string) Adds a progress message to the default message kit. public static void ReportProgress(string message) Parameters message string The message to write. ReportSuccess(string) Adds a success message to the default message kit. public static void ReportSuccess(string message) Parameters message string The message to write. ReportWarning(string) Adds a warning message to the default message kit. public static void ReportWarning(string message) Parameters message string The message to write." }, "api/Hi.Common.Messages.MultiTagMessage.html": { "href": "api/Hi.Common.Messages.MultiTagMessage.html", @@ -767,7 +772,7 @@ "api/Hi.Common.Messages.html": { "href": "api/Hi.Common.Messages.html", "title": "Namespace Hi.Common.Messages | HiAPI-C# 2025", - "summary": "Namespace Hi.Common.Messages Classes MessageBoardUtil Utility class for displaying messages on a message board. MessageHost Provides utility methods for handling messages. MultiTagMessage Represents a message with multiple tags for categorization and filtering. MultiTagMessageUtil Utility methods for working with IProgress implementations. Enums BootstrapTheme Bootstrap theme colors for UI styling. MessageFlag Enumeration of common message types used for system notifications. Delegates ShowMessageBoardDelegate Delegate for showing message board notifications." + "summary": "Namespace Hi.Common.Messages Classes MessageBoardUtil Utility class for displaying messages on a message board. MessageUtil Provides utility methods for handling messages. MultiTagMessage Represents a message with multiple tags for categorization and filtering. MultiTagMessageUtil Utility methods for working with IProgress implementations. Enums BootstrapTheme Bootstrap theme colors for UI styling. MessageFlag Enumeration of common message types used for system notifications. Delegates ShowMessageBoardDelegate Delegate for showing message board notifications." }, "api/Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html": { "href": "api/Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html", @@ -789,25 +794,15 @@ "title": "Class NameUtil | HiAPI-C# 2025", "summary": "Class NameUtil Namespace Hi.Common Assembly HiGeom.dll Utility class for handling object names and display names. public static class NameUtil Inheritance object NameUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields UnsetText Default text used when a name is not set. public const string UnsetText = \"Unset\" Field Value string Methods GetSelectionName(object) Gets the selection name for an object, using custom implementation if available, or falling back to type display name or type name. public static string GetSelectionName(this object src) Parameters src object The source object to get the name for Returns string The selection name for the object GetSelectionName(Type) Gets the selection name for a type, using its DisplayName attribute if available, or falling back to the type name. public static string GetSelectionName(this Type type) Parameters type Type The type to get the name for Returns string The selection name for the type" }, - "api/Hi.Common.NativeProgresses.IProgressReport.html": { - "href": "api/Hi.Common.NativeProgresses.IProgressReport.html", - "title": "Interface IProgressReport | HiAPI-C# 2025", - "summary": "Interface IProgressReport Namespace Hi.Common.NativeProgresses Assembly HiDisp.dll Interface for progress reporting functionality. public interface IProgressReport Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetDenominator() Gets the denominator value for progress calculation. int GetDenominator() Returns int The denominator value. GetDetail() Gets the detailed information about the progress. string GetDetail() Returns string The detail string. GetMsg() Get message. string GetMsg() Returns string The message string. GetNumerator() Gets the numerator value for progress calculation. int GetNumerator() Returns int The numerator value." - }, - "api/Hi.Common.NativeProgresses.NativeProgressReport.html": { - "href": "api/Hi.Common.NativeProgresses.NativeProgressReport.html", - "title": "Class NativeProgressReport | HiAPI-C# 2025", - "summary": "Class NativeProgressReport Namespace Hi.Common.NativeProgresses Assembly HiDisp.dll Native implementation of the progress report interface. public class NativeProgressReport : IProgressReport Inheritance object NativeProgressReport Implements IProgressReport Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NativeProgressReport(progress_monitor_t*) Initializes a new instance of the NativeProgressReport class. public NativeProgressReport(progress_monitor_t* progress_monitor_ptr) Parameters progress_monitor_ptr progress_monitor_t* Pointer to the native progress monitor. Methods GetDenominator() Gets the denominator value for progress calculation. public int GetDenominator() Returns int The denominator value. GetDetail() Gets the detailed information about the progress. public string GetDetail() Returns string The detail string. GetMsg() Get message. public string GetMsg() Returns string The message string. GetNumerator() Gets the numerator value for progress calculation. public int GetNumerator() Returns int The numerator value." - }, - "api/Hi.Common.NativeProgresses.ProgressReport.html": { - "href": "api/Hi.Common.NativeProgresses.ProgressReport.html", - "title": "Class ProgressReport | HiAPI-C# 2025", - "summary": "Class ProgressReport Namespace Hi.Common.NativeProgresses Assembly HiDisp.dll Represents a progress report implementation. public class ProgressReport : IProgressReport Inheritance object ProgressReport Implements IProgressReport Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ProgressReport(NativeProgressReport) Initializes a new instance of the ProgressReport class from a native progress report. public ProgressReport(NativeProgressReport src) Parameters src NativeProgressReport The native progress report source. Properties Denominator Gets or sets the denominator value for progress calculation. public int Denominator { get; set; } Property Value int Detail Gets or sets the detailed information about the progress. public string Detail { get; set; } Property Value string Msg Gets or sets the message string. public string Msg { get; set; } Property Value string Numerator Gets or sets the numerator value for progress calculation. public int Numerator { get; set; } Property Value int Methods GetDenominator() Gets the denominator value for progress calculation. public int GetDenominator() Returns int The denominator value. GetDetail() Gets the detailed information about the progress. public string GetDetail() Returns string The detail string. GetMsg() Get message. public string GetMsg() Returns string The message string. GetNumerator() Gets the numerator value for progress calculation. public int GetNumerator() Returns int The numerator value." + "api/Hi.Common.NativeProgresses.NativeProgressFraction.html": { + "href": "api/Hi.Common.NativeProgresses.NativeProgressFraction.html", + "title": "Class NativeProgressFraction | HiAPI-C# 2025", + "summary": "Class NativeProgressFraction Namespace Hi.Common.NativeProgresses Assembly HiDisp.dll Native implementation of the progress report interface. public class NativeProgressFraction : IProgressFraction Inheritance object NativeProgressFraction Implements IProgressFraction Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NativeProgressFraction(progress_monitor_t*) Initializes a new instance of the NativeProgressFraction class. public NativeProgressFraction(progress_monitor_t* progress_monitor_ptr) Parameters progress_monitor_ptr progress_monitor_t* Pointer to the native progress monitor. Methods GetDenominator() Gets the denominator value for progress calculation. public int GetDenominator() Returns int The denominator value. GetDetail() Gets the detailed information about the progress. public string GetDetail() Returns string The detail string. GetMsg() Get message. public string GetMsg() Returns string The message string. GetNumerator() Gets the numerator value for progress calculation. public int GetNumerator() Returns int The numerator value." }, "api/Hi.Common.NativeProgresses.html": { "href": "api/Hi.Common.NativeProgresses.html", "title": "Namespace Hi.Common.NativeProgresses | HiAPI-C# 2025", - "summary": "Namespace Hi.Common.NativeProgresses Classes NativeProgressReport Native implementation of the progress report interface. ProgressReport Represents a progress report implementation. Structs progress_monitor_t Native structure for progress monitoring. Interfaces IProgressReport Interface for progress reporting functionality. Delegates report_progress_func_t Delegate for reporting progress from native code." + "summary": "Namespace Hi.Common.NativeProgresses Classes NativeProgressFraction Native implementation of the progress report interface. Structs progress_monitor_t Native structure for progress monitoring. Delegates report_progress_func_t Delegate for reporting progress from native code." }, "api/Hi.Common.NativeProgresses.progress_monitor_t.html": { "href": "api/Hi.Common.NativeProgresses.progress_monitor_t.html", @@ -889,6 +884,11 @@ "title": "Namespace Hi.Common.PathUtils | HiAPI-C# 2025", "summary": "Namespace Hi.Common.PathUtils Classes ExtendedNamedPath Represents a path with a named base path and an optional extended path component. HttpUtil Utility class for HTTP operations such as URL validation and content retrieval. Lang Provides language-related utilities for path handling. NamedPath Represents a file system path with an associated name or alias. PathUtil Utility class for path manipulation and management." }, + "api/Hi.Common.ProgressFraction.html": { + "href": "api/Hi.Common.ProgressFraction.html", + "title": "Class ProgressFraction | HiAPI-C# 2025", + "summary": "Class ProgressFraction Namespace Hi.Common Assembly HiDisp.dll Represents a progress report implementation. public class ProgressFraction : IProgressFraction Inheritance object ProgressFraction Implements IProgressFraction Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ProgressFraction(NativeProgressFraction) Initializes a new instance of the ProgressFraction class from a native progress report. public ProgressFraction(NativeProgressFraction src) Parameters src NativeProgressFraction The native progress report source. Properties Denominator Gets or sets the denominator value for progress calculation. public int Denominator { get; set; } Property Value int Detail Gets or sets the detailed information about the progress. public string Detail { get; set; } Property Value string Msg Gets or sets the message string. public string Msg { get; set; } Property Value string Numerator Gets or sets the numerator value for progress calculation. public int Numerator { get; set; } Property Value int Methods GetDenominator() Gets the denominator value for progress calculation. public int GetDenominator() Returns int The denominator value. GetDetail() Gets the detailed information about the progress. public string GetDetail() Returns string The detail string. GetMsg() Get message. public string GetMsg() Returns string The message string. GetNumerator() Gets the numerator value for progress calculation. public int GetNumerator() Returns int The numerator value." + }, "api/Hi.Common.QueueCacheUtils.QueueCacher-1.html": { "href": "api/Hi.Common.QueueCacheUtils.QueueCacher-1.html", "title": "Class QueueCacher | HiAPI-C# 2025", @@ -1017,7 +1017,7 @@ "api/Hi.Common.html": { "href": "api/Hi.Common.html", "title": "Namespace Hi.Common | HiAPI-C# 2025", - "summary": "Namespace Hi.Common Classes BinIoUtil Utility class for binary I/O operations. BitUtil Utility for bit control for integer. BlockingTimer Timer use one task and delay each event call. The delay time is Period, counted from the previous trigger to the nest trigger. The first function call does no intending delay. If the execution time is over the Period, no delay between the triggers. BytesUtil Utility class for byte array operations and memory size conversions. ConcurrentTimeCounter Thread-safe utility for measuring and tracking execution time across multiple tasks. ConsoleUtil Utility class for console window operations. CppLogUtil Internal Use Only. CultureUtil Utility class for managing culture and localization settings. DebugUtil Debug utility provides functions: pause process, count execution time and show the count. DuplicateUtil Utility methods for duplication operations. EnumUtil Utility class for enum operations. EnumerablePlayer Run enumerable with Pause(), Resume() and etc. functions. ExceptionUtil Provides utility methods for handling exceptions. IndexSegment Represents a segment of indices with a beginning (inclusive) and ending (exclusive> point. Used for defining segment of data in collections or arrays. IntegerKeyDictionaryConverter Converts dictionaries with string keys to dictionaries with integer keys for more efficient storage and lookup. IntegerKeyDictionaryConverter Generic version of IntegerKeyDictionaryConverter that works with a specific value type. InternalException Exception that represents an internal error that should never occur during normal operation. Used to indicate programming errors or unexpected states that require developer attention. InvokeUtil Utility class for method invocation operations. JsonUtil Helper utilities for reading and writing JSON files. LooseRunner Provides a mechanism for running actions asynchronously in a loose manner. Only the most recent action is executed and previous pending actions are discarded. ManualUtil Utility class for handling manual and documentation files with culture support. MaskUtil Utility for bits masking. NameUtil Utility class for handling object names and display names. PacePlayee Represents an entity that can be controlled by the pace player. PacePlayer Controls the pace execution of a task. Pair Editable pair values. Range Range from Min to Max. ResourceUtil Utility class for working with resource managers and localized strings. RoutineBlocker Block the thread to the given delay from the previous block. RoutineBlocker0 Block the thread to the given delay from the previous block. SeqPairUtil Utility class for SeqPair operations. SeqPair Represents a sequence pair containing previous and current values. Used to track sequential state changes of a value. ServerFileExplorerConfig Configuration for server file explorer functionality. StringLocalizer Provides localization functionality for strings using resource managers. StringUtil Utility for managing text. TaskUtil Utility class for Task-related operations. TimeCounter A utility counts the average/total time consume between the Bound(object) areas. The count of time consume for the given key starts at the first time (and the odd time) calling Bound(object); stops and accumulates at the second time (and the even time). Interfaces IAbstractNote Interface for objects that provide an abstract description or note. IBinaryIo Interface for binary input/output operations. Extends IWriteBin to provide both read and write capabilities. IClearCache Interface for objects that can clear their internal cache. IDuplicate Interface for objects that support deep cloning/duplication. IGetQuantityByKey Interface for retrieving a quantity value using a string key. IGetSelectionName Interface for objects that can provide a name for selection purposes. INameNote Interface for objects that have a name and note property. IPreferredFileName Interface for objects that can specify a preferred file name. Generally used to suggest a name when generating or saving files. ISourceFile Interface for objects that have a source file. IToPresentDto Interface for converting objects to presentation DTOs (Data Transfer Objects) for JSON serialization. IUpdateByContent Interface for objects that can update themselves based on their content. IUriGetter Interface for retrieving a URI string. IWriteBin Interface for writing binary data. Enums SearchResult Represents the result of a search operation. Delegates CppLogUtil.LogDelegate Internal Use Only. LooseRunner.MergedCancellationTokenRun Delegate for actions that accept a merged cancellation token. The merged token combines the runner's disposal token with an optional external cancellation token." + "summary": "Namespace Hi.Common Classes BinIoUtil Utility class for binary I/O operations. BitUtil Utility for bit control for integer. BlockingTimer Timer use one task and delay each event call. The delay time is Period, counted from the previous trigger to the nest trigger. The first function call does no intending delay. If the execution time is over the Period, no delay between the triggers. BytesUtil Utility class for byte array operations and memory size conversions. ConcurrentTimeCounter Thread-safe utility for measuring and tracking execution time across multiple tasks. ConsoleUtil Utility class for console window operations. CppLogUtil Internal Use Only. CultureUtil Utility class for managing culture and localization settings. DebugUtil Debug utility provides functions: pause process, count execution time and show the count. DuplicateUtil Utility methods for duplication operations. EnumUtil Utility class for enum operations. EnumerablePlayer Run enumerable with Pause(), Resume() and etc. functions. ExceptionUtil Provides utility methods for handling exceptions. IndexSegment Represents a segment of indices with a beginning (inclusive) and ending (exclusive> point. Used for defining segment of data in collections or arrays. IntegerKeyDictionaryConverter Converts dictionaries with string keys to dictionaries with integer keys for more efficient storage and lookup. IntegerKeyDictionaryConverter Generic version of IntegerKeyDictionaryConverter that works with a specific value type. InternalException Exception that represents an internal error that should never occur during normal operation. Used to indicate programming errors or unexpected states that require developer attention. InvokeUtil Utility class for method invocation operations. JsonUtil Helper utilities for reading and writing JSON files. LooseRunner Provides a mechanism for running actions asynchronously in a loose manner. Only the most recent action is executed and previous pending actions are discarded. ManualUtil Utility class for handling manual and documentation files with culture support. MaskUtil Utility for bits masking. NameUtil Utility class for handling object names and display names. PacePlayee Represents an entity that can be controlled by the pace player. PacePlayer Controls the pace execution of a task. Pair Editable pair values. ProgressFraction Represents a progress report implementation. Range Range from Min to Max. ResourceUtil Utility class for working with resource managers and localized strings. RoutineBlocker Block the thread to the given delay from the previous block. RoutineBlocker0 Block the thread to the given delay from the previous block. SeqPairUtil Utility class for SeqPair operations. SeqPair Represents a sequence pair containing previous and current values. Used to track sequential state changes of a value. ServerFileExplorerConfig Configuration for server file explorer functionality. StringLocalizer Provides localization functionality for strings using resource managers. StringUtil Utility for managing text. TaskUtil Utility class for Task-related operations. TimeCounter A utility counts the average/total time consume between the Bound(object) areas. The count of time consume for the given key starts at the first time (and the odd time) calling Bound(object); stops and accumulates at the second time (and the even time). Interfaces IAbstractNote Interface for objects that provide an abstract description or note. IBinaryIo Interface for binary input/output operations. Extends IWriteBin to provide both read and write capabilities. IClearCache Interface for objects that can clear their internal cache. IDuplicate Interface for objects that support deep cloning/duplication. IGetQuantityByKey Interface for retrieving a quantity value using a string key. IGetSelectionName Interface for objects that can provide a name for selection purposes. INameNote Interface for objects that have a name and note property. IPreferredFileName Interface for objects that can specify a preferred file name. Generally used to suggest a name when generating or saving files. IProgressFraction Interface for progress reporting functionality. ISourceFile Interface for objects that have a source file. IToPresentDto Interface for converting objects to presentation DTOs (Data Transfer Objects) for JSON serialization. IUpdateByContent Interface for objects that can update themselves based on their content. IUriGetter Interface for retrieving a URI string. IWriteBin Interface for writing binary data. Enums SearchResult Represents the result of a search operation. Delegates CppLogUtil.LogDelegate Internal Use Only. LooseRunner.MergedCancellationTokenRun Delegate for actions that accept a merged cancellation token. The merged token combines the runner's disposal token with an optional external cancellation token." }, "api/Hi.CutterLocations.ClPath.ClCircleArc.html": { "href": "api/Hi.CutterLocations.ClPath.ClCircleArc.html", @@ -1897,12 +1897,12 @@ "api/Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html": { "href": "api/Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html", "title": "Interface IMachiningEquipment | HiAPI-C# 2025", - "summary": "Interface IMachiningEquipment Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Machining equipment. public interface IMachiningEquipment : IDisplayee, IExpandToBox3d, IMakeXmlSource, IGetAnchoredDisplayeeList, IGetProgramCl, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetMachiningChain Inherited Members IDisplayee.Display(Bind) IExpandToBox3d.ExpandToBox3d(Box3d) IMakeXmlSource.MakeXmlSource(string, string, bool) IGetAnchoredDisplayeeList.GetAnchoredDisplayeeList() IGetProgramCl.GetProgramCl() IGetAsmb.GetAsmb() IGetAnchor.GetAnchor() IGetMachiningChain.GetMachiningChain() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MachiningEquipmentUtil.GetMcXyz_AttacherAtProgramZero(IMachiningEquipment) MachiningEquipmentUtil.GetMcXyz_AttacherAtTableBuckleZero(IMachiningEquipment) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Fixture Fixture of workpiece. Fixture Fixture { get; set; } Property Value Fixture MachiningTool Milling tool. IMachiningTool MachiningTool { get; set; } Property Value IMachiningTool TableToComp Component transformation from table. ITransformer TableToComp { get; set; } Property Value ITransformer Workpiece Workpiece. Workpiece Workpiece { get; set; } Property Value Workpiece" + "summary": "Interface IMachiningEquipment Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Machining equipment. public interface IMachiningEquipment : IDisplayee, IExpandToBox3d, IMakeXmlSource, IGetAnchoredDisplayeeList, IGetProgramCl, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetMachiningChain Inherited Members IDisplayee.Display(Bind) IExpandToBox3d.ExpandToBox3d(Box3d) IMakeXmlSource.MakeXmlSource(string, string, bool) IGetAnchoredDisplayeeList.GetAnchoredDisplayeeList() IGetProgramCl.GetProgramCl() IGetAsmb.GetAsmb() IGetAnchor.GetAnchor() IGetMachiningChain.GetMachiningChain() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MachiningEquipmentUtil.GetIsoCoordinatePosition(IMachiningEquipment, Vec3d) MachiningEquipmentUtil.GetMcXyz_AttacherAtProgramZero(IMachiningEquipment) MachiningEquipmentUtil.GetMcXyz_AttacherAtTableBuckleZero(IMachiningEquipment) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Fixture Fixture of workpiece. Fixture Fixture { get; set; } Property Value Fixture MachiningTool Milling tool. IMachiningTool MachiningTool { get; set; } Property Value IMachiningTool TableToComp Component transformation from table. ITransformer TableToComp { get; set; } Property Value ITransformer Workpiece Workpiece. Workpiece Workpiece { get; set; } Property Value Workpiece" }, "api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html": { "href": "api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html", "title": "Class MachiningEquipment | HiAPI-C# 2025", - "summary": "Class MachiningEquipment Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Machining Equipment. Include the machining chain, workpiece, tool and fixture, etc.. public class MachiningEquipment : IMachiningEquipment, IDisplayee, IExpandToBox3d, IMakeXmlSource, IGetAnchoredDisplayeeList, IGetProgramCl, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetMachiningChain, IGetMachiningEquipment Inheritance object MachiningEquipment Implements IMachiningEquipment IDisplayee IExpandToBox3d IMakeXmlSource IGetAnchoredDisplayeeList IGetProgramCl IGetAsmb IGetAnchor IGetTopoIndex IGetMachiningChain IGetMachiningEquipment Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) MachiningEquipmentUtil.GetMcXyz_AttacherAtProgramZero(IMachiningEquipment) MachiningEquipmentUtil.GetMcXyz_AttacherAtTableBuckleZero(IMachiningEquipment) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningEquipment() Ctor. public MachiningEquipment() MachiningEquipment(XElement, string, string) Initializes a new instance of the MachiningEquipment class from XML data. public MachiningEquipment(XElement src, string baseDirectory, string relFile) Parameters src XElement The XML element containing the equipment configuration. baseDirectory string The base directory for resolving relative file paths. relFile string The relative file path for XML serialization. Properties Asmb Asmb of the entire equipment. public Asmb Asmb { get; } Property Value Asmb BackgroundTemperature_C Gets or sets the background temperature in Celsius. This is a convenience property that converts between Celsius and Kelvin. public double BackgroundTemperature_C { get; set; } Property Value double BackgroundTemperature_K Gets or sets the background temperature in Kelvin. This represents the ambient temperature of the machining environment. public double BackgroundTemperature_K { get; set; } Property Value double CoolantHeatCondition Gets or sets the coolant heat condition settings. This includes coolant temperature and heat transfer coefficients. public CoolantHeatCondition CoolantHeatCondition { get; set; } Property Value CoolantHeatCondition Fixture Fixture. public Fixture Fixture { get; set; } Property Value Fixture MachiningChain Body of the equipment. public IMachiningChain MachiningChain { get; set; } Property Value IMachiningChain MachiningChainFile Gets or sets the file path of the solid machining chain. This is used for XML serialization and file management. public string MachiningChainFile { get; set; } Property Value string MachiningTool Milling tool. public IMachiningTool MachiningTool { get; set; } Property Value IMachiningTool SpindleCapability Gets or sets the spindle capability configuration. This defines the operational capabilities and limits of the spindle. public SpindleCapability SpindleCapability { get; set; } Property Value SpindleCapability SpindleCapabilityFile Gets or sets the file path of the spindle capability configuration. This is used for XML serialization and file management. public string SpindleCapabilityFile { get; set; } Property Value string TableToComp Transformer of the branch from table buckle to workpiece side buckle. Note that the workpiece side buckle links to Fixture if fixture exist; otherwise, it links to Workpiece if workpiece exist. If Workpiece either Fixture do not exist, this property makes no effect. public ITransformer TableToComp { get; set; } Property Value ITransformer Workpiece Workpiece. public Workpiece Workpiece { get; set; } Property Value Workpiece XName Name for XML IO. public static string XName { get; } Property Value string Methods Detect(bool) Performs collision detection. public MechCollisionResult Detect(bool addFluteAndWorkpieceDetection) Parameters addFluteAndWorkpieceDetection bool Whether to include flute and workpiece in detection. Returns MechCollisionResult Significant collision result. Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetMachiningChain() Gets the machining chain instance. public IMachiningChain GetMachiningChain() Returns IMachiningChain The machining chain instance. GetMillingEquipment() Get MachiningEquipment. public MachiningEquipment GetMillingEquipment() Returns MachiningEquipment MachiningEquipment GetProgramCl() Get CL (Cutter Location). Where Point is tool tip position; Normal is tool orientation. public DVec3d GetProgramCl() Returns DVec3d CL GetToolTipXyzOnProgramZero() Get tool tip xyz from workpiece geom anchor. public Vec3d GetToolTipXyzOnProgramZero() Returns Vec3d if no MachiningTool or no Workpiece equiping, return null; otherwise, return the XYZ from workpiece geomanchor to tool tip. GetTransformFromRootToProgramZero() Gets the transform matrix from the root coordinate system to the program zero coordinate system. public Mat4d GetTransformFromRootToProgramZero() Returns Mat4d A 4x4 transformation matrix representing the coordinate system transformation. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. PrepareCollidableItems() Prepares all collidable items for collision detection. This method should be called before performing collision detection. public void PrepareCollidableItems() ResetCollisionFlags() Resets all collision flags to their default states. This should be called after collision detection is complete. public void ResetCollisionFlags() Tooling(int, MachiningToolHouse) Set MachiningTool by toolId and toolHouse. public bool Tooling(int toolId, MachiningToolHouse toolHouse) Parameters toolId int tool ID toolHouse MachiningToolHouse tool house Returns bool true if tool changed; otherwise, false. Exceptions ToolNotFoundException Throw If toolId does not exist on toolHouse." + "summary": "Class MachiningEquipment Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Machining Equipment. Include the machining chain, workpiece, tool and fixture, etc.. public class MachiningEquipment : IMachiningEquipment, IDisplayee, IExpandToBox3d, IMakeXmlSource, IGetAnchoredDisplayeeList, IGetProgramCl, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetMachiningChain, IGetMachiningEquipment Inheritance object MachiningEquipment Implements IMachiningEquipment IDisplayee IExpandToBox3d IMakeXmlSource IGetAnchoredDisplayeeList IGetProgramCl IGetAsmb IGetAnchor IGetTopoIndex IGetMachiningChain IGetMachiningEquipment Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) MachiningEquipmentUtil.GetIsoCoordinatePosition(IMachiningEquipment, Vec3d) MachiningEquipmentUtil.GetMcXyz_AttacherAtProgramZero(IMachiningEquipment) MachiningEquipmentUtil.GetMcXyz_AttacherAtTableBuckleZero(IMachiningEquipment) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningEquipment() Ctor. public MachiningEquipment() MachiningEquipment(XElement, string, string) Initializes a new instance of the MachiningEquipment class from XML data. public MachiningEquipment(XElement src, string baseDirectory, string relFile) Parameters src XElement The XML element containing the equipment configuration. baseDirectory string The base directory for resolving relative file paths. relFile string The relative file path for XML serialization. Properties Asmb Asmb of the entire equipment. public Asmb Asmb { get; } Property Value Asmb BackgroundTemperature_C Gets or sets the background temperature in Celsius. This is a convenience property that converts between Celsius and Kelvin. public double BackgroundTemperature_C { get; set; } Property Value double BackgroundTemperature_K Gets or sets the background temperature in Kelvin. This represents the ambient temperature of the machining environment. public double BackgroundTemperature_K { get; set; } Property Value double CoolantHeatCondition Gets or sets the coolant heat condition settings. This includes coolant temperature and heat transfer coefficients. public CoolantHeatCondition CoolantHeatCondition { get; set; } Property Value CoolantHeatCondition Fixture Fixture. public Fixture Fixture { get; set; } Property Value Fixture MachiningChain Body of the equipment. public IMachiningChain MachiningChain { get; set; } Property Value IMachiningChain MachiningChainFile Gets or sets the file path of the solid machining chain. This is used for XML serialization and file management. public string MachiningChainFile { get; set; } Property Value string MachiningTool Milling tool. public IMachiningTool MachiningTool { get; set; } Property Value IMachiningTool SpindleCapability Gets or sets the spindle capability configuration. This defines the operational capabilities and limits of the spindle. public SpindleCapability SpindleCapability { get; set; } Property Value SpindleCapability SpindleCapabilityFile Gets or sets the file path of the spindle capability configuration. This is used for XML serialization and file management. public string SpindleCapabilityFile { get; set; } Property Value string TableToComp Transformer of the branch from table buckle to workpiece side buckle. Note that the workpiece side buckle links to Fixture if fixture exist; otherwise, it links to Workpiece if workpiece exist. If Workpiece either Fixture do not exist, this property makes no effect. public ITransformer TableToComp { get; set; } Property Value ITransformer Workpiece Workpiece. public Workpiece Workpiece { get; set; } Property Value Workpiece XName Name for XML IO. public static string XName { get; } Property Value string Methods Detect(bool) Performs collision detection. public MechCollisionResult Detect(bool addFluteAndWorkpieceDetection) Parameters addFluteAndWorkpieceDetection bool Whether to include flute and workpiece in detection. Returns MechCollisionResult Significant collision result. Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetMachiningChain() Gets the machining chain instance. public IMachiningChain GetMachiningChain() Returns IMachiningChain The machining chain instance. GetMillingEquipment() Get MachiningEquipment. public MachiningEquipment GetMillingEquipment() Returns MachiningEquipment MachiningEquipment GetProgramCl() Get CL (Cutter Location). Where Point is tool tip position; Normal is tool orientation. public DVec3d GetProgramCl() Returns DVec3d CL GetToolTipXyzOnProgramZero() Get tool tip xyz from workpiece geom anchor. public Vec3d GetToolTipXyzOnProgramZero() Returns Vec3d if no MachiningTool or no Workpiece equiping, return null; otherwise, return the XYZ from workpiece geomanchor to tool tip. GetTransformFromRootToProgramZero() Gets the transform matrix from the root coordinate system to the program zero coordinate system. public Mat4d GetTransformFromRootToProgramZero() Returns Mat4d A 4x4 transformation matrix representing the coordinate system transformation. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. PrepareCollidableItems() Prepares all collidable items for collision detection. This method should be called before performing collision detection. public void PrepareCollidableItems() ResetCollisionFlags() Resets all collision flags to their default states. This should be called after collision detection is complete. public void ResetCollisionFlags() Tooling(int, MachiningToolHouse) Set MachiningTool by toolId and toolHouse. public bool Tooling(int toolId, MachiningToolHouse toolHouse) Parameters toolId int tool ID toolHouse MachiningToolHouse tool house Returns bool true if tool changed; otherwise, false. Exceptions ToolNotFoundException Throw If toolId does not exist on toolHouse." }, "api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html": { "href": "api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html", @@ -1917,7 +1917,7 @@ "api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html": { "href": "api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html", "title": "Class MachiningEquipmentUtil | HiAPI-C# 2025", - "summary": "Class MachiningEquipmentUtil Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Utility methods for working with machining equipment. public static class MachiningEquipmentUtil Inheritance object MachiningEquipmentUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetFuncAnchoredCollidable(Func, CollidableComponentEnum) Gets a function-based anchored collidable for a specific component of the machining equipment. public static FuncAnchoredCollidable GetFuncAnchoredCollidable(this Func millingEquipmentGetter, CollidableComponentEnum compIndex) Parameters millingEquipmentGetter Func Function to get the machining equipment. compIndex CollidableComponentEnum The component to get the collidable for. Returns FuncAnchoredCollidable A function-based anchored collidable for the specified component. GetMcXyz_AttacherAtProgramZero(IMachiningEquipment) Gets the machine coordinate when the attacher is at program zero. The machine coordinate are all assumed to be zero. public static Vec3d GetMcXyz_AttacherAtProgramZero(this IMachiningEquipment equipment) Parameters equipment IMachiningEquipment The machining equipment. Returns Vec3d The machine coordinate vector. GetMcXyz_AttacherAtTableBuckleZero(IMachiningEquipment) Gets the machine coordinate when the attacher is at table buckle zero. public static Vec3d GetMcXyz_AttacherAtTableBuckleZero(this IMachiningEquipment equipment) Parameters equipment IMachiningEquipment The machining equipment. Returns Vec3d The machine coordinate vector." + "summary": "Class MachiningEquipmentUtil Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Utility methods for working with machining equipment. public static class MachiningEquipmentUtil Inheritance object MachiningEquipmentUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetFuncAnchoredCollidable(Func, CollidableComponentEnum) Gets a function-based anchored collidable for a specific component of the machining equipment. public static FuncAnchoredCollidable GetFuncAnchoredCollidable(this Func millingEquipmentGetter, CollidableComponentEnum compIndex) Parameters millingEquipmentGetter Func Function to get the machining equipment. compIndex CollidableComponentEnum The component to get the collidable for. Returns FuncAnchoredCollidable A function-based anchored collidable for the specified component. GetIsoCoordinatePosition(IMachiningEquipment, Vec3d) Get ISO coordinate position from the root. public static Vec3d GetIsoCoordinatePosition(this IMachiningEquipment equipment, Vec3d g54seriesOffset) Parameters equipment IMachiningEquipment g54seriesOffset Vec3d Returns Vec3d GetMcXyz_AttacherAtProgramZero(IMachiningEquipment) Gets the machine coordinate when the attacher is at program zero. The machine coordinate are all assumed to be zero. public static Vec3d GetMcXyz_AttacherAtProgramZero(this IMachiningEquipment equipment) Parameters equipment IMachiningEquipment The machining equipment. Returns Vec3d The machine coordinate vector. GetMcXyz_AttacherAtTableBuckleZero(IMachiningEquipment) Gets the machine coordinate when the attacher is at table buckle zero. public static Vec3d GetMcXyz_AttacherAtTableBuckleZero(this IMachiningEquipment equipment) Parameters equipment IMachiningEquipment The machining equipment. Returns Vec3d The machine coordinate vector." }, "api/Hi.Machining.MachiningEquipmentUtils.html": { "href": "api/Hi.Machining.MachiningEquipmentUtils.html", @@ -1979,11 +1979,6 @@ "title": "Delegate ConfigStepFunc | HiAPI-C# 2025", "summary": "Delegate ConfigStepFunc Namespace Hi.MachiningProcs Assembly HiMech.dll Delegate for configuring a milling step with additional arguments. public delegate object ConfigStepFunc(MachiningStep millingStep, object arg) Parameters millingStep MachiningStep The milling step to configure. arg object Additional arguments for configuration. Returns object The configuration result. Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)" }, - "api/Hi.MachiningProcs.DynamicMachiningProjectDisplayee0.html": { - "href": "api/Hi.MachiningProcs.DynamicMachiningProjectDisplayee0.html", - "title": "Class DynamicMachiningProjectDisplayee0 | HiAPI-C# 2025", - "summary": "Class DynamicMachiningProjectDisplayee0 Namespace Hi.MachiningProcs Assembly HiNc.dll Provides display capabilities for a milling course. obsoleted. public class DynamicMachiningProjectDisplayee0 : IDisplayee, IExpandToBox3d, IGetAnchor, IGetTopoIndex Inheritance object DynamicMachiningProjectDisplayee0 Implements IDisplayee IExpandToBox3d IGetAnchor IGetTopoIndex Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors DynamicMachiningProjectDisplayee0(LocalProjectService) Initializes a new instance of the DynamicMachiningProjectDisplayee0 class with default settings. public DynamicMachiningProjectDisplayee0(LocalProjectService machiningProjectHost) Parameters machiningProjectHost LocalProjectService Function that returns the host milling course DynamicMachiningProjectDisplayee0(LocalProjectService, BitArray, Action) Initializes a new instance of the DynamicMachiningProjectDisplayee0 class. public DynamicMachiningProjectDisplayee0(LocalProjectService localProjectService, BitArray renderingFlagBitArray, Action setRenderingFlagFunc) Parameters localProjectService LocalProjectService Function that returns the host milling course renderingFlagBitArray BitArray Initial rendering flag bit array setRenderingFlagFunc Action Function that sets the rendering flags Properties LocalProjectService Function that returns the host milling course. public LocalProjectService LocalProjectService { get; set; } Property Value LocalProjectService MachiningProject Gets the current milling course from the host function. public MachiningProject MachiningProject { get; } Property Value MachiningProject RenderingFlagBitArray Gets or sets the bit array that controls which elements are rendered. public BitArray RenderingFlagBitArray { get; set; } Property Value BitArray Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Gets the root anchor for the display hierarchy based on current rendering flags. public Anchor GetAnchor() Returns Anchor The root anchor to use for rendering" - }, "api/Hi.MachiningProcs.IMachiningProjectGetter.html": { "href": "api/Hi.MachiningProcs.IMachiningProjectGetter.html", "title": "Interface IMachiningProjectGetter | HiAPI-C# 2025", @@ -2002,7 +1997,7 @@ "api/Hi.MachiningProcs.LocalProjectService.html": { "href": "api/Hi.MachiningProcs.LocalProjectService.html", "title": "Class LocalProjectService | HiAPI-C# 2025", - "summary": "Class LocalProjectService Namespace Hi.MachiningProcs Assembly HiNc.dll Root(Local) project service. Apply absolute file path. public class LocalProjectService : IProjectService, IMachiningProjectGetter, IMachiningStepHost, IGetMachiningEquipment, IDisposable Inheritance object LocalProjectService Implements IProjectService IMachiningProjectGetter IMachiningStepHost IGetMachiningEquipment IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks LocalProjectService handles the runtime data and cache generally not requires configuration IO. Compare to MachiningProject, LocalProjectService also handles events that does not reset on the MachiningProject been reloaded. Constructors LocalProjectService() Ctor. public LocalProjectService() LocalProjectService(UserService, ILogger) Initializes a new instance. public LocalProjectService(UserService userService, ILogger logger) Parameters userService UserService The application service. logger ILogger The logger instance. Properties BoundSelectorHost Gets the bound selector host for managing selection boundaries. public BoundSelectorHost BoundSelectorHost { get; } Property Value BoundSelectorHost ClStrip Gets the cutter location strip containing the machining steps. public ClStrip ClStrip { get; } Property Value ClStrip CoordinateEntryDisplayee Gets the displayee for coordinate entry visualization. public CoordinateEntryDisplayee CoordinateEntryDisplayee { get; } Property Value CoordinateEntryDisplayee DictionaryColorGuide Gets the color guide for dictionary-based coloring. public DictionaryColorGuide DictionaryColorGuide { get; } Property Value DictionaryColorGuide EnableCollisionDetection Gets or sets whether collision detection is enabled. When set to true, initializes collision detection mechanism. public bool EnableCollisionDetection { get; set; } Property Value bool EnablePauseOnFailure Gets or sets whether to pause execution on failure. public bool EnablePauseOnFailure { get; set; } Property Value bool EnableStrokeLimitCheck Gets or sets whether stroke limit checking is enabled. public bool EnableStrokeLimitCheck { get; set; } Property Value bool Fixture Gets or sets the fixture. public Fixture Fixture { get; set; } Property Value Fixture Global global variable for RuntimeApi. Not save on XML. public Dictionary Global { get; set; } Property Value Dictionary InspectingKey Gets or sets the current inspecting key for visualization. When set, updates the inspecting quantity function. public string InspectingKey { get; set; } Property Value string InspectingQuantityFunc Gets the function that retrieves the quantity value for the current inspecting key. public Func InspectingQuantityFunc { get; } Property Value Func Logger Gets the logger instance for this service. public ILogger Logger { get; } Property Value ILogger MachiningActRunner Gets the machining act runner responsible for executing machining operations. public MachiningActRunner MachiningActRunner { get; } Property Value MachiningActRunner MachiningChain Gets or sets the machining chain. public IMachiningChain MachiningChain { get; set; } Property Value IMachiningChain MachiningChainFile Gets or sets the file path of the solid machining chain. This is used for XML serialization and file management. public string MachiningChainFile { get; set; } Property Value string MachiningEquipment Gets or sets the machining equipment used for milling. Updates related components when changed. public MachiningEquipment MachiningEquipment { get; set; } Property Value MachiningEquipment MachiningProject Gets or sets the machining project instance. public MachiningProject MachiningProject { get; set; } Property Value MachiningProject MachiningProjectPath public string MachiningProjectPath { get; set; } Property Value string MachiningSession Gets the current machining session. public MachiningSession MachiningSession { get; set; } Property Value MachiningSession MachiningTool Gets or sets the machining tool. public IMachiningTool MachiningTool { get; set; } Property Value IMachiningTool MachiningToolHouse Gets or sets the machining tool house containing tool configurations. public MachiningToolHouse MachiningToolHouse { get; set; } Property Value MachiningToolHouse MachiningToolHouseFile Gets or sets the file path to the milling tool house configuration. public string MachiningToolHouseFile { get; set; } Property Value string MillingStepLuggageReader Gets the reader for accessing milling step luggage data. public ParallelBulkReader MillingStepLuggageReader { get; } Property Value ParallelBulkReader NcOptProc Gets the NC optimization processor for optimizing NC programs. public NcOptProc NcOptProc { get; } Property Value NcOptProc NcRunner Gets the NC runner responsible for executing NC programs. public HardNcRunner NcRunner { get; } Property Value HardNcRunner PacePlayer Gets the pace player for controlling execution pace of milling operations. public PacePlayer PacePlayer { get; } Property Value PacePlayer ProjectDirectory Gets the directory containing the machining project. public string ProjectDirectory { get; } Property Value string RuntimeApi Gets the shell API for interacting with this machining process. public RuntimeApi RuntimeApi { get; } Property Value RuntimeApi SessionMessageHost Gets the message host for displaying messages, warnings, and errors. public SessionMessageHost SessionMessageHost { get; } Property Value SessionMessageHost StepPropertyAccessDictionary Gets the dictionary mapping property keys to their access methods. public ConcurrentDictionary> StepPropertyAccessDictionary { get; } Property Value ConcurrentDictionary> TimeMapping Gets or sets the time mapping for synchronizing different time-based data streams. public TimeMapping TimeMapping { get; set; } Property Value TimeMapping UserService Gets the application service instance. public UserService UserService { get; } Property Value UserService Workpiece Gets or sets the workpiece to be machined. Ensures proper initialization of workpiece properties. public Workpiece Workpiece { get; set; } Property Value Workpiece Methods Act(IAct, IGetSentence, CancellationToken?) Executes an act and collects all results. public void Act(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct The act to execute. sourceCommand IGetSentence The source command that triggered the act. cancellationToken CancellationToken? Cancellation token to cancel the operation. BeginSession() Initiate a simulation session. Clear the state from previous session (if existed). public void BeginSession() CloseProject() Closes the current project. public void CloseProject() Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool EndSession() Ends the current machining session and releases associated resources. public void EndSession() GetInspectingKeyPresentName(StringLocalizer) Gets the localized presentation name for the current inspecting key. public string GetInspectingKeyPresentName(StringLocalizer stringLocalizer) Parameters stringLocalizer StringLocalizer The string localizer to use for localization Returns string The localized presentation name GetLocalProjectService() Get Local Project Service as base-service. public LocalProjectService GetLocalProjectService() Returns LocalProjectService Local Project Service GetMachiningProject() Gets the MachiningProject instance. public MachiningProject GetMachiningProject() Returns MachiningProject The MachiningProject instance. GetMillingEquipment() Get MachiningEquipment. public MachiningEquipment GetMillingEquipment() Returns MachiningEquipment MachiningEquipment LoadProject(string) Loads a project by file path relative to the admin directory. public void LoadProject(string projectPath) Parameters projectPath string The absolute file path NewProject(string) Creates a new project by file path. public void NewProject(string projectPath) Parameters projectPath string The absolute file path PlayCsvFile(string, string) Plays a CSV file from the specified path. public void PlayCsvFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths. relFilePath string Relative path to the CSV file. PlayNc(string, string) Plays NC commands from raw text with pace control. public void PlayNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string The NC command text to execute fileNameAlternative string Alternative name to associate with the NC program PlayNcFile(string, string) Plays an NC file from the specified path with pace control. public void PlayNcFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths relFilePath string Relative path to the NC file ProcAct(IAct, IGetSentence, CancellationToken?) Processes an act and returns the results. public IEnumerable ProcAct(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct The act to process. sourceCommand IGetSentence The source command that triggered the act. cancellationToken CancellationToken? Cancellation token to cancel the operation. Returns IEnumerable Enumerable of results from processing the act. ReTrainMillingPara(SampleFlag, double, string, CancellationToken) Train Milling Parameter. public void ReTrainMillingPara(SampleFlag sampleFlags, double outlierRatio, string dstRelFile, CancellationToken cancellationToken) Parameters sampleFlags SampleFlag outlierRatio double dstRelFile string cancellationToken CancellationToken RefreshDrawing() Refreshes the visual display of the milling course. public void RefreshDrawing() ReloadProject() Reloads the current project. public void ReloadProject() ResetRuntime() Reset the runtime states including: runtime geometry, collision flags, machine tool position, CL strips, message buffer and etc.. public void ResetRuntime() RunCsvFile(string, string) Runs a CSV file from the specified path. public IEnumerable RunCsvFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths. relFilePath string Relative path to the CSV file. Returns IEnumerable An enumerable of actions to be executed. RunNc(string, string) Runs NC commands from raw text. public IEnumerable RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string The NC command text to execute fileNameAlternative string Alternative name to associate with the NC program Returns IEnumerable An enumerable of actions to be executed RunNcFile(string, string) Runs an NC file from the specified path. public IEnumerable RunNcFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths. If the value is null, BaseDirectory substitutes the value. relFilePath string Relative path to the NC file. Returns IEnumerable An enumerable of actions to be executed. SaveAsProject(string) Saves the current project to a specified relative file path. public void SaveAsProject(string projectPath) Parameters projectPath string The absolute file path SaveProject() Save project by project path. public void SaveProject() TrainMillingPara(SampleFlag, bool, double, string, CancellationToken, ICuttingPara) Train Milling Parameter. public void TrainMillingPara(SampleFlag sampleFlags, bool enableFzOnlyDuringDrilling, double outlierRatio, string dstRelFile, CancellationToken cancellationToken, ICuttingPara paraTemplate) Parameters sampleFlags SampleFlag enableFzOnlyDuringDrilling bool outlierRatio double dstRelFile string cancellationToken CancellationToken paraTemplate ICuttingPara UpdateByMachiningChain() Updates components when the machining chain changes. public void UpdateByMachiningChain() UpdateByMachiningEquipment() Call on MachiningEquipment Or MachiningChainChanged. i.e. Update By MachiningEquipment Or MachiningChain. The function is called on MachiningEquipment and its delegate property changed. If the changing is raised outer from THIS service, this updating function should be manual called. public void UpdateByMachiningEquipment() UpdateIdealMillingToolOffsetTableByToolHouse() Updates the ideal milling tool offset table based on the current tool house configuration. public void UpdateIdealMillingToolOffsetTableByToolHouse() WriteShotFile(TimeSpan, string) Writes time-based shot data to a file with the specified sampling period. public void WriteShotFile(TimeSpan samplingPeriod, string relFileTemplate = \"Output/[NcName].shot.csv\") Parameters samplingPeriod TimeSpan The time period between samples relFileTemplate string Template for the output file path, can include [NcName] placeholder WriteStepFile(string) Writes step-based data to a file. public void WriteStepFile(string relFileTemplate = \"Output/[NcName].step.csv\") Parameters relFileTemplate string Template for the output file path, can include [NcName] placeholder Events MachiningProjectChanged Event raised when the machining project changes. public event LocalProjectService.MachiningProjectChangedDelegate MachiningProjectChanged Event Type LocalProjectService.MachiningProjectChangedDelegate MachiningStepBuilt event to configure steps. The first parameter is the previous step; the second parameter is the current step. The previous step is null if no previous step exists. public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate OnRanNcBlock Event triggered after an NC block is executed. public event Action OnRanNcBlock Event Type Action OnUpdatedInspectingQuantityFunc Event triggered when the inspecting quantity function is updated. public event Action OnUpdatedInspectingQuantityFunc Event Type Action WorkpieceChanged Event that is raised when the workpiece is changed. public event Action> WorkpieceChanged Event Type Action> Remarks This event is triggered whenever the workpiece property is modified. Subscribers can use this event to respond to changes in the workpiece configuration, such as updating visualizations or recalculating machining parameters. The event provides both the previous and new workpiece values through a SeqPair." + "summary": "Class LocalProjectService Namespace Hi.MachiningProcs Assembly HiNc.dll Root(Local) project service. Apply absolute file path. public class LocalProjectService : IProjectService, IMachiningProjectGetter, IMachiningStepHost, IGetMachiningEquipment, IDisposable Inheritance object LocalProjectService Implements IProjectService IMachiningProjectGetter IMachiningStepHost IGetMachiningEquipment IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks LocalProjectService handles the runtime data and cache generally not requires configuration IO. Compare to MachiningProject, LocalProjectService also handles events that does not reset on the MachiningProject been reloaded. Constructors LocalProjectService() Ctor. public LocalProjectService() LocalProjectService(UserService, ILogger) Initializes a new instance. public LocalProjectService(UserService userService, ILogger logger) Parameters userService UserService The application service. logger ILogger The logger instance. Properties BoundSelectorHost Gets the bound selector host for managing selection boundaries. public BoundSelectorHost BoundSelectorHost { get; } Property Value BoundSelectorHost ClStrip Gets the cutter location strip containing the machining steps. public ClStrip ClStrip { get; } Property Value ClStrip DictionaryColorGuide Gets the color guide for dictionary-based coloring. public DictionaryColorGuide DictionaryColorGuide { get; } Property Value DictionaryColorGuide EnableCollisionDetection Gets or sets whether collision detection is enabled. When set to true, initializes collision detection mechanism. public bool EnableCollisionDetection { get; set; } Property Value bool EnablePauseOnFailure Gets or sets whether to pause execution on failure. public bool EnablePauseOnFailure { get; set; } Property Value bool EnableStrokeLimitCheck Gets or sets whether stroke limit checking is enabled. public bool EnableStrokeLimitCheck { get; set; } Property Value bool Fixture Gets or sets the fixture. public Fixture Fixture { get; set; } Property Value Fixture Global global variable for RuntimeApi. Not save on XML. public Dictionary Global { get; set; } Property Value Dictionary InspectingKey Gets or sets the current inspecting key for visualization. When set, updates the inspecting quantity function. public string InspectingKey { get; set; } Property Value string InspectingQuantityFunc Gets the function that retrieves the quantity value for the current inspecting key. public Func InspectingQuantityFunc { get; } Property Value Func Logger Gets the logger instance for this service. public ILogger Logger { get; } Property Value ILogger MachiningActRunner Gets the machining act runner responsible for executing machining operations. public MachiningActRunner MachiningActRunner { get; } Property Value MachiningActRunner MachiningChain Gets or sets the machining chain. public IMachiningChain MachiningChain { get; set; } Property Value IMachiningChain MachiningChainFile Gets or sets the file path of the solid machining chain. This is used for XML serialization and file management. public string MachiningChainFile { get; set; } Property Value string MachiningEquipment Gets or sets the machining equipment used for milling. Updates related components when changed. public MachiningEquipment MachiningEquipment { get; set; } Property Value MachiningEquipment MachiningProject Gets or sets the machining project instance. public MachiningProject MachiningProject { get; set; } Property Value MachiningProject MachiningProjectPath public string MachiningProjectPath { get; set; } Property Value string MachiningSession Gets the current machining session. public MachiningSession MachiningSession { get; set; } Property Value MachiningSession MachiningTool Gets or sets the machining tool. public IMachiningTool MachiningTool { get; set; } Property Value IMachiningTool MachiningToolHouse Gets or sets the machining tool house containing tool configurations. public MachiningToolHouse MachiningToolHouse { get; set; } Property Value MachiningToolHouse MachiningToolHouseFile Gets or sets the file path to the milling tool house configuration. public string MachiningToolHouseFile { get; set; } Property Value string MillingStepLuggageReader Gets the reader for accessing milling step luggage data. public ParallelBulkReader MillingStepLuggageReader { get; } Property Value ParallelBulkReader NcOptProc Gets the NC optimization processor for optimizing NC programs. public NcOptProc NcOptProc { get; } Property Value NcOptProc NcRunner Gets the NC runner responsible for executing NC programs. public HardNcRunner NcRunner { get; } Property Value HardNcRunner PacePlayer Gets the pace player for controlling execution pace of milling operations. public PacePlayer PacePlayer { get; } Property Value PacePlayer ProjectDirectory Gets the directory containing the machining project. public string ProjectDirectory { get; } Property Value string RuntimeApi Gets the shell API for interacting with this machining process. public RuntimeApi RuntimeApi { get; } Property Value RuntimeApi SessionProgress Gets the message host for displaying messages, warnings, and errors. public SessionProgress SessionProgress { get; } Property Value SessionProgress StepPropertyAccessDictionary Gets the dictionary mapping property keys to their access methods. public ConcurrentDictionary> StepPropertyAccessDictionary { get; } Property Value ConcurrentDictionary> TimeMapping Gets or sets the time mapping for synchronizing different time-based data streams. public TimeMapping TimeMapping { get; set; } Property Value TimeMapping UserService Gets the application service instance. public UserService UserService { get; } Property Value UserService Workpiece Gets or sets the workpiece to be machined. Ensures proper initialization of workpiece properties. public Workpiece Workpiece { get; set; } Property Value Workpiece Methods Act(IAct, IGetSentence, CancellationToken?) Executes an act and collects all results. public void Act(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct The act to execute. sourceCommand IGetSentence The source command that triggered the act. cancellationToken CancellationToken? Cancellation token to cancel the operation. BeginSession() Initiate a simulation session. Clear the state from previous session (if existed). public void BeginSession() CloseProject() Closes the current project. public void CloseProject() Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool EndSession() Ends the current machining session and releases associated resources. public void EndSession() GetInspectingKeyPresentName(StringLocalizer) Gets the localized presentation name for the current inspecting key. public string GetInspectingKeyPresentName(StringLocalizer stringLocalizer) Parameters stringLocalizer StringLocalizer The string localizer to use for localization Returns string The localized presentation name GetLocalProjectService() Get Local Project Service as base-service. public LocalProjectService GetLocalProjectService() Returns LocalProjectService Local Project Service GetMachiningProject() Gets the MachiningProject instance. public MachiningProject GetMachiningProject() Returns MachiningProject The MachiningProject instance. GetMillingEquipment() Get MachiningEquipment. public MachiningEquipment GetMillingEquipment() Returns MachiningEquipment MachiningEquipment LoadProject(string) Loads a project by file path relative to the admin directory. public void LoadProject(string projectPath) Parameters projectPath string The absolute file path NewProject(string) Creates a new project by file path. public void NewProject(string projectPath) Parameters projectPath string The absolute file path PlayCsvFile(string, string) Plays a CSV file from the specified path. public void PlayCsvFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths. relFilePath string Relative path to the CSV file. PlayNc(string, string) Plays NC commands from raw text with pace control. public void PlayNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string The NC command text to execute fileNameAlternative string Alternative name to associate with the NC program PlayNcFile(string, string) Plays an NC file from the specified path with pace control. public void PlayNcFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths relFilePath string Relative path to the NC file ProcAct(IAct, IGetSentence, CancellationToken?) Processes an act and returns the results. public IEnumerable ProcAct(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct The act to process. sourceCommand IGetSentence The source command that triggered the act. cancellationToken CancellationToken? Cancellation token to cancel the operation. Returns IEnumerable Enumerable of results from processing the act. ReTrainMillingPara(SampleFlag, double, string, CancellationToken) Train Milling Parameter. public void ReTrainMillingPara(SampleFlag sampleFlags, double outlierRatio, string dstRelFile, CancellationToken cancellationToken) Parameters sampleFlags SampleFlag outlierRatio double dstRelFile string cancellationToken CancellationToken RefreshDrawing() Refreshes the visual display of the milling course. public void RefreshDrawing() ReloadProject() Reloads the current project. public void ReloadProject() ResetRuntime() Reset the runtime states including: runtime geometry, collision flags, machine tool position, CL strips, message buffer and etc.. public void ResetRuntime() RunCsvFile(string, string) Runs a CSV file from the specified path. public IEnumerable RunCsvFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths. relFilePath string Relative path to the CSV file. Returns IEnumerable An enumerable of actions to be executed. RunNc(string, string) Runs NC commands from raw text. public IEnumerable RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string The NC command text to execute fileNameAlternative string Alternative name to associate with the NC program Returns IEnumerable An enumerable of actions to be executed RunNcFile(string, string) Runs an NC file from the specified path. public IEnumerable RunNcFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths. If the value is null, BaseDirectory substitutes the value. relFilePath string Relative path to the NC file. Returns IEnumerable An enumerable of actions to be executed. SaveAsProject(string) Saves the current project to a specified relative file path. public void SaveAsProject(string projectPath) Parameters projectPath string The absolute file path SaveProject() Save project by project path. public void SaveProject() TrainMillingPara(SampleFlag, bool, double, string, CancellationToken, ICuttingPara) Train Milling Parameter. public void TrainMillingPara(SampleFlag sampleFlags, bool enableFzOnlyDuringDrilling, double outlierRatio, string dstRelFile, CancellationToken cancellationToken, ICuttingPara paraTemplate) Parameters sampleFlags SampleFlag enableFzOnlyDuringDrilling bool outlierRatio double dstRelFile string cancellationToken CancellationToken paraTemplate ICuttingPara UpdateByMachiningChain() Updates components when the machining chain changes. public void UpdateByMachiningChain() UpdateByMachiningEquipment() Call on MachiningEquipment Or MachiningChainChanged. i.e. Update By MachiningEquipment Or MachiningChain. The function is called on MachiningEquipment and its delegate property changed. If the changing is raised outer from THIS service, this updating function should be manual called. public void UpdateByMachiningEquipment() UpdateIdealMillingToolOffsetTableByToolHouse() Updates the ideal milling tool offset table based on the current tool house configuration. public void UpdateIdealMillingToolOffsetTableByToolHouse() WriteShotFile(TimeSpan, string) Writes time-based shot data to a file with the specified sampling period. public void WriteShotFile(TimeSpan samplingPeriod, string relFileTemplate = \"Output/[NcName].shot.csv\") Parameters samplingPeriod TimeSpan The time period between samples relFileTemplate string Template for the output file path, can include [NcName] placeholder WriteStepFile(string) Writes step-based data to a file. public void WriteStepFile(string relFileTemplate = \"Output/[NcName].step.csv\") Parameters relFileTemplate string Template for the output file path, can include [NcName] placeholder Events MachiningProjectChanged Event raised when the machining project changes. public event LocalProjectService.MachiningProjectChangedDelegate MachiningProjectChanged Event Type LocalProjectService.MachiningProjectChangedDelegate MachiningStepBuilt event to configure steps. The first parameter is the previous step; the second parameter is the current step. The previous step is null if no previous step exists. public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate OnRanNcBlock Event triggered after an NC block is executed. public event Action OnRanNcBlock Event Type Action OnUpdatedInspectingQuantityFunc Event triggered when the inspecting quantity function is updated. public event Action OnUpdatedInspectingQuantityFunc Event Type Action WorkpieceChanged Event that is raised when the workpiece is changed. public event Action> WorkpieceChanged Event Type Action> Remarks This event is triggered whenever the workpiece property is modified. Subscribers can use this event to respond to changes in the workpiece configuration, such as updating visualizations or recalculating machining parameters. The event provides both the previous and new workpiece values through a SeqPair." }, "api/Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html": { "href": "api/Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html", @@ -2012,7 +2007,7 @@ "api/Hi.MachiningProcs.MachiningActRunner.html": { "href": "api/Hi.MachiningProcs.MachiningActRunner.html", "title": "Class MachiningActRunner | HiAPI-C# 2025", - "summary": "Class MachiningActRunner Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a runner for machining actions that manages milling steps, tool paths, and collision detection. public class MachiningActRunner : IDisposable Inheritance object MachiningActRunner Implements IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningActRunner(SessionMessageHost, Action>, Func, Func, Action, ICsScriptApi, MachiningActRunnerConfig) Initializes a new instance. public MachiningActRunner(SessionMessageHost messageHost, Action> stepStorageWriter, Func machiningToolHouseGetter, Func machiningEquipmentGetter, Action resetMillingStepLuggageDbAction, ICsScriptApi shellApi, MachiningActRunnerConfig config = null) Parameters messageHost SessionMessageHost The milling message host. stepStorageWriter Action> The action to write milling step luggages to storage. machiningToolHouseGetter Func The getter function for the machining tool house. machiningEquipmentGetter Func The getter function for the machining equipment. resetMillingStepLuggageDbAction Action Action to reset the milling step luggage database. shellApi ICsScriptApi The C# script API for the milling session. config MachiningActRunnerConfig Optional configuration for the milling act runner. Properties ClStrip Gets the cutter location strip. public ClStrip ClStrip { get; } Property Value ClStrip Config Gets or sets the runner configuration. public MachiningActRunnerConfig Config { get; set; } Property Value MachiningActRunnerConfig EnableMotionDependentMachiningResolution EnableMotionDependentMachiningResolution. It works on feed per cycle and feed per tooth motion resolution. MachiningResolution_mm changed by the LinearResolution_mm. public bool EnableMotionDependentMachiningResolution { get; set; } Property Value bool EnableSweeping Gets whether sweeping is enabled based on the motion resolution type. public bool EnableSweeping { get; } Property Value bool GrpcPostStepAction Gets or sets the action to be performed after each step for GRPC service. This is for internal use only. public static Action GrpcPostStepAction { get; set; } Property Value Action MachiningMotionResolution Gets or sets the machining motion resolution. public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution MachiningResolution_mm Gets or sets the preferred cube width for steps. public double MachiningResolution_mm { get; set; } Property Value double MachiningToolHouse Gets or sets the machining tool house. public MachiningToolHouse MachiningToolHouse { get; } Property Value MachiningToolHouse MachiningVolumeRemovalProc Gets the machining volume removal processor. public MachiningVolumeRemovalProc MachiningVolumeRemovalProc { get; } Property Value MachiningVolumeRemovalProc SessionMessageHost Gets or sets the milling message host. public SessionMessageHost SessionMessageHost { get; set; } Property Value SessionMessageHost StateActRunner Gets the state act runner. This property is provided as a member value getter and should not be modified. public StateActRunner StateActRunner { get; } Property Value StateActRunner XyzabcChain Gets the XYZABC kinematic chain if the current machining chain supports it; otherwise null. public IXyzabcChain XyzabcChain { get; } Property Value IXyzabcChain Methods AdjustAptCutterStlResolutionByNcResolutionAndWorkpieceResolution() Adjusts the APT cutter STL resolution based on NC resolution and workpiece resolution. public void AdjustAptCutterStlResolutionByNcResolutionAndWorkpieceResolution() Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToActMcStep(IAct) Expands an act into machine control steps. public IEnumerable ExpandToActMcStep(IAct act) Parameters act IAct The act to expand. Returns IEnumerable A sequence of machine control steps. GetMillingActRunner() Gets the current milling act runner instance. public MachiningActRunner GetMillingActRunner() Returns MachiningActRunner The current milling act runner instance. ProcAct(IAct, MachiningSession, IMachiningStepHost, IGetSentence, CancellationToken) Processes an act with the given parameters. public IEnumerable ProcAct(IAct act, MachiningSession millingSession, IMachiningStepHost host, IGetSentence sourceCommand, CancellationToken cancellationToken) Parameters act IAct The act to process. millingSession MachiningSession The milling session. host IMachiningStepHost The milling step host. sourceCommand IGetSentence The source command. cancellationToken CancellationToken The cancellation token. Returns IEnumerable A sequence of processed objects. ResetMillingStepLuggageDb() Resets the milling step luggage database. public void ResetMillingStepLuggageDb() ResetStateAndClStrip() Resets the state and cutter location strip. public void ResetStateAndClStrip() UpdateByMachiningChain() Update By MachiningChain. Internal Use Only. public void UpdateByMachiningChain() UpdateByMachiningEquipment() Update By Hi.MachiningProcs.MachiningActRunner.MachiningEquipment. Internal Use Only. public void UpdateByMachiningEquipment() WaitAll() Waits for all pending operations to complete. public void WaitAll() Events MachiningStepBuilt event to configure steps. The first parameter is the previous step; the second parameter is the current step. The previous step is null if no previous step exists. public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate UiPostStepAction Event raised after each step for UI updates. This is for internal use only. public event Action UiPostStepAction Event Type Action" + "summary": "Class MachiningActRunner Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a runner for machining actions that manages milling steps, tool paths, and collision detection. public class MachiningActRunner : IDisposable Inheritance object MachiningActRunner Implements IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningActRunner(SessionProgress, Action>, Func, Func, Action, ICsScriptApi, MachiningActRunnerConfig) Initializes a new instance. public MachiningActRunner(SessionProgress messageHost, Action> stepStorageWriter, Func machiningToolHouseGetter, Func machiningEquipmentGetter, Action resetMillingStepLuggageDbAction, ICsScriptApi shellApi, MachiningActRunnerConfig config = null) Parameters messageHost SessionProgress The milling message host. stepStorageWriter Action> The action to write milling step luggages to storage. machiningToolHouseGetter Func The getter function for the machining tool house. machiningEquipmentGetter Func The getter function for the machining equipment. resetMillingStepLuggageDbAction Action Action to reset the milling step luggage database. shellApi ICsScriptApi The C# script API for the milling session. config MachiningActRunnerConfig Optional configuration for the milling act runner. Properties ClStrip Gets the cutter location strip. public ClStrip ClStrip { get; } Property Value ClStrip Config Gets or sets the runner configuration. public MachiningActRunnerConfig Config { get; set; } Property Value MachiningActRunnerConfig EnableMotionDependentMachiningResolution EnableMotionDependentMachiningResolution. It works on feed per cycle and feed per tooth motion resolution. MachiningResolution_mm changed by the LinearResolution_mm. public bool EnableMotionDependentMachiningResolution { get; set; } Property Value bool EnableSweeping Gets whether sweeping is enabled based on the motion resolution type. public bool EnableSweeping { get; } Property Value bool GrpcPostStepAction Gets or sets the action to be performed after each step for GRPC service. This is for internal use only. public static Action GrpcPostStepAction { get; set; } Property Value Action MachiningMotionResolution Gets or sets the machining motion resolution. public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution MachiningResolution_mm Gets or sets the preferred cube width for steps. public double MachiningResolution_mm { get; set; } Property Value double MachiningToolHouse Gets or sets the machining tool house. public MachiningToolHouse MachiningToolHouse { get; } Property Value MachiningToolHouse MachiningVolumeRemovalProc Gets the machining volume removal processor. public MachiningVolumeRemovalProc MachiningVolumeRemovalProc { get; } Property Value MachiningVolumeRemovalProc SessionProgress Gets or sets the milling message host. public SessionProgress SessionProgress { get; set; } Property Value SessionProgress StateActRunner Gets the state act runner. This property is provided as a member value getter and should not be modified. public StateActRunner StateActRunner { get; } Property Value StateActRunner XyzabcChain Gets the XYZABC kinematic chain if the current machining chain supports it; otherwise null. public IXyzabcChain XyzabcChain { get; } Property Value IXyzabcChain Methods AdjustAptCutterStlResolutionByNcResolutionAndWorkpieceResolution() Adjusts the APT cutter STL resolution based on NC resolution and workpiece resolution. public void AdjustAptCutterStlResolutionByNcResolutionAndWorkpieceResolution() Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToActMcStep(IAct) Expands an act into machine control steps. public IEnumerable ExpandToActMcStep(IAct act) Parameters act IAct The act to expand. Returns IEnumerable A sequence of machine control steps. GetMillingActRunner() Gets the current milling act runner instance. public MachiningActRunner GetMillingActRunner() Returns MachiningActRunner The current milling act runner instance. ProcAct(IAct, MachiningSession, IMachiningStepHost, IGetSentence, CancellationToken) Processes an act with the given parameters. public IEnumerable ProcAct(IAct act, MachiningSession millingSession, IMachiningStepHost host, IGetSentence sourceCommand, CancellationToken cancellationToken) Parameters act IAct The act to process. millingSession MachiningSession The milling session. host IMachiningStepHost The milling step host. sourceCommand IGetSentence The source command. cancellationToken CancellationToken The cancellation token. Returns IEnumerable A sequence of processed objects. ResetMillingStepLuggageDb() Resets the milling step luggage database. public void ResetMillingStepLuggageDb() ResetStateAndClStrip() Resets the state and cutter location strip. public void ResetStateAndClStrip() UpdateByMachiningChain() Update By MachiningChain. Internal Use Only. public void UpdateByMachiningChain() UpdateByMachiningEquipment() Update By Hi.MachiningProcs.MachiningActRunner.MachiningEquipment. Internal Use Only. public void UpdateByMachiningEquipment() WaitAll() Waits for all pending operations to complete. public void WaitAll() Events MachiningStepBuilt event to configure steps. The first parameter is the previous step; the second parameter is the current step. The previous step is null if no previous step exists. public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate UiPostStepAction Event raised after each step for UI updates. This is for internal use only. public event Action UiPostStepAction Event Type Action" }, "api/Hi.MachiningProcs.MachiningActRunnerConfig.html": { "href": "api/Hi.MachiningProcs.MachiningActRunnerConfig.html", @@ -2067,32 +2062,32 @@ "api/Hi.MachiningProcs.RuntimeApi.html": { "href": "api/Hi.MachiningProcs.RuntimeApi.html", "title": "Class RuntimeApi | HiAPI-C# 2025", - "summary": "Class RuntimeApi Namespace Hi.MachiningProcs Assembly HiNc.dll Runtime API for machining operations. public class RuntimeApi : ICsScriptApi Inheritance object RuntimeApi Implements ICsScriptApi Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DefaultParaTemplateDimension Gets or sets the parameter template dimension (2D or 3D). [JsAce] public int DefaultParaTemplateDimension { get; set; } Property Value int DiffVisualRadius_mm Gets or sets the visual radius in millimeters for difference visualization. Controls the radius used for highlighting differences between workpiece states. [JsAce] public double DiffVisualRadius_mm { get; set; } Property Value double DispCacheMb Gets or sets the display cache size in megabytes. [Obsolete] public long DispCacheMb { get; set; } Property Value long DispCache_Mb Gets or sets the display cache size in megabytes. [JsAce] public long DispCache_Mb { get; set; } Property Value long EmbeddedLogMode Gets or sets the embedded log mode for NC optimization. [JsAce] public static NcOptimizationEmbeddedLogMode EmbeddedLogMode { get; set; } Property Value NcOptimizationEmbeddedLogMode EnableCollisionDetection Gets or sets whether collision detection is enabled. [JsAce(DocContentHtml = \"Enable Collision Detection.\")] public bool EnableCollisionDetection { get; set; } Property Value bool EnableIndividualStepAdjustmentLog Gets or sets whether to enable individual step adjustment logging. [JsAce] public static bool EnableIndividualStepAdjustmentLog { get; set; } Property Value bool EnableMapOnSelectionEnd Gets or sets whether to automatically map selections when they end. [JsAce] public bool EnableMapOnSelectionEnd { get; set; } Property Value bool EnableMotionDependentMachiningResolution Gets or sets whether motion-dependent machining resolution is enabled. [JsAce] public bool EnableMotionDependentMachiningResolution { get; set; } Property Value bool EnableMzLeverWeightingOnTraining Gets or sets whether Mz lever weighting is enabled on training. [Obsolete] public bool EnableMzLeverWeightingOnTraining { get; set; } Property Value bool EnablePauseOnCollision Gets or sets whether to pause execution when a collision is detected. This property only has an effect if collision detection is enabled. [Obsolete] public bool EnablePauseOnCollision { get; set; } Property Value bool EnablePauseOnFailure Gets or sets whether to pause on failure during execution. [JsAce(DocContentHtml = \"Enable Pause On Failure.\")] public bool EnablePauseOnFailure { get; set; } Property Value bool EnablePhysics Gets or sets whether milling force evaluation is enabled. [JsAce(DocContentHtml = \"Enable milling force evaluation.\")] public bool EnablePhysics { get; set; } Property Value bool EnableSampleNormalization [Obsolete] public bool EnableSampleNormalization { get; set; } Property Value bool 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. EnableWearEffect Gets or sets whether tool wear effects are enabled in simulation. [JsAce] public bool EnableWearEffect { get; set; } Property Value bool FeedPerCycle Gets a new feed per cycle machining motion resolution instance. [JsAce] public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; } Property Value FeedPerCycleMachiningMotionResolution FeedPerTooth Gets a new feed per tooth machining motion resolution instance. [JsAce] public FeedPerToothMachiningMotionResolution FeedPerTooth { get; } Property Value FeedPerToothMachiningMotionResolution Fixture Gets or sets the fixture. [JsAce] public Fixture Fixture { get; set; } Property Value Fixture Global Global variables. [JsAce(\"Global[$1key]\")] public Dictionary Global { get; } Property Value Dictionary InitSpindleTemperature_C Gets or sets the initial spindle temperature in degrees Celsius. [JsAce(DocContentHtml = \"Spindle Temperature on initialization.\")] public double InitSpindleTemperature_C { get; set; } Property Value double JsAceCompletionProfileJsonArray Internal used. public static JsonArray JsAceCompletionProfileJsonArray { get; } Property Value JsonArray MachiningMotionResolution Gets or sets the machining motion resolution. [JsAce] public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution MachiningResolution Gets or sets the machining resolution in millimeters. [JsAce] [Obsolete(\"Use MachiningResolution_mm instead.\")] public double MachiningResolution { get; set; } Property Value double MachiningResolution_mm Gets or sets the machining resolution in millimeters. [JsAce] public double MachiningResolution_mm { get; set; } Property Value double MachiningSession public MachiningSession MachiningSession { get; } Property Value MachiningSession MapTask Task tracking the status of mapping operations. public Task MapTask { get; set; } Property Value Task 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. [JsAce] public static int MillingCycleDivisionNum { get; set; } Property Value int 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. [JsAce(DocContentHtml = \"Obsoleted. Use MillingCycleDivisionNum instead.\")] [Obsolete(\"Use MillingCycleDivisionNum instead.\")] public static int MillingForceCycleDivisionNum { get; set; } Property Value int NcOptOption Gets or sets the NC optimization options. [JsAce] public NcOptOption NcOptOption { get; set; } Property Value NcOptOption OptEnableDepthCompensation Enables or disables depth compensation during optimization. [JsAce] public bool OptEnableDepthCompensation { get; set; } Property Value bool OptEnableFeedrate Gets or sets whether to enable feed rate optimization in NC optimization. [JsAce] public bool OptEnableFeedrate { get; set; } Property Value bool OptEnableForwardCompensation Enables or disables forward compensation during optimization. [JsAce] public bool OptEnableForwardCompensation { get; set; } Property Value bool OptEnableInterpolation Enables or disables reinterpolation for optimization. [JsAce] public bool OptEnableInterpolation { get; set; } Property Value bool OptEnableSideCompensation Enables or disables side compensation during optimization. [JsAce] public bool OptEnableSideCompensation { get; set; } Property Value bool OptExtendedPostDistance_mm Gets or sets the extended post-distance in millimeters for NC optimization. This is the distance after the current segment that will be considered for optimization. [JsAce] public double OptExtendedPostDistance_mm { get; set; } Property Value double OptExtendedPreDistance_mm Gets or sets the extended pre-distance in millimeters for NC optimization. This is the distance before the current segment that will be considered for optimization. [JsAce] public double OptExtendedPreDistance_mm { get; set; } Property Value double OptFeedrateAssignmentRatio Gets or sets the feedrate assignment ratio for optimization. If the feedrate change exceeds this ratio, the feedrate in the NC line will be updated. [JsAce] public double OptFeedrateAssignmentRatio { get; set; } Property Value double OptMaxAcceleration_mmds2 Maximum acceleration in mm/s² during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxAcceleration_mmds2 { get; set; } Property Value double OptMaxFeedPerTooth_mm Gets or sets the maximum feed per tooth in millimeters for optimization. [JsAce] public double OptMaxFeedPerTooth_mm { get; set; } Property Value double OptMaxFeedrate_mmdmin Maximum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMaxFeedrate_mmdmin { get; set; } Property Value double OptMaxJerk_mmds3 Maximum jerk in mm/s³ during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxJerk_mmds3 { get; set; } Property Value double OptMinFeedPerTooth_mm Gets or sets the minimum feed per tooth in millimeters for optimization. [JsAce] public double OptMinFeedPerTooth_mm { get; set; } Property Value double OptMinFeedrate_mmdmin Minimum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMinFeedrate_mmdmin { get; set; } Property Value double OptPreferedForce_N Preferred force in N for optimization. [JsAce] public double OptPreferedForce_N { get; set; } Property Value double OptRapidFeed_mmdmin Rapid feed rate in mm/min for non-cutting movements during optimization. [JsAce] public double OptRapidFeed_mmdmin { get; set; } Property Value double OptSpindlePowerSafetyFactor Safety factor for MAX spindle power during optimization. [JsAce] public double OptSpindlePowerSafetyFactor { get; set; } Property Value double OptSpindlePowerUtilizationFactor Utilization factor for MAX spindle power during optimization. It is the reciprocal of the spindle power safety factor. [JsAce] public double OptSpindlePowerUtilizationFactor { get; set; } Property Value double OptSpindleTorqueSafetyFactor Gets or sets the MAX spindle torque safety factor for NC optimization. [JsAce] public double OptSpindleTorqueSafetyFactor { get; set; } Property Value double OptSpindleTorqueUtilizationFactor Utilization factor for MAX spindle torque during optimization. It is the reciprocal of the spindle torque safety factor. [JsAce] public double OptSpindleTorqueUtilizationFactor { get; set; } Property Value double OptThermalYieldSafetyFactor Safety factor for spindle torque during optimization. [JsAce] public double OptThermalYieldSafetyFactor { get; set; } Property Value double OptThermalYieldUtilizationFactor Utilization factor for thermal yield during optimization. It is the reciprocal of the thermal yield safety factor. [JsAce] public double OptThermalYieldUtilizationFactor { get; set; } Property Value double OptYieldingSafetyFactor Safety factor for yielding during optimization. [JsAce] public double OptYieldingSafetyFactor { get; set; } Property Value double OptYieldingUtilizationFactor Utilization factor for yielding during optimization. It is the reciprocal of the yielding safety factor. [JsAce] public double OptYieldingUtilizationFactor { get; set; } Property Value double ScriptOptions ScriptOptions. public ScriptOptions ScriptOptions { get; set; } Property Value ScriptOptions SessionMessageHost Gets the session message host for displaying messages. [JsAce] public SessionMessageHost SessionMessageHost { get; } Property Value SessionMessageHost StepCount Gets the total number of milling steps. [JsAce] public int StepCount { get; } Property Value int Workpiece Gets or sets the workpiece. [JsAce] public Workpiece Workpiece { get; set; } Property Value Workpiece Methods AddTimeDataByFile(string, string, double, double) Adds time-based data from a file to the time mapping dictionary with specified time bounds in seconds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] public bool AddTimeDataByFile(string key, string relFile, double beginTime, double endTime) Parameters key string Key to identify the data relFile string Relative path to the data file beginTime double Beginning time in seconds endTime double Ending time in seconds Returns bool True if the data was successfully added, false otherwise AddTimeDataByFile(string, string, string, string) Adds time-based data from a file to the time mapping dictionary with specified time bounds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] public bool AddTimeDataByFile(string key, string relFile, string beginTimeText, string endTimeText) Parameters key string Key to identify the data relFile string Relative path to the data file beginTimeText string Beginning time as text (seconds or TimeSpan format) endTimeText string Ending time as text (seconds or TimeSpan format) Returns bool True if the data was successfully added, false otherwise AdjustedFeedPerCycle(double, double) Gets a new feed per cycle machining motion resolution instance with adjusted scale and minimum linear resolution. [JsAce(\"AdjustedFeedPerCycle($1scale,$2minLinearResolution_mm)\")] public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale, double minLinearResolution_mm = 0) Parameters scale double The scale factor for the resolution. minLinearResolution_mm double The minimum linear resolution in millimeters. Default is 0. Returns FeedPerCycleMachiningMotionResolution A new FeedPerCycleMachiningMotionResolution instance with the specified parameters. AppendMessagesToFile(string, params string[]) Appends messages to a file, optionally filtered by tags. [JsAce(\"AppendMessagesToFile(\\\"dstRelFile\\\",flags)\")] public void AppendMessagesToFile(string dstRelFile, params string[] flags) Parameters dstRelFile string Destination relative file path flags string[] Optional flags to filter messages by tags BeginPreserve() Begin Preserve section in optimzation process. [JsAce(\"BeginPreserve()\")] public void BeginPreserve() BeginSelection(string, AnchorMode, IStepShift) Begin mark on current line. milling step() has not triggered yet. public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBegin, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the beginning of selection shift IStepShift Step shift to apply BeginSession() Begins a new machining session. Not for end user. public void BeginSession() ClearDefectDisplayee() Clears the defect displayee from the workpiece. [JsAce] public void ClearDefectDisplayee() ClearTimeMappingData() Clears all time mapping data. [JsAce] public void ClearTimeMappingData() Diff(double) Performs a difference analysis on the workpiece geometry to detect variations. [JsAce(\"Diff($1detectionRadius_mm)\")] public void Diff(double detectionRadius_mm) Parameters detectionRadius_mm double Radius for detecting differences EndPreserve() End Preserve section in optimzation process. [JsAce(\"EndPreserve()\")] public void EndPreserve() EndSelection(string, AnchorMode, IStepShift) End mark on current line for selection. public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the end of selection shift IStepShift Step shift to apply EndSession() Ends the current machining session. Not for end user. public void EndSession() ErrorMessage(string) Displays an error message in the message host. [JsAce(\"ErrorMessage($1message)\")] public void ErrorMessage(string message) Parameters message string The error message to display FixedPace(double, double) Creates a fixed machining motion resolution with specified parameters. [JsAce(\"FixedPace($1linearResolution_mm, $2rotaryResolution_deg)\")] public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters rotaryResolution_deg double Rotary resolution in degrees Returns FixedMachiningMotionResolution A new fixed machining motion resolution instance GetMillingStep(int) Retrieves a milling step at the specified index. [JsAce(Snippet = \"GetMillingStep($1\\\"stepIndex\\\")\")] public MachiningStep GetMillingStep(int stepIndex) Parameters stepIndex int Index of the milling step to retrieve Returns MachiningStep The milling step at the specified index GetStickMachiningToolObservationHeight_mm(int) Gets the observation height in millimeters for the specified stick machining tool. [JsAce(\"GetStickMachiningToolObservationHeight_mm($1toolId)\")] public double GetStickMachiningToolObservationHeight_mm(int toolId) Parameters toolId int The ID of the tool Returns double The observation height in millimeters GetUniformContourTrayShiftAngle_deg(int) Gets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"GetUniformContourTrayShiftAngle_deg($1toolId)\")] public double GetUniformContourTrayShiftAngle_deg(int toolId) Parameters toolId int The ID of the tool Returns double The shift angle in degrees LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift) Create a line selection from begin to end mark. public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.LineBegin, IStepShift beginShift = null, AnchorMode endAnchorMode = AnchorMode.LineEnd, IStepShift endShift = null) Parameters key string Identifier key for the selection beginAnchorMode AnchorMode Mode for anchoring the beginning of selection beginShift IStepShift Step shift to apply at beginning endAnchorMode AnchorMode Mode for anchoring the end of selection endShift IStepShift Step shift to apply at end LoadCuttingParaByFile(string) Loads cutting parameters from a file. [JsAce(\"LoadCuttingParaByFile($1\\\"relFile\\\")\")] public void LoadCuttingParaByFile(string relFile) Parameters relFile string File path relative to BaseDirectory. Map(string, FileTimeSection, CycleSamplingMode?) Maps selection data to time section. public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShotUtil.CycleSamplingMode? cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters key string Identifier key for the selection fileTimeSection FileTimeSection File time section, or null to use the one associated with the key cycleSamplingMode StepTimeShotUtil.CycleSamplingMode? Cycle sampling mode Returns Task Task representing the asynchronous mapping operation MapByActualTime(string, CycleSamplingMode) Maps machining steps by actual time from a time shot file. [Obsolete] public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters timeShotRelFile string Relative path to the time shot file. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. MapSeriesByCsvFile(string, CycleSamplingMode) Maps machining steps by actual time from a time shot csv file. [JsAce(\"MapSeriesByCsvFile($1timeShotRelFile)\")] public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters timeShotRelFile string Relative path to the time shot file. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. MapSingleByCsvFile(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [JsAce(Snippet = \"MapSingleByCsvFile($1\\\"csvFile\\\")\")] public void MapSingleByCsvFile(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory Message(string) Displays a message in the message host. [JsAce(\"Message($1message)\")] public void Message(string message) Parameters message string The message to display OptCallPreferFuncIndexDictionary() Gets the dictionary of preferred function index for NC optimization. [JsAce(\"OptCallPreferFuncIndexDictionary()\")] public Dictionary, double> OptCallPreferFuncIndexDictionary() Returns Dictionary, double> Dictionary mapping functions to their preference indexes. OptimizeToFiles(string) Optimizes NC files and saves results using the specified file template. [JsAce(Snippet = \"OptimizeToFiles(\\\"Output/Opt-[NcName]\\\")\", DocContentHtml = \"Optimize To Files by substitude template keywoard \\\"[NcName]\\\"\")] public void OptimizeToFiles(string relFileTemplate = \"Output/Opt-[NcName]\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Pace() A pausable mark for the playing process. The function enables Pause() to take effect. [JsAce(\"Pace();\")] public void Pace() Remarks Waits for the player to signal the next pace. Pause() Pause Player [JsAce(DocContentHtml = \"Pause Player\")] public void Pause() PlayAct(IAct, IGetSentence, CancellationToken?) Plays an act with pacing control. [JsAce] public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct The act to play. sourceCommand IGetSentence The source command. cancellationToken CancellationToken? Cancellation token. PlayClTeleport(double, double, double, double, double, double) Plays a CL (cutter location) teleport operation. [JsAce] public void PlayClTeleport(double x, double y, double z, double i, double j, double k) Parameters x double X coordinate. y double Y coordinate. z double Z coordinate. i double I vector component. j double J vector component. k double K vector component. PlayCsvFile(string) Plays an Csv file with the specified relative path. [JsAce(\"PlayCsvFile($1\\\"csvFile\\\");\")] public void PlayCsvFile(string relFilePath) Parameters relFilePath string Relative path to the CSV file PlayNc(string, string) Plays NC code directly from a string, executing each action and pacing between them. [JsAce(Snippet = \"PlayNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Play NC. second parameter is the file name alternative shows in the log.\")] public void PlayNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs PlayNcFile(string) Plays an NC file with the specified relative path. [JsAce(\"PlayNcFile($1\\\"ncFile\\\");\")] public void PlayNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file PlayToolingTeleport(int) Plays a tooling teleport operation. [JsAce] public void PlayToolingTeleport(int toolId) Parameters toolId int The tool ID to teleport. Preserve() Preserve one line NC code in optimzation process. [JsAce(\"Preserve()\")] public void Preserve() ProgressMessage(string) Displays a progress message in the message host. [JsAce(\"ProgressMessage($1message)\")] public void ProgressMessage(string message) Parameters message string The progress message to display ReTrainMillingPara(SampleFlag, string, double) Re-trains milling parameters using the specified sample flag. [JsAce(\"ReTrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 0.1) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering ReadCsvByTimeInterpolation(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [Obsolete] public void ReadCsvByTimeInterpolation(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory ReadRuntimeGeom(string) Reads runtime geometry from a file. [JsAce(\"ReadRuntimeGeom($1\\\"srcFile\\\")\")] public void ReadRuntimeGeom(string relFile) Parameters relFile string Relative path to the input file RegisterStepVariable(string, string, string, string, Func) Registers a step variable for tracking during execution. [JsAce(Snippet = \"RegisterStepVariable(\\\"$1key\\\",\\\"$2name\\\",\\\"$3unit\\\",\\\"$4formatString\\\",\\\"$5variableFunc\\\")\", DocContentHtml = \"

            Register Step Variable.

            \\\"unit\\\" is nullable

            \\\"formatString\\\" is nullable

            \")] public void RegisterStepVariable(string key, string name, string unit, string formatString, Func variableFunc = null) Parameters key string Unique key to identify the variable name string Human-readable name of the variable unit string Physical unit of the variable (can be null) formatString string Format string for displaying the variable (can be null) variableFunc Func Function to compute the variable value from a milling step (can be null) RemoveFlyPiece() Removes any disconnected or “flying” pieces from the workpiece geometry. [JsAce] public void RemoveFlyPiece() Reset() Reset Player [JsAce(DocContentHtml = \"Reset Player\")] public void Reset() ResetRuntime() Clears internal buffers. [JsAce] public void ResetRuntime() RunNc(string, string) Runs NC code directly from a string. Not for end user. [JsAce(Snippet = \"RunNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Run NC. second parameter is the file name alternative shows in the log.\")] public IEnumerable RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs Returns IEnumerable Enumerable sequence of actions to be executed RunNcFile(string) Runs an NC file with the specified relative path. Not for end user. [JsAce(\"RunNcFile($1\\\"ncFile\\\");\")] public IEnumerable RunNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file Returns IEnumerable Enumerable sequence of actions to be executed ScaledFeedPerCycle(double) Gets a new feed per cycle machining motion resolution instance with the specified scale. [JsAce(\"ScaledFeedPerCycle($1scale)\")] public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale) Parameters scale double The scale factor for the resolution. Returns FeedPerCycleMachiningMotionResolution A new FeedPerCycleMachiningMotionResolution instance with the specified scale. ScanRuntimeGeomInfDefect() Scans the runtime geometry for defects. After scanning, the scanned defects will render in the workpiece. [JsAce] public bool? ScanRuntimeGeomInfDefect() Returns bool? True if defects are found, false otherwise, or null if the operation cannot be performed. SetNcResolutionFeedPerCycle() Sets NC resolution to feed per cycle mode. public void SetNcResolutionFeedPerCycle() SetNcResolutionFeedPerTooth() Sets NC resolution to feed per tooth mode. public void SetNcResolutionFeedPerTooth() SetNcResolutionFixed(double, double) Sets NC resolution to fixed mode with specified resolution values. public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters. rotaryResolution_deg double Rotary resolution in degrees. SetStickMachiningToolObservationHeight_mm(int, double) Sets the observation height in millimeters for the specified stick machining tool. [JsAce(\"SetStickMachiningToolObservationHeight_mm($1toolId,$2height_mm)\")] public void SetStickMachiningToolObservationHeight_mm(int toolId, double height) Parameters toolId int The ID of the tool height double The observation height in millimeters to set SetUniformContourTrayShiftAngle_deg(int, double) Sets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"SetUniformContourTrayShiftAngle_deg($1toolId,$2angle_deg)\")] public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg) Parameters toolId int The ID of the tool angle_deg double The shift angle in degrees to set ShiftDistance_mm(double) Creates a distance shift object representing the specified distance in millimeters. public DistanceShift ShiftDistance_mm(double distanceShift_mm) Parameters distanceShift_mm double Distance shift in millimeters Returns DistanceShift Distance shift object ShiftTime_s(double) Creates a time shift object representing the specified time in seconds. public TimeShift ShiftTime_s(double seconds) Parameters seconds double Time in seconds Returns TimeShift Time shift object TrainMillingPara(SampleFlag, string, double, ICuttingPara) Trains milling parameters using the specified sample flag. [JsAce(\"TrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 0.1, ICuttingPara paraTemplate = null) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering paraTemplate ICuttingPara Optional parameter template for cutting operations. WarningMessage(string) Displays a warning message in the message host. [JsAce(\"WarningMessage($1message)\")] public void WarningMessage(string message) Parameters message string The warning message to display WriteRuntimeGeom(string) Writes the current runtime geometry to a file. [JsAce(\"WriteRuntimeGeom($1\\\"dstFile\\\")\")] public void WriteRuntimeGeom(string relFile) Parameters relFile string Relative path to the output file WriteRuntimeGeomToStl(string, double) Writes the current runtime geometry to an STL file. [JsAce(\"WriteRuntimeGeomToStl($1\\\"dstFile\\\",$2resolution_mm)\")] public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0) Parameters relFile string Relative path to the output STL file resolution_mm double Resolution in millimeters (0 for default) WriteShotFiles(double, string) Writes time-series data to shot files with the specified resolution period (alternative parameter order). public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate) Parameters resolutionPeroid_ms double Resolution period in milliseconds relFileTemplate string Template for output file path, can include [NcName] placeholder WriteShotFiles(string, double) Writes time-series data to shot files with the specified resolution period. [JsAce(Snippet = \"WriteShotFiles(\\\"Output/[NcName].shot.csv\\\",resolutionPeroid_ms)\", DocContentHtml = \"Write time series data by resolutionPeroid_ms\")] public void WriteShotFiles(string relFileTemplate = \"Output/[NcName].shot.csv\", double resolutionPeroid_ms = 1) Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder resolutionPeroid_ms double Resolution period in milliseconds WriteStepFiles(string) Writes step-series data to files with the specified file template. [JsAce(Snippet = \"WriteStepFiles(\\\"Output/[NcName].step.csv\\\")\", DocContentHtml = \"Write step series data.\")] public void WriteStepFiles(string relFileTemplate = \"Output/[NcName].step.csv\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Events MachiningStepBuilt Gets or sets the action to configure steps during execution. The event will be cleared by the calling of ResetRuntime(). [JsAce(Snippet = \"MachiningStepBuilt+=($1preStep,$2curStep)=>{$3Command};\", DocContentHtml = \"Runtime Step Configuration action. preStep is the Previous Milling Step; curStep is the Current Milling Step. preStep is null if no previous step existed.\")] public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate MachiningStepSelected Event that is triggered when a milling step is selected. The event will be cleared by the calling of ResetRuntime(). [JsAce(Snippet = \"MachiningStepSelected+=($1millingStep)=>{$2Command};\")] public event Action MachiningStepSelected Event Type Action" + "summary": "Class RuntimeApi Namespace Hi.MachiningProcs Assembly HiNc.dll Runtime API for machining operations. public class RuntimeApi : ICsScriptApi Inheritance object RuntimeApi Implements ICsScriptApi Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DefaultParaTemplateDimension Gets or sets the parameter template dimension (2D or 3D). [JsAce] public int DefaultParaTemplateDimension { get; set; } Property Value int DiffVisualRadius_mm Gets or sets the visual radius in millimeters for difference visualization. Controls the radius used for highlighting differences between workpiece states. [JsAce] public double DiffVisualRadius_mm { get; set; } Property Value double DispCacheMb Gets or sets the display cache size in megabytes. [Obsolete] public long DispCacheMb { get; set; } Property Value long DispCache_Mb Gets or sets the display cache size in megabytes. [JsAce] public long DispCache_Mb { get; set; } Property Value long EmbeddedLogMode Gets or sets the embedded log mode for NC optimization. [JsAce] public static NcOptimizationEmbeddedLogMode EmbeddedLogMode { get; set; } Property Value NcOptimizationEmbeddedLogMode EnableCollisionDetection Gets or sets whether collision detection is enabled. [JsAce(DocContentHtml = \"Enable Collision Detection.\")] public bool EnableCollisionDetection { get; set; } Property Value bool EnableIndividualStepAdjustmentLog Gets or sets whether to enable individual step adjustment logging. [JsAce] public static bool EnableIndividualStepAdjustmentLog { get; set; } Property Value bool EnableMapOnSelectionEnd Gets or sets whether to automatically map selections when they end. [JsAce] public bool EnableMapOnSelectionEnd { get; set; } Property Value bool EnableMotionDependentMachiningResolution Gets or sets whether motion-dependent machining resolution is enabled. [JsAce] public bool EnableMotionDependentMachiningResolution { get; set; } Property Value bool EnableMzLeverWeightingOnTraining Gets or sets whether Mz lever weighting is enabled on training. [Obsolete] public bool EnableMzLeverWeightingOnTraining { get; set; } Property Value bool EnablePauseOnCollision Gets or sets whether to pause execution when a collision is detected. This property only has an effect if collision detection is enabled. [Obsolete] public bool EnablePauseOnCollision { get; set; } Property Value bool EnablePauseOnFailure Gets or sets whether to pause on failure during execution. [JsAce(DocContentHtml = \"Enable Pause On Failure.\")] public bool EnablePauseOnFailure { get; set; } Property Value bool EnablePhysics Gets or sets whether milling force evaluation is enabled. [JsAce(DocContentHtml = \"Enable milling force evaluation.\")] public bool EnablePhysics { get; set; } Property Value bool EnableSampleNormalization [Obsolete] public bool EnableSampleNormalization { get; set; } Property Value bool 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. EnableWearEffect Gets or sets whether tool wear effects are enabled in simulation. [JsAce] public bool EnableWearEffect { get; set; } Property Value bool FeedPerCycle Gets a new feed per cycle machining motion resolution instance. [JsAce] public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; } Property Value FeedPerCycleMachiningMotionResolution FeedPerTooth Gets a new feed per tooth machining motion resolution instance. [JsAce] public FeedPerToothMachiningMotionResolution FeedPerTooth { get; } Property Value FeedPerToothMachiningMotionResolution Fixture Gets or sets the fixture. [JsAce] public Fixture Fixture { get; set; } Property Value Fixture Global Global variables. [JsAce(\"Global[$1key]\")] public Dictionary Global { get; } Property Value Dictionary InitSpindleTemperature_C Gets or sets the initial spindle temperature in degrees Celsius. [JsAce(DocContentHtml = \"Spindle Temperature on initialization.\")] public double InitSpindleTemperature_C { get; set; } Property Value double JsAceCompletionProfileJsonArray Internal used. public static JsonArray JsAceCompletionProfileJsonArray { get; } Property Value JsonArray MachiningMotionResolution Gets or sets the machining motion resolution. [JsAce] public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution MachiningResolution Gets or sets the machining resolution in millimeters. [JsAce] [Obsolete(\"Use MachiningResolution_mm instead.\")] public double MachiningResolution { get; set; } Property Value double MachiningResolution_mm Gets or sets the machining resolution in millimeters. [JsAce] public double MachiningResolution_mm { get; set; } Property Value double MachiningSession public MachiningSession MachiningSession { get; } Property Value MachiningSession MapTask Task tracking the status of mapping operations. public Task MapTask { get; set; } Property Value Task 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. [JsAce] public static int MillingCycleDivisionNum { get; set; } Property Value int 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. [JsAce(DocContentHtml = \"Obsoleted. Use MillingCycleDivisionNum instead.\")] [Obsolete(\"Use MillingCycleDivisionNum instead.\")] public static int MillingForceCycleDivisionNum { get; set; } Property Value int NcOptOption Gets or sets the NC optimization options. [JsAce] public NcOptOption NcOptOption { get; set; } Property Value NcOptOption OptEnableDepthCompensation Enables or disables depth compensation during optimization. [JsAce] public bool OptEnableDepthCompensation { get; set; } Property Value bool OptEnableFeedrate Gets or sets whether to enable feed rate optimization in NC optimization. [JsAce] public bool OptEnableFeedrate { get; set; } Property Value bool OptEnableForwardCompensation Enables or disables forward compensation during optimization. [JsAce] public bool OptEnableForwardCompensation { get; set; } Property Value bool OptEnableInterpolation Enables or disables reinterpolation for optimization. [JsAce] public bool OptEnableInterpolation { get; set; } Property Value bool OptEnableSideCompensation Enables or disables side compensation during optimization. [JsAce] public bool OptEnableSideCompensation { get; set; } Property Value bool OptExtendedPostDistance_mm Gets or sets the extended post-distance in millimeters for NC optimization. This is the distance after the current segment that will be considered for optimization. [JsAce] public double OptExtendedPostDistance_mm { get; set; } Property Value double OptExtendedPreDistance_mm Gets or sets the extended pre-distance in millimeters for NC optimization. This is the distance before the current segment that will be considered for optimization. [JsAce] public double OptExtendedPreDistance_mm { get; set; } Property Value double OptFeedrateAssignmentRatio Gets or sets the feedrate assignment ratio for optimization. If the feedrate change exceeds this ratio, the feedrate in the NC line will be updated. [JsAce] public double OptFeedrateAssignmentRatio { get; set; } Property Value double OptMaxAcceleration_mmds2 Maximum acceleration in mm/s² during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxAcceleration_mmds2 { get; set; } Property Value double OptMaxFeedPerTooth_mm Gets or sets the maximum feed per tooth in millimeters for optimization. [JsAce] public double OptMaxFeedPerTooth_mm { get; set; } Property Value double OptMaxFeedrate_mmdmin Maximum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMaxFeedrate_mmdmin { get; set; } Property Value double OptMaxJerk_mmds3 Maximum jerk in mm/s³ during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxJerk_mmds3 { get; set; } Property Value double OptMinFeedPerTooth_mm Gets or sets the minimum feed per tooth in millimeters for optimization. [JsAce] public double OptMinFeedPerTooth_mm { get; set; } Property Value double OptMinFeedrate_mmdmin Minimum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMinFeedrate_mmdmin { get; set; } Property Value double OptPreferedForce_N Preferred force in N for optimization. [JsAce] public double OptPreferedForce_N { get; set; } Property Value double OptRapidFeed_mmdmin Rapid feed rate in mm/min for non-cutting movements during optimization. [JsAce] public double OptRapidFeed_mmdmin { get; set; } Property Value double OptSpindlePowerSafetyFactor Safety factor for MAX spindle power during optimization. [JsAce] public double OptSpindlePowerSafetyFactor { get; set; } Property Value double OptSpindlePowerUtilizationFactor Utilization factor for MAX spindle power during optimization. It is the reciprocal of the spindle power safety factor. [JsAce] public double OptSpindlePowerUtilizationFactor { get; set; } Property Value double OptSpindleTorqueSafetyFactor Gets or sets the MAX spindle torque safety factor for NC optimization. [JsAce] public double OptSpindleTorqueSafetyFactor { get; set; } Property Value double OptSpindleTorqueUtilizationFactor Utilization factor for MAX spindle torque during optimization. It is the reciprocal of the spindle torque safety factor. [JsAce] public double OptSpindleTorqueUtilizationFactor { get; set; } Property Value double OptThermalYieldSafetyFactor Safety factor for spindle torque during optimization. [JsAce] public double OptThermalYieldSafetyFactor { get; set; } Property Value double OptThermalYieldUtilizationFactor Utilization factor for thermal yield during optimization. It is the reciprocal of the thermal yield safety factor. [JsAce] public double OptThermalYieldUtilizationFactor { get; set; } Property Value double OptYieldingSafetyFactor Safety factor for yielding during optimization. [JsAce] public double OptYieldingSafetyFactor { get; set; } Property Value double OptYieldingUtilizationFactor Utilization factor for yielding during optimization. It is the reciprocal of the yielding safety factor. [JsAce] public double OptYieldingUtilizationFactor { get; set; } Property Value double ScriptOptions ScriptOptions. public ScriptOptions ScriptOptions { get; set; } Property Value ScriptOptions SessionMessageHost Gets the session message host for displaying messages. [JsAce] public SessionProgress SessionMessageHost { get; } Property Value SessionProgress StepCount Gets the total number of milling steps. [JsAce] public int StepCount { get; } Property Value int Workpiece Gets or sets the workpiece. [JsAce] public Workpiece Workpiece { get; set; } Property Value Workpiece Methods AddTimeDataByFile(string, string, double, double) Adds time-based data from a file to the time mapping dictionary with specified time bounds in seconds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] public bool AddTimeDataByFile(string key, string relFile, double beginTime, double endTime) Parameters key string Key to identify the data relFile string Relative path to the data file beginTime double Beginning time in seconds endTime double Ending time in seconds Returns bool True if the data was successfully added, false otherwise AddTimeDataByFile(string, string, string, string) Adds time-based data from a file to the time mapping dictionary with specified time bounds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] public bool AddTimeDataByFile(string key, string relFile, string beginTimeText, string endTimeText) Parameters key string Key to identify the data relFile string Relative path to the data file beginTimeText string Beginning time as text (seconds or TimeSpan format) endTimeText string Ending time as text (seconds or TimeSpan format) Returns bool True if the data was successfully added, false otherwise AdjustedFeedPerCycle(double, double) Gets a new feed per cycle machining motion resolution instance with adjusted scale and minimum linear resolution. [JsAce(\"AdjustedFeedPerCycle($1scale,$2minLinearResolution_mm)\")] public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale, double minLinearResolution_mm = 0) Parameters scale double The scale factor for the resolution. minLinearResolution_mm double The minimum linear resolution in millimeters. Default is 0. Returns FeedPerCycleMachiningMotionResolution A new FeedPerCycleMachiningMotionResolution instance with the specified parameters. AppendMessagesToFile(string, params string[]) Appends messages to a file, optionally filtered by tags. [JsAce(\"AppendMessagesToFile(\\\"dstRelFile\\\",flags)\")] public void AppendMessagesToFile(string dstRelFile, params string[] flags) Parameters dstRelFile string Destination relative file path flags string[] Optional flags to filter messages by tags BeginPreserve() Begin Preserve section in optimzation process. [JsAce(\"BeginPreserve()\")] public void BeginPreserve() BeginSelection(string, AnchorMode, IStepShift) Begin mark on current line. milling step() has not triggered yet. public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBegin, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the beginning of selection shift IStepShift Step shift to apply BeginSession() Begins a new machining session. Not for end user. public void BeginSession() ClearDefectDisplayee() Clears the defect displayee from the workpiece. [JsAce] public void ClearDefectDisplayee() ClearTimeMappingData() Clears all time mapping data. [JsAce] public void ClearTimeMappingData() Diff(double) Performs a difference analysis on the workpiece geometry to detect variations. [JsAce(\"Diff($1detectionRadius_mm)\")] public void Diff(double detectionRadius_mm) Parameters detectionRadius_mm double Radius for detecting differences EndPreserve() End Preserve section in optimzation process. [JsAce(\"EndPreserve()\")] public void EndPreserve() EndSelection(string, AnchorMode, IStepShift) End mark on current line for selection. public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the end of selection shift IStepShift Step shift to apply EndSession() Ends the current machining session. Not for end user. public void EndSession() ErrorMessage(string) Displays an error message in the message host. [JsAce(\"ErrorMessage($1message)\")] public void ErrorMessage(string message) Parameters message string The error message to display FixedPace(double, double) Creates a fixed machining motion resolution with specified parameters. [JsAce(\"FixedPace($1linearResolution_mm, $2rotaryResolution_deg)\")] public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters rotaryResolution_deg double Rotary resolution in degrees Returns FixedMachiningMotionResolution A new fixed machining motion resolution instance GetMillingStep(int) Retrieves a milling step at the specified index. [JsAce(Snippet = \"GetMillingStep($1\\\"stepIndex\\\")\")] public MachiningStep GetMillingStep(int stepIndex) Parameters stepIndex int Index of the milling step to retrieve Returns MachiningStep The milling step at the specified index GetStickMachiningToolObservationHeight_mm(int) Gets the observation height in millimeters for the specified stick machining tool. [JsAce(\"GetStickMachiningToolObservationHeight_mm($1toolId)\")] public double GetStickMachiningToolObservationHeight_mm(int toolId) Parameters toolId int The ID of the tool Returns double The observation height in millimeters GetUniformContourTrayShiftAngle_deg(int) Gets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"GetUniformContourTrayShiftAngle_deg($1toolId)\")] public double GetUniformContourTrayShiftAngle_deg(int toolId) Parameters toolId int The ID of the tool Returns double The shift angle in degrees LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift) Create a line selection from begin to end mark. public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.LineBegin, IStepShift beginShift = null, AnchorMode endAnchorMode = AnchorMode.LineEnd, IStepShift endShift = null) Parameters key string Identifier key for the selection beginAnchorMode AnchorMode Mode for anchoring the beginning of selection beginShift IStepShift Step shift to apply at beginning endAnchorMode AnchorMode Mode for anchoring the end of selection endShift IStepShift Step shift to apply at end LoadCuttingParaByFile(string) Loads cutting parameters from a file. [JsAce(\"LoadCuttingParaByFile($1\\\"relFile\\\")\")] public void LoadCuttingParaByFile(string relFile) Parameters relFile string File path relative to BaseDirectory. Map(string, FileTimeSection, CycleSamplingMode?) Maps selection data to time section. public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShotUtil.CycleSamplingMode? cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters key string Identifier key for the selection fileTimeSection FileTimeSection File time section, or null to use the one associated with the key cycleSamplingMode StepTimeShotUtil.CycleSamplingMode? Cycle sampling mode Returns Task Task representing the asynchronous mapping operation MapByActualTime(string, CycleSamplingMode) Maps machining steps by actual time from a time shot file. [Obsolete] public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters timeShotRelFile string Relative path to the time shot file. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. MapSeriesByCsvFile(string, CycleSamplingMode) Maps machining steps by actual time from a time shot csv file. [JsAce(\"MapSeriesByCsvFile($1timeShotRelFile)\")] public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters timeShotRelFile string Relative path to the time shot file. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. MapSingleByCsvFile(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [JsAce(Snippet = \"MapSingleByCsvFile($1\\\"csvFile\\\")\")] public void MapSingleByCsvFile(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory Message(string) Displays a message in the message host. [JsAce(\"Message($1message)\")] public void Message(string message) Parameters message string The message to display OptCallPreferFuncIndexDictionary() Gets the dictionary of preferred function index for NC optimization. [JsAce(\"OptCallPreferFuncIndexDictionary()\")] public Dictionary, double> OptCallPreferFuncIndexDictionary() Returns Dictionary, double> Dictionary mapping functions to their preference indexes. OptimizeToFiles(string) Optimizes NC files and saves results using the specified file template. [JsAce(Snippet = \"OptimizeToFiles(\\\"Output/Opt-[NcName]\\\")\", DocContentHtml = \"Optimize To Files by substitude template keywoard \\\"[NcName]\\\"\")] public void OptimizeToFiles(string relFileTemplate = \"Output/Opt-[NcName]\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Pace() A pausable mark for the playing process. The function enables Pause() to take effect. [JsAce(\"Pace();\")] public void Pace() Remarks Waits for the player to signal the next pace. Pause() Pause Player [JsAce(DocContentHtml = \"Pause Player\")] public void Pause() PlayAct(IAct, IGetSentence, CancellationToken?) Plays an act with pacing control. [JsAce] public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct The act to play. sourceCommand IGetSentence The source command. cancellationToken CancellationToken? Cancellation token. PlayClTeleport(double, double, double, double, double, double) Plays a CL (cutter location) teleport operation. [JsAce] public void PlayClTeleport(double x, double y, double z, double i, double j, double k) Parameters x double X coordinate. y double Y coordinate. z double Z coordinate. i double I vector component. j double J vector component. k double K vector component. PlayCsvFile(string) Plays an Csv file with the specified relative path. [JsAce(\"PlayCsvFile($1\\\"csvFile\\\");\")] public void PlayCsvFile(string relFilePath) Parameters relFilePath string Relative path to the CSV file PlayNc(string, string) Plays NC code directly from a string, executing each action and pacing between them. [JsAce(Snippet = \"PlayNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Play NC. second parameter is the file name alternative shows in the log.\")] public void PlayNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs PlayNcFile(string) Plays an NC file with the specified relative path. [JsAce(\"PlayNcFile($1\\\"ncFile\\\");\")] public void PlayNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file PlayToolingTeleport(int) Plays a tooling teleport operation. [JsAce] public void PlayToolingTeleport(int toolId) Parameters toolId int The tool ID to teleport. Preserve() Preserve one line NC code in optimzation process. [JsAce(\"Preserve()\")] public void Preserve() ProgressMessage(string) Displays a progress message in the message host. [JsAce(\"ProgressMessage($1message)\")] public void ProgressMessage(string message) Parameters message string The progress message to display ReTrainMillingPara(SampleFlag, string, double) Re-trains milling parameters using the specified sample flag. [JsAce(\"ReTrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 0.1) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering ReadCsvByTimeInterpolation(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [Obsolete] public void ReadCsvByTimeInterpolation(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory ReadRuntimeGeom(string) Reads runtime geometry from a file. [JsAce(\"ReadRuntimeGeom($1\\\"srcFile\\\")\")] public void ReadRuntimeGeom(string relFile) Parameters relFile string Relative path to the input file RegisterStepVariable(string, string, string, string, Func) Registers a step variable for tracking during execution. [JsAce(Snippet = \"RegisterStepVariable(\\\"$1key\\\",\\\"$2name\\\",\\\"$3unit\\\",\\\"$4formatString\\\",\\\"$5variableFunc\\\")\", DocContentHtml = \"

            Register Step Variable.

            \\\"unit\\\" is nullable

            \\\"formatString\\\" is nullable

            \")] public void RegisterStepVariable(string key, string name, string unit, string formatString, Func variableFunc = null) Parameters key string Unique key to identify the variable name string Human-readable name of the variable unit string Physical unit of the variable (can be null) formatString string Format string for displaying the variable (can be null) variableFunc Func Function to compute the variable value from a milling step (can be null) RemoveFlyPiece() Removes any disconnected or “flying” pieces from the workpiece geometry. [JsAce] public void RemoveFlyPiece() Reset() Reset Player [JsAce(DocContentHtml = \"Reset Player\")] public void Reset() ResetRuntime() Clears internal buffers. [JsAce] public void ResetRuntime() RunNc(string, string) Runs NC code directly from a string. Not for end user. [JsAce(Snippet = \"RunNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Run NC. second parameter is the file name alternative shows in the log.\")] public IEnumerable RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs Returns IEnumerable Enumerable sequence of actions to be executed RunNcFile(string) Runs an NC file with the specified relative path. Not for end user. [JsAce(\"RunNcFile($1\\\"ncFile\\\");\")] public IEnumerable RunNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file Returns IEnumerable Enumerable sequence of actions to be executed ScaledFeedPerCycle(double) Gets a new feed per cycle machining motion resolution instance with the specified scale. [JsAce(\"ScaledFeedPerCycle($1scale)\")] public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale) Parameters scale double The scale factor for the resolution. Returns FeedPerCycleMachiningMotionResolution A new FeedPerCycleMachiningMotionResolution instance with the specified scale. ScanRuntimeGeomInfDefect() Scans the runtime geometry for defects. After scanning, the scanned defects will render in the workpiece. [JsAce] public bool? ScanRuntimeGeomInfDefect() Returns bool? True if defects are found, false otherwise, or null if the operation cannot be performed. SetNcResolutionFeedPerCycle() Sets NC resolution to feed per cycle mode. public void SetNcResolutionFeedPerCycle() SetNcResolutionFeedPerTooth() Sets NC resolution to feed per tooth mode. public void SetNcResolutionFeedPerTooth() SetNcResolutionFixed(double, double) Sets NC resolution to fixed mode with specified resolution values. public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters. rotaryResolution_deg double Rotary resolution in degrees. SetStickMachiningToolObservationHeight_mm(int, double) Sets the observation height in millimeters for the specified stick machining tool. [JsAce(\"SetStickMachiningToolObservationHeight_mm($1toolId,$2height_mm)\")] public void SetStickMachiningToolObservationHeight_mm(int toolId, double height) Parameters toolId int The ID of the tool height double The observation height in millimeters to set SetUniformContourTrayShiftAngle_deg(int, double) Sets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"SetUniformContourTrayShiftAngle_deg($1toolId,$2angle_deg)\")] public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg) Parameters toolId int The ID of the tool angle_deg double The shift angle in degrees to set ShiftDistance_mm(double) Creates a distance shift object representing the specified distance in millimeters. public DistanceShift ShiftDistance_mm(double distanceShift_mm) Parameters distanceShift_mm double Distance shift in millimeters Returns DistanceShift Distance shift object ShiftTime_s(double) Creates a time shift object representing the specified time in seconds. public TimeShift ShiftTime_s(double seconds) Parameters seconds double Time in seconds Returns TimeShift Time shift object TrainMillingPara(SampleFlag, string, double, ICuttingPara) Trains milling parameters using the specified sample flag. [JsAce(\"TrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 0.1, ICuttingPara paraTemplate = null) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering paraTemplate ICuttingPara Optional parameter template for cutting operations. WarningMessage(string) Displays a warning message in the message host. [JsAce(\"WarningMessage($1message)\")] public void WarningMessage(string message) Parameters message string The warning message to display WriteRuntimeGeom(string) Writes the current runtime geometry to a file. [JsAce(\"WriteRuntimeGeom($1\\\"dstFile\\\")\")] public void WriteRuntimeGeom(string relFile) Parameters relFile string Relative path to the output file WriteRuntimeGeomToStl(string, double) Writes the current runtime geometry to an STL file. [JsAce(\"WriteRuntimeGeomToStl($1\\\"dstFile\\\",$2resolution_mm)\")] public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0) Parameters relFile string Relative path to the output STL file resolution_mm double Resolution in millimeters (0 for default) WriteShotFiles(double, string) Writes time-series data to shot files with the specified resolution period (alternative parameter order). public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate) Parameters resolutionPeroid_ms double Resolution period in milliseconds relFileTemplate string Template for output file path, can include [NcName] placeholder WriteShotFiles(string, double) Writes time-series data to shot files with the specified resolution period. [JsAce(Snippet = \"WriteShotFiles(\\\"Output/[NcName].shot.csv\\\",resolutionPeroid_ms)\", DocContentHtml = \"Write time series data by resolutionPeroid_ms\")] public void WriteShotFiles(string relFileTemplate = \"Output/[NcName].shot.csv\", double resolutionPeroid_ms = 1) Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder resolutionPeroid_ms double Resolution period in milliseconds WriteStepFiles(string) Writes step-series data to files with the specified file template. [JsAce(Snippet = \"WriteStepFiles(\\\"Output/[NcName].step.csv\\\")\", DocContentHtml = \"Write step series data.\")] public void WriteStepFiles(string relFileTemplate = \"Output/[NcName].step.csv\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Events MachiningStepBuilt Gets or sets the action to configure steps during execution. The event will be cleared by the calling of ResetRuntime(). [JsAce(Snippet = \"MachiningStepBuilt+=($1preStep,$2curStep)=>{$3Command};\", DocContentHtml = \"Runtime Step Configuration action. preStep is the Previous Milling Step; curStep is the Current Milling Step. preStep is null if no previous step existed.\")] public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate MachiningStepSelected Event that is triggered when a milling step is selected. The event will be cleared by the calling of ResetRuntime(). [JsAce(Snippet = \"MachiningStepSelected+=($1millingStep)=>{$2Command};\")] public event Action MachiningStepSelected Event Type Action" }, "api/Hi.MachiningProcs.RuntimeController.html": { "href": "api/Hi.MachiningProcs.RuntimeController.html", "title": "Class RuntimeController | HiAPI-C# 2025", - "summary": "Class RuntimeController Namespace Hi.MachiningProcs 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. [ApiController] [Route(\"api/[controller]/[action]\")] public class RuntimeController : ControllerBase Inheritance object ControllerBase RuntimeController Inherited Members ControllerBase.StatusCode(int) ControllerBase.StatusCode(int, object) ControllerBase.Content(string) ControllerBase.Content(string, string) ControllerBase.Content(string, string, Encoding) ControllerBase.Content(string, MediaTypeHeaderValue) ControllerBase.NoContent() ControllerBase.Ok() ControllerBase.Ok(object) ControllerBase.Redirect(string) ControllerBase.RedirectPermanent(string) ControllerBase.RedirectPreserveMethod(string) ControllerBase.RedirectPermanentPreserveMethod(string) ControllerBase.LocalRedirect(string) ControllerBase.LocalRedirectPermanent(string) ControllerBase.LocalRedirectPreserveMethod(string) ControllerBase.LocalRedirectPermanentPreserveMethod(string) ControllerBase.RedirectToAction() ControllerBase.RedirectToAction(string) ControllerBase.RedirectToAction(string, object) ControllerBase.RedirectToAction(string, string) ControllerBase.RedirectToAction(string, string, object) ControllerBase.RedirectToAction(string, string, string) ControllerBase.RedirectToAction(string, string, object, string) ControllerBase.RedirectToActionPreserveMethod(string, string, object, string) ControllerBase.RedirectToActionPermanent(string) ControllerBase.RedirectToActionPermanent(string, object) ControllerBase.RedirectToActionPermanent(string, string) ControllerBase.RedirectToActionPermanent(string, string, string) ControllerBase.RedirectToActionPermanent(string, string, object) ControllerBase.RedirectToActionPermanent(string, string, object, string) ControllerBase.RedirectToActionPermanentPreserveMethod(string, string, object, string) ControllerBase.RedirectToRoute(string) ControllerBase.RedirectToRoute(object) ControllerBase.RedirectToRoute(string, object) ControllerBase.RedirectToRoute(string, string) ControllerBase.RedirectToRoute(string, object, string) ControllerBase.RedirectToRoutePreserveMethod(string, object, string) ControllerBase.RedirectToRoutePermanent(string) ControllerBase.RedirectToRoutePermanent(object) ControllerBase.RedirectToRoutePermanent(string, object) ControllerBase.RedirectToRoutePermanent(string, string) ControllerBase.RedirectToRoutePermanent(string, object, string) ControllerBase.RedirectToRoutePermanentPreserveMethod(string, object, string) ControllerBase.RedirectToPage(string) ControllerBase.RedirectToPage(string, object) ControllerBase.RedirectToPage(string, string) ControllerBase.RedirectToPage(string, string, object) ControllerBase.RedirectToPage(string, string, string) ControllerBase.RedirectToPage(string, string, object, string) ControllerBase.RedirectToPagePermanent(string) ControllerBase.RedirectToPagePermanent(string, object) ControllerBase.RedirectToPagePermanent(string, string) ControllerBase.RedirectToPagePermanent(string, string, string) ControllerBase.RedirectToPagePermanent(string, string, object, string) ControllerBase.RedirectToPagePreserveMethod(string, string, object, string) ControllerBase.RedirectToPagePermanentPreserveMethod(string, string, object, string) ControllerBase.File(byte[], string) ControllerBase.File(byte[], string, bool) ControllerBase.File(byte[], string, string) ControllerBase.File(byte[], string, string, bool) ControllerBase.File(byte[], string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(byte[], string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(byte[], string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(byte[], string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(Stream, string) ControllerBase.File(Stream, string, bool) ControllerBase.File(Stream, string, string) ControllerBase.File(Stream, string, string, bool) ControllerBase.File(Stream, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(Stream, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(Stream, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(Stream, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(string, string) ControllerBase.File(string, string, bool) ControllerBase.File(string, string, string) ControllerBase.File(string, string, string, bool) ControllerBase.File(string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(string, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(string, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.PhysicalFile(string, string) ControllerBase.PhysicalFile(string, string, bool) ControllerBase.PhysicalFile(string, string, string) ControllerBase.PhysicalFile(string, string, string, bool) ControllerBase.PhysicalFile(string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.PhysicalFile(string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.PhysicalFile(string, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.PhysicalFile(string, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.Unauthorized() ControllerBase.Unauthorized(object) ControllerBase.NotFound() ControllerBase.NotFound(object) ControllerBase.BadRequest() ControllerBase.BadRequest(object) ControllerBase.BadRequest(ModelStateDictionary) ControllerBase.UnprocessableEntity() ControllerBase.UnprocessableEntity(object) ControllerBase.UnprocessableEntity(ModelStateDictionary) ControllerBase.Conflict() ControllerBase.Conflict(object) ControllerBase.Conflict(ModelStateDictionary) ControllerBase.Problem(string, string, int?, string, string) ControllerBase.Problem(string, string, int?, string, string, IDictionary) ControllerBase.ValidationProblem(ValidationProblemDetails) ControllerBase.ValidationProblem(ModelStateDictionary) ControllerBase.ValidationProblem() ControllerBase.ValidationProblem(string, string, int?, string, string, ModelStateDictionary) ControllerBase.ValidationProblem(string, string, int?, string, string, ModelStateDictionary, IDictionary) ControllerBase.Created() ControllerBase.Created(string, object) ControllerBase.Created(Uri, object) ControllerBase.CreatedAtAction(string, object) ControllerBase.CreatedAtAction(string, object, object) ControllerBase.CreatedAtAction(string, string, object, object) ControllerBase.CreatedAtRoute(string, object) ControllerBase.CreatedAtRoute(object, object) ControllerBase.CreatedAtRoute(string, object, object) ControllerBase.Accepted() ControllerBase.Accepted(object) ControllerBase.Accepted(Uri) ControllerBase.Accepted(string) ControllerBase.Accepted(string, object) ControllerBase.Accepted(Uri, object) ControllerBase.AcceptedAtAction(string) ControllerBase.AcceptedAtAction(string, string) ControllerBase.AcceptedAtAction(string, object) ControllerBase.AcceptedAtAction(string, string, object) ControllerBase.AcceptedAtAction(string, object, object) ControllerBase.AcceptedAtAction(string, string, object, object) ControllerBase.AcceptedAtRoute(object) ControllerBase.AcceptedAtRoute(string) ControllerBase.AcceptedAtRoute(string, object) ControllerBase.AcceptedAtRoute(object, object) ControllerBase.AcceptedAtRoute(string, object, object) ControllerBase.Challenge() ControllerBase.Challenge(params string[]) ControllerBase.Challenge(AuthenticationProperties) ControllerBase.Challenge(AuthenticationProperties, params string[]) ControllerBase.Forbid() ControllerBase.Forbid(params string[]) ControllerBase.Forbid(AuthenticationProperties) ControllerBase.Forbid(AuthenticationProperties, params string[]) ControllerBase.SignIn(ClaimsPrincipal) ControllerBase.SignIn(ClaimsPrincipal, string) ControllerBase.SignIn(ClaimsPrincipal, AuthenticationProperties) ControllerBase.SignIn(ClaimsPrincipal, AuthenticationProperties, string) ControllerBase.SignOut() ControllerBase.SignOut(AuthenticationProperties) ControllerBase.SignOut(params string[]) ControllerBase.SignOut(AuthenticationProperties, params string[]) ControllerBase.TryUpdateModelAsync(TModel) ControllerBase.TryUpdateModelAsync(TModel, string) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider) ControllerBase.TryUpdateModelAsync(TModel, string, params Expression>[]) ControllerBase.TryUpdateModelAsync(TModel, string, Func) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider, params Expression>[]) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider, Func) ControllerBase.TryUpdateModelAsync(object, Type, string) ControllerBase.TryUpdateModelAsync(object, Type, string, IValueProvider, Func) ControllerBase.TryValidateModel(object) ControllerBase.TryValidateModel(object, string) ControllerBase.HttpContext ControllerBase.Request ControllerBase.Response ControllerBase.RouteData ControllerBase.ModelState ControllerBase.ControllerContext ControllerBase.MetadataProvider ControllerBase.ModelBinderFactory ControllerBase.Url ControllerBase.ObjectValidator ControllerBase.ProblemDetailsFactory ControllerBase.User ControllerBase.Empty object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RuntimeController(LocalProjectService) Initializes a new instance. public RuntimeController(LocalProjectService projectService) Parameters projectService LocalProjectService Properties DefaultParaTemplateDimension DefaultParaTemplateDimension [JsAce] public int DefaultParaTemplateDimension { get; set; } Property Value int DiffVisualRadius_mm Gets or sets the visual radius in millimeters for difference visualization. Controls the radius used for highlighting differences between workpiece states. [JsAce] public double DiffVisualRadius_mm { get; set; } Property Value double DispCacheMb Gets or sets the display cache size in megabytes. [Obsolete] public long DispCacheMb { get; set; } Property Value long DispCache_Mb Gets or sets the display cache size in megabytes. [JsAce] public long DispCache_Mb { get; set; } Property Value long EnableAutoMapOnSelectionEnd Gets or sets whether to automatically map selections when they end. [JsAce] public bool EnableAutoMapOnSelectionEnd { get; set; } Property Value bool EnableCollisionDetection Gets or sets whether collision detection is enabled. [JsAce(DocContentHtml = \"Enable Collision Detection.\")] public bool EnableCollisionDetection { get; set; } Property Value bool EnablePauseOnFailure EnablePauseOnFailure [JsAce(DocContentHtml = \"Enable Pause On Failure.\")] public bool EnablePauseOnFailure { get; set; } Property Value bool EnablePhysics Gets or sets whether milling force evaluation is enabled. [JsAce(DocContentHtml = \"Enable milling force evaluation.\")] public bool EnablePhysics { get; set; } Property Value bool EnableWearEffect Gets or sets whether tool wear effects are enabled in simulation. [JsAce] public bool EnableWearEffect { get; set; } Property Value bool FeedPerCycle Gets a new feed per cycle machining motion resolution instance. [JsAce] public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; } Property Value FeedPerCycleMachiningMotionResolution FeedPerTooth Gets a new feed per tooth machining motion resolution instance. [JsAce] public FeedPerToothMachiningMotionResolution FeedPerTooth { get; } Property Value FeedPerToothMachiningMotionResolution Global [JsAce(\"Global[$1key]\")] public Dictionary Global { get; } Property Value Dictionary InitSpindleTemperature_C Gets or sets the initial spindle temperature in degrees Celsius. [JsAce(DocContentHtml = \"Spindle Temperature on initialization.\")] public double InitSpindleTemperature_C { get; set; } Property Value double JsAceCompletionProfileJsonArray Internal used. public static JsonArray JsAceCompletionProfileJsonArray { get; } Property Value JsonArray MachiningMotionResolution Gets or sets the machining motion resolution. [JsAce] public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution MachiningResolution Gets or sets the machining resolution in millimeters. For legacy compatable. [JsAce] [Obsolete] public double MachiningResolution { get; set; } Property Value double MachiningResolution_mm Gets or sets the machining resolution in millimeters. [JsAce] public double MachiningResolution_mm { get; set; } Property Value double MachiningSession public MachiningSession MachiningSession { get; } Property Value MachiningSession MapTask Task tracking the status of mapping operations. public Task MapTask { get; set; } Property Value Task 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. [JsAce] public static int MillingCycleDivisionNum { get; set; } Property Value int 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. [JsAce] [Obsolete] public static int MillingForceCycleDivisionNum { get; set; } Property Value int NcOptOption NcOptOption [JsAce] public NcOptOption NcOptOption { get; set; } Property Value NcOptOption OptEnableDepthCompensation Enables or disables depth compensation during optimization. [JsAce] public bool OptEnableDepthCompensation { get; set; } Property Value bool OptEnableFeedrate Gets or sets whether to enable feed rate optimization in NC optimization. [JsAce] public bool OptEnableFeedrate { get; set; } Property Value bool OptEnableForwardCompensation Enables or disables forward compensation during optimization. [JsAce] public bool OptEnableForwardCompensation { get; set; } Property Value bool OptEnableInterpolation Enables or disables reinterpolation for optimization. [JsAce] public bool OptEnableInterpolation { get; set; } Property Value bool OptEnableSideCompensation Enables or disables side compensation during optimization. [JsAce] public bool OptEnableSideCompensation { get; set; } Property Value bool OptExtendedPostDistance_mm Gets or sets the extended post-distance in millimeters for NC optimization. This is the distance after the current segment that will be considered for optimization. [JsAce] public double OptExtendedPostDistance_mm { get; set; } Property Value double OptExtendedPreDistance_mm Gets or sets the extended pre-distance in millimeters for NC optimization. This is the distance before the current segment that will be considered for optimization. [JsAce] public double OptExtendedPreDistance_mm { get; set; } Property Value double OptFeedrateAssignmentRatio Gets or sets the feedrate assignment ratio for optimization. If the feedrate change exceeds this ratio, the feedrate in the NC line will be updated. [JsAce] public double OptFeedrateAssignmentRatio { get; set; } Property Value double OptMaxAcceleration_mmds2 Maximum acceleration in mm/s² during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxAcceleration_mmds2 { get; set; } Property Value double OptMaxFeedPerTooth_mm Gets or sets the maximum feed per tooth in millimeters for optimization. [JsAce] public double OptMaxFeedPerTooth_mm { get; set; } Property Value double OptMaxFeedrate_mmdmin Maximum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMaxFeedrate_mmdmin { get; set; } Property Value double OptMaxJerk_mmds3 Maximum jerk in mm/s³ during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxJerk_mmds3 { get; set; } Property Value double OptMinFeedPerTooth_mm Gets or sets the minimum feed per tooth in millimeters for optimization. [JsAce] public double OptMinFeedPerTooth_mm { get; set; } Property Value double OptMinFeedrate_mmdmin Minimum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMinFeedrate_mmdmin { get; set; } Property Value double OptPreferedForce_N Preferred force in N for optimization. [JsAce] public double OptPreferedForce_N { get; set; } Property Value double OptRapidFeed_mmdmin Rapid feed rate in mm/min for non-cutting movements during optimization. [JsAce] public double OptRapidFeed_mmdmin { get; set; } Property Value double OptSpindlePowerSafetyFactor Safety factor for spindle power during optimization. [JsAce] public double OptSpindlePowerSafetyFactor { get; set; } Property Value double OptSpindlePowerUtilizationFactor Utilization factor for spindle power during optimization. It is the reciprocal of the spindle power safety factor. [JsAce] public double OptSpindlePowerUtilizationFactor { get; set; } Property Value double OptSpindleTorqueSafetyFactor Safety factor for spindle torque during optimization. [JsAce] public double OptSpindleTorqueSafetyFactor { get; set; } Property Value double OptSpindleTorqueUtilizationFactor Utilization factor for spindle torque during optimization. It is the reciprocal of the spindle torque safety factor. [JsAce] public double OptSpindleTorqueUtilizationFactor { get; set; } Property Value double OptThermalYieldSafetyFactor Safety factor for thermal yield during optimization. [JsAce] public double OptThermalYieldSafetyFactor { get; set; } Property Value double OptThermalYieldUtilizationFactor Utilization factor for thermal yield during optimization. It is the reciprocal of the thermal yield safety factor. [JsAce] public double OptThermalYieldUtilizationFactor { get; set; } Property Value double OptYieldingSafetyFactor Safety factor for yielding during optimization. [JsAce] public double OptYieldingSafetyFactor { get; set; } Property Value double OptYieldingUtilizationFactor Utilization factor for yielding during optimization. It is the reciprocal of the yielding safety factor. [JsAce] public double OptYieldingUtilizationFactor { get; set; } Property Value double RuntimeApi Gets the runtime API instance. public RuntimeApi RuntimeApi { get; } Property Value RuntimeApi ScriptOptions public ScriptOptions ScriptOptions { get; set; } Property Value ScriptOptions SessionMessageHost SessionMessageHost [JsAce] public SessionMessageHost SessionMessageHost { get; } Property Value SessionMessageHost StepCount Gets the total number of milling steps. [JsAce] public int StepCount { get; } Property Value int Methods AddTimeDataByFile(string, string, double, double) Adds time-based data from a file to the time mapping dictionary with specified time bounds in seconds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] [NonAction] public bool AddTimeDataByFile(string key, string relFile, double beginTime, double endTime) Parameters key string Key to identify the data relFile string Relative path to the data file beginTime double Beginning time in seconds endTime double Ending time in seconds Returns bool True if the data was successfully added, false otherwise AddTimeDataByFile(string, string, string, string) Adds time-based data from a file to the time mapping dictionary with specified time bounds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] [HttpPost] public bool AddTimeDataByFile(string key, string relFile, string beginTimeText, string endTimeText) Parameters key string Key to identify the data relFile string Relative path to the data file beginTimeText string Beginning time as text (seconds or TimeSpan format) endTimeText string Ending time as text (seconds or TimeSpan format) Returns bool True if the data was successfully added, false otherwise AppendMessagesToFile(string, params string[]) Appends messages to a file, optionally filtered by tags. [JsAce(\"AppendMessagesToFile(\\\"dstRelFile\\\",flags)\")] [HttpPost] public void AppendMessagesToFile(string dstRelFile, params string[] flags) Parameters dstRelFile string Destination relative file path flags string[] Optional flags to filter messages by tags BeginPreserve() Begin Preserve section in optimzation process. [JsAce(\"BeginPreserve()\")] [HttpPost] public void BeginPreserve() BeginSelection(string, AnchorMode, IStepShift) Begin mark on current line. milling step() has not triggered yet. [NonAction] public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBegin, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the beginning of selection shift IStepShift Step shift to apply BeginSession() BeginSession() [HttpPost] public void BeginSession() ClearTimeMappingData() Clears all time mapping data. [JsAce] [HttpPost] public void ClearTimeMappingData() Diff(double) Performs a difference analysis on the workpiece geometry to detect variations. [JsAce(\"Diff($1detectionRadius_mm)\")] [HttpPost] public void Diff(double detectionRadius_mm) Parameters detectionRadius_mm double Radius for detecting differences EmbedSingleDataPerStepByCsvFile(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [JsAce(Snippet = \"EmbedSingleDataPerStepByCsvFile($1\\\"csvFile\\\")\")] [HttpPost] public void EmbedSingleDataPerStepByCsvFile(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory EndPreserve() End Preserve section in optimzation process. [JsAce(\"EndPreserve()\")] [HttpPost] public void EndPreserve() EndSelection(string, AnchorMode, IStepShift) End mark on current line for selection. [NonAction] public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the end of selection shift IStepShift Step shift to apply EndSession() EndSession() [HttpPost] public void EndSession() ErrorMessage(string) Displays an error message in the message host. [JsAce(\"ErrorMessage($1message)\")] [HttpPost] public void ErrorMessage(string message) Parameters message string The error message to display FixedPace(double, double) Creates a fixed machining motion resolution with specified parameters. [JsAce(\"FixedPace($1linearResolution_mm, $2rotaryResolution_deg)\")] [NonAction] public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters rotaryResolution_deg double Rotary resolution in degrees Returns FixedMachiningMotionResolution A new fixed machining motion resolution instance GetMillingStep(int) Retrieves a milling step at the specified index. [JsAce(Snippet = \"GetMillingStep($1\\\"stepIndex\\\")\")] [NonAction] public MachiningStep GetMillingStep(int stepIndex) Parameters stepIndex int Index of the milling step to retrieve Returns MachiningStep The milling step at the specified index GetStickMachiningToolObservationHeight_mm(int) Gets the observation height in millimeters for the specified stick machining tool. [JsAce(\"GetStickMachiningToolObservationHeight_mm($1toolId)\")] [HttpGet] public double GetStickMachiningToolObservationHeight_mm(int toolId) Parameters toolId int The ID of the tool Returns double The observation height in millimeters GetUniformContourTrayShiftAngle_deg(int) Gets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"GetUniformContourTrayShiftAngle_deg($1toolId)\")] [HttpGet] public double GetUniformContourTrayShiftAngle_deg(int toolId) Parameters toolId int The ID of the tool Returns double The shift angle in degrees LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift) Create a line selection from begin to end mark. [NonAction] public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.LineBegin, IStepShift beginShift = null, AnchorMode endAnchorMode = AnchorMode.LineEnd, IStepShift endShift = null) Parameters key string Identifier key for the selection beginAnchorMode AnchorMode Mode for anchoring the beginning of selection beginShift IStepShift Step shift to apply at beginning endAnchorMode AnchorMode Mode for anchoring the end of selection endShift IStepShift Step shift to apply at end Map(string, FileTimeSection, CycleSamplingMode?) Maps selection data to time section. [HttpPost] public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShotUtil.CycleSamplingMode? cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters key string Identifier key for the selection fileTimeSection FileTimeSection File time section, or null to use the one associated with the key cycleSamplingMode StepTimeShotUtil.CycleSamplingMode? Cycle sampling mode Returns Task Task representing the asynchronous mapping operation Message(string) Displays a message in the message host. [JsAce(\"Message($1message)\")] [HttpPost] public void Message(string message) Parameters message string The message to display OptimizeToFiles(string) Optimizes NC files and saves results using the specified file template. [JsAce(Snippet = \"OptimizeToFiles(\\\"Output/Opt-[NcName]\\\")\", DocContentHtml = \"Optimize To Files by substitude template keywoard \\\"[NcName]\\\"\")] [HttpPost] public void OptimizeToFiles(string relFileTemplate = \"Output/Opt-[NcName]\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Pace() Controls the pace of machining operations during execution. [JsAce(\"Pace();\")] [HttpPost] public void Pace() Pause() Pause Player [JsAce(DocContentHtml = \"Pause Player\")] [HttpPost] public void Pause() PlayAct(IAct, IGetSentence, CancellationToken?) PlayAct(IAct, IGetSentence, CancellationToken?) [JsAce] [NonAction] public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct sourceCommand IGetSentence cancellationToken CancellationToken? PlayClTeleport(double, double, double, double, double, double) PlayClTeleport(double, double, double, double, double, double) [JsAce] [HttpPost] public void PlayClTeleport(double x, double y, double z, double i, double j, double k) Parameters x double y double z double i double j double k double PlayCsvFile(string) Plays an CSV file with the specified relative path. [JsAce(\"PlayCsvFile($1\\\"csvFile\\\");\")] [HttpPost] public void PlayCsvFile(string relFilePath) Parameters relFilePath string Relative path to the CSV file PlayNc(string, string) Plays NC code directly from a string, executing each action and pacing between them. [JsAce(Snippet = \"PlayNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Play NC. second parameter is the file name alternative shows in the log.\")] [HttpPost] public void PlayNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs PlayNcFile(string) Plays an NC file with the specified relative path. [JsAce(\"PlayNcFile($1\\\"ncFile\\\");\")] [HttpPost] public void PlayNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file PlayToolingTeleport(int) PlayToolingTeleport(int) [JsAce] [HttpPost] public void PlayToolingTeleport(int toolId) Parameters toolId int Preserve() Preserve one line NC code in optimzation process. [JsAce(\"Preserve()\")] [HttpPost] public void Preserve() ProgressMessage(string) Displays a progress message in the message host. [JsAce(\"ProgressMessage($1message)\")] [HttpPost] public void ProgressMessage(string message) Parameters message string The progress message to display ReTrainMillingPara(SampleFlag, string, double) Re-trains milling parameters using the specified sample flag. [JsAce(\"ReTrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] [HttpPost] public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 2) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering ReadRuntimeGeom(string) Reads runtime geometry from a file. [JsAce(\"ReadRuntimeGeom($1\\\"srcFile\\\")\")] [HttpPost] public void ReadRuntimeGeom(string relFile) Parameters relFile string Relative path to the input file RegisterStepVariable(string, string, string, string, Func) Registers a step variable for tracking during execution. [JsAce(Snippet = \"RegisterStepVariable(\\\"$1key\\\",\\\"$2name\\\",\\\"$3unit\\\",\\\"$4formatString\\\",\\\"$5variableFunc\\\")\", DocContentHtml = \"

            Register Step Variable.

            \\\"unit\\\" is nullable

            \\\"formatString\\\" is nullable

            \")] [NonAction] public void RegisterStepVariable(string key, string name, string unit, string formatString, Func variableFunc = null) Parameters key string Unique key to identify the variable name string Human-readable name of the variable unit string Physical unit of the variable (can be null) formatString string Format string for displaying the variable (can be null) variableFunc Func Function to compute the variable value from a milling step (can be null) RemoveFlyPiece() Removes any disconnected or “flying” pieces from the workpiece geometry. [JsAce] [HttpPost] public void RemoveFlyPiece() Reset() Reset Player [JsAce(DocContentHtml = \"Reset Player\")] [HttpPost] public void Reset() ResetRuntime() Clears internal buffers. [JsAce] [HttpPost] public void ResetRuntime() RunNc(string, string) Runs NC code directly from a string. [JsAce(Snippet = \"RunNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Run NC. second parameter is the file name alternative shows in the log.\")] [NonAction] public IEnumerable RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs Returns IEnumerable Enumerable sequence of actions to be executed RunNcFile(string) Runs an NC file with the specified relative path. [JsAce(\"RunNcFile($1\\\"ncFile\\\");\")] [NonAction] public IEnumerable RunNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file Returns IEnumerable Enumerable sequence of actions to be executed SetNcResolutionFeedPerCycle() Sets NC resolution to feed per cycle mode. [HttpPost] public void SetNcResolutionFeedPerCycle() SetNcResolutionFeedPerTooth() Sets NC resolution to feed per tooth mode. [HttpPost] public void SetNcResolutionFeedPerTooth() SetNcResolutionFixed(double, double) Sets NC resolution to fixed mode with specified resolution values. [HttpPost] public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters. rotaryResolution_deg double Rotary resolution in degrees. SetStickMachiningToolObservationHeight_mm(int, double) Sets the observation height in millimeters for the specified stick machining tool. [JsAce(\"SetStickMachiningToolObservationHeight_mm($1toolId,$2height_mm)\")] [HttpPost] public void SetStickMachiningToolObservationHeight_mm(int toolId, double height) Parameters toolId int The ID of the tool height double The observation height in millimeters to set SetUniformContourTrayShiftAngle_deg(int, double) Sets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"SetUniformContourTrayShiftAngle_deg($1toolId,$2angle_deg)\")] [HttpPost] public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg) Parameters toolId int The ID of the tool angle_deg double The shift angle in degrees to set ShiftDistance_mm(double) Creates a distance shift object representing the specified distance in millimeters. [NonAction] public DistanceShift ShiftDistance_mm(double distanceShift_mm) Parameters distanceShift_mm double Distance shift in millimeters Returns DistanceShift Distance shift object ShiftTime_s(double) Creates a time shift object representing the specified time in seconds. [NonAction] public TimeShift ShiftTime_s(double seconds) Parameters seconds double Time in seconds Returns TimeShift Time shift object TrainMillingPara(SampleFlag, string, double) Trains milling parameters using the specified sample flag. [JsAce(\"TrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] [HttpPost] public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 2) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering WarningMessage(string) Displays a warning message in the message host. [JsAce(\"WarningMessage($1message)\")] [HttpPost] public void WarningMessage(string message) Parameters message string The warning message to display WriteRuntimeGeom(string) Writes the current runtime geometry to a file. [JsAce(\"WriteRuntimeGeom($1\\\"dstFile\\\")\")] [HttpPost] public void WriteRuntimeGeom(string relFile) Parameters relFile string Relative path to the output file WriteRuntimeGeomToStl(string, double) Writes the current runtime geometry to an STL file. [JsAce(\"WriteRuntimeGeomToStl($1\\\"dstFile\\\",$2resolution_mm)\")] [HttpPost] public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0) Parameters relFile string Relative path to the output STL file resolution_mm double Resolution in millimeters (0 for default) WriteShotFiles(double, string) Writes time-series data to shot files with the specified resolution period (alternative parameter order). [NonAction] public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate) Parameters resolutionPeroid_ms double Resolution period in milliseconds relFileTemplate string Template for output file path, can include [NcName] placeholder WriteShotFiles(string, double) Writes time-series data to shot files with the specified resolution period. [JsAce(Snippet = \"WriteShotFiles(\\\"Output/[NcName].shot.csv\\\",resolutionPeroid_ms)\", DocContentHtml = \"Write time series data by resolutionPeroid_ms\")] [HttpPost] public void WriteShotFiles(string relFileTemplate = \"Output/[NcName].shot.csv\", double resolutionPeroid_ms = 1) Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder resolutionPeroid_ms double Resolution period in milliseconds WriteStepFiles(string) Writes step-series data to files with the specified file template. [JsAce(Snippet = \"WriteStepFiles(\\\"Output/[NcName].step.csv\\\")\", DocContentHtml = \"Write step series data.\")] [HttpPost] public void WriteStepFiles(string relFileTemplate = \"Output/[NcName].step.csv\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder" + "summary": "Class RuntimeController Namespace Hi.MachiningProcs 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. [ApiController] [Route(\"api/[controller]/[action]\")] public class RuntimeController : ControllerBase Inheritance object ControllerBase RuntimeController Inherited Members ControllerBase.StatusCode(int) ControllerBase.StatusCode(int, object) ControllerBase.Content(string) ControllerBase.Content(string, string) ControllerBase.Content(string, string, Encoding) ControllerBase.Content(string, MediaTypeHeaderValue) ControllerBase.NoContent() ControllerBase.Ok() ControllerBase.Ok(object) ControllerBase.Redirect(string) ControllerBase.RedirectPermanent(string) ControllerBase.RedirectPreserveMethod(string) ControllerBase.RedirectPermanentPreserveMethod(string) ControllerBase.LocalRedirect(string) ControllerBase.LocalRedirectPermanent(string) ControllerBase.LocalRedirectPreserveMethod(string) ControllerBase.LocalRedirectPermanentPreserveMethod(string) ControllerBase.RedirectToAction() ControllerBase.RedirectToAction(string) ControllerBase.RedirectToAction(string, object) ControllerBase.RedirectToAction(string, string) ControllerBase.RedirectToAction(string, string, object) ControllerBase.RedirectToAction(string, string, string) ControllerBase.RedirectToAction(string, string, object, string) ControllerBase.RedirectToActionPreserveMethod(string, string, object, string) ControllerBase.RedirectToActionPermanent(string) ControllerBase.RedirectToActionPermanent(string, object) ControllerBase.RedirectToActionPermanent(string, string) ControllerBase.RedirectToActionPermanent(string, string, string) ControllerBase.RedirectToActionPermanent(string, string, object) ControllerBase.RedirectToActionPermanent(string, string, object, string) ControllerBase.RedirectToActionPermanentPreserveMethod(string, string, object, string) ControllerBase.RedirectToRoute(string) ControllerBase.RedirectToRoute(object) ControllerBase.RedirectToRoute(string, object) ControllerBase.RedirectToRoute(string, string) ControllerBase.RedirectToRoute(string, object, string) ControllerBase.RedirectToRoutePreserveMethod(string, object, string) ControllerBase.RedirectToRoutePermanent(string) ControllerBase.RedirectToRoutePermanent(object) ControllerBase.RedirectToRoutePermanent(string, object) ControllerBase.RedirectToRoutePermanent(string, string) ControllerBase.RedirectToRoutePermanent(string, object, string) ControllerBase.RedirectToRoutePermanentPreserveMethod(string, object, string) ControllerBase.RedirectToPage(string) ControllerBase.RedirectToPage(string, object) ControllerBase.RedirectToPage(string, string) ControllerBase.RedirectToPage(string, string, object) ControllerBase.RedirectToPage(string, string, string) ControllerBase.RedirectToPage(string, string, object, string) ControllerBase.RedirectToPagePermanent(string) ControllerBase.RedirectToPagePermanent(string, object) ControllerBase.RedirectToPagePermanent(string, string) ControllerBase.RedirectToPagePermanent(string, string, string) ControllerBase.RedirectToPagePermanent(string, string, object, string) ControllerBase.RedirectToPagePreserveMethod(string, string, object, string) ControllerBase.RedirectToPagePermanentPreserveMethod(string, string, object, string) ControllerBase.File(byte[], string) ControllerBase.File(byte[], string, bool) ControllerBase.File(byte[], string, string) ControllerBase.File(byte[], string, string, bool) ControllerBase.File(byte[], string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(byte[], string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(byte[], string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(byte[], string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(Stream, string) ControllerBase.File(Stream, string, bool) ControllerBase.File(Stream, string, string) ControllerBase.File(Stream, string, string, bool) ControllerBase.File(Stream, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(Stream, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(Stream, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(Stream, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(string, string) ControllerBase.File(string, string, bool) ControllerBase.File(string, string, string) ControllerBase.File(string, string, string, bool) ControllerBase.File(string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(string, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(string, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.PhysicalFile(string, string) ControllerBase.PhysicalFile(string, string, bool) ControllerBase.PhysicalFile(string, string, string) ControllerBase.PhysicalFile(string, string, string, bool) ControllerBase.PhysicalFile(string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.PhysicalFile(string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.PhysicalFile(string, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.PhysicalFile(string, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.Unauthorized() ControllerBase.Unauthorized(object) ControllerBase.NotFound() ControllerBase.NotFound(object) ControllerBase.BadRequest() ControllerBase.BadRequest(object) ControllerBase.BadRequest(ModelStateDictionary) ControllerBase.UnprocessableEntity() ControllerBase.UnprocessableEntity(object) ControllerBase.UnprocessableEntity(ModelStateDictionary) ControllerBase.Conflict() ControllerBase.Conflict(object) ControllerBase.Conflict(ModelStateDictionary) ControllerBase.Problem(string, string, int?, string, string) ControllerBase.Problem(string, string, int?, string, string, IDictionary) ControllerBase.ValidationProblem(ValidationProblemDetails) ControllerBase.ValidationProblem(ModelStateDictionary) ControllerBase.ValidationProblem() ControllerBase.ValidationProblem(string, string, int?, string, string, ModelStateDictionary) ControllerBase.ValidationProblem(string, string, int?, string, string, ModelStateDictionary, IDictionary) ControllerBase.Created() ControllerBase.Created(string, object) ControllerBase.Created(Uri, object) ControllerBase.CreatedAtAction(string, object) ControllerBase.CreatedAtAction(string, object, object) ControllerBase.CreatedAtAction(string, string, object, object) ControllerBase.CreatedAtRoute(string, object) ControllerBase.CreatedAtRoute(object, object) ControllerBase.CreatedAtRoute(string, object, object) ControllerBase.Accepted() ControllerBase.Accepted(object) ControllerBase.Accepted(Uri) ControllerBase.Accepted(string) ControllerBase.Accepted(string, object) ControllerBase.Accepted(Uri, object) ControllerBase.AcceptedAtAction(string) ControllerBase.AcceptedAtAction(string, string) ControllerBase.AcceptedAtAction(string, object) ControllerBase.AcceptedAtAction(string, string, object) ControllerBase.AcceptedAtAction(string, object, object) ControllerBase.AcceptedAtAction(string, string, object, object) ControllerBase.AcceptedAtRoute(object) ControllerBase.AcceptedAtRoute(string) ControllerBase.AcceptedAtRoute(string, object) ControllerBase.AcceptedAtRoute(object, object) ControllerBase.AcceptedAtRoute(string, object, object) ControllerBase.Challenge() ControllerBase.Challenge(params string[]) ControllerBase.Challenge(AuthenticationProperties) ControllerBase.Challenge(AuthenticationProperties, params string[]) ControllerBase.Forbid() ControllerBase.Forbid(params string[]) ControllerBase.Forbid(AuthenticationProperties) ControllerBase.Forbid(AuthenticationProperties, params string[]) ControllerBase.SignIn(ClaimsPrincipal) ControllerBase.SignIn(ClaimsPrincipal, string) ControllerBase.SignIn(ClaimsPrincipal, AuthenticationProperties) ControllerBase.SignIn(ClaimsPrincipal, AuthenticationProperties, string) ControllerBase.SignOut() ControllerBase.SignOut(AuthenticationProperties) ControllerBase.SignOut(params string[]) ControllerBase.SignOut(AuthenticationProperties, params string[]) ControllerBase.TryUpdateModelAsync(TModel) ControllerBase.TryUpdateModelAsync(TModel, string) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider) ControllerBase.TryUpdateModelAsync(TModel, string, params Expression>[]) ControllerBase.TryUpdateModelAsync(TModel, string, Func) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider, params Expression>[]) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider, Func) ControllerBase.TryUpdateModelAsync(object, Type, string) ControllerBase.TryUpdateModelAsync(object, Type, string, IValueProvider, Func) ControllerBase.TryValidateModel(object) ControllerBase.TryValidateModel(object, string) ControllerBase.HttpContext ControllerBase.Request ControllerBase.Response ControllerBase.RouteData ControllerBase.ModelState ControllerBase.ControllerContext ControllerBase.MetadataProvider ControllerBase.ModelBinderFactory ControllerBase.Url ControllerBase.ObjectValidator ControllerBase.ProblemDetailsFactory ControllerBase.User ControllerBase.Empty object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RuntimeController(LocalProjectService) Initializes a new instance. public RuntimeController(LocalProjectService projectService) Parameters projectService LocalProjectService Properties DefaultParaTemplateDimension DefaultParaTemplateDimension [JsAce] public int DefaultParaTemplateDimension { get; set; } Property Value int DiffVisualRadius_mm Gets or sets the visual radius in millimeters for difference visualization. Controls the radius used for highlighting differences between workpiece states. [JsAce] public double DiffVisualRadius_mm { get; set; } Property Value double DispCacheMb Gets or sets the display cache size in megabytes. [Obsolete] public long DispCacheMb { get; set; } Property Value long DispCache_Mb Gets or sets the display cache size in megabytes. [JsAce] public long DispCache_Mb { get; set; } Property Value long EnableAutoMapOnSelectionEnd Gets or sets whether to automatically map selections when they end. [JsAce] public bool EnableAutoMapOnSelectionEnd { get; set; } Property Value bool EnableCollisionDetection Gets or sets whether collision detection is enabled. [JsAce(DocContentHtml = \"Enable Collision Detection.\")] public bool EnableCollisionDetection { get; set; } Property Value bool EnablePauseOnFailure EnablePauseOnFailure [JsAce(DocContentHtml = \"Enable Pause On Failure.\")] public bool EnablePauseOnFailure { get; set; } Property Value bool EnablePhysics Gets or sets whether milling force evaluation is enabled. [JsAce(DocContentHtml = \"Enable milling force evaluation.\")] public bool EnablePhysics { get; set; } Property Value bool EnableWearEffect Gets or sets whether tool wear effects are enabled in simulation. [JsAce] public bool EnableWearEffect { get; set; } Property Value bool FeedPerCycle Gets a new feed per cycle machining motion resolution instance. [JsAce] public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; } Property Value FeedPerCycleMachiningMotionResolution FeedPerTooth Gets a new feed per tooth machining motion resolution instance. [JsAce] public FeedPerToothMachiningMotionResolution FeedPerTooth { get; } Property Value FeedPerToothMachiningMotionResolution Global [JsAce(\"Global[$1key]\")] public Dictionary Global { get; } Property Value Dictionary InitSpindleTemperature_C Gets or sets the initial spindle temperature in degrees Celsius. [JsAce(DocContentHtml = \"Spindle Temperature on initialization.\")] public double InitSpindleTemperature_C { get; set; } Property Value double JsAceCompletionProfileJsonArray Internal used. public static JsonArray JsAceCompletionProfileJsonArray { get; } Property Value JsonArray MachiningMotionResolution Gets or sets the machining motion resolution. [JsAce] public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution MachiningResolution Gets or sets the machining resolution in millimeters. For legacy compatable. [JsAce] [Obsolete] public double MachiningResolution { get; set; } Property Value double MachiningResolution_mm Gets or sets the machining resolution in millimeters. [JsAce] public double MachiningResolution_mm { get; set; } Property Value double MachiningSession public MachiningSession MachiningSession { get; } Property Value MachiningSession MapTask Task tracking the status of mapping operations. public Task MapTask { get; set; } Property Value Task 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. [JsAce] public static int MillingCycleDivisionNum { get; set; } Property Value int 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. [JsAce] [Obsolete] public static int MillingForceCycleDivisionNum { get; set; } Property Value int NcOptOption NcOptOption [JsAce] public NcOptOption NcOptOption { get; set; } Property Value NcOptOption OptEnableDepthCompensation Enables or disables depth compensation during optimization. [JsAce] public bool OptEnableDepthCompensation { get; set; } Property Value bool OptEnableFeedrate Gets or sets whether to enable feed rate optimization in NC optimization. [JsAce] public bool OptEnableFeedrate { get; set; } Property Value bool OptEnableForwardCompensation Enables or disables forward compensation during optimization. [JsAce] public bool OptEnableForwardCompensation { get; set; } Property Value bool OptEnableInterpolation Enables or disables reinterpolation for optimization. [JsAce] public bool OptEnableInterpolation { get; set; } Property Value bool OptEnableSideCompensation Enables or disables side compensation during optimization. [JsAce] public bool OptEnableSideCompensation { get; set; } Property Value bool OptExtendedPostDistance_mm Gets or sets the extended post-distance in millimeters for NC optimization. This is the distance after the current segment that will be considered for optimization. [JsAce] public double OptExtendedPostDistance_mm { get; set; } Property Value double OptExtendedPreDistance_mm Gets or sets the extended pre-distance in millimeters for NC optimization. This is the distance before the current segment that will be considered for optimization. [JsAce] public double OptExtendedPreDistance_mm { get; set; } Property Value double OptFeedrateAssignmentRatio Gets or sets the feedrate assignment ratio for optimization. If the feedrate change exceeds this ratio, the feedrate in the NC line will be updated. [JsAce] public double OptFeedrateAssignmentRatio { get; set; } Property Value double OptMaxAcceleration_mmds2 Maximum acceleration in mm/s² during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxAcceleration_mmds2 { get; set; } Property Value double OptMaxFeedPerTooth_mm Gets or sets the maximum feed per tooth in millimeters for optimization. [JsAce] public double OptMaxFeedPerTooth_mm { get; set; } Property Value double OptMaxFeedrate_mmdmin Maximum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMaxFeedrate_mmdmin { get; set; } Property Value double OptMaxJerk_mmds3 Maximum jerk in mm/s³ during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxJerk_mmds3 { get; set; } Property Value double OptMinFeedPerTooth_mm Gets or sets the minimum feed per tooth in millimeters for optimization. [JsAce] public double OptMinFeedPerTooth_mm { get; set; } Property Value double OptMinFeedrate_mmdmin Minimum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMinFeedrate_mmdmin { get; set; } Property Value double OptPreferedForce_N Preferred force in N for optimization. [JsAce] public double OptPreferedForce_N { get; set; } Property Value double OptRapidFeed_mmdmin Rapid feed rate in mm/min for non-cutting movements during optimization. [JsAce] public double OptRapidFeed_mmdmin { get; set; } Property Value double OptSpindlePowerSafetyFactor Safety factor for spindle power during optimization. [JsAce] public double OptSpindlePowerSafetyFactor { get; set; } Property Value double OptSpindlePowerUtilizationFactor Utilization factor for spindle power during optimization. It is the reciprocal of the spindle power safety factor. [JsAce] public double OptSpindlePowerUtilizationFactor { get; set; } Property Value double OptSpindleTorqueSafetyFactor Safety factor for spindle torque during optimization. [JsAce] public double OptSpindleTorqueSafetyFactor { get; set; } Property Value double OptSpindleTorqueUtilizationFactor Utilization factor for spindle torque during optimization. It is the reciprocal of the spindle torque safety factor. [JsAce] public double OptSpindleTorqueUtilizationFactor { get; set; } Property Value double OptThermalYieldSafetyFactor Safety factor for thermal yield during optimization. [JsAce] public double OptThermalYieldSafetyFactor { get; set; } Property Value double OptThermalYieldUtilizationFactor Utilization factor for thermal yield during optimization. It is the reciprocal of the thermal yield safety factor. [JsAce] public double OptThermalYieldUtilizationFactor { get; set; } Property Value double OptYieldingSafetyFactor Safety factor for yielding during optimization. [JsAce] public double OptYieldingSafetyFactor { get; set; } Property Value double OptYieldingUtilizationFactor Utilization factor for yielding during optimization. It is the reciprocal of the yielding safety factor. [JsAce] public double OptYieldingUtilizationFactor { get; set; } Property Value double RuntimeApi Gets the runtime API instance. public RuntimeApi RuntimeApi { get; } Property Value RuntimeApi ScriptOptions public ScriptOptions ScriptOptions { get; set; } Property Value ScriptOptions SessionMessageHost SessionMessageHost [JsAce] public SessionProgress SessionMessageHost { get; } Property Value SessionProgress StepCount Gets the total number of milling steps. [JsAce] public int StepCount { get; } Property Value int Methods AddTimeDataByFile(string, string, double, double) Adds time-based data from a file to the time mapping dictionary with specified time bounds in seconds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] [NonAction] public bool AddTimeDataByFile(string key, string relFile, double beginTime, double endTime) Parameters key string Key to identify the data relFile string Relative path to the data file beginTime double Beginning time in seconds endTime double Ending time in seconds Returns bool True if the data was successfully added, false otherwise AddTimeDataByFile(string, string, string, string) Adds time-based data from a file to the time mapping dictionary with specified time bounds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] [HttpPost] public bool AddTimeDataByFile(string key, string relFile, string beginTimeText, string endTimeText) Parameters key string Key to identify the data relFile string Relative path to the data file beginTimeText string Beginning time as text (seconds or TimeSpan format) endTimeText string Ending time as text (seconds or TimeSpan format) Returns bool True if the data was successfully added, false otherwise AppendMessagesToFile(string, params string[]) Appends messages to a file, optionally filtered by tags. [JsAce(\"AppendMessagesToFile(\\\"dstRelFile\\\",flags)\")] [HttpPost] public void AppendMessagesToFile(string dstRelFile, params string[] flags) Parameters dstRelFile string Destination relative file path flags string[] Optional flags to filter messages by tags BeginPreserve() Begin Preserve section in optimzation process. [JsAce(\"BeginPreserve()\")] [HttpPost] public void BeginPreserve() BeginSelection(string, AnchorMode, IStepShift) Begin mark on current line. milling step() has not triggered yet. [NonAction] public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBegin, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the beginning of selection shift IStepShift Step shift to apply BeginSession() BeginSession() [HttpPost] public void BeginSession() ClearTimeMappingData() Clears all time mapping data. [JsAce] [HttpPost] public void ClearTimeMappingData() Diff(double) Performs a difference analysis on the workpiece geometry to detect variations. [JsAce(\"Diff($1detectionRadius_mm)\")] [HttpPost] public void Diff(double detectionRadius_mm) Parameters detectionRadius_mm double Radius for detecting differences EmbedSingleDataPerStepByCsvFile(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [JsAce(Snippet = \"EmbedSingleDataPerStepByCsvFile($1\\\"csvFile\\\")\")] [HttpPost] public void EmbedSingleDataPerStepByCsvFile(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory EndPreserve() End Preserve section in optimzation process. [JsAce(\"EndPreserve()\")] [HttpPost] public void EndPreserve() EndSelection(string, AnchorMode, IStepShift) End mark on current line for selection. [NonAction] public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the end of selection shift IStepShift Step shift to apply EndSession() EndSession() [HttpPost] public void EndSession() ErrorMessage(string) Displays an error message in the message host. [JsAce(\"ErrorMessage($1message)\")] [HttpPost] public void ErrorMessage(string message) Parameters message string The error message to display FixedPace(double, double) Creates a fixed machining motion resolution with specified parameters. [JsAce(\"FixedPace($1linearResolution_mm, $2rotaryResolution_deg)\")] [NonAction] public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters rotaryResolution_deg double Rotary resolution in degrees Returns FixedMachiningMotionResolution A new fixed machining motion resolution instance GetMillingStep(int) Retrieves a milling step at the specified index. [JsAce(Snippet = \"GetMillingStep($1\\\"stepIndex\\\")\")] [NonAction] public MachiningStep GetMillingStep(int stepIndex) Parameters stepIndex int Index of the milling step to retrieve Returns MachiningStep The milling step at the specified index GetStickMachiningToolObservationHeight_mm(int) Gets the observation height in millimeters for the specified stick machining tool. [JsAce(\"GetStickMachiningToolObservationHeight_mm($1toolId)\")] [HttpGet] public double GetStickMachiningToolObservationHeight_mm(int toolId) Parameters toolId int The ID of the tool Returns double The observation height in millimeters GetUniformContourTrayShiftAngle_deg(int) Gets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"GetUniformContourTrayShiftAngle_deg($1toolId)\")] [HttpGet] public double GetUniformContourTrayShiftAngle_deg(int toolId) Parameters toolId int The ID of the tool Returns double The shift angle in degrees LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift) Create a line selection from begin to end mark. [NonAction] public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.LineBegin, IStepShift beginShift = null, AnchorMode endAnchorMode = AnchorMode.LineEnd, IStepShift endShift = null) Parameters key string Identifier key for the selection beginAnchorMode AnchorMode Mode for anchoring the beginning of selection beginShift IStepShift Step shift to apply at beginning endAnchorMode AnchorMode Mode for anchoring the end of selection endShift IStepShift Step shift to apply at end Map(string, FileTimeSection, CycleSamplingMode?) Maps selection data to time section. [HttpPost] public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShotUtil.CycleSamplingMode? cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters key string Identifier key for the selection fileTimeSection FileTimeSection File time section, or null to use the one associated with the key cycleSamplingMode StepTimeShotUtil.CycleSamplingMode? Cycle sampling mode Returns Task Task representing the asynchronous mapping operation Message(string) Displays a message in the message host. [JsAce(\"Message($1message)\")] [HttpPost] public void Message(string message) Parameters message string The message to display OptimizeToFiles(string) Optimizes NC files and saves results using the specified file template. [JsAce(Snippet = \"OptimizeToFiles(\\\"Output/Opt-[NcName]\\\")\", DocContentHtml = \"Optimize To Files by substitude template keywoard \\\"[NcName]\\\"\")] [HttpPost] public void OptimizeToFiles(string relFileTemplate = \"Output/Opt-[NcName]\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Pace() Controls the pace of machining operations during execution. [JsAce(\"Pace();\")] [HttpPost] public void Pace() Pause() Pause Player [JsAce(DocContentHtml = \"Pause Player\")] [HttpPost] public void Pause() PlayAct(IAct, IGetSentence, CancellationToken?) PlayAct(IAct, IGetSentence, CancellationToken?) [JsAce] [NonAction] public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct sourceCommand IGetSentence cancellationToken CancellationToken? PlayClTeleport(double, double, double, double, double, double) PlayClTeleport(double, double, double, double, double, double) [JsAce] [HttpPost] public void PlayClTeleport(double x, double y, double z, double i, double j, double k) Parameters x double y double z double i double j double k double PlayCsvFile(string) Plays an CSV file with the specified relative path. [JsAce(\"PlayCsvFile($1\\\"csvFile\\\");\")] [HttpPost] public void PlayCsvFile(string relFilePath) Parameters relFilePath string Relative path to the CSV file PlayNc(string, string) Plays NC code directly from a string, executing each action and pacing between them. [JsAce(Snippet = \"PlayNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Play NC. second parameter is the file name alternative shows in the log.\")] [HttpPost] public void PlayNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs PlayNcFile(string) Plays an NC file with the specified relative path. [JsAce(\"PlayNcFile($1\\\"ncFile\\\");\")] [HttpPost] public void PlayNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file PlayToolingTeleport(int) PlayToolingTeleport(int) [JsAce] [HttpPost] public void PlayToolingTeleport(int toolId) Parameters toolId int Preserve() Preserve one line NC code in optimzation process. [JsAce(\"Preserve()\")] [HttpPost] public void Preserve() ProgressMessage(string) Displays a progress message in the message host. [JsAce(\"ProgressMessage($1message)\")] [HttpPost] public void ProgressMessage(string message) Parameters message string The progress message to display ReTrainMillingPara(SampleFlag, string, double) Re-trains milling parameters using the specified sample flag. [JsAce(\"ReTrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] [HttpPost] public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 2) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering ReadRuntimeGeom(string) Reads runtime geometry from a file. [JsAce(\"ReadRuntimeGeom($1\\\"srcFile\\\")\")] [HttpPost] public void ReadRuntimeGeom(string relFile) Parameters relFile string Relative path to the input file RegisterStepVariable(string, string, string, string, Func) Registers a step variable for tracking during execution. [JsAce(Snippet = \"RegisterStepVariable(\\\"$1key\\\",\\\"$2name\\\",\\\"$3unit\\\",\\\"$4formatString\\\",\\\"$5variableFunc\\\")\", DocContentHtml = \"

            Register Step Variable.

            \\\"unit\\\" is nullable

            \\\"formatString\\\" is nullable

            \")] [NonAction] public void RegisterStepVariable(string key, string name, string unit, string formatString, Func variableFunc = null) Parameters key string Unique key to identify the variable name string Human-readable name of the variable unit string Physical unit of the variable (can be null) formatString string Format string for displaying the variable (can be null) variableFunc Func Function to compute the variable value from a milling step (can be null) RemoveFlyPiece() Removes any disconnected or “flying” pieces from the workpiece geometry. [JsAce] [HttpPost] public void RemoveFlyPiece() Reset() Reset Player [JsAce(DocContentHtml = \"Reset Player\")] [HttpPost] public void Reset() ResetRuntime() Clears internal buffers. [JsAce] [HttpPost] public void ResetRuntime() RunNc(string, string) Runs NC code directly from a string. [JsAce(Snippet = \"RunNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Run NC. second parameter is the file name alternative shows in the log.\")] [NonAction] public IEnumerable RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs Returns IEnumerable Enumerable sequence of actions to be executed RunNcFile(string) Runs an NC file with the specified relative path. [JsAce(\"RunNcFile($1\\\"ncFile\\\");\")] [NonAction] public IEnumerable RunNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file Returns IEnumerable Enumerable sequence of actions to be executed SetNcResolutionFeedPerCycle() Sets NC resolution to feed per cycle mode. [HttpPost] public void SetNcResolutionFeedPerCycle() SetNcResolutionFeedPerTooth() Sets NC resolution to feed per tooth mode. [HttpPost] public void SetNcResolutionFeedPerTooth() SetNcResolutionFixed(double, double) Sets NC resolution to fixed mode with specified resolution values. [HttpPost] public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters. rotaryResolution_deg double Rotary resolution in degrees. SetStickMachiningToolObservationHeight_mm(int, double) Sets the observation height in millimeters for the specified stick machining tool. [JsAce(\"SetStickMachiningToolObservationHeight_mm($1toolId,$2height_mm)\")] [HttpPost] public void SetStickMachiningToolObservationHeight_mm(int toolId, double height) Parameters toolId int The ID of the tool height double The observation height in millimeters to set SetUniformContourTrayShiftAngle_deg(int, double) Sets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"SetUniformContourTrayShiftAngle_deg($1toolId,$2angle_deg)\")] [HttpPost] public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg) Parameters toolId int The ID of the tool angle_deg double The shift angle in degrees to set ShiftDistance_mm(double) Creates a distance shift object representing the specified distance in millimeters. [NonAction] public DistanceShift ShiftDistance_mm(double distanceShift_mm) Parameters distanceShift_mm double Distance shift in millimeters Returns DistanceShift Distance shift object ShiftTime_s(double) Creates a time shift object representing the specified time in seconds. [NonAction] public TimeShift ShiftTime_s(double seconds) Parameters seconds double Time in seconds Returns TimeShift Time shift object TrainMillingPara(SampleFlag, string, double) Trains milling parameters using the specified sample flag. [JsAce(\"TrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] [HttpPost] public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 2) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering WarningMessage(string) Displays a warning message in the message host. [JsAce(\"WarningMessage($1message)\")] [HttpPost] public void WarningMessage(string message) Parameters message string The warning message to display WriteRuntimeGeom(string) Writes the current runtime geometry to a file. [JsAce(\"WriteRuntimeGeom($1\\\"dstFile\\\")\")] [HttpPost] public void WriteRuntimeGeom(string relFile) Parameters relFile string Relative path to the output file WriteRuntimeGeomToStl(string, double) Writes the current runtime geometry to an STL file. [JsAce(\"WriteRuntimeGeomToStl($1\\\"dstFile\\\",$2resolution_mm)\")] [HttpPost] public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0) Parameters relFile string Relative path to the output STL file resolution_mm double Resolution in millimeters (0 for default) WriteShotFiles(double, string) Writes time-series data to shot files with the specified resolution period (alternative parameter order). [NonAction] public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate) Parameters resolutionPeroid_ms double Resolution period in milliseconds relFileTemplate string Template for output file path, can include [NcName] placeholder WriteShotFiles(string, double) Writes time-series data to shot files with the specified resolution period. [JsAce(Snippet = \"WriteShotFiles(\\\"Output/[NcName].shot.csv\\\",resolutionPeroid_ms)\", DocContentHtml = \"Write time series data by resolutionPeroid_ms\")] [HttpPost] public void WriteShotFiles(string relFileTemplate = \"Output/[NcName].shot.csv\", double resolutionPeroid_ms = 1) Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder resolutionPeroid_ms double Resolution period in milliseconds WriteStepFiles(string) Writes step-series data to files with the specified file template. [JsAce(Snippet = \"WriteStepFiles(\\\"Output/[NcName].step.csv\\\")\", DocContentHtml = \"Write step series data.\")] [HttpPost] public void WriteStepFiles(string relFileTemplate = \"Output/[NcName].step.csv\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder" }, "api/Hi.MachiningProcs.SessionMessage.html": { "href": "api/Hi.MachiningProcs.SessionMessage.html", "title": "Class SessionMessage | HiAPI-C# 2025", "summary": "Class SessionMessage Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a message in the machining process that can contain various types of data such as source commands, machining steps, exceptions, and tagged messages. public class SessionMessage Inheritance object SessionMessage Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SessionMessage(int, object) Initializes a new instance of the SessionMessage class. public SessionMessage(int index, object src) Parameters index int The index of the message. src object The source data. Properties ClStripPos Gets or sets the cutter location strip position. gets null if the Data is not ClStripPos. public ClStripPos ClStripPos { get; set; } Property Value ClStripPos Data Gets or sets the data contained in the message. public object Data { get; set; } Property Value object DirectInstantSourceCommand Gets or sets the direct source command from the data. gets null if the Data is not IIndexedFileLine. public IIndexedFileLine DirectInstantSourceCommand { get; set; } Property Value IIndexedFileLine Exception Gets or sets the exception. gets null if the Data is not Exception. public Exception Exception { get; set; } Property Value Exception Index Gets or sets the index of the message. The UI name is 'Serial.'. [Present(\"Message Index\", \"M.I.\", PhysicsUnit.None, \"G\")] public int Index { get; set; } Property Value int InstantSourceCommand Gets the source command, either directly or from the associated milling step. gets null if both DirectInstantSourceCommand and the SourceCommand from ClStripPos's State are null. public IIndexedFileLine InstantSourceCommand { get; } Property Value IIndexedFileLine MachiningStep Gets the milling step from the cutter location strip position. gets null if ClStripPos is null or its State is not a MachiningStep. public MachiningStep MachiningStep { get; } Property Value MachiningStep Message Gets the message text from either the multi-tag message or exception. gets null if both MultiTagMessage and Exception are null, or if MultiTagMessage.Message is null. [Present(\"Message\", \"Msg\", PhysicsUnit.None, \"G\")] public string Message { get; } Property Value string MessageOrNcText Gets the message text or NC code text. gets null if all sources (InstantSourceCommand, MultiTagMessage, Exception, and Data) are null or cannot provide text. [Present(\"Message/NC\", \"Msg/NC\", PhysicsUnit.None, \"G\")] public string MessageOrNcText { get; } Property Value string MessageRoleText Gets the message type text for UI display. [Present(\"Role\", \"Role\", PhysicsUnit.None, \"G\")] public string MessageRoleText { get; } Property Value string MultiTagMessage Gets or sets the multi-tag message. gets null if the Data is not MultiTagMessage. public MultiTagMessage MultiTagMessage { get; set; } Property Value MultiTagMessage Tags Gets the tags associated with the message. public HashSet Tags { get; } Property Value HashSet Remarks Different from MultiTagMessage.Tags, the Tags here includes the infomation of the Data. Methods ToString() Returns a string representation of the message data. public override string ToString() Returns string A string representation of the message data." }, - "api/Hi.MachiningProcs.SessionMessageHost.FilterFlag.html": { - "href": "api/Hi.MachiningProcs.SessionMessageHost.FilterFlag.html", - "title": "Enum SessionMessageHost.FilterFlag | HiAPI-C# 2025", - "summary": "Enum SessionMessageHost.FilterFlag Namespace Hi.MachiningProcs Assembly HiMech.dll Filtering flags for querying messages. [Flags] public enum SessionMessageHost.FilterFlag Extension Methods InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MaskUtil.GetMaskedValue(T, T, bool) MaskUtil.SetMask(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Error = 8 Include error, warning, or exception messages. NC = 2 Include NC text messages. Progress = 4 Include progress messages. Step = 1 Include machining step messages." - }, - "api/Hi.MachiningProcs.SessionMessageHost.html": { - "href": "api/Hi.MachiningProcs.SessionMessageHost.html", - "title": "Class SessionMessageHost | HiAPI-C# 2025", - "summary": "Class SessionMessageHost Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a host for managing milling messages with thread-safe operations and stable index tracking. public class SessionMessageHost : IProgress Inheritance object SessionMessageHost Implements IProgress Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MultiTagMessageUtil.ReportError(IProgress, string, params string[]) MultiTagMessageUtil.ReportException(IProgress, Exception, params string[]) MultiTagMessageUtil.ReportInfo(IProgress, string, params string[]) MultiTagMessageUtil.ReportMessage(IProgress, string, params string[]) MultiTagMessageUtil.ReportProgress(IProgress, string, params string[]) MultiTagMessageUtil.ReportSuccess(IProgress, string, params string[]) MultiTagMessageUtil.ReportWarning(IProgress, string, params string[]) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties MessageCollection Gets or sets the thread-safe collection of milling messages. The getter is for readonly. Do not edit the collection directly. public SynList MessageCollection { get; } Property Value SynList StableIndex Gets or sets the stable index. No other data will be inserted before this index. The term stable means it is thread safe to access range from 0 to StableIndex(exclusive). public int StableIndex { get; } Property Value int Methods Add(object) Adds a new entry to the message collection. public object Add(object entry) Parameters entry object The entry to add. Returns object The added milling message. Clear() Clears all messages from the collection. public void Clear() GetFliteredList(FilterFlag, string) Gets a filtered list of session messages. public List GetFliteredList(SessionMessageHost.FilterFlag flags, string filterText) Parameters flags SessionMessageHost.FilterFlag Filtering flags that determine which message categories are included. filterText string Optional text to filter by; case-insensitive contains match. Returns List A list of messages that match the specified filters. GetSourceCommand(SessionMessage) Retrieves the source command associated with the specified machining message. public IIndexedFileLine GetSourceCommand(SessionMessage machiningMessage) Parameters machiningMessage SessionMessage The machining message to find the source command for. Returns IIndexedFileLine The source command that generated the message, or null if not found. Report(object) Reports a progress update. public void Report(object entry) Parameters entry object SetStableIndexToEnd() Sets the StableIndex to the end of the collection. public void SetStableIndexToEnd() Events CollectionCleared Event raised when the collection is cleared. public event Action CollectionCleared Event Type Action CollectionItemAdded Event raised when a new milling message is added to the collection. public event Action CollectionItemAdded Event Type Action CollectionItemChanged Event raised when a collection item is changed. public event Action CollectionItemChanged Event Type Action" - }, "api/Hi.MachiningProcs.SessionMessagePack.html": { "href": "api/Hi.MachiningProcs.SessionMessagePack.html", "title": "Class SessionMessagePack | HiAPI-C# 2025", - "summary": "Class SessionMessagePack Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a package containing a machining message and its associated context. public class SessionMessagePack Inheritance object SessionMessagePack Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SessionMessagePack(SessionMessageHost, SessionMessage) Initializes a new instance of the SessionMessagePack class. public SessionMessagePack(SessionMessageHost host, SessionMessage msg) Parameters host SessionMessageHost The session message host. msg SessionMessage The machining message. Properties Host Gets the host that contains this message pack. public SessionMessageHost Host { get; } Property Value SessionMessageHost Index Gets the index of the message in the collection. public int Index { get; } Property Value int Message Gets the message text. public string Message { get; } Property Value string SessionMessage Gets the machining message contained in this pack. public SessionMessage SessionMessage { get; } Property Value SessionMessage SourceCommand Gets the source command that generated this message. public IIndexedFileLine SourceCommand { get; } Property Value IIndexedFileLine Tags Gets the tags associated with the message. public HashSet Tags { get; } Property Value HashSet" + "summary": "Class SessionMessagePack Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a package containing a machining message and its associated context. public class SessionMessagePack Inheritance object SessionMessagePack Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SessionMessagePack(SessionProgress, SessionMessage) Initializes a new instance of the SessionMessagePack class. public SessionMessagePack(SessionProgress host, SessionMessage msg) Parameters host SessionProgress The session message host. msg SessionMessage The machining message. Properties Host Gets the host that contains this message pack. public SessionProgress Host { get; } Property Value SessionProgress Index Gets the index of the message in the collection. public int Index { get; } Property Value int Message Gets the message text. public string Message { get; } Property Value string SessionMessage Gets the machining message contained in this pack. public SessionMessage SessionMessage { get; } Property Value SessionMessage SourceCommand Gets the source command that generated this message. public IIndexedFileLine SourceCommand { get; } Property Value IIndexedFileLine Tags Gets the tags associated with the message. public HashSet Tags { get; } Property Value HashSet" + }, + "api/Hi.MachiningProcs.SessionProgress.FilterFlag.html": { + "href": "api/Hi.MachiningProcs.SessionProgress.FilterFlag.html", + "title": "Enum SessionProgress.FilterFlag | HiAPI-C# 2025", + "summary": "Enum SessionProgress.FilterFlag Namespace Hi.MachiningProcs Assembly HiMech.dll Filtering flags for querying messages. [Flags] public enum SessionProgress.FilterFlag Extension Methods InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MaskUtil.GetMaskedValue(T, T, bool) MaskUtil.SetMask(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Error = 8 Include error, warning, or exception messages. NC = 2 Include NC text messages. Progress = 4 Include progress messages. Step = 1 Include machining step messages." + }, + "api/Hi.MachiningProcs.SessionProgress.html": { + "href": "api/Hi.MachiningProcs.SessionProgress.html", + "title": "Class SessionProgress | HiAPI-C# 2025", + "summary": "Class SessionProgress Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a host for managing milling messages with thread-safe operations and stable index tracking. public class SessionProgress : IProgress Inheritance object SessionProgress Implements IProgress Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MultiTagMessageUtil.ReportError(IProgress, string, params string[]) MultiTagMessageUtil.ReportException(IProgress, Exception, params string[]) MultiTagMessageUtil.ReportInfo(IProgress, string, params string[]) MultiTagMessageUtil.ReportMessage(IProgress, string, params string[]) MultiTagMessageUtil.ReportProgress(IProgress, string, params string[]) MultiTagMessageUtil.ReportSuccess(IProgress, string, params string[]) MultiTagMessageUtil.ReportWarning(IProgress, string, params string[]) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties MessageCollection Gets or sets the thread-safe collection of milling messages. The getter is for readonly. Do not edit the collection directly. public SynList MessageCollection { get; } Property Value SynList StableIndex Gets or sets the stable index. No other data will be inserted before this index. The term stable means it is thread safe to access range from 0 to StableIndex(exclusive). public int StableIndex { get; } Property Value int Methods Add(object) Adds a new entry to the message collection. public object Add(object entry) Parameters entry object The entry to add. Returns object The added milling message. Clear() Clears all messages from the collection. public void Clear() GetFliteredList(FilterFlag, string) Gets a filtered list of session messages. public List GetFliteredList(SessionProgress.FilterFlag flags, string filterText) Parameters flags SessionProgress.FilterFlag Filtering flags that determine which message categories are included. filterText string Optional text to filter by; case-insensitive contains match. Returns List A list of messages that match the specified filters. GetSourceCommand(SessionMessage) Retrieves the source command associated with the specified machining message. public IIndexedFileLine GetSourceCommand(SessionMessage machiningMessage) Parameters machiningMessage SessionMessage The machining message to find the source command for. Returns IIndexedFileLine The source command that generated the message, or null if not found. Report(object) Reports a progress update. public void Report(object entry) Parameters entry object SetStableIndexToEnd() Sets the StableIndex to the end of the collection. public void SetStableIndexToEnd() Events CollectionCleared Event raised when the collection is cleared. public event Action CollectionCleared Event Type Action CollectionItemAdded Event raised when a new milling message is added to the collection. public event Action CollectionItemAdded Event Type Action CollectionItemChanged Event raised when a collection item is changed. public event Action CollectionItemChanged Event Type Action" }, "api/Hi.MachiningProcs.SetupController.html": { "href": "api/Hi.MachiningProcs.SetupController.html", @@ -2107,7 +2102,7 @@ "api/Hi.MachiningProcs.html": { "href": "api/Hi.MachiningProcs.html", "title": "Namespace Hi.MachiningProcs | HiAPI-C# 2025", - "summary": "Namespace Hi.MachiningProcs Classes DynamicMachiningProjectDisplayee0 Provides display capabilities for a milling course. obsoleted. LocalProjectService Root(Local) project service. Apply absolute file path. MachiningActRunner Represents a runner for machining actions that manages milling steps, tool paths, and collision detection. MachiningActRunnerConfig Represents the configuration for a milling act runner. Provides settings for physics simulation, evaluation, and temperature control. MachiningParallelProc Represents a parallel processing system for milling operations that manages various tasks such as sweeping, subtraction, force calculation, and physics simulation. MachiningParallelProc.StepTaskBundle Represents a bundle of tasks related to a milling step. MachiningParallelProc.SubstractionResult Represents the result of a subtraction operation. MachiningProject Represents a milling project that manages the execution, simulation, and analysis of NC programs. MachiningProjectDisplayee Represents a displayable wrapper for a machining project. MachiningSession Represents a machining session that manages the execution and optimization of machining operations. Provides functionality for controlling the machining process, handling optimization options, and managing session state. MillingUtil Provides utility methods for milling calculations and operations. 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. SessionMessage Represents a message in the machining process that can contain various types of data such as source commands, machining steps, exceptions, and tagged messages. SessionMessageHost Represents a host for managing milling messages with thread-safe operations and stable index tracking. SessionMessagePack Represents a package containing a machining message and its associated context. SetupController Controller for setup operations of machining projects. SpindleSpeedCache Represents cached spindle speed information. Interfaces IMachiningProjectGetter Interface for objects that can provide a MachiningProject instance. IProjectService Interface for services that manage machining projects. Enums RenderingFlag Flags that control which elements are rendered in the visualization. SessionMessageHost.FilterFlag Filtering flags for querying messages. Delegates ConfigStepFunc Delegate for configuring a milling step with additional arguments. LocalProjectService.MachiningProjectChangedDelegate Delegate for machining project changed events. MachiningActRunner.MachiningStepBuiltDelegate Delegate for configuring a step with previous and current step information." + "summary": "Namespace Hi.MachiningProcs Classes LocalProjectService Root(Local) project service. Apply absolute file path. MachiningActRunner Represents a runner for machining actions that manages milling steps, tool paths, and collision detection. MachiningActRunnerConfig Represents the configuration for a milling act runner. Provides settings for physics simulation, evaluation, and temperature control. MachiningParallelProc Represents a parallel processing system for milling operations that manages various tasks such as sweeping, subtraction, force calculation, and physics simulation. MachiningParallelProc.StepTaskBundle Represents a bundle of tasks related to a milling step. MachiningParallelProc.SubstractionResult Represents the result of a subtraction operation. MachiningProject Represents a milling project that manages the execution, simulation, and analysis of NC programs. MachiningProjectDisplayee Represents a displayable wrapper for a machining project. MachiningSession Represents a machining session that manages the execution and optimization of machining operations. Provides functionality for controlling the machining process, handling optimization options, and managing session state. MillingUtil Provides utility methods for milling calculations and operations. 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. SessionMessage Represents a message in the machining process that can contain various types of data such as source commands, machining steps, exceptions, and tagged messages. SessionMessagePack Represents a package containing a machining message and its associated context. SessionProgress Represents a host for managing milling messages with thread-safe operations and stable index tracking. SetupController Controller for setup operations of machining projects. SpindleSpeedCache Represents cached spindle speed information. Interfaces IMachiningProjectGetter Interface for objects that can provide a MachiningProject instance. IProjectService Interface for services that manage machining projects. Enums RenderingFlag Flags that control which elements are rendered in the visualization. SessionProgress.FilterFlag Filtering flags for querying messages. Delegates ConfigStepFunc Delegate for configuring a milling step with additional arguments. LocalProjectService.MachiningProjectChangedDelegate Delegate for machining project changed events. MachiningActRunner.MachiningStepBuiltDelegate Delegate for configuring a step with previous and current step information." }, "api/Hi.MachiningSteps.IFlagText.html": { "href": "api/Hi.MachiningSteps.IFlagText.html", @@ -3382,7 +3377,7 @@ "api/Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html": { "href": "api/Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html", "title": "Class CodeXyzabcMachineTool | HiAPI-C# 2025", - "summary": "Class CodeXyzabcMachineTool Namespace Hi.NcMech.Xyzabc Assembly HiMech.dll For legacy compatible. Use GeneralXyzabcMachineTool instead. public class CodeXyzabcMachineTool : IXyzabcMachineTool, IDisplayee, IGetCollisionIndexPairs, IXyzabcChain, IGetXyzabcChain, IMachiningChain, IGetAsmb, IGetAnchor, IGetTopoIndex, IMakeXmlSource, IGetAnchorToSolidDictionary, IGetAnchoredDisplayeeList, IExpandToBox3d, INameNote Inheritance object CodeXyzabcMachineTool Implements IXyzabcMachineTool IDisplayee IGetCollisionIndexPairs IXyzabcChain IGetXyzabcChain IMachiningChain IGetAsmb IGetAnchor IGetTopoIndex IMakeXmlSource IGetAnchorToSolidDictionary IGetAnchoredDisplayeeList IExpandToBox3d INameNote Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) MachiningChainUtil.GetMcCodeTransformerDictionary(IMachiningChain) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) XyzabcUtil.GenerateCollisionIndexPairs(IXyzabcChain) XyzabcUtil.GetMc(IXyzabcChain, out DVec3d) XyzabcUtil.GetMc(IXyzabcChain, out double, out double, out double, out double, out double, out double) XyzabcUtil.GetMcAbc_rad(IXyzabcChain, out Abc) XyzabcUtil.GetMcXyzabc(IXyzabcChain) XyzabcUtil.GetNp(IXyzabcChain) XyzabcUtil.GetTransformationMat4d(IXyzabcChain) XyzabcUtil.SetMc(IXyzabcChain, DVec3d) XyzabcUtil.SetMc(IXyzabcChain, Vec3d) XyzabcUtil.SetMc(IXyzabcChain, double, double, double) XyzabcUtil.SetMc(IXyzabcChain, double, double, double, double, double, double) XyzabcUtil.SetMcAbc_rad(IXyzabcChain, Vec3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CodeXyzabcMachineTool(CodeXyzabcChain) Initializes a new instance of the CodeXyzabcMachineTool class. public CodeXyzabcMachineTool(CodeXyzabcChain xyzabcChain) Parameters xyzabcChain CodeXyzabcChain The XYZABC chain instance. CodeXyzabcMachineTool(XElement, string) Initializes a new instance from XML. public CodeXyzabcMachineTool(XElement src, string baseDirectory) Parameters src XElement The XML source element. baseDirectory string The base directory for resolving relative paths. Properties CollisionIndexPairs Gets or sets the collection of collision index pairs. public HashSet CollisionIndexPairs { get; set; } Property Value HashSet EnableAutoGeneratingCollisionIndexPairsOnXmlLoaded Gets or sets whether to automatically generate collision index pairs when loading from XML. public bool EnableAutoGeneratingCollisionIndexPairsOnXmlLoaded { get; set; } Property Value bool McCodes Gets the machine codes array. public string[] McCodes { get; } Property Value string[] McTransformers Gets the machine transformers array. public IDynamicRegular[] McTransformers { get; } Property Value IDynamicRegular[] Name Gets or sets the name of the object. public string Name { get; set; } Property Value string Note Gets or sets the descriptive note for the object. public string Note { get; set; } Property Value string TableAnchor Anchor to attach fixture or workpiece. The anchor is the same as IXyzabcChain.Hi.Numerical.Xyzabc.IXyzabcChain.GetTableBuckle. public Anchor TableAnchor { get; } Property Value Anchor ToolAnchor Anchor to attach tool. The anchor is the same as IXyzabcChain.Hi.Numerical.Xyzabc.IXyzabcChain.GetToolBuckle. public Anchor ToolAnchor { get; } Property Value Anchor XName Name of XML element. public static string XName { get; } Property Value string XyzabcChain Gets the XYZABC chain instance. public IXyzabcChain XyzabcChain { get; } Property Value IXyzabcChain Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GenerateCollisionIndexPairs() Generates collision index pairs for the machine tool components. public void GenerateCollisionIndexPairs() GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchorToSolidDictionary() Gets a dictionary that maps Anchor objects to their corresponding Solid objects. public Dictionary GetAnchorToSolidDictionary() Returns Dictionary A dictionary where keys are anchors and values are their associated solids. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetCollisionIndexPairs() Gets a collection of collision index pairs for collision detection. public IEnumerable GetCollisionIndexPairs() Returns IEnumerable A collection of CollisionIndexPair objects. GetMachiningChain() public IMachiningChain GetMachiningChain() Returns IMachiningChain GetMcCodeTransformerDictionary() public Dictionary GetMcCodeTransformerDictionary() Returns Dictionary GetTableBuckle() Gets the table buckle anchor point. public IGetAnchor GetTableBuckle() Returns IGetAnchor The table buckle anchor point. GetToolBuckle() Gets the tool buckle anchor point. public IGetAnchor GetToolBuckle() Returns IGetAnchor The tool buckle anchor point. GetTransformerA() Get transformer A. public DynamicRotation GetTransformerA() Returns DynamicRotation transformer A GetTransformerB() Get transformer B. public DynamicRotation GetTransformerB() Returns DynamicRotation transformer B GetTransformerC() Get transformer C. public DynamicRotation GetTransformerC() Returns DynamicRotation transformer C GetTransformerX() Get transformer X. public DynamicTranslation GetTransformerX() Returns DynamicTranslation transformer X GetTransformerY() Get transformer Y. public DynamicTranslation GetTransformerY() Returns DynamicTranslation transformer Y GetTransformerZ() Get transformer Z. public DynamicTranslation GetTransformerZ() Returns DynamicTranslation transformer Z GetXyzabcChain() Get IXyzabcChain. public IXyzabcChain GetXyzabcChain() Returns IXyzabcChain IXyzabcChain GetXyzabcMachineTool() public CodeXyzabcMachineTool GetXyzabcMachineTool() Returns CodeXyzabcMachineTool MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class CodeXyzabcMachineTool Namespace Hi.NcMech.Xyzabc Assembly HiMech.dll For legacy compatible. Use GeneralXyzabcMachineTool instead. public class CodeXyzabcMachineTool : IXyzabcMachineTool, IDisplayee, IGetCollisionIndexPairs, IXyzabcChain, IGetXyzabcChain, IMachiningChain, IGetAsmb, IGetAnchor, IGetTopoIndex, IMakeXmlSource, IGetAnchorToSolidDictionary, IGetAnchoredDisplayeeList, IExpandToBox3d, INameNote Inheritance object CodeXyzabcMachineTool Implements IXyzabcMachineTool IDisplayee IGetCollisionIndexPairs IXyzabcChain IGetXyzabcChain IMachiningChain IGetAsmb IGetAnchor IGetTopoIndex IMakeXmlSource IGetAnchorToSolidDictionary IGetAnchoredDisplayeeList IExpandToBox3d INameNote Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) MachiningChainUtil.GetMcCodeTransformerDictionary(IMachiningChain) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) XyzabcUtil.GenerateCollisionIndexPairs(IXyzabcChain) XyzabcUtil.GetMc(IXyzabcChain, out DVec3d) XyzabcUtil.GetMc(IXyzabcChain, out double, out double, out double, out double, out double, out double) XyzabcUtil.GetMcAbc_rad(IXyzabcChain, out Abc) XyzabcUtil.GetMcXyzabc(IXyzabcChain) XyzabcUtil.GetNp(IXyzabcChain) XyzabcUtil.GetTransformationMat4d(IXyzabcChain) XyzabcUtil.SetMc(IXyzabcChain, DVec3d) XyzabcUtil.SetMc(IXyzabcChain, Vec3d) XyzabcUtil.SetMc(IXyzabcChain, double, double, double) XyzabcUtil.SetMc(IXyzabcChain, double, double, double, double, double, double) XyzabcUtil.SetMcAbc_rad(IXyzabcChain, Vec3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CodeXyzabcMachineTool(CodeXyzabcChain) Initializes a new instance of the CodeXyzabcMachineTool class. public CodeXyzabcMachineTool(CodeXyzabcChain xyzabcChain) Parameters xyzabcChain CodeXyzabcChain The XYZABC chain instance. CodeXyzabcMachineTool(string, bool) public CodeXyzabcMachineTool(string chainCode = \"[O][Z][C][w];[O][Y][X][B][S][t]\", bool isVertical = true) Parameters chainCode string isVertical bool CodeXyzabcMachineTool(XElement, string) Initializes a new instance from XML. public CodeXyzabcMachineTool(XElement src, string baseDirectory) Parameters src XElement The XML source element. baseDirectory string The base directory for resolving relative paths. Properties CollisionIndexPairs Gets or sets the collection of collision index pairs. public HashSet CollisionIndexPairs { get; set; } Property Value HashSet EnableAutoGeneratingCollisionIndexPairsOnXmlLoaded Gets or sets whether to automatically generate collision index pairs when loading from XML. public bool EnableAutoGeneratingCollisionIndexPairsOnXmlLoaded { get; set; } Property Value bool McCodes Gets the machine codes array. public string[] McCodes { get; } Property Value string[] McTransformers Gets the machine transformers array. public IDynamicRegular[] McTransformers { get; } Property Value IDynamicRegular[] Name Gets or sets the name of the object. public string Name { get; set; } Property Value string Note Gets or sets the descriptive note for the object. public string Note { get; set; } Property Value string TableAnchor Anchor to attach fixture or workpiece. The anchor is the same as IXyzabcChain.Hi.Numerical.Xyzabc.IXyzabcChain.GetTableBuckle. public Anchor TableAnchor { get; } Property Value Anchor ToolAnchor Anchor to attach tool. The anchor is the same as IXyzabcChain.Hi.Numerical.Xyzabc.IXyzabcChain.GetToolBuckle. public Anchor ToolAnchor { get; } Property Value Anchor XName Name of XML element. public static string XName { get; } Property Value string XyzabcChain Gets the XYZABC chain instance. public IXyzabcChain XyzabcChain { get; } Property Value IXyzabcChain Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GenerateCollisionIndexPairs() Generates collision index pairs for the machine tool components. public void GenerateCollisionIndexPairs() GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchorToSolidDictionary() Gets a dictionary that maps Anchor objects to their corresponding Solid objects. public Dictionary GetAnchorToSolidDictionary() Returns Dictionary A dictionary where keys are anchors and values are their associated solids. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetCollisionIndexPairs() Gets a collection of collision index pairs for collision detection. public IEnumerable GetCollisionIndexPairs() Returns IEnumerable A collection of CollisionIndexPair objects. GetMachiningChain() public IMachiningChain GetMachiningChain() Returns IMachiningChain GetMcCodeTransformerDictionary() public Dictionary GetMcCodeTransformerDictionary() Returns Dictionary GetTableBuckle() Gets the table buckle anchor point. public IGetAnchor GetTableBuckle() Returns IGetAnchor The table buckle anchor point. GetToolBuckle() Gets the tool buckle anchor point. public IGetAnchor GetToolBuckle() Returns IGetAnchor The tool buckle anchor point. GetTransformerA() Get transformer A. public DynamicRotation GetTransformerA() Returns DynamicRotation transformer A GetTransformerB() Get transformer B. public DynamicRotation GetTransformerB() Returns DynamicRotation transformer B GetTransformerC() Get transformer C. public DynamicRotation GetTransformerC() Returns DynamicRotation transformer C GetTransformerX() Get transformer X. public DynamicTranslation GetTransformerX() Returns DynamicTranslation transformer X GetTransformerY() Get transformer Y. public DynamicTranslation GetTransformerY() Returns DynamicTranslation transformer Y GetTransformerZ() Get transformer Z. public DynamicTranslation GetTransformerZ() Returns DynamicTranslation transformer Z GetXyzabcChain() Get IXyzabcChain. public IXyzabcChain GetXyzabcChain() Returns IXyzabcChain IXyzabcChain GetXyzabcMachineTool() public CodeXyzabcMachineTool GetXyzabcMachineTool() Returns CodeXyzabcMachineTool MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html": { "href": "api/Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html", @@ -3479,176 +3474,6 @@ "title": "Namespace Hi.NcOpt | HiAPI-C# 2025", "summary": "Namespace Hi.NcOpt Classes CuttingVelocityOptLimit Represents optimization limits for cutting velocity parameters. FixedFeedPerCycleOptLimit Represents fixed feed-per-cycle optimization limits. Provides implementation for feed-per-cycle optimization with fixed minimum and maximum values. FixedFeedPerToothOptLimit Represents fixed feed-per-tooth optimization limits. Provides implementation for feed-per-tooth optimization with fixed minimum and maximum values. MillingCutterOptOption Represents NC optimization option for milling cutters. NcOptOption Represents the optimization options for NC operations. NcOptProc Provides functionality for optimizing NC programs by modifying feed rates and tool paths. ShapeBasedCutterOptLimit Represents optimization limits based on cutter shape parameters. Interfaces ICutterOptLimitHost Interface for hosts that contain cutter optimization limits. Provides access to cutter optimization limit settings. ICutterOptOption Interface for cutter optimization limits. Combines feed-per-tooth optimization capabilities with duplication and XML serialization support. Inherits from IMakeXmlSource, IFeedPerToothOptLimit, and IDuplicate. ICuttingVelocityOptLimit Interface for cutting velocity optimization limits. Defines methods to get minimum and maximum cutting velocity values. Implements IMakeXmlSource for XML serialization and IDuplicate for object duplication. IFeedPerToothOptLimit Interface for feed-per-tooth optimization limits. Defines methods to get minimum and maximum feed per tooth values. Implements IMakeXmlSource for XML serialization and IDuplicate for object duplication. Enums NcOptimizationEmbeddedLogMode Embedded log mode for NC optimization." }, - "api/Hi.NcParsers.Claims.Classics.CoordinateTransformationChainClaim.html": { - "href": "api/Hi.NcParsers.Claims.Classics.CoordinateTransformationChainClaim.html", - "title": "Class CoordinateTransformationChainClaim | HiAPI-C# 2025", - "summary": "Class CoordinateTransformationChainClaim Namespace Hi.NcParsers.Claims.Classics Assembly HiMech.dll [Obsolete] public class CoordinateTransformationChainClaim : ICoordinateTransformationClaim, IClaim Inheritance object CoordinateTransformationChainClaim Implements ICoordinateTransformationClaim IClaim Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CdnTransformMat4d Coordinate transmformation mat. From parent component to child component. Coordinate transmformation mat is inversed mat of PosTransformMat4d. public Mat4d CdnTransformMat4d { get; } Property Value Mat4d CoordinateTransformationClaimList The order is from root to leaf. public List CoordinateTransformationClaimList { get; } Property Value List PosTransformMat4d Point transmformation mat. From parent component to child component. public Mat4d PosTransformMat4d { get; } Property Value Mat4d" - }, - "api/Hi.NcParsers.Claims.Classics.PauseClaim.html": { - "href": "api/Hi.NcParsers.Claims.Classics.PauseClaim.html", - "title": "Class PauseClaim | HiAPI-C# 2025", - "summary": "Class PauseClaim Namespace Hi.NcParsers.Claims.Classics Assembly HiMech.dll Classic Pausing, i.e. G04. [Obsolete] public class PauseClaim : IPauseClaim, IClaim Inheritance object PauseClaim Implements IPauseClaim IClaim Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PauseClaim() public PauseClaim() Properties P Entered pause time in milli-seconds. Note that in fanuc, the behavior may be altered by configuration. public double P { get; set; } Property Value double PauseDuration G04 total pausing time. public TimeSpan PauseDuration { get; } Property Value TimeSpan S Entered pause time in seconds. public double S { get; set; } Property Value double X Entered pause time in seconds. Fanuc. Note that in fanuc, the behavior may be altered by configuration. public double X { get; set; } Property Value double" - }, - "api/Hi.NcParsers.Claims.Classics.RadialRadiusOffsetClaim.html": { - "href": "api/Hi.NcParsers.Claims.Classics.RadialRadiusOffsetClaim.html", - "title": "Class RadialRadiusOffsetClaim | HiAPI-C# 2025", - "summary": "Class RadialRadiusOffsetClaim Namespace Hi.NcParsers.Claims.Classics Assembly HiMech.dll Buffer for radius compensation operations in numerical control [Obsolete] public class RadialRadiusOffsetClaim : IClaim Inheritance object RadialRadiusOffsetClaim Implements IClaim Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CenterProgramPos For arc command only. public Vec3d CenterProgramPos { get; set; } Property Value Vec3d CompensatedPosOnProgramCoordinate Program Pos at certain NcLine. Program Pos can be Cartesian XYZ or Polar Coordinate Interpolation Mode (G12.1) XCZ. public Vec3d CompensatedPosOnProgramCoordinate { get; set; } Property Value Vec3d TransientBeginMc For arc command only. public DVec3d TransientBeginMc { get; set; } Property Value DVec3d TransientBeginProgramPos For arc command only. public Vec3d TransientBeginProgramPos { get; set; } Property Value Vec3d TransientEndMc For arc command only. public DVec3d TransientEndMc { get; set; } Property Value DVec3d TransientEndProgramPos For arc command only. public Vec3d TransientEndProgramPos { get; set; } Property Value Vec3d Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." - }, - "api/Hi.NcParsers.Claims.Classics.html": { - "href": "api/Hi.NcParsers.Claims.Classics.html", - "title": "Namespace Hi.NcParsers.Claims.Classics | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Claims.Classics Classes CoordinateTransformationChainClaim PauseClaim Classic Pausing, i.e. G04. RadialRadiusOffsetClaim Buffer for radius compensation operations in numerical control" - }, - "api/Hi.NcParsers.Claims.IClaim.html": { - "href": "api/Hi.NcParsers.Claims.IClaim.html", - "title": "Interface IClaim | HiAPI-C# 2025", - "summary": "Interface IClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll Logic of NC or part of NC statement. [Obsolete(\"IClaim pattern is replaced by INcSemantic writing directly to SyntaxPiece.JsonObject.\")] public interface IClaim Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)" - }, - "api/Hi.NcParsers.Claims.ICoordinateMarkClaim.html": { - "href": "api/Hi.NcParsers.Claims.ICoordinateMarkClaim.html", - "title": "Interface ICoordinateMarkClaim | HiAPI-C# 2025", - "summary": "Interface ICoordinateMarkClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public interface ICoordinateMarkClaim : IModalFlagClaim, IClaim Inherited Members IModalFlagClaim.ModalFlags Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CoordinateMark object CoordinateMark { get; } Property Value object" - }, - "api/Hi.NcParsers.Claims.ICoordinateTransformationClaim.html": { - "href": "api/Hi.NcParsers.Claims.ICoordinateTransformationClaim.html", - "title": "Interface ICoordinateTransformationClaim | HiAPI-C# 2025", - "summary": "Interface ICoordinateTransformationClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public interface ICoordinateTransformationClaim : IClaim Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CdnTransformMat4d Coordinate transmformation mat. From parent component to child component. Coordinate transmformation mat is inversed mat of PosTransformMat4d. Mat4d CdnTransformMat4d { get; } Property Value Mat4d PosTransformMat4d Point transmformation mat. From parent component to child component. Mat4d PosTransformMat4d { get; } Property Value Mat4d" - }, - "api/Hi.NcParsers.Claims.ICoordinateTranslationClaim.html": { - "href": "api/Hi.NcParsers.Claims.ICoordinateTranslationClaim.html", - "title": "Interface ICoordinateTranslationClaim | HiAPI-C# 2025", - "summary": "Interface ICoordinateTranslationClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public interface ICoordinateTranslationClaim : ICoordinateTransformationClaim, IClaim Inherited Members ICoordinateTransformationClaim.PosTransformMat4d ICoordinateTransformationClaim.CdnTransformMat4d Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties PointTranslationXyz Point translation from table to feature. Vec3d PointTranslationXyz { get; } Property Value Vec3d" - }, - "api/Hi.NcParsers.Claims.IFeedrateClaim.html": { - "href": "api/Hi.NcParsers.Claims.IFeedrateClaim.html", - "title": "Interface IFeedrateClaim | HiAPI-C# 2025", - "summary": "Interface IFeedrateClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public interface IFeedrateClaim : IClaim, IGetFeedrate, ISetFeedrate Inherited Members IGetFeedrate.GetFeedrate_mmds() ISetFeedrate.SetFeedrate_mmds(double) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)" - }, - "api/Hi.NcParsers.Claims.IHeightOffsetClaim.html": { - "href": "api/Hi.NcParsers.Claims.IHeightOffsetClaim.html", - "title": "Interface IHeightOffsetClaim | HiAPI-C# 2025", - "summary": "Interface IHeightOffsetClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public interface IHeightOffsetClaim : IClaim Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties HeightOffset_mm double HeightOffset_mm { get; set; } Property Value double" - }, - "api/Hi.NcParsers.Claims.IHubClaim.html": { - "href": "api/Hi.NcParsers.Claims.IHubClaim.html", - "title": "Interface IHubClaim | HiAPI-C# 2025", - "summary": "Interface IHubClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll Working Json path hub. [Obsolete] public interface IHubClaim : IClaim Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties JsonPathList List JsonPathList { get; } Property Value List SourceSemanticList List SourceSemanticList { get; } Property Value List" - }, - "api/Hi.NcParsers.Claims.IMcXyzClaim.html": { - "href": "api/Hi.NcParsers.Claims.IMcXyzClaim.html", - "title": "Interface IMcXyzClaim | HiAPI-C# 2025", - "summary": "Interface IMcXyzClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public interface IMcXyzClaim : IClaim Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties McXyz Get or set XYZ on Machine Coordinate. Vec3d McXyz { get; set; } Property Value Vec3d" - }, - "api/Hi.NcParsers.Claims.IMcXyzabcClaim.html": { - "href": "api/Hi.NcParsers.Claims.IMcXyzabcClaim.html", - "title": "Interface IMcXyzabcClaim | HiAPI-C# 2025", - "summary": "Interface IMcXyzabcClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public interface IMcXyzabcClaim : IGetMcXyzabc, ISetMcXyzabc, IMcXyzClaim, IClaim Inherited Members IGetMcXyzabc.GetMcXyzabc() ISetMcXyzabc.SetMcXyzabc(DVec3d) IMcXyzClaim.McXyz Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties McXyzabc DVec3d McXyzabc { get; set; } Property Value DVec3d" - }, - "api/Hi.NcParsers.Claims.IMessageClaim.html": { - "href": "api/Hi.NcParsers.Claims.IMessageClaim.html", - "title": "Interface IMessageClaim | HiAPI-C# 2025", - "summary": "Interface IMessageClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public interface IMessageClaim : IClaim Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties MultiTagMessage MultiTagMessage MultiTagMessage { get; set; } Property Value MultiTagMessage" - }, - "api/Hi.NcParsers.Claims.IModalFlagClaim.html": { - "href": "api/Hi.NcParsers.Claims.IModalFlagClaim.html", - "title": "Interface IModalFlagClaim | HiAPI-C# 2025", - "summary": "Interface IModalFlagClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public interface IModalFlagClaim : IClaim Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ModalFlags object[] ModalFlags { get; } Property Value object[]" - }, - "api/Hi.NcParsers.Claims.IOneShotClaim.html": { - "href": "api/Hi.NcParsers.Claims.IOneShotClaim.html", - "title": "Interface IOneShotClaim | HiAPI-C# 2025", - "summary": "Interface IOneShotClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll One-shot (non-modal) Claim. Claim is active only to one sentence in which it is specified. [Obsolete] public interface IOneShotClaim : IClaim Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)" - }, - "api/Hi.NcParsers.Claims.IPauseClaim.html": { - "href": "api/Hi.NcParsers.Claims.IPauseClaim.html", - "title": "Interface IPauseClaim | HiAPI-C# 2025", - "summary": "Interface IPauseClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public interface IPauseClaim : IClaim Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties PauseDuration TimeSpan PauseDuration { get; } Property Value TimeSpan" - }, - "api/Hi.NcParsers.Claims.IPolarClaim.html": { - "href": "api/Hi.NcParsers.Claims.IPolarClaim.html", - "title": "Interface IPolarClaim | HiAPI-C# 2025", - "summary": "Interface IPolarClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll The class for G12.1 Polar mode. In G12.1 Polar mode, NC code applies (X,C) as (linear axis, hypothetical axis). XC, YA, ZB are available. [Obsolete] public interface IPolarClaim : IClaim Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CentralProgramPolarRxcz ProgramPolarPos on no-shifting polar coordinate (e.g. coordinate on the c axis center and x-zero). Vec3d CentralProgramPolarRxcz { get; set; } Property Value Vec3d CodePolarDxcz In Polar coordinate interpolation mode (G12.1), the X value is the diameter value. and also, rotary is assigned by hypothesis value (called C. Some controller accepts Y as equivalent.). Dx: X is diameter. Vec3d CodePolarDxcz { get; set; } Property Value Vec3d InitProgramPolarRxcz InitProgramPolarXcz. z is always zero. Const session data. Only set at the G12.1 line once. Vec3d InitProgramPolarRxcz { get; set; } Property Value Vec3d PolarModeDir Gets or sets the polar mode direction. PolarModeDirEnum PolarModeDir { get; set; } Property Value PolarModeDirEnum ProgramPolarRxcz ProgramPos. XC, YA or ZB. The Last is Z (for XC). According to PolarModeDir. Rx: x is radius . Pos.X is linear axis position (X,Y,Z); Pos.Y is hypothetical axis position (C,A,B). Unit of Pos.Y is linear. In contrast to term “OrdinaryProgramXcz”, the Unit of “OrdinaryProgramXcz”.Y is angle. In Polar coordinate interpolation mode (G12.1), the X value is the diameter value. So remark R to X here, emphasize x is different from the G12.1 convention. Use x as radius so that the dimension is uniform on the three axises (XCZ). Vec3d ProgramPolarRxcz { get; set; } Property Value Vec3d" - }, - "api/Hi.NcParsers.Claims.IPositioningModeClaim.html": { - "href": "api/Hi.NcParsers.Claims.IPositioningModeClaim.html", - "title": "Interface IPositioningModeClaim | HiAPI-C# 2025", - "summary": "Interface IPositioningModeClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public interface IPositioningModeClaim : IClaim Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties AbsRelCoordinateMode PositioningMode AbsRelCoordinateMode { get; set; } Property Value PositioningMode" - }, - "api/Hi.NcParsers.Claims.IPreparedToolClaim.html": { - "href": "api/Hi.NcParsers.Claims.IPreparedToolClaim.html", - "title": "Interface IPreparedToolClaim | HiAPI-C# 2025", - "summary": "Interface IPreparedToolClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public interface IPreparedToolClaim : IClaim Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties PreparedT object PreparedT { get; set; } Property Value object" - }, - "api/Hi.NcParsers.Claims.IProgramXyzClaim.html": { - "href": "api/Hi.NcParsers.Claims.IProgramXyzClaim.html", - "title": "Interface IProgramXyzClaim | HiAPI-C# 2025", - "summary": "Interface IProgramXyzClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public interface IProgramXyzClaim : IClaim Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The term “Program” is absolute positioning coordinate that can be end-user editing. The coordinate is usually the final node from the chain of coordinate transformation. Properties ProgramXyz Orthogonal absolute position in feature (i.e. program) coordinate. Vec3d ProgramXyz { get; set; } Property Value Vec3d" - }, - "api/Hi.NcParsers.Claims.ISpindleSpeedClaim.html": { - "href": "api/Hi.NcParsers.Claims.ISpindleSpeedClaim.html", - "title": "Interface ISpindleSpeedClaim | HiAPI-C# 2025", - "summary": "Interface ISpindleSpeedClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public interface ISpindleSpeedClaim : IClaim, IGetSpindleSpeed, ISetSpindleSpeed Inherited Members IGetSpindleSpeed.GetSpindleSpeed_radds() IGetSpindleSpeed.GetSpindleDirection() ISetSpindleSpeed.SetSpindleSpeed_radds(double) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)" - }, - "api/Hi.NcParsers.Claims.IToolClaim.html": { - "href": "api/Hi.NcParsers.Claims.IToolClaim.html", - "title": "Interface IToolClaim | HiAPI-C# 2025", - "summary": "Interface IToolClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public interface IToolClaim : IClaim Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties T object T { get; set; } Property Value object" - }, - "api/Hi.NcParsers.Claims.Iso.G54CoordinateClaim.html": { - "href": "api/Hi.NcParsers.Claims.Iso.G54CoordinateClaim.html", - "title": "Class G54CoordinateClaim | HiAPI-C# 2025", - "summary": "Class G54CoordinateClaim Namespace Hi.NcParsers.Claims.Iso Assembly HiMech.dll Primary Coordinate IClaim. Resolving series includes G54,G55,...,G59,G59.1,G59.2,...G59.9. [Obsolete] public class G54CoordinateClaim : ICoordinateTranslationClaim, ICoordinateTransformationClaim, ICoordinateMarkClaim, IModalFlagClaim, IClaim Inheritance object G54CoordinateClaim Implements ICoordinateTranslationClaim ICoordinateTransformationClaim ICoordinateMarkClaim IModalFlagClaim IClaim Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CdnTransformMat4d Coordinate transmformation mat. From parent component to child component. Coordinate transmformation mat is inversed mat of PosTransformMat4d. public Mat4d CdnTransformMat4d { get; } Property Value Mat4d CoordinateMark public object CoordinateMark { get; } Property Value object Remarks The values can be G54,G55,...,G59,G59.1,G59.2,...G59.9. G54SeriesCode public double G54SeriesCode { get; set; } Property Value double ModalFlags public object[] ModalFlags { get; } Property Value object[] PointTranslationXyz Point translation from table to feature. public Vec3d PointTranslationXyz { get; set; } Property Value Vec3d PosTransformMat4d Point transmformation mat. From parent component to child component. public Mat4d PosTransformMat4d { get; } Property Value Mat4d" - }, - "api/Hi.NcParsers.Claims.Iso.G68CoordinateClaim.html": { - "href": "api/Hi.NcParsers.Claims.Iso.G68CoordinateClaim.html", - "title": "Class G68CoordinateClaim | HiAPI-C# 2025", - "summary": "Class G68CoordinateClaim Namespace Hi.NcParsers.Claims.Iso Assembly HiMech.dll Represents arguments for G68 coordinate rotation command. [Obsolete] public class G68CoordinateClaim : ICoordinateTransformationClaim, ICoordinateMarkClaim, IModalFlagClaim, IClaim Inheritance object G68CoordinateClaim Implements ICoordinateTransformationClaim ICoordinateMarkClaim IModalFlagClaim IClaim Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors G68CoordinateClaim(Vec3d, Vec3d, double, Func) Ctor. public G68CoordinateClaim(Vec3d rotationCenter, Vec3d IJK, double R, Func orthogonalPlaneClaimGetter) Parameters rotationCenter Vec3d IJK Vec3d R double orthogonalPlaneClaimGetter Func Properties CdnTransformMat4d Coordinate transmformation mat. From parent component to child component. Coordinate transmformation mat is inversed mat of PosTransformMat4d. public Mat4d CdnTransformMat4d { get; } Property Value Mat4d Remarks Apply IJK first if ijk not all nan. CoordinateMark public object CoordinateMark { get; } Property Value object IJK Direction of the axis of rotation. public Vec3d IJK { get; set; } Property Value Vec3d Remarks in most case that cnc engineer made, ijk is zero. the cnc engineer used to use G17,G18,G19. ModalFlags public object[] ModalFlags { get; } Property Value object[] OrthogonalPlaneClaimGetter public Func OrthogonalPlaneClaimGetter { get; set; } Property Value Func PosTransformMat4d Point transmformation mat. From parent component to child component. public Mat4d PosTransformMat4d { get; } Property Value Mat4d Remarks Apply IJK first if ijk not all nan. R Angular displacement. public double R { get; set; } Property Value double RotationCenter Center of rotation on the X, Y, and Z axis or parallel axes. On NC coordinate. NC: the absolute program coordinate without tool height and radius compensation. public Vec3d RotationCenter { get; set; } Property Value Vec3d" - }, - "api/Hi.NcParsers.Claims.Iso.IIsoHeightIdClaim.html": { - "href": "api/Hi.NcParsers.Claims.Iso.IIsoHeightIdClaim.html", - "title": "Interface IIsoHeightIdClaim | HiAPI-C# 2025", - "summary": "Interface IIsoHeightIdClaim Namespace Hi.NcParsers.Claims.Iso Assembly HiMech.dll [Obsolete] public interface IIsoHeightIdClaim : IClaim Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties HId double HId { get; set; } Property Value double" - }, - "api/Hi.NcParsers.Claims.Iso.IsoHeightOffsetClaim.html": { - "href": "api/Hi.NcParsers.Claims.Iso.IsoHeightOffsetClaim.html", - "title": "Class IsoHeightOffsetClaim | HiAPI-C# 2025", - "summary": "Class IsoHeightOffsetClaim Namespace Hi.NcParsers.Claims.Iso Assembly HiMech.dll [Obsolete] public class IsoHeightOffsetClaim : IIsoHeightIdClaim, IHeightOffsetClaim, IClaim Inheritance object IsoHeightOffsetClaim Implements IIsoHeightIdClaim IHeightOffsetClaim IClaim Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties HId public double HId { get; set; } Property Value double HeightOffset_mm public double HeightOffset_mm { get; set; } Property Value double" - }, - "api/Hi.NcParsers.Claims.Iso.OrthogonalPlaneClaim.html": { - "href": "api/Hi.NcParsers.Claims.Iso.OrthogonalPlaneClaim.html", - "title": "Class OrthogonalPlaneClaim | HiAPI-C# 2025", - "summary": "Class OrthogonalPlaneClaim Namespace Hi.NcParsers.Claims.Iso Assembly HiMech.dll Plane selection for G17,G18,G19. [Obsolete] public class OrthogonalPlaneClaim : IModalFlagClaim, IClaim Inheritance object OrthogonalPlaneClaim Implements IModalFlagClaim IClaim Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ModalFlags public object[] ModalFlags { get; } Property Value object[] OrthogonalPlaneFlag public OrthogonalPlaneFlag OrthogonalPlaneFlag { get; set; } Property Value OrthogonalPlaneFlag See Also OrthogonalPlaneFlag" - }, - "api/Hi.NcParsers.Claims.Iso.html": { - "href": "api/Hi.NcParsers.Claims.Iso.html", - "title": "Namespace Hi.NcParsers.Claims.Iso | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Claims.Iso Classes G54CoordinateClaim Primary Coordinate IClaim. Resolving series includes G54,G55,...,G59,G59.1,G59.2,...G59.9. G68CoordinateClaim Represents arguments for G68 coordinate rotation command. IsoHeightOffsetClaim OrthogonalPlaneClaim Plane selection for G17,G18,G19. Interfaces IIsoHeightIdClaim" - }, - "api/Hi.NcParsers.Claims.McXyzClaim.html": { - "href": "api/Hi.NcParsers.Claims.McXyzClaim.html", - "title": "Class McXyzClaim | HiAPI-C# 2025", - "summary": "Class McXyzClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public class McXyzClaim : IMcXyzClaim, IClaim Inheritance object McXyzClaim Implements IMcXyzClaim IClaim Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties McXyz Get or set XYZ on Machine Coordinate. public Vec3d McXyz { get; set; } Property Value Vec3d Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." - }, - "api/Hi.NcParsers.Claims.PositioningMode.html": { - "href": "api/Hi.NcParsers.Claims.PositioningMode.html", - "title": "Enum PositioningMode | HiAPI-C# 2025", - "summary": "Enum PositioningMode Namespace Hi.NcParsers.Claims Assembly HiMech.dll public enum PositioningMode Extension Methods InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MaskUtil.GetMaskedValue(T, T, bool) MaskUtil.SetMask(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Absolute = 1 Absolute Coordinate. Coresponding to ISO NC Flag G90. Incremental = 2 Relative(Incremental) Coordinate. Coresponding to ISO NC Flag G91. UnDefined = 0" - }, - "api/Hi.NcParsers.Claims.ProgramXyzClaim.html": { - "href": "api/Hi.NcParsers.Claims.ProgramXyzClaim.html", - "title": "Class ProgramXyzClaim | HiAPI-C# 2025", - "summary": "Class ProgramXyzClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll [Obsolete] public class ProgramXyzClaim : IProgramXyzClaim, IClaim Inheritance object ProgramXyzClaim Implements IProgramXyzClaim IClaim Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ProgramXyz Orthogonal absolute position in feature (i.e. program) coordinate. public Vec3d ProgramXyz { get; set; } Property Value Vec3d Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." - }, - "api/Hi.NcParsers.Claims.SentenceClaim.html": { - "href": "api/Hi.NcParsers.Claims.SentenceClaim.html", - "title": "Class SentenceClaim | HiAPI-C# 2025", - "summary": "Class SentenceClaim Namespace Hi.NcParsers.Claims Assembly HiMech.dll Simultaneous Claim. [Obsolete] public class SentenceClaim : IClaim Inheritance object SentenceClaim Implements IClaim Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ClaimList public List ClaimList { get; } Property Value List" - }, - "api/Hi.NcParsers.Claims.html": { - "href": "api/Hi.NcParsers.Claims.html", - "title": "Namespace Hi.NcParsers.Claims | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Claims Classes McXyzClaim ProgramXyzClaim SentenceClaim Simultaneous Claim. Interfaces IClaim Logic of NC or part of NC statement. ICoordinateMarkClaim ICoordinateTransformationClaim ICoordinateTranslationClaim IFeedrateClaim IHeightOffsetClaim IHubClaim Working Json path hub. IMcXyzClaim IMcXyzabcClaim IMessageClaim IModalFlagClaim IOneShotClaim One-shot (non-modal) Claim. Claim is active only to one sentence in which it is specified. IPauseClaim IPolarClaim The class for G12.1 Polar mode. In G12.1 Polar mode, NC code applies (X,C) as (linear axis, hypothetical axis). XC, YA, ZB are available. IPositioningModeClaim IPreparedToolClaim IProgramXyzClaim ISpindleSpeedClaim IToolClaim Enums PositioningMode" - }, "api/Hi.NcParsers.Dependencys.AxisType.html": { "href": "api/Hi.NcParsers.Dependencys.AxisType.html", "title": "Enum AxisType | HiAPI-C# 2025", @@ -3657,7 +3482,7 @@ "api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html": { "href": "api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html", "title": "Class ControllerParameterTableBase | HiAPI-C# 2025", - "summary": "Class ControllerParameterTableBase Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Base class for brand-specific controller parameter tables. Provides shared data structures, XML IO, and IHomeMcConfig IMachineAxisConfig implementations. Subclasses define brand-specific parameter numbers, XML attribute names, and derived convenience properties. public abstract class ControllerParameterTableBase : IHomeMcConfig, IMachineAxisConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase Implements IHomeMcConfig IMachineAxisConfig INcDependency IMakeXmlSource Derived FanucParameterTable HeidenhainParameterTable SiemensMachineDataTable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties AxisNames Gets the configured axis names in order. public IEnumerable AxisNames { get; } Property Value IEnumerable AxisParams Per-axis float parameters. Outer key = parameter number, inner key = axis name. public Dictionary> AxisParams { get; set; } Property Value Dictionary> AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected abstract int AxisTypeParamId { get; } Property Value int IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected abstract string IdAttributeName { get; } Property Value string IntAxisParams Per-axis integer parameters. Outer key = parameter number, inner key = axis name. public Dictionary> IntAxisParams { get; set; } Property Value Dictionary> ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected abstract int ReferencePositionParamId { get; } Property Value int SystemParams System-wide parameters. Key = parameter number. public Dictionary SystemParams { get; set; } Property Value Dictionary Methods AxisParam(int) public Dictionary AxisParam(int paramId) Parameters paramId int Returns Dictionary GetHomePosition(string) Gets the home position for a specific axis. Returns null if the axis has no home position configured. public double? GetHomePosition(string axisName) Parameters axisName string Returns double? IntAxisParam(int) public Dictionary IntAxisParam(int paramId) Parameters paramId int Returns Dictionary IsRotaryAxis(string) Returns true if the axis is rotary or spindle, false if linear. public bool IsRotaryAxis(string axisName) Parameters axisName string 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 abstract XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. ReadXml(XElement) protected void ReadXml(XElement src) Parameters src XElement RemoveAxis(string) Removes an axis from the configuration. public void RemoveAxis(string axisName) Parameters axisName string SetAxis(string, AxisType) Adds or updates an axis with the specified type. public void SetAxis(string axisName, AxisType type) Parameters axisName string type AxisType SetHomePosition(string, double) Sets the home position for a specific axis. public void SetHomePosition(string axisName, double value) Parameters axisName string value double WriteXml(string) protected XElement WriteXml(string xName) Parameters xName string Returns XElement" + "summary": "Class ControllerParameterTableBase Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Base class for brand-specific controller parameter tables. Provides shared data structures, XML IO, and IHomeMcConfig IMachineAxisConfig implementations. Subclasses define brand-specific parameter numbers, XML attribute names, and derived convenience properties. public abstract class ControllerParameterTableBase : IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase Implements IHomeMcConfig IMachineAxisConfig IRapidFeedrateConfig INcDependency IMakeXmlSource Derived FanucParameterTable HeidenhainParameterTable SiemensMachineDataTable SyntecParameterTable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties AxisNames Gets the configured axis names in order. public IEnumerable AxisNames { get; } Property Value IEnumerable AxisParams Per-axis float parameters. Outer key = parameter number, inner key = axis name. public Dictionary> AxisParams { get; set; } Property Value Dictionary> AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected abstract int AxisTypeParamId { get; } Property Value int IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected abstract string IdAttributeName { get; } Property Value string IntAxisParams Per-axis integer parameters. Outer key = parameter number, inner key = axis name. public Dictionary> IntAxisParams { get; set; } Property Value Dictionary> RapidRateParamId Parameter/MD/MP number for rapid traverse rate per axis. Null if not defined for this controller brand. protected virtual int? RapidRateParamId { get; } Property Value int? ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected abstract int ReferencePositionParamId { get; } Property Value int SystemParams System-wide parameters. Key = parameter number. public Dictionary SystemParams { get; set; } Property Value Dictionary Methods AxisParam(int) public Dictionary AxisParam(int paramId) Parameters paramId int Returns Dictionary ConfigureRotaryAxis(string, double, double) Configures a rotary axis with home position and rapid rate. Sets axis type to Rotary, home position via SetHomePosition(string, double), and per-axis rapid rate (if RapidRateParamId is defined for this brand). Use RemoveAxis(string) to remove the axis entirely. public void ConfigureRotaryAxis(string axisName, double homePosition_deg = 0, double rapidRate_degdmin = 36000) Parameters axisName string Axis name (e.g., “A”, “B”, “C”). homePosition_deg double Home position in degrees (default 0). rapidRate_degdmin double Rapid traverse rate in deg/min (default 36000). GetAxisRapidRate_mmdmin(string) Gets rapid traverse feedrate for a specific axis in mm/min (or deg/min for rotary). Returns a default value if the axis is not configured. public double GetAxisRapidRate_mmdmin(string axisName) Parameters axisName string Returns double GetHomePosition(string) Gets the home position for a specific axis. Returns null if the axis has no home position configured. public double? GetHomePosition(string axisName) Parameters axisName string Returns double? IntAxisParam(int) public Dictionary IntAxisParam(int paramId) Parameters paramId int Returns Dictionary IsRotaryAxis(string) Returns true if the axis is rotary or spindle, false if linear. public bool IsRotaryAxis(string axisName) Parameters axisName string 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 abstract XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. ReadXml(XElement) protected void ReadXml(XElement src) Parameters src XElement RemoveAxis(string) Removes an axis from the configuration. public void RemoveAxis(string axisName) Parameters axisName string SetAxis(string, AxisType) Adds or updates an axis with the specified type. public void SetAxis(string axisName, AxisType type) Parameters axisName string type AxisType SetHomePosition(string, double) Sets the home position for a specific axis. public void SetHomePosition(string axisName, double value) Parameters axisName string value double WriteXml(string) protected XElement WriteXml(string xName) Parameters xName string Returns XElement" }, "api/Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType.html": { "href": "api/Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType.html", @@ -3667,18 +3492,28 @@ "api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html": { "href": "api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html", "title": "Class FanucParameterTable | HiAPI-C# 2025", - "summary": "Class FanucParameterTable Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll Fanuc controller parameter table. Stores system parameters (single value) and axis parameters (per-axis value) following real Fanuc parameter numbering. public class FanucParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase FanucParameterTable Implements IHomeMcConfig IMachineAxisConfig INcDependency IMakeXmlSource Inherited Members ControllerParameterTableBase.SystemParams ControllerParameterTableBase.AxisParams ControllerParameterTableBase.IntAxisParams ControllerParameterTableBase.AxisParam(int) ControllerParameterTableBase.IntAxisParam(int) ControllerParameterTableBase.GetHomePosition(string) ControllerParameterTableBase.SetHomePosition(string, double) ControllerParameterTableBase.AxisNames ControllerParameterTableBase.IsRotaryAxis(string) ControllerParameterTableBase.SetAxis(string, AxisType) ControllerParameterTableBase.RemoveAxis(string) ControllerParameterTableBase.ReadXml(XElement) ControllerParameterTableBase.WriteXml(string) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucParameterTable() public FanucParameterTable() FanucParameterTable(XElement) public FanucParameterTable(XElement src) Parameters src XElement Fields ParamAxisType #1006: Axis type per axis. See AxisType. public const int ParamAxisType = 1006 Field Value int ParamControlledAxes #1020: Number of controlled axes. public const int ParamControlledAxes = 1020 Field Value int ParamCutterCompType #5003: Cutter compensation startup type. See CutterCompensationType. public const int ParamCutterCompType = 5003 Field Value int ParamMaxSpindleSpeed #3741: Maximum spindle speed (RPM). public const int ParamMaxSpindleSpeed = 3741 Field Value int ParamRapidRate #1420: Rapid traverse rate per axis (mm/min or deg/min). public const int ParamRapidRate = 1420 Field Value int ParamReferencePosition #1240: G28 first reference position per axis. public const int ParamReferencePosition = 1240 Field Value int ParamStrokeLimitNeg #1320: Negative stroke limit per axis (mm or deg). public const int ParamStrokeLimitNeg = 1320 Field Value int ParamStrokeLimitPos #1300: Positive stroke limit per axis (mm or deg). public const int ParamStrokeLimitPos = 1300 Field Value int Properties AxisParam1006 #1006: Axis type per axis. See AxisType. See AxisNames. See IsRotaryAxis(string). See SetAxis(string, AxisType). public Dictionary AxisParam1006 { get; set; } Property Value Dictionary AxisParam1240 #1240: G28 first reference position per axis. See IHomeMcConfig. See GetHomePosition(string). See SetHomePosition(string, double). public Dictionary AxisParam1240 { get; set; } Property Value Dictionary AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected override int AxisTypeParamId { get; } Property Value int ControlledAxisCount Number of controlled axes. Delegates to Param1020. public int ControlledAxisCount { get; set; } Property Value int CutterCompType Cutter compensation startup type. Delegates to Param5003. public CutterCompensationType CutterCompType { get; set; } Property Value CutterCompensationType Default3Axis Default 3-axis Fanuc milling machine. public static FanucParameterTable Default3Axis { get; } Property Value FanucParameterTable IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected override string IdAttributeName { get; } Property Value string MaxSpindleSpeed_rpm Maximum spindle speed in RPM. Delegates to Param3741. public double MaxSpindleSpeed_rpm { get; set; } Property Value double Param1020 #1020: Number of controlled axes. See ControlledAxisCount. public int Param1020 { get; set; } Property Value int Param3741 #3741: Maximum spindle speed (RPM). See MaxSpindleSpeed_rpm. public double Param3741 { get; set; } Property Value double Param5003 #5003: Cutter compensation startup type. See CutterCompType. public CutterCompensationType Param5003 { get; set; } Property Value CutterCompensationType ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected override int ReferencePositionParamId { get; } Property Value int XName 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 override XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class FanucParameterTable Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll Fanuc controller parameter table. Stores system parameters (single value) and axis parameters (per-axis value) following real Fanuc parameter numbering. public class FanucParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, ICannedCycleConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase FanucParameterTable Implements IHomeMcConfig IMachineAxisConfig IRapidFeedrateConfig ICannedCycleConfig INcDependency IMakeXmlSource Inherited Members ControllerParameterTableBase.GetAxisRapidRate_mmdmin(string) ControllerParameterTableBase.SystemParams ControllerParameterTableBase.AxisParams ControllerParameterTableBase.IntAxisParams ControllerParameterTableBase.AxisParam(int) ControllerParameterTableBase.IntAxisParam(int) ControllerParameterTableBase.GetHomePosition(string) ControllerParameterTableBase.SetHomePosition(string, double) ControllerParameterTableBase.AxisNames ControllerParameterTableBase.IsRotaryAxis(string) ControllerParameterTableBase.SetAxis(string, AxisType) ControllerParameterTableBase.RemoveAxis(string) ControllerParameterTableBase.ConfigureRotaryAxis(string, double, double) ControllerParameterTableBase.ReadXml(XElement) ControllerParameterTableBase.WriteXml(string) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucParameterTable() public FanucParameterTable() FanucParameterTable(XElement) public FanucParameterTable(XElement src) Parameters src XElement Fields ParamAxisType #1006: Axis type per axis. See AxisType. public const int ParamAxisType = 1006 Field Value int ParamControlledAxes #1020: Number of controlled axes. public const int ParamControlledAxes = 1020 Field Value int ParamCutterCompType #5003: Cutter compensation startup type. See CutterCompensationType. public const int ParamCutterCompType = 5003 Field Value int ParamMaxSpindleSpeed #3741: Maximum spindle speed (RPM). public const int ParamMaxSpindleSpeed = 3741 Field Value int ParamPeckRetraction #4002: G83 peck drilling retraction distance (mm). Fanuc stores this value in mm directly in the system parameter. public const int ParamPeckRetraction = 4002 Field Value int ParamRapidRate #1420: Rapid traverse rate per axis (mm/min or deg/min). public const int ParamRapidRate = 1420 Field Value int ParamReferencePosition #1240: G28 first reference position per axis. public const int ParamReferencePosition = 1240 Field Value int ParamStrokeLimitNeg #1320: Negative stroke limit per axis (mm or deg). public const int ParamStrokeLimitNeg = 1320 Field Value int ParamStrokeLimitPos #1300: Positive stroke limit per axis (mm or deg). public const int ParamStrokeLimitPos = 1300 Field Value int Properties AxisParam1006 #1006: Axis type per axis. See AxisType. See AxisNames. See IsRotaryAxis(string). See SetAxis(string, AxisType). public Dictionary AxisParam1006 { get; set; } Property Value Dictionary AxisParam1240 #1240: G28 first reference position per axis. See IHomeMcConfig. See GetHomePosition(string). See SetHomePosition(string, double). public Dictionary AxisParam1240 { get; set; } Property Value Dictionary AxisParam1420 #1420: Rapid traverse rate per axis (mm/min or deg/min). See IRapidFeedrateConfig. See ControllerParameterTableBase.RapidFeedrate_mmdmin. public Dictionary AxisParam1420 { get; set; } Property Value Dictionary AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected override int AxisTypeParamId { get; } Property Value int ControlledAxisCount Number of controlled axes. Delegates to Param1020. public int ControlledAxisCount { get; set; } Property Value int CutterCompType Cutter compensation startup type. Delegates to Param5003. public CutterCompensationType CutterCompType { get; set; } Property Value CutterCompensationType Default3Axis Default 3-axis Fanuc milling machine. public static FanucParameterTable Default3Axis { get; } Property Value FanucParameterTable IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected override string IdAttributeName { get; } Property Value string MaxSpindleSpeed_rpm Maximum spindle speed in RPM. Delegates to Param3741. public double MaxSpindleSpeed_rpm { get; set; } Property Value double Param1020 #1020: Number of controlled axes. See ControlledAxisCount. public int Param1020 { get; set; } Property Value int Param3741 #3741: Maximum spindle speed (RPM). See MaxSpindleSpeed_rpm. public double Param3741 { get; set; } Property Value double Param5003 #5003: Cutter compensation startup type. See CutterCompType. public CutterCompensationType Param5003 { get; set; } Property Value CutterCompensationType PeckRetractionDistance_mm G83 peck drilling clearance distance above the previous stroke bottom before re-entering at feed (mm). public double PeckRetractionDistance_mm { get; } Property Value double RapidRateParamId Parameter/MD/MP number for rapid traverse rate per axis. Null if not defined for this controller brand. protected override int? RapidRateParamId { get; } Property Value int? ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected override int ReferencePositionParamId { get; } Property Value int XName 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 override XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.Dependencys.Fanuc.html": { "href": "api/Hi.NcParsers.Dependencys.Fanuc.html", "title": "Namespace Hi.NcParsers.Dependencys.Fanuc | HiAPI-C# 2025", "summary": "Namespace Hi.NcParsers.Dependencys.Fanuc Classes FanucParameterTable Fanuc controller parameter table. Stores system parameters (single value) and axis parameters (per-axis value) following real Fanuc parameter numbering. Enums CutterCompensationType Fanuc #5003: Cutter compensation startup/cancellation type." }, + "api/Hi.NcParsers.Dependencys.Generic.FallbackConfig.html": { + "href": "api/Hi.NcParsers.Dependencys.Generic.FallbackConfig.html", + "title": "Class FallbackConfig | HiAPI-C# 2025", + "summary": "Class FallbackConfig Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll HiNC-specific fallback dependency that provides default values for all optional configuration interfaces. Should be placed as the last element in NcDependencyList so that brand-specific parameter tables (which appear earlier) take priority via OfType().FirstOrDefault(). When a brand table (e.g., FanucParameterTable) implements the same interface, its values are used instead. This class serves as a safety net for brands that do not define certain parameters (e.g., Siemens/Heidenhain have no system parameter for G83 peck retraction — it is per-call). public class FallbackConfig : ICannedCycleConfig, INcDependency, IMakeXmlSource Inheritance object FallbackConfig Implements ICannedCycleConfig INcDependency IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FallbackConfig() public FallbackConfig() FallbackConfig(XElement) public FallbackConfig(XElement src) Parameters src XElement Properties PeckRetractionDistance_mm G83 peck drilling clearance distance above the previous stroke bottom before re-entering at feed (mm). public double PeckRetractionDistance_mm { get; set; } Property Value double XName 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." + }, "api/Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html": { "href": "api/Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html", "title": "Class IsoCoordinateTable | HiAPI-C# 2025", "summary": "Class IsoCoordinateTable Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll Coordinate table for NC controller. The dictionary key is a G-code coordinate name (e.g. “G54”, “G59.2”); the dictionary value is machine coordinate offset. public class IsoCoordinateTable : Dictionary, IDictionary, ICollection>, IReadOnlyDictionary, IReadOnlyCollection>, IEnumerable>, IDictionary, ICollection, IEnumerable, IDeserializationCallback, ISerializable, INcDependency, IMakeXmlSource Inheritance object Dictionary IsoCoordinateTable Implements IDictionary ICollection> IReadOnlyDictionary IReadOnlyCollection> IEnumerable> IDictionary ICollection IEnumerable IDeserializationCallback ISerializable INcDependency IMakeXmlSource Inherited Members Dictionary.Add(string, Vec3d) Dictionary.Clear() Dictionary.ContainsKey(string) Dictionary.ContainsValue(Vec3d) Dictionary.EnsureCapacity(int) Dictionary.GetAlternateLookup() Dictionary.GetEnumerator() Dictionary.OnDeserialization(object) Dictionary.Remove(string) Dictionary.Remove(string, out Vec3d) Dictionary.TrimExcess() Dictionary.TrimExcess(int) Dictionary.TryAdd(string, Vec3d) Dictionary.TryGetAlternateLookup(out Dictionary.AlternateLookup) Dictionary.TryGetValue(string, out Vec3d) Dictionary.Comparer Dictionary.Count Dictionary.Capacity Dictionary.this[string] Dictionary.Keys Dictionary.Values object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) DictionaryUtil.Retrieve(Dictionary, K, out V, bool) DictionaryUtil.GetOrCreate(IDictionary, TKey) DictionaryUtil.GetOrCreate(IDictionary, TKey, TValue) DictionaryUtil.GetOrCreate(IDictionary, TKey, Func) DictionaryUtil.TryGetValueByKeys(IDictionary, IEnumerable, out TValue) StringUtil.ToDotSplitedString(IEnumerable) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IsoCoordinateTable() Ctor. public IsoCoordinateTable() IsoCoordinateTable(XElement) Initializes a new instance of the IsoCoordinateTable class from XML. Supports both new string ID format (“G54”) and legacy integer format (54000). public IsoCoordinateTable(XElement src) Parameters src XElement The XML element containing coordinate data. Fields XName Gets the XML element name for the IsoCoordinateTable. public static string XName Field Value string Methods LegacyIntToKey(int) Converts a legacy 1000x integer ID to a G-code string key. e.g. 54000 -> “G54”, 59200 -> “G59.2”. public static string LegacyIntToKey(int id) Parameters id int Returns string MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, + "api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html": { + "href": "api/Hi.NcParsers.Dependencys.Generic.NcKinematicsDependency.html", + "title": "Class NcKinematicsDependency | HiAPI-C# 2025", + "summary": "Class NcKinematicsDependency Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll 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(). public class NcKinematicsDependency : INcDependency, IMakeXmlSource, IMachineKinematics Inheritance object NcKinematicsDependency Implements INcDependency IMakeXmlSource IMachineKinematics Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcKinematicsDependency() public NcKinematicsDependency() NcKinematicsDependency(Func) public NcKinematicsDependency(Func provider) Parameters provider Func Properties KinematicsProvider Runtime provider for the kinematics instance. Null provider or null return means kinematics is not yet available. public Func KinematicsProvider { get; set; } Property Value Func XName 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. McAbcToMat(Vec3d) Converts machine ABC coordinates to a tilt matrix. the tilt matrix is the transformation matrix from table to attacher. public Mat4d McAbcToMat(Vec3d mcAbc_rad) Parameters mcAbc_rad Vec3d The machine ABC coordinates in radians Returns Mat4d The tilt matrix McToMat(DVec3d) Converts machine coordinates to an attacher matrix. public Mat4d McToMat(DVec3d mcXyzabc) Parameters mcXyzabc DVec3d The machine coordinates Returns Mat4d The attacher matrix McToPn(DVec3d) Machine coordinate to tool attacher Pn (Point and Normal). The Pn is from table buckle to tool attacher. public DVec3d McToPn(DVec3d mcXyzabc) Parameters mcXyzabc DVec3d machine coordinate. ABC is in radian. Returns DVec3d tool attacher Pn (Point and Normal) OrientationToMcAbc(Mat4d, out Vec3d) Converts a tilt matrix to machine ABC coordinates. the tilt matrix is the transformation matrix from table to attacher. the solution only fit the orientation part of the tiltMat. public bool OrientationToMcAbc(Mat4d tiltMat, out Vec3d mcAbc_rad) Parameters tiltMat Mat4d The tilt matrix to convert mcAbc_rad Vec3d Output parameter that will contain the machine ABC coordinates in radians Returns bool Whether the conversion was successful PnToMc(DVec3d, out DVec3d) Tool attacher Pn (Point and Normal) to machine coordinate. The Pn is from table buckle to tool attacher. public bool PnToMc(DVec3d pn, out DVec3d mcXyzabc_rad) Parameters pn DVec3d tool attacher Pn (Point and Normal) mcXyzabc_rad DVec3d machine coordinate (ABC in radian) Returns bool whether conversion succeeded" + }, "api/Hi.NcParsers.Dependencys.Generic.ToolOffsetRow.html": { "href": "api/Hi.NcParsers.Dependencys.Generic.ToolOffsetRow.html", "title": "Class ToolOffsetRow | HiAPI-C# 2025", @@ -3697,12 +3532,12 @@ "api/Hi.NcParsers.Dependencys.Generic.html": { "href": "api/Hi.NcParsers.Dependencys.Generic.html", "title": "Namespace Hi.NcParsers.Dependencys.Generic | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Dependencys.Generic Classes IsoCoordinateTable Coordinate table for NC controller. The dictionary key is a G-code coordinate name (e.g. “G54”, “G59.2”); the dictionary value is machine coordinate offset. ToolOffsetRow Single row of a ToolOffsetTable. Stores geometry (ideal) and wear components for height and radius. Matches Fanuc Memory C layout where H and D share the same row. ToolOffsetTable Integer-keyed tool offset table implementing IToolOffsetConfig. Suitable for Fanuc (H/D), Heidenhain (tool number), Mazak, Okuma, and other ISO-compatible controllers. Key = offset number (Fanuc H or D number). ToolingMcConfig HiNC-specific: machine position axes move to during tool change (M06). Not a standard Fanuc parameter — in real Fanuc, tool change motion is programmed in the macro program (O9006). Each axis value: a position to move to, or NaN to stay." + "summary": "Namespace Hi.NcParsers.Dependencys.Generic Classes FallbackConfig HiNC-specific fallback dependency that provides default values for all optional configuration interfaces. Should be placed as the last element in NcDependencyList so that brand-specific parameter tables (which appear earlier) take priority via OfType().FirstOrDefault(). When a brand table (e.g., FanucParameterTable) implements the same interface, its values are used instead. This class serves as a safety net for brands that do not define certain parameters (e.g., Siemens/Heidenhain have no system parameter for G83 peck retraction — it is per-call). IsoCoordinateTable Coordinate table for NC controller. The dictionary key is a G-code coordinate name (e.g. “G54”, “G59.2”); the dictionary value is machine coordinate offset. 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(). ToolOffsetRow Single row of a ToolOffsetTable. Stores geometry (ideal) and wear components for height and radius. Matches Fanuc Memory C layout where H and D share the same row. ToolOffsetTable Integer-keyed tool offset table implementing IToolOffsetConfig. Suitable for Fanuc (H/D), Heidenhain (tool number), Mazak, Okuma, and other ISO-compatible controllers. Key = offset number (Fanuc H or D number). ToolingMcConfig HiNC-specific: machine position axes move to during tool change (M06). Not a standard Fanuc parameter — in real Fanuc, tool change motion is programmed in the macro program (O9006). Each axis value: a position to move to, or NaN to stay." }, "api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html": { "href": "api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html", "title": "Class HeidenhainParameterTable | HiAPI-C# 2025", - "summary": "Class HeidenhainParameterTable Namespace Hi.NcParsers.Dependencys.Heidenhain Assembly HiMech.dll Heidenhain TNC/iTNC machine parameter table. Stores machine parameters (MP numbers) as system and per-axis values. MP100–MP199: General machine configuration. MP400–MP499: Axis-specific parameters. public class HeidenhainParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase HeidenhainParameterTable Implements IHomeMcConfig IMachineAxisConfig INcDependency IMakeXmlSource Inherited Members ControllerParameterTableBase.SystemParams ControllerParameterTableBase.AxisParams ControllerParameterTableBase.IntAxisParams ControllerParameterTableBase.AxisParam(int) ControllerParameterTableBase.IntAxisParam(int) ControllerParameterTableBase.GetHomePosition(string) ControllerParameterTableBase.SetHomePosition(string, double) ControllerParameterTableBase.AxisNames ControllerParameterTableBase.IsRotaryAxis(string) ControllerParameterTableBase.SetAxis(string, AxisType) ControllerParameterTableBase.RemoveAxis(string) ControllerParameterTableBase.ReadXml(XElement) ControllerParameterTableBase.WriteXml(string) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainParameterTable() public HeidenhainParameterTable() HeidenhainParameterTable(XElement) public HeidenhainParameterTable(XElement src) Parameters src XElement Fields MpAxisType MP400: Axis type per axis (0=linear, 1=rotary, 2=spindle). public const int MpAxisType = 400 Field Value int MpReferencePosition MP410: Reference point position per axis. public const int MpReferencePosition = 410 Field Value int MpStrokeLimitNeg MP430: Negative stroke limit per axis. public const int MpStrokeLimitNeg = 430 Field Value int MpStrokeLimitPos MP420: Positive stroke limit per axis. public const int MpStrokeLimitPos = 420 Field Value int Properties AxisMp400 MP400: Axis type per axis. See AxisType. See AxisNames. public Dictionary AxisMp400 { get; set; } Property Value Dictionary AxisMp410 MP410: Reference point position per axis. See IHomeMcConfig. public Dictionary AxisMp410 { get; set; } Property Value Dictionary AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected override int AxisTypeParamId { get; } Property Value int Default3Axis Default 3-axis Heidenhain milling machine. public static HeidenhainParameterTable Default3Axis { get; } Property Value HeidenhainParameterTable IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected override string IdAttributeName { get; } Property Value string MaxSpindleSpeed_rpm Maximum spindle speed in RPM. Delegates to Mp100. public double MaxSpindleSpeed_rpm { get; set; } Property Value double Mp100 MP100: Maximum spindle speed (RPM). See MaxSpindleSpeed_rpm. public double Mp100 { get; set; } Property Value double Mp101 MP101: Tool axis direction (0=Z, 1=Y, 2=X). See ToolAxisDirection. public int Mp101 { get; set; } Property Value int ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected override int ReferencePositionParamId { get; } Property Value int ToolAxisDirection Tool axis direction (0=Z, 1=Y, 2=X). Delegates to Mp101. public int ToolAxisDirection { get; set; } Property Value int XName 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 override XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainParameterTable Namespace Hi.NcParsers.Dependencys.Heidenhain Assembly HiMech.dll Heidenhain TNC/iTNC machine parameter table. Stores machine parameters (MP numbers) as system and per-axis values. MP100–MP199: General machine configuration. MP400–MP499: Axis-specific parameters. public class HeidenhainParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase HeidenhainParameterTable Implements IHomeMcConfig IMachineAxisConfig IRapidFeedrateConfig INcDependency IMakeXmlSource Inherited Members ControllerParameterTableBase.GetAxisRapidRate_mmdmin(string) ControllerParameterTableBase.SystemParams ControllerParameterTableBase.AxisParams ControllerParameterTableBase.IntAxisParams ControllerParameterTableBase.AxisParam(int) ControllerParameterTableBase.IntAxisParam(int) ControllerParameterTableBase.GetHomePosition(string) ControllerParameterTableBase.SetHomePosition(string, double) ControllerParameterTableBase.AxisNames ControllerParameterTableBase.IsRotaryAxis(string) ControllerParameterTableBase.SetAxis(string, AxisType) ControllerParameterTableBase.RemoveAxis(string) ControllerParameterTableBase.ConfigureRotaryAxis(string, double, double) ControllerParameterTableBase.ReadXml(XElement) ControllerParameterTableBase.WriteXml(string) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainParameterTable() public HeidenhainParameterTable() HeidenhainParameterTable(XElement) public HeidenhainParameterTable(XElement src) Parameters src XElement Fields MpAxisType MP400: Axis type per axis (0=linear, 1=rotary, 2=spindle). public const int MpAxisType = 400 Field Value int MpMaxSpindleSpeed MP100: Maximum spindle speed (RPM). public const int MpMaxSpindleSpeed = 100 Field Value int MpRapidRate MP1010: Rapid traverse rate per axis (mm/min or deg/min). public const int MpRapidRate = 1010 Field Value int MpReferencePosition MP410: Reference point position per axis. public const int MpReferencePosition = 410 Field Value int MpStrokeLimitNeg MP430: Negative stroke limit per axis. public const int MpStrokeLimitNeg = 430 Field Value int MpStrokeLimitPos MP420: Positive stroke limit per axis. public const int MpStrokeLimitPos = 420 Field Value int MpToolAxisDirection MP101: Tool axis direction (0=Z, 1=Y, 2=X). public const int MpToolAxisDirection = 101 Field Value int Properties AxisMp1010 MP1010: Rapid traverse rate per axis (mm/min or deg/min). See IRapidFeedrateConfig. See ControllerParameterTableBase.RapidFeedrate_mmdmin. public Dictionary AxisMp1010 { get; set; } Property Value Dictionary AxisMp400 MP400: Axis type per axis. See AxisType. See AxisNames. public Dictionary AxisMp400 { get; set; } Property Value Dictionary AxisMp410 MP410: Reference point position per axis. See IHomeMcConfig. public Dictionary AxisMp410 { get; set; } Property Value Dictionary AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected override int AxisTypeParamId { get; } Property Value int Default3Axis Default 3-axis Heidenhain milling machine. public static HeidenhainParameterTable Default3Axis { get; } Property Value HeidenhainParameterTable IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected override string IdAttributeName { get; } Property Value string MaxSpindleSpeed_rpm Maximum spindle speed in RPM. Delegates to Mp100. public double MaxSpindleSpeed_rpm { get; set; } Property Value double Mp100 MP100: Maximum spindle speed (RPM). See MaxSpindleSpeed_rpm. public double Mp100 { get; set; } Property Value double Mp101 MP101: Tool axis direction (0=Z, 1=Y, 2=X). See ToolAxisDirection. public int Mp101 { get; set; } Property Value int RapidRateParamId Parameter/MD/MP number for rapid traverse rate per axis. Null if not defined for this controller brand. protected override int? RapidRateParamId { get; } Property Value int? ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected override int ReferencePositionParamId { get; } Property Value int ToolAxisDirection Tool axis direction (0=Z, 1=Y, 2=X). Delegates to Mp101. public int ToolAxisDirection { get; set; } Property Value int XName 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 override XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.Dependencys.Heidenhain.html": { "href": "api/Hi.NcParsers.Dependencys.Heidenhain.html", @@ -3714,6 +3549,11 @@ "title": "Class HeidenhainDatumTable | HiAPI-C# 2025", "summary": "Class HeidenhainDatumTable Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Heidenhain datum preset and datum shift tables. CYCL DEF 247 Q339=N reads from DatumPresetTable, CYCL DEF 7 #N reads from DatumShiftTable. Each table maps an integer ID (1–20) to a Vec3d offset. public class HeidenhainDatumTable : INcDependency, IMakeXmlSource Inheritance object HeidenhainDatumTable Implements INcDependency IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainDatumTable() public HeidenhainDatumTable() HeidenhainDatumTable(XElement) public HeidenhainDatumTable(XElement src) Parameters src XElement Properties DatumPresetTable public Dictionary DatumPresetTable { get; set; } Property Value Dictionary DatumShiftTable public Dictionary DatumShiftTable { get; set; } Property Value Dictionary XName public static string XName { get; } Property Value string Methods GetDatumPreset(int) public Vec3d GetDatumPreset(int q339) Parameters q339 int Returns Vec3d GetDatumShift(int) public Vec3d GetDatumShift(int tableId) Parameters tableId int Returns Vec3d MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. SetDatumPreset(int, Vec3d) public void SetDatumPreset(int q339, Vec3d offset) Parameters q339 int offset Vec3d SetDatumShift(int, Vec3d) public void SetDatumShift(int tableId, Vec3d offset) Parameters tableId int offset Vec3d" }, + "api/Hi.NcParsers.Dependencys.ICannedCycleConfig.html": { + "href": "api/Hi.NcParsers.Dependencys.ICannedCycleConfig.html", + "title": "Interface ICannedCycleConfig | HiAPI-C# 2025", + "summary": "Interface ICannedCycleConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Canned cycle configuration parameters. Implemented by brand-specific parameter tables (e.g., FanucParameterTable for Fanuc #4002, SyntecParameterTable for Syntec Pr4002) and by FallbackConfig as a safety net. Siemens and Heidenhain specify peck clearance per-call (CYCLE83 parameter / CYCL DEF), so their tables do not implement this interface. The FallbackConfig provides the default value in those cases. public interface ICannedCycleConfig : INcDependency, IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties PeckRetractionDistance_mm G83 peck drilling clearance distance above the previous stroke bottom before re-entering at feed (mm). double PeckRetractionDistance_mm { get; } Property Value double" + }, "api/Hi.NcParsers.Dependencys.IHomeMcConfig.html": { "href": "api/Hi.NcParsers.Dependencys.IHomeMcConfig.html", "title": "Interface IHomeMcConfig | HiAPI-C# 2025", @@ -3729,6 +3569,11 @@ "title": "Interface INcDependency | HiAPI-C# 2025", "summary": "Interface INcDependency Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll public interface INcDependency : IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)" }, + "api/Hi.NcParsers.Dependencys.IRapidFeedrateConfig.html": { + "href": "api/Hi.NcParsers.Dependencys.IRapidFeedrateConfig.html", + "title": "Interface IRapidFeedrateConfig | HiAPI-C# 2025", + "summary": "Interface IRapidFeedrateConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Provides per-axis rapid traverse feedrate for motion semantics. Implemented by ControllerParameterTableBase using brand-specific parameter numbers (e.g., Fanuc #1420, Siemens MD32000, Heidenhain MP1010). public interface IRapidFeedrateConfig : INcDependency, IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetAxisRapidRate_mmdmin(string) Gets rapid traverse feedrate for a specific axis in mm/min (or deg/min for rotary). Returns a default value if the axis is not configured. double GetAxisRapidRate_mmdmin(string axisName) Parameters axisName string Returns double" + }, "api/Hi.NcParsers.Dependencys.IToolOffsetConfig.html": { "href": "api/Hi.NcParsers.Dependencys.IToolOffsetConfig.html", "title": "Interface IToolOffsetConfig | HiAPI-C# 2025", @@ -3747,17 +3592,27 @@ "api/Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html": { "href": "api/Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html", "title": "Class SiemensMachineDataTable | HiAPI-C# 2025", - "summary": "Class SiemensMachineDataTable Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Siemens Sinumerik machine data table. Stores machine data (MD numbers) as system and per-axis parameters. MD10000–MD19999: General machine data. MD20000–MD29999: Axis-specific machine data. MD30000–MD39999: Axis-specific machine data (extended). public class SiemensMachineDataTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase SiemensMachineDataTable Implements IHomeMcConfig IMachineAxisConfig INcDependency IMakeXmlSource Inherited Members ControllerParameterTableBase.SystemParams ControllerParameterTableBase.AxisParams ControllerParameterTableBase.IntAxisParams ControllerParameterTableBase.AxisParam(int) ControllerParameterTableBase.IntAxisParam(int) ControllerParameterTableBase.GetHomePosition(string) ControllerParameterTableBase.SetHomePosition(string, double) ControllerParameterTableBase.AxisNames ControllerParameterTableBase.IsRotaryAxis(string) ControllerParameterTableBase.SetAxis(string, AxisType) ControllerParameterTableBase.RemoveAxis(string) ControllerParameterTableBase.ReadXml(XElement) ControllerParameterTableBase.WriteXml(string) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SiemensMachineDataTable() public SiemensMachineDataTable() SiemensMachineDataTable(XElement) public SiemensMachineDataTable(XElement src) Parameters src XElement Fields MdAxisType MD30300: Axis type per axis (0=linear, 1=rotary, 2=spindle). public const int MdAxisType = 30300 Field Value int MdMaxAxisVelocity MD32000: Max axis velocity per axis (mm/min or deg/min). public const int MdMaxAxisVelocity = 32000 Field Value int MdMaxSpindleSpeed MD35100: Maximum spindle speed (RPM). public const int MdMaxSpindleSpeed = 35100 Field Value int MdReferencePosition MD34010: Reference point position per axis. public const int MdReferencePosition = 34010 Field Value int MdStrokeLimitNeg MD36110: Negative stroke limit per axis. public const int MdStrokeLimitNeg = 36110 Field Value int MdStrokeLimitPos MD36100: Positive stroke limit per axis. public const int MdStrokeLimitPos = 36100 Field Value int Properties AxisMd30300 MD30300: Axis type per axis. See AxisType. See AxisNames. public Dictionary AxisMd30300 { get; set; } Property Value Dictionary AxisMd34010 MD34010: Reference point position per axis. See IHomeMcConfig. public Dictionary AxisMd34010 { get; set; } Property Value Dictionary AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected override int AxisTypeParamId { get; } Property Value int Default3Axis Default 3-axis Siemens milling machine. public static SiemensMachineDataTable Default3Axis { get; } Property Value SiemensMachineDataTable IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected override string IdAttributeName { get; } Property Value string MaxSpindleSpeed_rpm Maximum spindle speed in RPM. Delegates to Md35100. public double MaxSpindleSpeed_rpm { get; set; } Property Value double Md35100 MD35100: Maximum spindle speed (RPM). See MaxSpindleSpeed_rpm. public double Md35100 { get; set; } Property Value double ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected override int ReferencePositionParamId { get; } Property Value int XName 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 override XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class SiemensMachineDataTable Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Siemens Sinumerik machine data table. Stores machine data (MD numbers) as system and per-axis parameters. MD10000–MD19999: General machine data. MD20000–MD29999: Axis-specific machine data. MD30000–MD39999: Axis-specific machine data (extended). public class SiemensMachineDataTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase SiemensMachineDataTable Implements IHomeMcConfig IMachineAxisConfig IRapidFeedrateConfig INcDependency IMakeXmlSource Inherited Members ControllerParameterTableBase.GetAxisRapidRate_mmdmin(string) ControllerParameterTableBase.SystemParams ControllerParameterTableBase.AxisParams ControllerParameterTableBase.IntAxisParams ControllerParameterTableBase.AxisParam(int) ControllerParameterTableBase.IntAxisParam(int) ControllerParameterTableBase.GetHomePosition(string) ControllerParameterTableBase.SetHomePosition(string, double) ControllerParameterTableBase.AxisNames ControllerParameterTableBase.IsRotaryAxis(string) ControllerParameterTableBase.SetAxis(string, AxisType) ControllerParameterTableBase.RemoveAxis(string) ControllerParameterTableBase.ConfigureRotaryAxis(string, double, double) ControllerParameterTableBase.ReadXml(XElement) ControllerParameterTableBase.WriteXml(string) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SiemensMachineDataTable() public SiemensMachineDataTable() SiemensMachineDataTable(XElement) public SiemensMachineDataTable(XElement src) Parameters src XElement Fields MdAxisType MD30300: Axis type per axis (0=linear, 1=rotary, 2=spindle). public const int MdAxisType = 30300 Field Value int MdMaxAxisVelocity MD32000: Max axis velocity per axis (mm/min or deg/min). public const int MdMaxAxisVelocity = 32000 Field Value int MdMaxSpindleSpeed MD35100: Maximum spindle speed (RPM). public const int MdMaxSpindleSpeed = 35100 Field Value int MdReferencePosition MD34010: Reference point position per axis. public const int MdReferencePosition = 34010 Field Value int MdStrokeLimitNeg MD36110: Negative stroke limit per axis. public const int MdStrokeLimitNeg = 36110 Field Value int MdStrokeLimitPos MD36100: Positive stroke limit per axis. public const int MdStrokeLimitPos = 36100 Field Value int Properties AxisMd30300 MD30300: Axis type per axis. See AxisType. See AxisNames. public Dictionary AxisMd30300 { get; set; } Property Value Dictionary AxisMd32000 MD32000: Max axis velocity per axis (mm/min or deg/min). See IRapidFeedrateConfig. See ControllerParameterTableBase.RapidFeedrate_mmdmin. public Dictionary AxisMd32000 { get; set; } Property Value Dictionary AxisMd34010 MD34010: Reference point position per axis. See IHomeMcConfig. public Dictionary AxisMd34010 { get; set; } Property Value Dictionary AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected override int AxisTypeParamId { get; } Property Value int Default3Axis Default 3-axis Siemens milling machine. public static SiemensMachineDataTable Default3Axis { get; } Property Value SiemensMachineDataTable IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected override string IdAttributeName { get; } Property Value string MaxSpindleSpeed_rpm Maximum spindle speed in RPM. Delegates to Md35100. public double MaxSpindleSpeed_rpm { get; set; } Property Value double Md35100 MD35100: Maximum spindle speed (RPM). See MaxSpindleSpeed_rpm. public double Md35100 { get; set; } Property Value double RapidRateParamId Parameter/MD/MP number for rapid traverse rate per axis. Null if not defined for this controller brand. protected override int? RapidRateParamId { get; } Property Value int? ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected override int ReferencePositionParamId { get; } Property Value int XName 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 override XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.Dependencys.Siemens.html": { "href": "api/Hi.NcParsers.Dependencys.Siemens.html", "title": "Namespace Hi.NcParsers.Dependencys.Siemens | HiAPI-C# 2025", "summary": "Namespace Hi.NcParsers.Dependencys.Siemens Classes SiemensMachineDataTable Siemens Sinumerik machine data table. Stores machine data (MD numbers) as system and per-axis parameters. MD10000–MD19999: General machine data. MD20000–MD29999: Axis-specific machine data. MD30000–MD39999: Axis-specific machine data (extended). Interfaces ISiemensToolOffsetConfig Siemens (840D/Sinumerik) tool offset configuration. Offsets are addressed by (tool number T, cutting edge D number), unlike IToolOffsetConfig where a single integer selects the row. Siemens stores up to 25 data fields per cutting edge ($TC_DP1..$TC_DP25), including three independent length components (L1/L2/L3 for Z/X/Y directions), radius, and corresponding wear values." }, + "api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html": { + "href": "api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html", + "title": "Class SyntecParameterTable | HiAPI-C# 2025", + "summary": "Class SyntecParameterTable Namespace Hi.NcParsers.Dependencys.Syntec Assembly HiMech.dll Syntec controller parameter table. Stores system parameters (single value) and axis parameters (per-axis value) following Syntec Pr-prefixed parameter numbering. Syntec is largely Fanuc-compatible in parameter numbering, but some parameters differ in unit or interpretation. For example, Pr4002 (peck retraction) is stored in microns whereas Fanuc #4002 stores in mm. public class SyntecParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, ICannedCycleConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase SyntecParameterTable Implements IHomeMcConfig IMachineAxisConfig IRapidFeedrateConfig ICannedCycleConfig INcDependency IMakeXmlSource Inherited Members ControllerParameterTableBase.GetAxisRapidRate_mmdmin(string) ControllerParameterTableBase.SystemParams ControllerParameterTableBase.AxisParams ControllerParameterTableBase.IntAxisParams ControllerParameterTableBase.AxisParam(int) ControllerParameterTableBase.IntAxisParam(int) ControllerParameterTableBase.GetHomePosition(string) ControllerParameterTableBase.SetHomePosition(string, double) ControllerParameterTableBase.AxisNames ControllerParameterTableBase.IsRotaryAxis(string) ControllerParameterTableBase.SetAxis(string, AxisType) ControllerParameterTableBase.RemoveAxis(string) ControllerParameterTableBase.ConfigureRotaryAxis(string, double, double) ControllerParameterTableBase.ReadXml(XElement) ControllerParameterTableBase.WriteXml(string) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks CutterCompensationType is shared with Fanuc because both follow the same ISO cutter compensation standard. Consider relocating to the shared Hi.NcParsers.Dependencys namespace if more brands need it. Constructors SyntecParameterTable() public SyntecParameterTable() SyntecParameterTable(XElement) public SyntecParameterTable(XElement src) Parameters src XElement Fields PrAxisType Pr1006: Axis type per axis. See AxisType. public const int PrAxisType = 1006 Field Value int PrControlledAxes Pr1020: Number of controlled axes. public const int PrControlledAxes = 1020 Field Value int PrCutterCompType Pr5003: Cutter compensation startup type. See CutterCompensationType. public const int PrCutterCompType = 5003 Field Value int PrMaxSpindleSpeed Pr3741: Maximum spindle speed (RPM). public const int PrMaxSpindleSpeed = 3741 Field Value int PrPeckRetraction Pr4002: G83 peck drilling retraction distance (microns). Syntec stores this value in microns; convert ×0.001 for mm. public const int PrPeckRetraction = 4002 Field Value int PrRapidRate Pr1420: Rapid traverse rate per axis (mm/min or deg/min). public const int PrRapidRate = 1420 Field Value int PrReferencePosition Pr1240: G28 first reference position per axis. public const int PrReferencePosition = 1240 Field Value int PrStrokeLimitNeg Pr1320: Negative stroke limit per axis (mm or deg). public const int PrStrokeLimitNeg = 1320 Field Value int PrStrokeLimitPos Pr1300: Positive stroke limit per axis (mm or deg). public const int PrStrokeLimitPos = 1300 Field Value int Properties AxisPr1006 Pr1006: Axis type per axis. See AxisType. See AxisNames. See IsRotaryAxis(string). public Dictionary AxisPr1006 { get; set; } Property Value Dictionary AxisPr1240 Pr1240: G28 first reference position per axis. See IHomeMcConfig. See GetHomePosition(string). See SetHomePosition(string, double). public Dictionary AxisPr1240 { get; set; } Property Value Dictionary AxisPr1420 Pr1420: Rapid traverse rate per axis (mm/min or deg/min). See IRapidFeedrateConfig. See GetAxisRapidRate_mmdmin(string). public Dictionary AxisPr1420 { get; set; } Property Value Dictionary AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected override int AxisTypeParamId { get; } Property Value int ControlledAxisCount Number of controlled axes. Delegates to Pr1020. public int ControlledAxisCount { get; set; } Property Value int CutterCompType Cutter compensation startup type. Delegates to Pr5003. public CutterCompensationType CutterCompType { get; set; } Property Value CutterCompensationType Default3Axis Default 3-axis Syntec milling machine. public static SyntecParameterTable Default3Axis { get; } Property Value SyntecParameterTable IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected override string IdAttributeName { get; } Property Value string MaxSpindleSpeed_rpm Maximum spindle speed in RPM. Delegates to Pr3741. public double MaxSpindleSpeed_rpm { get; set; } Property Value double PeckRetractionDistance_mm G83 peck drilling clearance distance above the previous stroke bottom before re-entering at feed (mm). public double PeckRetractionDistance_mm { get; } Property Value double Remarks Syntec Pr4002 stores peck retraction distance in microns. Multiply by 0.001 to convert to mm. Pr1020 Pr1020: Number of controlled axes. See ControlledAxisCount. public int Pr1020 { get; set; } Property Value int Pr3741 Pr3741: Maximum spindle speed (RPM). See MaxSpindleSpeed_rpm. public double Pr3741 { get; set; } Property Value double Pr5003 Pr5003: Cutter compensation startup type. See CutterCompType. public CutterCompensationType Pr5003 { get; set; } Property Value CutterCompensationType RapidRateParamId Parameter/MD/MP number for rapid traverse rate per axis. Null if not defined for this controller brand. protected override int? RapidRateParamId { get; } Property Value int? ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected override int ReferencePositionParamId { get; } Property Value int XName 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 override XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + }, + "api/Hi.NcParsers.Dependencys.Syntec.html": { + "href": "api/Hi.NcParsers.Dependencys.Syntec.html", + "title": "Namespace Hi.NcParsers.Dependencys.Syntec | HiAPI-C# 2025", + "summary": "Namespace Hi.NcParsers.Dependencys.Syntec Classes SyntecParameterTable Syntec controller parameter table. Stores system parameters (single value) and axis parameters (per-axis value) following Syntec Pr-prefixed parameter numbering. Syntec is largely Fanuc-compatible in parameter numbering, but some parameters differ in unit or interpretation. For example, Pr4002 (peck retraction) is stored in microns whereas Fanuc #4002 stores in mm." + }, "api/Hi.NcParsers.Dependencys.html": { "href": "api/Hi.NcParsers.Dependencys.html", "title": "Namespace Hi.NcParsers.Dependencys | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Dependencys Classes ControllerParameterTableBase Base class for brand-specific controller parameter tables. Provides shared data structures, XML IO, and IHomeMcConfig IMachineAxisConfig implementations. Subclasses define brand-specific parameter numbers, XML attribute names, and derived convenience properties. HeidenhainDatumTable Heidenhain datum preset and datum shift tables. CYCL DEF 247 Q339=N reads from DatumPresetTable, CYCL DEF 7 #N reads from DatumShiftTable. Each table maps an integer ID (1–20) to a Vec3d offset. Interfaces IHomeMcConfig G28 first reference position (home machine coordinate) per axis. IMachineAxisConfig Machine axis configuration: which axes exist and their types. Compatible with Fanuc, Siemens, Heidenhain, Mazak, Okuma. INcDependency IToolOffsetConfig Tool offset configuration indexed by a single integer offset number. Applies to Fanuc (H/D numbers), Heidenhain (tool number), Mazak, Okuma, and other ISO-compatible controllers where one integer selects the offset row. For Siemens (840D/Sinumerik) where offsets are addressed by (tool number, cutting edge D number), see ISiemensToolOffsetConfig. IToolingMcConfig Machine position axes move to during tool change (M06). Enums AxisType Axis type: linear (translation), rotary (rotation), or spindle (speed/positioning dual mode)." + "summary": "Namespace Hi.NcParsers.Dependencys Classes ControllerParameterTableBase Base class for brand-specific controller parameter tables. Provides shared data structures, XML IO, and IHomeMcConfig IMachineAxisConfig implementations. Subclasses define brand-specific parameter numbers, XML attribute names, and derived convenience properties. HeidenhainDatumTable Heidenhain datum preset and datum shift tables. CYCL DEF 247 Q339=N reads from DatumPresetTable, CYCL DEF 7 #N reads from DatumShiftTable. Each table maps an integer ID (1–20) to a Vec3d offset. Interfaces ICannedCycleConfig Canned cycle configuration parameters. Implemented by brand-specific parameter tables (e.g., FanucParameterTable for Fanuc #4002, SyntecParameterTable for Syntec Pr4002) and by FallbackConfig as a safety net. Siemens and Heidenhain specify peck clearance per-call (CYCLE83 parameter / CYCL DEF), so their tables do not implement this interface. The FallbackConfig provides the default value in those cases. IHomeMcConfig G28 first reference position (home machine coordinate) per axis. IMachineAxisConfig Machine axis configuration: which axes exist and their types. Compatible with Fanuc, Siemens, Heidenhain, Mazak, Okuma. INcDependency IRapidFeedrateConfig Provides per-axis rapid traverse feedrate for motion semantics. Implemented by ControllerParameterTableBase using brand-specific parameter numbers (e.g., Fanuc #1420, Siemens MD32000, Heidenhain MP1010). IToolOffsetConfig Tool offset configuration indexed by a single integer offset number. Applies to Fanuc (H/D numbers), Heidenhain (tool number), Mazak, Okuma, and other ISO-compatible controllers where one integer selects the offset row. For Siemens (840D/Sinumerik) where offsets are addressed by (tool number, cutting edge D number), see ISiemensToolOffsetConfig. IToolingMcConfig Machine position axes move to during tool change (M06). Enums AxisType Axis type: linear (translation), rotary (rotation), or spindle (speed/positioning dual mode)." }, "api/Hi.NcParsers.IGetSentence.html": { "href": "api/Hi.NcParsers.IGetSentence.html", @@ -3789,6 +3644,11 @@ "title": "Class Comment | HiAPI-C# 2025", "summary": "Class Comment Namespace Hi.NcParsers.Keywords Assembly HiMech.dll public class Comment Inheritance object Comment Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ContentWithSymbol public string ContentWithSymbol { get; set; } Property Value string ContentWithoutSymbol public string ContentWithoutSymbol { get; set; } Property Value string OralContent Content without program-identible code. i.e. Content Without CsScript either Symbol. public string OralContent { get; set; } Property Value string Symbol public string Symbol { get; set; } Property Value string" }, + "api/Hi.NcParsers.Keywords.CompoundMotion.html": { + "href": "api/Hi.NcParsers.Keywords.CompoundMotion.html", + "title": "Class CompoundMotion | HiAPI-C# 2025", + "summary": "Class CompoundMotion Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for ICompoundMotionDef. public class CompoundMotion : ICompoundMotionDef Inheritance object CompoundMotion Implements ICompoundMotionDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields FeedrateKey JSON key for feedrate (mm/s) inside the Motion section of non-rapid items. Absent on rapid items whose speed is determined by machine config. public const string FeedrateKey = \"Feedrate_mmds\" Field Value string ItemsKey JSON array key for the sub-operation items within the section. Items are discriminated by Motion or Dwell key presence. public const string ItemsKey = \"Items\" Field Value string Properties Mode G-code that triggered this compound motion (e.g., “G28”, “G81”). public string Mode { get; set; } Property Value string" + }, "api/Hi.NcParsers.Keywords.CoordinateOffset.html": { "href": "api/Hi.NcParsers.Keywords.CoordinateOffset.html", "title": "Class CoordinateOffset | HiAPI-C# 2025", @@ -3799,6 +3659,11 @@ "title": "Class CsScript | HiAPI-C# 2025", "summary": "Class CsScript Namespace Hi.NcParsers.Keywords Assembly HiMech.dll public class CsScript Inheritance object CsScript Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties BeginScript The script effect before the NC block excuting. public string BeginScript { get; set; } Property Value string EndScript The script effect after the NC block excuted. public string EndScript { get; set; } Property Value string" }, + "api/Hi.NcParsers.Keywords.Dwell.html": { + "href": "api/Hi.NcParsers.Keywords.Dwell.html", + "title": "Class Dwell | HiAPI-C# 2025", + "summary": "Class Dwell Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for IDwellDef. public class Dwell : IDwellDef Inheritance object Dwell Implements IDwellDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Time Dwell time in seconds. public double Time { get; set; } Property Value double" + }, "api/Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html": { "href": "api/Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html", "title": "Class FanucKeywords | HiAPI-C# 2025", @@ -3812,17 +3677,22 @@ "api/Hi.NcParsers.Keywords.Feedrate.html": { "href": "api/Hi.NcParsers.Keywords.Feedrate.html", "title": "Class Feedrate | HiAPI-C# 2025", - "summary": "Class Feedrate Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for IFeedrateDef. public class Feedrate : IFeedrateDef Inheritance object Feedrate Implements IFeedrateDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties FeedrateValue Feedrate value (mm/min for G94, mm/rev for G95). public double FeedrateValue { get; set; } Property Value double Mode “G94” (per minute) or “G95” (per revolution). See IsoKeywords. public string Mode { get; set; } Property Value string" + "summary": "Class Feedrate Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for IFeedrateDef. public class Feedrate : IFeedrateDef Inheritance object Feedrate Implements IFeedrateDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties FeedrateValue Feedrate value (mm/min for G94, mm/rev for G95). public double FeedrateValue { get; set; } Property Value double Mode “G94” (per minute) or “G95” (per revolution). See IsoKeywords. public string Mode { get; set; } Property Value string Unit Display unit derived from Mode: “mm/min” for G94, “mm/rev” for G95. public string Unit { get; set; } Property Value string Methods GetUnit(string) Returns the display unit for a given feedrate mode. public static string GetUnit(string mode) Parameters mode string Returns string" }, "api/Hi.NcParsers.Keywords.Generic.IsoKeywords.html": { "href": "api/Hi.NcParsers.Keywords.Generic.IsoKeywords.html", "title": "Class IsoKeywords | HiAPI-C# 2025", - "summary": "Class IsoKeywords Namespace Hi.NcParsers.Keywords.Generic Assembly HiMech.dll ISO/RS274 standard G-code and M-code constants. Shared across Fanuc, Mazak, Okuma, and other ISO-compatible controllers. Brand-specific codes belong in their own keyword classes (e.g., FanucKeywords, Siemens, Heidenhain). public static class IsoKeywords Inheritance object IsoKeywords Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields G43 public const string G43 = \"G43\" Field Value string G44 public const string G44 = \"G44\" Field Value string G49 public const string G49 = \"G49\" Field Value string G52 public const string G52 = \"G52\" Field Value string G54 public const string G54 = \"G54\" Field Value string G54Series public static readonly string[] G54Series Field Value string[] G55 public const string G55 = \"G55\" Field Value string G56 public const string G56 = \"G56\" Field Value string G57 public const string G57 = \"G57\" Field Value string G58 public const string G58 = \"G58\" Field Value string G59 public const string G59 = \"G59\" Field Value string G68 public const string G68 = \"G68\" Field Value string G68p2 public const string G68p2 = \"G68.2\" Field Value string G69 public const string G69 = \"G69\" Field Value string G90 public const string G90 = \"G90\" Field Value string G91 public const string G91 = \"G91\" Field Value string G94 public const string G94 = \"G94\" Field Value string G95 public const string G95 = \"G95\" Field Value string" + "summary": "Class IsoKeywords Namespace Hi.NcParsers.Keywords.Generic Assembly HiMech.dll ISO/RS274 standard G-code and M-code constants. Shared across Fanuc, Mazak, Okuma, and other ISO-compatible controllers. Brand-specific codes belong in their own keyword classes (e.g., FanucKeywords, Siemens, Heidenhain). public static class IsoKeywords Inheritance object IsoKeywords Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields CannedCycleCodes All canned cycle codes. public static readonly string[] CannedCycleCodes Field Value string[] G00 Rapid positioning — moves all axes at maximum traverse rate to the target. public const string G00 = \"G00\" Field Value string G01 Linear interpolation — moves in a straight line at the programmed feedrate. public const string G01 = \"G01\" Field Value string G02 Circular interpolation clockwise — arc motion in the active plane at the programmed feedrate. Center defined by I/J/K offsets or R radius. public const string G02 = \"G02\" Field Value string G03 Circular interpolation counter-clockwise — arc motion in the active plane at the programmed feedrate. Center defined by I/J/K offsets or R radius. public const string G03 = \"G03\" Field Value string G28 Reference point return — moves through an intermediate point, then to the machine reference (home) position. public const string G28 = \"G28\" Field Value string G43 Tool length compensation (+) — applies positive-direction tool height offset from the offset table. public const string G43 = \"G43\" Field Value string G44 Tool length compensation (−) — applies negative-direction tool height offset from the offset table. public const string G44 = \"G44\" Field Value string G49 Tool length compensation cancel — deactivates G43/G44 tool height offset. public const string G49 = \"G49\" Field Value string G52 Local coordinate system — sets a temporary coordinate offset relative to the active work coordinate system. public const string G52 = \"G52\" Field Value string G53 Machine coordinate selection — non-modal, one-shot. Axis values specify machine coordinates directly, bypassing all work offsets. public const string G53 = \"G53\" Field Value string G53p1 Tool axis direction control — non-modal, one-shot. Positions rotary axes to align with the active tilted work plane (G68.2). Requires G68.2 active. public const string G53p1 = \"G53.1\" Field Value string G54 Work coordinate system 1 — first standard work offset (most commonly used). public const string G54 = \"G54\" Field Value string G54Series All standard work coordinate offsets: G54–G59 plus extended offsets G59.1–G59.9. public static readonly string[] G54Series Field Value string[] G55 Work coordinate system 2. public const string G55 = \"G55\" Field Value string G56 Work coordinate system 3. public const string G56 = \"G56\" Field Value string G57 Work coordinate system 4. public const string G57 = \"G57\" Field Value string G58 Work coordinate system 5. public const string G58 = \"G58\" Field Value string G59 Work coordinate system 6. public const string G59 = \"G59\" Field Value string G68 Coordinate rotation — rotates the XY program coordinate system around a center point by an angle R. public const string G68 = \"G68\" Field Value string G68p2 Tilted work plane (5-axis) — defines an inclined coordinate system via Euler angles (I/J/K) and an origin (X/Y/Z). public const string G68p2 = \"G68.2\" Field Value string G69 Coordinate rotation / tilted work plane cancel — deactivates G68 or G68.2. public const string G69 = \"G69\" Field Value string G73 High-speed peck drilling cycle — drills in increments of Q with partial retract (chip breaking). public const string G73 = \"G73\" Field Value string G74 Left-hand tapping cycle — feed to Z with CCW spindle, reverse to CW, feed retract. public const string G74 = \"G74\" Field Value string G76 Fine boring cycle — feed to Z, oriented spindle stop, tool shift Q, rapid retract, shift back. public const string G76 = \"G76\" Field Value string G80 Canned cycle cancel — deactivates G81–G89. public const string G80 = \"G80\" Field Value string G81 Drilling cycle — rapid to R, feed to Z, rapid retract. public const string G81 = \"G81\" Field Value string G82 Drilling cycle with dwell — same as G81 plus dwell P seconds at bottom. public const string G82 = \"G82\" Field Value string G83 Peck drilling cycle — drills in increments of Q with full retract to R between strokes. public const string G83 = \"G83\" Field Value string G84 Right-hand tapping cycle — feed to Z with CW spindle, reverse to CCW, feed retract. public const string G84 = \"G84\" Field Value string G85 Boring cycle — rapid to R, feed to Z, feed retract. public const string G85 = \"G85\" Field Value string G86 Boring cycle — rapid to R, feed to Z, spindle stop, rapid retract. public const string G86 = \"G86\" Field Value string G87 Back boring cycle — OSS + shift, rapid to Z, shift back, spindle on, feed up to R, OSS + shift, retract. public const string G87 = \"G87\" Field Value string G89 Boring cycle with dwell — rapid to R, feed to Z, dwell P, feed retract. public const string G89 = \"G89\" Field Value string G90 Absolute positioning — axis values specify the target position directly. public const string G90 = \"G90\" Field Value string G91 Incremental positioning — axis values specify the distance to move from the current position. public const string G91 = \"G91\" Field Value string G94 Feed per minute — feedrate F is in mm/min (or inch/min). public const string G94 = \"G94\" Field Value string G95 Feed per revolution — feedrate F is in mm/rev (or inch/rev), synchronized to spindle speed. public const string G95 = \"G95\" Field Value string G98 Canned cycle return to initial level. public const string G98 = \"G98\" Field Value string G99 Canned cycle return to R-point level. public const string G99 = \"G99\" Field Value string M03 Spindle ON clockwise — starts spindle rotation in the CW direction. public const string M03 = \"M03\" Field Value string M04 Spindle ON counter-clockwise — starts spindle rotation in the CCW direction. public const string M04 = \"M04\" Field Value string M05 Spindle stop — halts spindle rotation. public const string M05 = \"M05\" Field Value string" + }, + "api/Hi.NcParsers.Keywords.Generic.MotionForm.html": { + "href": "api/Hi.NcParsers.Keywords.Generic.MotionForm.html", + "title": "Class MotionForm | HiAPI-C# 2025", + "summary": "Class MotionForm Namespace Hi.NcParsers.Keywords.Generic Assembly HiMech.dll Motion interpolation form constants used in Form. Each form corresponds to a specialized INcSemantic that resolves the motion into IAct sequences. public static class MotionForm Inheritance object MotionForm Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields McArc Circular interpolation (arc/helix) in program coordinates, transformed to machine coordinates via ActMcXyzSpiralContour. Resolved by McArcMotionSemantic. public const string McArc = \"McArc\" Field Value string McLinear Linear interpolation in machine coordinates. McLinearMotionSemantic discriminates XYZ-only vs XYZABC by checking for rotary axis values in MachineCoordinate. public const string McLinear = \"McLinear\" Field Value string" }, "api/Hi.NcParsers.Keywords.Generic.html": { "href": "api/Hi.NcParsers.Keywords.Generic.html", "title": "Namespace Hi.NcParsers.Keywords.Generic | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Keywords.Generic Classes IsoKeywords ISO/RS274 standard G-code and M-code constants. Shared across Fanuc, Mazak, Okuma, and other ISO-compatible controllers. Brand-specific codes belong in their own keyword classes (e.g., FanucKeywords, Siemens, Heidenhain)." + "summary": "Namespace Hi.NcParsers.Keywords.Generic Classes IsoKeywords ISO/RS274 standard G-code and M-code constants. Shared across Fanuc, Mazak, Okuma, and other ISO-compatible controllers. Brand-specific codes belong in their own keyword classes (e.g., FanucKeywords, Siemens, Heidenhain). MotionForm Motion interpolation form constants used in Form. Each form corresponds to a specialized INcSemantic that resolves the motion into IAct sequences." }, "api/Hi.NcParsers.Keywords.Heidenhain.ICyclDef.html": { "href": "api/Hi.NcParsers.Keywords.Heidenhain.ICyclDef.html", @@ -3834,10 +3704,25 @@ "title": "Namespace Hi.NcParsers.Keywords.Heidenhain | HiAPI-C# 2025", "summary": "Namespace Hi.NcParsers.Keywords.Heidenhain Interfaces ICyclDef" }, + "api/Hi.NcParsers.Keywords.IArcMotionDef.html": { + "href": "api/Hi.NcParsers.Keywords.IArcMotionDef.html", + "title": "Interface IArcMotionDef | HiAPI-C# 2025", + "summary": "Interface IArcMotionDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Arc motion data written by CircularMotionSyntax. Stored under the Motion JSON section alongside IMotionDef properties. public interface IArcMotionDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"Motion\": { \"Mode\": \"G02\", \"Form\": \"McArc\", \"ArcCenter\": { \"X\": 10.0, \"Y\": 5.0, \"Z\": 0.0 }, \"PlaneNormalDir\": 2, \"IsCcw\": false, \"AdditionalCircleNum\": 0 } Properties AdditionalCircleNum Number of additional full circles (for helix with L parameter). int AdditionalCircleNum { get; } Property Value int ArcCenter Arc center in program coordinates (absolute). object ArcCenter { get; } Property Value object IsCcw True for G03 (CCW), false for G02 (CW). bool IsCcw { get; } Property Value bool PlaneNormalDir Perpendicular axis direction (0=X, 1=Y, 2=Z). G17→2, G18→1, G19→0. int PlaneNormalDir { get; } Property Value int" + }, + "api/Hi.NcParsers.Keywords.ICompoundMotionDef.html": { + "href": "api/Hi.NcParsers.Keywords.ICompoundMotionDef.html", + "title": "Interface ICompoundMotionDef | HiAPI-C# 2025", + "summary": "Interface ICompoundMotionDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Compound motion section definition for commands that produce multiple sub-operations (G28, G53.1, G81, G82, etc.). Contains a ItemsKey array resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil. Item types (discriminated by key presence): Motion — rapid/feed linear motion (IMotionDef + IMachineCoordinateDef) Dwell — pause (Time in seconds) SpindleControl — spindle direction change (Direction) SpindleOrientation — oriented spindle stop (OSS) (ISpindleOrientationDef.Angle_rad) public interface ICompoundMotionDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Mode G-code that triggered this compound motion (e.g., “G28”, “G81”). string Mode { get; set; } Property Value string" + }, + "api/Hi.NcParsers.Keywords.IDwellDef.html": { + "href": "api/Hi.NcParsers.Keywords.IDwellDef.html", + "title": "Interface IDwellDef | HiAPI-C# 2025", + "summary": "Interface IDwellDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Dwell/pause section definition for use inside Sequence items. Resolved by Semantics.SequenceUtil into ActDelay. public interface IDwellDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples { \"Dwell\": { \"Time\": 0.5 } } Properties Time Dwell time in seconds. double Time { get; set; } Property Value double" + }, "api/Hi.NcParsers.Keywords.IFeedrateDef.html": { "href": "api/Hi.NcParsers.Keywords.IFeedrateDef.html", "title": "Interface IFeedrateDef | HiAPI-C# 2025", - "summary": "Interface IFeedrateDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Feedrate state written by FeedrateSyntax. Property names are used as JSON keys via nameof. ISO standard: F command + G94 (per minute) / G95 (per revolution). Supported by all major CNC brands. public interface IFeedrateDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"Feedrate\": { \"FeedrateValue\": 300.0, \"Mode\": \"G94\" } Properties FeedrateValue Feedrate value (mm/min for G94, mm/rev for G95). double FeedrateValue { get; set; } Property Value double Mode “G94” (per minute) or “G95” (per revolution). See IsoKeywords. string Mode { get; set; } Property Value string" + "summary": "Interface IFeedrateDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Feedrate state written by FeedrateSyntax. Property names are used as JSON keys via nameof. ISO standard: F command + G94 (per minute) / G95 (per revolution). Supported by all major CNC brands. public interface IFeedrateDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"Feedrate\": { \"FeedrateValue\": 300.0, \"Mode\": \"G94\", \"Unit\": \"mm/min\" } Properties FeedrateValue Feedrate value (mm/min for G94, mm/rev for G95). double FeedrateValue { get; set; } Property Value double Mode “G94” (per minute) or “G95” (per revolution). See IsoKeywords. string Mode { get; set; } Property Value string Unit Display unit derived from Mode: “mm/min” for G94, “mm/rev” for G95. string Unit { get; set; } Property Value string" }, "api/Hi.NcParsers.Keywords.IFlagsDef.html": { "href": "api/Hi.NcParsers.Keywords.IFlagsDef.html", @@ -3849,6 +3734,11 @@ "title": "Interface IMachineCoordinateDef | HiAPI-C# 2025", "summary": "Interface IMachineCoordinateDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll public interface IMachineCoordinateDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties MachineCoordinate JsonArray MachineCoordinate { get; set; } Property Value JsonArray" }, + "api/Hi.NcParsers.Keywords.IMotionDef.html": { + "href": "api/Hi.NcParsers.Keywords.IMotionDef.html", + "title": "Interface IMotionDef | HiAPI-C# 2025", + "summary": "Interface IMotionDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Motion state written by LogicSyntaxs.MotionSyntax. Property names are used as JSON keys via nameof. ISO standard: G00 (rapid) / G01 (linear feed) are Group 01 modal codes. public interface IMotionDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"Motion\": { \"Mode\": \"G01\", \"Form\": \"McLinear\", \"IsRapid\": false } Properties Form Interpolation form. See MotionForm. string Form { get; set; } Property Value string IsRapid True for rapid traverse; false (default) for programmed feedrate. bool IsRapid { get; set; } Property Value bool Mode G-code that triggered this motion (e.g., “G00”, “G01”). Optional for inner motions within compound commands (e.g., canned cycles). string Mode { get; set; } Property Value string" + }, "api/Hi.NcParsers.Keywords.IParsingDef.html": { "href": "api/Hi.NcParsers.Keywords.IParsingDef.html", "title": "Interface IParsingDef | HiAPI-C# 2025", @@ -3857,17 +3747,27 @@ "api/Hi.NcParsers.Keywords.IPositioningModeDef.html": { "href": "api/Hi.NcParsers.Keywords.IPositioningModeDef.html", "title": "Interface IPositioningModeDef | HiAPI-C# 2025", - "summary": "Interface IPositioningModeDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll JsonObject key for positioning mode (G90 absolute / G91 incremental). Written by PositioningModeSyntax, consumed by ProgramXyzSyntax. public interface IPositioningModeDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties PositioningMode string PositioningMode { get; set; } Property Value string" + "summary": "Interface IPositioningModeDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll JsonObject key for positioning mode (G90 absolute / G91 incremental). Written by PositioningModeSyntax, consumed by IncrementalResolveSyntax and canned cycle syntaxes. public interface IPositioningModeDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties PositioningMode string PositioningMode { get; set; } Property Value string" }, "api/Hi.NcParsers.Keywords.IProgramXyzDef.html": { "href": "api/Hi.NcParsers.Keywords.IProgramXyzDef.html", "title": "Interface IProgramXyzDef | HiAPI-C# 2025", "summary": "Interface IProgramXyzDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll public interface IProgramXyzDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ProgramXyz JsonObject ProgramXyz { get; set; } Property Value JsonObject" }, + "api/Hi.NcParsers.Keywords.ISpindleControlDef.html": { + "href": "api/Hi.NcParsers.Keywords.ISpindleControlDef.html", + "title": "Interface ISpindleControlDef | HiAPI-C# 2025", + "summary": "Interface ISpindleControlDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Spindle control item for use inside ItemsKey arrays. Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActSpindleDirection. public interface ISpindleControlDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples { \"SpindleControl\": { \"Direction\": \"STOP\" } } Properties Direction Target spindle direction (STOP, CW, CCW). SpindleDirection Direction { get; set; } Property Value SpindleDirection" + }, + "api/Hi.NcParsers.Keywords.ISpindleOrientationDef.html": { + "href": "api/Hi.NcParsers.Keywords.ISpindleOrientationDef.html", + "title": "Interface ISpindleOrientationDef | HiAPI-C# 2025", + "summary": "Interface ISpindleOrientationDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Oriented spindle stop item for use inside ItemsKey arrays. Commands the spindle to stop at a specific angular position (OSS). Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActSpindleOrientation. public interface ISpindleOrientationDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples { \"SpindleOrientation\": { \"Angle_deg\": 0.0 } } Properties Angle_deg Target spindle stop angle in degrees. double Angle_deg { get; set; } Property Value double" + }, "api/Hi.NcParsers.Keywords.ISpindleSpeedDef.html": { "href": "api/Hi.NcParsers.Keywords.ISpindleSpeedDef.html", "title": "Interface ISpindleSpeedDef | HiAPI-C# 2025", - "summary": "Interface ISpindleSpeedDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Spindle speed state written by SpindleSpeedSyntax. Property names are used as JSON keys via nameof. ISO standard: S command. Supported by all major CNC brands. public interface ISpindleSpeedDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"SpindleSpeed\": { \"SpindleSpeed_rpm\": 3000.0 } Properties SpindleSpeed_rpm Spindle speed in RPM. double SpindleSpeed_rpm { get; set; } Property Value double" + "summary": "Interface ISpindleSpeedDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Spindle speed and direction state written by SpindleSpeedSyntax. Property names are used as JSON keys via nameof. ISO: S command for speed, M03/M04/M05 for direction. Heidenhain: M3/M4/M5. Siemens: M3/M4/M5 or SPOS. Direction is stored as the conventional SpindleDirection enum name (CW/CCW/STOP), not as brand-specific M-codes. public interface ISpindleSpeedDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"SpindleSpeed\": { \"SpindleSpeed_rpm\": 3000.0, \"Direction\": \"CW\" } Properties Direction Spindle rotation direction. Stored in JSON as the enum name (e.g. “CW”, “CCW”, “STOP”). SpindleDirection Direction { get; set; } Property Value SpindleDirection SpindleSpeed_rpm Spindle speed in RPM. double SpindleSpeed_rpm { get; set; } Property Value double" }, "api/Hi.NcParsers.Keywords.ITiltTransformDef.html": { "href": "api/Hi.NcParsers.Keywords.ITiltTransformDef.html", @@ -3899,6 +3799,11 @@ "title": "Class LocalCoordinateOffset | HiAPI-C# 2025", "summary": "Class LocalCoordinateOffset Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Local coordinate offset state (G52) written by IsoLocalCoordinateOffsetSyntax. Property names are used as JSON keys via nameof. ISO: G52 X Y Z (local coordinate system shift, additive to G54 series). Cancelled by G52 X0 Y0 Z0 or M30 (program end). Siemens equivalent: TRANS / ATRANS (handled by separate syntax). public class LocalCoordinateOffset Inheritance object LocalCoordinateOffset Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"LocalCoordinateOffset\": { \"Offset_X\": 10.0, \"Offset_Y\": 20.0, \"Offset_Z\": 0.0 } Properties Offset_X X offset in mm. public double Offset_X { get; set; } Property Value double Offset_Y Y offset in mm. public double Offset_Y { get; set; } Property Value double Offset_Z Z offset in mm. public double Offset_Z { get; set; } Property Value double" }, + "api/Hi.NcParsers.Keywords.Motion.html": { + "href": "api/Hi.NcParsers.Keywords.Motion.html", + "title": "Class Motion | HiAPI-C# 2025", + "summary": "Class Motion Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for IMotionDef. public class Motion : IMotionDef Inheritance object Motion Implements IMotionDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Form Interpolation form. See MotionForm. public string Form { get; set; } Property Value string IsRapid True for rapid traverse; false (default) for programmed feedrate. public bool IsRapid { get; set; } Property Value bool Mode G-code that triggered this motion (e.g., “G00”, “G01”). Optional for inner motions within compound commands (e.g., canned cycles). public string Mode { get; set; } Property Value string" + }, "api/Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html": { "href": "api/Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html", "title": "Class SiemensKeywords | HiAPI-C# 2025", @@ -3909,10 +3814,20 @@ "title": "Namespace Hi.NcParsers.Keywords.Siemens | HiAPI-C# 2025", "summary": "Namespace Hi.NcParsers.Keywords.Siemens Classes SiemensKeywords Siemens Sinumerik G-code and M-code constants." }, + "api/Hi.NcParsers.Keywords.SpindleControl.html": { + "href": "api/Hi.NcParsers.Keywords.SpindleControl.html", + "title": "Class SpindleControl | HiAPI-C# 2025", + "summary": "Class SpindleControl Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for ISpindleControlDef. public class SpindleControl : ISpindleControlDef Inheritance object SpindleControl Implements ISpindleControlDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Direction Target spindle direction (STOP, CW, CCW). public SpindleDirection Direction { get; set; } Property Value SpindleDirection" + }, + "api/Hi.NcParsers.Keywords.SpindleOrientation.html": { + "href": "api/Hi.NcParsers.Keywords.SpindleOrientation.html", + "title": "Class SpindleOrientation | HiAPI-C# 2025", + "summary": "Class SpindleOrientation Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for ISpindleOrientationDef. public class SpindleOrientation : ISpindleOrientationDef Inheritance object SpindleOrientation Implements ISpindleOrientationDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Angle_deg Target spindle stop angle in degrees. public double Angle_deg { get; set; } Property Value double" + }, "api/Hi.NcParsers.Keywords.SpindleSpeed.html": { "href": "api/Hi.NcParsers.Keywords.SpindleSpeed.html", "title": "Class SpindleSpeed | HiAPI-C# 2025", - "summary": "Class SpindleSpeed Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for ISpindleSpeedDef. public class SpindleSpeed : ISpindleSpeedDef Inheritance object SpindleSpeed Implements ISpindleSpeedDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties SpindleSpeed_rpm Spindle speed in RPM. public double SpindleSpeed_rpm { get; set; } Property Value double" + "summary": "Class SpindleSpeed Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder + concrete implementation for ISpindleSpeedDef. public class SpindleSpeed : ISpindleSpeedDef Inheritance object SpindleSpeed Implements ISpindleSpeedDef Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Direction Spindle rotation direction. Stored in JSON as the enum name (e.g. “CW”, “CCW”, “STOP”). public SpindleDirection Direction { get; set; } Property Value SpindleDirection SpindleSpeed_rpm Spindle speed in RPM. public double SpindleSpeed_rpm { get; set; } Property Value double" }, "api/Hi.NcParsers.Keywords.TiltTransform.html": { "href": "api/Hi.NcParsers.Keywords.TiltTransform.html", @@ -3927,67 +3842,152 @@ "api/Hi.NcParsers.Keywords.html": { "href": "api/Hi.NcParsers.Keywords.html", "title": "Namespace Hi.NcParsers.Keywords | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Keywords Classes Comment CoordinateOffset Work coordinate offset state written by IsoCoordinateOffsetSyntax. Property names are used as JSON keys via nameof. Managed commands (ISO): G54, G55, G56, G57, G58, G59, G59.1–G59.9. Siemens: G54–G57 + G505–G599 (extended), G500 to cancel. Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift). CsScript Feedrate Section key holder + concrete implementation for IFeedrateDef. IndexNote LocalCoordinateOffset Local coordinate offset state (G52) written by IsoLocalCoordinateOffsetSyntax. Property names are used as JSON keys via nameof. ISO: G52 X Y Z (local coordinate system shift, additive to G54 series). Cancelled by G52 X0 Y0 Z0 or M30 (program end). Siemens equivalent: TRANS / ATRANS (handled by separate syntax). SpindleSpeed Section key holder + concrete implementation for ISpindleSpeedDef. TiltTransform Concrete class for ITiltTransformDef section serialization. ToolHeightCompensation Interfaces IFeedrateDef Feedrate state written by FeedrateSyntax. Property names are used as JSON keys via nameof. ISO standard: F command + G94 (per minute) / G95 (per revolution). Supported by all major CNC brands. IFlagsDef IMachineCoordinateDef IParsingDef IPositioningModeDef JsonObject key for positioning mode (G90 absolute / G91 incremental). Written by PositioningModeSyntax, consumed by ProgramXyzSyntax. IProgramXyzDef ISpindleSpeedDef Spindle speed state written by SpindleSpeedSyntax. Property names are used as JSON keys via nameof. ISO standard: S command. Supported by all major CNC brands. ITiltTransformDef Tilt transform state written by tilt transform syntaxes. Property names are used as JSON keys via nameof. Managed commands (ISO/Fanuc): G68 (2D rotation), G68.2 (tilted work plane), G69 (cancel). Siemens equivalent: CYCLE800, ROT/AROT (handled by separate syntax). Heidenhain equivalent: PLANE SPATIAL / PLANE RESET (handled by separate syntax). IToolHeightCompensationDef Tool height compensation state written by ToolHeightOffsetSyntax. Property names are used as JSON keys via nameof. The JSON section can be deserialized to an instance implementing this interface. Managed commands (ISO/Fanuc): G43, G44, G49. Fanuc extension: G43.4 (TCPM — parsed only in Fanuc syntax list). Siemens equivalent: TRAFOOF/TRAORI (handled by separate syntax). Heidenhain equivalent: TOOL CALL / M128/M129 (handled by separate syntax). ITransformationDef Chain of named ProgramXyz → MachineCoordinate transformation entries. Stored as a JsonArray of entries, each with “Source” and “Mat4d” keys. Each contributing INcSyntax adds or replaces its own entry by source name. ProgramXyzSyntax composes all entries in order: McXyz = ProgramXyz * T[0] * T[1] * ... * T[n]. IUnparsedTextDef" + "summary": "Namespace Hi.NcParsers.Keywords Classes Comment CompoundMotion Section key holder + concrete implementation for ICompoundMotionDef. CoordinateOffset Work coordinate offset state written by IsoCoordinateOffsetSyntax. Property names are used as JSON keys via nameof. Managed commands (ISO): G54, G55, G56, G57, G58, G59, G59.1–G59.9. Siemens: G54–G57 + G505–G599 (extended), G500 to cancel. Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift). CsScript Dwell Section key holder + concrete implementation for IDwellDef. Feedrate Section key holder + concrete implementation for IFeedrateDef. IndexNote LocalCoordinateOffset Local coordinate offset state (G52) written by IsoLocalCoordinateOffsetSyntax. Property names are used as JSON keys via nameof. ISO: G52 X Y Z (local coordinate system shift, additive to G54 series). Cancelled by G52 X0 Y0 Z0 or M30 (program end). Siemens equivalent: TRANS / ATRANS (handled by separate syntax). Motion Section key holder + concrete implementation for IMotionDef. SpindleControl Section key holder + concrete implementation for ISpindleControlDef. SpindleOrientation Section key holder + concrete implementation for ISpindleOrientationDef. SpindleSpeed Section key holder + concrete implementation for ISpindleSpeedDef. TiltTransform Concrete class for ITiltTransformDef section serialization. ToolHeightCompensation Interfaces IArcMotionDef Arc motion data written by CircularMotionSyntax. Stored under the Motion JSON section alongside IMotionDef properties. ICompoundMotionDef Compound motion section definition for commands that produce multiple sub-operations (G28, G53.1, G81, G82, etc.). Contains a ItemsKey array resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil. Item types (discriminated by key presence): Motion — rapid/feed linear motion (IMotionDef + IMachineCoordinateDef) Dwell — pause (Time in seconds) SpindleControl — spindle direction change (Direction) SpindleOrientation — oriented spindle stop (OSS) (ISpindleOrientationDef.Angle_rad) IDwellDef Dwell/pause section definition for use inside Sequence items. Resolved by Semantics.SequenceUtil into ActDelay. IFeedrateDef Feedrate state written by FeedrateSyntax. Property names are used as JSON keys via nameof. ISO standard: F command + G94 (per minute) / G95 (per revolution). Supported by all major CNC brands. IFlagsDef IMachineCoordinateDef IMotionDef Motion state written by LogicSyntaxs.MotionSyntax. Property names are used as JSON keys via nameof. ISO standard: G00 (rapid) / G01 (linear feed) are Group 01 modal codes. IParsingDef IPositioningModeDef JsonObject key for positioning mode (G90 absolute / G91 incremental). Written by PositioningModeSyntax, consumed by IncrementalResolveSyntax and canned cycle syntaxes. IProgramXyzDef ISpindleControlDef Spindle control item for use inside ItemsKey arrays. Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActSpindleDirection. ISpindleOrientationDef Oriented spindle stop item for use inside ItemsKey arrays. Commands the spindle to stop at a specific angular position (OSS). Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActSpindleOrientation. ISpindleSpeedDef Spindle speed and direction state written by SpindleSpeedSyntax. Property names are used as JSON keys via nameof. ISO: S command for speed, M03/M04/M05 for direction. Heidenhain: M3/M4/M5. Siemens: M3/M4/M5 or SPOS. Direction is stored as the conventional SpindleDirection enum name (CW/CCW/STOP), not as brand-specific M-codes. ITiltTransformDef Tilt transform state written by tilt transform syntaxes. Property names are used as JSON keys via nameof. Managed commands (ISO/Fanuc): G68 (2D rotation), G68.2 (tilted work plane), G69 (cancel). Siemens equivalent: CYCLE800, ROT/AROT (handled by separate syntax). Heidenhain equivalent: PLANE SPATIAL / PLANE RESET (handled by separate syntax). IToolHeightCompensationDef Tool height compensation state written by ToolHeightOffsetSyntax. Property names are used as JSON keys via nameof. The JSON section can be deserialized to an instance implementing this interface. Managed commands (ISO/Fanuc): G43, G44, G49. Fanuc extension: G43.4 (TCPM — parsed only in Fanuc syntax list). Siemens equivalent: TRAFOOF/TRAORI (handled by separate syntax). Heidenhain equivalent: TOOL CALL / M128/M129 (handled by separate syntax). ITransformationDef Chain of named ProgramXyz → MachineCoordinate transformation entries. Stored as a JsonArray of entries, each with “Source” and “Mat4d” keys. Each contributing INcSyntax adds or replaces its own entry by source name. ProgramXyzSyntax composes all entries in order: McXyz = ProgramXyz * T[0] * T[1] * ... * T[n]. IUnparsedTextDef" + }, + "api/Hi.NcParsers.LogicSyntaxs.BackBoringSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.BackBoringSyntax.html", + "title": "Class BackBoringSyntax | HiAPI-C# 2025", + "summary": "Class BackBoringSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G87 back boring cycle. Supports modal repetition. Cuts upward from Z to R — used to bore the back side of a workpiece. Cycle sequence: Oriented spindle stop (OSS) at current position Rapid (shifted) to init position, then down to bottom Z — tool enters pre-drilled hole without contacting bore wall Shift back to hole center at bottom Spindle start (CW) Feed upward from Z to R-point (back boring cut) Oriented spindle stop at R Tool shift, rapid retract (shifted) to final Z Shift back to center, spindle restart Q specifies the lateral shift distance (mm). Shift direction defaults to +X (OSS angle 0°). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax before this syntax runs. public class BackBoringSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object BackBoringSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BackBoringSyntax() public BackBoringSyntax() BackBoringSyntax(XElement) public BackBoringSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, + "api/Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax.html", + "title": "Class BoringCycleSyntax | HiAPI-C# 2025", + "summary": "Class BoringCycleSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G85/G86/G89 boring cycles. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z [G86 only] Spindle stop at bottom [G89 only] Dwell P seconds at bottom Retract: G85/G89 → feed retract, G86 → rapid retract [G86 only] Spindle restart (CW) after retract G85: feed to Z, feed retract — smooth bore finish. G86: feed to Z, spindle stop (implicit), rapid retract. G89: feed to Z, dwell P, feed retract — like G85 with bottom dwell. Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. public class BoringCycleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object BoringCycleSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks G86 emits SpindleControl items for spindle stop (before retract) and spindle restart CW (after retract). The restart assumes the previous direction was CW (M03), which is the typical boring setup. Constructors BoringCycleSyntax() public BoringCycleSyntax() BoringCycleSyntax(XElement) public BoringCycleSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, + "api/Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html", + "title": "Class CannedCycleResolveSyntax | HiAPI-C# 2025", + "summary": "Class CannedCycleResolveSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves canned cycle parameters for the current block: modal repetition detection, G91 incremental-to-absolute conversion, and missing-axis fallback from last known position. After this syntax, the cycle sub-section in Parsing (e.g., Parsing.G83) contains fully resolved absolute coordinates — downstream cycle syntaxes (DrillingCycleSyntax, PeckDrillingCycleSyntax) can read them directly without incremental or modal logic. For modal repetition (no cycle G-code in the current block), merges stored parameters from the previous block's CompoundMotion.Hi.NcParsers.LogicSyntaxs.CannedCycleSyntaxUtil.ResolvedParamsKey with current-block overrides from Parsing root, removes consumed keys from Parsing root, and writes the merged section to Parsing under the cycle code key. Must be placed after PositioningModeSyntax and before the individual cycle syntaxes in the chain. public class CannedCycleResolveSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CannedCycleResolveSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Default public static CannedCycleResolveSyntax Default { get; } Property Value CannedCycleResolveSyntax Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, + "api/Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html", + "title": "Class CircularMotionSyntax | HiAPI-C# 2025", + "summary": "Class CircularMotionSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes McArc motion for circular commands (ISO G02/G03). Detects motion mode from Flags, reads I/J/K center offsets or R radius from Parsing, computes arc center in program coordinates, and writes IMotionDef + IArcMotionDef data. G02/G03 mode is modal (Group 01) — persists via backward lookback. Arc parameters (I/J/K/R) are per-block and must be present in every arc block. Must be placed before LinearMotionSyntax in the syntax chain. Both share the Group 01 Hi.Motion slot; whichever writes first claims it. public class CircularMotionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CircularMotionSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CircularMotionSyntax() public CircularMotionSyntax() CircularMotionSyntax(XElement) public CircularMotionSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html", "title": "Class CoordinateOffsetUtil | HiAPI-C# 2025", "summary": "Class CoordinateOffsetUtil Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Shared utilities for all coordinate offset syntaxes (ISO, Siemens, Heidenhain). Handles section IO, backward lookback, and ProgramToMcTransform composition. public static class CoordinateOffsetUtil Inheritance object CoordinateOffsetUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields TransformSource public const string TransformSource = \"CoordinateOffset\" Field Value string Methods ComposeTranslation(JsonObject, Vec3d) public static void ComposeTranslation(JsonObject json, Vec3d offset) Parameters json JsonObject offset Vec3d FindPreviousCoordinateId(LazyLinkedListNode) public static string FindPreviousCoordinateId(LazyLinkedListNode node) Parameters node LazyLinkedListNode Returns string GetCurrentCoordinateId(JsonObject) Gets CoordinateId from the current node's existing CoordinateOffset section (e.g., set by StaticInitializer). public static string GetCurrentCoordinateId(JsonObject json) Parameters json JsonObject Returns string WriteSection(JsonObject, string, Vec3d) public static void WriteSection(JsonObject json, string coordId, Vec3d offset) Parameters json JsonObject coordId string offset Vec3d" }, + "api/Hi.NcParsers.LogicSyntaxs.DrillingCycleSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.DrillingCycleSyntax.html", + "title": "Class DrillingCycleSyntax | HiAPI-C# 2025", + "summary": "Class DrillingCycleSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G81/G82 drilling cycle (rapid retract). Supports modal repetition. G82 covers G81 — the only difference is an optional dwell (P) at the bottom. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z [G82 only] Dwell P seconds at bottom Rapid from bottom to final (G98 → init Z, G99 → R) Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. public class DrillingCycleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object DrillingCycleSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks G85 (feed retract) and G86 (spindle-stop retract) have different retract behaviors and require separate syntax classes. Constructors DrillingCycleSyntax() public DrillingCycleSyntax() DrillingCycleSyntax(XElement) public DrillingCycleSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, "api/Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html", "title": "Class FeedrateSyntax | HiAPI-C# 2025", - "summary": "Class FeedrateSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes F (feedrate) from Parsing and G94/G95 mode from Flags. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a IFeedrateDef section. public class FeedrateSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FeedrateSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FeedrateSyntax() public FeedrateSyntax() FeedrateSyntax(XElement) public FeedrateSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class FeedrateSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes F (feedrate) from Parsing and G94/G95 mode from Flags. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a IFeedrateDef section. public class FeedrateSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FeedrateSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FeedrateSyntax() public FeedrateSyntax() FeedrateSyntax(XElement) public FeedrateSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, + "api/Hi.NcParsers.LogicSyntaxs.FineBoringSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.FineBoringSyntax.html", + "title": "Class FineBoringSyntax | HiAPI-C# 2025", + "summary": "Class FineBoringSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G76 fine boring cycle. Supports modal repetition. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z Oriented spindle stop (OSS) Tool shift by Q in +X direction (clear bore wall) Rapid retract (shifted) to final Z Tool shift back to center Spindle restart (CW) Q specifies the lateral shift distance (mm) to avoid dragging the tool across the finished bore surface during retract. Shift direction defaults to +X (OSS angle 0°). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax before this syntax runs. public class FineBoringSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FineBoringSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FineBoringSyntax() public FineBoringSyntax() FineBoringSyntax(XElement) public FineBoringSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, + "api/Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html", + "title": "Class G53p1RotaryPositionSyntax | HiAPI-C# 2025", + "summary": "Class G53p1RotaryPositionSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G53.1 — non-modal, one-shot rotary axis positioning. Positions the rotary axes (A/B/C) to align the physical tool axis with the active tilted work plane defined by G68.2. XYZ position is unchanged; only rotary axes move via rapid traverse. Requires IsoG68p2TiltSyntax (or equivalent) to have written the tilt transform. Uses IMachineKinematics to solve for the target A/B/C via inverse kinematics. Must be placed after IsoG68p2TiltSyntax (needs tilt data) and before ProgramXyzSyntax in the syntax chain. Writes A/B/C into MachineCoordinate. Motion is handled by LinearMotionSyntax via modal G00/G01. public class G53p1RotaryPositionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object G53p1RotaryPositionSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks When IMachineKinematics is not available (3-axis config), G53.1 is silently consumed with no positional effect. When G68.2 is not active, a validation error is reported. Optional explicit A/B/C on the G53.1 line (post-processor hints) override the IK result. These are read from Parsing via RotaryAxisUtil.ReadAndConsumeAxis and consumed to prevent McAbcSyntax from double-processing. Constructors G53p1RotaryPositionSyntax() public G53p1RotaryPositionSyntax() G53p1RotaryPositionSyntax(XElement) public G53p1RotaryPositionSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html", "title": "Class HeidenhainCoordinateOffsetSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs.Heidenhain Assembly HiMech.dll Heidenhain-specific: resolves coordinate offset from CYCL DEF 247 (Datum Preset) and CYCL DEF 7 (Datum Shift). CYCL DEF 247 Q339=N: selects datum preset table entry N. CYCL DEF 7 #N: selects datum shift table entry N. CYCL DEF 7 X/Y/Z: applies direct XYZ shift values. For DIN/ISO compatibility (G54–G59), use IsoCoordinateOffsetSyntax in addition to this syntax in the Heidenhain syntax list. Uses replace-by-source (TransformSource) so both syntaxes can coexist without double-composing. public class HeidenhainCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainCoordinateOffsetSyntax() public HeidenhainCoordinateOffsetSyntax() HeidenhainCoordinateOffsetSyntax(XElement) public HeidenhainCoordinateOffsetSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs.Heidenhain Assembly HiMech.dll Heidenhain-specific: resolves coordinate offset from CYCL DEF 247 (Datum Preset) and CYCL DEF 7 (Datum Shift). CYCL DEF 247 Q339=N: selects datum preset table entry N. CYCL DEF 7 #N: selects datum shift table entry N. CYCL DEF 7 X/Y/Z: applies direct XYZ shift values. For DIN/ISO compatibility (G54–G59), use IsoCoordinateOffsetSyntax in addition to this syntax in the Heidenhain syntax list. Uses replace-by-source (TransformSource) so both syntaxes can coexist without double-composing. public class HeidenhainCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainCoordinateOffsetSyntax() public HeidenhainCoordinateOffsetSyntax() HeidenhainCoordinateOffsetSyntax(XElement) public HeidenhainCoordinateOffsetSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.html", "title": "Namespace Hi.NcParsers.LogicSyntaxs.Heidenhain | HiAPI-C# 2025", "summary": "Namespace Hi.NcParsers.LogicSyntaxs.Heidenhain Classes HeidenhainCoordinateOffsetSyntax Heidenhain-specific: resolves coordinate offset from CYCL DEF 247 (Datum Preset) and CYCL DEF 7 (Datum Shift). CYCL DEF 247 Q339=N: selects datum preset table entry N. CYCL DEF 7 #N: selects datum shift table entry N. CYCL DEF 7 X/Y/Z: applies direct XYZ shift values. For DIN/ISO compatibility (G54–G59), use IsoCoordinateOffsetSyntax in addition to this syntax in the Heidenhain syntax list. Uses replace-by-source (TransformSource) so both syntaxes can coexist without double-composing." }, + "api/Hi.NcParsers.LogicSyntaxs.HighSpeedPeckCycleSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.HighSpeedPeckCycleSyntax.html", + "title": "Class HighSpeedPeckCycleSyntax | HiAPI-C# 2025", + "summary": "Class HighSpeedPeckCycleSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G73 high-speed peck drilling cycle (chip breaking). Supports modal repetition. Drills in increments of depth Q, partially retracting by PeckRetractionDistance_mm between strokes (instead of fully back to R like PeckDrillingCycleSyntax). Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point For each stroke: feed Q deeper, rapid retract by d If remainder exists: feed to bottom Z, rapid retract by d Rapid to final (G98 → init Z, G99 → R) Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. public class HighSpeedPeckCycleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HighSpeedPeckCycleSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HighSpeedPeckCycleSyntax() public HighSpeedPeckCycleSyntax() HighSpeedPeckCycleSyntax(XElement) public HighSpeedPeckCycleSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, + "api/Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html", + "title": "Class IncrementalResolveSyntax | HiAPI-C# 2025", + "summary": "Class IncrementalResolveSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves G91 incremental axis values to absolute in-place within Parsing and its sub-sections. Reads PositioningMode written by PositioningModeSyntax. WorkingPathList specifies which JSON paths contain axis values that need incremental-to-absolute conversion. Default: [[\"Parsing\"], [\"Parsing\", \"G28\"]]. All matching paths are converted. Canned cycle paths (Parsing.G81, G82, G83, …) are intentionally excluded — their Z/R incremental semantics differ from normal axes (R is relative to init level, Z is relative to R-point). Resolution is handled by ResolveCycleCoordinates(JsonObject, Vec3d, double?, double?, double, double) inside each cycle syntax class, which runs before this syntax. Uses AxisNames to determine which tags are motion axes. Traces backward nodes for last known ProgramXyz to resolve incremental values. After this syntax, all axis values in the working paths are absolute — ProgramXyzSyntax can consume them without incremental logic. public class IncrementalResolveSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IncrementalResolveSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IncrementalResolveSyntax(List>) public IncrementalResolveSyntax(List> workingPathList) Parameters workingPathList List> IncrementalResolveSyntax(XElement) public IncrementalResolveSyntax(XElement src) Parameters src XElement Properties Default public static IncrementalResolveSyntax Default { get; } Property Value IncrementalResolveSyntax Name public string Name { get; } Property Value string WorkingPathList JSON paths where this syntax searches for axis values (X/Y/Z) to convert from incremental to absolute when G91 is active. Each path is a list of segments navigating nested JSON objects. All matching paths are converted. public List> WorkingPathList { get; } Property Value List> Examples [[\"Parsing\"]] → Parsing root (normal XYZ) [[\"Parsing\", \"G28\"]] → Parsing.G28 (G28 intermediate XYZ) XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, "api/Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html", "title": "Class IsoCoordinateOffsetSyntax | HiAPI-C# 2025", - "summary": "Class IsoCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO/Fanuc/Mazak/Okuma/Syntec: resolves G54–G59.9 work coordinate offset. Reads G54/G55/.../G59.9 from Flags, looks up offset Vec3d from IsoCoordinateTable dependency, composes into ProgramToMcTransform. Modal — active coordinate persists via backward lookback. Default coordinate ID is set by StaticInitializer. public class IsoCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IsoCoordinateOffsetSyntax() public IsoCoordinateOffsetSyntax() IsoCoordinateOffsetSyntax(XElement) public IsoCoordinateOffsetSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class IsoCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO/Fanuc/Mazak/Okuma/Syntec: resolves G54–G59.9 work coordinate offset. Reads G54/G55/.../G59.9 from Flags, looks up offset Vec3d from IsoCoordinateTable dependency, composes into ProgramToMcTransform. Modal — active coordinate persists via backward lookback. Default coordinate ID is set by StaticInitializer. public class IsoCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IsoCoordinateOffsetSyntax() public IsoCoordinateOffsetSyntax() IsoCoordinateOffsetSyntax(XElement) public IsoCoordinateOffsetSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html", "title": "Class IsoG68RotationSyntax | HiAPI-C# 2025", - "summary": "Class IsoG68RotationSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO/Fanuc: resolves G68 (2D coordinate rotation) and G69 (cancel). Computes a rotation Mat4d around the active plane normal and composes it into ProgramToMcTransform. No IMachineKinematics dependency needed — G68 is pure geometric rotation. Managed commands: G68, G69 (idempotent with IsoG68p2TiltSyntax). public class IsoG68RotationSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoG68RotationSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Input: Parsing.G68 → {X,Y,Z,I,J,K,R} from ParameterizedFlagSyntax. If I/J/K not specified, rotation axis is determined by active plane: G17→Z, G18→Y, G19→X. Constructors IsoG68RotationSyntax() public IsoG68RotationSyntax() IsoG68RotationSyntax(XElement) public IsoG68RotationSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class IsoG68RotationSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO/Fanuc: resolves G68 (2D coordinate rotation) and G69 (cancel). Computes a rotation Mat4d around the active plane normal and composes it into ProgramToMcTransform. No IMachineKinematics dependency needed — G68 is pure geometric rotation. Managed commands: G68, G69 (idempotent with IsoG68p2TiltSyntax). public class IsoG68RotationSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoG68RotationSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Input: Parsing.G68 → {X,Y,Z,I,J,K,R} from ParameterizedFlagSyntax. If I/J/K not specified, rotation axis is determined by active plane: G17→Z, G18→Y, G19→X. Constructors IsoG68RotationSyntax() public IsoG68RotationSyntax() IsoG68RotationSyntax(XElement) public IsoG68RotationSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html", "title": "Class IsoG68p2TiltSyntax | HiAPI-C# 2025", - "summary": "Class IsoG68p2TiltSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO/Fanuc: resolves G68.2 (tilted work plane) and G69 (cancel). Computes a tilt Mat4d from I/J/K euler angles (Fanuc ZXZ convention) and composes it into ProgramToMcTransform. Managed commands: G68.2, G69 (idempotent with IsoG68RotationSyntax). Siemens equivalent: CYCLE800 (separate syntax). Heidenhain equivalent: PLANE SPATIAL (separate syntax). public class IsoG68p2TiltSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoG68p2TiltSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks G68.2 optionally uses IMachineKinematics dependency for IK refinement. The ZXZ euler convention is Fanuc-specific: Rz(K) * Rx(J) * Rz(I) * Translate(origin). Optional A/B/C parameters are post-processor rotary axis hints. When present and IMachineKinematics is available, the tilt is computed as: kinematicRotation(postAbc) * orientationDelta * Translate(origin) where orientationDelta = kinematicRotation(ijkAbc).Inverse * ijkRotation preserves the exact IJK orientation while aligning with the post-processor's solution. Constructors IsoG68p2TiltSyntax() public IsoG68p2TiltSyntax() IsoG68p2TiltSyntax(XElement) public IsoG68p2TiltSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class IsoG68p2TiltSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO/Fanuc: resolves G68.2 (tilted work plane) and G69 (cancel). Computes a tilt Mat4d from I/J/K euler angles (Fanuc ZXZ convention) and composes it into ProgramToMcTransform. Managed commands: G68.2, G69 (idempotent with IsoG68RotationSyntax). Siemens equivalent: CYCLE800 (separate syntax). Heidenhain equivalent: PLANE SPATIAL (separate syntax). public class IsoG68p2TiltSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoG68p2TiltSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks G68.2 optionally uses IMachineKinematics dependency for IK refinement. The ZXZ euler convention is Fanuc-specific: Rz(K) * Rx(J) * Rz(I) * Translate(origin). Optional A/B/C parameters are post-processor rotary axis hints. When present and IMachineKinematics is available, the tilt is computed as: kinematicRotation(postAbc) * orientationDelta * Translate(origin) where orientationDelta = kinematicRotation(ijkAbc).Inverse * ijkRotation preserves the exact IJK orientation while aligning with the post-processor's solution. Constructors IsoG68p2TiltSyntax() public IsoG68p2TiltSyntax() IsoG68p2TiltSyntax(XElement) public IsoG68p2TiltSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html", "title": "Class IsoLocalCoordinateOffsetSyntax | HiAPI-C# 2025", - "summary": "Class IsoLocalCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO G52: Local coordinate system offset (additive to G54-series). G52 X10 Y20 Z5 → sets local offset. G52 X0 Y0 Z0 → cancels (resets to zero). M30 (program end) → also cancels. Reads Parsing.G52 (from G52Syntax), writes LocalCoordinateOffset section, and adds a \"LocalCoordinateOffset\" entry to the transformation chain. Modal — persists via backward lookback until changed or cancelled. public class IsoLocalCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoLocalCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IsoLocalCoordinateOffsetSyntax() public IsoLocalCoordinateOffsetSyntax() IsoLocalCoordinateOffsetSyntax(XElement) public IsoLocalCoordinateOffsetSyntax(XElement src) Parameters src XElement Fields TransformSource public const string TransformSource = \"LocalCoordinateOffset\" Field Value string Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class IsoLocalCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO G52: Local coordinate system offset (additive to G54-series). G52 X10 Y20 Z5 → sets local offset. G52 X0 Y0 Z0 → cancels (resets to zero). M30 (program end) → also cancels. Reads Parsing.G52 (from G52Syntax), writes LocalCoordinateOffset section, and adds a \"LocalCoordinateOffset\" entry to the transformation chain. Modal — persists via backward lookback until changed or cancelled. public class IsoLocalCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoLocalCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IsoLocalCoordinateOffsetSyntax() public IsoLocalCoordinateOffsetSyntax() IsoLocalCoordinateOffsetSyntax(XElement) public IsoLocalCoordinateOffsetSyntax(XElement src) Parameters src XElement Fields TransformSource public const string TransformSource = \"LocalCoordinateOffset\" Field Value string Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, + "api/Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html", + "title": "Class LinearMotionSyntax | HiAPI-C# 2025", + "summary": "Class LinearMotionSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes McLinear motion for linear commands (ISO G00/G01, Heidenhain L/LN). Detects motion mode from Flags, writes IMotionDef section when MachineCoordinate exists. McLinearMotionSemantic discriminates between XYZ-only and XYZABC motion by checking whether rotary axis values are present in MachineCoordinate. Modal — persists across blocks via backward node lookback. Must be placed after McAbcSyntax in the syntax chain. public class LinearMotionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object LinearMotionSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors LinearMotionSyntax() public LinearMotionSyntax() LinearMotionSyntax(XElement) public LinearMotionSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, + "api/Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html", + "title": "Class MachineCoordSelectSyntax | HiAPI-C# 2025", + "summary": "Class MachineCoordSelectSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Handles G53 (machine coordinate selection) — non-modal, one-shot. The axis values (X/Y/Z) in the block are interpreted as machine coordinates, bypassing all work offsets, local coordinates, tool height compensation, and coordinate rotations. If G91 (incremental) is active, G53 is ignored per ISO standard. Must be placed before ProgramXyzSyntax in the syntax chain. When G53 is active, this syntax consumes X/Y/Z from Parsing and writes MachineCoordinate directly, preventing ProgramXyzSyntax from processing them as program coordinates. public class MachineCoordSelectSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object MachineCoordSelectSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples G53 with full axes (G54 offset = 100,50,-200): Input: G53 G00 X0. Y0. Z0. Output: MachineCoordinate = (0, 0, 0) ProgramXyz = (-100, -50, 200) [mc * inverse(transform)] G53 with partial axes (only Z specified): Input: G53 Z0. Output: MachineCoordinate = (prevMcX, prevMcY, 0) ProgramXyz derived from MC * inverse(transform) Constructors MachineCoordSelectSyntax() public MachineCoordSelectSyntax() MachineCoordSelectSyntax(XElement) public MachineCoordSelectSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html", "title": "Class McAbcCyclicPathSyntax | HiAPI-C# 2025", - "summary": "Class McAbcCyclicPathSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolve modular rotary axes to the shortest cyclic path relative to the previous node. Uses IsModularRotary(string) to determine which axes within MachineCoordinate need cyclic resolution. Falls back to hardcoded A/B/C if no IMachineAxisConfig is available. Must be placed after ProgramXyzSyntax in NcSyntaxList. public class McAbcCyclicPathSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McAbcCyclicPathSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors McAbcCyclicPathSyntax() public McAbcCyclicPathSyntax() McAbcCyclicPathSyntax(XElement) public McAbcCyclicPathSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class McAbcCyclicPathSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolve modular rotary axes to the shortest cyclic path relative to the previous node. Uses IsModularRotary(string) to determine which axes within MachineCoordinate need cyclic resolution. Falls back to hardcoded A/B/C if no IMachineAxisConfig is available. Must be placed after ProgramXyzSyntax in NcSyntaxList. public class McAbcCyclicPathSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McAbcCyclicPathSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors McAbcCyclicPathSyntax() public McAbcCyclicPathSyntax() McAbcCyclicPathSyntax(XElement) public McAbcCyclicPathSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, + "api/Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html", + "title": "Class McAbcSyntax | HiAPI-C# 2025", + "summary": "Class McAbcSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes rotary axis values (A/B/C) into MachineCoordinate from Parsing. Only active when IMachineAxisConfig declares rotary axes. Works for both 3+2-axis (no IMachineKinematics) and simultaneous 5-axis configurations. When MachineCoordinate does not exist (e.g., rotary-only blocks like G00 A30. with no X/Y/Z), the section is created with XYZ filled from lookback. Missing rotary axes are filled from previous MachineCoordinate lookback, unless the current section already has the value (e.g., from HomeMcInitializer). Values are stored in degrees (matching McAbcCyclicPathSyntax). Must be placed after McXyzSyntax and before McAbcCyclicPathSyntax and LinearMotionSyntax in the syntax chain. public class McAbcSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McAbcSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, + "api/Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html", + "title": "Class McXyzSyntax | HiAPI-C# 2025", + "summary": "Class McXyzSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Derives MachineCoordinate from ProgramXyz by applying the composed ProgramToMcTransform. Processes two stages: Root ProgramXyz → root MachineCoordinate CompoundMotion.ItemsKey[*] — derives MachineCoordinate from ProgramXyz for items that have ProgramXyz but no MachineCoordinate Must be placed after syntaxes that write ProgramXyz (e.g., ReferenceReturnSyntax) and before syntaxes that read MachineCoordinate (e.g., LinearMotionSyntax). public class McXyzSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McXyzSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, + "api/Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax.html", + "title": "Class PeckDrillingCycleSyntax | HiAPI-C# 2025", + "summary": "Class PeckDrillingCycleSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G83 peck drilling cycle. Supports modal repetition. Drills in increments of depth Q, fully retracting to R between strokes. Cycle sequence (per stroke): Rapid to init position (target XY, previous Z) Rapid from init to R-point For each stroke: rapid to clearance above previous depth, feed Q deeper, rapid back to R If remainder exists: feed to bottom Z, rapid to R Rapid from R/bottom to final (G98 → init Z, G99 → R) Retraction distance is read from ICannedCycleConfig (Fanuc #4002 / Syntec Pr4002, or Generic.FallbackConfig fallback). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. public class PeckDrillingCycleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object PeckDrillingCycleSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks G73 (high-speed peck) retracts only a small distance instead of fully back to R — see HighSpeedPeckCycleSyntax. Constructors PeckDrillingCycleSyntax() public PeckDrillingCycleSyntax() PeckDrillingCycleSyntax(XElement) public PeckDrillingCycleSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.LogicSyntaxs.PositioningModeSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.PositioningModeSyntax.html", "title": "Class PositioningModeSyntax | HiAPI-C# 2025", - "summary": "Class PositioningModeSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves G90/G91 incremental positioning to absolute values in-place within Parsing. Fanuc/ISO: reads G90/G91 from Flags (global modal). Heidenhain: would need a separate implementation reading I-prefix per axis. Siemens: would extend with AC()/IC() per-axis override. Uses AxisNames to determine which tags are motion axes. Traces backward nodes for modal state and last known ProgramXyz to resolve incremental values. No instance fields for state — all state lives in JsonObject. After this syntax, all axis values in Parsing are absolute — ProgramXyzSyntax can consume them without incremental logic. Must be placed after NumberedFlagSyntax and before ProgramXyzSyntax. public class PositioningModeSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object PositioningModeSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PositioningModeSyntax() public PositioningModeSyntax() PositioningModeSyntax(XElement) public PositioningModeSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class PositioningModeSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Detects G90/G91 positioning mode from Flags (or by modal lookback) and writes PositioningMode to the block JSON. Fanuc/ISO: reads G90/G91 from Flags (global modal). Heidenhain: would need a separate implementation reading I-prefix per axis. Siemens: would extend with AC()/IC() per-axis override. Does NOT convert incremental values — that is handled by IncrementalResolveSyntax which can be placed later in the syntax chain, after canned cycle syntaxes have consumed their parameters with cycle-specific G91 semantics. public class PositioningModeSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object PositioningModeSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Default public static PositioningModeSyntax Default { get; } Property Value PositioningModeSyntax Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html", "title": "Class ProgramXyzSyntax | HiAPI-C# 2025", - "summary": "Class ProgramXyzSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Compute MachineCoordinate and ProgramXyz (leaf coordinate) from syntax XYZ tags. Writes individual double components to SyntaxPiece.JsonObject under MachineCoordinate and ProgramXyz sub-objects. Must be placed after BundleSyntax since it uses cross-node lookback for last position. public class ProgramXyzSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramXyzSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The term “Program” is absolute positioning coordinate that can be end-user editing. The coordinate is usually the final node from the chain of coordinate transformation. Constructors ProgramXyzSyntax() public ProgramXyzSyntax() ProgramXyzSyntax(XElement) public ProgramXyzSyntax(XElement src) Parameters src XElement Properties AvailableJsonPathList Available Json Path List to resolve semantic. Each path is a list of segments navigating nested JSON objects. Empty list means root level. public List> AvailableJsonPathList { get; } Property Value List> Examples [[\"L\"]] → fullJsonSrc[\"L\"] [[]] → fullJsonSrc (root) [[\"L\"], []] → try fullJsonSrc[\"L\"], fallback to root Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List GetVec3d(JsonObject, string) Read Vec3d from a sub-object with X/Y/Z keys. public static Vec3d GetVec3d(JsonObject json, string sectionKey) Parameters json JsonObject sectionKey string Returns Vec3d MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class ProgramXyzSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves ProgramXyz (leaf coordinate) from syntax XYZ tags. Writes ProgramXyz sub-object to SyntaxPiece.JsonObject. Must be placed after BundleSyntax since it uses cross-node lookback for last position. McXyzSyntax (placed after this in the chain) reads ProgramXyz and writes MachineCoordinate. public class ProgramXyzSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramXyzSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The term “Program” is absolute positioning coordinate that can be end-user editing. The coordinate is usually the final node from the chain of coordinate transformation. Constructors ProgramXyzSyntax(List>) public ProgramXyzSyntax(List> workingPathList) Parameters workingPathList List> ProgramXyzSyntax(XElement) public ProgramXyzSyntax(XElement src) Parameters src XElement Properties Default public static ProgramXyzSyntax Default { get; } Property Value ProgramXyzSyntax Name public string Name { get; } Property Value string WorkingPathList JSON paths where this syntax searches for axis values (X/Y/Z). Each path is a list of segments navigating nested JSON objects. First match is used. Empty list means root level. public List> WorkingPathList { get; } Property Value List> Examples [[\"L\"]] → fullJsonSrc[\"L\"] [[]] → fullJsonSrc (root) [[\"L\"], []] → try fullJsonSrc[\"L\"], fallback to root XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, + "api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html", + "title": "Class ProgramXyzUtil | HiAPI-C# 2025", + "summary": "Class ProgramXyzUtil Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Shared utilities for ProgramXyz and MachineCoordinate lookback and resolution. Used by ProgramXyzSyntax, ReferenceReturnSyntax, and semantic resolvers that need position lookback. public static class ProgramXyzUtil Inheritance object ProgramXyzUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods FindPreviousMc(LazyLinkedListNode) Finds the most recent MachineCoordinate from previous SyntaxPiece nodes. Returns null if no previous position found. public static Vec3d FindPreviousMc(LazyLinkedListNode node) Parameters node LazyLinkedListNode Returns Vec3d FindPreviousMcXyzabc(LazyLinkedListNode) Finds the most recent MachineCoordinate XYZABC from previous nodes as DVec3d. Point = XYZ (mm), Normal = ABC (radians, converted from degrees in JSON). Returns null if no previous position found. public static DVec3d FindPreviousMcXyzabc(LazyLinkedListNode node) Parameters node LazyLinkedListNode Returns DVec3d GetLastProgramXyz(LazyLinkedListNode) Gets the last ProgramXyz using the composed transform found from previous nodes (FindPrevious pattern). Use when current node's transform is not yet available. public static Vec3d GetLastProgramXyz(LazyLinkedListNode node) Parameters node LazyLinkedListNode Returns Vec3d GetLastProgramXyz(LazyLinkedListNode, Mat4d) Gets the last ProgramXyz by finding the last MachineCoordinate from backward nodes and inverse-transforming with the given Transformation. This handles Transformation changes between blocks correctly. public static Vec3d GetLastProgramXyz(LazyLinkedListNode node, Mat4d currentTransformation) Parameters node LazyLinkedListNode currentTransformation Mat4d Returns Vec3d ReadMcXyzabc(JsonObject) Reads XYZABC from a MachineCoordinate section as DVec3d. Point = XYZ (mm), Normal = ABC (radians, converted from degrees in JSON). Missing axes are NaN. Returns null if the section doesn't exist or has no XYZ. public static DVec3d ReadMcXyzabc(JsonObject ncBlock) Parameters ncBlock JsonObject Returns DVec3d ResolveProgramXyz(JsonNode, LazyLinkedListNode, Mat4d) Resolves X/Y/Z from a JSON section into absolute program coordinates. Fills missing axes from last program position via lookback. public static Vec3d ResolveProgramXyz(JsonNode xyzSource, LazyLinkedListNode syntaxPieceNode, Mat4d transformation) Parameters xyzSource JsonNode JSON node containing X/Y/Z keys (e.g., Parsing root, Parsing.G28, Parsing.L). syntaxPieceNode LazyLinkedListNode Current node for lookback. transformation Mat4d Current composed ProgramToMc transform, needed by GetLastProgramXyz(LazyLinkedListNode, Mat4d) for inverse lookback. Returns Vec3d Absolute program coordinates, or null if no X/Y/Z found in xyzSource." + }, + "api/Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html", + "title": "Class ReferenceReturnSyntax | HiAPI-C# 2025", + "summary": "Class ReferenceReturnSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes ICompoundMotionDef section for G28 reference point return. Reads intermediate XYZ from Parsing.G28 (written by G28Syntax) and converts to machine coordinates via ResolveProgramXyz(JsonNode, LazyLinkedListNode, Mat4d). Must be placed after LinearMotionSyntax in the syntax chain. Removes the IMotionDef section written by LinearMotionSyntax (G28 handles its own motion). Overwrites root MachineCoordinate and ProgramXyz with reference position for subsequent block lookback. public class ReferenceReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ReferenceReturnSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: G28 X50 Y100 Z25 (home at origin, no transformation) \"CompoundMotion\": { \"Mode\": \"G28\", \"Items\": [ { \"ProgramXyz\": { \"X\": 50, \"Y\": 100, \"Z\": 25 }, \"Motion\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"MachineCoordinate\": { \"X\": 0, \"Y\": 0, \"Z\": 0 }, \"Motion\": { \"Form\": \"McLinear\", \"IsRapid\": true } } ] } Item 0 uses ProgramXyz (intermediate point from NC program); McXyzSyntax derives its MachineCoordinate. Item 1 uses MachineCoordinate directly (reference point from config). Root ProgramXyz is overwritten to the reference position; McXyzSyntax derives the root MachineCoordinate. Constructors ReferenceReturnSyntax() public ReferenceReturnSyntax() ReferenceReturnSyntax(XElement) public ReferenceReturnSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, + "api/Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html", + "title": "Class RotaryAxisUtil | HiAPI-C# 2025", + "summary": "Class RotaryAxisUtil Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Shared utilities for rotary axis (A/B/C) resolution. Used by G53p1RotaryPositionSyntax, McAbcSyntax, IsoG68p2TiltSyntax, and other syntaxes that read or write rotary axis values. public static class RotaryAxisUtil Inheritance object RotaryAxisUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ConsumeAxis(JsonObject, string) Consumes an optional axis value (degrees) from Parsing. Post-processor hints (e.g., A/B/C on G68.2 or G53.1 lines) are parsed by FloatTagSetupSyntax into Parsing as doubles. Returns the value and removes the key, or null if not present. public static double? ConsumeAxis(JsonObject parsing, string axisName) Parameters parsing JsonObject axisName string Returns double? GetRotaryAxes(IMachineAxisConfig) Gets the rotary axis names from the given IMachineAxisConfig. Returns an empty array if no rotary axes exist. public static string[] GetRotaryAxes(IMachineAxisConfig axisConfig) Parameters axisConfig IMachineAxisConfig Returns string[]" }, "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html", "title": "Class SiemensCoordinateOffsetSyntax | HiAPI-C# 2025", - "summary": "Class SiemensCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs.Siemens Assembly HiMech.dll Siemens Sinumerik: resolves work coordinate offset from G54–G57 (ISO-compatible), G505–G599 (extended Siemens), and G500 (cancel — machine coordinate mode). Reads from Flags, looks up IsoCoordinateTable dependency, composes into ProgramToMcTransform. public class SiemensCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SiemensCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SiemensCoordinateOffsetSyntax() public SiemensCoordinateOffsetSyntax() SiemensCoordinateOffsetSyntax(XElement) public SiemensCoordinateOffsetSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class SiemensCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs.Siemens Assembly HiMech.dll Siemens Sinumerik: resolves work coordinate offset from G54–G57 (ISO-compatible), G505–G599 (extended Siemens), and G500 (cancel — machine coordinate mode). Reads from Flags, looks up IsoCoordinateTable dependency, composes into ProgramToMcTransform. public class SiemensCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SiemensCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SiemensCoordinateOffsetSyntax() public SiemensCoordinateOffsetSyntax() SiemensCoordinateOffsetSyntax(XElement) public SiemensCoordinateOffsetSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.LogicSyntaxs.Siemens.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.html", @@ -3997,7 +3997,12 @@ "api/Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html", "title": "Class SpindleSpeedSyntax | HiAPI-C# 2025", - "summary": "Class SpindleSpeedSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes S (spindle speed) from Parsing. Modal — persists across blocks via backward node lookback. Writes resolved state to a ISpindleSpeedDef section. public class SpindleSpeedSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SpindleSpeedSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SpindleSpeedSyntax() public SpindleSpeedSyntax() SpindleSpeedSyntax(XElement) public SpindleSpeedSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class SpindleSpeedSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes S (spindle speed) and M03/M04/M05 (spindle direction) from Parsing. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a ISpindleSpeedDef section. Direction is converted from ISO M-codes to the conventional SpindleDirection enum at this layer. public class SpindleSpeedSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SpindleSpeedSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SpindleSpeedSyntax() public SpindleSpeedSyntax() SpindleSpeedSyntax(XElement) public SpindleSpeedSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." + }, + "api/Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html", + "title": "Class TappingCycleSyntax | HiAPI-C# 2025", + "summary": "Class TappingCycleSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G84 (right-hand) / G74 (left-hand) tapping cycles. Supports modal repetition. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z Spindle reverse at bottom Feed retract to final Z (G98 → init Z, G99 → R) Spindle restore to forward direction G84: forward = CW (M03), reverse = CCW (M04). G74: forward = CCW (M04), reverse = CW (M03). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. public class TappingCycleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TappingCycleSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TappingCycleSyntax() public TappingCycleSyntax() TappingCycleSyntax(XElement) public TappingCycleSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html", @@ -4007,27 +4012,47 @@ "api/Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html", "title": "Class ToolHeightOffsetSyntax | HiAPI-C# 2025", - "summary": "Class ToolHeightOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves tool height offset ID to the effective offset value (mm) and composes the offset as a translation into the accumulated ProgramToMcTransform matrix. Reads parsed G43/G43.4/G44/G49 flags and H numbers from upstream parsing syntaxes, looks up the offset value from IToolOffsetConfig dependency, writes the resolved state to a IToolHeightCompensationDef section for debuggability, and composes ProgramToMcTransform.Trans += toolOrientation * height_mm. The tool orientation direction is read from a \"ToolOrientation\" key in JSON (written by a prior syntax, e.g., ToolOrientationSyntax). If absent, falls back to the current ProgramToMcTransform's AxialNormal (rotated Z). If no transformation exists yet, defaults to UnitZ. public class ToolHeightOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ToolHeightOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Input data locations in JsonObject: Parsing.G43 / Parsing.G43.4 / Parsing.G44 → from ParameterizedFlagSyntax, {\"H\": \"5\"} Parsing.H → from IntegerTagSetupSyntax, standalone modal H (int) Parsing.Flags → from NumberedFlagSyntax, \"G49\" for cancellation ToolOrientation → from a prior syntax (optional, default = Transformation.AxialNormal or UnitZ) Modal state is persisted in the IToolHeightCompensationDef section (not syntax fields) and recovered from backward node traversal. Constructors ToolHeightOffsetSyntax() public ToolHeightOffsetSyntax() ToolHeightOffsetSyntax(XElement) public ToolHeightOffsetSyntax(XElement src) Parameters src XElement Fields ToolOrientationKey public const string ToolOrientationKey = \"ToolOrientation\" Field Value string TransformSource public const string TransformSource = \"ToolHeightCompensation\" Field Value string Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class ToolHeightOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves tool height offset ID to the effective offset value (mm) and composes the offset as a translation into the accumulated ProgramToMcTransform matrix. Reads parsed G43/G43.4/G44/G49 flags and H numbers from upstream parsing syntaxes, looks up the offset value from IToolOffsetConfig dependency, writes the resolved state to a IToolHeightCompensationDef section for debuggability, and composes ProgramToMcTransform.Trans += toolOrientation * height_mm. The tool orientation direction is read from a \"ToolOrientation\" key in JSON (written by a prior syntax, e.g., ToolOrientationSyntax). If absent, falls back to the current ProgramToMcTransform's AxialNormal (rotated Z). If no transformation exists yet, defaults to UnitZ. public class ToolHeightOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ToolHeightOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Input data locations in JsonObject: Parsing.G43 / Parsing.G43.4 / Parsing.G44 → from ParameterizedFlagSyntax, {\"H\": \"5\"} Parsing.H → from IntegerTagSetupSyntax, standalone modal H (int) Parsing.Flags → from NumberedFlagSyntax, \"G49\" for cancellation ToolOrientation → from a prior syntax (optional, default = Transformation.AxialNormal or UnitZ) Modal state is persisted in the IToolHeightCompensationDef section (not syntax fields) and recovered from backward node traversal. Constructors ToolHeightOffsetSyntax() public ToolHeightOffsetSyntax() ToolHeightOffsetSyntax(XElement) public ToolHeightOffsetSyntax(XElement src) Parameters src XElement Fields ToolOrientationKey public const string ToolOrientationKey = \"ToolOrientation\" Field Value string TransformSource public const string TransformSource = \"ToolHeightCompensation\" Field Value string Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.LogicSyntaxs.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.html", "title": "Namespace Hi.NcParsers.LogicSyntaxs | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.LogicSyntaxs Classes CoordinateOffsetUtil Shared utilities for all coordinate offset syntaxes (ISO, Siemens, Heidenhain). Handles section IO, backward lookback, and ProgramToMcTransform composition. FeedrateSyntax Consumes F (feedrate) from Parsing and G94/G95 mode from Flags. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a IFeedrateDef section. IsoCoordinateOffsetSyntax ISO/Fanuc/Mazak/Okuma/Syntec: resolves G54–G59.9 work coordinate offset. Reads G54/G55/.../G59.9 from Flags, looks up offset Vec3d from IsoCoordinateTable dependency, composes into ProgramToMcTransform. Modal — active coordinate persists via backward lookback. Default coordinate ID is set by StaticInitializer. IsoG68RotationSyntax ISO/Fanuc: resolves G68 (2D coordinate rotation) and G69 (cancel). Computes a rotation Mat4d around the active plane normal and composes it into ProgramToMcTransform. No IMachineKinematics dependency needed — G68 is pure geometric rotation. Managed commands: G68, G69 (idempotent with IsoG68p2TiltSyntax). IsoG68p2TiltSyntax ISO/Fanuc: resolves G68.2 (tilted work plane) and G69 (cancel). Computes a tilt Mat4d from I/J/K euler angles (Fanuc ZXZ convention) and composes it into ProgramToMcTransform. Managed commands: G68.2, G69 (idempotent with IsoG68RotationSyntax). Siemens equivalent: CYCLE800 (separate syntax). Heidenhain equivalent: PLANE SPATIAL (separate syntax). IsoLocalCoordinateOffsetSyntax ISO G52: Local coordinate system offset (additive to G54-series). G52 X10 Y20 Z5 → sets local offset. G52 X0 Y0 Z0 → cancels (resets to zero). M30 (program end) → also cancels. Reads Parsing.G52 (from G52Syntax), writes LocalCoordinateOffset section, and adds a \"LocalCoordinateOffset\" entry to the transformation chain. Modal — persists via backward lookback until changed or cancelled. McAbcCyclicPathSyntax Resolve modular rotary axes to the shortest cyclic path relative to the previous node. Uses IsModularRotary(string) to determine which axes within MachineCoordinate need cyclic resolution. Falls back to hardcoded A/B/C if no IMachineAxisConfig is available. Must be placed after ProgramXyzSyntax in NcSyntaxList. PositioningModeSyntax Resolves G90/G91 incremental positioning to absolute values in-place within Parsing. Fanuc/ISO: reads G90/G91 from Flags (global modal). Heidenhain: would need a separate implementation reading I-prefix per axis. Siemens: would extend with AC()/IC() per-axis override. Uses AxisNames to determine which tags are motion axes. Traces backward nodes for modal state and last known ProgramXyz to resolve incremental values. No instance fields for state — all state lives in JsonObject. After this syntax, all axis values in Parsing are absolute — ProgramXyzSyntax can consume them without incremental logic. Must be placed after NumberedFlagSyntax and before ProgramXyzSyntax. ProgramXyzSyntax Compute MachineCoordinate and ProgramXyz (leaf coordinate) from syntax XYZ tags. Writes individual double components to SyntaxPiece.JsonObject under MachineCoordinate and ProgramXyz sub-objects. Must be placed after BundleSyntax since it uses cross-node lookback for last position. SpindleSpeedSyntax Consumes S (spindle speed) from Parsing. Modal — persists across blocks via backward node lookback. Writes resolved state to a ISpindleSpeedDef section. TiltTransformUtil Shared utilities for all tilt transform syntaxes (ISO, Siemens, Heidenhain). Handles section IO, backward lookback, and ProgramToMcTransform composition. ToolHeightOffsetSyntax Resolves tool height offset ID to the effective offset value (mm) and composes the offset as a translation into the accumulated ProgramToMcTransform matrix. Reads parsed G43/G43.4/G44/G49 flags and H numbers from upstream parsing syntaxes, looks up the offset value from IToolOffsetConfig dependency, writes the resolved state to a IToolHeightCompensationDef section for debuggability, and composes ProgramToMcTransform.Trans += toolOrientation * height_mm. The tool orientation direction is read from a \"ToolOrientation\" key in JSON (written by a prior syntax, e.g., ToolOrientationSyntax). If absent, falls back to the current ProgramToMcTransform's AxialNormal (rotated Z). If no transformation exists yet, defaults to UnitZ." + "summary": "Namespace Hi.NcParsers.LogicSyntaxs Classes BackBoringSyntax G87 back boring cycle. Supports modal repetition. Cuts upward from Z to R — used to bore the back side of a workpiece. Cycle sequence: Oriented spindle stop (OSS) at current position Rapid (shifted) to init position, then down to bottom Z — tool enters pre-drilled hole without contacting bore wall Shift back to hole center at bottom Spindle start (CW) Feed upward from Z to R-point (back boring cut) Oriented spindle stop at R Tool shift, rapid retract (shifted) to final Z Shift back to center, spindle restart Q specifies the lateral shift distance (mm). Shift direction defaults to +X (OSS angle 0°). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax before this syntax runs. BoringCycleSyntax G85/G86/G89 boring cycles. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z [G86 only] Spindle stop at bottom [G89 only] Dwell P seconds at bottom Retract: G85/G89 → feed retract, G86 → rapid retract [G86 only] Spindle restart (CW) after retract G85: feed to Z, feed retract — smooth bore finish. G86: feed to Z, spindle stop (implicit), rapid retract. G89: feed to Z, dwell P, feed retract — like G85 with bottom dwell. Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. CannedCycleResolveSyntax Resolves canned cycle parameters for the current block: modal repetition detection, G91 incremental-to-absolute conversion, and missing-axis fallback from last known position. After this syntax, the cycle sub-section in Parsing (e.g., Parsing.G83) contains fully resolved absolute coordinates — downstream cycle syntaxes (DrillingCycleSyntax, PeckDrillingCycleSyntax) can read them directly without incremental or modal logic. For modal repetition (no cycle G-code in the current block), merges stored parameters from the previous block's CompoundMotion.Hi.NcParsers.LogicSyntaxs.CannedCycleSyntaxUtil.ResolvedParamsKey with current-block overrides from Parsing root, removes consumed keys from Parsing root, and writes the merged section to Parsing under the cycle code key. Must be placed after PositioningModeSyntax and before the individual cycle syntaxes in the chain. CircularMotionSyntax Writes McArc motion for circular commands (ISO G02/G03). Detects motion mode from Flags, reads I/J/K center offsets or R radius from Parsing, computes arc center in program coordinates, and writes IMotionDef + IArcMotionDef data. G02/G03 mode is modal (Group 01) — persists via backward lookback. Arc parameters (I/J/K/R) are per-block and must be present in every arc block. Must be placed before LinearMotionSyntax in the syntax chain. Both share the Group 01 Hi.Motion slot; whichever writes first claims it. CoordinateOffsetUtil Shared utilities for all coordinate offset syntaxes (ISO, Siemens, Heidenhain). Handles section IO, backward lookback, and ProgramToMcTransform composition. DrillingCycleSyntax G81/G82 drilling cycle (rapid retract). Supports modal repetition. G82 covers G81 — the only difference is an optional dwell (P) at the bottom. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z [G82 only] Dwell P seconds at bottom Rapid from bottom to final (G98 → init Z, G99 → R) Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. FeedrateSyntax Consumes F (feedrate) from Parsing and G94/G95 mode from Flags. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a IFeedrateDef section. FineBoringSyntax G76 fine boring cycle. Supports modal repetition. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z Oriented spindle stop (OSS) Tool shift by Q in +X direction (clear bore wall) Rapid retract (shifted) to final Z Tool shift back to center Spindle restart (CW) Q specifies the lateral shift distance (mm) to avoid dragging the tool across the finished bore surface during retract. Shift direction defaults to +X (OSS angle 0°). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax before this syntax runs. G53p1RotaryPositionSyntax G53.1 — non-modal, one-shot rotary axis positioning. Positions the rotary axes (A/B/C) to align the physical tool axis with the active tilted work plane defined by G68.2. XYZ position is unchanged; only rotary axes move via rapid traverse. Requires IsoG68p2TiltSyntax (or equivalent) to have written the tilt transform. Uses IMachineKinematics to solve for the target A/B/C via inverse kinematics. Must be placed after IsoG68p2TiltSyntax (needs tilt data) and before ProgramXyzSyntax in the syntax chain. Writes A/B/C into MachineCoordinate. Motion is handled by LinearMotionSyntax via modal G00/G01. HighSpeedPeckCycleSyntax G73 high-speed peck drilling cycle (chip breaking). Supports modal repetition. Drills in increments of depth Q, partially retracting by PeckRetractionDistance_mm between strokes (instead of fully back to R like PeckDrillingCycleSyntax). Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point For each stroke: feed Q deeper, rapid retract by d If remainder exists: feed to bottom Z, rapid retract by d Rapid to final (G98 → init Z, G99 → R) Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. IncrementalResolveSyntax Resolves G91 incremental axis values to absolute in-place within Parsing and its sub-sections. Reads PositioningMode written by PositioningModeSyntax. WorkingPathList specifies which JSON paths contain axis values that need incremental-to-absolute conversion. Default: [[\"Parsing\"], [\"Parsing\", \"G28\"]]. All matching paths are converted. Canned cycle paths (Parsing.G81, G82, G83, …) are intentionally excluded — their Z/R incremental semantics differ from normal axes (R is relative to init level, Z is relative to R-point). Resolution is handled by ResolveCycleCoordinates(JsonObject, Vec3d, double?, double?, double, double) inside each cycle syntax class, which runs before this syntax. Uses AxisNames to determine which tags are motion axes. Traces backward nodes for last known ProgramXyz to resolve incremental values. After this syntax, all axis values in the working paths are absolute — ProgramXyzSyntax can consume them without incremental logic. IsoCoordinateOffsetSyntax ISO/Fanuc/Mazak/Okuma/Syntec: resolves G54–G59.9 work coordinate offset. Reads G54/G55/.../G59.9 from Flags, looks up offset Vec3d from IsoCoordinateTable dependency, composes into ProgramToMcTransform. Modal — active coordinate persists via backward lookback. Default coordinate ID is set by StaticInitializer. IsoG68RotationSyntax ISO/Fanuc: resolves G68 (2D coordinate rotation) and G69 (cancel). Computes a rotation Mat4d around the active plane normal and composes it into ProgramToMcTransform. No IMachineKinematics dependency needed — G68 is pure geometric rotation. Managed commands: G68, G69 (idempotent with IsoG68p2TiltSyntax). IsoG68p2TiltSyntax ISO/Fanuc: resolves G68.2 (tilted work plane) and G69 (cancel). Computes a tilt Mat4d from I/J/K euler angles (Fanuc ZXZ convention) and composes it into ProgramToMcTransform. Managed commands: G68.2, G69 (idempotent with IsoG68RotationSyntax). Siemens equivalent: CYCLE800 (separate syntax). Heidenhain equivalent: PLANE SPATIAL (separate syntax). IsoLocalCoordinateOffsetSyntax ISO G52: Local coordinate system offset (additive to G54-series). G52 X10 Y20 Z5 → sets local offset. G52 X0 Y0 Z0 → cancels (resets to zero). M30 (program end) → also cancels. Reads Parsing.G52 (from G52Syntax), writes LocalCoordinateOffset section, and adds a \"LocalCoordinateOffset\" entry to the transformation chain. Modal — persists via backward lookback until changed or cancelled. LinearMotionSyntax Writes McLinear motion for linear commands (ISO G00/G01, Heidenhain L/LN). Detects motion mode from Flags, writes IMotionDef section when MachineCoordinate exists. McLinearMotionSemantic discriminates between XYZ-only and XYZABC motion by checking whether rotary axis values are present in MachineCoordinate. Modal — persists across blocks via backward node lookback. Must be placed after McAbcSyntax in the syntax chain. MachineCoordSelectSyntax Handles G53 (machine coordinate selection) — non-modal, one-shot. The axis values (X/Y/Z) in the block are interpreted as machine coordinates, bypassing all work offsets, local coordinates, tool height compensation, and coordinate rotations. If G91 (incremental) is active, G53 is ignored per ISO standard. Must be placed before ProgramXyzSyntax in the syntax chain. When G53 is active, this syntax consumes X/Y/Z from Parsing and writes MachineCoordinate directly, preventing ProgramXyzSyntax from processing them as program coordinates. McAbcCyclicPathSyntax Resolve modular rotary axes to the shortest cyclic path relative to the previous node. Uses IsModularRotary(string) to determine which axes within MachineCoordinate need cyclic resolution. Falls back to hardcoded A/B/C if no IMachineAxisConfig is available. Must be placed after ProgramXyzSyntax in NcSyntaxList. McAbcSyntax Writes rotary axis values (A/B/C) into MachineCoordinate from Parsing. Only active when IMachineAxisConfig declares rotary axes. Works for both 3+2-axis (no IMachineKinematics) and simultaneous 5-axis configurations. When MachineCoordinate does not exist (e.g., rotary-only blocks like G00 A30. with no X/Y/Z), the section is created with XYZ filled from lookback. Missing rotary axes are filled from previous MachineCoordinate lookback, unless the current section already has the value (e.g., from HomeMcInitializer). Values are stored in degrees (matching McAbcCyclicPathSyntax). Must be placed after McXyzSyntax and before McAbcCyclicPathSyntax and LinearMotionSyntax in the syntax chain. McXyzSyntax Derives MachineCoordinate from ProgramXyz by applying the composed ProgramToMcTransform. Processes two stages: Root ProgramXyz → root MachineCoordinate CompoundMotion.ItemsKey[*] — derives MachineCoordinate from ProgramXyz for items that have ProgramXyz but no MachineCoordinate Must be placed after syntaxes that write ProgramXyz (e.g., ReferenceReturnSyntax) and before syntaxes that read MachineCoordinate (e.g., LinearMotionSyntax). PeckDrillingCycleSyntax G83 peck drilling cycle. Supports modal repetition. Drills in increments of depth Q, fully retracting to R between strokes. Cycle sequence (per stroke): Rapid to init position (target XY, previous Z) Rapid from init to R-point For each stroke: rapid to clearance above previous depth, feed Q deeper, rapid back to R If remainder exists: feed to bottom Z, rapid to R Rapid from R/bottom to final (G98 → init Z, G99 → R) Retraction distance is read from ICannedCycleConfig (Fanuc #4002 / Syntec Pr4002, or Generic.FallbackConfig fallback). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. PositioningModeSyntax Detects G90/G91 positioning mode from Flags (or by modal lookback) and writes PositioningMode to the block JSON. Fanuc/ISO: reads G90/G91 from Flags (global modal). Heidenhain: would need a separate implementation reading I-prefix per axis. Siemens: would extend with AC()/IC() per-axis override. Does NOT convert incremental values — that is handled by IncrementalResolveSyntax which can be placed later in the syntax chain, after canned cycle syntaxes have consumed their parameters with cycle-specific G91 semantics. ProgramXyzSyntax Resolves ProgramXyz (leaf coordinate) from syntax XYZ tags. Writes ProgramXyz sub-object to SyntaxPiece.JsonObject. Must be placed after BundleSyntax since it uses cross-node lookback for last position. McXyzSyntax (placed after this in the chain) reads ProgramXyz and writes MachineCoordinate. ProgramXyzUtil Shared utilities for ProgramXyz and MachineCoordinate lookback and resolution. Used by ProgramXyzSyntax, ReferenceReturnSyntax, and semantic resolvers that need position lookback. ReferenceReturnSyntax Writes ICompoundMotionDef section for G28 reference point return. Reads intermediate XYZ from Parsing.G28 (written by G28Syntax) and converts to machine coordinates via ResolveProgramXyz(JsonNode, LazyLinkedListNode, Mat4d). Must be placed after LinearMotionSyntax in the syntax chain. Removes the IMotionDef section written by LinearMotionSyntax (G28 handles its own motion). Overwrites root MachineCoordinate and ProgramXyz with reference position for subsequent block lookback. RotaryAxisUtil Shared utilities for rotary axis (A/B/C) resolution. Used by G53p1RotaryPositionSyntax, McAbcSyntax, IsoG68p2TiltSyntax, and other syntaxes that read or write rotary axis values. SpindleSpeedSyntax Consumes S (spindle speed) and M03/M04/M05 (spindle direction) from Parsing. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a ISpindleSpeedDef section. Direction is converted from ISO M-codes to the conventional SpindleDirection enum at this layer. TappingCycleSyntax G84 (right-hand) / G74 (left-hand) tapping cycles. Supports modal repetition. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z Spindle reverse at bottom Feed retract to final Z (G98 → init Z, G99 → R) Spindle restore to forward direction G84: forward = CW (M03), reverse = CCW (M04). G74: forward = CCW (M04), reverse = CW (M03). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. TiltTransformUtil Shared utilities for all tilt transform syntaxes (ISO, Siemens, Heidenhain). Handles section IO, backward lookback, and ProgramToMcTransform composition. ToolHeightOffsetSyntax Resolves tool height offset ID to the effective offset value (mm) and composes the offset as a translation into the accumulated ProgramToMcTransform matrix. Reads parsed G43/G43.4/G44/G49 flags and H numbers from upstream parsing syntaxes, looks up the offset value from IToolOffsetConfig dependency, writes the resolved state to a IToolHeightCompensationDef section for debuggability, and composes ProgramToMcTransform.Trans += toolOrientation * height_mm. The tool orientation direction is read from a \"ToolOrientation\" key in JSON (written by a prior syntax, e.g., ToolOrientationSyntax). If absent, falls back to the current ProgramToMcTransform's AxialNormal (rotated Z). If no transformation exists yet, defaults to UnitZ." + }, + "api/Hi.NcParsers.NcDiagnostic.html": { + "href": "api/Hi.NcParsers.NcDiagnostic.html", + "title": "Class NcDiagnostic | HiAPI-C# 2025", + "summary": "Class NcDiagnostic Namespace Hi.NcParsers Assembly HiMech.dll A structured diagnostic from the SoftNcRunner pipeline, designed for IProgress consumption. Id is composed as {Primary}-{Secondary}--{Abbrev} (e.g., Cycle-Peck--BadPeckQ, Syntax-Build--Exception). For irregular cases that don't fit the pattern, use a custom string. public class NcDiagnostic Inheritance object NcDiagnostic Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcDiagnostic(NcDiagnosticSeverity, NcDiagnosticCategory, string, string, object, Sentence) public NcDiagnostic(NcDiagnosticSeverity severity, NcDiagnosticCategory category, string id, string text, object detail = null, Sentence sentence = null) Parameters severity NcDiagnosticSeverity category NcDiagnosticCategory id string text string detail object sentence Sentence Properties Category Diagnostic category. public NcDiagnosticCategory Category { get; } Property Value NcDiagnosticCategory Detail Optional detail data or exception. Null if not applicable. public object Detail { get; } Property Value object Id Structured diagnostic ID for filtering and suppression. Normally {Primary}-{Secondary}–{Serial:000}. public string Id { get; } Property Value string Sentence The NC source block that triggered this diagnostic. Null for pipeline-level messages (e.g., lifecycle start/done). public Sentence Sentence { get; } Property Value Sentence Severity Importance level. public NcDiagnosticSeverity Severity { get; } Property Value NcDiagnosticSeverity Text End-user friendly message text. public string Text { get; } Property Value string Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + }, + "api/Hi.NcParsers.NcDiagnosticCategory.html": { + "href": "api/Hi.NcParsers.NcDiagnosticCategory.html", + "title": "Enum NcDiagnosticCategory | HiAPI-C# 2025", + "summary": "Enum NcDiagnosticCategory Namespace Hi.NcParsers Assembly HiMech.dll Diagnostic category of an NC diagnostic. System + Error → exception/bug, unconsidered case Unsupported + Warning → known unsupported, likely harmless Unsupported + Error → known unsupported, likely matters Validation + Warning → manufacturing/physics may be unfeasible Validation + Error → manufacturing/physics is unfeasible Configuration + Warning → dependency/config missing, using fallback Configuration + Error → dependency/config missing, cannot proceed public enum NcDiagnosticCategory Extension Methods InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MaskUtil.GetMaskedValue(T, T, bool) MaskUtil.SetMask(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Configuration = 3 End-user XML configuration issue: missing or misconfigured INcDependency (e.g., coordinate table, tool offset table, machine axis config, rapid feedrate config). System = 0 Pipeline infrastructure, lifecycle, internal exceptions. Unsupported = 1 Recognized but unimplemented G-code or feature. Validation = 2 Manufacturing/physics feasibility check." + }, + "api/Hi.NcParsers.NcDiagnosticProgress.html": { + "href": "api/Hi.NcParsers.NcDiagnosticProgress.html", + "title": "Class NcDiagnosticProgress | HiAPI-C# 2025", + "summary": "Class NcDiagnosticProgress Namespace Hi.NcParsers Assembly HiMech.dll public class NcDiagnosticProgress : IProgress Inheritance object NcDiagnosticProgress Implements IProgress Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcDiagnosticProgress(IProgress) public NcDiagnosticProgress(IProgress sessionProgress) Parameters sessionProgress IProgress Methods ConfigurationError(Sentence, string, string, object) public void ConfigurationError(Sentence sentence, string id, string text, object detail = null) Parameters sentence Sentence id string text string detail object ConfigurationError(string, string, object) public void ConfigurationError(string id, string text, object detail = null) Parameters id string text string detail object ConfigurationWarning(Sentence, string, string, object) public void ConfigurationWarning(Sentence sentence, string id, string text, object detail = null) Parameters sentence Sentence id string text string detail object ConfigurationWarning(string, string, object) public void ConfigurationWarning(string id, string text, object detail = null) Parameters id string text string detail object Report(NcDiagnostic) Reports a progress update. public void Report(NcDiagnostic value) Parameters value NcDiagnostic The value of the updated progress. SystemError(Sentence, string, string, object) public void SystemError(Sentence sentence, string id, string text, object detail = null) Parameters sentence Sentence id string text string detail object SystemError(string, string, object) public void SystemError(string id, string text, object detail = null) Parameters id string text string detail object SystemMessage(string, string) public void SystemMessage(string id, string text) Parameters id string text string UnsupportedError(Sentence, string, string, object) public void UnsupportedError(Sentence sentence, string id, string text, object detail = null) Parameters sentence Sentence id string text string detail object UnsupportedError(string, string, object) public void UnsupportedError(string id, string text, object detail = null) Parameters id string text string detail object UnsupportedWarning(Sentence, string, string, object) public void UnsupportedWarning(Sentence sentence, string id, string text, object detail = null) Parameters sentence Sentence id string text string detail object UnsupportedWarning(string, string, object) public void UnsupportedWarning(string id, string text, object detail = null) Parameters id string text string detail object ValidationError(Sentence, string, string, object) public void ValidationError(Sentence sentence, string id, string text, object detail = null) Parameters sentence Sentence id string text string detail object ValidationError(string, string, object) public void ValidationError(string id, string text, object detail = null) Parameters id string text string detail object ValidationWarning(Sentence, string, string, object) public void ValidationWarning(Sentence sentence, string id, string text, object detail = null) Parameters sentence Sentence id string text string detail object ValidationWarning(string, string, object) public void ValidationWarning(string id, string text, object detail = null) Parameters id string text string detail object" + }, + "api/Hi.NcParsers.NcDiagnosticSeverity.html": { + "href": "api/Hi.NcParsers.NcDiagnosticSeverity.html", + "title": "Enum NcDiagnosticSeverity | HiAPI-C# 2025", + "summary": "Enum NcDiagnosticSeverity Namespace Hi.NcParsers Assembly HiMech.dll Importance level of an NC diagnostic. Combined with NcDiagnosticCategory to form the full diagnostic meaning (e.g., Unsupported + Warning). public enum NcDiagnosticSeverity Extension Methods InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MaskUtil.GetMaskedValue(T, T, bool) MaskUtil.SetMask(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Error = 3 Definite issue — result may be incorrect. Message = 0 Informational progress or status. Success = 1 Completed successfully. Warning = 2 Potential issue — processing continues." }, "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.HeadPercentCommentSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.HeadPercentCommentSyntax.html", "title": "Class HeadPercentCommentSyntax | HiAPI-C# 2025", - "summary": "Class HeadPercentCommentSyntax Namespace Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs Assembly HiMech.dll public class HeadPercentCommentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeadPercentCommentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeadPercentCommentSyntax() public HeadPercentCommentSyntax() HeadPercentCommentSyntax(XElement) public HeadPercentCommentSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeadPercentCommentSyntax Namespace Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs Assembly HiMech.dll public class HeadPercentCommentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeadPercentCommentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeadPercentCommentSyntax() public HeadPercentCommentSyntax() HeadPercentCommentSyntax(XElement) public HeadPercentCommentSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html", "title": "Class QuoteCommentSyntax | HiAPI-C# 2025", - "summary": "Class QuoteCommentSyntax Namespace Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs Assembly HiMech.dll public class QuoteCommentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object QuoteCommentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors QuoteCommentSyntax() public QuoteCommentSyntax() QuoteCommentSyntax(XElement) public QuoteCommentSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class QuoteCommentSyntax Namespace Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs Assembly HiMech.dll public class QuoteCommentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object QuoteCommentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors QuoteCommentSyntax() public QuoteCommentSyntax() QuoteCommentSyntax(XElement) public QuoteCommentSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html", "title": "Class TailCommentSyntax | HiAPI-C# 2025", - "summary": "Class TailCommentSyntax Namespace Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs Assembly HiMech.dll public class TailCommentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TailCommentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TailCommentSyntax(string) public TailCommentSyntax(string tailSymbol) Parameters tailSymbol string TailCommentSyntax(XElement) public TailCommentSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string TailSymbol public string TailSymbol { get; set; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class TailCommentSyntax Namespace Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs Assembly HiMech.dll public class TailCommentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TailCommentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TailCommentSyntax(string) public TailCommentSyntax(string tailSymbol) Parameters tailSymbol string TailCommentSyntax(XElement) public TailCommentSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string TailSymbol public string TailSymbol { get; set; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html", @@ -4037,32 +4062,32 @@ "api/Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html", "title": "Class CsScriptSyntax | HiAPI-C# 2025", - "summary": "Class CsScriptSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll public class CsScriptSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CsScriptSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsScriptSyntax() public CsScriptSyntax() CsScriptSyntax(XElement) public CsScriptSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class CsScriptSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll public class CsScriptSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CsScriptSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsScriptSyntax() public CsScriptSyntax() CsScriptSyntax(XElement) public CsScriptSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html", "title": "Class FlagSyntax | HiAPI-C# 2025", - "summary": "Class FlagSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Syntax of fully Match flag. public class FlagSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FlagSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The term Flag generally not accomanys with variable value. The term Tag generally accomanys with variable value. Constructors FlagSyntax(IEnumerable, IEnumerable) public FlagSyntax(IEnumerable categoryPath, IEnumerable flags) Parameters categoryPath IEnumerable flags IEnumerable FlagSyntax(XElement) public FlagSyntax(XElement src) Parameters src XElement Properties CategoryPath public List CategoryPath { get; set; } Property Value List FlagList public List FlagList { get; set; } Property Value List Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class FlagSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Syntax of fully Match flag. public class FlagSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FlagSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The term Flag generally not accomanys with variable value. The term Tag generally accomanys with variable value. Constructors FlagSyntax(IEnumerable, IEnumerable) public FlagSyntax(IEnumerable categoryPath, IEnumerable flags) Parameters categoryPath IEnumerable flags IEnumerable FlagSyntax(XElement) public FlagSyntax(XElement src) Parameters src XElement Properties CategoryPath public List CategoryPath { get; set; } Property Value List FlagList public List FlagList { get; set; } Property Value List Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, - "api/Hi.NcParsers.ParsingSyntaxs.FloatTagSetupSyntax.html": { - "href": "api/Hi.NcParsers.ParsingSyntaxs.FloatTagSetupSyntax.html", - "title": "Class FloatTagSetupSyntax | HiAPI-C# 2025", - "summary": "Class FloatTagSetupSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll TagSetupSyntax that parses numeric literal values to double. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. public class FloatTagSetupSyntax : TagSetupSyntax, ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TagSetupSyntax FloatTagSetupSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members TagSetupSyntax.MakeXmlSource(string, string, bool) TagSetupSyntax.VariableTag TagSetupSyntax.CategoryPath TagSetupSyntax.TagList TagSetupSyntax.Name TagSetupSyntax.Build(LazyLinkedListNode, List) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FloatTagSetupSyntax(IEnumerable, IEnumerable, string) public FloatTagSetupSyntax(IEnumerable categoryPath, IEnumerable tags, string variableTag) Parameters categoryPath IEnumerable tags IEnumerable variableTag string FloatTagSetupSyntax(XElement) public FloatTagSetupSyntax(XElement src) Parameters src XElement Properties XName public static string XName { get; } Property Value string Methods ToFloat(string) Parses a numeric literal to double; returns the original string for variable text. public static JsonNode ToFloat(string setup) Parameters setup string Returns JsonNode ToSetupJsonNode(string) Converts a tag setup string value to a JsonNode. Override in derived classes for typed parsing (int, double). Variable text (e.g. Q2, #1, [#1+#2]) is kept as string. protected override JsonNode ToSetupJsonNode(string setup) Parameters setup string Returns JsonNode" + "api/Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html": { + "href": "api/Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html", + "title": "Class FloatTagValueSyntax | HiAPI-C# 2025", + "summary": "Class FloatTagValueSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll TagValueSyntax that parses numeric literal values to double. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. public class FloatTagValueSyntax : TagValueSyntax, ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TagValueSyntax FloatTagValueSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members TagValueSyntax.MakeXmlSource(string, string, bool) TagValueSyntax.VariableTag TagValueSyntax.CategoryPath TagValueSyntax.TagList TagValueSyntax.Name TagValueSyntax.Build(LazyLinkedListNode, List, NcDiagnosticProgress) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FloatTagValueSyntax(IEnumerable, IEnumerable, string) public FloatTagValueSyntax(IEnumerable categoryPath, IEnumerable tags, string variableTag) Parameters categoryPath IEnumerable tags IEnumerable variableTag string FloatTagValueSyntax(XElement) public FloatTagValueSyntax(XElement src) Parameters src XElement Properties XName public static string XName { get; } Property Value string Methods ToFloat(string) Parses a numeric literal to double; returns the original string for variable text. public static JsonNode ToFloat(string setup) Parameters setup string Returns JsonNode ToValueJsonNode(string) Converts a tag setup string value to a JsonNode. Override in derived classes for typed parsing (int, double). Variable text (e.g. Q2, #1, [#1+#2]) is kept as string. protected override JsonNode ToValueJsonNode(string setup) Parameters setup string Returns JsonNode" }, "api/Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html", "title": "Class HeadIndexSyntax | HiAPI-C# 2025", - "summary": "Class HeadIndexSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll public class HeadIndexSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeadIndexSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeadIndexSyntax(string) public HeadIndexSyntax(string headSymbol) Parameters headSymbol string HeadIndexSyntax(XElement) public HeadIndexSyntax(XElement src) Parameters src XElement Properties HeadSymbol public string HeadSymbol { get; set; } Property Value string Remarks The Head Symbol can be not null empty string. NC Index from Heidenhain may have no head symbol. Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeadIndexSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll public class HeadIndexSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeadIndexSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeadIndexSyntax(string) public HeadIndexSyntax(string headSymbol) Parameters headSymbol string HeadIndexSyntax(XElement) public HeadIndexSyntax(XElement src) Parameters src XElement Properties HeadSymbol public string HeadSymbol { get; set; } Property Value string Remarks The Head Symbol can be not null empty string. NC Index from Heidenhain may have no head symbol. Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html", "title": "Class HeidenhainDatumSettingSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainDatumSettingSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs Assembly HiMech.dll Heidenhain syntax of CYCL DEF 247 DATUM SETTING . public class HeidenhainDatumSettingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainDatumSettingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainDatumSettingSyntax() public HeidenhainDatumSettingSyntax() HeidenhainDatumSettingSyntax(XElement) public HeidenhainDatumSettingSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string TagList public List TagList { get; set; } Property Value List XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainDatumSettingSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs Assembly HiMech.dll Heidenhain syntax of CYCL DEF 247 DATUM SETTING . public class HeidenhainDatumSettingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainDatumSettingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainDatumSettingSyntax() public HeidenhainDatumSettingSyntax() HeidenhainDatumSettingSyntax(XElement) public HeidenhainDatumSettingSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string TagList public List TagList { get; set; } Property Value List XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html", "title": "Class HeidenhainDatumShiftSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainDatumShiftSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs Assembly HiMech.dll Heidenhain syntax of CYCL DEF 7 DATUM SHIFT . public class HeidenhainDatumShiftSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainDatumShiftSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainDatumShiftSyntax() public HeidenhainDatumShiftSyntax() HeidenhainDatumShiftSyntax(XElement) public HeidenhainDatumShiftSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string TagList public List TagList { get; set; } Property Value List XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainDatumShiftSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs Assembly HiMech.dll Heidenhain syntax of CYCL DEF 7 DATUM SHIFT . public class HeidenhainDatumShiftSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainDatumShiftSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainDatumShiftSyntax() public HeidenhainDatumShiftSyntax() HeidenhainDatumShiftSyntax(XElement) public HeidenhainDatumShiftSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string TagList public List TagList { get; set; } Property Value List XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html", @@ -4072,187 +4097,192 @@ "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html", "title": "Class HeidenhainBlkFormSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainBlkFormSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain BLK FORM command (workpiece blank definition). public class HeidenhainBlkFormSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainBlkFormSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: BLK FORM 0.1 Z X+0 Y+0 Z-40 Output: { \"BLK FORM\": { \"Type\": \"0.1\", \"Axis\": \"Z\", \"X\": \"+0\", \"Y\": \"+0\", \"Z\": \"-40\" } } Input: BLK FORM 0.2 X+100 Y+100 Z+0 Output: { \"BLK FORM\": { \"Type\": \"0.2\", \"X\": \"+100\", \"Y\": \"+100\", \"Z\": \"+0\" } } Input: BLK FORM CYLINDER Z R50 L105 Output: { \"BLK FORM\": { \"Type\": \"CYLINDER\", \"Axis\": \"Z\", \"R\": \"50\", \"L\": \"105\" } } Constructors HeidenhainBlkFormSyntax() public HeidenhainBlkFormSyntax() HeidenhainBlkFormSyntax(XElement) public HeidenhainBlkFormSyntax(XElement src) Parameters src XElement Fields BlkFormTagList Tags for BLK FORM coordinate/dimension values. public static readonly string[] BlkFormTagList Field Value string[] Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainBlkFormSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain BLK FORM command (workpiece blank definition). public class HeidenhainBlkFormSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainBlkFormSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: BLK FORM 0.1 Z X+0 Y+0 Z-40 Output: { \"BLK FORM\": { \"Type\": \"0.1\", \"Axis\": \"Z\", \"X\": \"+0\", \"Y\": \"+0\", \"Z\": \"-40\" } } Input: BLK FORM 0.2 X+100 Y+100 Z+0 Output: { \"BLK FORM\": { \"Type\": \"0.2\", \"X\": \"+100\", \"Y\": \"+100\", \"Z\": \"+0\" } } Input: BLK FORM CYLINDER Z R50 L105 Output: { \"BLK FORM\": { \"Type\": \"CYLINDER\", \"Axis\": \"Z\", \"R\": \"50\", \"L\": \"105\" } } Constructors HeidenhainBlkFormSyntax() public HeidenhainBlkFormSyntax() HeidenhainBlkFormSyntax(XElement) public HeidenhainBlkFormSyntax(XElement src) Parameters src XElement Fields BlkFormTagList Tags for BLK FORM coordinate/dimension values. public static readonly string[] BlkFormTagList Field Value string[] Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html", "title": "Class HeidenhainCallSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainCallSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain CALL commands (CALL PGM and CALL LBL). public class HeidenhainCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainCallSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: CALL PGM SubProg Output: { \"CALL\": { \"Target\": \"PGM\", \"Name\": \"SubProg\" } } Input: CALL LBL 5 Output: { \"CALL\": { \"Target\": \"LBL\", \"Name\": \"5\" } } Input: CALL LBL MyLabel REP 3 Output: { \"CALL\": { \"Target\": \"LBL\", \"Name\": \"MyLabel\", \"REP\": \"3\" } } Constructors HeidenhainCallSyntax() public HeidenhainCallSyntax() HeidenhainCallSyntax(XElement) public HeidenhainCallSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainCallSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain CALL commands (CALL PGM and CALL LBL). public class HeidenhainCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainCallSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: CALL PGM SubProg Output: { \"CALL\": { \"Target\": \"PGM\", \"Name\": \"SubProg\" } } Input: CALL LBL 5 Output: { \"CALL\": { \"Target\": \"LBL\", \"Name\": \"5\" } } Input: CALL LBL MyLabel REP 3 Output: { \"CALL\": { \"Target\": \"LBL\", \"Name\": \"MyLabel\", \"REP\": \"3\" } } Constructors HeidenhainCallSyntax() public HeidenhainCallSyntax() HeidenhainCallSyntax(XElement) public HeidenhainCallSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax.html", "title": "Class HeidenhainCyclDefSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainCyclDefSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Initialization Syntax of Heidenhain fixed head block for CYCL DEF . public class HeidenhainCyclDefSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainCyclDefSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainCyclDefSyntax() public HeidenhainCyclDefSyntax() HeidenhainCyclDefSyntax(XElement) public HeidenhainCyclDefSyntax(XElement src) Parameters src XElement Fields CyclDefConst public const string CyclDefConst = \"CYCL DEF\" Field Value string Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainCyclDefSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Initialization Syntax of Heidenhain fixed head block for CYCL DEF . public class HeidenhainCyclDefSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainCyclDefSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainCyclDefSyntax() public HeidenhainCyclDefSyntax() HeidenhainCyclDefSyntax(XElement) public HeidenhainCyclDefSyntax(XElement src) Parameters src XElement Fields CyclDefConst public const string CyclDefConst = \"CYCL DEF\" Field Value string Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html", "title": "Class HeidenhainFnAssignmentSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainFnAssignmentSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Heidenhain FN variable assignment syntax. Extends TagAssignmentSyntax with FN opcode prefix. public class HeidenhainFnAssignmentSyntax : TagAssignmentSyntax, ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TagAssignmentSyntax HeidenhainFnAssignmentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members TagAssignmentSyntax.MakeXmlSource(string, string, bool) TagAssignmentSyntax.CategoryPath TagAssignmentSyntax.TagList TagAssignmentSyntax.VarPrefix TagAssignmentSyntax.TerminateWords TagAssignmentSyntax.Name TagAssignmentSyntax.ToAssignmentJsonNode(string) TagAssignmentSyntax.Build(LazyLinkedListNode, List) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks FN 0: Q5 = +60 (assignment) FN 1: Q1 = -Q2 + -5 (addition) FN 2: Q1 = Q2 - Q3 (subtraction) FN 3: Q1 = Q2 * Q3 (multiplication) FN 4: Q1 = Q2 / Q3 (division) Constructors HeidenhainFnAssignmentSyntax() public HeidenhainFnAssignmentSyntax() HeidenhainFnAssignmentSyntax(XElement) public HeidenhainFnAssignmentSyntax(XElement src) Parameters src XElement Properties XName public static string XName { get; } Property Value string Methods TryStripPrefix(ref string) Strips a brand-specific prefix from unparsedText before assignment parsing. Returns false to signal no match (skip this syntax). Base implementation does nothing (no prefix required). protected override bool TryStripPrefix(ref string unparsedText) Parameters unparsedText string Returns bool" + "summary": "Class HeidenhainFnAssignmentSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Heidenhain FN variable assignment syntax. Extends TagAssignmentSyntax with FN opcode prefix. public class HeidenhainFnAssignmentSyntax : TagAssignmentSyntax, ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TagAssignmentSyntax HeidenhainFnAssignmentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members TagAssignmentSyntax.MakeXmlSource(string, string, bool) TagAssignmentSyntax.CategoryPath TagAssignmentSyntax.TagList TagAssignmentSyntax.VarPrefix TagAssignmentSyntax.TerminateWords TagAssignmentSyntax.Name TagAssignmentSyntax.ToAssignmentJsonNode(string) TagAssignmentSyntax.Build(LazyLinkedListNode, List, NcDiagnosticProgress) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks FN 0: Q5 = +60 (assignment) FN 1: Q1 = -Q2 + -5 (addition) FN 2: Q1 = Q2 - Q3 (subtraction) FN 3: Q1 = Q2 * Q3 (multiplication) FN 4: Q1 = Q2 / Q3 (division) Constructors HeidenhainFnAssignmentSyntax() public HeidenhainFnAssignmentSyntax() HeidenhainFnAssignmentSyntax(XElement) public HeidenhainFnAssignmentSyntax(XElement src) Parameters src XElement Properties XName public static string XName { get; } Property Value string Methods TryStripPrefix(ref string) Strips a brand-specific prefix from unparsedText before assignment parsing. Returns false to signal no match (skip this syntax). Base implementation does nothing (no prefix required). protected override bool TryStripPrefix(ref string unparsedText) Parameters unparsedText string Returns bool" }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html", "title": "Class HeidenhainLSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainLSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Heidenhain linear movement (the leading L) syntax. public class HeidenhainLSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainLSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainLSyntax() public HeidenhainLSyntax() HeidenhainLSyntax(XElement) public HeidenhainLSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string TagList public List TagList { get; set; } Property Value List XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainLSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Heidenhain linear movement (the leading L) syntax. public class HeidenhainLSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainLSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainLSyntax() public HeidenhainLSyntax() HeidenhainLSyntax(XElement) public HeidenhainLSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string TagList public List TagList { get; set; } Property Value List XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html", "title": "Class HeidenhainLblSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainLblSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain LBL command (label definition). Label can be a number (1-65535) or a text name (e.g., “MyLabel”). LBL 0 is reserved for end of subprogram. public class HeidenhainLblSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainLblSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: LBL 1 Output: { \"LBL\": { \"Name\": \"1\" } } Input: LBL MyLabel Output: { \"LBL\": { \"Name\": \"MyLabel\" } } Input: LBL 0 Output: { \"LBL\": { \"Name\": \"0\" } } Constructors HeidenhainLblSyntax() public HeidenhainLblSyntax() HeidenhainLblSyntax(XElement) public HeidenhainLblSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainLblSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain LBL command (label definition). Label can be a number (1-65535) or a text name (e.g., “MyLabel”). LBL 0 is reserved for end of subprogram. public class HeidenhainLblSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainLblSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: LBL 1 Output: { \"LBL\": { \"Name\": \"1\" } } Input: LBL MyLabel Output: { \"LBL\": { \"Name\": \"MyLabel\" } } Input: LBL 0 Output: { \"LBL\": { \"Name\": \"0\" } } Constructors HeidenhainLblSyntax() public HeidenhainLblSyntax() HeidenhainLblSyntax(XElement) public HeidenhainLblSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html", "title": "Class HeidenhainPlaneSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainPlaneSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain PLANE command. Handles: PLANE RESET PLANE SPATIAL SPA SPB SPC SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY] PLANE PROJECTED PROPR PROMIN ROT SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY] public class HeidenhainPlaneSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainPlaneSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: PLANE SPATIAL SPA+30 SPB+0 SPC-10 SEQ+ COORD ROT TURN Output: { \"PLANE\": { \"Mode\": \"SPATIAL\", \"SPA\": \"+30\", \"SPB\": \"+0\", \"SPC\": \"-10\", \"SEQ\": \"+\", \"Rot\": \"COORD\", \"Positioning\": \"TURN\" } } Input: PLANE PROJECTED PROPR+30 PROMIN+0 ROT+45 SEQ- TABLE ROT MOVE Output: { \"PLANE\": { \"Mode\": \"PROJECTED\", \"PROPR\": \"+30\", \"PROMIN\": \"+0\", \"ROT\": \"+45\", \"SEQ\": \"-\", \"Rot\": \"TABLE\", \"Positioning\": \"MOVE\" } } Input: PLANE RESET Output: { \"PLANE\": { \"Mode\": \"RESET\" } } Constructors HeidenhainPlaneSyntax() public HeidenhainPlaneSyntax() HeidenhainPlaneSyntax(XElement) public HeidenhainPlaneSyntax(XElement src) Parameters src XElement Fields ProjectedTagList Projected tags for PLANE PROJECTED command. PROPR: projection angle, PROMIN: minimum angle, ROT: rotation of tilted plane. public static readonly string[] ProjectedTagList Field Value string[] SpatialTagList Spatial axis tags for PLANE SPATIAL command. public static readonly string[] SpatialTagList Field Value string[] Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainPlaneSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain PLANE command. Handles: PLANE RESET PLANE SPATIAL SPA SPB SPC SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY] PLANE PROJECTED PROPR PROMIN ROT SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY] public class HeidenhainPlaneSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainPlaneSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: PLANE SPATIAL SPA+30 SPB+0 SPC-10 SEQ+ COORD ROT TURN Output: { \"PLANE\": { \"Mode\": \"SPATIAL\", \"SPA\": \"+30\", \"SPB\": \"+0\", \"SPC\": \"-10\", \"SEQ\": \"+\", \"Rot\": \"COORD\", \"Positioning\": \"TURN\" } } Input: PLANE PROJECTED PROPR+30 PROMIN+0 ROT+45 SEQ- TABLE ROT MOVE Output: { \"PLANE\": { \"Mode\": \"PROJECTED\", \"PROPR\": \"+30\", \"PROMIN\": \"+0\", \"ROT\": \"+45\", \"SEQ\": \"-\", \"Rot\": \"TABLE\", \"Positioning\": \"MOVE\" } } Input: PLANE RESET Output: { \"PLANE\": { \"Mode\": \"RESET\" } } Constructors HeidenhainPlaneSyntax() public HeidenhainPlaneSyntax() HeidenhainPlaneSyntax(XElement) public HeidenhainPlaneSyntax(XElement src) Parameters src XElement Fields ProjectedTagList Projected tags for PLANE PROJECTED command. PROPR: projection angle, PROMIN: minimum angle, ROT: rotation of tilted plane. public static readonly string[] ProjectedTagList Field Value string[] SpatialTagList Spatial axis tags for PLANE SPATIAL command. public static readonly string[] SpatialTagList Field Value string[] Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html", "title": "Class HeidenhainProgramSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainProgramSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain BEGIN PGM and END PGM commands. public class HeidenhainProgramSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainProgramSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: BEGIN PGM DEMO MM Output: { \"PGM\": { \"Command\": \"BEGIN\", \"Name\": \"DEMO\", \"Unit\": \"MM\" } } Input: END PGM DEMO MM Output: { \"PGM\": { \"Command\": \"END\", \"Name\": \"DEMO\", \"Unit\": \"MM\" } } Constructors HeidenhainProgramSyntax() public HeidenhainProgramSyntax() HeidenhainProgramSyntax(XElement) public HeidenhainProgramSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainProgramSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain BEGIN PGM and END PGM commands. public class HeidenhainProgramSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainProgramSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: BEGIN PGM DEMO MM Output: { \"PGM\": { \"Command\": \"BEGIN\", \"Name\": \"DEMO\", \"Unit\": \"MM\" } } Input: END PGM DEMO MM Output: { \"PGM\": { \"Command\": \"END\", \"Name\": \"DEMO\", \"Unit\": \"MM\" } } Constructors HeidenhainProgramSyntax() public HeidenhainProgramSyntax() HeidenhainProgramSyntax(XElement) public HeidenhainProgramSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html", "title": "Class HeidenhainToolCallSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainToolCallSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain TOOL CALL command. Handles: TOOL CALL [ToolId|“ToolName”] [X|Y|Z] [S…] [DL…] [DR…] public class HeidenhainToolCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainToolCallSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: TOOL CALL 1 Z S5000 Output: { \"TOOL CALL\": { \"T\": \"1\", \"Axis\": \"Z\", \"S\": \"5000\" } } Input: TOOL CALL “MyTool” Z S3000 DL+0.5 DR-0.1 Output: { \"TOOL CALL\": { \"T\": \"MyTool\", \"Axis\": \"Z\", \"S\": \"3000\", \"DL\": \"+0.5\", \"DR\": \"-0.1\" } } Constructors HeidenhainToolCallSyntax() public HeidenhainToolCallSyntax() HeidenhainToolCallSyntax(XElement) public HeidenhainToolCallSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainToolCallSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain TOOL CALL command. Handles: TOOL CALL [ToolId|“ToolName”] [X|Y|Z] [S…] [DL…] [DR…] public class HeidenhainToolCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainToolCallSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: TOOL CALL 1 Z S5000 Output: { \"TOOL CALL\": { \"T\": \"1\", \"Axis\": \"Z\", \"S\": \"5000\" } } Input: TOOL CALL “MyTool” Z S3000 DL+0.5 DR-0.1 Output: { \"TOOL CALL\": { \"T\": \"MyTool\", \"Axis\": \"Z\", \"S\": \"3000\", \"DL\": \"+0.5\", \"DR\": \"-0.1\" } } Constructors HeidenhainToolCallSyntax() public HeidenhainToolCallSyntax() HeidenhainToolCallSyntax(XElement) public HeidenhainToolCallSyntax(XElement src) Parameters src XElement Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.html", "title": "Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain | HiAPI-C# 2025", "summary": "Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Classes HeidenhainBlkFormSyntax Syntax for Heidenhain BLK FORM command (workpiece blank definition). HeidenhainCallSyntax Syntax for Heidenhain CALL commands (CALL PGM and CALL LBL). HeidenhainCyclDefSyntax Initialization Syntax of Heidenhain fixed head block for CYCL DEF . HeidenhainFnAssignmentSyntax Heidenhain FN variable assignment syntax. Extends TagAssignmentSyntax with FN opcode prefix. HeidenhainLSyntax Heidenhain linear movement (the leading L) syntax. HeidenhainLblSyntax Syntax for Heidenhain LBL command (label definition). Label can be a number (1-65535) or a text name (e.g., “MyLabel”). LBL 0 is reserved for end of subprogram. HeidenhainPlaneSyntax Syntax for Heidenhain PLANE command. Handles: PLANE RESET PLANE SPATIAL SPA SPB SPC SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY] PLANE PROJECTED PROPR PROMIN ROT SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY] HeidenhainProgramSyntax Syntax for Heidenhain BEGIN PGM and END PGM commands. HeidenhainToolCallSyntax Syntax for Heidenhain TOOL CALL command. Handles: TOOL CALL [ToolId|“ToolName”] [X|Y|Z] [S…] [DL…] [DR…]" }, - "api/Hi.NcParsers.ParsingSyntaxs.IntegerTagSetupSyntax.html": { - "href": "api/Hi.NcParsers.ParsingSyntaxs.IntegerTagSetupSyntax.html", - "title": "Class IntegerTagSetupSyntax | HiAPI-C# 2025", - "summary": "Class IntegerTagSetupSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll TagSetupSyntax that parses numeric literal values to int. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. public class IntegerTagSetupSyntax : TagSetupSyntax, ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TagSetupSyntax IntegerTagSetupSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members TagSetupSyntax.MakeXmlSource(string, string, bool) TagSetupSyntax.VariableTag TagSetupSyntax.CategoryPath TagSetupSyntax.TagList TagSetupSyntax.Name TagSetupSyntax.Build(LazyLinkedListNode, List) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IntegerTagSetupSyntax(IEnumerable, IEnumerable, string) public IntegerTagSetupSyntax(IEnumerable categoryPath, IEnumerable tags, string variableTag) Parameters categoryPath IEnumerable tags IEnumerable variableTag string IntegerTagSetupSyntax(XElement) public IntegerTagSetupSyntax(XElement src) Parameters src XElement Properties XName public static string XName { get; } Property Value string Methods ToInteger(string) Parses a numeric literal to int; returns the original string for variable text. public static JsonNode ToInteger(string setup) Parameters setup string Returns JsonNode ToSetupJsonNode(string) Converts a tag setup string value to a JsonNode. Override in derived classes for typed parsing (int, double). Variable text (e.g. Q2, #1, [#1+#2]) is kept as string. protected override JsonNode ToSetupJsonNode(string setup) Parameters setup string Returns JsonNode" + "api/Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html": { + "href": "api/Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html", + "title": "Class IntegerTagValueSyntax | HiAPI-C# 2025", + "summary": "Class IntegerTagValueSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll TagValueSyntax that parses numeric literal values to int. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. public class IntegerTagValueSyntax : TagValueSyntax, ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TagValueSyntax IntegerTagValueSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members TagValueSyntax.MakeXmlSource(string, string, bool) TagValueSyntax.VariableTag TagValueSyntax.CategoryPath TagValueSyntax.TagList TagValueSyntax.Name TagValueSyntax.Build(LazyLinkedListNode, List, NcDiagnosticProgress) object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IntegerTagValueSyntax(IEnumerable, IEnumerable, string) public IntegerTagValueSyntax(IEnumerable categoryPath, IEnumerable tags, string variableTag) Parameters categoryPath IEnumerable tags IEnumerable variableTag string IntegerTagValueSyntax(XElement) public IntegerTagValueSyntax(XElement src) Parameters src XElement Properties XName public static string XName { get; } Property Value string Methods ToInteger(string) Parses a numeric literal to int; returns the original string for variable text. public static JsonNode ToInteger(string setup) Parameters setup string Returns JsonNode ToValueJsonNode(string) Converts a tag setup string value to a JsonNode. Override in derived classes for typed parsing (int, double). Variable text (e.g. Q2, #1, [#1+#2]) is kept as string. protected override JsonNode ToValueJsonNode(string setup) Parameters setup string Returns JsonNode" }, "api/Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html", "title": "Class NamedVarAssignmentSyntax | HiAPI-C# 2025", - "summary": "Class NamedVarAssignmentSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Assignment syntax for named (identifier-style) variables with = sign. Handles variables that are multi-character identifiers rather than {prefix}{digits}. public class NamedVarAssignmentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object NamedVarAssignmentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Siemens GUD: _X_HOME = 100, _MY_VAR = R1 + R2 Siemens LUD: DEF REAL MY_LOCAL; MY_LOCAL = 50 Unlike TagAssignmentSyntax which handles {prefix}{digits} variables (e.g., #1, R1, Q5), this class handles multi-character identifier variables. Identifiers must be at least 2 characters to avoid overlap with single-letter axis tags (X, Y, Z, etc.). Ordering: Must be placed before TagAssignmentSyntax in syntax lists so that multi-char identifiers (e.g., _X_HOME) are consumed before {prefix}{digits} patterns (e.g., R1) attempt to match. Constructors NamedVarAssignmentSyntax(IEnumerable, IEnumerable, string) public NamedVarAssignmentSyntax(IEnumerable categoryPath, IEnumerable terminateWords = null, string identPattern = \"[A-Za-z_]\\\\w+\") Parameters categoryPath IEnumerable terminateWords IEnumerable identPattern string NamedVarAssignmentSyntax(XElement) public NamedVarAssignmentSyntax(XElement src) Parameters src XElement Fields DefaultIdentPattern public const string DefaultIdentPattern = \"[A-Za-z_]\\\\w+\" Field Value string Properties CategoryPath public List CategoryPath { get; set; } Property Value List IdentPattern Regex pattern for matching variable identifiers. Default: [A-Za-z_]\\w+ (at least 2 characters). public string IdentPattern { get; set; } Property Value string Name public string Name { get; } Property Value string TerminateWords public List TerminateWords { get; set; } Property Value List XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. ToAssignmentJsonNode(string) Converts an assignment expression string to a JsonNode. Override in derived classes for typed parsing. protected virtual JsonNode ToAssignmentJsonNode(string setup) Parameters setup string Returns JsonNode" + "summary": "Class NamedVarAssignmentSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Assignment syntax for named (identifier-style) variables with = sign. Handles variables that are multi-character identifiers rather than {prefix}{digits}. public class NamedVarAssignmentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object NamedVarAssignmentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Siemens GUD: _X_HOME = 100, _MY_VAR = R1 + R2 Siemens LUD: DEF REAL MY_LOCAL; MY_LOCAL = 50 Unlike TagAssignmentSyntax which handles {prefix}{digits} variables (e.g., #1, R1, Q5), this class handles multi-character identifier variables. Identifiers must be at least 2 characters to avoid overlap with single-letter axis tags (X, Y, Z, etc.). Ordering: Must be placed before TagAssignmentSyntax in syntax lists so that multi-char identifiers (e.g., _X_HOME) are consumed before {prefix}{digits} patterns (e.g., R1) attempt to match. Constructors NamedVarAssignmentSyntax(IEnumerable, IEnumerable, string) public NamedVarAssignmentSyntax(IEnumerable categoryPath, IEnumerable terminateWords = null, string identPattern = \"[A-Za-z_]\\\\w+\") Parameters categoryPath IEnumerable terminateWords IEnumerable identPattern string NamedVarAssignmentSyntax(XElement) public NamedVarAssignmentSyntax(XElement src) Parameters src XElement Fields DefaultIdentPattern public const string DefaultIdentPattern = \"[A-Za-z_]\\\\w+\" Field Value string Properties CategoryPath public List CategoryPath { get; set; } Property Value List IdentPattern Regex pattern for matching variable identifiers. Default: [A-Za-z_]\\w+ (at least 2 characters). public string IdentPattern { get; set; } Property Value string Name public string Name { get; } Property Value string TerminateWords public List TerminateWords { get; set; } Property Value List XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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. ToAssignmentJsonNode(string) Converts an assignment expression string to a JsonNode. Override in derived classes for typed parsing. protected virtual JsonNode ToAssignmentJsonNode(string setup) Parameters setup string Returns JsonNode" }, "api/Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html", "title": "Class NumberedFlagSyntax | HiAPI-C# 2025", - "summary": "Class NumberedFlagSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Syntax for numbered flags (prefix + number) with optional decimal support. NumberedFlagSyntax often should place after something like ParameterizedFlagSyntax. Since NumberedFlagSyntax is easy to eat those kind of flags. public class NumberedFlagSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object NumberedFlagSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Examples: Integer codes: G0, G1, G54, M3, M30, T5, S1000 Decimal codes: G54.1 (Fanuc extended work coordinates) Note: Parameters like P2 in G54.1P2 should be handled by TagSetupSyntax separately. Constructors NumberedFlagSyntax(IEnumerable, IEnumerable, bool) Creates a new NumberedFlagSyntax instance. public NumberedFlagSyntax(IEnumerable categoryPath, IEnumerable codePrefixes, bool allowDecimal = true) Parameters categoryPath IEnumerable JSON path for storing matched codes. codePrefixes IEnumerable Code prefixes to match (e.g., [“G”, “M”]). allowDecimal bool Whether to allow decimal numbers. NumberedFlagSyntax(XElement) public NumberedFlagSyntax(XElement src) Parameters src XElement Properties AllowDecimal Whether to allow decimal numbers (e.g., G54.1). public bool AllowDecimal { get; set; } Property Value bool CategoryPath Category path for storing matched codes in JSON. public List CategoryPath { get; set; } Property Value List CodePrefixes Code prefixes to match (e.g., [“G”, “M”]). public List CodePrefixes { get; set; } Property Value List Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class NumberedFlagSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Syntax for numbered flags (prefix + number) with optional decimal support. NumberedFlagSyntax often should place after something like ParameterizedFlagSyntax. Since NumberedFlagSyntax is easy to eat those kind of flags. public class NumberedFlagSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object NumberedFlagSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Examples: Integer codes: G0, G1, G54, M3, M30, T5, S1000 Decimal codes: G54.1 (Fanuc extended work coordinates) Note: Parameters like P2 in G54.1P2 should be handled by TagSetupSyntax separately. Constructors NumberedFlagSyntax(IEnumerable, IEnumerable, bool) Creates a new NumberedFlagSyntax instance. public NumberedFlagSyntax(IEnumerable categoryPath, IEnumerable codePrefixes, bool allowDecimal = true) Parameters categoryPath IEnumerable JSON path for storing matched codes. codePrefixes IEnumerable Code prefixes to match (e.g., [“G”, “M”]). allowDecimal bool Whether to allow decimal numbers. NumberedFlagSyntax(XElement) public NumberedFlagSyntax(XElement src) Parameters src XElement Properties AllowDecimal Whether to allow decimal numbers (e.g., G54.1). public bool AllowDecimal { get; set; } Property Value bool CategoryPath Category path for storing matched codes in JSON. public List CategoryPath { get; set; } Property Value List CodePrefixes Code prefixes to match (e.g., [“G”, “M”]). public List CodePrefixes { get; set; } Property Value List Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html", "title": "Class ParameterizedFlagSyntax | HiAPI-C# 2025", - "summary": "Class ParameterizedFlagSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Syntax for flags with attached parameters (e.g., G54.1P1, G10L2P1). This is essentially a combination of main flag matching (like NumberedFlagSyntax) plus scoped TagSetupSyntax 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. public class ParameterizedFlagSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ParameterizedFlagSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Parameters can be stored as typed values via FloatParamPrefixes and IntParamPrefixes (set via property initializer): ParamPrefixes — stored as string (text, for variables like #1, Q2) FloatParamPrefixes — stored as double when parseable, string otherwise IntParamPrefixes — stored as int when parseable, string otherwise Examples: G54.1P1 → {\"G54.1\": {\"P\": \"1\"}} (text) G68.2 X0 I180 → {\"G68.2\": {\"X\": 0.0, \"I\": 180.0}} (float via property initializer) G54.1P#1 → {\"G54.1\": {\"P\": \"#1\"}} (Fanuc variable, kept as string) G54.1PQ1 → {\"G54.1\": {\"P\": \"Q1\"}} (Heidenhain variable) Constructors ParameterizedFlagSyntax(IEnumerable, IEnumerable, IEnumerable, string, IEnumerable) Creates a new ParameterizedFlagSyntax instance. Use property initializers for FloatParamPrefixes and IntParamPrefixes to enable typed parameter storage. public ParameterizedFlagSyntax(IEnumerable categoryPath, IEnumerable codePrefixes, IEnumerable paramPrefixes, string varPrefix, IEnumerable terminateWords = null) Parameters categoryPath IEnumerable JSON path for storing matched codes. codePrefixes IEnumerable Full code prefixes to match (e.g., [“G54.1”, “G10”]). paramPrefixes IEnumerable Parameter prefixes to extract (e.g., [“P”, “L”]). varPrefix string Variable prefix (e.g., “#” for Fanuc, “Q” for Heidenhain). terminateWords IEnumerable Words that stop parameter extraction. ParameterizedFlagSyntax(XElement) public ParameterizedFlagSyntax(XElement src) Parameters src XElement Properties CategoryPath Category path for storing matched codes in JSON. public List CategoryPath { get; set; } Property Value List CodePrefixes Full code prefixes to match (e.g., [“G54.1”, “G10”]). public List CodePrefixes { get; set; } Property Value List FloatParamPrefixes Parameter prefixes stored as double when parseable, string otherwise (for variable references). Set via property initializer for typed G-code parameters. public List FloatParamPrefixes { get; set; } Property Value List IntParamPrefixes Parameter prefixes stored as int when parseable, string otherwise (for variable references). Set via property initializer for typed G-code parameters. public List IntParamPrefixes { get; set; } Property Value List Name public string Name { get; } Property Value string ParamPrefixes Parameter prefixes to extract as text string (e.g., [“P”, “L”, “H”]). Multiple parameters can be attached to one code. public List ParamPrefixes { get; set; } Property Value List TerminateWords Words that terminate parameter extraction (e.g., [“G”, “M”, “X”, “Y”, “Z”]). Extraction stops when encountering these prefixes followed by a number. public List TerminateWords { get; set; } Property Value List VarPrefix Variable prefix for macro variables (e.g., “#” for Fanuc, “Q” for Heidenhain). public string VarPrefix { get; set; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class ParameterizedFlagSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Syntax for flags with attached parameters (e.g., G54.1P1, G10L2P1). 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. public class ParameterizedFlagSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ParameterizedFlagSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Parameters can be stored as typed values via FloatParamPrefixes and IntParamPrefixes (set via property initializer): ParamPrefixes — stored as string (text, for variables like #1, Q2) FloatParamPrefixes — stored as double when parseable, string otherwise IntParamPrefixes — stored as int when parseable, string otherwise Examples: G54.1P1 → {\"G54.1\": {\"P\": \"1\"}} (text) G68.2 X0 I180 → {\"G68.2\": {\"X\": 0.0, \"I\": 180.0}} (float via property initializer) G54.1P#1 → {\"G54.1\": {\"P\": \"#1\"}} (Fanuc variable, kept as string) G54.1PQ1 → {\"G54.1\": {\"P\": \"Q1\"}} (Heidenhain variable) Constructors ParameterizedFlagSyntax(IEnumerable, IEnumerable, IEnumerable, string, IEnumerable) Creates a new ParameterizedFlagSyntax instance. Use property initializers for FloatParamPrefixes and IntParamPrefixes to enable typed parameter storage. public ParameterizedFlagSyntax(IEnumerable categoryPath, IEnumerable codePrefixes, IEnumerable paramPrefixes, string varPrefix, IEnumerable terminateWords = null) Parameters categoryPath IEnumerable JSON path for storing matched codes. codePrefixes IEnumerable Full code prefixes to match (e.g., [“G54.1”, “G10”]). paramPrefixes IEnumerable Parameter prefixes to extract (e.g., [“P”, “L”]). varPrefix string Variable prefix (e.g., “#” for Fanuc, “Q” for Heidenhain). terminateWords IEnumerable Words that stop parameter extraction. ParameterizedFlagSyntax(XElement) public ParameterizedFlagSyntax(XElement src) Parameters src XElement Properties CategoryPath Category path for storing matched codes in JSON. public List CategoryPath { get; set; } Property Value List CodePrefixes Full code prefixes to match (e.g., [“G54.1”, “G10”]). public List CodePrefixes { get; set; } Property Value List FloatParamPrefixes Parameter prefixes stored as double when parseable, string otherwise (for variable references). Set via property initializer for typed G-code parameters. public List FloatParamPrefixes { get; set; } Property Value List IntParamPrefixes Parameter prefixes stored as int when parseable, string otherwise (for variable references). Set via property initializer for typed G-code parameters. public List IntParamPrefixes { get; set; } Property Value List Name public string Name { get; } Property Value string ParamPrefixes Parameter prefixes to extract as text string (e.g., [“P”, “L”, “H”]). Multiple parameters can be attached to one code. public List ParamPrefixes { get; set; } Property Value List TerminateWords Words that terminate parameter extraction (e.g., [“G”, “M”, “X”, “Y”, “Z”]). Extraction stops when encountering these prefixes followed by a number. public List TerminateWords { get; set; } Property Value List VarPrefix Variable prefix for macro variables (e.g., “#” for Fanuc, “Q” for Heidenhain). public string VarPrefix { get; set; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html", "title": "Class ShrinkIfNoDecimalPointSyntax | HiAPI-C# 2025", - "summary": "Class ShrinkIfNoDecimalPointSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Applies the “conventional type” decimal-point interpretation to coordinate values in UnparsedText. When a tag value has no decimal point (e.g. Y20), it is shrunk by the implied decimal places: Y20 → Y0.020 (3 decimal places). Values that already contain a decimal point are left unchanged. Place inside BundleSyntax before FloatTagSetupSyntax so the modified text is parsed correctly by subsequent syntaxes. public class ShrinkIfNoDecimalPointSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ShrinkIfNoDecimalPointSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Modern CNC controllers default to “calculator type” where Y20 = Y20.0. This syntax is only needed for legacy “conventional type” configurations where Y20 = Y0.020 (Fanuc DPI=0, etc.). Properties ImpliedDecimalPlaces Number of implied decimal places when no decimal point is present. 3 → 0.001 (mm), 4 → 0.0001 (inch). public int ImpliedDecimalPlaces { get; set; } Property Value int Name public string Name { get; } Property Value string Tags Tags to check for missing decimal points. Default: X, Y, Z. public List Tags { get; set; } Property Value List XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class ShrinkIfNoDecimalPointSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Applies the “conventional type” decimal-point interpretation to coordinate values in UnparsedText. When a tag value has no decimal point (e.g. Y20), it is shrunk by the implied decimal places: Y20 → Y0.020 (3 decimal places). Values that already contain a decimal point are left unchanged. Place inside BundleSyntax before FloatTagSetupSyntax so the modified text is parsed correctly by subsequent syntaxes. public class ShrinkIfNoDecimalPointSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ShrinkIfNoDecimalPointSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Modern CNC controllers default to “calculator type” where Y20 = Y20.0. This syntax is only needed for legacy “conventional type” configurations where Y20 = Y0.020 (Fanuc DPI=0, etc.). Properties ImpliedDecimalPlaces Number of implied decimal places when no decimal point is present. 3 → 0.001 (mm), 4 → 0.0001 (inch). public int ImpliedDecimalPlaces { get; set; } Property Value int Name public string Name { get; } Property Value string Tags Tags to check for missing decimal points. Default: X, Y, Z. public List Tags { get; set; } Property Value List XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html", "title": "Class TagAssignmentSyntax | HiAPI-C# 2025", - "summary": "Class TagAssignmentSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Assignment syntax with = sign. Unlike TagSetupSyntax which handles concatenated tag-value pairs (no = sign), this class handles explicit assignment statements. public class TagAssignmentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TagAssignmentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Derived HeidenhainFnAssignmentSyntax Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Fanuc: #1 = 100, #100 = [#1 + #2] Siemens: R1 = 100, R1 = R2 + R3 Heidenhain: via derived HeidenhainFnAssignmentSyntax which adds FN prefix handling Wraps GrabTagAssignment(ref string, IEnumerable, string, IEnumerable) as an INcSyntax. Constructors TagAssignmentSyntax(IEnumerable, IEnumerable, string, IEnumerable) public TagAssignmentSyntax(IEnumerable categoryPath, IEnumerable tags, string varPrefix, IEnumerable terminateWords = null) Parameters categoryPath IEnumerable tags IEnumerable varPrefix string terminateWords IEnumerable TagAssignmentSyntax(XElement) public TagAssignmentSyntax(XElement src) Parameters src XElement Properties CategoryPath public List CategoryPath { get; set; } Property Value List Name public string Name { get; } Property Value string TagList public List TagList { get; set; } Property Value List TerminateWords public List TerminateWords { get; set; } Property Value List VarPrefix public string VarPrefix { get; set; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. ToAssignmentJsonNode(string) Converts an assignment expression string to a JsonNode. Override in derived classes for typed parsing. protected virtual JsonNode ToAssignmentJsonNode(string setup) Parameters setup string Returns JsonNode TryStripPrefix(ref string) Strips a brand-specific prefix from unparsedText before assignment parsing. Returns false to signal no match (skip this syntax). Base implementation does nothing (no prefix required). protected virtual bool TryStripPrefix(ref string unparsedText) Parameters unparsedText string Returns bool" + "summary": "Class TagAssignmentSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Assignment syntax with = sign. Unlike TagValueSyntax which handles concatenated tag-value pairs (no = sign), this class handles explicit assignment statements. public class TagAssignmentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TagAssignmentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Derived HeidenhainFnAssignmentSyntax Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Fanuc: #1 = 100, #100 = [#1 + #2] Siemens: R1 = 100, R1 = R2 + R3 Heidenhain: via derived HeidenhainFnAssignmentSyntax which adds FN prefix handling Wraps GrabTagAssignment(ref string, IEnumerable, string, IEnumerable) as an INcSyntax. Constructors TagAssignmentSyntax(IEnumerable, IEnumerable, string, IEnumerable) public TagAssignmentSyntax(IEnumerable categoryPath, IEnumerable tags, string varPrefix, IEnumerable terminateWords = null) Parameters categoryPath IEnumerable tags IEnumerable varPrefix string terminateWords IEnumerable TagAssignmentSyntax(XElement) public TagAssignmentSyntax(XElement src) Parameters src XElement Properties CategoryPath public List CategoryPath { get; set; } Property Value List Name public string Name { get; } Property Value string TagList public List TagList { get; set; } Property Value List TerminateWords public List TerminateWords { get; set; } Property Value List VarPrefix public string VarPrefix { get; set; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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 virtual XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. ToAssignmentJsonNode(string) Converts an assignment expression string to a JsonNode. Override in derived classes for typed parsing. protected virtual JsonNode ToAssignmentJsonNode(string setup) Parameters setup string Returns JsonNode TryStripPrefix(ref string) Strips a brand-specific prefix from unparsedText before assignment parsing. Returns false to signal no match (skip this syntax). Base implementation does nothing (no prefix required). protected virtual bool TryStripPrefix(ref string unparsedText) Parameters unparsedText string Returns bool" }, - "api/Hi.NcParsers.ParsingSyntaxs.TagSetupSyntax.html": { - "href": "api/Hi.NcParsers.ParsingSyntaxs.TagSetupSyntax.html", - "title": "Class TagSetupSyntax | HiAPI-C# 2025", - "summary": "Class TagSetupSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Concatenated tag setup syntax. The syntax is for assignment with space or no splition assignment. The syntax is not for assignment sign (=) syntax. ex. Heidenhain: L X Q2 Y33.4 FQ1 ISO: X100.3Y3.3 public class TagSetupSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TagSetupSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Derived FloatTagSetupSyntax IntegerTagSetupSyntax Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TagSetupSyntax(IEnumerable, IEnumerable, string) public TagSetupSyntax(IEnumerable categoryPath, IEnumerable tags, string variableTag) Parameters categoryPath IEnumerable tags IEnumerable variableTag string TagSetupSyntax(XElement) public TagSetupSyntax(XElement src) Parameters src XElement Properties CategoryPath public List CategoryPath { get; set; } Property Value List Name public string Name { get; } Property Value string TagList public List TagList { get; set; } Property Value List VariableTag public string VariableTag { get; set; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. ToSetupJsonNode(string) Converts a tag setup string value to a JsonNode. Override in derived classes for typed parsing (int, double). Variable text (e.g. Q2, #1, [#1+#2]) is kept as string. protected virtual JsonNode ToSetupJsonNode(string setup) Parameters setup string Returns JsonNode" + "api/Hi.NcParsers.ParsingSyntaxs.TagValueSyntax.html": { + "href": "api/Hi.NcParsers.ParsingSyntaxs.TagValueSyntax.html", + "title": "Class TagValueSyntax | HiAPI-C# 2025", + "summary": "Class TagValueSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Concatenated tag-value syntax (no = sign). ex. Heidenhain: L X Q2 Y33.4 FQ1 ISO: X100.3Y3.3 public class TagValueSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TagValueSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Derived FloatTagValueSyntax IntegerTagValueSyntax Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TagValueSyntax(IEnumerable, IEnumerable, string) public TagValueSyntax(IEnumerable categoryPath, IEnumerable tags, string variableTag) Parameters categoryPath IEnumerable tags IEnumerable variableTag string TagValueSyntax(XElement) public TagValueSyntax(XElement src) Parameters src XElement Properties CategoryPath public List CategoryPath { get; set; } Property Value List Name public string Name { get; } Property Value string TagList public List TagList { get; set; } Property Value List VariableTag public string VariableTag { get; set; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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 virtual XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. ToValueJsonNode(string) Converts a tag setup string value to a JsonNode. Override in derived classes for typed parsing (int, double). Variable text (e.g. Q2, #1, [#1+#2]) is kept as string. protected virtual JsonNode ToValueJsonNode(string setup) Parameters setup string Returns JsonNode" }, "api/Hi.NcParsers.ParsingSyntaxs.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.html", "title": "Namespace Hi.NcParsers.ParsingSyntaxs | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.ParsingSyntaxs Classes CsScriptSyntax FlagSyntax Syntax of fully Match flag. FloatTagSetupSyntax TagSetupSyntax that parses numeric literal values to double. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. HeadIndexSyntax IntegerTagSetupSyntax TagSetupSyntax that parses numeric literal values to int. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. NamedVarAssignmentSyntax Assignment syntax for named (identifier-style) variables with = sign. Handles variables that are multi-character identifiers rather than {prefix}{digits}. NumberedFlagSyntax Syntax for numbered flags (prefix + number) with optional decimal support. NumberedFlagSyntax often should place after something like ParameterizedFlagSyntax. Since NumberedFlagSyntax is easy to eat those kind of flags. ParameterizedFlagSyntax Syntax for flags with attached parameters (e.g., G54.1P1, G10L2P1). This is essentially a combination of main flag matching (like NumberedFlagSyntax) plus scoped TagSetupSyntax 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. ShrinkIfNoDecimalPointSyntax Applies the “conventional type” decimal-point interpretation to coordinate values in UnparsedText. When a tag value has no decimal point (e.g. Y20), it is shrunk by the implied decimal places: Y20 → Y0.020 (3 decimal places). Values that already contain a decimal point are left unchanged. Place inside BundleSyntax before FloatTagSetupSyntax so the modified text is parsed correctly by subsequent syntaxes. TagAssignmentSyntax Assignment syntax with = sign. Unlike TagSetupSyntax which handles concatenated tag-value pairs (no = sign), this class handles explicit assignment statements. TagSetupSyntax Concatenated tag setup syntax. The syntax is for assignment with space or no splition assignment. The syntax is not for assignment sign (=) syntax. ex. Heidenhain: L X Q2 Y33.4 FQ1 ISO: X100.3Y3.3" + "summary": "Namespace Hi.NcParsers.ParsingSyntaxs Classes CsScriptSyntax FlagSyntax Syntax of fully Match flag. FloatTagValueSyntax TagValueSyntax that parses numeric literal values to double. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. HeadIndexSyntax IntegerTagValueSyntax TagValueSyntax that parses numeric literal values to int. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. NamedVarAssignmentSyntax Assignment syntax for named (identifier-style) variables with = sign. Handles variables that are multi-character identifiers rather than {prefix}{digits}. NumberedFlagSyntax Syntax for numbered flags (prefix + number) with optional decimal support. NumberedFlagSyntax often should place after something like ParameterizedFlagSyntax. Since NumberedFlagSyntax is easy to eat those kind of flags. ParameterizedFlagSyntax Syntax for flags with attached parameters (e.g., G54.1P1, G10L2P1). 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. ShrinkIfNoDecimalPointSyntax Applies the “conventional type” decimal-point interpretation to coordinate values in UnparsedText. When a tag value has no decimal point (e.g. Y20), it is shrunk by the implied decimal places: Y20 → Y0.020 (3 decimal places). Values that already contain a decimal point are left unchanged. Place inside BundleSyntax before FloatTagSetupSyntax so the modified text is parsed correctly by subsequent syntaxes. TagAssignmentSyntax Assignment syntax with = sign. Unlike TagValueSyntax which handles concatenated tag-value pairs (no = sign), this class handles explicit assignment statements. TagValueSyntax Concatenated tag-value syntax (no = sign). ex. Heidenhain: L X Q2 Y33.4 FQ1 ISO: X100.3Y3.3" }, "api/Hi.NcParsers.Segmenters.HeidenhainSegmenter.html": { "href": "api/Hi.NcParsers.Segmenters.HeidenhainSegmenter.html", "title": "Class HeidenhainSegmenter | HiAPI-C# 2025", - "summary": "Class HeidenhainSegmenter Namespace Hi.NcParsers.Segmenters Assembly HiMech.dll Heidenhain NC block builder. Also support single line NC block. public class HeidenhainSegmenter : ISegmenter, IToXElement Inheritance object HeidenhainSegmenter Implements ISegmenter IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainSegmenter() public HeidenhainSegmenter() Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods GetSegment(LazyLinkedListNode, out LazyLinkedListNode, out LazyLinkedListNode) Get a sentence block according to the srcNode. the srcNode can be any node in the nodes from beginNode to the exclusive endNode. public void GetSegment(LazyLinkedListNode srcNode, out LazyLinkedListNode beginNode, out LazyLinkedListNode endNode) Parameters srcNode LazyLinkedListNode beginNode LazyLinkedListNode endNode LazyLinkedListNode exclusive end node ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object." + "summary": "Class HeidenhainSegmenter Namespace Hi.NcParsers.Segmenters Assembly HiMech.dll Heidenhain NC block builder. Also support single line NC block. public class HeidenhainSegmenter : ISegmenter, IToXElement Inheritance object HeidenhainSegmenter Implements ISegmenter IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainSegmenter() public HeidenhainSegmenter() Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods GetSegment(LazyLinkedListNode, out LazyLinkedListNode, out LazyLinkedListNode, NcDiagnosticProgress) Get a sentence block according to the srcNode. the srcNode can be any node in the nodes from beginNode to the exclusive endNode. public void GetSegment(LazyLinkedListNode srcNode, out LazyLinkedListNode beginNode, out LazyLinkedListNode endNode, NcDiagnosticProgress ncDiagnosticProgress) Parameters srcNode LazyLinkedListNode beginNode LazyLinkedListNode endNode LazyLinkedListNode exclusive end node ncDiagnosticProgress NcDiagnosticProgress ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object." }, "api/Hi.NcParsers.Segmenters.ISegmenter.html": { "href": "api/Hi.NcParsers.Segmenters.ISegmenter.html", "title": "Interface ISegmenter | HiAPI-C# 2025", - "summary": "Interface ISegmenter Namespace Hi.NcParsers.Segmenters Assembly HiMech.dll interface to get segment for Sentence. public interface ISegmenter : IToXElement Inherited Members IToXElement.ToXElement() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name string Name { get; } Property Value string Methods GetSegment(LazyLinkedListNode, out LazyLinkedListNode, out LazyLinkedListNode) Get a sentence block according to the srcNode. the srcNode can be any node in the nodes from beginNode to the exclusive endNode. void GetSegment(LazyLinkedListNode srcNode, out LazyLinkedListNode beginNode, out LazyLinkedListNode endNode) Parameters srcNode LazyLinkedListNode beginNode LazyLinkedListNode endNode LazyLinkedListNode exclusive end node" + "summary": "Interface ISegmenter Namespace Hi.NcParsers.Segmenters Assembly HiMech.dll interface to get segment for Sentence. public interface ISegmenter : IToXElement Inherited Members IToXElement.ToXElement() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name string Name { get; } Property Value string Methods GetSegment(LazyLinkedListNode, out LazyLinkedListNode, out LazyLinkedListNode, NcDiagnosticProgress) Get a sentence block according to the srcNode. the srcNode can be any node in the nodes from beginNode to the exclusive endNode. void GetSegment(LazyLinkedListNode srcNode, out LazyLinkedListNode beginNode, out LazyLinkedListNode endNode, NcDiagnosticProgress ncDiagnosticProgress) Parameters srcNode LazyLinkedListNode beginNode LazyLinkedListNode endNode LazyLinkedListNode exclusive end node ncDiagnosticProgress NcDiagnosticProgress" }, "api/Hi.NcParsers.Segmenters.SingleLineSegmenter.html": { "href": "api/Hi.NcParsers.Segmenters.SingleLineSegmenter.html", "title": "Class SingleLineSegmenter | HiAPI-C# 2025", - "summary": "Class SingleLineSegmenter Namespace Hi.NcParsers.Segmenters Assembly HiMech.dll public class SingleLineSegmenter : ISegmenter, IToXElement Inheritance object SingleLineSegmenter Implements ISegmenter IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods GetSegment(LazyLinkedListNode, out LazyLinkedListNode, out LazyLinkedListNode) Get a sentence block according to the srcNode. the srcNode can be any node in the nodes from beginNode to the exclusive endNode. public void GetSegment(LazyLinkedListNode srcNode, out LazyLinkedListNode beginNode, out LazyLinkedListNode endNode) Parameters srcNode LazyLinkedListNode beginNode LazyLinkedListNode endNode LazyLinkedListNode exclusive end node ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object." + "summary": "Class SingleLineSegmenter Namespace Hi.NcParsers.Segmenters Assembly HiMech.dll public class SingleLineSegmenter : ISegmenter, IToXElement Inheritance object SingleLineSegmenter Implements ISegmenter IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods GetSegment(LazyLinkedListNode, out LazyLinkedListNode, out LazyLinkedListNode, NcDiagnosticProgress) Get a sentence block according to the srcNode. the srcNode can be any node in the nodes from beginNode to the exclusive endNode. public void GetSegment(LazyLinkedListNode srcNode, out LazyLinkedListNode beginNode, out LazyLinkedListNode endNode, NcDiagnosticProgress ncDiagnosticProgress) Parameters srcNode LazyLinkedListNode beginNode LazyLinkedListNode endNode LazyLinkedListNode exclusive end node ncDiagnosticProgress NcDiagnosticProgress ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object." }, "api/Hi.NcParsers.Segmenters.html": { "href": "api/Hi.NcParsers.Segmenters.html", "title": "Namespace Hi.NcParsers.Segmenters | HiAPI-C# 2025", "summary": "Namespace Hi.NcParsers.Segmenters Classes HeidenhainSegmenter Heidenhain NC block builder. Also support single line NC block. SingleLineSegmenter Interfaces ISegmenter interface to get segment for Sentence." }, + "api/Hi.NcParsers.Semantics.CompoundMotionSemantic.html": { + "href": "api/Hi.NcParsers.Semantics.CompoundMotionSemantic.html", + "title": "Class CompoundMotionSemantic | HiAPI-C# 2025", + "summary": "Class CompoundMotionSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves ICompoundMotionDef into acts by delegating ItemsKey to ResolveItems(JsonArray, JsonObject, Vec3d, IRapidFeedrateConfig). public class CompoundMotionSemantic : INcSemantic, IMakeXmlSource Inheritance object CompoundMotionSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName 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. Resolve(LazyLinkedListNode, List, NcDiagnosticProgress) Resolve the syntaxPieceNode into a sequence of IAct. May also mutate SyntaxPiece.JsonObject for downstream semantics. public IEnumerable Resolve(LazyLinkedListNode syntaxPieceNode, List dependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode dependencyList List ncDiagnosticProgress NcDiagnosticProgress Returns IEnumerable" + }, "api/Hi.NcParsers.Semantics.INcSemantic.html": { "href": "api/Hi.NcParsers.Semantics.INcSemantic.html", "title": "Interface INcSemantic | HiAPI-C# 2025", - "summary": "Interface INcSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves SyntaxPiece into IAct sequence. Unlike INcSyntax which only transforms data in-place, INcSemantic produces machine actions from the parsed syntax data. public interface INcSemantic : IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. string DisplayName { get; } Property Value string Methods Resolve(LazyLinkedListNode, List) Resolve the syntaxPieceNode into a sequence of IAct. May also mutate SyntaxPiece.JsonObject for downstream semantics. IEnumerable Resolve(LazyLinkedListNode syntaxPieceNode, List dependencyList) Parameters syntaxPieceNode LazyLinkedListNode dependencyList List Returns IEnumerable" + "summary": "Interface INcSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves SyntaxPiece into IAct sequence. Unlike INcSyntax which only transforms data in-place, INcSemantic produces machine actions from the parsed syntax data. public interface INcSemantic : IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. string DisplayName { get; } Property Value string Methods Resolve(LazyLinkedListNode, List, NcDiagnosticProgress) Resolve the syntaxPieceNode into a sequence of IAct. May also mutate SyntaxPiece.JsonObject for downstream semantics. IEnumerable Resolve(LazyLinkedListNode syntaxPieceNode, List dependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode dependencyList List ncDiagnosticProgress NcDiagnosticProgress Returns IEnumerable" }, "api/Hi.NcParsers.Semantics.MachineCoordinateStepSemantic.html": { "href": "api/Hi.NcParsers.Semantics.MachineCoordinateStepSemantic.html", "title": "Class MachineCoordinateStepSemantic | HiAPI-C# 2025", - "summary": "Class MachineCoordinateStepSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Read MachineCoordinate from MachineCoordinate in JsonObject and produce ActMcXyzStep. Requires ProgramXyzSyntax to have computed McXyz first. public class MachineCoordinateStepSemantic : INcSemantic, IMakeXmlSource Inheritance object MachineCoordinateStepSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName 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. Resolve(LazyLinkedListNode, List) Resolve the syntaxPieceNode into a sequence of IAct. May also mutate SyntaxPiece.JsonObject for downstream semantics. public IEnumerable Resolve(LazyLinkedListNode syntaxPieceNode, List dependencyList) Parameters syntaxPieceNode LazyLinkedListNode dependencyList List Returns IEnumerable" + "summary": "Class MachineCoordinateStepSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Read MachineCoordinate from MachineCoordinate in JsonObject and produce ActMcXyzStep. Requires ProgramXyzSyntax to have computed McXyz first. public class MachineCoordinateStepSemantic : INcSemantic, IMakeXmlSource Inheritance object MachineCoordinateStepSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName 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. Resolve(LazyLinkedListNode, List, NcDiagnosticProgress) Resolve the syntaxPieceNode into a sequence of IAct. May also mutate SyntaxPiece.JsonObject for downstream semantics. public IEnumerable Resolve(LazyLinkedListNode syntaxPieceNode, List dependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode dependencyList List ncDiagnosticProgress NcDiagnosticProgress Returns IEnumerable" }, - "api/Hi.NcParsers.Semantics.SemanticPiece.html": { - "href": "api/Hi.NcParsers.Semantics.SemanticPiece.html", - "title": "Class SemanticPiece | HiAPI-C# 2025", - "summary": "Class SemanticPiece Namespace Hi.NcParsers.Semantics Assembly HiMech.dll [Obsolete(\"Use SyntaxPiece directly. SemanticPiece is no longer needed since IClaim pattern is obsoleted.\")] public class SemanticPiece Inheritance object SemanticPiece Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The design pattern of Sentence, JsonObject and SentenceClaim are one-one-one mapping. Constructors SemanticPiece(Sentence, JsonObject) public SemanticPiece(Sentence sentence, JsonObject jsonObject) Parameters sentence Sentence jsonObject JsonObject Properties ClaimList public List ClaimList { get; } Property Value List JsonObject public JsonObject JsonObject { get; set; } Property Value JsonObject Sentence public Sentence Sentence { get; set; } Property Value Sentence" + "api/Hi.NcParsers.Semantics.McArcMotionSemantic.html": { + "href": "api/Hi.NcParsers.Semantics.McArcMotionSemantic.html", + "title": "Class McArcMotionSemantic | HiAPI-C# 2025", + "summary": "Class McArcMotionSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves McArc motion into ActFeedrate + ActMcXyzSpiralContour. Reads arc center, plane normal, and direction from the Hi.Motion section written by CircularMotionSyntax. public class McArcMotionSemantic : INcSemantic, IMakeXmlSource Inheritance object McArcMotionSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName 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. Resolve(LazyLinkedListNode, List, NcDiagnosticProgress) Resolve the syntaxPieceNode into a sequence of IAct. May also mutate SyntaxPiece.JsonObject for downstream semantics. public IEnumerable Resolve(LazyLinkedListNode syntaxPieceNode, List dependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode dependencyList List ncDiagnosticProgress NcDiagnosticProgress Returns IEnumerable" + }, + "api/Hi.NcParsers.Semantics.McLinearMotionSemantic.html": { + "href": "api/Hi.NcParsers.Semantics.McLinearMotionSemantic.html", + "title": "Class McLinearMotionSemantic | HiAPI-C# 2025", + "summary": "Class McLinearMotionSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves McLinear motion into ActFeedrate/ActRapid + ActMcXyzLinearContour or ActMcXyzabcLinearContour. Discriminates by checking whether rotary axis values (A/B/C) are present in MachineCoordinate: XYZ only → ActMcXyzLinearContour XYZABC → ActMcXyzabcLinearContour with Fanuc composite feedrate: d = √(ΔX² + ΔY² + ΔZ² + ΔA_deg² + ΔB_deg² + ΔC_deg²) public class McLinearMotionSemantic : INcSemantic, IMakeXmlSource Inheritance object McLinearMotionSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName 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. Resolve(LazyLinkedListNode, List, NcDiagnosticProgress) Resolve the syntaxPieceNode into a sequence of IAct. May also mutate SyntaxPiece.JsonObject for downstream semantics. public IEnumerable Resolve(LazyLinkedListNode syntaxPieceNode, List dependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode dependencyList List ncDiagnosticProgress NcDiagnosticProgress Returns IEnumerable" + }, + "api/Hi.NcParsers.Semantics.SpindleSpeedSemantic.html": { + "href": "api/Hi.NcParsers.Semantics.SpindleSpeedSemantic.html", + "title": "Class SpindleSpeedSemantic | HiAPI-C# 2025", + "summary": "Class SpindleSpeedSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves ISpindleSpeedDef section into ActSpindleSpeed and ActSpindleDirection. Only emits when spindle speed or direction actually changes from the previous block. public class SpindleSpeedSemantic : INcSemantic, IMakeXmlSource Inheritance object SpindleSpeedSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName 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. Resolve(LazyLinkedListNode, List, NcDiagnosticProgress) Resolve the syntaxPieceNode into a sequence of IAct. May also mutate SyntaxPiece.JsonObject for downstream semantics. public IEnumerable Resolve(LazyLinkedListNode syntaxPieceNode, List dependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode dependencyList List ncDiagnosticProgress NcDiagnosticProgress Returns IEnumerable" }, "api/Hi.NcParsers.Semantics.html": { "href": "api/Hi.NcParsers.Semantics.html", "title": "Namespace Hi.NcParsers.Semantics | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Semantics Classes MachineCoordinateStepSemantic Read MachineCoordinate from MachineCoordinate in JsonObject and produce ActMcXyzStep. Requires ProgramXyzSyntax to have computed McXyz first. SemanticPiece Interfaces INcSemantic Resolves SyntaxPiece into IAct sequence. Unlike INcSyntax which only transforms data in-place, INcSemantic produces machine actions from the parsed syntax data." + "summary": "Namespace Hi.NcParsers.Semantics Classes CompoundMotionSemantic Resolves ICompoundMotionDef into acts by delegating ItemsKey to ResolveItems(JsonArray, JsonObject, Vec3d, IRapidFeedrateConfig). MachineCoordinateStepSemantic Read MachineCoordinate from MachineCoordinate in JsonObject and produce ActMcXyzStep. Requires ProgramXyzSyntax to have computed McXyz first. McArcMotionSemantic Resolves McArc motion into ActFeedrate + ActMcXyzSpiralContour. Reads arc center, plane normal, and direction from the Hi.Motion section written by CircularMotionSyntax. McLinearMotionSemantic Resolves McLinear motion into ActFeedrate/ActRapid + ActMcXyzLinearContour or ActMcXyzabcLinearContour. Discriminates by checking whether rotary axis values (A/B/C) are present in MachineCoordinate: XYZ only → ActMcXyzLinearContour XYZABC → ActMcXyzabcLinearContour with Fanuc composite feedrate: d = √(ΔX² + ΔY² + ΔZ² + ΔA_deg² + ΔB_deg² + ΔC_deg²) SpindleSpeedSemantic Resolves ISpindleSpeedDef section into ActSpindleSpeed and ActSpindleDirection. Only emits when spindle speed or direction actually changes from the previous block. Interfaces INcSemantic Resolves SyntaxPiece into IAct sequence. Unlike INcSyntax which only transforms data in-place, INcSemantic produces machine actions from the parsed syntax data." }, "api/Hi.NcParsers.Sentence.html": { "href": "api/Hi.NcParsers.Sentence.html", "title": "Class Sentence | HiAPI-C# 2025", "summary": "Class Sentence Namespace Hi.NcParsers Assembly HiMech.dll A small NC block for one or several lines. public class Sentence : IGetSentence Inheritance object Sentence Implements IGetSentence Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Sentence(IndexedFileLine) public Sentence(IndexedFileLine indexedFileLine) Parameters indexedFileLine IndexedFileLine Sentence(List) public Sentence(List indexedFileLineList) Parameters indexedFileLineList List Properties BlockText public string BlockText { get; } Property Value string FirstIndexedFileLine public IndexedFileLine FirstIndexedFileLine { get; } Property Value IndexedFileLine IndexedFileLine public IndexedFileLine IndexedFileLine { get; set; } Property Value IndexedFileLine IndexedFileLineList public List IndexedFileLineList { get; set; } Property Value List Methods GetSentence() public Sentence GetSentence() Returns Sentence" }, - "api/Hi.NcParsers.SoftNcComment.html": { - "href": "api/Hi.NcParsers.SoftNcComment.html", - "title": "Class SoftNcComment | HiAPI-C# 2025", - "summary": "Class SoftNcComment Namespace Hi.NcParsers Assembly HiMech.dll public class SoftNcComment Inheritance object SoftNcComment Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Content public string Content { get; set; } Property Value string QuoteMark public string QuoteMark { get; set; } Property Value string" - }, - "api/Hi.NcParsers.SoftNcEnv.html": { - "href": "api/Hi.NcParsers.SoftNcEnv.html", - "title": "Class SoftNcEnv | HiAPI-C# 2025", - "summary": "Class SoftNcEnv Namespace Hi.NcParsers Assembly HiMech.dll public class SoftNcEnv : IMakeXmlSource Inheritance object SoftNcEnv Implements IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SoftNcEnv(XElement, string, string) Ctor. public SoftNcEnv(XElement src, string baseDirectory, string relFile) Parameters src XElement XML baseDirectory string The base directory for relative paths. relFile string The relative file path. Properties XName Name for XML IO. 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." - }, "api/Hi.NcParsers.SoftNcRunner.html": { "href": "api/Hi.NcParsers.SoftNcRunner.html", "title": "Class SoftNcRunner | HiAPI-C# 2025", - "summary": "Class SoftNcRunner Namespace Hi.NcParsers Assembly HiMech.dll Configurable NC Runner. public class SoftNcRunner : IControlRunner, IMakeXmlSource Inheritance object SoftNcRunner Implements IControlRunner IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SoftNcRunner() public SoftNcRunner() SoftNcRunner(XElement, string, string) public SoftNcRunner(XElement src, string baseDirectory, string relFile) Parameters src XElement baseDirectory string relFile string Properties FanucNcRunner public static SoftNcRunner FanucNcRunner { get; } Property Value SoftNcRunner FileIndexOnRunCommand Gets the current file index for run commands. public int FileIndexOnRunCommand { get; } Property Value int HeidenhainNcRunner public static SoftNcRunner HeidenhainNcRunner { get; } Property Value SoftNcRunner MazakNcRunner public static SoftNcRunner MazakNcRunner { get; } Property Value SoftNcRunner NcDependencyList public List NcDependencyList { get; set; } Property Value List NcInitializationList public List NcInitializationList { get; set; } Property Value List NcSemanticList public List NcSemanticList { get; set; } Property Value List NcSyntaxList public List NcSyntaxList { get; set; } Property Value List Segmenter public ISegmenter Segmenter { get; set; } Property Value ISegmenter SiemensNcRunner public static SoftNcRunner SiemensNcRunner { get; } Property Value SoftNcRunner XName public static string XName { get; } Property Value string Methods GetFullSyntaxPieceLinkedList(string, IEnumerable, SessionMessageHost, CancellationToken) public LazyLinkedList GetFullSyntaxPieceLinkedList(string relFilePath, IEnumerable lines, SessionMessageHost sessionMessageHost, CancellationToken cancellationToken) Parameters relFilePath string lines IEnumerable sessionMessageHost SessionMessageHost cancellationToken CancellationToken Returns LazyLinkedList GetSourcedActEntrys(LazyLinkedList, SessionMessageHost, CancellationToken) public IEnumerable GetSourcedActEntrys(LazyLinkedList syntaxPieceLinkedList, SessionMessageHost sessionMessageHost, CancellationToken cancellationToken) Parameters syntaxPieceLinkedList LazyLinkedList sessionMessageHost SessionMessageHost cancellationToken CancellationToken Returns IEnumerable MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. ResetFileIndex() Resets the file index to zero. public void ResetFileIndex() RunControlLines(string, IEnumerable, SessionMessageHost, CancellationToken) Runs raw Control lines and yields source sentence and Act pairs. public IEnumerable RunControlLines(string relFilePath, IEnumerable lines, SessionMessageHost sessionMessageHost, CancellationToken cancellationToken) Parameters relFilePath string The relative path of the control file lines IEnumerable The enumerable collection of command (control code) lines sessionMessageHost SessionMessageHost cancellationToken CancellationToken Cancellation token to cancel the operation Returns IEnumerable Enumerable of source sentence and Act pairs" + "summary": "Class SoftNcRunner Namespace Hi.NcParsers Assembly HiMech.dll Configurable NC Runner. public class SoftNcRunner : IControlRunner, IMakeXmlSource Inheritance object SoftNcRunner Implements IControlRunner IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SoftNcRunner() public SoftNcRunner() SoftNcRunner(XElement, string, string) public SoftNcRunner(XElement src, string baseDirectory, string relFile) Parameters src XElement baseDirectory string relFile string Properties FanucNcRunner public static SoftNcRunner FanucNcRunner { get; } Property Value SoftNcRunner FileIndexOnRunCommand Gets the current file index for run commands. public int FileIndexOnRunCommand { get; } Property Value int HeidenhainNcRunner public static SoftNcRunner HeidenhainNcRunner { get; } Property Value SoftNcRunner MazakNcRunner public static SoftNcRunner MazakNcRunner { get; } Property Value SoftNcRunner NcDependencyList public List NcDependencyList { get; set; } Property Value List NcInitializationList public List NcInitializationList { get; set; } Property Value List NcSemanticList public List NcSemanticList { get; set; } Property Value List NcSyntaxList public List NcSyntaxList { get; set; } Property Value List Segmenter public ISegmenter Segmenter { get; set; } Property Value ISegmenter SiemensNcRunner public static SoftNcRunner SiemensNcRunner { get; } Property Value SoftNcRunner SyntecNcRunner public static SoftNcRunner SyntecNcRunner { get; } Property Value SoftNcRunner XName public static string XName { get; } Property Value string Methods GetFullSyntaxPieceLinkedList(string, IEnumerable, NcDiagnosticProgress, CancellationToken) public LazyLinkedList GetFullSyntaxPieceLinkedList(string relFilePath, IEnumerable lines, NcDiagnosticProgress ncDiagnosticProgress, CancellationToken cancellationToken) Parameters relFilePath string lines IEnumerable ncDiagnosticProgress NcDiagnosticProgress cancellationToken CancellationToken Returns LazyLinkedList GetSourcedActEntrys(LazyLinkedList, NcDiagnosticProgress, CancellationToken) public IEnumerable GetSourcedActEntrys(LazyLinkedList syntaxPieceLinkedList, NcDiagnosticProgress ncDiagnosticProgress, CancellationToken cancellationToken) Parameters syntaxPieceLinkedList LazyLinkedList ncDiagnosticProgress NcDiagnosticProgress cancellationToken CancellationToken Returns IEnumerable MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. ResetFileIndex() Resets the file index to zero. public void ResetFileIndex() RunControlLines(string, IEnumerable, SessionProgress, CancellationToken) Runs raw Control lines and yields source sentence and Act pairs. public IEnumerable RunControlLines(string relFilePath, IEnumerable lines, SessionProgress sessionProgress, CancellationToken cancellationToken) Parameters relFilePath string The relative path of the control file lines IEnumerable The enumerable collection of command (control code) lines sessionProgress SessionProgress cancellationToken CancellationToken Cancellation token to cancel the operation Returns IEnumerable Enumerable of source sentence and Act pairs" }, "api/Hi.NcParsers.SoftNcUtil.html": { "href": "api/Hi.NcParsers.SoftNcUtil.html", "title": "Class SoftNcUtil | HiAPI-C# 2025", - "summary": "Class SoftNcUtil Namespace Hi.NcParsers Assembly HiMech.dll public static class SoftNcUtil Inheritance object SoftNcUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties RegexFlagPrefix Regex prefix pattern that matches word boundary, after digit, after whitespace, or at start of string. The whitespace/start-of-string alternatives are needed for non-word-character prefixes (e.g. Fanuc '#', Siemens '$'). public static string RegexFlagPrefix { get; } Property Value string Methods GrabDouble(ref string, string, bool) Grab double value with decimal point judgement: The text is changed by replacing tag and value to empty string. If enableIntegerShrink is true and no decimal point, the value should be scale by 0.001. public static double GrabDouble(ref string text, string tag, bool enableIntegerShrink) Parameters text string text tag string tag enableIntegerShrink bool If true and no decimal point exists, the value will be scaled by 0.001. Returns double double value GrabFlag(ref string, string) Grabs and removes a flag from the NC text. public static bool GrabFlag(ref string text, string regexTag) Parameters text string The NC text to search and modify. regexTag string The flag tag to search for. Returns bool True if the flag was found and removed; otherwise, false. GrabFlags(ref string, IEnumerable) public static bool GrabFlags(ref string text, IEnumerable tags) Parameters text string tags IEnumerable Returns bool HasAnyFlag(string, IEnumerable) public static bool HasAnyFlag(string text, IEnumerable flags) Parameters text string flags IEnumerable Returns bool HasAnyFlag(string, string) public static bool HasAnyFlag(string text, string flag) Parameters text string flag string Returns bool HasFlagInArray(JsonObject, string) Checks if a specific flag string exists in the Parsing.Flags JsonArray. public static bool HasFlagInArray(this JsonObject parsing, string flag) Parameters parsing JsonObject flag string Returns bool ParseDouble(JsonNode) Parses a double from a JsonNode that may be a number or a string. Extends GetDouble(JsonNode) with string parsing support (needed for values from ParameterizedFlagSyntax which stores values as strings like “180”). Returns 0 if null or unparseable. public static double ParseDouble(this JsonNode node) Parameters node JsonNode Returns double RemoveFlagFromArray(JsonObject, string) Removes a specific flag string from the Parsing.Flags JsonArray. public static void RemoveFlagFromArray(this JsonObject parsing, string flag) Parameters parsing JsonObject flag string SetAndTrimUnparsedText(JsonObject, string) public static void SetAndTrimUnparsedText(this JsonObject root, string unparsedText) Parameters root JsonObject unparsedText string" + "summary": "Class SoftNcUtil Namespace Hi.NcParsers Assembly HiMech.dll public static class SoftNcUtil Inheritance object SoftNcUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties RegexFlagPrefix Regex prefix pattern that matches word boundary, after digit, after whitespace, or at start of string. The whitespace/start-of-string alternatives are needed for non-word-character prefixes (e.g. Fanuc '#', Siemens '$'). public static string RegexFlagPrefix { get; } Property Value string Methods GetOccupiedMotionMode(JsonObject) Removes empty sub-nodes from Parsing, then removes Parsing itself if empty. public static string GetOccupiedMotionMode(this JsonObject json) Parameters json JsonObject Returns string GetVec3d(JsonObject, string) Read Vec3d from a sub-object with X/Y/Z keys. Returns null if the section or all three keys are missing. public static Vec3d GetVec3d(JsonObject json, string sectionKey) Parameters json JsonObject sectionKey string Returns Vec3d GrabDouble(ref string, string, bool) Grab double value with decimal point judgement: The text is changed by replacing tag and value to empty string. If enableIntegerShrink is true and no decimal point, the value should be scale by 0.001. public static double GrabDouble(ref string text, string tag, bool enableIntegerShrink) Parameters text string text tag string tag enableIntegerShrink bool If true and no decimal point exists, the value will be scaled by 0.001. Returns double double value GrabFlag(ref string, string) Grabs and removes a flag from the NC text. public static bool GrabFlag(ref string text, string regexTag) Parameters text string The NC text to search and modify. regexTag string The flag tag to search for. Returns bool True if the flag was found and removed; otherwise, false. GrabFlags(ref string, IEnumerable) public static bool GrabFlags(ref string text, IEnumerable tags) Parameters text string tags IEnumerable Returns bool HasAnyFlag(string, IEnumerable) public static bool HasAnyFlag(string text, IEnumerable flags) Parameters text string flags IEnumerable Returns bool HasAnyFlag(string, string) public static bool HasAnyFlag(string text, string flag) Parameters text string flag string Returns bool HasFlagInArray(JsonObject, string) Checks if a specific flag string exists in the Parsing.Flags JsonArray. public static bool HasFlagInArray(this JsonObject parsing, string flag) Parameters parsing JsonObject flag string Returns bool ParseDouble(JsonNode) Parses a double from a JsonNode that may be a number or a string. Extends GetDouble(JsonNode) with string parsing support (needed for values from ParameterizedFlagSyntax which stores values as strings like “180”). Returns 0 if null or unparseable. public static double ParseDouble(this JsonNode node) Parameters node JsonNode Returns double RemoveFlagFromArray(JsonObject, string) Removes a specific flag string from the Parsing.Flags JsonArray. public static void RemoveFlagFromArray(this JsonObject parsing, string flag) Parameters parsing JsonObject flag string SetAndTrimUnparsedText(JsonObject, string) public static void SetAndTrimUnparsedText(this JsonObject root, string unparsedText) Parameters root JsonObject unparsedText string SetVec3d(JsonObject, string, Vec3d) Write Vec3d to a sub-object with X/Y/Z keys. public static void SetVec3d(JsonObject json, string sectionKey, Vec3d v) Parameters json JsonObject sectionKey string v Vec3d" }, "api/Hi.NcParsers.Syntaxs.BundleSyntax.html": { "href": "api/Hi.NcParsers.Syntaxs.BundleSyntax.html", "title": "Class BundleSyntax | HiAPI-C# 2025", - "summary": "Class BundleSyntax Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Depth-First Sequential Syntaxes management. It saves space by save the LazyLinkedLists from each syntax to only one LazyLinkedLists in SoftNcRunner to get better performance. If the INcSyntax only edit the current node itself, those self-editing INcSyntax without looks-forward is suitable to put into the BundleSyntax. public class BundleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object BundleSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BundleSyntax() public BundleSyntax() BundleSyntax(IEnumerable) public BundleSyntax(IEnumerable syntaxes) Parameters syntaxes IEnumerable BundleSyntax(XElement, string, string) public BundleSyntax(XElement src, string baseDirectory, string relFile) Parameters src XElement baseDirectory string relFile string Properties Name public string Name { get; set; } Property Value string SyntaxList public List SyntaxList { get; } Property Value List XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class BundleSyntax Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Depth-First Sequential Syntaxes management. It saves space by save the LazyLinkedLists from each syntax to only one LazyLinkedLists in SoftNcRunner to get better performance. If the INcSyntax only edit the current node itself, those self-editing INcSyntax without looks-forward is suitable to put into the BundleSyntax. public class BundleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object BundleSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BundleSyntax() public BundleSyntax() BundleSyntax(IEnumerable) public BundleSyntax(IEnumerable syntaxes) Parameters syntaxes IEnumerable BundleSyntax(XElement, string, string) public BundleSyntax(XElement src, string baseDirectory, string relFile) Parameters src XElement baseDirectory string relFile string Properties Name public string Name { get; set; } Property Value string SyntaxList public List SyntaxList { get; } Property Value List XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.Syntaxs.CleanupSyntax.html": { "href": "api/Hi.NcParsers.Syntaxs.CleanupSyntax.html", "title": "Class CleanupSyntax | HiAPI-C# 2025", - "summary": "Class CleanupSyntax Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Removes indicated JSON keys from JsonObject after upstream syntaxes have consumed them. Useful for cleaning up runtime-derived intermediate data (e.g., ProgramToMcTransform) that should not persist in the final output. Place at the end of the syntax list, after all consumers have read the keys. public class CleanupSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CleanupSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples new CleanupSyntax(\"ProgramToMcTransform\", \"ToolOrientation\") Constructors CleanupSyntax(params string[]) public CleanupSyntax(params string[] keys) Parameters keys string[] CleanupSyntax(XElement) public CleanupSyntax(XElement src) Parameters src XElement Properties Keys JSON keys to remove from JsonObject each block. public List Keys { get; set; } Property Value List Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class CleanupSyntax Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Removes indicated JSON keys from JsonObject after upstream syntaxes have consumed them. Useful for cleaning up runtime-derived intermediate data (e.g., ProgramToMcTransform) that should not persist in the final output. Place at the end of the syntax list, after all consumers have read the keys. public class CleanupSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CleanupSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples new CleanupSyntax(\"ProgramToMcTransform\", \"ToolOrientation\") Constructors CleanupSyntax(params string[]) public CleanupSyntax(params string[] keys) Parameters keys string[] CleanupSyntax(XElement) public CleanupSyntax(XElement src) Parameters src XElement Properties Keys JSON keys to remove from JsonObject each block. public List Keys { get; set; } Property Value List Name public string Name { get; } Property Value string XName public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List 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." }, "api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html": { "href": "api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html", "title": "Class FanucSyntaxUtil | HiAPI-C# 2025", - "summary": "Class FanucSyntaxUtil Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll public static class FanucSyntaxUtil Inheritance object FanucSyntaxUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields VarTag public const string VarTag = \"#\" Field Value string Properties CommentSyntax public static BundleSyntax CommentSyntax { get; set; } Property Value BundleSyntax DefaultSyntaxList Syntax list for general kind of Fanuc Controller. public static List DefaultSyntaxList { get; } Property Value List G43p4Syntax G43.4: Fanuc TCPM (Tool Center Point Management / RTCP). Fanuc-specific — not in GeneralSyntaxKit. Siemens equivalent: TRAORI. Heidenhain equivalent: M128. public static ParameterizedFlagSyntax G43p4Syntax { get; } Property Value ParameterizedFlagSyntax G54p1Syntax public static ParameterizedFlagSyntax G54p1Syntax { get; } Property Value ParameterizedFlagSyntax G65Syntax G65: Fanuc one-shot custom macro call. G65 P{program} [L{repeat}] [{arg_letter}{value} ...] public static ParameterizedFlagSyntax G65Syntax { get; } Property Value ParameterizedFlagSyntax Remarks Macro argument letters: A-E, F, H-K, M, Q-Z map to local variables #1-#26. G, L, N, O, P are reserved (G-code prefix, repeat count, line number, program number, program to call). G66Syntax G66: Fanuc modal custom macro call. G66 P{program} [L{repeat}] [{arg_letter}{value} ...] public static ParameterizedFlagSyntax G66Syntax { get; } Property Value ParameterizedFlagSyntax Remarks Same argument letters as G65. Modal: executes at every positioning block until cancelled by G67. M98Syntax M98: Fanuc subprogram call. M98 P{program} [L{repeat}] public static ParameterizedFlagSyntax M98Syntax { get; } Property Value ParameterizedFlagSyntax M99Syntax M99: Fanuc subprogram end / return. M99 [P{sequence}] public static ParameterizedFlagSyntax M99Syntax { get; } Property Value ParameterizedFlagSyntax" + "summary": "Class FanucSyntaxUtil Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll public static class FanucSyntaxUtil Inheritance object FanucSyntaxUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields VarTag public const string VarTag = \"#\" Field Value string Properties CommentSyntax public static BundleSyntax CommentSyntax { get; set; } Property Value BundleSyntax DefaultSyntaxList Syntax list for general kind of Fanuc Controller. public static List DefaultSyntaxList { get; } Property Value List G43p4Syntax G43.4: Fanuc TCPM (Tool Center Point Management / RTCP). Fanuc-specific — not in GenericSyntaxKit. Siemens equivalent: TRAORI. Heidenhain equivalent: M128. public static ParameterizedFlagSyntax G43p4Syntax { get; } Property Value ParameterizedFlagSyntax G54p1Syntax public static ParameterizedFlagSyntax G54p1Syntax { get; } Property Value ParameterizedFlagSyntax G65Syntax G65: Fanuc one-shot custom macro call. G65 P{program} [L{repeat}] [{arg_letter}{value} ...] public static ParameterizedFlagSyntax G65Syntax { get; } Property Value ParameterizedFlagSyntax Remarks Macro argument letters: A-E, F, H-K, M, Q-Z map to local variables #1-#26. G, L, N, O, P are reserved (G-code prefix, repeat count, line number, program number, program to call). G66Syntax G66: Fanuc modal custom macro call. G66 P{program} [L{repeat}] [{arg_letter}{value} ...] public static ParameterizedFlagSyntax G66Syntax { get; } Property Value ParameterizedFlagSyntax Remarks Same argument letters as G65. Modal: executes at every positioning block until cancelled by G67. M98Syntax M98: Fanuc subprogram call. M98 P{program} [L{repeat}] public static ParameterizedFlagSyntax M98Syntax { get; } Property Value ParameterizedFlagSyntax M99Syntax M99: Fanuc subprogram end / return. M99 [P{sequence}] public static ParameterizedFlagSyntax M99Syntax { get; } Property Value ParameterizedFlagSyntax" }, - "api/Hi.NcParsers.Syntaxs.GeneralSyntaxKit.html": { - "href": "api/Hi.NcParsers.Syntaxs.GeneralSyntaxKit.html", - "title": "Class GeneralSyntaxKit | HiAPI-C# 2025", - "summary": "Class GeneralSyntaxKit Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll General/ISO standard syntax kit. Involve G code. Contains syntax definitions for common G codes used across multiple NC systems. public class GeneralSyntaxKit Inheritance object GeneralSyntaxKit Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors GeneralSyntaxKit(string) public GeneralSyntaxKit(string varPrefix) Parameters varPrefix string Properties CannedCycleSyntax G81/G82/G83/G85/G86 Canned drilling cycle syntax. public ParameterizedFlagSyntax CannedCycleSyntax { get; } Property Value ParameterizedFlagSyntax G28Syntax G28 Reference point return syntax. public ParameterizedFlagSyntax G28Syntax { get; } Property Value ParameterizedFlagSyntax G41G42Syntax G41/G42 Cutter radius compensation syntax. public ParameterizedFlagSyntax G41G42Syntax { get; } Property Value ParameterizedFlagSyntax G43G44Syntax G43/G44 Tool length compensation syntax (ISO standard). G43.4 (TCPM) is Fanuc-specific — see G43p4Syntax. public ParameterizedFlagSyntax G43G44Syntax { get; } Property Value ParameterizedFlagSyntax G4Syntax G4 Dwell/Pause syntax. public ParameterizedFlagSyntax G4Syntax { get; } Property Value ParameterizedFlagSyntax G52Syntax G52 Local coordinate system syntax. public ParameterizedFlagSyntax G52Syntax { get; } Property Value ParameterizedFlagSyntax G68Syntax G68 Coordinate rotation syntax. X/Y/Z (center), I/J/K (axis), R (angle) stored as doubles. public ParameterizedFlagSyntax G68Syntax { get; } Property Value ParameterizedFlagSyntax G68p2Syntax G68.2 Tilted work plane syntax. X/Y/Z (origin), I/J/K (euler angles) stored as doubles. A/B/C post-processor hints are parsed by FloatTagSetupSyntax and consumed by IsoG68p2TiltSyntax from Parsing. public ParameterizedFlagSyntax G68p2Syntax { get; } Property Value ParameterizedFlagSyntax ParameterizedFlagSyntaxList public List ParameterizedFlagSyntaxList { get; } Property Value List VarPrefix public string VarPrefix { get; set; } Property Value string" + "api/Hi.NcParsers.Syntaxs.GenericSyntaxKit.html": { + "href": "api/Hi.NcParsers.Syntaxs.GenericSyntaxKit.html", + "title": "Class GenericSyntaxKit | HiAPI-C# 2025", + "summary": "Class GenericSyntaxKit Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Generic/ISO standard syntax kit. Involve G code. Contains syntax definitions for common G codes used across multiple NC systems. public class GenericSyntaxKit Inheritance object GenericSyntaxKit Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors GenericSyntaxKit(string) public GenericSyntaxKit(string varPrefix) Parameters varPrefix string Properties CannedCycleSyntax Canned drilling/boring/tapping cycle syntax (G73/G74/G81/G82/G83/G84/G85/G86/G89). Captures all cycle parameters (X, Y, Z, R, Q, F) into the cycle sub-section (e.g., Parsing.G83) so that cycle syntaxes can read them as a unit and store them for modal lookback. Terminates at G/M only. public ParameterizedFlagSyntax CannedCycleSyntax { get; } Property Value ParameterizedFlagSyntax G28Syntax G28 Reference point return syntax. public ParameterizedFlagSyntax G28Syntax { get; } Property Value ParameterizedFlagSyntax G41G42Syntax G41/G42 Cutter radius compensation syntax. public ParameterizedFlagSyntax G41G42Syntax { get; } Property Value ParameterizedFlagSyntax G43G44Syntax G43/G44 Tool length compensation syntax (ISO standard). G43.4 (TCPM) is Fanuc-specific — see G43p4Syntax. public ParameterizedFlagSyntax G43G44Syntax { get; } Property Value ParameterizedFlagSyntax G4Syntax G4 Dwell/Pause syntax. public ParameterizedFlagSyntax G4Syntax { get; } Property Value ParameterizedFlagSyntax G52Syntax G52 Local coordinate system syntax. public ParameterizedFlagSyntax G52Syntax { get; } Property Value ParameterizedFlagSyntax G68Syntax G68 Coordinate rotation syntax. X/Y/Z (center), I/J/K (axis), R (angle) stored as doubles. public ParameterizedFlagSyntax G68Syntax { get; } Property Value ParameterizedFlagSyntax G68p2Syntax G68.2 Tilted work plane syntax. X/Y/Z (origin), I/J/K (euler angles) stored as doubles. A/B/C post-processor hints are parsed by FloatTagValueSyntax and consumed by IsoG68p2TiltSyntax from Parsing. public ParameterizedFlagSyntax G68p2Syntax { get; } Property Value ParameterizedFlagSyntax ParameterizedFlagSyntaxList public List ParameterizedFlagSyntaxList { get; } Property Value List VarPrefix public string VarPrefix { get; set; } Property Value string" }, "api/Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html": { "href": "api/Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html", "title": "Class HeidenhainSyntaxUtil | HiAPI-C# 2025", - "summary": "Class HeidenhainSyntaxUtil Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll public static class HeidenhainSyntaxUtil Inheritance object HeidenhainSyntaxUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields VarTag public const string VarTag = \"Q\" Field Value string Properties CommentSyntax public static BundleSyntax CommentSyntax { get; set; } Property Value BundleSyntax DefaultSyntaxList Syntax list for general kind of Heidenhain Controller. public static List DefaultSyntaxList { get; } Property Value List FTagSetupSyntax public static FloatTagSetupSyntax FTagSetupSyntax { get; } Property Value FloatTagSetupSyntax FlagSyntax public static FlagSyntax FlagSyntax { get; } Property Value FlagSyntax" + "summary": "Class HeidenhainSyntaxUtil Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll public static class HeidenhainSyntaxUtil Inheritance object HeidenhainSyntaxUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields VarTag public const string VarTag = \"Q\" Field Value string Properties CommentSyntax public static BundleSyntax CommentSyntax { get; set; } Property Value BundleSyntax DefaultSyntaxList Syntax list for general kind of Heidenhain Controller. public static List DefaultSyntaxList { get; } Property Value List FTagValueSyntax public static FloatTagValueSyntax FTagValueSyntax { get; } Property Value FloatTagValueSyntax FlagSyntax public static FlagSyntax FlagSyntax { get; } Property Value FlagSyntax" }, "api/Hi.NcParsers.Syntaxs.IExpandingNcSyntax.html": { "href": "api/Hi.NcParsers.Syntaxs.IExpandingNcSyntax.html", "title": "Interface IExpandingNcSyntax | HiAPI-C# 2025", - "summary": "Interface IExpandingNcSyntax Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Expanding syntax: transforms one SyntaxPiece node into zero or more output pieces (e.g., subprogram inlining, macro expansion, conditional branching). public interface IExpandingNcSyntax : INcSyntax, IMakeXmlSource Inherited Members INcSyntax.Name IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods Expand(LazyLinkedListNode, List) Expand the syntaxPieceNode into a sequence of SyntaxPiece results. IEnumerable Expand(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List Returns IEnumerable" + "summary": "Interface IExpandingNcSyntax Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Expanding syntax: transforms one SyntaxPiece node into zero or more output pieces (e.g., subprogram inlining, macro expansion, conditional branching). public interface IExpandingNcSyntax : INcSyntax, IMakeXmlSource Inherited Members INcSyntax.Name IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods Expand(LazyLinkedListNode, List, NcDiagnosticProgress) Expand the syntaxPieceNode into a sequence of SyntaxPiece results. IEnumerable Expand(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress Returns IEnumerable" }, "api/Hi.NcParsers.Syntaxs.INcSyntax.html": { "href": "api/Hi.NcParsers.Syntaxs.INcSyntax.html", @@ -4262,7 +4292,7 @@ "api/Hi.NcParsers.Syntaxs.ISituNcSyntax.html": { "href": "api/Hi.NcParsers.Syntaxs.ISituNcSyntax.html", "title": "Interface ISituNcSyntax | HiAPI-C# 2025", - "summary": "Interface ISituNcSyntax Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll In-situ syntax: mutates the JsonObject of the given node in-place without changing the node count. Most parsing and logic syntaxes implement this interface. public interface ISituNcSyntax : INcSyntax, IMakeXmlSource Inherited Members INcSyntax.Name IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods Build(LazyLinkedListNode, List) Build syntax arrangement into the syntaxPieceNode in-place. void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List" + "summary": "Interface ISituNcSyntax Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll In-situ syntax: mutates the JsonObject of the given node in-place without changing the node count. Most parsing and logic syntaxes implement this interface. public interface ISituNcSyntax : INcSyntax, IMakeXmlSource Inherited Members INcSyntax.Name IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress" }, "api/Hi.NcParsers.Syntaxs.MazakSyntaxUtil.html": { "href": "api/Hi.NcParsers.Syntaxs.MazakSyntaxUtil.html", @@ -4272,7 +4302,7 @@ "api/Hi.NcParsers.Syntaxs.NcSyntaxUtil.html": { "href": "api/Hi.NcParsers.Syntaxs.NcSyntaxUtil.html", "title": "Class NcSyntaxUtil | HiAPI-C# 2025", - "summary": "Class NcSyntaxUtil Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll public static class NcSyntaxUtil Inheritance object NcSyntaxUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties AxisTagList tag list for the motion axis tags. public static List AxisTagList { get; set; } Property Value List Remarks Must be initialized before MixedNcSyntaxList to avoid static initialization cycle. DefaultCleanupSyntax public static CleanupSyntax DefaultCleanupSyntax { get; set; } Property Value CleanupSyntax FloatTagList tag list for the float number tags. public static List FloatTagList { get; set; } Property Value List Remarks Must be initialized before MixedNcSyntaxList to avoid static initialization cycle. MixedCommentSyntax public static BundleSyntax MixedCommentSyntax { get; set; } Property Value BundleSyntax MixedIndexNoteSyntax public static BundleSyntax MixedIndexNoteSyntax { get; set; } Property Value BundleSyntax Methods GrabTagAssignment(ref string, IEnumerable, string, IEnumerable) Get Tag Assignments with = sign. ex. Siemens: R1=100.5, Z=V1+V2, Z=V1 - V3 * V2 F200 Heidenhain: Q1 = Q2 + 100 Fanuc: #1=#2+#3 public static List GrabTagAssignment(ref string unparsedText, IEnumerable targetTags, string varPrefix, IEnumerable terminateWords = null) Parameters unparsedText string The NC text to parse and modify. targetTags IEnumerable candidate target tags that to be setup value varPrefix string variable index code prefix. terminateWords IEnumerable words that terminate expression (e.g., F, G, M, S). These are different from varPrefix - they signal end of expression, not variables. Returns List List of extracted tag assignments. GrabTagSetup(ref string, IEnumerable, string) Get Tag Setups. Concatenated tag setup syntax. The syntax is for assignment with space or no splition assignment. The syntax is not for assignment sign (=) syntax. ex. Heidenhain: L X Q2 Y33.4 FQ1 Heidenhain: L X Q2 Y33.4 F+Q1 ISO: X100.3Y3.3 Fanuc Macro: X[#1+#2] Y[#1*2+100] public static List GrabTagSetup(ref string unparsedText, IEnumerable targetTags, string varPrefix) Parameters unparsedText string The NC text to parse and modify. targetTags IEnumerable candidate target tags that to be setup value varPrefix string variable index code prefix. ex. Fanuc # for #123; Heidenhain Q for Q123. Returns List List of extracted tag setups." + "summary": "Class NcSyntaxUtil Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll public static class NcSyntaxUtil Inheritance object NcSyntaxUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties AxisTagList tag list for the motion axis tags. public static List AxisTagList { get; set; } Property Value List Remarks Must be initialized before MixedNcSyntaxList to avoid static initialization cycle. FloatTagList tag list for the float number tags. public static List FloatTagList { get; set; } Property Value List Remarks Must be initialized before MixedNcSyntaxList to avoid static initialization cycle. MixedCommentSyntax public static BundleSyntax MixedCommentSyntax { get; set; } Property Value BundleSyntax MixedIndexNoteSyntax public static BundleSyntax MixedIndexNoteSyntax { get; set; } Property Value BundleSyntax Methods GrabTagAssignment(ref string, IEnumerable, string, IEnumerable) Get Tag Assignments with = sign. ex. Siemens: R1=100.5, Z=V1+V2, Z=V1 - V3 * V2 F200 Heidenhain: Q1 = Q2 + 100 Fanuc: #1=#2+#3 public static List GrabTagAssignment(ref string unparsedText, IEnumerable targetTags, string varPrefix, IEnumerable terminateWords = null) Parameters unparsedText string The NC text to parse and modify. targetTags IEnumerable candidate target tags to extract values for varPrefix string variable index code prefix. terminateWords IEnumerable words that terminate expression (e.g., F, G, M, S). These are different from varPrefix - they signal end of expression, not variables. Returns List List of extracted tag assignments. GrabTagValue(ref string, IEnumerable, string) Get tag values. Concatenated tag-value syntax (no = sign). The syntax is for assignment with space or no separation. ex. Heidenhain: L X Q2 Y33.4 FQ1 Heidenhain: L X Q2 Y33.4 F+Q1 ISO: X100.3Y3.3 Fanuc Macro: X[#1+#2] Y[#1*2+100] public static List GrabTagValue(ref string unparsedText, IEnumerable targetTags, string varPrefix) Parameters unparsedText string The NC text to parse and modify. targetTags IEnumerable candidate target tags to extract values for varPrefix string variable index code prefix. ex. Fanuc # for #123; Heidenhain Q for Q123. Returns List List of extracted tag values." }, "api/Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html": { "href": "api/Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html", @@ -4282,17 +4312,17 @@ "api/Hi.NcParsers.Syntaxs.SyntaxPiece.html": { "href": "api/Hi.NcParsers.Syntaxs.SyntaxPiece.html", "title": "Class SyntaxPiece | HiAPI-C# 2025", - "summary": "Class SyntaxPiece Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll public class SyntaxPiece Inheritance object SyntaxPiece Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The design pattern of Sentence and JsonObject are one-one mapping. JSON value type convention: Prefer base types (double, int) over string for numeric values in JsonObject. This applies to both parsing syntaxes and logic syntaxes. Strings should only be used when the value is genuinely textual (e.g., macro variable references like \"#1\", \"Q2\", coordinate IDs like \"G54\") or when the value cannot be parsed to a number. Use FloatTagSetupSyntax, IntegerTagSetupSyntax, or FloatParamPrefixes / IntParamPrefixes to store typed values at parse time. Constructors SyntaxPiece(Sentence, JsonObject) public SyntaxPiece(Sentence sentence, JsonObject jsonObject) Parameters sentence Sentence jsonObject JsonObject Properties JsonObject public JsonObject JsonObject { get; set; } Property Value JsonObject Sentence public Sentence Sentence { get; set; } Property Value Sentence Methods ToString() Serialize with Hi.NcParsers.Syntaxs.NcSyntaxUtil.Options to support NaN/Infinity. public override string ToString() Returns string" + "summary": "Class SyntaxPiece Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll public class SyntaxPiece Inheritance object SyntaxPiece Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The design pattern of Sentence and JsonObject are one-one mapping. JSON value type convention: Prefer base types (double, int) over string for numeric values in JsonObject. This applies to both parsing syntaxes and logic syntaxes. Strings should only be used when the value is genuinely textual (e.g., macro variable references like \"#1\", \"Q2\", coordinate IDs like \"G54\") or when the value cannot be parsed to a number. Use ParsingSyntaxs.FloatTagSetupSyntax, ParsingSyntaxs.IntegerTagSetupSyntax, or FloatParamPrefixes / IntParamPrefixes to store typed values at parse time. Constructors SyntaxPiece(Sentence, JsonObject) public SyntaxPiece(Sentence sentence, JsonObject jsonObject) Parameters sentence Sentence jsonObject JsonObject Properties JsonObject public JsonObject JsonObject { get; set; } Property Value JsonObject Sentence public Sentence Sentence { get; set; } Property Value Sentence Methods ToString() Serialize with Hi.NcParsers.Syntaxs.NcSyntaxUtil.Options to support NaN/Infinity. public override string ToString() Returns string" }, "api/Hi.NcParsers.Syntaxs.SyntecSyntaxUtil.html": { "href": "api/Hi.NcParsers.Syntaxs.SyntecSyntaxUtil.html", "title": "Class SyntecSyntaxUtil | HiAPI-C# 2025", - "summary": "Class SyntecSyntaxUtil Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Syntec-specific NC syntax utilities. public static class SyntecSyntaxUtil Inheritance object SyntecSyntaxUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields VarTag Variable prefix for Syntec (same as Fanuc). public const string VarTag = \"#\" Field Value string Properties CommentSyntax public static BundleSyntax CommentSyntax { get; set; } Property Value BundleSyntax GeneralSyntaxList Syntax list for general kind of Syntec Controller. public static List GeneralSyntaxList { get; } Property Value List" + "summary": "Class SyntecSyntaxUtil Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Syntec-specific NC syntax utilities. public static class SyntecSyntaxUtil Inheritance object SyntecSyntaxUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields VarTag Variable prefix for Syntec (same as Fanuc). public const string VarTag = \"#\" Field Value string Properties CommentSyntax public static BundleSyntax CommentSyntax { get; set; } Property Value BundleSyntax DefaultSyntaxList Syntax list for general kind of Syntec Controller. public static List DefaultSyntaxList { get; } Property Value List" }, - "api/Hi.NcParsers.Syntaxs.TagSetup.html": { - "href": "api/Hi.NcParsers.Syntaxs.TagSetup.html", - "title": "Class TagSetup | HiAPI-C# 2025", - "summary": "Class TagSetup Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll public record TagSetup : IEquatable Inheritance object TagSetup Implements IEquatable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The term Tag generally accomanys with variable value. The term Flag generally not accomanys with variable value. Constructors TagSetup(string, string, string) public TagSetup(string Tag, string Setup, string OriginalText) Parameters Tag string Setup string OriginalText string Remarks The term Tag generally accomanys with variable value. The term Flag generally not accomanys with variable value. Properties OriginalText public string OriginalText { get; init; } Property Value string Setup public string Setup { get; init; } Property Value string Tag public string Tag { get; init; } Property Value string" + "api/Hi.NcParsers.Syntaxs.TagValue.html": { + "href": "api/Hi.NcParsers.Syntaxs.TagValue.html", + "title": "Class TagValue | HiAPI-C# 2025", + "summary": "Class TagValue Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll public record TagValue : IEquatable Inheritance object TagValue Implements IEquatable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The term Tag generally accompanies with variable value. The term Flag generally not accompanies with variable value. Constructors TagValue(string, string, string) public TagValue(string Tag, string Value, string OriginalText) Parameters Tag string Value string OriginalText string Remarks The term Tag generally accompanies with variable value. The term Flag generally not accompanies with variable value. Properties OriginalText public string OriginalText { get; init; } Property Value string Tag public string Tag { get; init; } Property Value string Value public string Value { get; init; } Property Value string" }, "api/Hi.NcParsers.Syntaxs.TransformationUtil.html": { "href": "api/Hi.NcParsers.Syntaxs.TransformationUtil.html", @@ -4302,23 +4332,28 @@ "api/Hi.NcParsers.Syntaxs.html": { "href": "api/Hi.NcParsers.Syntaxs.html", "title": "Namespace Hi.NcParsers.Syntaxs | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Syntaxs Classes BundleSyntax Depth-First Sequential Syntaxes management. It saves space by save the LazyLinkedLists from each syntax to only one LazyLinkedLists in SoftNcRunner to get better performance. If the INcSyntax only edit the current node itself, those self-editing INcSyntax without looks-forward is suitable to put into the BundleSyntax. CleanupSyntax Removes indicated JSON keys from JsonObject after upstream syntaxes have consumed them. Useful for cleaning up runtime-derived intermediate data (e.g., ProgramToMcTransform) that should not persist in the final output. Place at the end of the syntax list, after all consumers have read the keys. FanucSyntaxUtil GeneralSyntaxKit General/ISO standard syntax kit. Involve G code. Contains syntax definitions for common G codes used across multiple NC systems. HeidenhainSyntaxUtil MazakSyntaxUtil Mazak-specific NC syntax utilities. NcSyntaxUtil SiemensSyntaxUtil SyntaxPiece SyntecSyntaxUtil Syntec-specific NC syntax utilities. TagSetup TransformationUtil Utilities for the ProgramToMcTransform chain. Each entry has “Source” (string) and “Mat4d” (16-element JsonArray). AddOrReplaceTransform(JsonObject, string, Mat4d) inserts or replaces an entry by source name. GetComposedTransform(JsonObject) composes all entries into a single Mat4d. Interfaces IExpandingNcSyntax Expanding syntax: transforms one SyntaxPiece node into zero or more output pieces (e.g., subprogram inlining, macro expansion, conditional branching). INcSyntax Base interface for syntax-level data transformation on SyntaxPiece.JsonObject. Unlike INcSemantic which produces IAct, INcSyntax only restructures or enriches parsed data without producing actions. ISituNcSyntax In-situ syntax: mutates the JsonObject of the given node in-place without changing the node count. Most parsing and logic syntaxes implement this interface." + "summary": "Namespace Hi.NcParsers.Syntaxs Classes BundleSyntax Depth-First Sequential Syntaxes management. It saves space by save the LazyLinkedLists from each syntax to only one LazyLinkedLists in SoftNcRunner to get better performance. If the INcSyntax only edit the current node itself, those self-editing INcSyntax without looks-forward is suitable to put into the BundleSyntax. CleanupSyntax Removes indicated JSON keys from JsonObject after upstream syntaxes have consumed them. Useful for cleaning up runtime-derived intermediate data (e.g., ProgramToMcTransform) that should not persist in the final output. Place at the end of the syntax list, after all consumers have read the keys. FanucSyntaxUtil GenericSyntaxKit Generic/ISO standard syntax kit. Involve G code. Contains syntax definitions for common G codes used across multiple NC systems. HeidenhainSyntaxUtil MazakSyntaxUtil Mazak-specific NC syntax utilities. NcSyntaxUtil SiemensSyntaxUtil SyntaxPiece SyntecSyntaxUtil Syntec-specific NC syntax utilities. TagValue TransformationUtil Utilities for the ProgramToMcTransform chain. Each entry has “Source” (string) and “Mat4d” (16-element JsonArray). AddOrReplaceTransform(JsonObject, string, Mat4d) inserts or replaces an entry by source name. GetComposedTransform(JsonObject) composes all entries into a single Mat4d. Interfaces IExpandingNcSyntax Expanding syntax: transforms one SyntaxPiece node into zero or more output pieces (e.g., subprogram inlining, macro expansion, conditional branching). INcSyntax Base interface for syntax-level data transformation on SyntaxPiece.JsonObject. Unlike INcSemantic which produces IAct, INcSyntax only restructures or enriches parsed data without producing actions. ISituNcSyntax In-situ syntax: mutates the JsonObject of the given node in-place without changing the node count. Most parsing and logic syntaxes implement this interface." }, "api/Hi.NcParsers.html": { "href": "api/Hi.NcParsers.html", "title": "Namespace Hi.NcParsers | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers Classes Sentence A small NC block for one or several lines. SoftNcComment SoftNcEnv SoftNcRunner Configurable NC Runner. SoftNcUtil Interfaces IGetSentence Abstraction for a source that carries a Sentence." + "summary": "Namespace Hi.NcParsers Classes NcDiagnostic A structured diagnostic from the SoftNcRunner pipeline, designed for IProgress consumption. Id is composed as {Primary}-{Secondary}--{Abbrev} (e.g., Cycle-Peck--BadPeckQ, Syntax-Build--Exception). For irregular cases that don't fit the pattern, use a custom string. NcDiagnosticProgress Sentence A small NC block for one or several lines. SoftNcRunner Configurable NC Runner. SoftNcUtil Interfaces IGetSentence Abstraction for a source that carries a Sentence. Enums NcDiagnosticCategory Diagnostic category of an NC diagnostic. System + Error → exception/bug, unconsidered case Unsupported + Warning → known unsupported, likely harmless Unsupported + Error → known unsupported, likely matters Validation + Warning → manufacturing/physics may be unfeasible Validation + Error → manufacturing/physics is unfeasible Configuration + Warning → dependency/config missing, using fallback Configuration + Error → dependency/config missing, cannot proceed NcDiagnosticSeverity Importance level of an NC diagnostic. Combined with NcDiagnosticCategory to form the full diagnostic meaning (e.g., Unsupported + Warning)." }, "api/Hi.Numerical.Acts.ActActualTime.html": { "href": "api/Hi.Numerical.Acts.ActActualTime.html", "title": "Class ActActualTime | HiAPI-C# 2025", - "summary": "Class ActActualTime Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents an action that sets the actual time for a machine step. public class ActActualTime : IActMachineStep, IAct Inheritance object ActActualTime Implements IActMachineStep IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActActualTime(TimeSpan) Initializes a new instance of the ActActualTime class. public ActActualTime(TimeSpan actualTime) Parameters actualTime TimeSpan The actual time for the machine step. Properties ActualTime Gets or sets the actual time for the machine step. public TimeSpan ActualTime { get; set; } Property Value TimeSpan" + "summary": "Class ActActualTime Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents an action that sets the actual time for a machine step. public class ActActualTime : IActMachineStep, IAct Inheritance object ActActualTime Implements IActMachineStep IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActActualTime(TimeSpan) Initializes a new instance of the ActActualTime class. public ActActualTime(TimeSpan actualTime) Parameters actualTime TimeSpan The actual time for the machine step. Properties ActualTime Gets or sets the actual time for the machine step. public TimeSpan ActualTime { get; set; } Property Value TimeSpan Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.Numerical.Acts.ActClArc.html": { "href": "api/Hi.Numerical.Acts.ActClArc.html", "title": "Class ActClArc | HiAPI-C# 2025", "summary": "Class ActClArc Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents an arc movement action for cutter location. public class ActClArc : IActClMove, IActDuration, IAct Inheritance object ActClArc Implements IActClMove IActDuration IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ActUtil.GetClSteps(IActClMove, int, IMachiningMotionResolution) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActClArc(ClCircleArc, TimeSpan) Initializes a new instance of the ActClArc class. public ActClArc(ClCircleArc path, TimeSpan duration) Parameters path ClCircleArc The circle arc path. duration TimeSpan The total duration of the arc action. Properties ActDuration Gets or sets the duration of the action. public TimeSpan ActDuration { get; set; } Property Value TimeSpan Remarks The duration represents: The time required to complete the action Should be positive and finite Zero duration indicates an instantaneous action Used for scheduling and timing calculations ClCircleArc Gets or sets the cutter location circle arc. public ClCircleArc ClCircleArc { get; set; } Property Value ClCircleArc Methods GetClPath() Gets the cutter location path. public IClPath GetClPath() Returns IClPath The cutter location path. GetClSteps(IMachiningMotionResolution) Gets a sequence of steps split from this movement under the specified NC resolution. public IEnumerable GetClSteps(IMachiningMotionResolution ncResolution) Parameters ncResolution IMachiningMotionResolution The machining motion resolution. Returns IEnumerable A sequence of ActClStep. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, + "api/Hi.Numerical.Acts.ActClDerivedMcXyzabcContour.html": { + "href": "api/Hi.Numerical.Acts.ActClDerivedMcXyzabcContour.html", + "title": "Class ActClDerivedMcXyzabcContour | HiAPI-C# 2025", + "summary": "Class ActClDerivedMcXyzabcContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents a combined linear movement in both cutter location and machine coordinates. This class handles synchronized linear interpolation of tool position and orientation. public class ActClDerivedMcXyzabcContour : IActDuration, IActMcXyzabcContour, IAct Inheritance object ActClDerivedMcXyzabcContour Implements IActDuration IActMcXyzabcContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This class is used for: Complex 5-axis machining movements Synchronized tool path and orientation control Linear interpolation in multiple coordinate systems Precise tool position and orientation control The movement combines: Linear cutter location interpolation Linear machine coordinate ABC interpolation Synchronized motion control Constructors ActClDerivedMcXyzabcContour(SeqPair, SeqPair, double, TimeSpan, IMachineKinematics) Initializes a new instance of the ActClDerivedMcXyzabcContour class. public ActClDerivedMcXyzabcContour(SeqPair mcSeq, SeqPair controllerClPointSeq, double controllerToolOffset, TimeSpan duration, IMachineKinematics coordinateConverter) Parameters mcSeq SeqPair Machine coordinate sequence pair controllerClPointSeq SeqPair Controller CL point sequence pair controllerToolOffset double Controller's tool height compensation value duration TimeSpan Duration of the contour movement coordinateConverter IMachineKinematics Coordinate converter for transformation Properties ActDuration Gets or sets the duration of the action. public TimeSpan ActDuration { get; set; } Property Value TimeSpan Remarks The duration represents: The time required to complete the action Should be positive and finite Zero duration indicates an instantaneous action Used for scheduling and timing calculations ControllerClPointSeq Controller CL (cutter location) point sequence pair. Computed from controller's compensation height (offset table). Represents where the controller believes the tool tip is. Linearly interpolated during motion resolution. public SeqPair ControllerClPointSeq { get; set; } Property Value SeqPair ControllerToolOffset Controller's tool height compensation value from the offset table. Used to reconstruct attacher position from controller CL. public double ControllerToolOffset { get; set; } Property Value double CoordinateConverter Coordinate Converter. public IMachineKinematics CoordinateConverter { get; set; } Property Value IMachineKinematics McSeq Gets or sets the machine coordinate sequence pair. The Normal property represents ABC angles in radians. public SeqPair McSeq { get; set; } Property Value SeqPair Remarks Contains: Start and end positions in machine coordinates Tool orientation angles (ABC) in radians Used for orientation interpolation Methods GetActMcXyzabcSteps(IMachiningMotionResolution, double, Action) Gets the machine XYZABC steps for this contour. public IEnumerable GetActMcXyzabcSteps(IMachiningMotionResolution ncResolution, double spindleBuckleToToolTipLength, Action coordinateConversionFailedAction) Parameters ncResolution IMachiningMotionResolution The machining motion resolution to use for step generation. spindleBuckleToToolTipLength double The length from spindle buckle to tool tip, used for computing step numbers. coordinateConversionFailedAction Action Called when attacher NP to MC conversion fails; the argument is the failed DVec3d (attacher NP). Returns IEnumerable A collection of machine XYZABC steps. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + }, "api/Hi.Numerical.Acts.ActClLinear.html": { "href": "api/Hi.Numerical.Acts.ActClLinear.html", "title": "Class ActClLinear | HiAPI-C# 2025", @@ -4337,7 +4372,7 @@ "api/Hi.Numerical.Acts.ActCooling.html": { "href": "api/Hi.Numerical.Acts.ActCooling.html", "title": "Class ActCooling | HiAPI-C# 2025", - "summary": "Class ActCooling Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents a cooling action for machining operations. public class ActCooling : IAct Inheritance object ActCooling Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActCooling(bool) Initializes a new instance of the ActCooling class with the specified cooling state. public ActCooling(bool isOn) Parameters isOn bool Indicates whether the cooling is turned on. Properties IsOn Gets or sets a value indicating whether the cooling is turned on. public bool IsOn { get; set; } Property Value bool" + "summary": "Class ActCooling Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents a cooling action for machining operations. public class ActCooling : IAct Inheritance object ActCooling Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActCooling(bool) Initializes a new instance of the ActCooling class with the specified cooling state. public ActCooling(bool isOn) Parameters isOn bool Indicates whether the cooling is turned on. Properties IsOn Gets or sets a value indicating whether the cooling is turned on. public bool IsOn { get; set; } Property Value bool Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.Numerical.Acts.ActData.html": { "href": "api/Hi.Numerical.Acts.ActData.html", @@ -4367,7 +4402,7 @@ "api/Hi.Numerical.Acts.ActLineBegin.html": { "href": "api/Hi.Numerical.Acts.ActLineBegin.html", "title": "Class ActLineBegin | HiAPI-C# 2025", - "summary": "Class ActLineBegin Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents the beginning of a line act in numerical control operations. public class ActLineBegin : IAct Inheritance object ActLineBegin Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActLineBegin() Initializes a new instance of the ActLineBegin class. public ActLineBegin() ActLineBegin(IGetSentence) Initializes a new instance of the ActLineBegin class with a source command. public ActLineBegin(IGetSentence sourceCommand) Parameters sourceCommand IGetSentence The source command associated with this line beginning. Properties SourceCommand Gets or sets the source command associated with this line beginning. public IGetSentence SourceCommand { get; set; } Property Value IGetSentence" + "summary": "Class ActLineBegin Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents the beginning of a line act in numerical control operations. public class ActLineBegin : IAct Inheritance object ActLineBegin Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActLineBegin() Initializes a new instance of the ActLineBegin class. public ActLineBegin() ActLineBegin(IGetSentence) Initializes a new instance of the ActLineBegin class with a source command. public ActLineBegin(IGetSentence sourceCommand) Parameters sourceCommand IGetSentence The source command associated with this line beginning. Properties SourceCommand Gets or sets the source command associated with this line beginning. public IGetSentence SourceCommand { get; set; } Property Value IGetSentence Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.Numerical.Acts.ActLineCsScript.html": { "href": "api/Hi.Numerical.Acts.ActLineCsScript.html", @@ -4377,32 +4412,32 @@ "api/Hi.Numerical.Acts.ActLineEnd.html": { "href": "api/Hi.Numerical.Acts.ActLineEnd.html", "title": "Class ActLineEnd | HiAPI-C# 2025", - "summary": "Class ActLineEnd Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents the end of a line act in numerical control operations. public class ActLineEnd : IAct Inheritance object ActLineEnd Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActLineEnd() Initializes a new instance of the ActLineEnd class. public ActLineEnd() ActLineEnd(ActLineBegin) Initializes a new instance of the ActLineEnd class with a specified line beginning act. public ActLineEnd(ActLineBegin actLineBegin) Parameters actLineBegin ActLineBegin The line beginning act associated with this line end. Properties ActLineBegin Gets or sets the associated line beginning act. public ActLineBegin ActLineBegin { get; set; } Property Value ActLineBegin SourceCommand Gets the source command from the associated line beginning act. public IIndexedFileLine SourceCommand { get; } Property Value IIndexedFileLine" - }, - "api/Hi.Numerical.Acts.ActLinearClAndLinearMcAbcMcXyzabcContour.html": { - "href": "api/Hi.Numerical.Acts.ActLinearClAndLinearMcAbcMcXyzabcContour.html", - "title": "Class ActLinearClAndLinearMcAbcMcXyzabcContour | HiAPI-C# 2025", - "summary": "Class ActLinearClAndLinearMcAbcMcXyzabcContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents a combined linear movement in both cutter location and machine coordinates. This class handles synchronized linear interpolation of tool position and orientation. public class ActLinearClAndLinearMcAbcMcXyzabcContour : IActDuration, IActMcXyzabcContour, IAct Inheritance object ActLinearClAndLinearMcAbcMcXyzabcContour Implements IActDuration IActMcXyzabcContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This class is used for: Complex 5-axis machining movements Synchronized tool path and orientation control Linear interpolation in multiple coordinate systems Precise tool position and orientation control The movement combines: Linear cutter location interpolation Linear machine coordinate ABC interpolation Synchronized motion control Constructors ActLinearClAndLinearMcAbcMcXyzabcContour(SeqPair, SeqPair, double, TimeSpan, IMachineKinematics) Initializes a new instance of the ActLinearClAndLinearMcAbcMcXyzabcContour class. public ActLinearClAndLinearMcAbcMcXyzabcContour(SeqPair mcSeq, SeqPair controllerClPointSeq, double controllerToolOffset, TimeSpan duration, IMachineKinematics coordinateConverter) Parameters mcSeq SeqPair Machine coordinate sequence pair controllerClPointSeq SeqPair Controller CL point sequence pair controllerToolOffset double Controller's tool height compensation value duration TimeSpan Duration of the contour movement coordinateConverter IMachineKinematics Coordinate converter for transformation Properties ActDuration Gets or sets the duration of the action. public TimeSpan ActDuration { get; set; } Property Value TimeSpan Remarks The duration represents: The time required to complete the action Should be positive and finite Zero duration indicates an instantaneous action Used for scheduling and timing calculations ControllerClPointSeq Controller CL (cutter location) point sequence pair. Computed from controller's compensation height (offset table). Represents where the controller believes the tool tip is. Linearly interpolated during motion resolution. public SeqPair ControllerClPointSeq { get; set; } Property Value SeqPair ControllerToolOffset Controller's tool height compensation value from the offset table. Used to reconstruct attacher position from controller CL. public double ControllerToolOffset { get; set; } Property Value double CoordinateConverter Coordinate Converter. public IMachineKinematics CoordinateConverter { get; set; } Property Value IMachineKinematics McSeq Gets or sets the machine coordinate sequence pair. The Normal property represents ABC angles in radians. public SeqPair McSeq { get; set; } Property Value SeqPair Remarks Contains: Start and end positions in machine coordinates Tool orientation angles (ABC) in radians Used for orientation interpolation Methods GetActMcXyzabcSteps(IMachiningMotionResolution, double, Action) Gets the machine XYZABC steps for this contour. public IEnumerable GetActMcXyzabcSteps(IMachiningMotionResolution ncResolution, double spindleBuckleToToolTipLength, Action coordinateConversionFailedAction) Parameters ncResolution IMachiningMotionResolution The machining motion resolution to use for step generation. spindleBuckleToToolTipLength double The length from spindle buckle to tool tip, used for computing step numbers. coordinateConversionFailedAction Action Called when attacher NP to MC conversion fails; the argument is the failed DVec3d (attacher NP). Returns IEnumerable A collection of machine XYZABC steps. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + "summary": "Class ActLineEnd Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents the end of a line act in numerical control operations. public class ActLineEnd : IAct Inheritance object ActLineEnd Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActLineEnd() Initializes a new instance of the ActLineEnd class. public ActLineEnd() ActLineEnd(ActLineBegin) Initializes a new instance of the ActLineEnd class with a specified line beginning act. public ActLineEnd(ActLineBegin actLineBegin) Parameters actLineBegin ActLineBegin The line beginning act associated with this line end. Properties ActLineBegin Gets or sets the associated line beginning act. public ActLineBegin ActLineBegin { get; set; } Property Value ActLineBegin SourceCommand Gets the source command from the associated line beginning act. public IIndexedFileLine SourceCommand { get; } Property Value IIndexedFileLine Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.Numerical.Acts.ActMcPolarLinearContour.html": { "href": "api/Hi.Numerical.Acts.ActMcPolarLinearContour.html", "title": "Class ActMcPolarLinearContour | HiAPI-C# 2025", - "summary": "Class ActMcPolarLinearContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Polar MCZ linear contour. public class ActMcPolarLinearContour : IActDuration, IActMcXyzabcContour, IAct Inheritance object ActMcPolarLinearContour Implements IActDuration IActMcXyzabcContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActMcPolarLinearContour(DVec3d, SeqPair, TimeSpan, double) Initializes a new instance of the ActMcPolarLinearContour class. public ActMcPolarLinearContour(DVec3d preMcXyzabc_rad, SeqPair programPolarXczSeq, TimeSpan duration, double zCoordinateOffset) Parameters preMcXyzabc_rad DVec3d Previous machine XYZ-ABC coordinates in radians programPolarXczSeq SeqPair Program polar XCZ sequence pair duration TimeSpan Duration of the contour movement zCoordinateOffset double Z-coordinate offset Properties ActDuration Gets or sets the duration of the action. public TimeSpan ActDuration { get; set; } Property Value TimeSpan Remarks The duration represents: The time required to complete the action Should be positive and finite Zero duration indicates an instantaneous action Used for scheduling and timing calculations ProgramPolarXczSeq Gets or sets the program polar XCZ sequence pair. public SeqPair ProgramPolarXczSeq { get; set; } Property Value SeqPair Remarks Contains the start and end points in polar XCZ coordinates for interpolation in polar coordinate system. Methods GetActMcXyzabcSteps(IMachiningMotionResolution, double, Action) Gets the machine XYZABC steps for this contour. public IEnumerable GetActMcXyzabcSteps(IMachiningMotionResolution ncResolution, double spindleBuckleToToolTipLength, Action coordinateConversionFailedAction) Parameters ncResolution IMachiningMotionResolution The machining motion resolution to use for step generation. spindleBuckleToToolTipLength double The length from spindle buckle to tool tip, used for computing step numbers. coordinateConversionFailedAction Action Called when attacher NP to MC conversion fails; the argument is the failed DVec3d (attacher NP). Returns IEnumerable A collection of machine XYZABC steps." + "summary": "Class ActMcPolarLinearContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Polar MCZ linear contour. public class ActMcPolarLinearContour : IActDuration, IActMcXyzabcContour, IAct Inheritance object ActMcPolarLinearContour Implements IActDuration IActMcXyzabcContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActMcPolarLinearContour(DVec3d, SeqPair, TimeSpan, double) Initializes a new instance of the ActMcPolarLinearContour class. public ActMcPolarLinearContour(DVec3d preMcXyzabc_rad, SeqPair programPolarXczSeq, TimeSpan duration, double zCoordinateOffset) Parameters preMcXyzabc_rad DVec3d Previous machine XYZ-ABC coordinates in radians programPolarXczSeq SeqPair Program polar XCZ sequence pair duration TimeSpan Duration of the contour movement zCoordinateOffset double Z-coordinate offset Properties ActDuration Gets or sets the duration of the action. public TimeSpan ActDuration { get; set; } Property Value TimeSpan Remarks The duration represents: The time required to complete the action Should be positive and finite Zero duration indicates an instantaneous action Used for scheduling and timing calculations ProgramPolarXczSeq Gets or sets the program polar XCZ sequence pair. public SeqPair ProgramPolarXczSeq { get; set; } Property Value SeqPair Remarks Contains the start and end points in polar XCZ coordinates for interpolation in polar coordinate system. Methods GetActMcXyzabcSteps(IMachiningMotionResolution, double, Action) Gets the machine XYZABC steps for this contour. public IEnumerable GetActMcXyzabcSteps(IMachiningMotionResolution ncResolution, double spindleBuckleToToolTipLength, Action coordinateConversionFailedAction) Parameters ncResolution IMachiningMotionResolution The machining motion resolution to use for step generation. spindleBuckleToToolTipLength double The length from spindle buckle to tool tip, used for computing step numbers. coordinateConversionFailedAction Action Called when attacher NP to MC conversion fails; the argument is the failed DVec3d (attacher NP). Returns IEnumerable A collection of machine XYZABC steps. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.Numerical.Acts.ActMcXyzLinearContour.html": { "href": "api/Hi.Numerical.Acts.ActMcXyzLinearContour.html", "title": "Class ActMcXyzLinearContour | HiAPI-C# 2025", - "summary": "Class ActMcXyzLinearContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Action of Machine Coordinate XYZABC contour by Machine Coordinate linear interpolation. The ABC values should be identity. public class ActMcXyzLinearContour : IActDuration, IActMcXyzContour, IAct Inheritance object ActMcXyzLinearContour Implements IActDuration IActMcXyzContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActMcXyzLinearContour(SeqPair, TimeSpan) Initializes a new instance of the ActMcXyzLinearContour class with the specified machine coordinate sequence and duration. public ActMcXyzLinearContour(SeqPair mcSeq, TimeSpan duration) Parameters mcSeq SeqPair The machine coordinate sequence pair containing the start and end points. duration TimeSpan The duration of the contour movement. Properties ActDuration Gets or sets the duration of the action. public TimeSpan ActDuration { get; set; } Property Value TimeSpan Remarks The duration represents: The time required to complete the action Should be positive and finite Zero duration indicates an instantaneous action Used for scheduling and timing calculations McSeq Gets or sets the machine coordinate sequence pair containing the start and end points. public SeqPair McSeq { get; set; } Property Value SeqPair Methods GetActMcXyzSteps(IMachiningMotionResolution) Gets the machine XYZ steps for this contour. public IEnumerable GetActMcXyzSteps(IMachiningMotionResolution ncResolution) Parameters ncResolution IMachiningMotionResolution The machining motion resolution to use for step generation. Returns IEnumerable A collection of machine XYZ steps. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + "summary": "Class ActMcXyzLinearContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Action of Machine Coordinate XYZ contour by Machine Coordinate linear interpolation. public class ActMcXyzLinearContour : IActDuration, IActMcXyzContour, IAct Inheritance object ActMcXyzLinearContour Implements IActDuration IActMcXyzContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActMcXyzLinearContour(SeqPair, TimeSpan) Initializes a new instance of the ActMcXyzLinearContour class with the specified machine coordinate sequence and duration. public ActMcXyzLinearContour(SeqPair mcSeq, TimeSpan duration) Parameters mcSeq SeqPair The machine coordinate sequence pair containing the start and end points. duration TimeSpan The duration of the contour movement. Properties ActDuration Gets or sets the duration of the action. public TimeSpan ActDuration { get; set; } Property Value TimeSpan Remarks The duration represents: The time required to complete the action Should be positive and finite Zero duration indicates an instantaneous action Used for scheduling and timing calculations McSeq Gets or sets the machine coordinate sequence pair containing the start and end points. public SeqPair McSeq { get; set; } Property Value SeqPair Methods GetActMcXyzSteps(IMachiningMotionResolution) Gets the machine XYZ steps for this contour. public IEnumerable GetActMcXyzSteps(IMachiningMotionResolution ncResolution) Parameters ncResolution IMachiningMotionResolution The machining motion resolution to use for step generation. Returns IEnumerable A collection of machine XYZ steps. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + }, + "api/Hi.Numerical.Acts.ActMcXyzSpiralContour.html": { + "href": "api/Hi.Numerical.Acts.ActMcXyzSpiralContour.html", + "title": "Class ActMcXyzSpiralContour | HiAPI-C# 2025", + "summary": "Class ActMcXyzSpiralContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents a spiral contour movement in machine XYZ coordinates. public class ActMcXyzSpiralContour : IActDuration, IActMcXyzabcContour, IAct Inheritance object ActMcXyzSpiralContour Implements IActDuration IActMcXyzabcContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActMcXyzSpiralContour(Vec3d, Vec3d, Vec3d, Vec3d, int, TimeSpan, Func) Initializes a new instance of the ActMcXyzSpiralContour class with the specified parameters. public ActMcXyzSpiralContour(Vec3d programPosBegin, Vec3d programPosEnd, Vec3d programPosCenterOnBeginPlane, Vec3d centerNormal, int additionalCircleNum, TimeSpan actDuration, Func programPosToMcFunc) Parameters programPosBegin Vec3d The beginning position in program coordinates. programPosEnd Vec3d The ending position in program coordinates. programPosCenterOnBeginPlane Vec3d The center position of the spiral in program coordinates. centerNormal Vec3d The normal vector of the center plane. additionalCircleNum int The number of additional circles in the spiral movement. actDuration TimeSpan The duration of the contour movement. programPosToMcFunc Func The function to convert program position to machine coordinates. Properties ActDuration Gets or sets the duration of the action. public TimeSpan ActDuration { get; set; } Property Value TimeSpan Remarks The duration represents: The time required to complete the action Should be positive and finite Zero duration indicates an instantaneous action Used for scheduling and timing calculations AdditionalCircleNum Gets or sets the number of additional circles in the spiral movement. public int AdditionalCircleNum { get; set; } Property Value int CenterNormal Gets or sets the normal vector of the center plane. public Vec3d CenterNormal { get; set; } Property Value Vec3d ProgramPosBegin Gets or sets the beginning position in program coordinates. public Vec3d ProgramPosBegin { get; set; } Property Value Vec3d ProgramPosCenterOnBeginPlane Gets or sets the center position of the spiral in program coordinates. public Vec3d ProgramPosCenterOnBeginPlane { get; set; } Property Value Vec3d ProgramPosEnd Gets or sets the ending position in program coordinates. public Vec3d ProgramPosEnd { get; set; } Property Value Vec3d ProgramPosToMcFunc Gets or sets the function to convert program position to machine coordinates. public Func ProgramPosToMcFunc { get; set; } Property Value Func Methods GetActMcXyzabcSteps(IMachiningMotionResolution, double, Action) Gets the machine XYZABC steps for this contour. public IEnumerable GetActMcXyzabcSteps(IMachiningMotionResolution ncResolution, double spindleBuckleToToolTipLength, Action coordinateConversionFailedAction) Parameters ncResolution IMachiningMotionResolution The machining motion resolution to use for step generation. spindleBuckleToToolTipLength double The length from spindle buckle to tool tip, used for computing step numbers. coordinateConversionFailedAction Action Called when attacher NP to MC conversion fails; the argument is the failed DVec3d (attacher NP). Returns IEnumerable A collection of machine XYZABC steps. GetDerivative(Vec3d, Vec3d, Vec3d, Vec3d, int, out Vec3d, out double, out double, out Vec3d, out double, out double) Get derivatives. public static void GetDerivative(Vec3d begin, Vec3d end, Vec3d centerOnBeginPlane, Vec3d centerNormal, int additionalCircleNum, out Vec3d arrowBeginOnProj, out double r0, out double r1, out Vec3d axialMove, out double angleOnProj, out double approxCurveLength) Parameters begin Vec3d end Vec3d centerOnBeginPlane Vec3d centerNormal Vec3d additionalCircleNum int arrowBeginOnProj Vec3d r0 double r1 double axialMove Vec3d synchronized move along the axis angleOnProj double approxCurveLength double GetNcDerivative(Vec3d, Vec3d, Vec2d, int, bool, int, out Vec3d, out double, out double, out Vec3d, out double, out double) Calculates the derivative parameters for numerical control spiral movement. public static void GetNcDerivative(Vec3d ncBegin, Vec3d ncEnd, Vec2d ncCenterVec2d, int planeNormalDir, bool isCcw, int additionalCircleNum, out Vec3d arrowBeginOnProj, out double r0, out double r1, out Vec3d axialMove, out double angleOnProj, out double approxCurveLength) Parameters ncBegin Vec3d The beginning position in NC coordinates. ncEnd Vec3d The ending position in NC coordinates. ncCenterVec2d Vec2d The center position vector in 2D NC coordinates. planeNormalDir int The direction of the plane normal (0=X, 1=Y, 2=Z). isCcw bool Indicates whether the movement is counter-clockwise. additionalCircleNum int The number of additional circles in the spiral movement. arrowBeginOnProj Vec3d The output arrow begin position on projection. r0 double The output starting radius. r1 double The output ending radius. axialMove Vec3d The output axial movement vector. angleOnProj double The output angle on projection. approxCurveLength double The output approximate curve length. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.Numerical.Acts.ActMcXyzStep.html": { "href": "api/Hi.Numerical.Acts.ActMcXyzStep.html", "title": "Class ActMcXyzStep | HiAPI-C# 2025", "summary": "Class ActMcXyzStep Namespace Hi.Numerical.Acts Assembly HiMech.dll Action representing a machine coordinate XYZ step movement. This class handles linear positioning in machine coordinates. public class ActMcXyzStep : IActDuration, IActMachineStep, IAct Inheritance object ActMcXyzStep Implements IActDuration IActMachineStep IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This class is used for: Direct machine coordinate movements Linear positioning operations Point-to-point movements Simple trajectory segments The movement is defined by: Target XYZ position in machine coordinates Movement duration Linear interpolation between points Constructors ActMcXyzStep() Initializes a new instance of the ActMcXyzStep class. Creates an empty step with default values. public ActMcXyzStep() ActMcXyzStep(Vec3d, TimeSpan) Initializes a new instance of the ActMcXyzStep class with the specified machine coordinate and duration. public ActMcXyzStep(Vec3d mcXyz, TimeSpan actDuration) Parameters mcXyz Vec3d The machine coordinate XYZ position. This vector: Specifies the target position Uses machine coordinate system Values are in machine units actDuration TimeSpan The duration of the step action. This represents: Time to complete the movement Should account for machine capabilities Must be non-negative Properties ActDuration Gets or sets the duration of the action. public TimeSpan ActDuration { get; set; } Property Value TimeSpan Remarks The duration represents: The time required to complete the action Should be positive and finite Zero duration indicates an instantaneous action Used for scheduling and timing calculations McXyz Gets or sets the machine coordinate XYZ position. public Vec3d McXyz { get; set; } Property Value Vec3d Remarks The position vector represents: X: Machine coordinate X-axis position Y: Machine coordinate Y-axis position Z: Machine coordinate Z-axis position All values are in the machine's native units (typically millimeters). Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, - "api/Hi.Numerical.Acts.ActMcXyzabcOrientableLinearContour.html": { - "href": "api/Hi.Numerical.Acts.ActMcXyzabcOrientableLinearContour.html", - "title": "Class ActMcXyzabcOrientableLinearContour | HiAPI-C# 2025", - "summary": "Class ActMcXyzabcOrientableLinearContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Action of Machine Coordinate XYZABC contour by Machine Coordinate orientable linear interpolation. This class handles complex tool movements with both position and orientation control. public class ActMcXyzabcOrientableLinearContour : IActDuration, IActMcXyzabcContour, IAct Inheritance object ActMcXyzabcOrientableLinearContour Implements IActDuration IActMcXyzabcContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This class is used for: 5-axis machining movements Tool orientation control Linear interpolation with orientation Complex contour following The movement combines: Linear position interpolation (XYZ) Rotational orientation interpolation (ABC) Synchronized motion control Constructors ActMcXyzabcOrientableLinearContour(SeqPair, TimeSpan, IMachineKinematics) Initializes a new instance. public ActMcXyzabcOrientableLinearContour(SeqPair mcSeq, TimeSpan duration, IMachineKinematics coordinateConverter) Parameters mcSeq SeqPair Machine coordinate sequence pair duration TimeSpan Duration of the contour movement coordinateConverter IMachineKinematics Coordinate converter for transformation. Null is acceptable if no cutter location distance is needed. Properties ActDuration Gets or sets the duration of the action. public TimeSpan ActDuration { get; set; } Property Value TimeSpan Remarks The duration represents: The time required to complete the action Should be positive and finite Zero duration indicates an instantaneous action Used for scheduling and timing calculations CoordinateConverter Gets or sets the coordinate converter. Can be null if no cutter location distance is needed for interpolation. public IMachineKinematics CoordinateConverter { get; set; } Property Value IMachineKinematics Remarks The converter is used for: Coordinate system transformations Distance calculations Path optimization Optional for simple movements McSeq Gets or sets the machine coordinate sequence pair. The Normal property of DVec3d represents ABC angles in radians. public SeqPair McSeq { get; set; } Property Value SeqPair Remarks The sequence pair contains: Start and end positions in machine coordinates Tool orientation angles (ABC) in radians Used for interpolation calculations Methods GetActMcXyzabcSteps(IMachiningMotionResolution, double, Action) Gets the machine XYZABC steps for this contour. public IEnumerable GetActMcXyzabcSteps(IMachiningMotionResolution ncResolution, double spindleBuckleToToolTipLength, Action coordinateConversionFailedAction) Parameters ncResolution IMachiningMotionResolution The machining motion resolution to use for step generation. spindleBuckleToToolTipLength double The length from spindle buckle to tool tip, used for computing step numbers. coordinateConversionFailedAction Action Called when attacher NP to MC conversion fails; the argument is the failed DVec3d (attacher NP). Returns IEnumerable A collection of machine XYZABC steps. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + "api/Hi.Numerical.Acts.ActMcXyzabcLinearContour.html": { + "href": "api/Hi.Numerical.Acts.ActMcXyzabcLinearContour.html", + "title": "Class ActMcXyzabcLinearContour | HiAPI-C# 2025", + "summary": "Class ActMcXyzabcLinearContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Action of Machine Coordinate XYZABC contour by Machine Coordinate orientable linear interpolation. This class handles complex tool movements with both position and orientation control. public class ActMcXyzabcLinearContour : IActDuration, IActMcXyzabcContour, IAct Inheritance object ActMcXyzabcLinearContour Implements IActDuration IActMcXyzabcContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This class is used for: 5-axis machining movements Tool orientation control Linear interpolation with orientation Complex contour following The movement combines: Linear position interpolation (XYZ) Rotational orientation interpolation (ABC) Synchronized motion control Constructors ActMcXyzabcLinearContour(SeqPair, TimeSpan, IMachineKinematics) Initializes a new instance. public ActMcXyzabcLinearContour(SeqPair mcSeq, TimeSpan duration, IMachineKinematics coordinateConverter) Parameters mcSeq SeqPair Machine coordinate sequence pair duration TimeSpan Duration of the contour movement coordinateConverter IMachineKinematics Coordinate converter for transformation. Null is acceptable if no cutter location distance is needed. Properties ActDuration Gets or sets the duration of the action. public TimeSpan ActDuration { get; set; } Property Value TimeSpan Remarks The duration represents: The time required to complete the action Should be positive and finite Zero duration indicates an instantaneous action Used for scheduling and timing calculations MachineKinematics Gets or sets the coordinate converter. Can be null if no cutter location distance is needed for interpolation. public IMachineKinematics MachineKinematics { get; set; } Property Value IMachineKinematics Remarks The converter is used for: Coordinate system transformations Distance calculations Path optimization Optional for simple movements McSeq Gets or sets the machine coordinate sequence pair. The Normal property of DVec3d represents ABC angles in radians. public SeqPair McSeq { get; set; } Property Value SeqPair Remarks The sequence pair contains: Start and end positions in machine coordinates Tool orientation angles (ABC) in radians Used for interpolation calculations Methods GetActMcXyzabcSteps(IMachiningMotionResolution, double, Action) Gets the machine XYZABC steps for this contour. public IEnumerable GetActMcXyzabcSteps(IMachiningMotionResolution ncResolution, double spindleBuckleToToolTipLength, Action coordinateConversionFailedAction) Parameters ncResolution IMachiningMotionResolution The machining motion resolution to use for step generation. spindleBuckleToToolTipLength double The length from spindle buckle to tool tip, used for computing step numbers. coordinateConversionFailedAction Action Called when attacher NP to MC conversion fails; the argument is the failed DVec3d (attacher NP). Returns IEnumerable A collection of machine XYZABC steps. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.Numerical.Acts.ActMcXyzabcStep.html": { "href": "api/Hi.Numerical.Acts.ActMcXyzabcStep.html", @@ -4412,23 +4447,23 @@ "api/Hi.Numerical.Acts.ActRapid.html": { "href": "api/Hi.Numerical.Acts.ActRapid.html", "title": "Class ActRapid | HiAPI-C# 2025", - "summary": "Class ActRapid Namespace Hi.Numerical.Acts Assembly HiMech.dll Rapid feedrate. public class ActRapid : ActFeedrate, IAct Inheritance object ActFeedrate ActRapid Implements IAct Inherited Members ActFeedrate.Feedrate_mmds ActFeedrate.Feedrate_mmdmin ActFeedrate.ToString() object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActRapid(double) Ctor. public ActRapid(double rapidFeedrate_mmds) Parameters rapidFeedrate_mmds double" + "summary": "Class ActRapid Namespace Hi.Numerical.Acts Assembly HiMech.dll Rapid feedrate. public class ActRapid : ActFeedrate, IAct Inheritance object ActFeedrate ActRapid Implements IAct Inherited Members ActFeedrate.Feedrate_mmds ActFeedrate.Feedrate_mmdmin object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActRapid(double) Ctor. public ActRapid(double rapidFeedrate_mmds) Parameters rapidFeedrate_mmds double Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.Numerical.Acts.ActSpindleDirection.html": { "href": "api/Hi.Numerical.Acts.ActSpindleDirection.html", "title": "Class ActSpindleDirection | HiAPI-C# 2025", "summary": "Class ActSpindleDirection Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents an action that sets the spindle rotation direction. public class ActSpindleDirection : IAct Inheritance object ActSpindleDirection Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActSpindleDirection() Initializes a new instance. public ActSpindleDirection() ActSpindleDirection(SpindleDirection) Initializes a new instance with the specified spindle direction. public ActSpindleDirection(SpindleDirection spindleDirection) Parameters spindleDirection SpindleDirection The spindle rotation direction. Properties SpindleDirection Gets or sets the spindle rotation direction. public SpindleDirection SpindleDirection { get; set; } Property Value SpindleDirection Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, + "api/Hi.Numerical.Acts.ActSpindleOrientation.html": { + "href": "api/Hi.Numerical.Acts.ActSpindleOrientation.html", + "title": "Class ActSpindleOrientation | HiAPI-C# 2025", + "summary": "Class ActSpindleOrientation Namespace Hi.Numerical.Acts Assembly HiMech.dll Oriented spindle stop — commands the spindle to stop at a specific angular position. Used by G76 (fine boring) and G87 (back boring) to orient the tool before lateral shift. public class ActSpindleOrientation : IAct Inheritance object ActSpindleOrientation Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActSpindleOrientation() public ActSpindleOrientation() ActSpindleOrientation(double) public ActSpindleOrientation(double angle_rad) Parameters angle_rad double Properties Angle_deg Target spindle angle in degrees. public double Angle_deg { get; set; } Property Value double Angle_rad Target spindle angle in radians. public double Angle_rad { get; set; } Property Value double Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + }, "api/Hi.Numerical.Acts.ActSpindleSpeed.html": { "href": "api/Hi.Numerical.Acts.ActSpindleSpeed.html", "title": "Class ActSpindleSpeed | HiAPI-C# 2025", "summary": "Class ActSpindleSpeed Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents an act that controls the spindle speed in numerical control operations. public class ActSpindleSpeed : IAct Inheritance object ActSpindleSpeed Implements IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActSpindleSpeed() Initializes a new instance of the ActSpindleSpeed class. public ActSpindleSpeed() Properties SpindleSpeed_radds Gets or sets the spindle speed in radians per second. public double SpindleSpeed_radds { get; set; } Property Value double SpindleSpeed_rpm Gets or sets the spindle speed in revolutions per minute. public double SpindleSpeed_rpm { get; set; } Property Value double Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, - "api/Hi.Numerical.Acts.ActSpiralMcXyzContour.html": { - "href": "api/Hi.Numerical.Acts.ActSpiralMcXyzContour.html", - "title": "Class ActSpiralMcXyzContour | HiAPI-C# 2025", - "summary": "Class ActSpiralMcXyzContour Namespace Hi.Numerical.Acts Assembly HiMech.dll Represents a spiral contour movement in machine XYZ coordinates. public class ActSpiralMcXyzContour : IActDuration, IActMcXyzabcContour, IAct Inheritance object ActSpiralMcXyzContour Implements IActDuration IActMcXyzabcContour IAct Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ActSpiralMcXyzContour(Vec3d, Vec3d, Vec3d, Vec3d, int, TimeSpan, Func) Initializes a new instance of the ActSpiralMcXyzContour class with the specified parameters. public ActSpiralMcXyzContour(Vec3d programPosBegin, Vec3d programPosEnd, Vec3d programPosCenterOnBeginPlane, Vec3d centerNormal, int additionalCircleNum, TimeSpan actDuration, Func programPosToMcFunc) Parameters programPosBegin Vec3d The beginning position in program coordinates. programPosEnd Vec3d The ending position in program coordinates. programPosCenterOnBeginPlane Vec3d The center position of the spiral in program coordinates. centerNormal Vec3d The normal vector of the center plane. additionalCircleNum int The number of additional circles in the spiral movement. actDuration TimeSpan The duration of the contour movement. programPosToMcFunc Func The function to convert program position to machine coordinates. Properties ActDuration Gets or sets the duration of the action. public TimeSpan ActDuration { get; set; } Property Value TimeSpan Remarks The duration represents: The time required to complete the action Should be positive and finite Zero duration indicates an instantaneous action Used for scheduling and timing calculations AdditionalCircleNum Gets or sets the number of additional circles in the spiral movement. public int AdditionalCircleNum { get; set; } Property Value int CenterNormal Gets or sets the normal vector of the center plane. public Vec3d CenterNormal { get; set; } Property Value Vec3d ProgramPosBegin Gets or sets the beginning position in program coordinates. public Vec3d ProgramPosBegin { get; set; } Property Value Vec3d ProgramPosCenterOnBeginPlane Gets or sets the center position of the spiral in program coordinates. public Vec3d ProgramPosCenterOnBeginPlane { get; set; } Property Value Vec3d ProgramPosEnd Gets or sets the ending position in program coordinates. public Vec3d ProgramPosEnd { get; set; } Property Value Vec3d ProgramPosToMcFunc Gets or sets the function to convert program position to machine coordinates. public Func ProgramPosToMcFunc { get; set; } Property Value Func Methods GetActMcXyzabcSteps(IMachiningMotionResolution, double, Action) Gets the machine XYZABC steps for this contour. public IEnumerable GetActMcXyzabcSteps(IMachiningMotionResolution ncResolution, double spindleBuckleToToolTipLength, Action coordinateConversionFailedAction) Parameters ncResolution IMachiningMotionResolution The machining motion resolution to use for step generation. spindleBuckleToToolTipLength double The length from spindle buckle to tool tip, used for computing step numbers. coordinateConversionFailedAction Action Called when attacher NP to MC conversion fails; the argument is the failed DVec3d (attacher NP). Returns IEnumerable A collection of machine XYZABC steps. GetDerivative(Vec3d, Vec3d, Vec3d, Vec3d, int, out Vec3d, out double, out double, out Vec3d, out double, out double) Get derivatives. public static void GetDerivative(Vec3d begin, Vec3d end, Vec3d centerOnBeginPlane, Vec3d centerNormal, int additionalCircleNum, out Vec3d arrowBeginOnProj, out double r0, out double r1, out Vec3d axialMove, out double angleOnProj, out double approxCurveLength) Parameters begin Vec3d end Vec3d centerOnBeginPlane Vec3d centerNormal Vec3d additionalCircleNum int arrowBeginOnProj Vec3d r0 double r1 double axialMove Vec3d synchronized move along the axis angleOnProj double approxCurveLength double GetNcDerivative(Vec3d, Vec3d, Vec2d, int, bool, int, out Vec3d, out double, out double, out Vec3d, out double, out double) Calculates the derivative parameters for numerical control spiral movement. public static void GetNcDerivative(Vec3d ncBegin, Vec3d ncEnd, Vec2d ncCenterVec2d, int planeNormalDir, bool isCcw, int additionalCircleNum, out Vec3d arrowBeginOnProj, out double r0, out double r1, out Vec3d axialMove, out double angleOnProj, out double approxCurveLength) Parameters ncBegin Vec3d The beginning position in NC coordinates. ncEnd Vec3d The ending position in NC coordinates. ncCenterVec2d Vec2d The center position vector in 2D NC coordinates. planeNormalDir int The direction of the plane normal (0=X, 1=Y, 2=Z). isCcw bool Indicates whether the movement is counter-clockwise. additionalCircleNum int The number of additional circles in the spiral movement. arrowBeginOnProj Vec3d The output arrow begin position on projection. r0 double The output starting radius. r1 double The output ending radius. axialMove Vec3d The output axial movement vector. angleOnProj double The output angle on projection. approxCurveLength double The output approximate curve length. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." - }, "api/Hi.Numerical.Acts.ActToolingStep.html": { "href": "api/Hi.Numerical.Acts.ActToolingStep.html", "title": "Class ActToolingStep | HiAPI-C# 2025", @@ -4512,7 +4547,7 @@ "api/Hi.Numerical.Acts.html": { "href": "api/Hi.Numerical.Acts.html", "title": "Namespace Hi.Numerical.Acts | HiAPI-C# 2025", - "summary": "Namespace Hi.Numerical.Acts Classes ActActualTime Represents an action that sets the actual time for a machine step. ActClArc Represents an arc movement action for cutter location. ActClLinear Represents a linear cutter location movement action. ActClStep Represents a single cutter-location step with optional duration. ActClTeleport Represents a teleport action for cutter location, allowing instant position change without movement. ActCooling Represents a cooling action for machining operations. ActData Action that add data to the step. The data is maybe from the sensor or computed, etc.. ActDelay Represents a delay action in machining operations. This class implements a simple time delay in the machining process. ActFeedrate Represents a feedrate action for controlling the speed of machining operations. ActHiddenStateChanged Represents an action that indicates a change in the hidden state of an object. This action is typically skipped during normal processing. ActIntentionalSkip Represents an action that is intentionally skipped during processing. Used to explicitly mark operations that should be bypassed. ActLineBegin Represents the beginning of a line act in numerical control operations. ActLineCsScript Cs Script on one Line. ActLineEnd Represents the end of a line act in numerical control operations. ActLinearClAndLinearMcAbcMcXyzabcContour Represents a combined linear movement in both cutter location and machine coordinates. This class handles synchronized linear interpolation of tool position and orientation. ActMcPolarLinearContour Polar MCZ linear contour. ActMcXyzLinearContour Action of Machine Coordinate XYZABC contour by Machine Coordinate linear interpolation. The ABC values should be identity. ActMcXyzStep Action representing a machine coordinate XYZ step movement. This class handles linear positioning in machine coordinates. ActMcXyzabcOrientableLinearContour Action of Machine Coordinate XYZABC contour by Machine Coordinate orientable linear interpolation. This class handles complex tool movements with both position and orientation control. ActMcXyzabcStep Action of Machine coordinate XYCABC Step. ActRapid Rapid feedrate. ActSpindleDirection Represents an action that sets the spindle rotation direction. ActSpindleSpeed Represents an act that controls the spindle speed in numerical control operations. ActSpiralMcXyzContour Represents a spiral contour movement in machine XYZ coordinates. ActToolingStep Action of equiping the tool with machining step operation such as collision detection and volume removal. ActToolingTeleport Action of Equiping the tool without machining step operation such as collision detection and volume removal. ActUnknownSkip Represents an act that skips unknown operations in numerical control. ActUtil Provides utility methods for numerical control actions. StateActRunner Manages the state of numerical control operations during runtime. Interfaces IAct Action parsing from NC, CL, NC Steps and etc., for controlling the mechanism and the mechanism simulation process. IActClMove Interface for actions that involve cutter location movement. This interface defines the contract for tool path movements in machining operations. IActDuration Interface for actions that have a specific duration. This interface is used to define actions that take a measurable amount of time to complete. IActMachineStep IActMcXyzContour Interface for actions that represent machine XYZ contours. IActMcXyzabcContour Interface for actions that represent machine XYZABC contours. IActSkip Interface for actions that should be skipped during normal processing. Acts as a marker interface to identify actions that should not be executed. IActTooling Represents a tooling action that changes or selects a tool. IWorkTimeAttrib Interface for objects that provide both read and write access to work time. Combines the functionality of IWorkTimeGetter and IWorkTimeSetter. IWorkTimeGetter Interface for objects that provide read-only access to work time. This interface is part of the work time tracking system for machining operations. IWorkTimeSetter Interface for objects that provide write-only access to work time. This interface is used for components that need to update work time without reading it." + "summary": "Namespace Hi.Numerical.Acts Classes ActActualTime Represents an action that sets the actual time for a machine step. ActClArc Represents an arc movement action for cutter location. ActClDerivedMcXyzabcContour Represents a combined linear movement in both cutter location and machine coordinates. This class handles synchronized linear interpolation of tool position and orientation. ActClLinear Represents a linear cutter location movement action. ActClStep Represents a single cutter-location step with optional duration. ActClTeleport Represents a teleport action for cutter location, allowing instant position change without movement. ActCooling Represents a cooling action for machining operations. ActData Action that add data to the step. The data is maybe from the sensor or computed, etc.. ActDelay Represents a delay action in machining operations. This class implements a simple time delay in the machining process. ActFeedrate Represents a feedrate action for controlling the speed of machining operations. ActHiddenStateChanged Represents an action that indicates a change in the hidden state of an object. This action is typically skipped during normal processing. ActIntentionalSkip Represents an action that is intentionally skipped during processing. Used to explicitly mark operations that should be bypassed. ActLineBegin Represents the beginning of a line act in numerical control operations. ActLineCsScript Cs Script on one Line. ActLineEnd Represents the end of a line act in numerical control operations. ActMcPolarLinearContour Polar MCZ linear contour. ActMcXyzLinearContour Action of Machine Coordinate XYZ contour by Machine Coordinate linear interpolation. ActMcXyzSpiralContour Represents a spiral contour movement in machine XYZ coordinates. ActMcXyzStep Action representing a machine coordinate XYZ step movement. This class handles linear positioning in machine coordinates. ActMcXyzabcLinearContour Action of Machine Coordinate XYZABC contour by Machine Coordinate orientable linear interpolation. This class handles complex tool movements with both position and orientation control. ActMcXyzabcStep Action of Machine coordinate XYCABC Step. ActRapid Rapid feedrate. ActSpindleDirection Represents an action that sets the spindle rotation direction. ActSpindleOrientation Oriented spindle stop — commands the spindle to stop at a specific angular position. Used by G76 (fine boring) and G87 (back boring) to orient the tool before lateral shift. ActSpindleSpeed Represents an act that controls the spindle speed in numerical control operations. ActToolingStep Action of equiping the tool with machining step operation such as collision detection and volume removal. ActToolingTeleport Action of Equiping the tool without machining step operation such as collision detection and volume removal. ActUnknownSkip Represents an act that skips unknown operations in numerical control. ActUtil Provides utility methods for numerical control actions. StateActRunner Manages the state of numerical control operations during runtime. Interfaces IAct Action parsing from NC, CL, NC Steps and etc., for controlling the mechanism and the mechanism simulation process. IActClMove Interface for actions that involve cutter location movement. This interface defines the contract for tool path movements in machining operations. IActDuration Interface for actions that have a specific duration. This interface is used to define actions that take a measurable amount of time to complete. IActMachineStep IActMcXyzContour Interface for actions that represent machine XYZ contours. IActMcXyzabcContour Interface for actions that represent machine XYZABC contours. IActSkip Interface for actions that should be skipped during normal processing. Acts as a marker interface to identify actions that should not be executed. IActTooling Represents a tooling action that changes or selects a tool. IWorkTimeAttrib Interface for objects that provide both read and write access to work time. Combines the functionality of IWorkTimeGetter and IWorkTimeSetter. IWorkTimeGetter Interface for objects that provide read-only access to work time. This interface is part of the work time tracking system for machining operations. IWorkTimeSetter Interface for objects that provide write-only access to work time. This interface is used for components that need to update work time without reading it." }, "api/Hi.Numerical.Args.OrthogonalPlaneFlag.html": { "href": "api/Hi.Numerical.Args.OrthogonalPlaneFlag.html", @@ -4539,16 +4574,6 @@ "title": "Enum CommentMark | HiAPI-C# 2025", "summary": "Enum CommentMark Namespace Hi.Numerical Assembly HiUniNc.dll Enumeration of different comment mark types used in NC code. public enum CommentMark Extension Methods InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MaskUtil.GetMaskedValue(T, T, bool) MaskUtil.SetMask(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields DoubleSlash = 3 Double slash style comments, e.g. //This is a comment. HeadPercent = 4 Percent sign at the beginning style comments, e.g. %This is a comment. Quote = 1 Parenthesis style comments, e.g. (This is a comment). Semicolon = 2 Semicolon style comments, e.g. ;This is a comment." }, - "api/Hi.Numerical.CoordinateEntryDisplayee.html": { - "href": "api/Hi.Numerical.CoordinateEntryDisplayee.html", - "title": "Class CoordinateEntryDisplayee | HiAPI-C# 2025", - "summary": "Class CoordinateEntryDisplayee Namespace Hi.Numerical Assembly HiUniNc.dll Represents a displayable coordinate entry for CNC programming. public class CoordinateEntryDisplayee : IDisplayee, IExpandToBox3d Inheritance object CoordinateEntryDisplayee Implements IDisplayee IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CoordinateEntryDisplayee(Func, Func) Initializes a new instance of the CoordinateEntryDisplayee class. public CoordinateEntryDisplayee(Func ncEnvFunc, Func millingEquipmentSource) Parameters ncEnvFunc Func The function that provides the NcEnv instance. millingEquipmentSource Func The function that provides the machining equipment. Properties HeidenhainCycleDef247Q339 Gets or sets the Heidenhain Cycle Def 247 Q339 value. public int HeidenhainCycleDef247Q339 { get; set; } Property Value int HeidenhainCycleDef7Arg Gets or sets the Heidenhain Cycle Def 7 arguments. public HeidenhainCycleDef7Arg HeidenhainCycleDef7Arg { get; set; } Property Value HeidenhainCycleDef7Arg IsoCoordinateId Gets or sets the ISO coordinate key (e.g. “G54”, “G59.2”). public string IsoCoordinateId { get; set; } Property Value string MillingEquipmentSource Gets or sets the function that provides the machining equipment. public Func MillingEquipmentSource { get; set; } Property Value Func NcEnvFunc Gets or sets the function that provides the NcEnv instance. public Func NcEnvFunc { get; set; } Property Value Func RenderingFlags Gets or sets the rendering flags. public BitArray RenderingFlags { get; set; } Property Value BitArray Remarks cached property. Not output in XML. Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box" - }, - "api/Hi.Numerical.CoordinateEntryRenderingFlag.html": { - "href": "api/Hi.Numerical.CoordinateEntryRenderingFlag.html", - "title": "Enum CoordinateEntryRenderingFlag | HiAPI-C# 2025", - "summary": "Enum CoordinateEntryRenderingFlag Namespace Hi.Numerical Assembly HiUniNc.dll Flags that control how coordinate entries are rendered. [Flags] public enum CoordinateEntryRenderingFlag Extension Methods InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MaskUtil.GetMaskedValue(T, T, bool) MaskUtil.SetMask(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields HeidenhainDatumPreset = 2 Heidenhain datum preset rendering. HeidenhainDatumShift = ISO | HeidenhainDatumPreset Heidenhain datum shift rendering. ISO = 1 ISO coordinate rendering. None = 0 No rendering flags." - }, "api/Hi.Numerical.CoordinateInterpolationMode.html": { "href": "api/Hi.Numerical.CoordinateInterpolationMode.html", "title": "Enum CoordinateInterpolationMode | HiAPI-C# 2025", @@ -4557,7 +4582,7 @@ "api/Hi.Numerical.FilePlayers.CsvRunner.html": { "href": "api/Hi.Numerical.FilePlayers.CsvRunner.html", "title": "Class CsvRunner | HiAPI-C# 2025", - "summary": "Class CsvRunner Namespace Hi.Numerical.FilePlayers Assembly HiNc.dll Provides functionality for running and processing csv lines. public class CsvRunner : IControlRunner Inheritance object CsvRunner Implements IControlRunner Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsvRunner(PacePlayer, LocalProjectService) Initializes a new instance. public CsvRunner(PacePlayer pacePlayer, LocalProjectService localProjectService) Parameters pacePlayer PacePlayer The pace player for controlling playback. localProjectService LocalProjectService The local project service. Properties Config Configuration for CSV Runner. public CsvRunnerConfig Config { get; set; } Property Value CsvRunnerConfig PacePlayer Gets the pace player for controlling playback. public PacePlayer PacePlayer { get; } Property Value PacePlayer Methods Reset() Reset runtime data. public void Reset() ResetFileIndex() Resets the file index to zero. public void ResetFileIndex() RunControlLines(string, IEnumerable, SessionMessageHost, CancellationToken) Runs raw Control lines and yields source sentence and Act pairs. public IEnumerable RunControlLines(string relFilePath, IEnumerable lines, SessionMessageHost sessionMessageHost, CancellationToken cancellationToken) Parameters relFilePath string The relative path of the control file lines IEnumerable The enumerable collection of command (control code) lines sessionMessageHost SessionMessageHost cancellationToken CancellationToken Cancellation token to cancel the operation Returns IEnumerable Enumerable of source sentence and Act pairs RunToLineEnd() Set EnumerablePlayer before use the function. public void RunToLineEnd()" + "summary": "Class CsvRunner Namespace Hi.Numerical.FilePlayers Assembly HiNc.dll Provides functionality for running and processing csv lines. public class CsvRunner : IControlRunner Inheritance object CsvRunner Implements IControlRunner Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsvRunner(PacePlayer, LocalProjectService) Initializes a new instance. public CsvRunner(PacePlayer pacePlayer, LocalProjectService localProjectService) Parameters pacePlayer PacePlayer The pace player for controlling playback. localProjectService LocalProjectService The local project service. Properties Config Configuration for CSV Runner. public CsvRunnerConfig Config { get; set; } Property Value CsvRunnerConfig PacePlayer Gets the pace player for controlling playback. public PacePlayer PacePlayer { get; } Property Value PacePlayer Methods Reset() Reset runtime data. public void Reset() ResetFileIndex() Resets the file index to zero. public void ResetFileIndex() RunControlLines(string, IEnumerable, SessionProgress, CancellationToken) Runs raw Control lines and yields source sentence and Act pairs. public IEnumerable RunControlLines(string relFilePath, IEnumerable lines, SessionProgress sessionMessageHost, CancellationToken cancellationToken) Parameters relFilePath string The relative path of the control file lines IEnumerable The enumerable collection of command (control code) lines sessionMessageHost SessionProgress cancellationToken CancellationToken Cancellation token to cancel the operation Returns IEnumerable Enumerable of source sentence and Act pairs RunToLineEnd() Set EnumerablePlayer before use the function. public void RunToLineEnd()" }, "api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html": { "href": "api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html", @@ -4567,7 +4592,7 @@ "api/Hi.Numerical.FilePlayers.HardNcRunner.html": { "href": "api/Hi.Numerical.FilePlayers.HardNcRunner.html", "title": "Class HardNcRunner | HiAPI-C# 2025", - "summary": "Class HardNcRunner Namespace Hi.Numerical.FilePlayers Assembly HiNc.dll Provides functionality for running and processing NC code lines. public class HardNcRunner : IControlRunner Inheritance object HardNcRunner Implements IControlRunner Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties FileIndexOnRunCommand Gets the current file index for run commands. public int FileIndexOnRunCommand { get; } Property Value int NcLines Gets the linked list of NC lines. public LinkedList NcLines { get; } Property Value LinkedList PacePlayer Gets the pace player for controlling playback. public PacePlayer PacePlayer { get; } Property Value PacePlayer Methods ResetFileIndex() Resets the file index to zero. public void ResetFileIndex() RunControlLines(string, IEnumerable, SessionMessageHost, CancellationToken) Runs raw NC lines and yields NcLine and Act pairs. public IEnumerable RunControlLines(string relNcFilePath, IEnumerable lines, SessionMessageHost sessionMessageHost, CancellationToken cancellationToken) Parameters relNcFilePath string The relative path of the NC file lines IEnumerable The enumerable collection of NC code lines sessionMessageHost SessionMessageHost The session message host for logging. cancellationToken CancellationToken Cancellation token to cancel the operation Returns IEnumerable Enumerable of NcLine and Act pairs RunToLineEnd() Set EnumerablePlayer before use the function. public void RunToLineEnd()" + "summary": "Class HardNcRunner Namespace Hi.Numerical.FilePlayers Assembly HiNc.dll Provides functionality for running and processing NC code lines. public class HardNcRunner : IControlRunner Inheritance object HardNcRunner Implements IControlRunner Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties FileIndexOnRunCommand Gets the current file index for run commands. public int FileIndexOnRunCommand { get; } Property Value int NcLines Gets the linked list of NC lines. public LinkedList NcLines { get; } Property Value LinkedList PacePlayer Gets the pace player for controlling playback. public PacePlayer PacePlayer { get; } Property Value PacePlayer Methods ResetFileIndex() Resets the file index to zero. public void ResetFileIndex() RunControlLines(string, IEnumerable, SessionProgress, CancellationToken) Runs raw NC lines and yields NcLine and Act pairs. public IEnumerable RunControlLines(string relNcFilePath, IEnumerable lines, SessionProgress sessionMessageHost, CancellationToken cancellationToken) Parameters relNcFilePath string The relative path of the NC file lines IEnumerable The enumerable collection of NC code lines sessionMessageHost SessionProgress The session message host for logging. cancellationToken CancellationToken Cancellation token to cancel the operation Returns IEnumerable Enumerable of NcLine and Act pairs RunToLineEnd() Set EnumerablePlayer before use the function. public void RunToLineEnd()" }, "api/Hi.Numerical.FilePlayers.html": { "href": "api/Hi.Numerical.FilePlayers.html", @@ -4587,7 +4612,7 @@ "api/Hi.Numerical.HardNcEnv.html": { "href": "api/Hi.Numerical.HardNcEnv.html", "title": "Class HardNcEnv | HiAPI-C# 2025", - "summary": "Class HardNcEnv Namespace Hi.Numerical Assembly HiUniNc.dll Represents the numerical control environment containing configuration for CNC operations. public class HardNcEnv : IMakeXmlSource Inheritance object HardNcEnv Implements IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HardNcEnv(CncBrand) Ctor. public HardNcEnv(CncBrand cncBrand = CncBrand.Fanuc) Parameters cncBrand CncBrand HardNcEnv(XElement, string, string) Ctor. public HardNcEnv(XElement src, string baseDirectory, string relFile) Parameters src XElement XML baseDirectory string The base directory for relative paths. relFile string The relative file path. Properties AttacherAtMcZeroOnTableCoordinate Gets the attacher position at machine zero on table coordinate. public Vec3d AttacherAtMcZeroOnTableCoordinate { get; } Property Value Vec3d CncBrand Gets or sets the CNC brand/controller type. public CncBrand CncBrand { get; set; } Property Value CncBrand CommentSymbol Gets the comment symbol used by the current CNC controller. public string CommentSymbol { get; } Property Value string ConfigurationTable Gets a dictionary of CNC configuration parameters used by the system. public Dictionary ConfigurationTable { get; } Property Value Dictionary CoordinateConverter Gets or sets the coordinate converter used for transformations between different coordinate systems. public XyzabcSolver CoordinateConverter { get; set; } Property Value XyzabcSolver EnableArcCornerRadiusCompensation Gets or sets whether arc corner radius compensation is enabled. public bool EnableArcCornerRadiusCompensation { get; set; } Property Value bool EnableIntegerShrinkOnPositionCommand Gets or sets whether integer shrinking is enabled for position commands. e.g., “X1.” is interpreted as X=1.0 when enabled. public bool EnableIntegerShrinkOnPositionCommand { get; set; } Property Value bool EnableShortestRotary Enables shortest rotary path movement. This option does not affect Heidenhain controllers. For Heidenhain controllers, see Hi.UniNc.Heidenhain.IHeidenhainShortestRotaryPathEnabled, Hi.UniNc.Heidenhain.HeidenhainM126 and Hi.UniNc.Heidenhain.HeidenhainM127. public bool EnableShortestRotary { get; set; } Property Value bool FanucPara5003 Fanuc 5003. These bits are used to specify the type of startup/cancellation of tool radius - tool nose radius compensation. 0: type A; 1: type B; 2,3: type C. Assume always zero. Type A: A compensation vector perpendicular to the block next to the startup block or the block preceding the cancellation block is output. Type B: A compensation vector perpendicular to the startup block or cancellation block and an intersection vector are output. Type C: When the startup block or cancellation block specifies no movement operation, the tool is shifted by the cutter compensation amount in a direction perpendicular to the block next to the startup or the block before cancellation block. public byte FanucPara5003 { get; set; } Property Value byte HeidenhainDatumPresetTable For Heidenhain CYCL DEF 247 Datum Preset. public Dictionary HeidenhainDatumPresetTable { get; } Property Value Dictionary Remarks Datum Preset seems an older settings in heidenhain manual relative to Datum Shift. HeidenhainDatumShiftTable For Heidenhain CYCL DEF 7 Datum Shift. Also called Datum table in heidenhain manual. public Dictionary HeidenhainDatumShiftTable { get; } Property Value Dictionary Remarks Datum Preset seems an older settings in heidenhain manual relative to Datum Shift. HeidenhainMasterAxisChar Gets or sets the Heidenhain master rotary axis as a character (A, B, or C). public char HeidenhainMasterAxisChar { get; set; } Property Value char HeidenhainMasterAxisDir The master axis determines the behaviour of SEQ command. ex. PLANE SPATIAL SPA-77.516 SPB+0 SPC-10.365 STAY SEQ-TABLE ROT The master axis is the 1st rotary axis from the tool, or the last rotary axis from the table(depending on the machine configuration). SEQ+ positions the master axis so that it assumes a positive angle. See: TNC 640 | User's ManualDIN/ISO Programming | 1/2015 p432 public int HeidenhainMasterAxisDir { get; set; } Property Value int HomeMc Home machine coordinate. First reference position. The position may not equal to machine zero in real Fanuc controller. public Vec3d HomeMc { get; set; } Property Value Vec3d IsAxisAExisted Gets whether the A axis exists in the machine configuration. public bool IsAxisAExisted { get; } Property Value bool IsAxisBExisted Gets whether the B axis exists in the machine configuration. public bool IsAxisBExisted { get; } Property Value bool IsAxisCExisted Gets whether the C axis exists in the machine configuration. public bool IsAxisCExisted { get; } Property Value bool IsIdealOffsetDependentOnToolHouse Gets or sets whether the ideal offset depends on tool house position. public bool IsIdealOffsetDependentOnToolHouse { get; set; } Property Value bool IsoCoordinateTable ISO coordinate table. i.e., CoordinateTable For G54 series. public IsoCoordinateTable IsoCoordinateTable { get; set; } Property Value IsoCoordinateTable MaxRotarySpeedABC_degds For safety reason, internal use only. Maximum rotary speed in degds. public Vec3d MaxRotarySpeedABC_degds { get; set; } Property Value Vec3d MaxRotarySpeedABC_radds Maximum rotary speed in rad/s. public Vec3d MaxRotarySpeedABC_radds { get; set; } Property Value Vec3d MaxSpindleSpeed_rpm Gets or sets the maximum spindle speed in revolutions per minute. public double MaxSpindleSpeed_rpm { get; set; } Property Value double MillingToolOffsetTable Gets or sets the milling tool offset table for tool compensation. public MillingToolOffsetTable MillingToolOffsetTable { get; set; } Property Value MillingToolOffsetTable RapidFeedrate_mmdmin Rapid move speed in mm/min. public double RapidFeedrate_mmdmin { get; set; } Property Value double RapidFeedrate_mmds Rapid move speed in mm/s. public double RapidFeedrate_mmds { get; set; } Property Value double RefNcLineOnInit Gets or sets the reference NC line used during initialization. public HardNcLine RefNcLineOnInit { get; set; } Property Value HardNcLine StrokeLimitAbc_rad Gets or sets the ABC axis stroke limits in radians. public Box3d StrokeLimitAbc_rad { get; set; } Property Value Box3d StrokeLimitXyz_mm Gets or sets the XYZ axis stroke limits in millimeters. public Box3d StrokeLimitXyz_mm { get; set; } Property Value Box3d ToolingMcAbc_deg Gets or sets the rotary machine coordinate for tooling operations. Defaults to HomeMc if not explicitly set. Set to NaN if tooling motion not apply the axis motion. Unit is degree. public Vec3d ToolingMcAbc_deg { get; set; } Property Value Vec3d ToolingMcAbc_rad Gets or sets the rotary machine coordinate for tooling operations. Defaults to HomeMc if not explicitly set. Set to NaN if tooling motion not apply the axis motion. Unit is radian. public Vec3d ToolingMcAbc_rad { get; set; } Property Value Vec3d ToolingMcXyz Gets or sets the translation machine coordinate for tooling operations. Defaults to HomeMc if not explicitly set. Set to NaN if tooling motion not apply the axis motion. public Vec3d ToolingMcXyz { get; set; } Property Value Vec3d ToolingTime Tool changing duration in sec. public TimeSpan ToolingTime { get; set; } Property Value TimeSpan XName Name for XML IO. public static string XName { get; } Property Value string Methods CheckStrokeLimit(DVec3d, IProgress) Check stroke limit. public bool CheckStrokeLimit(DVec3d mcXyzabc_mm_rad, IProgress messageKit) Parameters mcXyzabc_mm_rad DVec3d Machine coordinates in mm and radians. messageKit IProgress Message kit for error reporting. Returns bool Is under stroke limit. IsAxisExisted(int) Determines whether a specific rotary axis exists in the machine configuration. public bool IsAxisExisted(int dir) Parameters dir int The direction index (0=A, 1=B, 2=C). Returns bool True if the specified axis exists; otherwise, false. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HardNcEnv Namespace Hi.Numerical Assembly HiUniNc.dll Represents the numerical control environment containing configuration for CNC operations. public class HardNcEnv : IMakeXmlSource Inheritance object HardNcEnv Implements IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HardNcEnv(CncBrand) Ctor. public HardNcEnv(CncBrand cncBrand = CncBrand.Fanuc) Parameters cncBrand CncBrand HardNcEnv(XElement, string, string) Ctor. public HardNcEnv(XElement src, string baseDirectory, string relFile) Parameters src XElement XML baseDirectory string The base directory for relative paths. relFile string The relative file path. Properties AttacherAtMcZeroOnTableCoordinate Gets the attacher position at machine zero on table coordinate. public Vec3d AttacherAtMcZeroOnTableCoordinate { get; } Property Value Vec3d CncBrand Gets or sets the CNC brand/controller type. public CncBrand CncBrand { get; set; } Property Value CncBrand CommentSymbol Gets the comment symbol used by the current CNC controller. public string CommentSymbol { get; } Property Value string ConfigurationTable Gets a dictionary of CNC configuration parameters used by the system. public Dictionary ConfigurationTable { get; } Property Value Dictionary EnableArcCornerRadiusCompensation Gets or sets whether arc corner radius compensation is enabled. public bool EnableArcCornerRadiusCompensation { get; set; } Property Value bool EnableIntegerShrinkOnPositionCommand Gets or sets whether integer shrinking is enabled for position commands. e.g., “X1.” is interpreted as X=1.0 when enabled. public bool EnableIntegerShrinkOnPositionCommand { get; set; } Property Value bool EnableShortestRotary Enables shortest rotary path movement. This option does not affect Heidenhain controllers. For Heidenhain controllers, see Hi.UniNc.Heidenhain.IHeidenhainShortestRotaryPathEnabled, Hi.UniNc.Heidenhain.HeidenhainM126 and Hi.UniNc.Heidenhain.HeidenhainM127. public bool EnableShortestRotary { get; set; } Property Value bool FanucPara5003 Fanuc 5003. These bits are used to specify the type of startup/cancellation of tool radius - tool nose radius compensation. 0: type A; 1: type B; 2,3: type C. Assume always zero. Type A: A compensation vector perpendicular to the block next to the startup block or the block preceding the cancellation block is output. Type B: A compensation vector perpendicular to the startup block or cancellation block and an intersection vector are output. Type C: When the startup block or cancellation block specifies no movement operation, the tool is shifted by the cutter compensation amount in a direction perpendicular to the block next to the startup or the block before cancellation block. public byte FanucPara5003 { get; set; } Property Value byte HeidenhainDatumPresetTable For Heidenhain CYCL DEF 247 Datum Preset. public Dictionary HeidenhainDatumPresetTable { get; } Property Value Dictionary Remarks Datum Preset seems an older settings in heidenhain manual relative to Datum Shift. HeidenhainDatumShiftTable For Heidenhain CYCL DEF 7 Datum Shift. Also called Datum table in heidenhain manual. public Dictionary HeidenhainDatumShiftTable { get; } Property Value Dictionary Remarks Datum Preset seems an older settings in heidenhain manual relative to Datum Shift. HeidenhainMasterAxisChar Gets or sets the Heidenhain master rotary axis as a character (A, B, or C). public char HeidenhainMasterAxisChar { get; set; } Property Value char HeidenhainMasterAxisDir The master axis determines the behaviour of SEQ command. ex. PLANE SPATIAL SPA-77.516 SPB+0 SPC-10.365 STAY SEQ-TABLE ROT The master axis is the 1st rotary axis from the tool, or the last rotary axis from the table(depending on the machine configuration). SEQ+ positions the master axis so that it assumes a positive angle. See: TNC 640 | User's ManualDIN/ISO Programming | 1/2015 p432 public int HeidenhainMasterAxisDir { get; set; } Property Value int HomeMc Home machine coordinate. First reference position. The position may not equal to machine zero in real Fanuc controller. public Vec3d HomeMc { get; set; } Property Value Vec3d IsAxisAExisted Gets whether the A axis exists in the machine configuration. public bool IsAxisAExisted { get; } Property Value bool IsAxisBExisted Gets whether the B axis exists in the machine configuration. public bool IsAxisBExisted { get; } Property Value bool IsAxisCExisted Gets whether the C axis exists in the machine configuration. public bool IsAxisCExisted { get; } Property Value bool IsIdealOffsetDependentOnToolHouse Gets or sets whether the ideal offset depends on tool house position. public bool IsIdealOffsetDependentOnToolHouse { get; set; } Property Value bool IsoCoordinateTable ISO coordinate table. i.e., CoordinateTable For G54 series. public IsoCoordinateTable IsoCoordinateTable { get; set; } Property Value IsoCoordinateTable MaxRotarySpeedABC_degds For safety reason, internal use only. Maximum rotary speed in degds. public Vec3d MaxRotarySpeedABC_degds { get; set; } Property Value Vec3d MaxRotarySpeedABC_radds Maximum rotary speed in rad/s. public Vec3d MaxRotarySpeedABC_radds { get; set; } Property Value Vec3d MaxSpindleSpeed_rpm Gets or sets the maximum spindle speed in revolutions per minute. public double MaxSpindleSpeed_rpm { get; set; } Property Value double MillingToolOffsetTable Gets or sets the milling tool offset table for tool compensation. public MillingToolOffsetTable MillingToolOffsetTable { get; set; } Property Value MillingToolOffsetTable RapidFeedrate_mmdmin Rapid move speed in mm/min. public double RapidFeedrate_mmdmin { get; set; } Property Value double RapidFeedrate_mmds Rapid move speed in mm/s. public double RapidFeedrate_mmds { get; set; } Property Value double RefNcLineOnInit Gets or sets the reference NC line used during initialization. public HardNcLine RefNcLineOnInit { get; set; } Property Value HardNcLine StrokeLimitAbc_rad Gets or sets the ABC axis stroke limits in radians. public Box3d StrokeLimitAbc_rad { get; set; } Property Value Box3d StrokeLimitXyz_mm Gets or sets the XYZ axis stroke limits in millimeters. public Box3d StrokeLimitXyz_mm { get; set; } Property Value Box3d ToolingMcAbc_deg Gets or sets the rotary machine coordinate for tooling operations. Defaults to HomeMc if not explicitly set. Set to NaN if tooling motion not apply the axis motion. Unit is degree. public Vec3d ToolingMcAbc_deg { get; set; } Property Value Vec3d ToolingMcAbc_rad Gets or sets the rotary machine coordinate for tooling operations. Defaults to HomeMc if not explicitly set. Set to NaN if tooling motion not apply the axis motion. Unit is radian. public Vec3d ToolingMcAbc_rad { get; set; } Property Value Vec3d ToolingMcXyz Gets or sets the translation machine coordinate for tooling operations. Defaults to HomeMc if not explicitly set. Set to NaN if tooling motion not apply the axis motion. public Vec3d ToolingMcXyz { get; set; } Property Value Vec3d ToolingTime Tool changing duration in sec. public TimeSpan ToolingTime { get; set; } Property Value TimeSpan XName Name for XML IO. public static string XName { get; } Property Value string XyzabcSolver Gets or sets the coordinate converter used for transformations between different coordinate systems. public XyzabcSolver XyzabcSolver { get; set; } Property Value XyzabcSolver Methods CheckStrokeLimit(DVec3d, IProgress) Check stroke limit. public bool CheckStrokeLimit(DVec3d mcXyzabc_mm_rad, IProgress messageKit) Parameters mcXyzabc_mm_rad DVec3d Machine coordinates in mm and radians. messageKit IProgress Message kit for error reporting. Returns bool Is under stroke limit. IsAxisExisted(int) Determines whether a specific rotary axis exists in the machine configuration. public bool IsAxisExisted(int dir) Parameters dir int The direction index (0=A, 1=B, 2=C). Returns bool True if the specified axis exists; otherwise, false. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.Numerical.HardNcLine.html": { "href": "api/Hi.Numerical.HardNcLine.html", @@ -4607,7 +4632,7 @@ "api/Hi.Numerical.IControlRunner.html": { "href": "api/Hi.Numerical.IControlRunner.html", "title": "Interface IControlRunner | HiAPI-C# 2025", - "summary": "Interface IControlRunner Namespace Hi.Numerical Assembly HiMech.dll Control Runner. The term control is machine control. The Control Line is such like the NC (Numerical Control) line. public interface IControlRunner Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods ResetFileIndex() Resets the file index to zero. void ResetFileIndex() RunControlLines(string, IEnumerable, SessionMessageHost, CancellationToken) Runs raw Control lines and yields source sentence and Act pairs. IEnumerable RunControlLines(string relFilePath, IEnumerable lines, SessionMessageHost sessionMessageHost, CancellationToken cancellationToken) Parameters relFilePath string The relative path of the control file lines IEnumerable The enumerable collection of command (control code) lines sessionMessageHost SessionMessageHost cancellationToken CancellationToken Cancellation token to cancel the operation Returns IEnumerable Enumerable of source sentence and Act pairs" + "summary": "Interface IControlRunner Namespace Hi.Numerical Assembly HiMech.dll Control Runner. The term control is machine control. The Control Line is such like the NC (Numerical Control) line. public interface IControlRunner Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods ResetFileIndex() Resets the file index to zero. void ResetFileIndex() RunControlLines(string, IEnumerable, SessionProgress, CancellationToken) Runs raw Control lines and yields source sentence and Act pairs. IEnumerable RunControlLines(string relFilePath, IEnumerable lines, SessionProgress sessionMessageHost, CancellationToken cancellationToken) Parameters relFilePath string The relative path of the control file lines IEnumerable The enumerable collection of command (control code) lines sessionMessageHost SessionProgress cancellationToken CancellationToken Cancellation token to cancel the operation Returns IEnumerable Enumerable of source sentence and Act pairs" }, "api/Hi.Numerical.IFlexDictionaryHost-1.html": { "href": "api/Hi.Numerical.IFlexDictionaryHost-1.html", @@ -5017,7 +5042,7 @@ "api/Hi.Numerical.Xyzabc.IMachineKinematics.html": { "href": "api/Hi.Numerical.Xyzabc.IMachineKinematics.html", "title": "Interface IMachineKinematics | HiAPI-C# 2025", - "summary": "Interface IMachineKinematics Namespace Hi.Numerical.Xyzabc Assembly HiMech.dll Device for UniNc controller. public interface IMachineKinematics Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods IsAxisAExisted() Is rotary A existed. bool IsAxisAExisted() Returns bool Is rotary A existed. IsAxisBExisted() Is rotary B existed. bool IsAxisBExisted() Returns bool Is rotary B existed. IsAxisCExisted() Is rotary C existed. bool IsAxisCExisted() Returns bool Is rotary C existed. McAbcToMat(Vec3d) Converts machine ABC coordinates to a tilt matrix. the tilt matrix is the transformation matrix from table to attacher. Mat4d McAbcToMat(Vec3d mcAbc_rad) Parameters mcAbc_rad Vec3d The machine ABC coordinates in radians Returns Mat4d The tilt matrix McToMat(DVec3d) Converts machine coordinates to an attacher matrix. Mat4d McToMat(DVec3d mcXyzabc) Parameters mcXyzabc DVec3d The machine coordinates Returns Mat4d The attacher matrix McToPn(DVec3d) Machine coordinate to tool attacher Pn (Point and Normal). The Pn is from table buckle to tool attacher. DVec3d McToPn(DVec3d mcXyzabc) Parameters mcXyzabc DVec3d machine coordinate. ABC is in radian. Returns DVec3d tool attacher Pn (Point and Normal) OrientationToMcAbc(Mat4d, out Vec3d) Converts a tilt matrix to machine ABC coordinates. the tilt matrix is the transformation matrix from table to attacher. the solution only fit the orientation part of the tiltMat. bool OrientationToMcAbc(Mat4d tiltMat, out Vec3d mcAbc_rad) Parameters tiltMat Mat4d The tilt matrix to convert mcAbc_rad Vec3d Output parameter that will contain the machine ABC coordinates in radians Returns bool Whether the conversion was successful PnToMc(DVec3d, out DVec3d) Tool attacher Pn (Point and Normal) to machine coordinate. The Pn is from table buckle to tool attacher. bool PnToMc(DVec3d pn, out DVec3d mcXyzabc_rad) Parameters pn DVec3d tool attacher Pn (Point and Normal) mcXyzabc_rad DVec3d machine coordinate (ABC in radian) Returns bool whether conversion succeeded" + "summary": "Interface IMachineKinematics Namespace Hi.Numerical.Xyzabc Assembly HiMech.dll Device for UniNc controller. public interface IMachineKinematics Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods McAbcToMat(Vec3d) Converts machine ABC coordinates to a tilt matrix. the tilt matrix is the transformation matrix from table to attacher. Mat4d McAbcToMat(Vec3d mcAbc_rad) Parameters mcAbc_rad Vec3d The machine ABC coordinates in radians Returns Mat4d The tilt matrix McToMat(DVec3d) Converts machine coordinates to an attacher matrix. Mat4d McToMat(DVec3d mcXyzabc) Parameters mcXyzabc DVec3d The machine coordinates Returns Mat4d The attacher matrix McToPn(DVec3d) Machine coordinate to tool attacher Pn (Point and Normal). The Pn is from table buckle to tool attacher. DVec3d McToPn(DVec3d mcXyzabc) Parameters mcXyzabc DVec3d machine coordinate. ABC is in radian. Returns DVec3d tool attacher Pn (Point and Normal) OrientationToMcAbc(Mat4d, out Vec3d) Converts a tilt matrix to machine ABC coordinates. the tilt matrix is the transformation matrix from table to attacher. the solution only fit the orientation part of the tiltMat. bool OrientationToMcAbc(Mat4d tiltMat, out Vec3d mcAbc_rad) Parameters tiltMat Mat4d The tilt matrix to convert mcAbc_rad Vec3d Output parameter that will contain the machine ABC coordinates in radians Returns bool Whether the conversion was successful PnToMc(DVec3d, out DVec3d) Tool attacher Pn (Point and Normal) to machine coordinate. The Pn is from table buckle to tool attacher. bool PnToMc(DVec3d pn, out DVec3d mcXyzabc_rad) Parameters pn DVec3d tool attacher Pn (Point and Normal) mcXyzabc_rad DVec3d machine coordinate (ABC in radian) Returns bool whether conversion succeeded" }, "api/Hi.Numerical.Xyzabc.ISetMcXyzabc.html": { "href": "api/Hi.Numerical.Xyzabc.ISetMcXyzabc.html", @@ -5037,7 +5062,7 @@ "api/Hi.Numerical.Xyzabc.XyzabcSolver.html": { "href": "api/Hi.Numerical.Xyzabc.XyzabcSolver.html", "title": "Class XyzabcSolver | HiAPI-C# 2025", - "summary": "Class XyzabcSolver Namespace Hi.Numerical.Xyzabc Assembly HiMech.dll Support to two-way conversion between MC (machine coordinate) and NP (Normal and Point). public class XyzabcSolver : IMachineKinematics Inheritance object XyzabcSolver Implements IMachineKinematics Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors XyzabcSolver(IXyzabcChain) Ctor. public XyzabcSolver(IXyzabcChain srcDevice) Parameters srcDevice IXyzabcChain target device Methods IsAxisAExisted() Is rotary A existed. public bool IsAxisAExisted() Returns bool Is rotary A existed. IsAxisBExisted() Is rotary B existed. public bool IsAxisBExisted() Returns bool Is rotary B existed. IsAxisCExisted() Is rotary C existed. public bool IsAxisCExisted() Returns bool Is rotary C existed. McAbcToMat(Vec3d) Converts machine ABC coordinates to a tilt matrix. the tilt matrix is the transformation matrix from table to attacher. public Mat4d McAbcToMat(Vec3d mcAbc_rad) Parameters mcAbc_rad Vec3d The machine ABC coordinates in radians Returns Mat4d The tilt matrix McToMat(DVec3d) Converts machine coordinates to an attacher matrix. public Mat4d McToMat(DVec3d mc) Parameters mc DVec3d Returns Mat4d The attacher matrix McToPn(DVec3d) Machine coordinate to tool attacher Pn (Point and Normal). The Pn is from table buckle to tool attacher. public DVec3d McToPn(DVec3d mc) Parameters mc DVec3d Returns DVec3d tool attacher Pn (Point and Normal) OrientationToMcAbc(Mat4d, out Vec3d) Converts a tilt matrix to machine ABC coordinates. the tilt matrix is the transformation matrix from table to attacher. the solution only fit the orientation part of the tiltMat. public bool OrientationToMcAbc(Mat4d tiltMat, out Vec3d mcAbc_rad) Parameters tiltMat Mat4d The tilt matrix to convert mcAbc_rad Vec3d Output parameter that will contain the machine ABC coordinates in radians Returns bool Whether the conversion was successful PnToMc(DVec3d, out DVec3d) Tool attacher Pn (Point and Normal) to machine coordinate. The Pn is from table buckle to tool attacher. public bool PnToMc(DVec3d np, out DVec3d mcXyzabc_rad) Parameters np DVec3d mcXyzabc_rad DVec3d machine coordinate (ABC in radian) Returns bool whether conversion succeeded Rebuild() Rebuild the solver. It should be called after the kinematic chain of Hi.Numerical.Xyzabc.XyzabcSolver.SrcDevice is modified. public void Rebuild() SetNp(DVec3d, out DVec3d) Cutter location to machine coordinate. public bool SetNp(DVec3d np, out DVec3d mc) Parameters np DVec3d normal and point mc DVec3d Returns bool true if solved" + "summary": "Class XyzabcSolver Namespace Hi.Numerical.Xyzabc Assembly HiMech.dll Support to two-way conversion between MC (machine coordinate) and NP (Normal and Point). public class XyzabcSolver : IMachineKinematics Inheritance object XyzabcSolver Implements IMachineKinematics Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors XyzabcSolver(IXyzabcChain) Ctor. public XyzabcSolver(IXyzabcChain srcDevice) Parameters srcDevice IXyzabcChain target device Methods IsAxisAExisted() public bool IsAxisAExisted() Returns bool IsAxisBExisted() public bool IsAxisBExisted() Returns bool IsAxisCExisted() public bool IsAxisCExisted() Returns bool McAbcToMat(Vec3d) Converts machine ABC coordinates to a tilt matrix. the tilt matrix is the transformation matrix from table to attacher. public Mat4d McAbcToMat(Vec3d mcAbc_rad) Parameters mcAbc_rad Vec3d The machine ABC coordinates in radians Returns Mat4d The tilt matrix McToMat(DVec3d) Converts machine coordinates to an attacher matrix. public Mat4d McToMat(DVec3d mc) Parameters mc DVec3d Returns Mat4d The attacher matrix McToPn(DVec3d) Machine coordinate to tool attacher Pn (Point and Normal). The Pn is from table buckle to tool attacher. public DVec3d McToPn(DVec3d mc) Parameters mc DVec3d Returns DVec3d tool attacher Pn (Point and Normal) OrientationToMcAbc(Mat4d, out Vec3d) Converts a tilt matrix to machine ABC coordinates. the tilt matrix is the transformation matrix from table to attacher. the solution only fit the orientation part of the tiltMat. public bool OrientationToMcAbc(Mat4d tiltMat, out Vec3d mcAbc_rad) Parameters tiltMat Mat4d The tilt matrix to convert mcAbc_rad Vec3d Output parameter that will contain the machine ABC coordinates in radians Returns bool Whether the conversion was successful PnToMc(DVec3d, out DVec3d) Tool attacher Pn (Point and Normal) to machine coordinate. The Pn is from table buckle to tool attacher. public bool PnToMc(DVec3d np, out DVec3d mcXyzabc_rad) Parameters np DVec3d mcXyzabc_rad DVec3d machine coordinate (ABC in radian) Returns bool whether conversion succeeded Rebuild() Rebuild the solver. It should be called after the kinematic chain of Hi.Numerical.Xyzabc.XyzabcSolver.SrcDevice is modified. public void Rebuild() SetNp(DVec3d, out DVec3d) Cutter location to machine coordinate. public bool SetNp(DVec3d np, out DVec3d mc) Parameters np DVec3d normal and point mc DVec3d Returns bool true if solved" }, "api/Hi.Numerical.Xyzabc.XyzabcUtil.html": { "href": "api/Hi.Numerical.Xyzabc.XyzabcUtil.html", @@ -5052,7 +5077,7 @@ "api/Hi.Numerical.html": { "href": "api/Hi.Numerical.html", "title": "Namespace Hi.Numerical | HiAPI-C# 2025", - "summary": "Namespace Hi.Numerical Classes CoordinateEntryDisplayee Represents a displayable coordinate entry for CNC programming. FlexDictionaryUtil Utility for flexible dictionary operations. HardNcComment Represents a comment in NC code. HardNcEnv Represents the numerical control environment containing configuration for CNC operations. HardNcLine Represents a line in the NC program with its associated data and operations. HardNcUtil Utility class for working with NC code. HeidenhainCoordinateEntryDisplayee Displayee for Heidenhain coordinate entry visualization. IsoCoordinateEntryDisplayee Displayee for ISO coordinate entry visualization. MechNcUtil NC Utility. MillingToolOffsetTable Offset table for milling tool. The key is Offset ID (H or D in NC code). MillingToolOffsetTableRow Raw of MillingToolOffsetTable NcFlagUtil Utility class for working with NC flags and their lifecycle modes. NcGroupAttribute NC Group Attribute. NcLifeCycleAttribute Attribute to specify the lifecycle mode of an NC flag. NcNameAttribute Attribute used to define a name for NC flags and other enumeration fields. NcNoteCache Cache for notes and warnings generated during NC line parsing. NcProc Provides processing utilities for NC programming. NumericUtil Utility class for numeric operations and unit conversions. PolarEntry The class for G12.1 Polar mode. In G12.1 Polar mode, NC code applies (X,C) as (linear axis, hypothetical axis). XC, YA, ZB are available. RadiusCompensationBuf Buffer for radius compensation (G41/G42) operations in numerical control. At each line junction, the offset paths of adjacent lines may form an intersection (intersected rays) or align directly (parallel rays). For straight lines, the tool goes to the intersection point. For arcs, the offset curve doesn't pass through the intersection, so transient points bridge the gap: Arc → TransientEnd → (linear) → Intersection → (linear) → TransientBegin → NextArc. Transient properties are null when rays are parallel (offset paths align, no corner needed) or when the adjacent line is not an arc. SourcedActEntry Represents an entry containing a source command and its associated act. SubStringKit Utility class for extracting and manipulating substrings based on specific activation patterns. ToolConfigNotFoundException Exception thrown when a tool configuration cannot be found. Interfaces IControlRunner Control Runner. The term control is machine control. The Control Line is such like the NC (Numerical Control) line. IFlexDictionaryHost Interface of FlexDictionary. Provider of additional quantity source. IGetFeedrate Interface for retrieving feedrate information. IGetSpindleSpeed Interface for retrieving spindle speed and direction information. ISetFeedrate Interface for setting feedrate information. ISetSpindleSpeed Interface for setting spindle speed. Enums CncBrand Represents different CNC controller brands supported by the system. CommentMark Enumeration of different comment mark types used in NC code. CoordinateEntryRenderingFlag Flags that control how coordinate entries are rendered. CoordinateInterpolationMode Defines the coordinate interpolation mode for NC operations. NcFlag NC Flag. NcGroup00 NcGroup enum. GCode Group00. Include G04,G52,G53,G53p1,SiemensCycle800Swivel,SiemensSupa. NcGroup01 NcGroup enum. For linear move mode: G00 or G01. G00 is rapid move. G01 is linear cut. G02 is CW cut; G03 is CCW cut. NcGroup02 NcGroup enum. Plane selection. Include G17,G18,G19. NcGroup03 NcGroup enum. Absolute(G90) or increment(G91) coordinate. NcGroup05 NcGroup enum. For feedrate. NcGroup06 NcGroup enum. Group of unit. In mm or in inch. NcGroup07 NcGroup enum. Left or right compensation for tool radius, etc.. See G40, G41, G42 for available compensation modes. NcGroup08 NcGroup enum. Tool length compensation, etc.. G43,G43p4,G44,G49,SiemensTraori,SiemensTrafoof,HeidenhainM128,HeidenhainM129. NcGroup09 NcGroup enum. Canned cycle. NcGroup10 NcGroup enum. Canned cycle return point. G98,G99. NcGroup13 NC Group 13 for constant surface speed control. NcGroup14 NcGroup enum. Coordinate system. Such as G54Series. NcGroup15 NcGroup enum. NcGroup16 NcGroup enum. Rotation plane related. Interface of get transformation. Heidenhain equivalent group is NcGroupHeidenhainPlane. NcGroup21 NcGroup enum. Polar coordinate interpolation mode. NcGroupHeidenhainM107M108 NcGroup enum. Heidenhain group. Enable or disable Suppress error message for replacement tools with oversize. NcGroupHeidenhainPlane Heidenhain Group Plane related. ISO equivalent group is NcGroup16. NcGroupHeidenhainShortestRotaryPath NcGroup enum. Heidenhain group. shortest rotary state. HeidenhainM126,HeidenhainM127 NcGroupSpindleRotation NcGroup enum. Spindle rotation control. See SpindleStop, SpindleCw, SpindleCcw for available rotation modes. NcLifeCycleMode Defines the lifecycle mode of NC commands. NcWarningSceneEnum Defines scene types for NC warnings. SpindleDirection Enumeration of spindle rotation directions. SubStringKit.ActivationMode Defines the mode of activation for substring extraction." + "summary": "Namespace Hi.Numerical Classes FlexDictionaryUtil Utility for flexible dictionary operations. HardNcComment Represents a comment in NC code. HardNcEnv Represents the numerical control environment containing configuration for CNC operations. HardNcLine Represents a line in the NC program with its associated data and operations. HardNcUtil Utility class for working with NC code. HeidenhainCoordinateEntryDisplayee Displayee for Heidenhain coordinate entry visualization. IsoCoordinateEntryDisplayee Displayee for ISO coordinate entry visualization. MechNcUtil NC Utility. MillingToolOffsetTable Offset table for milling tool. The key is Offset ID (H or D in NC code). MillingToolOffsetTableRow Raw of MillingToolOffsetTable NcFlagUtil Utility class for working with NC flags and their lifecycle modes. NcGroupAttribute NC Group Attribute. NcLifeCycleAttribute Attribute to specify the lifecycle mode of an NC flag. NcNameAttribute Attribute used to define a name for NC flags and other enumeration fields. NcNoteCache Cache for notes and warnings generated during NC line parsing. NcProc Provides processing utilities for NC programming. NumericUtil Utility class for numeric operations and unit conversions. PolarEntry The class for G12.1 Polar mode. In G12.1 Polar mode, NC code applies (X,C) as (linear axis, hypothetical axis). XC, YA, ZB are available. RadiusCompensationBuf Buffer for radius compensation (G41/G42) operations in numerical control. At each line junction, the offset paths of adjacent lines may form an intersection (intersected rays) or align directly (parallel rays). For straight lines, the tool goes to the intersection point. For arcs, the offset curve doesn't pass through the intersection, so transient points bridge the gap: Arc → TransientEnd → (linear) → Intersection → (linear) → TransientBegin → NextArc. Transient properties are null when rays are parallel (offset paths align, no corner needed) or when the adjacent line is not an arc. SourcedActEntry Represents an entry containing a source command and its associated act. SubStringKit Utility class for extracting and manipulating substrings based on specific activation patterns. ToolConfigNotFoundException Exception thrown when a tool configuration cannot be found. Interfaces IControlRunner Control Runner. The term control is machine control. The Control Line is such like the NC (Numerical Control) line. IFlexDictionaryHost Interface of FlexDictionary. Provider of additional quantity source. IGetFeedrate Interface for retrieving feedrate information. IGetSpindleSpeed Interface for retrieving spindle speed and direction information. ISetFeedrate Interface for setting feedrate information. ISetSpindleSpeed Interface for setting spindle speed. Enums CncBrand Represents different CNC controller brands supported by the system. CommentMark Enumeration of different comment mark types used in NC code. CoordinateInterpolationMode Defines the coordinate interpolation mode for NC operations. NcFlag NC Flag. NcGroup00 NcGroup enum. GCode Group00. Include G04,G52,G53,G53p1,SiemensCycle800Swivel,SiemensSupa. NcGroup01 NcGroup enum. For linear move mode: G00 or G01. G00 is rapid move. G01 is linear cut. G02 is CW cut; G03 is CCW cut. NcGroup02 NcGroup enum. Plane selection. Include G17,G18,G19. NcGroup03 NcGroup enum. Absolute(G90) or increment(G91) coordinate. NcGroup05 NcGroup enum. For feedrate. NcGroup06 NcGroup enum. Group of unit. In mm or in inch. NcGroup07 NcGroup enum. Left or right compensation for tool radius, etc.. See G40, G41, G42 for available compensation modes. NcGroup08 NcGroup enum. Tool length compensation, etc.. G43,G43p4,G44,G49,SiemensTraori,SiemensTrafoof,HeidenhainM128,HeidenhainM129. NcGroup09 NcGroup enum. Canned cycle. NcGroup10 NcGroup enum. Canned cycle return point. G98,G99. NcGroup13 NC Group 13 for constant surface speed control. NcGroup14 NcGroup enum. Coordinate system. Such as G54Series. NcGroup15 NcGroup enum. NcGroup16 NcGroup enum. Rotation plane related. Interface of get transformation. Heidenhain equivalent group is NcGroupHeidenhainPlane. NcGroup21 NcGroup enum. Polar coordinate interpolation mode. NcGroupHeidenhainM107M108 NcGroup enum. Heidenhain group. Enable or disable Suppress error message for replacement tools with oversize. NcGroupHeidenhainPlane Heidenhain Group Plane related. ISO equivalent group is NcGroup16. NcGroupHeidenhainShortestRotaryPath NcGroup enum. Heidenhain group. shortest rotary state. HeidenhainM126,HeidenhainM127 NcGroupSpindleRotation NcGroup enum. Spindle rotation control. See SpindleStop, SpindleCw, SpindleCcw for available rotation modes. NcLifeCycleMode Defines the lifecycle mode of NC commands. NcWarningSceneEnum Defines scene types for NC warnings. SpindleDirection Enumeration of spindle rotation directions. SubStringKit.ActivationMode Defines the mode of activation for substring extraction." }, "api/Hi.PanelModels.HiKey.html": { "href": "api/Hi.PanelModels.HiKey.html", @@ -5652,7 +5677,7 @@ "dev-doc/basic/geom/basic-geometry.html": { "href": "dev-doc/basic/geom/basic-geometry.html", "title": "Geometry Objects | HiAPI-C# 2025", - "summary": "Geometry Objects IGetStl is the base interface for all geometry objects in HiAPI, providing unified STL support. Several common geometry types are available: Basic Geometrys Box3d Cylindroid Stl StlFile Management Geometrys TransformationGeom GeomCombination See Transformations for TransformationGeom. GeneralTransform StaticRotation StaticTranslation Note All coordinate values use standard units (millimeters, radians) Example Usage using System; using System.Collections.Generic; using Hi.Geom; using Hi.Mech.Topo; namespace Sample.Geom { /// /// Demonstrates the creation and manipulation of geometric objects in HiAPI. /// Shows how to create and transform various geometry types including boxes, cylindroids, and STL files. /// /// /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/Geom/DemoBuildGeom.cs)] /// public static class DemoBuildGeom { /// /// Generates a collection of geometric objects for demonstration purposes. /// Creates various geometry types including boxes, cylindroids, STL files, and transformed geometries. /// /// A list of geometries implementing the IGetStl interface public static List GenGeoms() { Box3d box = new Box3d(0, 0, -50, 70, 50, 0); Cylindroid cylindroid = new Cylindroid([ new PairZr(0,12),new PairZr(20,12), new PairZr(20,16),new PairZr(30,16)]); Stl stl = new Stl(\"geom.stl\"); StlFile stlFile = new StlFile(\"geom.stl\"); TransformationGeom transformationGeom = new TransformationGeom() { Transformer = new GeneralTransform(1, new StaticRotation(new Vec3d(0, 0, 1), MathUtil.ToRad(15), new Vec3d(0, 0, 0)), new StaticTranslation(new Vec3d(0, 0, 0))), Geom = stl }; GeomCombination geomCombination = new GeomCombination(stlFile, transformationGeom); return new List([box, cylindroid, stl, stlFile, transformationGeom]); } } }" + "summary": "Geometry Objects IGetStl is the base interface for all geometry objects in HiAPI, providing unified STL support. Several common geometry types are available: Basic Geometrys Box3d Cylindroid Stl StlFile Management Geometrys TransformationGeom GeomCombination See Transformations for TransformationGeom. GeneralTransform StaticRotation StaticTranslation Note All coordinate values use standard units (millimeters, radians) Example Usage using System; using System.Collections.Generic; using Hi.Geom; using Hi.Mech.Topo; namespace Sample.Geom; /// /// Demonstrates the creation and manipulation of geometric objects in HiAPI. /// Shows how to create and transform various geometry types including boxes, cylindroids, and STL files. /// /// /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/Geom/DemoBuildGeom.cs)] /// public static class DemoBuildGeom { /// /// Generates a collection of geometric objects for demonstration purposes. /// Creates various geometry types including boxes, cylindroids, STL files, and transformed geometries. /// /// A list of geometries implementing the IGetStl interface public static List GenGeoms() { Box3d box = new Box3d(0, 0, -50, 70, 50, 0); Cylindroid cylindroid = new Cylindroid([ new PairZr(0,12),new PairZr(20,12), new PairZr(20,16),new PairZr(30,16)]); Stl stl = new Stl(\"geom.stl\"); StlFile stlFile = new StlFile(\"geom.stl\"); TransformationGeom transformationGeom = new TransformationGeom() { Transformer = new GeneralTransform(1, new StaticRotation(new Vec3d(0, 0, 1), MathUtil.ToRad(15), new Vec3d(0, 0, 0)), new StaticTranslation(new Vec3d(0, 0, 0))), Geom = stl }; GeomCombination geomCombination = new GeomCombination(stlFile, transformationGeom); return new List([box, cylindroid, stl, stlFile, transformationGeom]); } }" }, "dev-doc/basic/mechanism/Topo/index.html": { "href": "dev-doc/basic/mechanism/Topo/index.html", @@ -5722,7 +5747,7 @@ "dev-doc/build-hinc/general-rules.html": { "href": "dev-doc/build-hinc/general-rules.html", "title": "General Rules | HiAPI-C# 2025", - "summary": "General Rules This document describes the common patterns and conventions used throughout the HiNC GUI codebase. Message and Exception Handling The HiNC applications use MessageHost to display user-facing messages, and ExceptionUtil.ShowException(Exception, object) to handle exceptions with detailed treatment. All messages are displayed in the Message Section on Main Panel. For examples of message and exception handling patterns: Normal message handling: MessageHost.ReportMessage(\"Operation completed successfully.\"); MessageHost.ReportWarning(\"Please check your input.\"); Exception handling in synchronous code: try { // Your code here throw new NotImplementedException(\"Demo exception\"); } catch (Exception ex) { ExceptionUtil.ShowException(ex, null); } Exception handling in asynchronous code: await Task.Run(() => { // Your async operation here throw new NotImplementedException(\"Demo async exception\"); }).ShowIfCatched(null); The examples are in project Hi.Sample. See this page for git repository. Loose Manner The Loose Manner pattern handles rapidly-called synchronous actions where only the last call needs to be effective. The LooseRunner class manages skippable rapid-calling synchronous actions. When an action is called rapidly, only the last call is executed while previous calls are safely skipped. The TryRun method is used to execute actions in this manner. The LooseRunner should be disposed when its owner is disposed to ensure proper resource cleanup. GUI File Path Assignment See GUI File Path Assignment. Numeric Input/Output Handling The numeric-utils.js module handles special floating-point values (such as NaN, Infinity) in web forms. See Numeric Input/Output Utilities for details. Webapi with hub-cleapup assistence pattern Webapi with hub-cleapup assistence pattern Loose Couple If model of the UI component is null or mismatch, apply status badge instead of throwing exception to keep UI work. Translation Remarks See Translation Remarks." + "summary": "General Rules This document describes the common patterns and conventions used throughout the HiNC GUI codebase. Message and Exception Handling The HiNC applications use to display user-facing messages, and ExceptionUtil.ShowException(Exception, object) to handle exceptions with detailed treatment. All messages are displayed in the Message Section on Main Panel. For examples of message and exception handling patterns: Normal message handling: MessageUtil.ReportMessage(\"Operation completed successfully.\"); MessageUtil.ReportWarning(\"Please check your input.\"); Exception handling in synchronous code: try { // Your code here throw new NotImplementedException(\"Demo exception\"); } catch (Exception ex) { ExceptionUtil.ShowException(ex, null); } Exception handling in asynchronous code: await Task.Run(() => { // Your async operation here throw new NotImplementedException(\"Demo async exception\"); }).ShowIfCatched(null); The examples are in project Hi.Sample. See this page for git repository. Loose Manner The Loose Manner pattern handles rapidly-called synchronous actions where only the last call needs to be effective. The LooseRunner class manages skippable rapid-calling synchronous actions. When an action is called rapidly, only the last call is executed while previous calls are safely skipped. The TryRun method is used to execute actions in this manner. The LooseRunner should be disposed when its owner is disposed to ensure proper resource cleanup. GUI File Path Assignment See GUI File Path Assignment. Numeric Input/Output Handling The numeric-utils.js module handles special floating-point values (such as NaN, Infinity) in web forms. See Numeric Input/Output Utilities for details. Webapi with hub-cleapup assistence pattern Webapi with hub-cleapup assistence pattern Loose Couple If model of the UI component is null or mismatch, apply status badge instead of throwing exception to keep UI work. Translation Remarks See Translation Remarks." }, "dev-doc/build-hinc/geom/box3d-control.html": { "href": "dev-doc/build-hinc/geom/box3d-control.html", @@ -5787,7 +5812,7 @@ "dev-doc/build-hinc/main-panel.html": { "href": "dev-doc/build-hinc/main-panel.html", "title": "Main Panel | HiAPI-C# 2025", - "summary": "Main Panel The Main Panel is the primary window of the HiNC application, providing navigation and access to all major features. Key Models Project Service WPF Single-User Desktop Application: Uses self-hosted LocalProjectService Web Service Application: Service inherits from IProjectService User Service: UserService Layout Structure Top Navigation Menu Project Menu Dropdown Project Path Text Field New MenuItem Load MenuItem Save MenuItem Save As MenuItem Environment Menu Dropdown Machine Tool MenuItem Open Machine Tool Page Sole window in WPF app. The page manages MachiningEquipment.MachiningChain. Controller MenuItem Open Controller Page Tool House MenuItem Fixture MenuItem Open Fixture Page Workpiece MenuItem Open Workpiece Page Mission MenuItem Open Mission Page Player MenuItem Link to Player Panel (Not exist on WPF app.) Player Belonged Tool Bars. See Player Panel. Shows only if the Main Panel content is Player Panel. Preference Menu Dropdown Help MenuItem HiAPI Version label A label to show the HiNc library version. Log MenuItem Open Log Viewer to display application logs for the current day. The Log Viewer provides real-time access to system logs with filtering and download capabilities. It reads log files from the server's log directory and presents them in a formatted, searchable interface. Users can refresh the log content or download the current day's log file for offline analysis. Central Page Panel Message Section on Main Panel Project Menu Behavior The Project Path Text Field displays the current project path when a project is loaded. It is implemented as a pure text field (not a button) that allows users to select and copy the path. The Project Menu manages MachiningProject with the following operations: Operation Description Example New Creates a new project See DemoBuildGeomOnlyMachiningProject Load Opens an existing project See DemoUseMachiningProject Save Saves the current project See DemoBuildGeomOnlyMachiningProject Save As Saves the project to a new location See DemoBuildGeomOnlyMachiningProject All operation results (success or exception) are displayed via MessageHost. When a project is loaded, the Player Panel's RenderingCanvas is set to isometric view using SetViewToIsometricView(). Note The implementation uses static functions of MessageHost for message handling. Async operations ensure smooth user experience during file I/O. Platform-Specific Differences WPF Application Only a single instance of each sub-window (Mission, Workpiece, Fixture) can exist at a time The Player MenuItem does not exist in the WPF version, as the Main Panel itself serves as the Player Panel Web Application The Player Panel is the default panel displayed on the main page The page URL and panel state are synchronized (bi-directional navigation) Source Code Locations See HiNC GUI Architecture for git repository links. WPF Application MainWindow Web Application Environments/PreferenceController.cs Environments/ProjectController.cs wwwroot/app.js wwwroot/index.html wwwroot/preference/log-viewer.js" + "summary": "Main Panel The Main Panel is the primary window of the HiNC application, providing navigation and access to all major features. Key Models Project Service WPF Single-User Desktop Application: Uses self-hosted LocalProjectService Web Service Application: Service inherits from IProjectService User Service: UserService Layout Structure Top Navigation Menu Project Menu Dropdown Project Path Text Field New MenuItem Load MenuItem Save MenuItem Save As MenuItem Environment Menu Dropdown Machine Tool MenuItem Open Machine Tool Page Sole window in WPF app. The page manages MachiningEquipment.MachiningChain. Controller MenuItem Open Controller Page Tool House MenuItem Fixture MenuItem Open Fixture Page Workpiece MenuItem Open Workpiece Page Mission MenuItem Open Mission Page Player MenuItem Link to Player Panel (Not exist on WPF app.) Player Belonged Tool Bars. See Player Panel. Shows only if the Main Panel content is Player Panel. Preference Menu Dropdown Help MenuItem HiAPI Version label A label to show the HiNc library version. Log MenuItem Open Log Viewer to display application logs for the current day. The Log Viewer provides real-time access to system logs with filtering and download capabilities. It reads log files from the server's log directory and presents them in a formatted, searchable interface. Users can refresh the log content or download the current day's log file for offline analysis. Central Page Panel Message Section on Main Panel Project Menu Behavior The Project Path Text Field displays the current project path when a project is loaded. It is implemented as a pure text field (not a button) that allows users to select and copy the path. The Project Menu manages MachiningProject with the following operations: Operation Description Example New Creates a new project See DemoBuildGeomOnlyMachiningProject Load Opens an existing project See DemoUseMachiningProject Save Saves the current project See DemoBuildGeomOnlyMachiningProject Save As Saves the project to a new location See DemoBuildGeomOnlyMachiningProject All operation results (success or exception) are displayed via . When a project is loaded, the Player Panel's RenderingCanvas is set to isometric view using SetViewToIsometricView(). Note The implementation uses static functions of for message handling. Async operations ensure smooth user experience during file I/O. Platform-Specific Differences WPF Application Only a single instance of each sub-window (Mission, Workpiece, Fixture) can exist at a time The Player MenuItem does not exist in the WPF version, as the Main Panel itself serves as the Player Panel Web Application The Player Panel is the default panel displayed on the main page The page URL and panel state are synchronized (bi-directional navigation) Source Code Locations See HiNC GUI Architecture for git repository links. WPF Application MainWindow Web Application Environments/PreferenceController.cs Environments/ProjectController.cs wwwroot/app.js wwwroot/index.html wwwroot/preference/log-viewer.js" }, "dev-doc/build-hinc/mech/cutter/apt-profile-panel.html": { "href": "dev-doc/build-hinc/mech/cutter/apt-profile-panel.html", @@ -5857,7 +5882,7 @@ "dev-doc/build-hinc/message-section-on-main-panel.html": { "href": "dev-doc/build-hinc/message-section-on-main-panel.html", "title": "Message Section | HiAPI-C# 2025", - "summary": "Message Section The Message Section displays application messages and logs at the bottom of the Main Panel. Message Handling The Message Section is connected to MessageHost.Default through the ProgressChanged event. When a message is reported: The Brief Message Text Field content is updated The message is appended to the daily log file at logs/log-{DateTime.Now:yyyy-MM-dd}.txt Message Types The MessageFlag determines the display behavior: Flag Display Behavior Exception Alert style, shown in Message Section Warning and above Shown in Message Section Info and below Logged only, not shown in Message Section Note When the message is an Exception, the brief message shows Message while the full exception details are logged to file. Platform-Specific Layouts WPF Application The WPF version uses a fixed bottom bar: Message Section Bottom Bar Brief Message Text Field (selectable for copy) Show Log Button Web Application The Web version uses Bootstrap-style stacking toasts: Message Section Stacking Toast Brief Message Text Field Auto-hide enabled only for low-priority messages Log Page The Log Page provides access to daily logs: Header: Log Label, Refresh Button, Download Button Content: Log TextArea Show Log Button The Show Log Button opens a modal or editor view displaying the current day's log content. Note The log file may not exist if no messages have been recorded yet." + "summary": "Message Section The Message Section displays application messages and logs at the bottom of the Main Panel. Message Handling The Message Section is connected to . through the ProgressChanged event. When a message is reported: The Brief Message Text Field content is updated The message is appended to the daily log file at logs/log-{DateTime.Now:yyyy-MM-dd}.txt Message Types The MessageFlag determines the display behavior: Flag Display Behavior Exception Alert style, shown in Message Section Warning and above Shown in Message Section Info and below Logged only, not shown in Message Section Note When the message is an Exception, the brief message shows Message while the full exception details are logged to file. Platform-Specific Layouts WPF Application The WPF version uses a fixed bottom bar: Message Section Bottom Bar Brief Message Text Field (selectable for copy) Show Log Button Web Application The Web version uses Bootstrap-style stacking toasts: Message Section Stacking Toast Brief Message Text Field Auto-hide enabled only for low-priority messages Log Page The Log Page provides access to daily logs: Header: Log Label, Refresh Button, Download Button Content: Log TextArea Show Log Button The Show Log Button opens a modal or editor view displaying the current day's log content. Note The log file may not exist if no messages have been recorded yet." }, "dev-doc/build-hinc/mission/ListCommand-panel.html": { "href": "dev-doc/build-hinc/mission/ListCommand-panel.html", @@ -5952,7 +5977,7 @@ "dev-doc/build-hinc/session-message-panel/index.html": { "href": "dev-doc/build-hinc/session-message-panel/index.html", "title": "Session Message Panel | HiAPI-C# 2025", - "summary": "Session Message Panel The model is SessionMessageHost. LocalProjectService is obtained via dependency injection. Layout Top Message Filter ToolBar Message Type Filter SubMenu NC CheckBox Progress CheckBox Error CheckBox Message Text Filter Input Message Text Filter Input Text Area Message Text Filter Reset Button Export Button Central Message Table Central Message Table The model of Central Message Table is SessionMessageHost.MessageCollection. Only take last 1000 filtered elements in the MessageCollection by GetFliteredList(FilterFlag, string) to show for user experience. Find the usage example in the code: internal static void DemoUseSessionMessageHost(LocalProjectService localProjectService) { SessionMessageHost sessionMessageHost = localProjectService.SessionMessageHost; SessionMessageHost.FilterFlag filterFlags = SessionMessageHost.FilterFlag.NC | SessionMessageHost.FilterFlag.Progress | SessionMessageHost.FilterFlag.Error; string filterText = null; var filteredSessionMessageList = sessionMessageHost .GetFliteredList(filterFlags, filterText); foreach (var sessionMessage in filteredSessionMessageList) { //M.I.: Message Index. Console.Write($\"M.I.: {sessionMessage.Index}; Role: {sessionMessage.MessageRoleText}\"); // For SessionMessageHost.FilterFlag.NC var nc = sessionMessage.DirectInstantSourceCommand; if (nc != null) Console.Write($\"Message/NC: {nc.Line}; File: {nc.FilePath}; LineNo: {nc.GetLineNo()}; \"); // For SessionMessageHost.FilterFlag.Progress or Error. var multiTagMessage = sessionMessage.MultiTagMessage; if (multiTagMessage != null) Console.WriteLine($\"Message/NC: {multiTagMessage.Message}\"); var exception = sessionMessage.Exception; if (exception != null) Console.WriteLine($\"Message/NC: {exception.Message}\"); } File.WriteAllLines(\"output-session-messages.txt\", filteredSessionMessageList.Select(m => $\"Msg[{m.Index}][{m.MessageRoleText}]: {m}\")); } In the table, show the columns: Role, NC/Message. Add update table event to CollectionItemChanged. The updating process has to be called by Loose Manner for user experience. Tip On window desktop application (WPF), consider use textarea instead of datagrid to MessageTable for better performance. Use padding to show the different columns. And use the font in the textarea that with consistent width. Note The message display should be real-time. Behavior of Export Button Export ALL filtered elements in the MessageCollection by GetFliteredList(FilterFlag, string). SignalR Implementation (Webapi Only) SessionMessageHub provides real-time message updates with method GetSessionMessages(string filterFlags, string filterText, int limit) and event SessionMessagesUpdated. SessionMessageService monitors CollectionItemChanged and broadcasts updates. The service uses LooseRunner for non-blocking async operations. The JavaScript component connects to /sessionMessageHub to receive real-time message updates. Source Code Path See this page for git repository. WPF Application Source Code Path Play/SessionMessagePanel Web Page Application Source Code Path wwwroot/player/session-message-panel.js (Vue component) Players/PlayerController.cs (REST API - GetSessionMessages endpoint) Players/SessionMessageService.cs (Business logic) Players/SessionMessageHub.cs (SignalR Hub for real-time updates)" + "summary": "Session Message Panel The model is . LocalProjectService is obtained via dependency injection. Layout Top Message Filter ToolBar Message Type Filter SubMenu NC CheckBox Progress CheckBox Error CheckBox Message Text Filter Input Message Text Filter Input Text Area Message Text Filter Reset Button Export Button Central Message Table Central Message Table The model of Central Message Table is .. Only take last 1000 filtered elements in the by to show for user experience. Find the usage example in the code: internal static void DemoUseSessionMessageHost(LocalProjectService localProjectService) { SessionProgress sessionMessageHost = localProjectService.SessionProgress; SessionProgress.FilterFlag filterFlags = SessionProgress.FilterFlag.NC | SessionProgress.FilterFlag.Progress | SessionProgress.FilterFlag.Error; string filterText = null; var filteredSessionMessageList = sessionMessageHost .GetFliteredList(filterFlags, filterText); foreach (var sessionMessage in filteredSessionMessageList) { //M.I.: Message Index. Console.Write($\"M.I.: {sessionMessage.Index}; Role: {sessionMessage.MessageRoleText}\"); // For SessionMessageHost.FilterFlag.NC var nc = sessionMessage.DirectInstantSourceCommand; if (nc != null) Console.Write($\"Message/NC: {nc.Line}; File: {nc.FilePath}; LineNo: {nc.GetLineNo()}; \"); // For SessionMessageHost.FilterFlag.Progress or Error. var multiTagMessage = sessionMessage.MultiTagMessage; if (multiTagMessage != null) Console.WriteLine($\"Message/NC: {multiTagMessage.Message}\"); var exception = sessionMessage.Exception; if (exception != null) Console.WriteLine($\"Message/NC: {exception.Message}\"); } File.WriteAllLines(\"output-session-messages.txt\", filteredSessionMessageList.Select(m => $\"Msg[{m.Index}][{m.MessageRoleText}]: {m}\")); } In the table, show the columns: Role, NC/Message. Add update table event to . The updating process has to be called by Loose Manner for user experience. Tip On window desktop application (WPF), consider use textarea instead of datagrid to MessageTable for better performance. Use padding to show the different columns. And use the font in the textarea that with consistent width. Note The message display should be real-time. Behavior of Export Button Export ALL filtered elements in the by . SignalR Implementation (Webapi Only) SessionMessageHub provides real-time message updates with method GetSessionMessages(string filterFlags, string filterText, int limit) and event SessionMessagesUpdated. SessionMessageService monitors and broadcasts updates. The service uses LooseRunner for non-blocking async operations. The JavaScript component connects to /sessionMessageHub to receive real-time message updates. Source Code Path See this page for git repository. WPF Application Source Code Path Play/SessionMessagePanel Web Page Application Source Code Path wwwroot/player/session-message-panel.js (Vue component) Players/PlayerController.cs (REST API - GetSessionMessages endpoint) Players/SessionMessageService.cs (Business logic) Players/SessionMessageHub.cs (SignalR Hub for real-time updates)" }, "dev-doc/build-hinc/translation-remarks.html": { "href": "dev-doc/build-hinc/translation-remarks.html", @@ -6002,12 +6027,12 @@ "dev-doc/build-hinc/widget/vec3d/index.html": { "href": "dev-doc/build-hinc/widget/vec3d/index.html", "title": "Vec3dControl Component | HiAPI-C# 2025", - "summary": "Vec3dControl Component Vec3dControl is a user control for Vec3d and display. Main Features Dual Input Modes Standard Mode: Input X, Y, Z components separately (formatted display with 4 significant digits) Text Mode: Input complete vector in text format (full precision, no information loss) Vector Normalization Normalization button (optional) Button visibility controlled by ShowNormalizeButton property Special Value Handling (Web) Supports Infinity, -Infinity, and NaN values Uses Numeric Input/Output Utilities for display and parsing Refer Sample Code