Tooling segments
This commit is contained in:
@@ -1,108 +1,87 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Xml;
|
using System.Linq;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
namespace CincyLib.PressBrake
|
namespace CincyLib.PressBrake
|
||||||
{
|
{
|
||||||
public class LowerTool
|
public class LowerTool
|
||||||
{
|
{
|
||||||
/// <summary>
|
public LowerTool()
|
||||||
/// The name of the file
|
{
|
||||||
/// </summary>
|
Segments = new List<ToolSegment>();
|
||||||
public string Name;
|
}
|
||||||
|
|
||||||
public string ToolName;
|
public string FilePath { get; set; }
|
||||||
public int Type;
|
public List<ToolSegment> Segments { get; set; }
|
||||||
public double Length;
|
public int Version { get; set; }
|
||||||
public double Height;
|
public string ToolName { get; set; }
|
||||||
public double Clearance;
|
public int Type { get; set; }
|
||||||
public double MaxLoad;
|
public double Length { get; set; }
|
||||||
public double Angle;
|
public double Height { get; set; }
|
||||||
public double Radius;
|
public double Clearance { get; set; }
|
||||||
public double VOpening;
|
public double MaxLoad { get; set; }
|
||||||
public double Offset;
|
public double Angle { get; set; }
|
||||||
|
public double Radius { get; set; }
|
||||||
|
public double VOpening { get; set; }
|
||||||
|
public double Offset { get; set; }
|
||||||
|
|
||||||
public double BendRadius()
|
public double DevelopedRadius()
|
||||||
{
|
{
|
||||||
return VOpening * 0.15625;
|
return VOpening * 0.15625;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool IsSegmented
|
||||||
|
{
|
||||||
|
get { return Segments.Count > 0; }
|
||||||
|
}
|
||||||
|
|
||||||
public static LowerTool Load(string xmlpath)
|
public static LowerTool Load(string xmlpath)
|
||||||
{
|
{
|
||||||
var lowerTool = new LowerTool();
|
var stream = File.OpenRead(xmlpath);
|
||||||
var reader = XmlReader.Create(xmlpath);
|
var tool = Load(stream);
|
||||||
|
tool.FilePath = xmlpath;
|
||||||
try
|
return tool;
|
||||||
{
|
|
||||||
while (reader.Read())
|
|
||||||
{
|
|
||||||
if (reader.IsStartElement())
|
|
||||||
{
|
|
||||||
switch (reader.Name)
|
|
||||||
{
|
|
||||||
case "LowerTool":
|
|
||||||
lowerTool.Name = Path.GetFileNameWithoutExtension(xmlpath);
|
|
||||||
lowerTool.ToolName = reader.GetAttribute("ToolName");
|
|
||||||
|
|
||||||
int type;
|
|
||||||
int.TryParse(reader.GetAttribute("Type"), out type);
|
|
||||||
lowerTool.Type = type;
|
|
||||||
|
|
||||||
double length;
|
|
||||||
double.TryParse(reader.GetAttribute("Length"), out length);
|
|
||||||
lowerTool.Length = length;
|
|
||||||
|
|
||||||
double height;
|
|
||||||
double.TryParse(reader.GetAttribute("Height"), out height);
|
|
||||||
lowerTool.Height = height;
|
|
||||||
|
|
||||||
double clearance;
|
|
||||||
double.TryParse(reader.GetAttribute("Clearance"), out clearance);
|
|
||||||
lowerTool.Clearance = clearance;
|
|
||||||
|
|
||||||
double maxload;
|
|
||||||
double.TryParse(reader.GetAttribute("MaxLoad"), out maxload);
|
|
||||||
lowerTool.MaxLoad = maxload;
|
|
||||||
|
|
||||||
double angle;
|
|
||||||
double.TryParse(reader.GetAttribute("Angle"), out angle);
|
|
||||||
lowerTool.Angle = angle;
|
|
||||||
|
|
||||||
double radius;
|
|
||||||
double.TryParse(reader.GetAttribute("Radius"), out radius);
|
|
||||||
lowerTool.Radius = radius;
|
|
||||||
|
|
||||||
double vopening;
|
|
||||||
double.TryParse(reader.GetAttribute("VeeOpening"), out vopening);
|
|
||||||
lowerTool.VOpening = vopening;
|
|
||||||
|
|
||||||
double offset;
|
|
||||||
double.TryParse(reader.GetAttribute("Offset"), out offset);
|
|
||||||
lowerTool.Offset = offset;
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (SystemException ex)
|
|
||||||
{
|
|
||||||
Debug.WriteLine("Error loading: " + xmlpath);
|
|
||||||
Debug.WriteLine(ex.Message);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if (reader != null)
|
|
||||||
reader.Close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return lowerTool;
|
public static LowerTool Load(Stream stream)
|
||||||
|
{
|
||||||
|
var t = new LowerTool();
|
||||||
|
|
||||||
|
var xml = XDocument.Load(stream);
|
||||||
|
var data = xml.Root.Element("LowerTool");
|
||||||
|
|
||||||
|
t.Version = data.Attribute("Version").ToInt();
|
||||||
|
t.ToolName = data.Attribute("ToolName")?.Value;
|
||||||
|
t.Type = data.Attribute("Type").ToInt();
|
||||||
|
t.Height = data.Attribute("Height").ToDouble();
|
||||||
|
t.Clearance = data.Attribute("Clearance").ToDouble();
|
||||||
|
t.MaxLoad = data.Attribute("MaxLoad").ToDouble();
|
||||||
|
t.Angle = data.Attribute("Angle").ToDouble();
|
||||||
|
t.Radius = data.Attribute("Radius").ToDouble();
|
||||||
|
t.VOpening = data.Attribute("VeeOpening").ToDouble();
|
||||||
|
|
||||||
|
foreach (var item in data.Element("SegmentList").Descendants("ToolSeg"))
|
||||||
|
{
|
||||||
|
var seg = new ToolSegment();
|
||||||
|
seg.Length = item.Attribute("Length").ToDouble();
|
||||||
|
seg.Quantity = item.Attribute("Quantity").ToInt(1);
|
||||||
|
|
||||||
|
t.Segments.Add(seg);
|
||||||
|
}
|
||||||
|
|
||||||
|
var totalSegLength = t.Segments.Sum(i => i.Length * i.Quantity);
|
||||||
|
|
||||||
|
if (totalSegLength > 0)
|
||||||
|
t.Length = totalSegLength;
|
||||||
|
|
||||||
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Print()
|
public void Print()
|
||||||
{
|
{
|
||||||
Console.WriteLine(Name);
|
Console.WriteLine(ToolName);
|
||||||
Console.WriteLine(" Length: {0}", Length);
|
Console.WriteLine(" Length: {0}", Length);
|
||||||
Console.WriteLine(" Angle: {0}", Angle);
|
Console.WriteLine(" Angle: {0}", Angle);
|
||||||
Console.WriteLine(" Radius: {0}", Radius);
|
Console.WriteLine(" Radius: {0}", Radius);
|
||||||
@@ -112,7 +91,7 @@ namespace CincyLib.PressBrake
|
|||||||
Console.WriteLine(" MaxLoad: {0}", MaxLoad);
|
Console.WriteLine(" MaxLoad: {0}", MaxLoad);
|
||||||
Console.WriteLine(" Offset: {0}", Offset);
|
Console.WriteLine(" Offset: {0}", Offset);
|
||||||
Console.WriteLine(" Type: {0}", Type);
|
Console.WriteLine(" Type: {0}", Type);
|
||||||
Console.WriteLine(" Bend Radius: {0}", BendRadius());
|
Console.WriteLine(" Bend Radius: {0}", DevelopedRadius());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace CincyLib.PressBrake
|
|||||||
|
|
||||||
public double BendRadius()
|
public double BendRadius()
|
||||||
{
|
{
|
||||||
double r1 = lowerTool.BendRadius();
|
double r1 = lowerTool.DevelopedRadius();
|
||||||
double r2 = upperTool.Radius;
|
double r2 = upperTool.Radius;
|
||||||
return r1 > r2 ? r1 : r2;
|
return r1 > r2 ? r1 : r2;
|
||||||
}
|
}
|
||||||
@@ -48,7 +48,7 @@ namespace CincyLib.PressBrake
|
|||||||
|
|
||||||
public void Print()
|
public void Print()
|
||||||
{
|
{
|
||||||
Console.WriteLine("{0} / {1}", lowerTool.Name, upperTool.Name);
|
Console.WriteLine("{0} / {1}", lowerTool.ToolName, upperTool.ToolName);
|
||||||
Console.WriteLine(" Generates an inside radius of: {0}", BendRadius().ToString("n3") + "\"");
|
Console.WriteLine(" Generates an inside radius of: {0}", BendRadius().ToString("n3") + "\"");
|
||||||
Console.WriteLine(" Usable on materials less than or equal to: {0}", BendRadius().ToString("n3") + "\"");
|
Console.WriteLine(" Usable on materials less than or equal to: {0}", BendRadius().ToString("n3") + "\"");
|
||||||
Console.WriteLine(" Capable of bends greater than or equal to: {0}", lowerTool.Angle.ToString("n0") + " degrees");
|
Console.WriteLine(" Capable of bends greater than or equal to: {0}", lowerTool.Angle.ToString("n0") + " degrees");
|
||||||
|
|||||||
@@ -1,99 +1,83 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Xml;
|
using System.Linq;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
namespace CincyLib.PressBrake
|
namespace CincyLib.PressBrake
|
||||||
{
|
{
|
||||||
public class UpperTool
|
public class UpperTool
|
||||||
{
|
{
|
||||||
/// <summary>
|
public UpperTool()
|
||||||
/// The name of the file
|
{
|
||||||
/// </summary>
|
Segments = new List<ToolSegment>();
|
||||||
public string Name;
|
}
|
||||||
|
|
||||||
public string ToolName;
|
public List<ToolSegment> Segments { get; set; }
|
||||||
public double Length;
|
|
||||||
public double Angle;
|
|
||||||
public double Radius;
|
|
||||||
public double Height;
|
|
||||||
public double Clearance;
|
|
||||||
public double MaxLoad;
|
|
||||||
public double Offset;
|
|
||||||
public int Type;
|
|
||||||
|
|
||||||
|
public string FilePath { get; set; }
|
||||||
|
public int Version { get; set; }
|
||||||
|
public string ToolName { get; set; }
|
||||||
|
public double Length { get; set; }
|
||||||
|
public double Angle { get; set; }
|
||||||
|
public double Radius { get; set; }
|
||||||
|
public double Height { get; set; }
|
||||||
|
public double Clearance { get; set; }
|
||||||
|
public double MaxLoad { get; set; }
|
||||||
|
public double Offset { get; set; }
|
||||||
|
public int Type { get; set; }
|
||||||
|
|
||||||
|
public bool IsSegmented
|
||||||
|
{
|
||||||
|
get { return Segments.Count > 0; }
|
||||||
|
}
|
||||||
|
|
||||||
public static UpperTool Load(string xmlpath)
|
public static UpperTool Load(string xmlpath)
|
||||||
|
{
|
||||||
|
var stream = File.OpenRead(xmlpath);
|
||||||
|
var tool = Load(stream);
|
||||||
|
tool.FilePath = xmlpath;
|
||||||
|
return tool;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static UpperTool Load(Stream stream)
|
||||||
{
|
{
|
||||||
var upperTool = new UpperTool();
|
var upperTool = new UpperTool();
|
||||||
var reader = XmlReader.Create(xmlpath);
|
|
||||||
|
|
||||||
try
|
var xml = XDocument.Load(stream);
|
||||||
|
var data = xml.Root.Element("UpperTool");
|
||||||
|
|
||||||
|
upperTool.Version = data.Attribute("Version").ToInt();
|
||||||
|
upperTool.ToolName = data.Attribute("ToolName")?.Value;
|
||||||
|
upperTool.Type = data.Attribute("Type").ToInt();
|
||||||
|
upperTool.Length = data.Attribute("Length").ToDouble();
|
||||||
|
upperTool.Height = data.Attribute("Height").ToDouble();
|
||||||
|
upperTool.Clearance = data.Attribute("Clearance").ToDouble();
|
||||||
|
upperTool.MaxLoad = data.Attribute("MaxLoad").ToDouble();
|
||||||
|
upperTool.Angle = data.Attribute("Angle").ToDouble();
|
||||||
|
upperTool.Radius = data.Attribute("Radius").ToDouble();
|
||||||
|
upperTool.Offset = data.Attribute("Radius").ToDouble();
|
||||||
|
|
||||||
|
foreach (var item in data.Element("SegmentList").Descendants("ToolSeg"))
|
||||||
{
|
{
|
||||||
while (reader.Read())
|
var seg = new ToolSegment();
|
||||||
{
|
seg.Length = item.Attribute("Length").ToDouble();
|
||||||
if (reader.IsStartElement())
|
seg.Quantity = item.Attribute("Quantity").ToInt(1);
|
||||||
{
|
|
||||||
switch (reader.Name)
|
|
||||||
{
|
|
||||||
case "UpperTool":
|
|
||||||
upperTool.Name = Path.GetFileNameWithoutExtension(xmlpath);
|
|
||||||
upperTool.ToolName = reader.GetAttribute("ToolName");
|
|
||||||
|
|
||||||
int type;
|
upperTool.Segments.Add(seg);
|
||||||
int.TryParse(reader.GetAttribute("Type"), out type);
|
|
||||||
upperTool.Type = type;
|
|
||||||
|
|
||||||
double length;
|
|
||||||
double.TryParse(reader.GetAttribute("Length"), out length);
|
|
||||||
upperTool.Length = length;
|
|
||||||
|
|
||||||
double height;
|
|
||||||
double.TryParse(reader.GetAttribute("Height"), out height);
|
|
||||||
upperTool.Height = height;
|
|
||||||
|
|
||||||
double clearance;
|
|
||||||
double.TryParse(reader.GetAttribute("Clearance"), out clearance);
|
|
||||||
upperTool.Clearance = clearance;
|
|
||||||
|
|
||||||
double maxload;
|
|
||||||
double.TryParse(reader.GetAttribute("MaxLoad"), out maxload);
|
|
||||||
upperTool.MaxLoad = maxload;
|
|
||||||
|
|
||||||
double angle;
|
|
||||||
double.TryParse(reader.GetAttribute("Angle"), out angle);
|
|
||||||
upperTool.Angle = angle;
|
|
||||||
|
|
||||||
double radius;
|
|
||||||
double.TryParse(reader.GetAttribute("Radius"), out radius);
|
|
||||||
upperTool.Radius = radius;
|
|
||||||
|
|
||||||
double offset;
|
|
||||||
double.TryParse(reader.GetAttribute("Offset"), out offset);
|
|
||||||
upperTool.Offset = offset;
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (SystemException ex)
|
|
||||||
{
|
|
||||||
Debug.WriteLine("Error loading: " + xmlpath);
|
|
||||||
Debug.WriteLine(ex.Message);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if (reader != null)
|
|
||||||
reader.Close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var totalSegLength = upperTool.Segments.Sum(i => i.Length * i.Quantity);
|
||||||
|
|
||||||
|
if (totalSegLength > 0)
|
||||||
|
upperTool.Length = totalSegLength;
|
||||||
|
|
||||||
return upperTool;
|
return upperTool;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Print()
|
public void Print()
|
||||||
{
|
{
|
||||||
Console.WriteLine(Name);
|
Console.WriteLine(ToolName);
|
||||||
Console.WriteLine(" Length: {0}", Length);
|
Console.WriteLine(" Length: {0}", Length);
|
||||||
Console.WriteLine(" Angle: {0}", Angle);
|
Console.WriteLine(" Angle: {0}", Angle);
|
||||||
Console.WriteLine(" Radius: {0}", Radius);
|
Console.WriteLine(" Radius: {0}", Radius);
|
||||||
@@ -104,4 +88,10 @@ namespace CincyLib.PressBrake
|
|||||||
Console.WriteLine(" Type: {0}", Type);
|
Console.WriteLine(" Type: {0}", Type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class ToolSegment
|
||||||
|
{
|
||||||
|
public double Length { get; set; }
|
||||||
|
public int Quantity { get; set; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user