refactor: rename Size.Height to Size.Length across codebase

"Length" is more natural than "height" for flat plate materials.
Renames the field on OpenNest.Geometry.Size, Box.Height property,
and all references across 38 files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-12 22:01:40 -04:00
parent 7e0edd112a
commit 612b540d9d
38 changed files with 133 additions and 133 deletions
+1 -1
View File
@@ -135,7 +135,7 @@ if (!keepParts)
plate.Parts.Clear(); plate.Parts.Clear();
Console.WriteLine($"Nest: {nest.Name}"); Console.WriteLine($"Nest: {nest.Name}");
Console.WriteLine($"Plate: {plateIndex} ({plate.Size.Width:F1} x {plate.Size.Height:F1}), spacing={plate.PartSpacing:F2}"); Console.WriteLine($"Plate: {plateIndex} ({plate.Size.Width:F1} x {plate.Size.Length:F1}), spacing={plate.PartSpacing:F2}");
Console.WriteLine($"Drawing: {drawing.Name}"); Console.WriteLine($"Drawing: {drawing.Name}");
if (!keepParts) if (!keepParts)
+1 -1
View File
@@ -388,7 +388,7 @@ namespace OpenNest.Geometry
boundingBox.X = minX; boundingBox.X = minX;
boundingBox.Y = minY; boundingBox.Y = minY;
boundingBox.Width = maxX - minX; boundingBox.Width = maxX - minX;
boundingBox.Height = maxY - minY; boundingBox.Length = maxY - minY;
} }
public override Entity OffsetEntity(double distance, OffsetSide side) public override Entity OffsetEntity(double distance, OffsetSide side)
+1 -1
View File
@@ -13,7 +13,7 @@ namespace OpenNest.Geometry
double minX = boxes[0].X; double minX = boxes[0].X;
double minY = boxes[0].Y; double minY = boxes[0].Y;
double maxX = boxes[0].X + boxes[0].Width; double maxX = boxes[0].X + boxes[0].Width;
double maxY = boxes[0].Y + boxes[0].Height; double maxY = boxes[0].Y + boxes[0].Length;
foreach (var box in boxes) foreach (var box in boxes)
{ {
+10 -10
View File
@@ -15,14 +15,14 @@ namespace OpenNest.Geometry
{ {
Location = new Vector(x, y); Location = new Vector(x, y);
Width = w; Width = w;
Height = h; Length = h;
} }
public Vector Location; public Vector Location;
public Vector Center public Vector Center
{ {
get { return new Vector(X + Width * 0.5, Y + Height * 0.5); } get { return new Vector(X + Width * 0.5, Y + Length * 0.5); }
} }
public Size Size; public Size Size;
@@ -45,10 +45,10 @@ namespace OpenNest.Geometry
set { Size.Width = value; } set { Size.Width = value; }
} }
public double Height public double Length
{ {
get { return Size.Height; } get { return Size.Length; }
set { Size.Height = value; } set { Size.Length = value; }
} }
public void MoveTo(double x, double y) public void MoveTo(double x, double y)
@@ -86,7 +86,7 @@ namespace OpenNest.Geometry
public double Top public double Top
{ {
get { return Y + Height; } get { return Y + Length; }
} }
public double Bottom public double Bottom
@@ -96,12 +96,12 @@ namespace OpenNest.Geometry
public double Area() public double Area()
{ {
return Width * Height; return Width * Length;
} }
public double Perimeter() public double Perimeter()
{ {
return Width * 2 + Height * 2; return Width * 2 + Length * 2;
} }
public bool Intersects(Box box) public bool Intersects(Box box)
@@ -197,12 +197,12 @@ namespace OpenNest.Geometry
public Box Offset(double d) public Box Offset(double d)
{ {
return new Box(X - d, Y - d, Width + d * 2, Height + d * 2); return new Box(X - d, Y - d, Width + d * 2, Length + d * 2);
} }
public override string ToString() public override string ToString()
{ {
return string.Format("[Box: X={0}, Y={1}, Width={2}, Height={3}]", X, Y, Width, Height); return string.Format("[Box: X={0}, Y={1}, Width={2}, Length={3}]", X, Y, Width, Length);
} }
} }
} }
+2 -2
View File
@@ -23,7 +23,7 @@
var x = large.Left; var x = large.Left;
var y = large.Bottom; var y = large.Bottom;
var w = small.Left - x; var w = small.Left - x;
var h = large.Height; var h = large.Length;
return new Box(x, y, w, h); return new Box(x, y, w, h);
} }
@@ -49,7 +49,7 @@
var x = small.Right; var x = small.Right;
var y = large.Bottom; var y = large.Bottom;
var w = large.Right - x; var w = large.Right - x;
var h = large.Height; var h = large.Length;
return new Box(x, y, w, h); return new Box(x, y, w, h);
} }
+1 -1
View File
@@ -263,7 +263,7 @@ namespace OpenNest.Geometry
boundingBox.X = Center.X - Radius; boundingBox.X = Center.X - Radius;
boundingBox.Y = Center.Y - Radius; boundingBox.Y = Center.Y - Radius;
boundingBox.Width = Diameter; boundingBox.Width = Diameter;
boundingBox.Height = Diameter; boundingBox.Length = Diameter;
} }
public override Entity OffsetEntity(double distance, OffsetSide side) public override Entity OffsetEntity(double distance, OffsetSide side)
+2 -2
View File
@@ -381,12 +381,12 @@ namespace OpenNest.Geometry
if (StartPoint.Y < EndPoint.Y) if (StartPoint.Y < EndPoint.Y)
{ {
boundingBox.Y = StartPoint.Y; boundingBox.Y = StartPoint.Y;
boundingBox.Height = EndPoint.Y - StartPoint.Y; boundingBox.Length = EndPoint.Y - StartPoint.Y;
} }
else else
{ {
boundingBox.Y = EndPoint.Y; boundingBox.Y = EndPoint.Y;
boundingBox.Height = StartPoint.Y - EndPoint.Y; boundingBox.Length = StartPoint.Y - EndPoint.Y;
} }
} }
+1 -1
View File
@@ -312,7 +312,7 @@ namespace OpenNest.Geometry
boundingBox.X = minX; boundingBox.X = minX;
boundingBox.Y = minY; boundingBox.Y = minY;
boundingBox.Width = maxX - minX; boundingBox.Width = maxX - minX;
boundingBox.Height = maxY - minY; boundingBox.Length = maxY - minY;
} }
public override Entity OffsetEntity(double distance, OffsetSide side) public override Entity OffsetEntity(double distance, OffsetSide side)
+8 -8
View File
@@ -1,16 +1,16 @@
using System; using System;
namespace OpenNest.Geometry namespace OpenNest.Geometry
{ {
public struct Size public struct Size
{ {
public Size(double width, double height) public Size(double width, double length)
{ {
Height = height; Length = length;
Width = width; Width = width;
} }
public double Height; public double Length;
public double Width; public double Width;
@@ -21,10 +21,10 @@ namespace OpenNest.Geometry
if (a.Length > 2) if (a.Length > 2)
throw new FormatException("Invalid size format."); throw new FormatException("Invalid size format.");
var height = double.Parse(a[0]); var length = double.Parse(a[0]);
var width = double.Parse(a[1]); var width = double.Parse(a[1]);
return new Size(width, height); return new Size(width, length);
} }
public static bool TryParse(string s, out Size size) public static bool TryParse(string s, out Size size)
@@ -44,12 +44,12 @@ namespace OpenNest.Geometry
public override string ToString() public override string ToString()
{ {
return string.Format("{0} x {1}", Height, Width); return string.Format("{0} x {1}", Length, Width);
} }
public string ToString(int decimalPlaces) public string ToString(int decimalPlaces)
{ {
return string.Format("{0} x {1}", System.Math.Round(Height, decimalPlaces), System.Math.Round(Width, decimalPlaces)); return string.Format("{0} x {1}", System.Math.Round(Length, decimalPlaces), System.Math.Round(Width, decimalPlaces));
} }
} }
} }
+1 -1
View File
@@ -220,7 +220,7 @@ namespace OpenNest
var part = new Part(BaseDrawing, clonedProgram, var part = new Part(BaseDrawing, clonedProgram,
location + offset, location + offset,
new Box(BoundingBox.X + offset.X, BoundingBox.Y + offset.Y, new Box(BoundingBox.X + offset.X, BoundingBox.Y + offset.Y,
BoundingBox.Width, BoundingBox.Height)); BoundingBox.Width, BoundingBox.Length));
return part; return part;
} }
+23 -23
View File
@@ -117,7 +117,7 @@ namespace OpenNest
{ {
const double oneAndHalfPI = System.Math.PI * 1.5; const double oneAndHalfPI = System.Math.PI * 1.5;
Size = new Size(Size.Height, Size.Width); Size = new Size(Size.Length, Size.Width);
if (rotationDirection == RotationType.CW) if (rotationDirection == RotationType.CW)
{ {
@@ -128,7 +128,7 @@ namespace OpenNest
switch (Quadrant) switch (Quadrant)
{ {
case 1: case 1:
Offset(0, Size.Height); Offset(0, Size.Length);
break; break;
case 2: case 2:
@@ -136,7 +136,7 @@ namespace OpenNest
break; break;
case 3: case 3:
Offset(0, -Size.Height); Offset(0, -Size.Length);
break; break;
case 4: case 4:
@@ -165,7 +165,7 @@ namespace OpenNest
break; break;
case 2: case 2:
Offset(0, Size.Height); Offset(0, Size.Length);
break; break;
case 3: case 3:
@@ -173,7 +173,7 @@ namespace OpenNest
break; break;
case 4: case 4:
Offset(0, -Size.Height); Offset(0, -Size.Length);
break; break;
default: default:
@@ -200,19 +200,19 @@ namespace OpenNest
switch (Quadrant) switch (Quadrant)
{ {
case 1: case 1:
centerpt = new Vector(Size.Width * 0.5, Size.Height * 0.5); centerpt = new Vector(Size.Width * 0.5, Size.Length * 0.5);
break; break;
case 2: case 2:
centerpt = new Vector(-Size.Width * 0.5, Size.Height * 0.5); centerpt = new Vector(-Size.Width * 0.5, Size.Length * 0.5);
break; break;
case 3: case 3:
centerpt = new Vector(-Size.Width * 0.5, -Size.Height * 0.5); centerpt = new Vector(-Size.Width * 0.5, -Size.Length * 0.5);
break; break;
case 4: case 4:
centerpt = new Vector(Size.Width * 0.5, -Size.Height * 0.5); centerpt = new Vector(Size.Width * 0.5, -Size.Length * 0.5);
break; break;
default: default:
@@ -308,12 +308,12 @@ namespace OpenNest
case 3: case 3:
plateBox.X = (float)-Size.Width; plateBox.X = (float)-Size.Width;
plateBox.Y = (float)-Size.Height; plateBox.Y = (float)-Size.Length;
break; break;
case 4: case 4:
plateBox.X = 0; plateBox.X = 0;
plateBox.Y = (float)-Size.Height; plateBox.Y = (float)-Size.Length;
break; break;
default: default:
@@ -321,7 +321,7 @@ namespace OpenNest
} }
plateBox.Width = Size.Width; plateBox.Width = Size.Width;
plateBox.Height = Size.Height; plateBox.Length = Size.Length;
if (!includeParts) if (!includeParts)
return plateBox; return plateBox;
@@ -341,7 +341,7 @@ namespace OpenNest
? partsBox.Right - boundingBox.X ? partsBox.Right - boundingBox.X
: plateBox.Right - boundingBox.X; : plateBox.Right - boundingBox.X;
boundingBox.Height = partsBox.Top > plateBox.Top boundingBox.Length = partsBox.Top > plateBox.Top
? partsBox.Top - boundingBox.Y ? partsBox.Top - boundingBox.Y
: plateBox.Top - boundingBox.Y; : plateBox.Top - boundingBox.Y;
@@ -359,7 +359,7 @@ namespace OpenNest
box.X += EdgeSpacing.Left; box.X += EdgeSpacing.Left;
box.Y += EdgeSpacing.Bottom; box.Y += EdgeSpacing.Bottom;
box.Width -= EdgeSpacing.Left + EdgeSpacing.Right; box.Width -= EdgeSpacing.Left + EdgeSpacing.Right;
box.Height -= EdgeSpacing.Top + EdgeSpacing.Bottom; box.Length -= EdgeSpacing.Top + EdgeSpacing.Bottom;
return box; return box;
} }
@@ -383,28 +383,28 @@ namespace OpenNest
var bounds = Parts.GetBoundingBox(); var bounds = Parts.GetBoundingBox();
double width; double width;
double height; double length;
switch (Quadrant) switch (Quadrant)
{ {
case 1: case 1:
width = System.Math.Abs(bounds.Right) + EdgeSpacing.Right; width = System.Math.Abs(bounds.Right) + EdgeSpacing.Right;
height = System.Math.Abs(bounds.Top) + EdgeSpacing.Top; length = System.Math.Abs(bounds.Top) + EdgeSpacing.Top;
break; break;
case 2: case 2:
width = System.Math.Abs(bounds.Left) + EdgeSpacing.Left; width = System.Math.Abs(bounds.Left) + EdgeSpacing.Left;
height = System.Math.Abs(bounds.Top) + EdgeSpacing.Top; length = System.Math.Abs(bounds.Top) + EdgeSpacing.Top;
break; break;
case 3: case 3:
width = System.Math.Abs(bounds.Left) + EdgeSpacing.Left; width = System.Math.Abs(bounds.Left) + EdgeSpacing.Left;
height = System.Math.Abs(bounds.Bottom) + EdgeSpacing.Bottom; length = System.Math.Abs(bounds.Bottom) + EdgeSpacing.Bottom;
break; break;
case 4: case 4:
width = System.Math.Abs(bounds.Right) + EdgeSpacing.Right; width = System.Math.Abs(bounds.Right) + EdgeSpacing.Right;
height = System.Math.Abs(bounds.Bottom) + EdgeSpacing.Bottom; length = System.Math.Abs(bounds.Bottom) + EdgeSpacing.Bottom;
break; break;
default: default:
@@ -413,7 +413,7 @@ namespace OpenNest
Size = new Size( Size = new Size(
Helper.RoundUpToNearest(width, roundingFactor), Helper.RoundUpToNearest(width, roundingFactor),
Helper.RoundUpToNearest(height, roundingFactor)); Helper.RoundUpToNearest(length, roundingFactor));
} }
/// <summary> /// <summary>
@@ -422,7 +422,7 @@ namespace OpenNest
/// <returns></returns> /// <returns></returns>
public double Area() public double Area()
{ {
return Size.Width * Size.Height; return Size.Width * Size.Length;
} }
/// <summary> /// <summary>
@@ -503,7 +503,7 @@ namespace OpenNest
if (maxRight < work.Right) if (maxRight < work.Right)
{ {
var strip = new Box(maxRight, work.Bottom, work.Right - maxRight, work.Height); var strip = new Box(maxRight, work.Bottom, work.Right - maxRight, work.Length);
if (strip.Area() > 1.0) if (strip.Area() > 1.0)
results.Add(strip); results.Add(strip);
} }
@@ -548,7 +548,7 @@ namespace OpenNest
if (minLeft > work.Left) if (minLeft > work.Left)
{ {
var strip = new Box(work.Left, work.Bottom, minLeft - work.Left, work.Height); var strip = new Box(work.Left, work.Bottom, minLeft - work.Left, work.Length);
if (strip.Area() > 1.0) if (strip.Area() > 1.0)
results.Add(strip); results.Add(strip);
} }
+1 -1
View File
@@ -57,7 +57,7 @@ namespace OpenNest.Engine.BestFit
var combinedBox = ((IEnumerable<IBoundable>)new IBoundable[] { part1, part2 }).GetBoundingBox(); var combinedBox = ((IEnumerable<IBoundable>)new IBoundable[] { part1, part2 }).GetBoundingBox();
bestArea = combinedBox.Area(); bestArea = combinedBox.Area();
bestWidth = combinedBox.Width; bestWidth = combinedBox.Width;
bestHeight = combinedBox.Height; bestHeight = combinedBox.Length;
bestRotation = 0; bestRotation = 0;
} }
@@ -64,15 +64,15 @@ namespace OpenNest.Engine.BestFit
if (isHorizontalPush) if (isHorizontalPush)
{ {
perpMin = -(bbox2.Height + spacing); perpMin = -(bbox2.Length + spacing);
perpMax = bbox1.Height + bbox2.Height + spacing; perpMax = bbox1.Length + bbox2.Length + spacing;
pushStartOffset = bbox1.Width + bbox2.Width + spacing * 2; pushStartOffset = bbox1.Width + bbox2.Width + spacing * 2;
} }
else else
{ {
perpMin = -(bbox2.Width + spacing); perpMin = -(bbox2.Width + spacing);
perpMax = bbox1.Width + bbox2.Width + spacing; perpMax = bbox1.Width + bbox2.Width + spacing;
pushStartOffset = bbox1.Height + bbox2.Height + spacing * 2; pushStartOffset = bbox1.Length + bbox2.Length + spacing * 2;
} }
// Pre-compute part1's offset lines (half-spacing outward) // Pre-compute part1's offset lines (half-spacing outward)
@@ -9,7 +9,7 @@ namespace OpenNest.Engine.BestFit.Tiling
public TileResult Evaluate(BestFitResult bestFit, Plate plate) public TileResult Evaluate(BestFitResult bestFit, Plate plate)
{ {
var plateWidth = plate.Size.Width - plate.EdgeSpacing.Left - plate.EdgeSpacing.Right; var plateWidth = plate.Size.Width - plate.EdgeSpacing.Left - plate.EdgeSpacing.Right;
var plateHeight = plate.Size.Height - plate.EdgeSpacing.Top - plate.EdgeSpacing.Bottom; var plateHeight = plate.Size.Length - plate.EdgeSpacing.Top - plate.EdgeSpacing.Bottom;
var result1 = TryTile(bestFit, plateWidth, plateHeight, false); var result1 = TryTile(bestFit, plateWidth, plateHeight, false);
var result2 = TryTile(bestFit, plateWidth, plateHeight, true); var result2 = TryTile(bestFit, plateWidth, plateHeight, true);
+3 -3
View File
@@ -17,10 +17,10 @@ namespace OpenNest.CirclePacking
Bin.Right - item.BoundingBox.Right + Tolerance.Epsilon, Bin.Right - item.BoundingBox.Right + Tolerance.Epsilon,
Bin.Top - item.BoundingBox.Top + Tolerance.Epsilon); Bin.Top - item.BoundingBox.Top + Tolerance.Epsilon);
var rows = System.Math.Floor((Bin.Height + Tolerance.Epsilon) / (item.Diameter)); var rows = System.Math.Floor((Bin.Length + Tolerance.Epsilon) / (item.Diameter));
var diameter = item.Diameter; var diameter = item.Diameter;
var remaining = Bin.Height - diameter * rows; var remaining = Bin.Length - diameter * rows;
var radius = diameter * 0.5; var radius = diameter * 0.5;
if (remaining < radius) if (remaining < radius)
@@ -47,7 +47,7 @@ namespace OpenNest.CirclePacking
} }
else else
{ {
var yoffset = (Bin.Height - diameter) / (2 * rows - 1); var yoffset = (Bin.Length - diameter) / (2 * rows - 1);
var xoffset = Trigonometry.Base(yoffset, diameter); var xoffset = Trigonometry.Base(yoffset, diameter);
var yodd = Bin.Y + yoffset; var yodd = Bin.Y + yoffset;
+2 -2
View File
@@ -71,12 +71,12 @@ namespace OpenNest.CirclePacking
Bin.Right - item.BoundingBox.Right + Tolerance.Epsilon, Bin.Right - item.BoundingBox.Right + Tolerance.Epsilon,
Bin.Top - item.BoundingBox.Top + Tolerance.Epsilon); Bin.Top - item.BoundingBox.Top + Tolerance.Epsilon);
var count = System.Math.Floor((bin.Height + Tolerance.Epsilon) / item.Diameter); var count = System.Math.Floor((bin.Length + Tolerance.Epsilon) / item.Diameter);
if (count == 0) if (count == 0)
return bin; return bin;
var yoffset = (bin.Height - item.Diameter) / (count - 1); var yoffset = (bin.Length - item.Diameter) / (count - 1);
var xoffset = Trigonometry.Base(yoffset * 0.5, item.Diameter); var xoffset = Trigonometry.Base(yoffset * 0.5, item.Diameter);
int column = 0; int column = 0;
+5 -5
View File
@@ -9,7 +9,7 @@ namespace OpenNest
public FillLinear(Box workArea, double partSpacing) public FillLinear(Box workArea, double partSpacing)
{ {
PartSpacing = partSpacing; PartSpacing = partSpacing;
WorkArea = new Box(workArea.X, workArea.Y, workArea.Width, workArea.Height); WorkArea = new Box(workArea.X, workArea.Y, workArea.Width, workArea.Length);
} }
public Box WorkArea { get; } public Box WorkArea { get; }
@@ -34,7 +34,7 @@ namespace OpenNest
private static double GetDimension(Box box, NestDirection direction) private static double GetDimension(Box box, NestDirection direction)
{ {
return direction == NestDirection.Horizontal ? box.Width : box.Height; return direction == NestDirection.Horizontal ? box.Width : box.Length;
} }
private static double GetStart(Box box, NestDirection direction) private static double GetStart(Box box, NestDirection direction)
@@ -321,7 +321,7 @@ namespace OpenNest
template.Offset(WorkArea.Location - template.BoundingBox.Location); template.Offset(WorkArea.Location - template.BoundingBox.Location);
if (template.BoundingBox.Width > WorkArea.Width + Tolerance.Epsilon || if (template.BoundingBox.Width > WorkArea.Width + Tolerance.Epsilon ||
template.BoundingBox.Height > WorkArea.Height + Tolerance.Epsilon) template.BoundingBox.Length > WorkArea.Length + Tolerance.Epsilon)
return pattern; return pattern;
pattern.Parts.Add(template); pattern.Parts.Add(template);
@@ -472,7 +472,7 @@ namespace OpenNest
if (width <= Tolerance.Epsilon) if (width <= Tolerance.Epsilon)
return new List<Part>(); return new List<Part>();
remainingStrip = new Box(left, WorkArea.Y, width, WorkArea.Height); remainingStrip = new Box(left, WorkArea.Y, width, WorkArea.Length);
} }
// Build rotation set: always try cardinal orientations (0° and 90°), // Build rotation set: always try cardinal orientations (0° and 90°),
@@ -601,7 +601,7 @@ namespace OpenNest
var basePattern = pattern.Clone(offset); var basePattern = pattern.Clone(offset);
if (basePattern.BoundingBox.Width > WorkArea.Width + Tolerance.Epsilon || if (basePattern.BoundingBox.Width > WorkArea.Width + Tolerance.Epsilon ||
basePattern.BoundingBox.Height > WorkArea.Height + Tolerance.Epsilon) basePattern.BoundingBox.Length > WorkArea.Length + Tolerance.Epsilon)
return new List<Part>(); return new List<Part>();
return FillRecursive(basePattern, primaryAxis, depth: 0); return FillRecursive(basePattern, primaryAxis, depth: 0);
+1 -1
View File
@@ -80,7 +80,7 @@ namespace OpenNest
if (maxRight < workArea.Right) if (maxRight < workArea.Right)
{ {
var width = workArea.Right - maxRight; var width = workArea.Right - maxRight;
var height = workArea.Height; var height = workArea.Length;
if (System.Math.Min(width, height) >= MinRemnantDimension) if (System.Math.Min(width, height) >= MinRemnantDimension)
largest = System.Math.Max(largest, width * height); largest = System.Math.Max(largest, width * height);
+10 -10
View File
@@ -70,8 +70,8 @@ namespace OpenNest
testPart.UpdateBounds(); testPart.UpdateBounds();
var partLongestSide = System.Math.Max(testPart.BoundingBox.Width, testPart.BoundingBox.Height); var partLongestSide = System.Math.Max(testPart.BoundingBox.Width, testPart.BoundingBox.Length);
var workAreaShortSide = System.Math.Min(workArea.Width, workArea.Height); var workAreaShortSide = System.Math.Min(workArea.Width, workArea.Length);
if (workAreaShortSide < partLongestSide) if (workAreaShortSide < partLongestSide)
{ {
@@ -113,7 +113,7 @@ namespace OpenNest
} }
var bestLinearScore = best != null ? FillScore.Compute(best, workArea) : default; var bestLinearScore = best != null ? FillScore.Compute(best, workArea) : default;
Debug.WriteLine($"[FindBestFill] Linear: {bestLinearScore.Count} parts, density={bestLinearScore.Density:P1} | WorkArea: {workArea.Width:F1}x{workArea.Height:F1} | Angles: {angles.Count}"); Debug.WriteLine($"[FindBestFill] Linear: {bestLinearScore.Count} parts, density={bestLinearScore.Density:P1} | WorkArea: {workArea.Width:F1}x{workArea.Length:F1} | Angles: {angles.Count}");
// Try rectangle best-fit (mixes orientations to fill remnant strips). // Try rectangle best-fit (mixes orientations to fill remnant strips).
var rectResult = FillRectangleBestFit(item, workArea); var rectResult = FillRectangleBestFit(item, workArea);
@@ -143,7 +143,7 @@ namespace OpenNest
var angles = RotationAnalysis.FindHullEdgeAngles(groupParts); var angles = RotationAnalysis.FindHullEdgeAngles(groupParts);
var best = FillPattern(engine, groupParts, angles, workArea); var best = FillPattern(engine, groupParts, angles, workArea);
Debug.WriteLine($"[Fill(groupParts,Box)] Linear: {best?.Count ?? 0} parts | WorkArea: {workArea.Width:F1}x{workArea.Height:F1}"); Debug.WriteLine($"[Fill(groupParts,Box)] Linear: {best?.Count ?? 0} parts | WorkArea: {workArea.Width:F1}x{workArea.Length:F1}");
if (groupParts.Count == 1) if (groupParts.Count == 1)
{ {
@@ -213,7 +213,7 @@ namespace OpenNest
private List<Part> FillWithPairs(NestItem item, Box workArea) private List<Part> FillWithPairs(NestItem item, Box workArea)
{ {
var bestFits = BestFitCache.GetOrCompute( var bestFits = BestFitCache.GetOrCompute(
item.Drawing, Plate.Size.Width, Plate.Size.Height, item.Drawing, Plate.Size.Width, Plate.Size.Length,
Plate.PartSpacing); Plate.PartSpacing);
var candidates = SelectPairCandidates(bestFits, workArea); var candidates = SelectPairCandidates(bestFits, workArea);
@@ -260,8 +260,8 @@ namespace OpenNest
var kept = bestFits.Where(r => r.Keep).ToList(); var kept = bestFits.Where(r => r.Keep).ToList();
var top = kept.Take(50).ToList(); var top = kept.Take(50).ToList();
var workShortSide = System.Math.Min(workArea.Width, workArea.Height); var workShortSide = System.Math.Min(workArea.Width, workArea.Length);
var plateShortSide = System.Math.Min(Plate.Size.Width, Plate.Size.Height); var plateShortSide = System.Math.Min(Plate.Size.Width, Plate.Size.Length);
// When the work area is significantly narrower than the plate, // When the work area is significantly narrower than the plate,
// include all pairs that fit the narrow dimension. // include all pairs that fit the narrow dimension.
@@ -356,7 +356,7 @@ namespace OpenNest
var refDim = horizontal var refDim = horizontal
? sorted.Max(p => p.BoundingBox.Width) ? sorted.Max(p => p.BoundingBox.Width)
: sorted.Max(p => p.BoundingBox.Height); : sorted.Max(p => p.BoundingBox.Length);
var gapThreshold = refDim * 0.5; var gapThreshold = refDim * 0.5;
var clusters = new List<List<Part>>(); var clusters = new List<List<Part>>();
@@ -425,7 +425,7 @@ namespace OpenNest
if (stripWidth <= 0) if (stripWidth <= 0)
return null; return null;
stripBox = new Box(stripLeft, workArea.Y, stripWidth, workArea.Height); stripBox = new Box(stripLeft, workArea.Y, stripWidth, workArea.Length);
} }
else else
{ {
@@ -438,7 +438,7 @@ namespace OpenNest
stripBox = new Box(workArea.X, stripBottom, workArea.Width, stripHeight); stripBox = new Box(workArea.X, stripBottom, workArea.Width, stripHeight);
} }
Debug.WriteLine($"[TryStripRefill] Strip: {stripBox.Width:F1}x{stripBox.Height:F1} at ({stripBox.X:F1},{stripBox.Y:F1})"); Debug.WriteLine($"[TryStripRefill] Strip: {stripBox.Width:F1}x{stripBox.Length:F1} at ({stripBox.X:F1},{stripBox.Y:F1})");
var stripParts = FindBestFill(item, stripBox); var stripParts = FindBestFill(item, stripBox);
@@ -15,7 +15,7 @@ namespace OpenNest.RectanglePacking
}; };
bin.Width += partSpacing; bin.Width += partSpacing;
bin.Height += partSpacing; bin.Length += partSpacing;
return bin; return bin;
} }
@@ -25,7 +25,7 @@ namespace OpenNest.RectanglePacking
var box = item.Drawing.Program.BoundingBox(); var box = item.Drawing.Program.BoundingBox();
box.Width += partSpacing; box.Width += partSpacing;
box.Height += partSpacing; box.Length += partSpacing;
return new Item return new Item
{ {
@@ -44,11 +44,11 @@ namespace OpenNest.RectanglePacking
int normalColumns = 0; int normalColumns = 0;
int rotateColumns = 0; int rotateColumns = 0;
if (!BestCombination.FindFrom2(item.Width, item.Height, bin.Width, out normalColumns, out rotateColumns)) if (!BestCombination.FindFrom2(item.Width, item.Length, bin.Width, out normalColumns, out rotateColumns))
return bin; return bin;
var normalRows = (int)System.Math.Floor((bin.Height + Tolerance.Epsilon) / item.Height); var normalRows = (int)System.Math.Floor((bin.Length + Tolerance.Epsilon) / item.Length);
var rotateRows = (int)System.Math.Floor((bin.Height + Tolerance.Epsilon) / item.Width); var rotateRows = (int)System.Math.Floor((bin.Length + Tolerance.Epsilon) / item.Width);
item.Location = bin.Location; item.Location = bin.Location;
@@ -69,17 +69,17 @@ namespace OpenNest.RectanglePacking
int normalRows = 0; int normalRows = 0;
int rotateRows = 0; int rotateRows = 0;
if (!BestCombination.FindFrom2(item.Height, item.Width, Bin.Height, out normalRows, out rotateRows)) if (!BestCombination.FindFrom2(item.Length, item.Width, Bin.Length, out normalRows, out rotateRows))
return bin; return bin;
var normalColumns = (int)System.Math.Floor((Bin.Width + Tolerance.Epsilon) / item.Width); var normalColumns = (int)System.Math.Floor((Bin.Width + Tolerance.Epsilon) / item.Width);
var rotateColumns = (int)System.Math.Floor((Bin.Width + Tolerance.Epsilon) / item.Height); var rotateColumns = (int)System.Math.Floor((Bin.Width + Tolerance.Epsilon) / item.Length);
item.Location = bin.Location; item.Location = bin.Location;
bin.Items.AddRange(FillGrid(item, normalRows, normalColumns, int.MaxValue)); bin.Items.AddRange(FillGrid(item, normalRows, normalColumns, int.MaxValue));
item.Location.Y += item.Height * normalRows; item.Location.Y += item.Length * normalRows;
item.Rotate(); item.Rotate();
bin.Items.AddRange(FillGrid(item, rotateRows, rotateColumns, int.MaxValue)); bin.Items.AddRange(FillGrid(item, rotateRows, rotateColumns, int.MaxValue));
@@ -28,7 +28,7 @@ namespace OpenNest.RectanglePacking
for (var j = 0; j < innerCount; j++) for (var j = 0; j < innerCount; j++)
{ {
var x = (columnMajor ? i : j) * item.Width + item.X; var x = (columnMajor ? i : j) * item.Width + item.X;
var y = (columnMajor ? j : i) * item.Height + item.Y; var y = (columnMajor ? j : i) * item.Length + item.Y;
var clone = item.Clone() as Item; var clone = item.Clone() as Item;
clone.Location = new Vector(x, y); clone.Location = new Vector(x, y);
@@ -15,7 +15,7 @@ namespace OpenNest.RectanglePacking
public override void Fill(Item item) public override void Fill(Item item)
{ {
var ycount = (int)System.Math.Floor((Bin.Height + Tolerance.Epsilon) / item.Height); var ycount = (int)System.Math.Floor((Bin.Length + Tolerance.Epsilon) / item.Length);
var xcount = (int)System.Math.Floor((Bin.Width + Tolerance.Epsilon) / item.Width); var xcount = (int)System.Math.Floor((Bin.Width + Tolerance.Epsilon) / item.Width);
for (int i = 0; i < xcount; i++) for (int i = 0; i < xcount; i++)
@@ -24,7 +24,7 @@ namespace OpenNest.RectanglePacking
for (int j = 0; j < ycount; j++) for (int j = 0; j < ycount; j++)
{ {
var y = item.Height * j + Bin.Y; var y = item.Length * j + Bin.Y;
var addedItem = item.Clone() as Item; var addedItem = item.Clone() as Item;
addedItem.Location = new Vector(x, y); addedItem.Location = new Vector(x, y);
@@ -36,7 +36,7 @@ namespace OpenNest.RectanglePacking
public override void Fill(Item item, int maxCount) public override void Fill(Item item, int maxCount)
{ {
var ycount = (int)System.Math.Floor((Bin.Height + Tolerance.Epsilon) / item.Height); var ycount = (int)System.Math.Floor((Bin.Length + Tolerance.Epsilon) / item.Length);
var xcount = (int)System.Math.Floor((Bin.Width + Tolerance.Epsilon) / item.Width); var xcount = (int)System.Math.Floor((Bin.Width + Tolerance.Epsilon) / item.Width);
var count = ycount * xcount; var count = ycount * xcount;
@@ -60,7 +60,7 @@ namespace OpenNest.RectanglePacking
columns = (int)System.Math.Ceiling((double)maxCount / rows); columns = (int)System.Math.Ceiling((double)maxCount / rows);
} }
Bin.Items.AddRange(FillGrid(item, rows, columns, maxCount, columnMajor: item.Width > item.Height)); Bin.Items.AddRange(FillGrid(item, rows, columns, maxCount, columnMajor: item.Width > item.Length));
} }
} }
} }
+2 -2
View File
@@ -12,7 +12,7 @@ namespace OpenNest.RectanglePacking
public void Rotate() public void Rotate()
{ {
Generic.Swap(ref Size.Width, ref Size.Height); Generic.Swap(ref Size.Width, ref Size.Length);
IsRotated = !IsRotated; IsRotated = !IsRotated;
} }
@@ -38,7 +38,7 @@ namespace OpenNest.RectanglePacking
double minX = items[0].X; double minX = items[0].X;
double minY = items[0].Y; double minY = items[0].Y;
double maxX = items[0].X + items[0].Width; double maxX = items[0].X + items[0].Width;
double maxY = items[0].Y + items[0].Height; double maxY = items[0].Y + items[0].Length;
foreach (var box in items) foreach (var box in items)
{ {
@@ -16,11 +16,11 @@ namespace OpenNest.RectanglePacking
public override void Pack(List<Item> items) public override void Pack(List<Item> items)
{ {
items = items.OrderBy(i => -i.Height).ToList(); items = items.OrderBy(i => -i.Length).ToList();
foreach (var item in items) foreach (var item in items)
{ {
if (item.Height > Bin.Height) if (item.Length > Bin.Length)
continue; continue;
var level = FindLevel(item); var level = FindLevel(item);
@@ -36,7 +36,7 @@ namespace OpenNest.RectanglePacking
{ {
foreach (var level in levels) foreach (var level in levels)
{ {
if (level.Height < item.Height) if (level.Height < item.Length)
continue; continue;
if (level.RemainingWidth < item.Width) if (level.RemainingWidth < item.Width)
@@ -58,12 +58,12 @@ namespace OpenNest.RectanglePacking
var remaining = Bin.Top - y; var remaining = Bin.Top - y;
if (remaining < item.Height) if (remaining < item.Length)
return null; return null;
var level = new Level(Bin); var level = new Level(Bin);
level.Y = y; level.Y = y;
level.Height = item.Height; level.Height = item.Length;
levels.Add(level); levels.Add(level);
+8 -8
View File
@@ -145,29 +145,29 @@ namespace OpenNest.IO
{ {
case 1: case 1:
pt1 = new XYZ(0, 0, 0); pt1 = new XYZ(0, 0, 0);
pt2 = new XYZ(0, plate.Size.Height, 0); pt2 = new XYZ(0, plate.Size.Length, 0);
pt3 = new XYZ(plate.Size.Width, plate.Size.Height, 0); pt3 = new XYZ(plate.Size.Width, plate.Size.Length, 0);
pt4 = new XYZ(plate.Size.Width, 0, 0); pt4 = new XYZ(plate.Size.Width, 0, 0);
break; break;
case 2: case 2:
pt1 = new XYZ(0, 0, 0); pt1 = new XYZ(0, 0, 0);
pt2 = new XYZ(0, plate.Size.Height, 0); pt2 = new XYZ(0, plate.Size.Length, 0);
pt3 = new XYZ(-plate.Size.Width, plate.Size.Height, 0); pt3 = new XYZ(-plate.Size.Width, plate.Size.Length, 0);
pt4 = new XYZ(-plate.Size.Width, 0, 0); pt4 = new XYZ(-plate.Size.Width, 0, 0);
break; break;
case 3: case 3:
pt1 = new XYZ(0, 0, 0); pt1 = new XYZ(0, 0, 0);
pt2 = new XYZ(0, -plate.Size.Height, 0); pt2 = new XYZ(0, -plate.Size.Length, 0);
pt3 = new XYZ(-plate.Size.Width, -plate.Size.Height, 0); pt3 = new XYZ(-plate.Size.Width, -plate.Size.Length, 0);
pt4 = new XYZ(-plate.Size.Width, 0, 0); pt4 = new XYZ(-plate.Size.Width, 0, 0);
break; break;
case 4: case 4:
pt1 = new XYZ(0, 0, 0); pt1 = new XYZ(0, 0, 0);
pt2 = new XYZ(0, -plate.Size.Height, 0); pt2 = new XYZ(0, -plate.Size.Length, 0);
pt3 = new XYZ(plate.Size.Width, -plate.Size.Height, 0); pt3 = new XYZ(plate.Size.Width, -plate.Size.Length, 0);
pt4 = new XYZ(plate.Size.Width, 0, 0); pt4 = new XYZ(plate.Size.Width, 0, 0);
break; break;
+2 -2
View File
@@ -82,7 +82,7 @@ namespace OpenNest.IO
var pd = nest.PlateDefaults; var pd = nest.PlateDefaults;
return new PlateDefaultsDto return new PlateDefaultsDto
{ {
Size = new SizeDto { Width = pd.Size.Width, Length = pd.Size.Height }, Size = new SizeDto { Width = pd.Size.Width, Length = pd.Size.Length },
Thickness = pd.Thickness, Thickness = pd.Thickness,
Quadrant = pd.Quadrant, Quadrant = pd.Quadrant,
PartSpacing = pd.PartSpacing, PartSpacing = pd.PartSpacing,
@@ -161,7 +161,7 @@ namespace OpenNest.IO
list.Add(new PlateDto list.Add(new PlateDto
{ {
Id = i + 1, Id = i + 1,
Size = new SizeDto { Width = plate.Size.Width, Length = plate.Size.Height }, Size = new SizeDto { Width = plate.Size.Width, Length = plate.Size.Length },
Thickness = plate.Thickness, Thickness = plate.Thickness,
Quadrant = plate.Quadrant, Quadrant = plate.Quadrant,
Quantity = plate.Quantity, Quantity = plate.Quantity,
+5 -5
View File
@@ -40,10 +40,10 @@ namespace OpenNest.Mcp.Tools
{ {
var plate = nest.Plates[i]; var plate = nest.Plates[i];
var work = plate.WorkArea(); var work = plate.WorkArea();
sb.AppendLine($" Plate {i}: {plate.Size.Width:F1} x {plate.Size.Height:F1}, " + sb.AppendLine($" Plate {i}: {plate.Size.Width:F1} x {plate.Size.Length:F1}, " +
$"parts={plate.Parts.Count}, " + $"parts={plate.Parts.Count}, " +
$"utilization={plate.Utilization():P1}, " + $"utilization={plate.Utilization():P1}, " +
$"work area={work.Width:F1} x {work.Height:F1}"); $"work area={work.Width:F1} x {work.Length:F1}");
} }
sb.AppendLine($"Drawings: {nest.Drawings.Count}"); sb.AppendLine($"Drawings: {nest.Drawings.Count}");
@@ -51,7 +51,7 @@ namespace OpenNest.Mcp.Tools
foreach (var dwg in nest.Drawings) foreach (var dwg in nest.Drawings)
{ {
var bbox = dwg.Program.BoundingBox(); var bbox = dwg.Program.BoundingBox();
sb.AppendLine($" {dwg.Name}: bbox={bbox.Width:F2} x {bbox.Height:F2}, " + sb.AppendLine($" {dwg.Name}: bbox={bbox.Width:F2} x {bbox.Length:F2}, " +
$"required={dwg.Quantity.Required}, nested={dwg.Quantity.Nested}"); $"required={dwg.Quantity.Required}, nested={dwg.Quantity.Nested}");
} }
@@ -85,7 +85,7 @@ namespace OpenNest.Mcp.Tools
_session.Drawings.Add(drawing); _session.Drawings.Add(drawing);
var bbox = pgm.BoundingBox(); var bbox = pgm.BoundingBox();
return $"Imported drawing '{drawingName}': bbox={bbox.Width:F2} x {bbox.Height:F2}"; return $"Imported drawing '{drawingName}': bbox={bbox.Width:F2} x {bbox.Length:F2}";
} }
[McpServerTool(Name = "create_drawing")] [McpServerTool(Name = "create_drawing")]
@@ -134,7 +134,7 @@ namespace OpenNest.Mcp.Tools
_session.Drawings.Add(drawing); _session.Drawings.Add(drawing);
var bbox = pgm.BoundingBox(); var bbox = pgm.BoundingBox();
return $"Created drawing '{name}': bbox={bbox.Width:F2} x {bbox.Height:F2}"; return $"Created drawing '{name}': bbox={bbox.Width:F2} x {bbox.Length:F2}";
} }
private static CncProgram CreateRectangle(double width, double height) private static CncProgram CreateRectangle(double width, double height)
+4 -4
View File
@@ -32,13 +32,13 @@ namespace OpenNest.Mcp.Tools
var sb = new StringBuilder(); var sb = new StringBuilder();
sb.AppendLine($"Plate {plateIndex}:"); sb.AppendLine($"Plate {plateIndex}:");
sb.AppendLine($" Size: {plate.Size.Width:F1} x {plate.Size.Height:F1}"); sb.AppendLine($" Size: {plate.Size.Width:F1} x {plate.Size.Length:F1}");
sb.AppendLine($" Quadrant: {plate.Quadrant}"); sb.AppendLine($" Quadrant: {plate.Quadrant}");
sb.AppendLine($" Thickness: {plate.Thickness:F2}"); sb.AppendLine($" Thickness: {plate.Thickness:F2}");
sb.AppendLine($" Material: {plate.Material.Name}"); sb.AppendLine($" Material: {plate.Material.Name}");
sb.AppendLine($" Part spacing: {plate.PartSpacing:F2}"); sb.AppendLine($" Part spacing: {plate.PartSpacing:F2}");
sb.AppendLine($" Edge spacing: L={plate.EdgeSpacing.Left:F2} B={plate.EdgeSpacing.Bottom:F2} R={plate.EdgeSpacing.Right:F2} T={plate.EdgeSpacing.Top:F2}"); sb.AppendLine($" Edge spacing: L={plate.EdgeSpacing.Left:F2} B={plate.EdgeSpacing.Bottom:F2} R={plate.EdgeSpacing.Right:F2} T={plate.EdgeSpacing.Top:F2}");
sb.AppendLine($" Work area: {work.X:F1},{work.Y:F1} {work.Width:F1}x{work.Height:F1}"); sb.AppendLine($" Work area: {work.X:F1},{work.Y:F1} {work.Width:F1}x{work.Length:F1}");
sb.AppendLine($" Parts: {plate.Parts.Count}"); sb.AppendLine($" Parts: {plate.Parts.Count}");
sb.AppendLine($" Utilization: {plate.Utilization():P1}"); sb.AppendLine($" Utilization: {plate.Utilization():P1}");
sb.AppendLine($" Quantity: {plate.Quantity}"); sb.AppendLine($" Quantity: {plate.Quantity}");
@@ -57,7 +57,7 @@ namespace OpenNest.Mcp.Tools
for (var i = 0; i < remnants.Count; i++) for (var i = 0; i < remnants.Count; i++)
{ {
var r = remnants[i]; var r = remnants[i];
sb.AppendLine($" Remnant {i}: ({r.X:F1},{r.Y:F1}) {r.Width:F1}x{r.Height:F1}, area={r.Area():F1}"); sb.AppendLine($" Remnant {i}: ({r.X:F1},{r.Y:F1}) {r.Width:F1}x{r.Length:F1}, area={r.Area():F1}");
} }
return sb.ToString(); return sb.ToString();
@@ -90,7 +90,7 @@ namespace OpenNest.Mcp.Tools
sb.AppendLine($" [{i}] {part.BaseDrawing.Name}: " + sb.AppendLine($" [{i}] {part.BaseDrawing.Name}: " +
$"loc=({part.Location.X:F2},{part.Location.Y:F2}), " + $"loc=({part.Location.X:F2},{part.Location.Y:F2}), " +
$"rot={rotDeg:F1} deg, " + $"rot={rotDeg:F1} deg, " +
$"bbox=({bbox.X:F2},{bbox.Y:F2} {bbox.Width:F2}x{bbox.Height:F2})"); $"bbox=({bbox.X:F2},{bbox.Y:F2} {bbox.Width:F2}x{bbox.Length:F2})");
} }
if (plate.Parts.Count > limit) if (plate.Parts.Count > limit)
+1 -1
View File
@@ -121,7 +121,7 @@ namespace OpenNest.Mcp.Tools
var added = plate.Parts.Count - countBefore; var added = plate.Parts.Count - countBefore;
totalAdded += added; totalAdded += added;
sb.AppendLine($" Remnant {i}: ({remnant.X:F1},{remnant.Y:F1} {remnant.Width:F1}x{remnant.Height:F1}) -> {added} parts {(success ? "" : "(no fit)")}"); sb.AppendLine($" Remnant {i}: ({remnant.X:F1},{remnant.Y:F1} {remnant.Width:F1}x{remnant.Length:F1}) -> {added} parts {(success ? "" : "(no fit)")}");
} }
sb.AppendLine($"Total parts added: {totalAdded}"); sb.AppendLine($"Total parts added: {totalAdded}");
+2 -2
View File
@@ -41,11 +41,11 @@ namespace OpenNest.Mcp.Tools
var work = plate.WorkArea(); var work = plate.WorkArea();
var sb = new StringBuilder(); var sb = new StringBuilder();
sb.AppendLine($"Created plate {index}: {plate.Size.Width:F1} x {plate.Size.Height:F1}"); sb.AppendLine($"Created plate {index}: {plate.Size.Width:F1} x {plate.Size.Length:F1}");
sb.AppendLine($" Quadrant: {plate.Quadrant}"); sb.AppendLine($" Quadrant: {plate.Quadrant}");
sb.AppendLine($" Part spacing: {plate.PartSpacing:F2}"); sb.AppendLine($" Part spacing: {plate.PartSpacing:F2}");
sb.AppendLine($" Edge spacing: L={plate.EdgeSpacing.Left:F2} B={plate.EdgeSpacing.Bottom:F2} R={plate.EdgeSpacing.Right:F2} T={plate.EdgeSpacing.Top:F2}"); sb.AppendLine($" Edge spacing: L={plate.EdgeSpacing.Left:F2} B={plate.EdgeSpacing.Bottom:F2} R={plate.EdgeSpacing.Right:F2} T={plate.EdgeSpacing.Top:F2}");
sb.AppendLine($" Work area: {work.Width:F1} x {work.Height:F1}"); sb.AppendLine($" Work area: {work.Width:F1} x {work.Length:F1}");
return sb.ToString(); return sb.ToString();
} }
+1 -1
View File
@@ -95,7 +95,7 @@ namespace OpenNest.Actions
var location = plateView.PointWorldToGraph(SelectedArea.Location); var location = plateView.PointWorldToGraph(SelectedArea.Location);
var size = new SizeF( var size = new SizeF(
plateView.LengthWorldToGui(SelectedArea.Width), plateView.LengthWorldToGui(SelectedArea.Width),
plateView.LengthWorldToGui(SelectedArea.Height)); plateView.LengthWorldToGui(SelectedArea.Length));
var rect = new System.Drawing.RectangleF(location.X, location.Y - size.Height, size.Width, size.Height); var rect = new System.Drawing.RectangleF(location.X, location.Y - size.Height, size.Width, size.Height);
+1 -1
View File
@@ -205,7 +205,7 @@ namespace OpenNest.Controls
public virtual void ZoomToArea(Box box, bool redraw = true) public virtual void ZoomToArea(Box box, bool redraw = true)
{ {
ZoomToArea(box.X, box.Y, box.Width, box.Height, redraw); ZoomToArea(box.X, box.Y, box.Width, box.Length, redraw);
} }
public virtual void ZoomToArea(double x, double y, double width, double height, bool redraw = true) public virtual void ZoomToArea(double x, double y, double width, double height, bool redraw = true)
+7 -7
View File
@@ -384,13 +384,13 @@ namespace OpenNest.Controls
var plateRect = new RectangleF var plateRect = new RectangleF
{ {
Width = LengthWorldToGui(Plate.Size.Width), Width = LengthWorldToGui(Plate.Size.Width),
Height = LengthWorldToGui(Plate.Size.Height) Height = LengthWorldToGui(Plate.Size.Length)
}; };
var edgeSpacingRect = new RectangleF var edgeSpacingRect = new RectangleF
{ {
Width = LengthWorldToGui(Plate.Size.Width - Plate.EdgeSpacing.Left - Plate.EdgeSpacing.Right), Width = LengthWorldToGui(Plate.Size.Width - Plate.EdgeSpacing.Left - Plate.EdgeSpacing.Right),
Height = LengthWorldToGui(Plate.Size.Height - Plate.EdgeSpacing.Top - Plate.EdgeSpacing.Bottom) Height = LengthWorldToGui(Plate.Size.Length - Plate.EdgeSpacing.Top - Plate.EdgeSpacing.Bottom)
}; };
switch (Plate.Quadrant) switch (Plate.Quadrant)
@@ -410,17 +410,17 @@ namespace OpenNest.Controls
break; break;
case 3: case 3:
plateRect.Location = PointWorldToGraph(-Plate.Size.Width, -Plate.Size.Height); plateRect.Location = PointWorldToGraph(-Plate.Size.Width, -Plate.Size.Length);
edgeSpacingRect.Location = PointWorldToGraph( edgeSpacingRect.Location = PointWorldToGraph(
Plate.EdgeSpacing.Left - Plate.Size.Width, Plate.EdgeSpacing.Left - Plate.Size.Width,
Plate.EdgeSpacing.Bottom - Plate.Size.Height); Plate.EdgeSpacing.Bottom - Plate.Size.Length);
break; break;
case 4: case 4:
plateRect.Location = PointWorldToGraph(0, -Plate.Size.Height); plateRect.Location = PointWorldToGraph(0, -Plate.Size.Length);
edgeSpacingRect.Location = PointWorldToGraph( edgeSpacingRect.Location = PointWorldToGraph(
Plate.EdgeSpacing.Left, Plate.EdgeSpacing.Left,
Plate.EdgeSpacing.Bottom - Plate.Size.Height); Plate.EdgeSpacing.Bottom - Plate.Size.Length);
break; break;
default: default:
@@ -590,7 +590,7 @@ namespace OpenNest.Controls
{ {
Location = PointWorldToGraph(box.Location), Location = PointWorldToGraph(box.Location),
Width = LengthWorldToGui(box.Width), Width = LengthWorldToGui(box.Width),
Height = LengthWorldToGui(box.Height) Height = LengthWorldToGui(box.Length)
}; };
g.DrawRectangle(ColorScheme.BoundingBoxPen, rect.X, rect.Y - rect.Height, rect.Width, rect.Height); g.DrawRectangle(ColorScheme.BoundingBoxPen, rect.X, rect.Y - rect.Height, rect.Width, rect.Height);
+1 -1
View File
@@ -56,7 +56,7 @@ namespace OpenNest.Forms
var sw = Stopwatch.StartNew(); var sw = Stopwatch.StartNew();
var results = BestFitCache.GetOrCompute( var results = BestFitCache.GetOrCompute(
drawing, plate.Size.Width, plate.Size.Height, plate.PartSpacing); drawing, plate.Size.Width, plate.Size.Length, plate.PartSpacing);
var findMs = sw.ElapsedMilliseconds; var findMs = sw.ElapsedMilliseconds;
var total = results.Count; var total = results.Count;
+1 -1
View File
@@ -173,7 +173,7 @@ namespace OpenNest.Forms
return; return;
} }
if (TopSpacing + BottomSpacing >= size.Height) if (TopSpacing + BottomSpacing >= size.Length)
{ {
applyButton.Enabled = false; applyButton.Enabled = false;
return; return;
+1 -1
View File
@@ -145,7 +145,7 @@ namespace OpenNest.Forms
return; return;
} }
if (TopSpacing + BottomSpacing >= size.Height) if (TopSpacing + BottomSpacing >= size.Length)
{ {
applyButton.Enabled = false; applyButton.Enabled = false;
return; return;
+2 -2
View File
@@ -43,8 +43,8 @@ namespace OpenNest.Forms
UpdateStatus(); UpdateStatus();
UpdateGpuStatus(); UpdateGpuStatus();
if (GpuEvaluatorFactory.GpuAvailable) //if (GpuEvaluatorFactory.GpuAvailable)
BestFitCache.CreateEvaluator = (drawing, spacing) => GpuEvaluatorFactory.Create(drawing, spacing); // BestFitCache.CreateEvaluator = (drawing, spacing) => GpuEvaluatorFactory.Create(drawing, spacing);
} }
private string GetNestName(DateTime date, int id) private string GetNestName(DateTime date, int id)