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