Add WriteSpeedLine for consistent speed handling
This commit is contained in:
parent
9a0fb87a30
commit
fd9e014a26
1 changed files with 41 additions and 5 deletions
|
|
@ -45,6 +45,7 @@ namespace MatterHackers.MatterControl
|
|||
private StringWriter writer;
|
||||
private double currentE = 0;
|
||||
private bool retracted = false;
|
||||
private double currentSpeed = 0;
|
||||
|
||||
public GCodeSketch()
|
||||
{
|
||||
|
|
@ -86,7 +87,13 @@ namespace MatterHackers.MatterControl
|
|||
|
||||
position = Transform.Transform(position);
|
||||
|
||||
writer.WriteLine("G1 X{0:0.###} Y{1:0.###}", position.X, position.Y);
|
||||
this.WriteSpeedLine(
|
||||
string.Format(
|
||||
"G1 X{0:0.###} Y{1:0.###}",
|
||||
position.X,
|
||||
position.Y),
|
||||
this.TravelSpeed);
|
||||
|
||||
this.CurrentPosition = position;
|
||||
}
|
||||
|
||||
|
|
@ -94,7 +101,10 @@ namespace MatterHackers.MatterControl
|
|||
{
|
||||
currentE -= this.RetractLength;
|
||||
retracted = true;
|
||||
writer.WriteLine("G1 E{0:0.###} F{1:0.###}", currentE, this.RetractSpeed);
|
||||
|
||||
this.WriteSpeedLine(
|
||||
string.Format("G1 E{0:0.###}", currentE),
|
||||
this.RetractSpeed);
|
||||
}
|
||||
|
||||
private void Unretract()
|
||||
|
|
@ -102,7 +112,10 @@ namespace MatterHackers.MatterControl
|
|||
// Unretract
|
||||
currentE += RetractLength;
|
||||
retracted = false;
|
||||
writer.WriteLine("G1 E{0:0.###} F{1:0.###}", currentE, this.RetractSpeed);
|
||||
|
||||
this.WriteSpeedLine(
|
||||
string.Format("G1 E{0:0.###}", currentE),
|
||||
this.RetractSpeed);
|
||||
}
|
||||
|
||||
public void PenUp()
|
||||
|
|
@ -124,7 +137,6 @@ namespace MatterHackers.MatterControl
|
|||
|
||||
public void LineTo(Vector2 position)
|
||||
{
|
||||
bool hadRetract = retracted;
|
||||
if (retracted)
|
||||
{
|
||||
this.Unretract();
|
||||
|
|
@ -135,11 +147,35 @@ namespace MatterHackers.MatterControl
|
|||
var delta = this.CurrentPosition - position;
|
||||
currentE += delta.Length * 0.06;
|
||||
|
||||
writer.WriteLine("G1 X{0} Y{1} E{2:0.###}", position.X, position.Y, currentE);
|
||||
this.WriteSpeedLine(
|
||||
string.Format(
|
||||
"G1 X{0} Y{1} E{2:0.###}",
|
||||
position.X,
|
||||
position.Y,
|
||||
currentE),
|
||||
this.Speed);
|
||||
|
||||
this.CurrentPosition = position;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Write the given line, optionally pushing speeds if needed
|
||||
/// </summary>
|
||||
/// <param name="line">The line to write</param>
|
||||
/// <param name="targetSpeed">The target movement speed</param>
|
||||
public void WriteSpeedLine(string line, double targetSpeed)
|
||||
{
|
||||
if (currentSpeed == targetSpeed)
|
||||
{
|
||||
writer.WriteLine(line);
|
||||
}
|
||||
else
|
||||
{
|
||||
currentSpeed = targetSpeed;
|
||||
writer.WriteLine("{0} F{1:0.###}", line, targetSpeed);
|
||||
}
|
||||
}
|
||||
|
||||
public string ToGCode()
|
||||
{
|
||||
return sb.ToString();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue