Exemple #1
0
        public override void home(Homing homing_state)
        {
            // Always home XY together
            var homing_axes  = homing_state.get_axes();
            var home_xy      = homing_axes.Contains(0) || homing_axes.Contains(1);
            var home_z       = homing_axes.Contains(2);
            var updated_axes = new List <int>();

            if (home_xy)
            {
                updated_axes.Add(0);
                updated_axes.Add(1);
            }
            if (home_z)
            {
                updated_axes.Add(2);
            }
            homing_state.set_axes(updated_axes);
            // Do actual homing
            if (home_xy)
            {
                this._home_axis(homing_state, 0, this.rails[0]);
            }
            if (home_z)
            {
                this._home_axis(homing_state, 2, this.rails[1]);
            }
        }
Exemple #2
0
 public override void home(Homing homing_state)
 {
     // Each axis is homed independently and in order
     foreach (var axis in homing_state.get_axes())
     {
         if (axis == this.dual_carriage_axis)
         {
             var dc1  = this.dual_carriage_rails[0];
             var dc2  = this.dual_carriage_rails[1];
             var altc = this.rails[axis] == dc2;
             this._activate_carriage(0);
             this._home_axis(homing_state, axis, dc1);
             this._activate_carriage(1);
             this._home_axis(homing_state, axis, dc2);
             this._activate_carriage(altc ? 1 : 0);
         }
         else
         {
             this._home_axis(homing_state, axis, this.rails[axis]);
         }
     }
 }
Exemple #3
0
 public override void home(Homing homing_state)
 {
     // Each axis is homed independently and in order
     foreach (var axis in homing_state.get_axes())
     {
         var rail = this.rails[axis];
         // Determine movement
         var _tup_1       = rail.get_range();
         var position_min = _tup_1.X;
         var position_max = _tup_1.Y;
         var hi           = rail.get_homing_info();
         var homepos      = new List <double?> {
             null, null, null, null
         };
         homepos[axis] = hi.position_endstop;
         var forcepos = homepos.ToList();
         if ((bool)hi.positive_dir)
         {
             forcepos[axis] -= 1.5 * (hi.position_endstop - position_min);
         }
         else
         {
             forcepos[axis] += 1.5 * (position_max - hi.position_endstop);
         }
         // Perform homing
         double?limit_speed = null;
         if (axis == 2)
         {
             limit_speed = this.max_z_velocity;
         }
         homing_state.home_rails(new List <PrinterRail> {
             rail
         },
                                 (forcepos[0], forcepos[1], forcepos[2], forcepos[3]),
                                 (homepos[0], homepos[1], homepos[2], homepos[3]),
                                 limit_speed);
     }
 }
        public void cmd_G28(Dictionary <string, object> parameters)
        {
            // Move to origin
            var axes = new List <int>();

            foreach (var axis in "XYZ")
            {
                if (parameters.ContainsKey(axis.ToString()))
                {
                    axes.Add(axis2pos[axis.ToString()]);
                }
            }
            if (axes.Count == 0)
            {
                axes.Add(0);
                axes.Add(1);
                axes.Add(2);
            }
            var homing_state = new Homing(this.printer);

            if (this.is_fileinput)
            {
                homing_state.set_no_verify_retract();
            }
            try
            {
                homing_state.home_axes(axes);
            }
            catch (Exception ex)
            {
                throw new GCodeException("", ex);
            }
            foreach (var axis in homing_state.get_axes())
            {
                this.base_position.Set(axis, this.homing_position.Get(axis));
            }
            this.reset_last_position();
        }