NFP[] nfps = new NFP[13];
nfps[0] = new NFP();
nfps[0].AddPoint(new SvgPoint(1, 1));
nfps[0].AddPoint(new SvgPoint(12, 12));
nfps[0].AddPoint(new SvgPoint(1, 10));
nfps[1] = new NFP();
nfps[1].AddPoint(new SvgPoint(10, 10));
nfps[1].AddPoint(new SvgPoint(22, 22));
nfps[1].AddPoint(new SvgPoint(10, 20));
nfps[2] = new NFP();
nfps[2].AddPoint(new SvgPoint(20, 20));
nfps[2].AddPoint(new SvgPoint(32, 32));
nfps[2].AddPoint(new SvgPoint(20, 30));
for (int i = 3; i < 13; i++)
{
nfps[i] = new NFP();
nfps[i].AddPoint(new SvgPoint(10, 10));
nfps[i].AddPoint(new SvgPoint(22, 22));
nfps[i].AddPoint(new SvgPoint(10, 20));
}
StartParallel(100, 100, 20, 2, nfps);
public List<NFP> StartParallel(double binW, double binH,
int loopCount, double spacing, NFP[] nestPaths)
{
double newBinW = binW;
double newBinH = binH;
SvgNest.Config.spacing = spacing;
SvgNest.Config.placementType = PlacementTypeEnum.gravity;
//SvgNest.Config.rotations = isHighSpeed ? 2 : 5;
SvgNest.Config.rotations = 5;
SvgNest.Config.sheetSpacing = spacing * 0.5d;
//SvgNest.Config.useHoles = true;
DeepNestLib.Background.UseParallel = true;
NestingContext nc = new NestingContext();
nc.AddSheet((int)binW, (int)binH, 0);
nc.Polygons.AddRange(nestPaths);
nc.StartNest();
double bestFitness = double.MaxValue;
List<SheetPlacementItem>[] best_placements = null;
for (int i = 0; i < loopCount; i++)
{
nc.NestIterate();
if (nc.Current.fitness < bestFitness)
{
bestFitness = nc.Current.fitness.Value;
best_placements = nc.Current.placements;
}
}
SvgParser.Export("output.svg", nc.Polygons, nc.Sheets);
return nc.Polygons;
}
//
// call run
//
//output.svg