docs: address spec review feedback for plate processor design
Fix coordinate transforms (translate-only, no rotation), make orchestrator non-destructive (ProcessedPart holds result instead of mutating Part.Program), use readonly structs consistently, add factory mapping and known limitations. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -123,6 +123,10 @@ Sequencers that need configuration accept it through their constructor:
|
|||||||
- `AdvancedSequencer(SequenceParameters parameters)` — row/column grouping config
|
- `AdvancedSequencer(SequenceParameters parameters)` — row/column grouping config
|
||||||
- Directional sequencers and `EdgeStartSequencer` need no configuration
|
- Directional sequencers and `EdgeStartSequencer` need no configuration
|
||||||
|
|
||||||
|
### Factory
|
||||||
|
|
||||||
|
A static `PartSequencerFactory.Create(SequenceParameters parameters)` method in `OpenNest.Engine/Sequencing/` maps `parameters.Method` to the correct `IPartSequencer` implementation, passing constructor args as needed. Throws `NotSupportedException` for `RightSideAlt`.
|
||||||
|
|
||||||
## Stage 2: ContourCuttingStrategy
|
## Stage 2: ContourCuttingStrategy
|
||||||
|
|
||||||
Already exists in `OpenNest.Core/CNC/CuttingStrategy/`. Only the signature and return type change:
|
Already exists in `OpenNest.Core/CNC/CuttingStrategy/`. Only the signature and return type change:
|
||||||
@@ -153,7 +157,7 @@ All coordinates are in plate space.
|
|||||||
### RapidPath
|
### RapidPath
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
public struct RapidPath
|
public readonly struct RapidPath
|
||||||
{
|
{
|
||||||
public bool HeadUp { get; init; }
|
public bool HeadUp { get; init; }
|
||||||
public List<Vector> Waypoints { get; init; }
|
public List<Vector> Waypoints { get; init; }
|
||||||
@@ -272,7 +276,7 @@ public class PlateResult
|
|||||||
public List<ProcessedPart> Parts { get; init; }
|
public List<ProcessedPart> Parts { get; init; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct ProcessedPart
|
public readonly struct ProcessedPart
|
||||||
{
|
{
|
||||||
public Part Part { get; init; }
|
public Part Part { get; init; }
|
||||||
public Program ProcessedProgram { get; init; } // with lead-ins applied (original Part.Program unchanged)
|
public Program ProcessedProgram { get; init; } // with lead-ins applied (original Part.Program unchanged)
|
||||||
|
|||||||
Reference in New Issue
Block a user