Read focus settings for material library files.
This commit is contained in:
@@ -10,7 +10,7 @@ namespace CincyLib.Laser
|
|||||||
RampedPierceSteps = new RampedPierceStep[MaxSteps];
|
RampedPierceSteps = new RampedPierceStep[MaxSteps];
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Name { get; set; }
|
public string Path { get; set; }
|
||||||
|
|
||||||
public string Machine { get; set; }
|
public string Machine { get; set; }
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ namespace CincyLib.Laser
|
|||||||
|
|
||||||
public PierceType PierceType { get; set; }
|
public PierceType PierceType { get; set; }
|
||||||
|
|
||||||
public float PierceDwell { get; set; }
|
public double PierceDwell { get; set; }
|
||||||
|
|
||||||
public int PiercePower { get; set; }
|
public int PiercePower { get; set; }
|
||||||
|
|
||||||
@@ -26,9 +26,9 @@ namespace CincyLib.Laser
|
|||||||
|
|
||||||
public int PierceDutyCycle { get; set; }
|
public int PierceDutyCycle { get; set; }
|
||||||
|
|
||||||
public float PierceZHoldDistance { get; set; }
|
public double PierceZHoldDistance { get; set; }
|
||||||
|
|
||||||
public float PierceNozzleStandoffRampFrom { get; set; }
|
public double PierceNozzleStandoffRampFrom { get; set; }
|
||||||
|
|
||||||
//public float PierceNozzleStandoffRampTo { get; set; }
|
//public float PierceNozzleStandoffRampTo { get; set; }
|
||||||
|
|
||||||
@@ -40,11 +40,11 @@ namespace CincyLib.Laser
|
|||||||
|
|
||||||
public int RampedPierceStartPower { get; set; }
|
public int RampedPierceStartPower { get; set; }
|
||||||
|
|
||||||
public float RampedPierceCoolingTime { get; set; }
|
public double RampedPierceCoolingTime { get; set; }
|
||||||
|
|
||||||
public RampedPierceStep[] RampedPierceSteps;
|
public RampedPierceStep[] RampedPierceSteps;
|
||||||
|
|
||||||
public float PierceTime()
|
public double PierceTime()
|
||||||
{
|
{
|
||||||
switch (PierceType)
|
switch (PierceType)
|
||||||
{
|
{
|
||||||
@@ -73,9 +73,9 @@ namespace CincyLib.Laser
|
|||||||
|
|
||||||
public int Feedrate { get; set; }
|
public int Feedrate { get; set; }
|
||||||
|
|
||||||
//public float PreCutDwell { get; set; } // seconds
|
public double PreCutDwellSeconds { get; set; } // seconds
|
||||||
|
|
||||||
public float KerfWidth { get; set; } // inches
|
public double KerfWidth { get; set; } // inches
|
||||||
|
|
||||||
//public float PowerBurstTime { get; set; } // seconds
|
//public float PowerBurstTime { get; set; } // seconds
|
||||||
|
|
||||||
@@ -85,12 +85,12 @@ namespace CincyLib.Laser
|
|||||||
|
|
||||||
public bool UsePartCoolantOnCut { get; set; }
|
public bool UsePartCoolantOnCut { get; set; }
|
||||||
|
|
||||||
public float NozzleStandoff1 { get; set; }
|
public double NozzleStandoff1 { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Optional standoff (M45)
|
/// Optional standoff (M45)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float NozzleStandoff2 { get; set; }
|
public double NozzleStandoff2 { get; set; }
|
||||||
|
|
||||||
public AssistGasType AssistGas { get; set; }
|
public AssistGasType AssistGas { get; set; }
|
||||||
|
|
||||||
@@ -103,6 +103,12 @@ namespace CincyLib.Laser
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
public double CutFocusNearField { get; set; }
|
||||||
|
public double CutFocusFarField { get; set; }
|
||||||
|
|
||||||
|
public double PierceFocusNearField { get; set; }
|
||||||
|
public double PierceFocusFarField { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Dynamic power control feedrate.
|
/// Dynamic power control feedrate.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -122,7 +128,8 @@ namespace CincyLib.Laser
|
|||||||
public static MaterialLib Load(string libfile)
|
public static MaterialLib Load(string libfile)
|
||||||
{
|
{
|
||||||
var reader = new MaterialLibReader();
|
var reader = new MaterialLibReader();
|
||||||
return reader.Read(libfile) ? reader.MaterialLib : null;
|
reader.Read(libfile);
|
||||||
|
return reader.MaterialLib;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,134 +19,120 @@ namespace CincyLib.Laser
|
|||||||
MaterialLib = materiallib;
|
MaterialLib = materiallib;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Read(string file)
|
public void Read(string file)
|
||||||
{
|
{
|
||||||
Stream stream = null;
|
using (var stream = File.OpenRead(file))
|
||||||
MaterialLib.Name = Path.GetFileNameWithoutExtension(file);
|
|
||||||
|
|
||||||
var success = false;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
stream = File.OpenRead(file);
|
MaterialLib.Path = file;
|
||||||
success = Read(stream);
|
Read(stream);
|
||||||
}
|
}
|
||||||
catch (SystemException ex)
|
|
||||||
{
|
|
||||||
Debug.WriteLine(ex.Message);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if (stream != null)
|
|
||||||
stream.Close();
|
|
||||||
}
|
|
||||||
|
|
||||||
return success;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Read(Stream stream)
|
public void Read(Stream stream)
|
||||||
{
|
{
|
||||||
var success = false;
|
var reader = new BinaryReader(stream);
|
||||||
|
|
||||||
try
|
MaterialLib.Machine = reader.ReadString();
|
||||||
|
MaterialLib.PierceDwell = reader.ReadSingle();
|
||||||
|
|
||||||
|
reader.BaseStream.Seek(2, SeekOrigin.Current); // Unknown 2 bytes
|
||||||
|
MaterialLib.PiercePower = reader.ReadInt16();
|
||||||
|
MaterialLib.PierceFrequency = reader.ReadInt16();
|
||||||
|
MaterialLib.PierceDutyCycle = reader.ReadInt16();
|
||||||
|
|
||||||
|
var pierceType = reader.ReadByte();
|
||||||
|
|
||||||
|
switch (pierceType)
|
||||||
{
|
{
|
||||||
var reader = new BinaryReader(stream);
|
case 0:
|
||||||
|
MaterialLib.PierceType = PierceType.NoPierce;
|
||||||
|
break;
|
||||||
|
|
||||||
MaterialLib.Machine = reader.ReadString();
|
case 1:
|
||||||
MaterialLib.PierceDwell = reader.ReadSingle();
|
|
||||||
|
|
||||||
reader.BaseStream.Seek(2, SeekOrigin.Current);
|
|
||||||
MaterialLib.PiercePower = reader.ReadInt16();
|
|
||||||
MaterialLib.PierceFrequency = reader.ReadInt16();
|
|
||||||
MaterialLib.PierceDutyCycle = reader.ReadInt16();
|
|
||||||
|
|
||||||
if (reader.ReadInt16() == 1)
|
|
||||||
MaterialLib.PierceType = PierceType.RampedPower;
|
MaterialLib.PierceType = PierceType.RampedPower;
|
||||||
|
break;
|
||||||
MaterialLib.PierceNozzleStandoffRampFrom = reader.ReadSingle();
|
|
||||||
|
|
||||||
MaterialLib.RampedPierceCoolingTime = reader.ReadSingle();
|
|
||||||
MaterialLib.UsePartCoolantOnPierce = Convert.ToBoolean(reader.ReadInt16());
|
|
||||||
|
|
||||||
MaterialLib.PierceAssistGas = (AssistGasType)reader.ReadInt16();
|
|
||||||
MaterialLib.PierceAssistGasPressure = reader.ReadInt16();
|
|
||||||
|
|
||||||
reader.BaseStream.Seek(6, SeekOrigin.Current);
|
|
||||||
MaterialLib.Power = reader.ReadInt16();
|
|
||||||
MaterialLib.Frequency = reader.ReadInt16();
|
|
||||||
MaterialLib.DutyCycle = reader.ReadInt16();
|
|
||||||
MaterialLib.DynamicPowerControl = Convert.ToBoolean(reader.ReadInt16());
|
|
||||||
MaterialLib.DPCFeedrate = reader.ReadInt16();
|
|
||||||
MaterialLib.DPCMinPower = reader.ReadInt16();
|
|
||||||
|
|
||||||
reader.BaseStream.Seek(4, SeekOrigin.Current);
|
|
||||||
MaterialLib.NozzleStandoff1 = reader.ReadSingle();
|
|
||||||
MaterialLib.KerfWidth = reader.ReadSingle();
|
|
||||||
|
|
||||||
reader.BaseStream.Seek(2, SeekOrigin.Current);
|
|
||||||
MaterialLib.AssistGas = (AssistGasType)reader.ReadInt16();
|
|
||||||
MaterialLib.AssistGasPressure1 = reader.ReadInt16();
|
|
||||||
MaterialLib.AssistGasPressure2 = reader.ReadInt16();
|
|
||||||
MaterialLib.DynamicAssistGas = Convert.ToBoolean(reader.ReadInt16());
|
|
||||||
|
|
||||||
reader.BaseStream.Seek(4, SeekOrigin.Current);
|
|
||||||
var steps = reader.ReadInt16();
|
|
||||||
|
|
||||||
reader.BaseStream.Seek(4, SeekOrigin.Current);
|
|
||||||
MaterialLib.RampedPierceStartPower = reader.ReadInt16();
|
|
||||||
|
|
||||||
MaterialLib.RampedPierceSteps = new RampedPierceStep[steps];
|
|
||||||
|
|
||||||
|
|
||||||
for (int i = 0; i < steps; ++i)
|
|
||||||
{
|
|
||||||
MaterialLib.RampedPierceSteps[i] = new RampedPierceStep();
|
|
||||||
MaterialLib.RampedPierceSteps[i].Time = reader.ReadSingle();
|
|
||||||
MaterialLib.RampedPierceSteps[i].Power = reader.ReadInt16();
|
|
||||||
}
|
|
||||||
|
|
||||||
const int MAX_STEPS = 20;
|
|
||||||
|
|
||||||
var remaining = MAX_STEPS - steps;
|
|
||||||
reader.BaseStream.Seek(6 * remaining, SeekOrigin.Current);
|
|
||||||
|
|
||||||
int length = reader.ReadByte();
|
|
||||||
|
|
||||||
if (length == 0xFF)
|
|
||||||
{
|
|
||||||
var second = reader.ReadByte();
|
|
||||||
var third = reader.ReadByte();
|
|
||||||
|
|
||||||
length = length * third + second + third;
|
|
||||||
}
|
|
||||||
MaterialLib.Notes = Encoding.ASCII.GetString(reader.ReadBytes(length));
|
|
||||||
|
|
||||||
reader.BaseStream.Seek(4, SeekOrigin.Current);
|
|
||||||
MaterialLib.Feedrate = reader.ReadInt16();
|
|
||||||
|
|
||||||
if (MaterialLib.PierceType != PierceType.RampedPower)
|
|
||||||
{
|
|
||||||
if (reader.BaseStream.Length < reader.BaseStream.Position + 527)
|
|
||||||
{
|
|
||||||
MaterialLib.PierceType = MaterialLib.PierceDwell == 0
|
|
||||||
? PierceType.NoPierce
|
|
||||||
: PierceType.FixedDwellTime;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
reader.BaseStream.Seek(527, SeekOrigin.Current);
|
|
||||||
MaterialLib.PierceType = (PierceType)reader.ReadInt16();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
success = true;
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
|
||||||
|
reader.BaseStream.Seek(1, SeekOrigin.Current); // Unknown 1 byte
|
||||||
|
|
||||||
|
MaterialLib.PierceNozzleStandoffRampFrom = reader.ReadSingle();
|
||||||
|
|
||||||
|
MaterialLib.RampedPierceCoolingTime = reader.ReadSingle();
|
||||||
|
MaterialLib.UsePartCoolantOnPierce = Convert.ToBoolean(reader.ReadInt16());
|
||||||
|
|
||||||
|
MaterialLib.PierceAssistGas = (AssistGasType)reader.ReadInt16();
|
||||||
|
MaterialLib.PierceAssistGasPressure = reader.ReadInt16();
|
||||||
|
MaterialLib.PreCutDwellSeconds = Math.Round(reader.ReadSingle(), 4);
|
||||||
|
|
||||||
|
reader.BaseStream.Seek(2, SeekOrigin.Current); // Unknown 2 bytes
|
||||||
|
MaterialLib.Power = reader.ReadInt16();
|
||||||
|
MaterialLib.Frequency = reader.ReadInt16();
|
||||||
|
MaterialLib.DutyCycle = reader.ReadInt16();
|
||||||
|
MaterialLib.DynamicPowerControl = Convert.ToBoolean(reader.ReadInt16());
|
||||||
|
MaterialLib.DPCFeedrate = reader.ReadInt16();
|
||||||
|
MaterialLib.DPCMinPower = reader.ReadInt16();
|
||||||
|
|
||||||
|
reader.BaseStream.Seek(4, SeekOrigin.Current); // Unknown 4 bytes
|
||||||
|
MaterialLib.NozzleStandoff1 = reader.ReadSingle();
|
||||||
|
MaterialLib.KerfWidth = reader.ReadSingle();
|
||||||
|
|
||||||
|
reader.BaseStream.Seek(2, SeekOrigin.Current); // Unknown 2 bytes
|
||||||
|
MaterialLib.AssistGas = (AssistGasType)reader.ReadInt16();
|
||||||
|
MaterialLib.AssistGasPressure1 = reader.ReadInt16();
|
||||||
|
MaterialLib.AssistGasPressure2 = reader.ReadInt16();
|
||||||
|
MaterialLib.DynamicAssistGas = Convert.ToBoolean(reader.ReadInt16());
|
||||||
|
|
||||||
|
reader.BaseStream.Seek(4, SeekOrigin.Current); // Unknown 4 bytes
|
||||||
|
var steps = reader.ReadInt16();
|
||||||
|
|
||||||
|
reader.BaseStream.Seek(4, SeekOrigin.Current); // Unknown 4 bytes
|
||||||
|
MaterialLib.RampedPierceStartPower = reader.ReadInt16();
|
||||||
|
|
||||||
|
MaterialLib.RampedPierceSteps = new RampedPierceStep[steps];
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0; i < steps; ++i)
|
||||||
{
|
{
|
||||||
Debug.WriteLine(ex.Message);
|
MaterialLib.RampedPierceSteps[i] = new RampedPierceStep();
|
||||||
|
MaterialLib.RampedPierceSteps[i].Time = reader.ReadSingle();
|
||||||
|
MaterialLib.RampedPierceSteps[i].Power = reader.ReadInt16();
|
||||||
}
|
}
|
||||||
|
|
||||||
return success;
|
const int MAX_STEPS = 20;
|
||||||
|
|
||||||
|
var remaining = MAX_STEPS - steps;
|
||||||
|
reader.BaseStream.Seek(6 * remaining, SeekOrigin.Current);
|
||||||
|
|
||||||
|
int length = reader.ReadByte();
|
||||||
|
|
||||||
|
if (length == 0xFF)
|
||||||
|
{
|
||||||
|
var second = reader.ReadByte();
|
||||||
|
var third = reader.ReadByte();
|
||||||
|
|
||||||
|
length = length * third + second + third;
|
||||||
|
}
|
||||||
|
MaterialLib.Notes = Encoding.ASCII.GetString(reader.ReadBytes(length));
|
||||||
|
|
||||||
|
reader.BaseStream.Seek(4, SeekOrigin.Current); // Unknown 4 bytes
|
||||||
|
MaterialLib.Feedrate = reader.ReadInt16();
|
||||||
|
|
||||||
|
reader.BaseStream.Seek(428, SeekOrigin.Current);
|
||||||
|
MaterialLib.CutFocusNearField = Math.Round(reader.ReadSingle(), 4);
|
||||||
|
MaterialLib.CutFocusFarField = Math.Round(reader.ReadSingle(), 4);
|
||||||
|
MaterialLib.PierceFocusNearField = Math.Round(reader.ReadSingle(), 4);
|
||||||
|
MaterialLib.PierceFocusFarField = Math.Round(reader.ReadSingle(), 4);
|
||||||
|
|
||||||
|
// older files wont go this far...
|
||||||
|
const int seek = 88;
|
||||||
|
|
||||||
|
var hasExtendedInfo = reader.BaseStream.Length > reader.BaseStream.Position + seek;
|
||||||
|
reader.BaseStream.Seek(seek, SeekOrigin.Current);
|
||||||
|
|
||||||
|
if (hasExtendedInfo)
|
||||||
|
{
|
||||||
|
MaterialLib.PierceType = (PierceType)reader.ReadByte();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ namespace CincyLib.PressBrake
|
|||||||
step.LowerID = x.Attribute("LowerID").ToInt();
|
step.LowerID = x.Attribute("LowerID").ToInt();
|
||||||
step.SpdChgDwn = x.Attribute("SpdChgDwn").ToDouble();
|
step.SpdChgDwn = x.Attribute("SpdChgDwn").ToDouble();
|
||||||
step.SpdChgUp = x.Attribute("SpdChgUp").ToDouble();
|
step.SpdChgUp = x.Attribute("SpdChgUp").ToDouble();
|
||||||
|
step.Tilt = x.Attribute("Tilt").ToDouble();
|
||||||
step.FormSpeed = x.Attribute("FormSpeed").ToDouble();
|
step.FormSpeed = x.Attribute("FormSpeed").ToDouble();
|
||||||
step.XLeft = x.Attribute("XLeft").ToDouble();
|
step.XLeft = x.Attribute("XLeft").ToDouble();
|
||||||
step.XRight = x.Attribute("XRight").ToDouble();
|
step.XRight = x.Attribute("XRight").ToDouble();
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
public double AngleAdj { get; set; }
|
public double AngleAdj { get; set; }
|
||||||
public double BendLen { get; set; }
|
public double BendLen { get; set; }
|
||||||
public double StrokeLen { get; set; }
|
public double StrokeLen { get; set; }
|
||||||
|
public double Tilt { get; set; }
|
||||||
public int UpperID { get; set; }
|
public int UpperID { get; set; }
|
||||||
public int LowerID { get; set; }
|
public int LowerID { get; set; }
|
||||||
public double SpdChgDwn { get; set; }
|
public double SpdChgDwn { get; set; }
|
||||||
|
|||||||
Reference in New Issue
Block a user