/// <summary> /// For step or outline movement /// </summary> /// <returns></returns> private List <LineSegment> GetEmptySegments() { var items = base.GetDataCollection(); double accelebration = GlobalModel.Params.LayerConfig.ProcessAcceleratedSpeed; return(MovementUtil.GetLineSegments(items, this.layerPara.CutSpeed, accelebration)); }
public void MoveTo(PointF point, double speed, double acceleration, CancellationToken token, Action <MotorInfoMap <double>, MotorInfoMap <double> > infoHandler) { var posInfo = this.Motor.CurrentPosInfo; var p1 = new PointF((float)posInfo[AxisTypes.AxisX], (float)posInfo[AxisTypes.AxisY]); var p2 = point; var lines = MovementUtil.GetLineSegments(p1, p2, speed, acceleration); this.Motor.MoveAsync(lines, token, infoHandler).Wait(); }
public override void Intialize(out List <LineSegment> segments, double speed, CancellationToken token) { var items = base.GetDataCollection(); double accelebration = GlobalModel.Params.LayerConfig.EmptyMoveAcceleratedSpeed; if (double.IsNaN(speed)) { speed = GlobalModel.Params.LayerConfig.EmptyMoveSpeed; } segments = MovementUtil.GetLineSegments(items, speed, accelebration); }
public override void Intialize(out List <LineSegment> segments, double speed, CancellationToken token) { var items = base.GetDataCollection(); double accelebration = GlobalModel.Params.LayerConfig.ProcessAcceleratedSpeed; if (double.IsNaN(speed)) { speed = this.layerPara.CoolingSpeed; } segments = MovementUtil.GetLineSegments(items, speed, accelebration); //Fllow logic, case: EmptyMove }
public override void Intialize(out List <LineSegment> segments, double speed, CancellationToken token) { var items = base.GetDataCollection(); double accelebration = GlobalModel.Params.LayerConfig.ProcessAcceleratedSpeed; if (double.IsNaN(speed)) { speed = this.layerPara.CutSpeed; } segments = MovementUtil.GetLineSegments(items, speed, accelebration); if (SystemContext.Hardware?.IsLaserOn == true) { int delay = (int)this.layerPara.LaserOpenDelay; token.WaitHandle.WaitOne(delay); } //Fllow logic, case: EmptyMove }
private List <LineSegment> GetCuttingSegments() { double startLen = 0; double startSpeed = 0; double stopLen = 0; double stopSpeed = 0; double normalSpeed = this.layerPara.CutSpeed; if (this.layerPara.IsSlowStart) { startSpeed = this.layerPara.SlowStartSpeed; if (startSpeed > 0) { startLen = this.layerPara.SlowStartDistance; } } if (this.layerPara.IsSlowStop) { stopSpeed = this.layerPara.SlowStopSpeed; if (stopSpeed > 0) { stopLen = this.layerPara.SlowStopDistance; } } var items = base.GetDataCollection(); var segments = new List <LineSegment>(); var spiltter = new DataSplitter(items, startLen, stopLen); double accelebration = GlobalModel.Params.LayerConfig.ProcessAcceleratedSpeed; if (spiltter.IsValid) { var part1 = spiltter.GetStartData(); if (part1.Any()) { var tmp = MovementUtil.GetLineSegments(part1, startSpeed, accelebration); if (tmp.Any()) { segments.AddRange(tmp); } } var part2 = spiltter.GetMiddleData(); if (part2.Any()) { segments.AddRange(MovementUtil.GetLineSegments(part2, normalSpeed, accelebration)); } var part3 = spiltter.GetEndData(); if (part3.Any()) { var tmp = MovementUtil.GetLineSegments(part3, stopSpeed, accelebration); if (tmp.Any()) { segments.AddRange(tmp); } } } else { segments.AddRange(MovementUtil.GetLineSegments(items, normalSpeed, accelebration)); } return(segments); }