Table of Contents

Release Note

HiNc Packages Version 3.1.184

  • Add: NX cutter-location (CL) file playback. PlayClFile replays an NX CLSF / APT-source toolpath (GOTO / CIRCLE / RAPID / FEDRAT / SPINDL / COOLNT / TLDATA / LOAD) directly onto a ClMillingDevice chain as pure cutter-location motion — no post-processor, no machine coordinates, no kinematics — for verifying a CAM toolpath before it is post-processed for a specific machine. The parser is composed as NxClRunner (a SoftNcRunner preset), and the project holds a third runner suit ClsfRunnerSuit beside the NC and CSV suits; a TLDATA record creates the tool geometry when the tool house has no matching id. A machine-tool (MC) chain is not yet driven from a CL file. See Cutter-Location (CL) Playback
  • Rename: the workpiece runtime-mesh vocabulary “runtime geom” → “meshed geom” across the API surface. WorkpieceService members rename to GetOrBuildMeshedGeom / ReadMeshedGeom / WriteMeshedGeom / SetMeshedGeom / ResetMeshedGeom / IsMeshedGeomInit / ScanMeshedGeomInfDefect (hard rename, no shims); MachiningEquipmentCollisionIndex.WorkpieceRuntimeGeomGetter renames to WorkpieceMeshedGeomGetter. The SessionShell script functions rename to WriteMeshedGeom / ReadMeshedGeom / ExportMeshedGeomToStl / ExportMeshedGeomToObj / ExportMeshedGeomToPly / ScanMeshedGeomInfDefect — the old script names remain callable as hidden [Obsolete] legacy aliases so existing player scripts keep working. Session commands rename to RecordMeshedGeomCommand / ExportMeshedGeomToStlCommand, and command XML fields rename to EnableReadMeshedGeom / MeshedGeomFile / EnableWriteMeshedGeom / MeshedGeomFileTemplate / MeshedGeomFilePath; all legacy XML element names (<RecordRuntimeGeomCommand>, <ExportRuntimeGeomToStlCommand>, <EnableReadRuntimeGeom>, …) still load and migrate forward on save. Web API routes change in lockstep (show-meshed-geom, enable-read-meshed-geom, meshed-geom-file, enable-write-meshed-geom, meshed-geom-file-path)
  • Removed: the GUI-layer displayee composition types MachiningProjectDisplayee, IsoCoordinateEntryDisplayee and HeidenhainCoordinateEntryDisplayee from the core packages — front-ends own their copies under their Disp/ folders (same treatment as UserConfig/UserService/PlayerDivConfig in 3.1.180); the classes compose only public API (IDisplayee over LocalProjectService), so copy them from any app project (e.g. HiNC-2025-webservice/Disp/) to tailor rendering composition
  • Removed: the legacy CSV runner CsvRunner0 and the transitional switch LocalProjectService.EnableSoftCsvRunner — CSV playback always runs through the general-semantics pipeline GeneralCsvRunner (the flagship path since 3.1.180); CsvRunner now returns the CSV suit's SoftNcRunner directly. The minimal carrier IndexedSentence (orphaned by the runner's removal) is also removed — wrap a bare Sentence in your own ISentenceCarrier if you passed one as a sourceCommand

HiNc Packages Version 3.1.180

  • Rebuild message reporting on a unified IMessage model: every notification carries a Severity, a Category and a filterable id (SimpleMessage), reported through IProgress<IMessage> with id-first helpers on MessageUtil. Messages arrive on three typed sinks: ShellProgress (session-lifecycle messages), StepDiagnosticProgress (step-anchored diagnostics) and NcDiagnosticProgress (NC-parsing diagnostics). Removed: the legacy mixed channel MixedProgress0 and MultiTagMessage/MultiTagMessageUtil; message parameters across the API are retyped from IProgress<object> to IProgress<IMessage> (including the XFactory deserialization chain), and NcDiagnostic.Text renames to Notification (see Message Management)
  • Scope the session surface to the session: LocalProjectService.SessionShell is created by BeginSession() and nulled at EndSession() (no longer lazily created outside a session), and ShellProgress is recreated per session — subscribe once through the app-lifetime bridge events OnShellMessageAdded / OnShellMessageCleared, or buffer a single call's messages with the new MessageCollector
  • Move run operations onto the session model: MachiningSession now publicly exposes RunControlLines, RunNcFile/RunCsvFile/RunNc and PlayNcFile/PlayCsvFile/PlayNc (the SessionShell / LocalProjectService entry points remain as delegating wrappers); IMachiningService replaces PlayerCancellationToken/PausePlayer with a single PacePlayer property
  • Add LocalProjectServiceController: a project-level (session-independent) HTTP API whose responses carry the notifications reported during each call
  • Add NcRunnerSuit: bundles a parser with its per-case dependency data as one file-loadable unit; the project holds separate NC and CSV suits (NcRunnerSuit / CsvRunnerSuit), and ReadNcRunnerSuit / WriteNcRunnerSuit switch the active parser mid-project from a suit file (refused while a control file is playing)
  • Make one NC runner configuration shareable across projects: per-case data (tool offsets, work-coordinate offsets, Siemens frames, Heidenhain datums, retained macro variables, seeded brand parameter tables) travels as proxy placeholders inside SoftNcRunner and resolves against the owning project's per-case list; machine-config consumers read the resolved view via GetEffectiveNcDependencyList() (the raw pipeline list renames to PipelineNcDependencyList); legacy <NcDependencyList> XML and NcEnv-based projects still load and migrate automatically
  • Run CSV playback through the new general-semantics pipeline GeneralCsvRunner by default, mapping CSV rows into the same standardized sections as the NC pipeline; the legacy runner remains as CsvRunner0 behind LocalProjectService.EnableSoftCsvRunner = false (both removed in 3.1.184)
  • Rework time mapping around absolute wall-clock time: AddTimeDataByFile accepts DateTime windows (stored as IFileTimeSection forms), the project-scoped MappingAnchorDateTime converts controller timestamps onto one run-relative axis, and each step preserves ActualTimecode plus the new ActualDateTime. EndTimecode replaces AccumulatedTime as the canonical end-of-step time (kept as an [Obsolete] alias; step CSVs now write an EndTimecode header and still read legacy AccumulatedTime)
  • Fix CSV timing across midnight: step durations derive from full date-bearing instants (no more negative durations and negative chart time axes on multi-day recordings), and non-physical durations from spliced recordings are clamped with a validation warning instead of stalling physics evaluation
  • Improve NC-parsing diagnostics: G53 / G53.1 record their source G-code on the parsed block and emit Coord-MachCoord--005/006/007 on previously-silent failure paths; G68.2 tilted planes the machine cannot reach emit Coord-Tilt--001/002, with a tool-axis-only IK retry that avoids spurious warnings on machines with fewer than three rotary axes
  • Fix indexed-rotary simulation in plain mode: blocks with no active G68.2 / G43.4 no longer fold the kinematic pivot transform into plain XYZ moves (matching real controller behavior for table-side rotary programs)
  • Fix fatal native crashes (0xC0000005) from disposing display/geometry objects still in use (client disconnect, runtime-geometry reset, app shutdown): DispEngine and CubeTree native calls are gated against concurrent dispose and disposal runs serialized in the background. Large geometry no longer freezes the UI: Solid builds its display topology off-thread and draws a wire bounding box with a “Loading” mark until ready. WorkpieceService.GetRuntimeGeom renames to GetOrBuildRuntimeGeom (now GetOrBuildMeshedGeom since the 3.1.184 meshed-geom rename)
  • Fix intermittent “No cut / No data for step” on freshly-simulated steps: the bulk step-data readers no longer cache the absence of rows that the writer has not committed yet, so per-step data appears without a re-run
  • Fix ResetRuntime to also rewind the NC-runner session state, so the next play restarts file/line indexing from scratch (as PowerReset does)
  • Serialize project-file operations through a zero-wait gate: a New/Load/Save/Reload arriving while another is in progress throws ProjectFileBusyException immediately instead of racing into a file-in-use IOException
  • Fix AlignWorkpieceProgramZeroToIso to compute in the machine-zero state, so the result is correct even when the live machine's axes are displaced
  • Fixes: milling-force training skips steps with missing engagement data instead of crashing; sharp cone-tip tools no longer render their flute transparent; ClStrip raises a Cleared event after Clear (pairing with PosAdded)
  • Remove GUI-layer types UserConfig/UserService/PlayerDivConfig from the core package (front-ends own their copies; construct LocalProjectService with the ILogger-only constructor); replace packed MixedIndex file-line keys with typed FileLineIndex comparison; dependency updates: SQLitePCLRaw.bundle_e_sqlite3 pinned to 3.0.3 (SQLite CVE-2025-6965), Microsoft.Data.Sqlite 10.0.9, Dapper 2.1.79

HiNc Packages Version 3.1.175

  • WorkpieceService file IO now takes relative paths and resolves them against a base-directory Func<string> injected by LocalProjectService — the runtime-geometry write/read no longer requires the caller to pre-combine an absolute path. WorkpieceService.ReadRuntimeGeom (now ReadMeshedGeom) now returns whether the source file existed (the not-found notice moves to the calling shell)
  • Rename runtime-geometry mesh-export methods to the Export* convention (STL/OBJ/PLY are foreign interchange formats, not native writes): WriteRuntimeGeomToStl/Obj/PlyExportRuntimeGeomToStl / ExportRuntimeGeomToObj / ExportRuntimeGeomToPly; the session command WriteRuntimeGeomToStlCommandExportRuntimeGeomToStlCommand (now ExportMeshedGeomToStlCommand) keeps the old <WriteRuntimeGeomToStlCommand> element name as a back-compat alias so existing projects still load

HiNc Packages Version 3.1.173

  • Improve Mrr_mm3ds precision: the material-removal-rate now sums each cut contour's signed area-vector (fan triangulation, skipping non-finite triangles) projected on the feed direction, replacing the per-contour bounding-box area that over-estimated the cut cross-section
  • Add AlignWorkpieceProgramZeroToIso script command: resolves a G54/G55/… entry from the project ISO coordinate table and places workpiece + fixture so the program zero coincides with that machine coordinate (topology math delegated to the new AlignWorkpieceProgramZeroToIso extension)
  • Drop gRPC plumbing from the HiNc package: remove Hi.Grpcs.* ClStrip/Player service runners and protos, MachiningProjectGrpcServer, MonitoringPlayer, and UniversalNcMonitorClient; fold CsvRunnerConfig back into CsvRunner0 (gRPC services now ship in HiNcRcl / UJoinRcl)

HiNc Packages Version 3.1.172

  • Replace implicit XFactory registration (private static <ClassName>() constructors + _ = X.XName wake-up touches) with explicit public static void Reg(XFactory factory = null) methods across ~270 classes. XFactory becomes an instance class with a process-wide Default singleton; Generators is renamed from Regs and now an instance property; the delegate type is renamed XGeneratorDelegate from GenByXElementDelegate. Composite types chain X.Reg(factory) on dependents in place of the old wake-up touches; multi-name (legacy alias) registrations keep the current XName first and group aliases under a //legacy aliases comment. Entry points (web service, win-desktop, test fixtures) must call Reg once at startup before any project XML is deserialized — registration no longer happens by accident when the type is first touched. See XML IO.

HiNc Packages Version 3.1.171

  • Rename RuntimeApiSessionShell (the runtime entry point exposed to scripting); IShellCommandISessionCommand and RuntimeControllerSessionShellController; the Hi.ShellCommands namespace moves to Hi.SessionCommands, and every command implementer's Run() parameter renames scriptApisessionShell
  • Tri-state milling-physics contract: MachiningStep physics getters converge on a tri-state result, non-null MillingPhysicsBrief on no-cut steps under EnablePhysics; silently skip thermal physics on null FluteMaterial / WorkpieceMaterial; lazy first-equip warning; align relief-face null-sentinel across NoCut + producer (in NcOpt and forces)
  • Rename IMachiningStepHostIMachiningService (drops the ICsScriptApi seam)
  • Fixes: rotary IK round-trip anchored to pre-FK interpolated angle; ForceAccelShot.ReadRows skips blank lines

HiNc Packages Version 3.1.167

HiNc Packages Version 3.1.162

  • Refactor message management into three independent categories: Diagnostic (IProgress<object>), UI Notification (MessageBoardUtil), App Log (ILogger); remove MessageUtil class entirely and remove ExceptionUtil.ShowException / ExceptionUtil.OnShown (see Message Management)
  • Thread IProgress<object> through XFactory deserialization chain and MachiningProject loading; remove GenMode enum entirely (see XML IO)
  • Add ActionProgress<T>.FromLogger to bridge IProgress<object> APIs to ILogger
  • Rename ShowIfCatchedCatchExceptions with explicit Action<Exception> handler; remove RoutineBlocker0
  • Extract WorkpieceService from Workpiece for runtime geometry operations
  • Update ISO coordinate rendering for 3+2 axis machines: coordinate position now uses IsoCoordinateEntryDisplayee with full machining chain anchor instead of table-buckle-only anchor
  • Rename SessionMessageHostSessionProgress on both ShellProgress and ShellProgress (SessionShell.SessionMessageHost is kept as [Obsolete])
  • Remove obsolete HiLog logging utility and DynamicMachiningProjectDisplayee0

HiNc Packages Version 3.1.160

  • Fix NC optimization R-format arc interpolation with negative R values (follow-up to v158 R-format arc fix)
  • Fix cubetree construction defect when a triangle edge passes through a wire corner
  • Mech Builder: geometry (STL) file picker for anchored transformation now offers Project directory in addition to Resource directory.
  • Rename XML IO utilities: XmlSourceAndFile<T>FileRefSource<T>, CombineAsSubDirectoryGetResourceDirectory, MakeXmlSourceWithRebaseFileMakeXmlSourceToFileRef

HiNc Packages Version 3.1.158

  • Fix G53.1 tool height compensation behavior: replace NcEnv.SetToolHeightCompensationOnFeatureNormal configuration with automatic detection via NC flag state
  • Make EnableIntegerShrinkOnPositionCommand configurable via project settings (previously hard-coded by CNC brand, now defaults to false with XML IO support)
  • Fix NC optimization splitting R-format arcs (G02/G03 with R parameter) by converting to IJK format, since R sign meaning does not apply correctly to individual fragments
  • Fix step.csv reading crash on null or malformed values
  • Fix XML IO sub-base directory not applied in some project file operations
  • Improve CSV actual time parsing to support DateTime format in addition to TimeSpan (see Workflow: Basic Machining Simulation)
  • Fix CSV title parsing to trim surrounding quotes

HiNc Packages Version 3.1.156

  • Fix G68 coordinate rotation transformation for non-origin rotation centers
  • Fix NC optimization arc/circle offset when splitting arc fragments across multiple lines
  • Fix optimization rotation code jumping at ±180° cycle boundary by applying cyclic angle comparison
  • Fix RTCP on unmatched tool offset
  • Fix blocking issue when time-mapping file not found
  • Fix FlagsText always null after NC parser refactoring

HiNc Packages Version 3.1.150

  • Add cubetree geometry defect scanning (ScanRuntimeGeomInfDefect) and clearing (ClearDefectDisplayee) for detecting and visualizing geometry anomalies in workpieces (see Workflow: Geometry Validation)
  • 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; ShellProgress (formerly SessionMessageHost) now implements IProgress<T>, and all messaging methods renamed from Add* to Report* (e.g., AddProgressMultiTagMessageUtil.ReportProgress)
  • 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

HiNc Packages Version 3.1.144

  • Enhance Siemens Sinumerik support:
    • Siemens CYCLE800 coordinate transform and reset
    • Siemens MCALL CYCLE81() drilling cycle parsing
    • Siemens TRAORI/TRAFOOF/SUPA flag parsing
  • Fix Siemens TRAFOOF plain rotation coordinate transform issue
  • Fix Siemens coordinate transform for successive file running
  • Fix relief face collision floating-point precision issue
  • Replace MongoDB with SQLite for local step data storage (significant package size reduction)
  • Add machining and motion resolution dynamic adjustment functions

HiNc Packages Version 3.1.106

  • Rename mapping API for clearer naming:
  • Rename CSV column prefix Spindle to Holder for sensor data mapping
  • Unify CSV column tags to MappingUtil for consistent data mapping
  • Fix ChartRange manipulation to be time-based instead of step-based for more accurate time chart display
  • Tune thread priority for machining parallel processing to improve UI responsiveness during simulation
  • Various code cleanup and improvements

HiNc Packages Version 3.1.102

  • Separate resource files (Resource, wwwroot, Doc) to HiNc-Resource nuget package for smaller package size
  • Add ScaledFeedPerCycle function for scaled feed-per-cycle machining motion resolution
  • Upgrade target framework to .NET 10.0
  • Various code cleanup and improvements

HiNc Packages Version 3.1.100

  • Refactor project architecture: split runtime functions from MachiningProject to LocalProjectService for better separation of concerns
  • Improve MillingTraining module with separate lead and result parameter templates for more accurate cutting parameter training
  • Separate C++ library for code protection
  • Add UTF-8 file path support for runtime geometry IO operations
  • Improve CsvRunner0 with enhanced time mapping pattern
  • Various architecture improvements and bug fixes

HiNc Packages Version 3.1.91

HiNc Packages Version 3.1.90

  • Rename optimization log API EnableIndividualStepAdjustmentLog
  • Fix crash from workpiece displaying with specific mechanical topology setting
  • Improve .flatproc.log output to maintain step order during parallel computation
  • Various stability improvements and bug fixes

HiNc Packages Version 3.1.86

  • Re-build NcOptProc with stricter optimization logics
  • Add optimization logging features (see Optimization Logs):
    • .flatproc.log file output for optimization process analysis
    • Embedded log comments in optimized NC file marking source lines with (src) suffix
  • Fix cutting depth and width accuracy by bounding-box method with workpiece surface
  • Fix collision check error during concurrent changing collidable object
  • Various stability improvements and bug fixes

HiNc Packages Version 3.1.84

  • Optimize memory usage by shrinking map-size of clStripPos
  • Fix design pattern of cutting parameter training module (MillingTraining)
  • Add LoadCuttingParaByFile function to load cutting parameters from file
  • Improve CsvRunner0 actual time parsing: automatically calculate step duration from actual time when duration is not provided
  • Enhance message handling in SessionShell by unifying ShellProgress usage
  • Improve optimization performance with better task scheduling
  • Various performance improvements and bug fixes

HiNc Packages Version 3.1.75

  • Add actual time tracking functionality (ActualTimecode)
  • Various stability improvements and bug fixes

HiNc Packages Version 3.1.74