120 lines
4.0 KiB
C#
120 lines
4.0 KiB
C#
using OpenNest.CNC;
|
|
using OpenNest.Geometry;
|
|
using OpenNest.IO;
|
|
|
|
namespace OpenNest.Tests;
|
|
|
|
public class CutOffSerializationTests
|
|
{
|
|
[Fact]
|
|
public void RoundTrip_CutOffsPreserved()
|
|
{
|
|
var nest = new Nest();
|
|
nest.Name = "test";
|
|
nest.DateCreated = DateTime.Now;
|
|
nest.DateLastModified = DateTime.Now;
|
|
|
|
var pgm = new Program();
|
|
pgm.Codes.Add(new RapidMove(new Vector(0, 0)));
|
|
pgm.Codes.Add(new LinearMove(new Vector(10, 10)));
|
|
var drawing = new Drawing("part1", pgm);
|
|
nest.Drawings.Add(drawing);
|
|
|
|
var plate = new Plate(100, 50);
|
|
plate.Parts.Add(new Part(drawing));
|
|
plate.CutOffs.Add(new CutOff(new Vector(62.0, 24.0), CutOffAxis.Vertical));
|
|
plate.CutOffs.Add(new CutOff(new Vector(48.0, 30.0), CutOffAxis.Horizontal));
|
|
plate.RegenerateCutOffs(new CutOffSettings());
|
|
nest.Plates.Add(plate);
|
|
|
|
using var stream = new MemoryStream();
|
|
var writer = new NestWriter(nest);
|
|
writer.Write(stream);
|
|
|
|
stream.Position = 0;
|
|
var reader = new NestReader(stream);
|
|
var loaded = reader.Read();
|
|
|
|
Assert.Single(loaded.Plates);
|
|
var loadedPlate = loaded.Plates[0];
|
|
|
|
Assert.Equal(2, loadedPlate.CutOffs.Count);
|
|
Assert.Equal(CutOffAxis.Vertical, loadedPlate.CutOffs[0].Axis);
|
|
Assert.Equal(62.0, loadedPlate.CutOffs[0].Position.X, 5);
|
|
Assert.Equal(24.0, loadedPlate.CutOffs[0].Position.Y, 5);
|
|
Assert.Equal(CutOffAxis.Horizontal, loadedPlate.CutOffs[1].Axis);
|
|
|
|
Assert.Single(loadedPlate.Parts.Where(p => !p.BaseDrawing.IsCutOff));
|
|
Assert.Single(loaded.Drawings);
|
|
}
|
|
|
|
[Fact]
|
|
public void NestWriter_SkipsCutOffPartsInPartsList()
|
|
{
|
|
var nest = new Nest();
|
|
nest.Name = "test";
|
|
nest.DateCreated = DateTime.Now;
|
|
nest.DateLastModified = DateTime.Now;
|
|
|
|
var pgm = new Program();
|
|
pgm.Codes.Add(new RapidMove(new Vector(0, 0)));
|
|
pgm.Codes.Add(new LinearMove(new Vector(10, 10)));
|
|
var drawing = new Drawing("part1", pgm);
|
|
nest.Drawings.Add(drawing);
|
|
|
|
var plate = new Plate(100, 50);
|
|
plate.Parts.Add(new Part(drawing));
|
|
plate.CutOffs.Add(new CutOff(new Vector(50, 25), CutOffAxis.Vertical));
|
|
plate.RegenerateCutOffs(new CutOffSettings());
|
|
nest.Plates.Add(plate);
|
|
|
|
Assert.Equal(2, plate.Parts.Count);
|
|
|
|
using var stream = new MemoryStream();
|
|
var writer = new NestWriter(nest);
|
|
writer.Write(stream);
|
|
|
|
stream.Position = 0;
|
|
var reader = new NestReader(stream);
|
|
var loaded = reader.Read();
|
|
|
|
Assert.Single(loaded.Plates[0].Parts.Where(p => !p.BaseDrawing.IsCutOff));
|
|
}
|
|
|
|
[Fact]
|
|
public void RoundTrip_LimitsPreserved()
|
|
{
|
|
var nest = new Nest();
|
|
nest.Name = "test";
|
|
nest.DateCreated = DateTime.Now;
|
|
nest.DateLastModified = DateTime.Now;
|
|
|
|
var pgm = new Program();
|
|
pgm.Codes.Add(new RapidMove(new Vector(0, 0)));
|
|
pgm.Codes.Add(new LinearMove(new Vector(10, 10)));
|
|
var drawing = new Drawing("part1", pgm);
|
|
nest.Drawings.Add(drawing);
|
|
|
|
var plate = new Plate(100, 50);
|
|
plate.Parts.Add(new Part(drawing));
|
|
plate.CutOffs.Add(new CutOff(new Vector(85, 30), CutOffAxis.Horizontal) { EndLimit = 85.0 });
|
|
plate.CutOffs.Add(new CutOff(new Vector(85, 30), CutOffAxis.Vertical) { StartLimit = 30.0 });
|
|
plate.RegenerateCutOffs(new CutOffSettings());
|
|
nest.Plates.Add(plate);
|
|
|
|
using var stream = new MemoryStream();
|
|
var writer = new NestWriter(nest);
|
|
writer.Write(stream);
|
|
|
|
stream.Position = 0;
|
|
var reader = new NestReader(stream);
|
|
var loaded = reader.Read();
|
|
|
|
var loadedPlate = loaded.Plates[0];
|
|
Assert.Equal(85.0, loadedPlate.CutOffs[0].EndLimit);
|
|
Assert.Null(loadedPlate.CutOffs[0].StartLimit);
|
|
Assert.Equal(30.0, loadedPlate.CutOffs[1].StartLimit);
|
|
Assert.Null(loadedPlate.CutOffs[1].EndLimit);
|
|
}
|
|
}
|