Class NcOptSplitionFragmentPlan
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
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
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
FeedrateOp
The planned F-word text operation.
public NcOptFeedrateTextOp FeedrateOp { get; set; }
Property Value
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
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
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
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
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
StepIndex
The machining step index this fragment re-interpolates.
public int StepIndex { get; set; }
Property Value
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
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
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
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; }