Table of Contents

Class NcOptSplitionFragmentPlan

Namespace
Hi.NcOpt
Assembly
HiMech.dll

Planned text rewrite of one re-interpolation fragment of a splition piece: everything the writeback converter needs to turn a copy of the source BlockText into the fragment's NC line. Computed entirely by the orchestrator walk (SoftNcOptProc); applied dumbly by NcOptMixedPatchConverter.

public class NcOptSplitionFragmentPlan
Inheritance
NcOptSplitionFragmentPlan
Inherited Members
Extension Methods

Remarks

One plan entry exists per machining step of the pack's segment — including the fragments the essential filter drops (IsEmitted false; oracle filter: HiNc/NcOpt/NcOptProc.cs lines 2278-2306) — because the pre-build modal-F chain threads through dropped fragments too (oracle lines 2193-2276). Known deliberate divergence: the oracle burns a dstSentenceIndex on every pre-built fragment, dropped ones included (oracle line 2237), leaving invisible holes in its dst numbering; the SoftNc side allocates destination sentence indices only for emitted fragments (one NcDstPieceFactory.Create per emitted fragment) — the emitted text is byte-identical, only the internal dst identity numbering differs.

Properties

ArcIjk_mm

Arc center offsets I/J/K to write (mm, F4 format), or null when no arc rewrite applies. Computed as center − previous EMITTED fragment endpoint with the plane-normal component replaced by the source helix pace (oracle NcOptProc.cs:2346-2383). A NaN component is passed through SetTagNumber semantics: an existing token is deleted, an absent one stays absent (oracle omit rule for originally-unspecified axes whose offset is still ~0, lines 2368-2379).

public Vec3d ArcIjk_mm { get; set; }

Property Value

Vec3d

DeleteRWord

Whether to delete the R word — planned for every emitted fragment of an R-format arc source, which is force-converted to I/J/K (the R sign carries the >/<180° semantic of the ORIGINAL arc, wrong per fragment; oracle NcOptProc.cs:2354-2365).

public bool DeleteRWord { get; set; }

Property Value

bool

EmbeddedNote

Embedded-log note appended verbatim at the very end of the fragment line (after the kept comment of the first emitted fragment); null for none. SimpleLog shape (oracle NcOptProc.cs:2385-2397, default mode SimpleLog, line 85): non-last fragment " (src(StepIndex: k))", last fragment " (src(LineNo: n, StepIndex: k))" where n is the SOURCE 1-based line number.

public string EmbeddedNote { get; set; }

Property Value

string

FeedrateOp

The planned F-word text operation.

public NcOptFeedrateTextOp FeedrateOp { get; set; }

Property Value

NcOptFeedrateTextOp

FeedrateValue_mmdmin

F value in mm/min for Write (already F2-rounded by the plan builder, mirroring the oracle's symmetric rounding, lines 1864-1866).

public double FeedrateValue_mmdmin { get; set; }

Property Value

double

FileInitFeedrate_mmdmin

File-first-feedrate initialization write in mm/min (F2 format), applied AFTER the strip operations; NaN when not planned. Mirrors the oracle's per-emitted-fragment InitializeFileFirstFeedrate call (NcOptProc.cs:2331-2342).

public double FileInitFeedrate_mmdmin { get; set; }

Property Value

double

IsEmitted

Whether the essential filter keeps this fragment (oracle rules, NcOptProc.cs:2278-2306: the last fragment always; a fragment with compensation or an assigned F; a fragment after a compensated one; a fragment before a changed one). A dropped fragment emits no destination piece.

public bool IsEmitted { get; set; }

Property Value

bool

IsFeedrateAssigned

Whether the pre-build feedrate pass assigned an F to this fragment (the oracle's isFeedrateAssigned tuple member, lines 2223-2228/2270-2273) — an input of the essential filter.

public bool IsFeedrateAssigned { get; set; }

Property Value

bool

ModalFeedrateAfter_mmdmin

The pre-build modal F after this fragment in mm/min — the value the oracle's localPreDstNcLine.Feedrate_mmdmin chain carries past this fragment (lines 2193/2275).

The chain itself is threaded by the plan builder's own locals (the compare base and the two dst F registers), so this member records the chain rather than driving it — with one real consumer: the emission walk copies it into FileInitFeedrate_mmdmin when this fragment wins the file-first-feedrate initialization (oracle InitializeFileFirstFeedrate, NcOptProc.cs:2331-2342, which likewise states the line's own modal F). Through that path the value CAN reach the emitted text, so it is not free-form bookkeeping.

public double ModalFeedrateAfter_mmdmin { get; set; }

Property Value

double

StepIndex

The machining step index this fragment re-interpolates.

public int StepIndex { get; set; }

Property Value

int

StripComment

Whether to remove the comment text from this fragment's draft — true for every emitted fragment after the first emitted one (oracle comment removal, NcOptProc.cs:2325-2327).

public bool StripComment { get; set; }

Property Value

bool

StripModalFlagTokens

Whether to strip the modal flag tokens (StripModalTokens) from this fragment's draft — true for every emitted fragment after the first emitted one (oracle RebuildFlagSyntaxToNcLine call gate, NcOptProc.cs:2316-2323).

public bool StripModalFlagTokens { get; set; }

Property Value

bool

WriteAbc_deg

Per-axis rotary endpoint values to write (A/B/C, degrees, F4 format); NaN suppresses (oracle NcOptProc.cs:1937-1943: MathUtil.AbsDiffAngle > 1e-6 rad gate, value converted rad → deg).

public Vec3d WriteAbc_deg { get; set; }

Property Value

Vec3d

WriteProgramXyz_mm

Per-axis program-frame endpoint values to write (X/Y/Z, mm, F4 format); a NaN component suppresses the write so the source token text survives verbatim — the oracle's tolerance suppression leaves the SOURCE endpoint literal in place, not a blank (RebuildPosSyntaxToNcLine, NcOptProc.cs:1929-1936; parity trap: suppressed axes keep the src value text). When the step's pack adjustment carries a tool-deflection compensation, the values are the COMPENSATED endpoint — the program-frame projection of the compensation vector is added by the plan builder before the tolerance decisions (oracle RebuildByProgramXyz slot, lines 2249-2265).

public Vec3d WriteProgramXyz_mm { get; set; }

Property Value

Vec3d