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 in
NcOptProc) — because the pre-build modal-F chain threads through
dropped fragments too (as in the oracle). Known deliberate divergence:
the oracle burns a dstSentenceIndex on every pre-built fragment,
dropped ones included, 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, coordinate output 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). 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).
public vec3d_t? 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).
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, default
mode SimpleLog): 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 rounded to the F output grid by the plan builder, mirroring the oracle's symmetric rounding).
public double FeedrateValue_mmdmin { get; set; }
Property Value
FileInitFeedrate_mmdmin
File-first-feedrate initialization write in mm/min (feedrate output
format),
applied AFTER the strip operations; NaN when not planned. Mirrors the
oracle's per-emitted-fragment InitializeFileFirstFeedrate call
(NcOptProc).
public double FileInitFeedrate_mmdmin { get; set; }
Property Value
IsEmitted
Whether the essential filter keeps this fragment (oracle rules,
NcOptProc: 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) — 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.
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,
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).
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).
public bool StripModalFlagTokens { get; set; }
Property Value
WriteAbc_deg
Per-axis rotary endpoint values to write (A/B/C, degrees, rotary
output format);
NaN suppresses (oracle NcOptProc:
MathUtil.AbsDiffAngle > 1e-6 rad gate, value converted
rad → deg). Null when the fragment is not emitted.
public vec3d_t? WriteAbc_deg { get; set; }
Property Value
WriteProgramXyz_mm
Per-axis program-frame endpoint values to write (X/Y/Z, mm,
coordinate output 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;
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). Null when
the fragment is not emitted (no endpoint rebuild is planned).
public vec3d_t? WriteProgramXyz_mm { get; set; }