From ee3ce4cb153c8be97ffaac5ceceb4cb9806fdf2a Mon Sep 17 00:00:00 2001 From: Greg Meess Date: Fri, 5 Oct 2018 14:34:52 -0700 Subject: [PATCH] Make the position of the origin a user-accessible setting. --- assemblers/BaseDepositionAssembler.cs | 4 ++++ assemblers/RepRapAssembler.cs | 1 - settings/AdditiveSettings.cs | 16 ++++++++++++++++ settings/RepRapSettings.cs | 3 +++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/assemblers/BaseDepositionAssembler.cs b/assemblers/BaseDepositionAssembler.cs index 9fb0469..140cf5b 100644 --- a/assemblers/BaseDepositionAssembler.cs +++ b/assemblers/BaseDepositionAssembler.cs @@ -94,6 +94,10 @@ public BaseDepositionAssembler(GCodeBuilder useBuilder, FFFMachineInfo machineIn extruderA = 0; currentFeed = 0; + Vector2d originRepositioning = new Vector2d(machineInfo.BedOriginFactorX, machineInfo.BedOriginFactorY); + Vector2d bedSize = new Vector2d(machineInfo.BedSizeXMM, machineInfo.BedSizeYMM); + PositionShift = originRepositioning*bedSize; + MinExtrudeStepDistance = machineInfo.MinPointSpacingMM; } diff --git a/assemblers/RepRapAssembler.cs b/assemblers/RepRapAssembler.cs index 188f6a7..8dec6ac 100644 --- a/assemblers/RepRapAssembler.cs +++ b/assemblers/RepRapAssembler.cs @@ -116,7 +116,6 @@ void AppendHeader_StandardRepRap() { HomeSequenceF(Builder); - PositionShift = 0.5 * new Vector2d(Settings.Machine.BedSizeXMM, Settings.Machine.BedSizeYMM); currentPos = Vector3d.Zero; HeaderCustomizerF(HeaderState.BeforePrime, Builder); diff --git a/settings/AdditiveSettings.cs b/settings/AdditiveSettings.cs index b5dedbe..26a3e6a 100644 --- a/settings/AdditiveSettings.cs +++ b/settings/AdditiveSettings.cs @@ -25,6 +25,20 @@ public abstract class MachineInfo public double BedSizeYMM = 100; public double MaxHeightMM = 100; + // These factors define the output coordinate system + + // BedOriginFactorX: + // 0 : the origin is at the left of the build plate + // 0.5 : the origin is at the middle of the build plate + // 1 : the origin is at the right of the build plate + + // BedOriginFactorY: + // 0 : the origin is at the front of the build plate + // 0.5 : the origin is at the middle of the build plate + // 1 : the origin is at the back of the build plate + + public double BedOriginFactorX = 0; + public double BedOriginFactorY = 0; public abstract T CloneAs() where T : class; protected virtual void CopyFieldsTo(MachineInfo to) @@ -126,6 +140,8 @@ protected virtual void CopyFieldsTo(FFFMachineInfo to) to.BedSizeXMM = this.BedSizeXMM; to.BedSizeYMM = this.BedSizeYMM; to.MaxHeightMM = this.MaxHeightMM; + to.BedOriginFactorX = this.BedOriginFactorX; + to.BedOriginFactorY = this.BedOriginFactorY; } } diff --git a/settings/RepRapSettings.cs b/settings/RepRapSettings.cs index 417d315..0830c26 100644 --- a/settings/RepRapSettings.cs +++ b/settings/RepRapSettings.cs @@ -54,6 +54,9 @@ void configure_unknown() Machine.Class = MachineClass.PlasticFFFPrinter; Machine.BedSizeXMM = 80; Machine.BedSizeYMM = 80; + Machine.BedOriginFactorX = 0.5; + Machine.BedOriginFactorY = 0.5; + Machine.MaxHeightMM = 55; Machine.NozzleDiamMM = 0.4; Machine.FilamentDiamMM = 1.75;