feat(reporting): add one-plate nest report PDF library slice
Add OpenNest.Reporting (net8.0, PDFsharp-MigraDoc 6.2.4) with a detached report snapshot and a PDF writer for an empty/demand-only job or a single plate layout: Letter portrait summary with vector part thumbnails and a landscape plate page with a vector sheet diagram, both with Page X of Y. - Snapshot uses reference identity for document-local R### IDs, recounts nested quantities from placements x copies with checked wide integers, excludes cutoffs from accounting, and retains no live domain objects. - Geometry keeps Cut/Display material paths, drops rapid/scribe/lead paths, preserves native arcs, holes and intentional tab gaps, and rejects malformed programs with plate/part identification. - Open contours and cutoffs are stroked per contour so PDFsharp cannot join a tab gap to the next contour. - Bundled DejaVu Sans via a custom resolver (including MigraDoc's error font); unsupported text fails with the field and code point. - Layouts beyond this slice (multiple plates, page overflow, labels that do not fit) fail with NotSupportedException before the destination is replaced; output is rendered to a temporary sibling and moved atomically.
This commit is contained in:
@@ -46,6 +46,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenNest.WinForms.Tests", "
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenNest.FrontEnd.Tests", "OpenNest.FrontEnd.Tests\OpenNest.FrontEnd.Tests.csproj", "{0CD494FD-F37F-420D-B2C6-DC1E0D50BCEB}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenNest.Reporting", "OpenNest.Reporting\OpenNest.Reporting.csproj", "{5C3708F5-DD69-436D-B412-7FF360DDB3DC}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -284,6 +286,18 @@ Global
|
||||
{0CD494FD-F37F-420D-B2C6-DC1E0D50BCEB}.Release|x64.Build.0 = Release|Any CPU
|
||||
{0CD494FD-F37F-420D-B2C6-DC1E0D50BCEB}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{0CD494FD-F37F-420D-B2C6-DC1E0D50BCEB}.Release|x86.Build.0 = Release|Any CPU
|
||||
{5C3708F5-DD69-436D-B412-7FF360DDB3DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5C3708F5-DD69-436D-B412-7FF360DDB3DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5C3708F5-DD69-436D-B412-7FF360DDB3DC}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{5C3708F5-DD69-436D-B412-7FF360DDB3DC}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{5C3708F5-DD69-436D-B412-7FF360DDB3DC}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{5C3708F5-DD69-436D-B412-7FF360DDB3DC}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{5C3708F5-DD69-436D-B412-7FF360DDB3DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{5C3708F5-DD69-436D-B412-7FF360DDB3DC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{5C3708F5-DD69-436D-B412-7FF360DDB3DC}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{5C3708F5-DD69-436D-B412-7FF360DDB3DC}.Release|x64.Build.0 = Release|Any CPU
|
||||
{5C3708F5-DD69-436D-B412-7FF360DDB3DC}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{5C3708F5-DD69-436D-B412-7FF360DDB3DC}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
Reference in New Issue
Block a user