コード例 #1
0
ファイル: G1Path.cs プロジェクト: D14/archive
        /// <summary>
        /// Default constructor for G1Path between two G0/G1 commands.
        /// </summary>
        /// <param name="prevCommand">Previous command to get last position</param>
        /// <param name="command">Current G1 command</param>
        public G1Path(G01Command prevCommand, G01Command command)
        {
            PrevCommand = prevCommand;
            Command = command;

            if (command.F != null)
                RawSpeed = Speed = RecommendedSpeed = Convert.ToDouble(command.F / 60);

            if (prevCommand.X != null && command.X != null && prevCommand.Y != null && command.Y != null)
            {
                Length =
                    Math.Sqrt(Math.Pow(Convert.ToDouble(command.X - prevCommand.X), 2) +
                              Math.Pow(Convert.ToDouble(command.Y - prevCommand.Y), 2));

                RawTime = Time = Length / RawSpeed;
                BufferValue = Length / MAX_COMMAND_PER_SECOND;

                if (Time < MIN_COMMAND_TIME && Length > 0)
                {
                    SpeedModificator = RawTime / MIN_COMMAND_TIME;
                    RecommendedSpeed = RawSpeed * SpeedModificator;
                    //Speed = RecommendedSpeed;
                    Time = Length / Speed;
                }
                else
                {
                    SpeedModificator = 1;
                }
            }
            Command.Path = this;
        }
コード例 #2
0
ファイル: GcodeProcessor.cs プロジェクト: D14/archive
        public void AddG01Command(int lineIndex, string commandName, double? x, double? y, double? z, double? e, double? f)
        {
            var newCommand = new G01Command(lineIndex, commandName, x, y, z, e, f);

            Commands.Add(newCommand);

            if (Commands.Count > 1 && Commands[Commands.Count - 2] != null)
            {
                var newPath = new G1Path(Commands[Commands.Count - 2], newCommand);
                Pathes.Add(newPath);

            }
        }