Read focus settings for material library files.

This commit is contained in:
AJ
2018-11-14 14:31:59 -05:00
parent 187fd86358
commit 1802488449
4 changed files with 120 additions and 125 deletions

View File

@@ -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;
} }
} }
} }

View File

@@ -19,49 +19,41 @@ 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 void Read(Stream stream)
}
public bool Read(Stream stream)
{
var success = false;
try
{ {
var reader = new BinaryReader(stream); var reader = new BinaryReader(stream);
MaterialLib.Machine = reader.ReadString(); MaterialLib.Machine = reader.ReadString();
MaterialLib.PierceDwell = reader.ReadSingle(); MaterialLib.PierceDwell = reader.ReadSingle();
reader.BaseStream.Seek(2, SeekOrigin.Current); reader.BaseStream.Seek(2, SeekOrigin.Current); // Unknown 2 bytes
MaterialLib.PiercePower = reader.ReadInt16(); MaterialLib.PiercePower = reader.ReadInt16();
MaterialLib.PierceFrequency = reader.ReadInt16(); MaterialLib.PierceFrequency = reader.ReadInt16();
MaterialLib.PierceDutyCycle = 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; MaterialLib.PierceType = PierceType.RampedPower;
break;
}
reader.BaseStream.Seek(1, SeekOrigin.Current); // Unknown 1 byte
MaterialLib.PierceNozzleStandoffRampFrom = reader.ReadSingle(); MaterialLib.PierceNozzleStandoffRampFrom = reader.ReadSingle();
@@ -70,8 +62,9 @@ namespace CincyLib.Laser
MaterialLib.PierceAssistGas = (AssistGasType)reader.ReadInt16(); MaterialLib.PierceAssistGas = (AssistGasType)reader.ReadInt16();
MaterialLib.PierceAssistGasPressure = 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.Power = reader.ReadInt16();
MaterialLib.Frequency = reader.ReadInt16(); MaterialLib.Frequency = reader.ReadInt16();
MaterialLib.DutyCycle = reader.ReadInt16(); MaterialLib.DutyCycle = reader.ReadInt16();
@@ -79,20 +72,20 @@ namespace CincyLib.Laser
MaterialLib.DPCFeedrate = reader.ReadInt16(); MaterialLib.DPCFeedrate = reader.ReadInt16();
MaterialLib.DPCMinPower = 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.NozzleStandoff1 = reader.ReadSingle();
MaterialLib.KerfWidth = 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.AssistGas = (AssistGasType)reader.ReadInt16();
MaterialLib.AssistGasPressure1 = reader.ReadInt16(); MaterialLib.AssistGasPressure1 = reader.ReadInt16();
MaterialLib.AssistGasPressure2 = reader.ReadInt16(); MaterialLib.AssistGasPressure2 = reader.ReadInt16();
MaterialLib.DynamicAssistGas = Convert.ToBoolean(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(); var steps = reader.ReadInt16();
reader.BaseStream.Seek(4, SeekOrigin.Current); reader.BaseStream.Seek(4, SeekOrigin.Current); // Unknown 4 bytes
MaterialLib.RampedPierceStartPower = reader.ReadInt16(); MaterialLib.RampedPierceStartPower = reader.ReadInt16();
MaterialLib.RampedPierceSteps = new RampedPierceStep[steps]; MaterialLib.RampedPierceSteps = new RampedPierceStep[steps];
@@ -121,32 +114,25 @@ namespace CincyLib.Laser
} }
MaterialLib.Notes = Encoding.ASCII.GetString(reader.ReadBytes(length)); 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(); MaterialLib.Feedrate = reader.ReadInt16();
if (MaterialLib.PierceType != PierceType.RampedPower) reader.BaseStream.Seek(428, SeekOrigin.Current);
{ MaterialLib.CutFocusNearField = Math.Round(reader.ReadSingle(), 4);
if (reader.BaseStream.Length < reader.BaseStream.Position + 527) MaterialLib.CutFocusFarField = Math.Round(reader.ReadSingle(), 4);
{ MaterialLib.PierceFocusNearField = Math.Round(reader.ReadSingle(), 4);
MaterialLib.PierceType = MaterialLib.PierceDwell == 0 MaterialLib.PierceFocusFarField = Math.Round(reader.ReadSingle(), 4);
? PierceType.NoPierce
: PierceType.FixedDwellTime;
}
else
{
reader.BaseStream.Seek(527, SeekOrigin.Current);
MaterialLib.PierceType = (PierceType)reader.ReadInt16();
}
}
success = true; // older files wont go this far...
} const int seek = 88;
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
return success; var hasExtendedInfo = reader.BaseStream.Length > reader.BaseStream.Position + seek;
reader.BaseStream.Seek(seek, SeekOrigin.Current);
if (hasExtendedInfo)
{
MaterialLib.PierceType = (PierceType)reader.ReadByte();
}
} }
} }
} }

View File

@@ -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();

View File

@@ -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; }