Example #1
0
        public InstructionCNC Slice(double speed, double desiredTimeGrain)
        {
            var xInstr = _x.Slice(speed, desiredTimeGrain);
            var yInstr = _y.Slice(speed, desiredTimeGrain);
            var zInstr = _z.Slice(speed, desiredTimeGrain);

            var xd = xInstr.GetInstructionDuration();
            var yd = yInstr.GetInstructionDuration();
            var zd = zInstr.GetInstructionDuration();

            var maxDuration = Math.Max(xd, Math.Max(yd, zd));

            _x.ReportSlack(maxDuration);
            _y.ReportSlack(maxDuration);
            _z.ReportSlack(maxDuration);

            if (_x.IsComplete != _y.IsComplete || _y.IsComplete != _z.IsComplete)
            {
                throw new NotImplementedException("Invalid step counting");
            }

            return(PlanBuilder3D.Combine(xInstr, yInstr, zInstr));
        }