コード例 #1
0
        /// <summary>
        /// Returns a converted g-code line for a motorized print without movement.
        /// </summary>
        /// <param name="eDistance"></param>
        /// <param name="emmPerStep"></param>
        /// <param name="invertDirection"></param>
        /// <param name="eRemainder"></param>
        /// <returns></returns>
        public static List <ConvertedGCodeLine> WriteMotorizedPrintWithoutMovement(double eDistance, double emmPerStep, bool invertDirection, ref double eRemainder, CoordinateModel eModiPrintCoord)
        {
            //The return GCode.
            List <ConvertedGCodeLine> convertedGCodeLinesList = new List <ConvertedGCodeLine>();

            if (eDistance != 0)
            {
                string printLine = SerialCommands.MotorPrintWithoutMovement;
                printLine += G00Calculator.WriteSteps('E', eDistance, emmPerStep, invertDirection, ref eRemainder);

                //EModiPrintCoord can be passed into this method as a null object if this step is not required.
                if (eModiPrintCoord != null)
                {
                    eModiPrintCoord.SetCoord(eDistance, false);
                }

                convertedGCodeLinesList.Add(new ConvertedGCodeLine(printLine));
                return(convertedGCodeLinesList);
            }

            return(null);
        }
コード例 #2
0
        /// <summary>
        /// Returns a string of converted g-code for Motorized Printhead printing with continuous Axis movement.
        /// </summary>
        /// <param name="emmPerStep"></param>
        /// <param name="xmmPerStep"></param>
        /// <param name="ymmPerStep"></param>
        /// <param name="zmmPerStep"></param>
        /// <param name="eDistancePerMmMovement"></param>
        /// <param name="xDistance"></param>
        /// <param name="yDistance"></param>
        /// <param name="zDistance"></param>
        /// <param name="eInvertDirection"></param>
        /// <param name="xInvertDirection"></param>
        /// <param name="yInvertDirection"></param>
        /// <param name="zInvertDirection"></param>
        /// <param name="eRemainder"></param>
        /// <param name="xRemainder"></param>
        /// <param name="yRemainder"></param>
        /// <param name="zRemainder"></param>
        /// <param name="eModiPrintCoord"></param>
        /// <returns></returns>
        public static List <ConvertedGCodeLine> WriteMotorizedContinuousPrint(
            double emmPerStep, double xmmPerStep, double ymmPerStep, double zmmPerStep,
            double eDistancePerMmMovement, double xDistance, double yDistance, double zDistance,
            bool eInvertDirection, bool xInvertDirection, bool yInvertDirection, bool zInvertDirection,
            ref double eRemainder, ref double xRemainder, ref double yRemainder, ref double zRemainder,
            CoordinateModel eModiPrintCoord)
        {
            //The return GCode.
            List <ConvertedGCodeLine> convertedGCodeLinesList = new List <ConvertedGCodeLine>();

            if (((eDistancePerMmMovement) != 0) || ((xDistance) != 0) || ((yDistance) != 0) || ((zDistance) != 0))
            {
                string convertedGCodeLine = "";
                convertedGCodeLine += SerialCommands.MotorPrintWithMovement;

                //Calculate the distance that the Printhead's motor will move.
                double movementDistance = Math.Sqrt(xDistance * xDistance + yDistance * yDistance + zDistance * zDistance);
                double eDistance        = eDistancePerMmMovement * movementDistance;

                //Output commands that will be sent through the serial port.
                convertedGCodeLine += G00Calculator.WriteSteps('X', xDistance, xmmPerStep, xInvertDirection, ref xRemainder);
                convertedGCodeLine += G00Calculator.WriteSteps('Y', yDistance, ymmPerStep, yInvertDirection, ref yRemainder);
                convertedGCodeLine += G00Calculator.WriteSteps('Z', zDistance, zmmPerStep, zInvertDirection, ref zRemainder);
                convertedGCodeLine += G00Calculator.WriteSteps('E', eDistance, emmPerStep, eInvertDirection, ref eRemainder);

                //EModiPrintCoord can be passed into this method as a null object if this step is not required.
                if (eModiPrintCoord != null)
                {
                    eModiPrintCoord.SetCoord(eDistance, false);
                }

                convertedGCodeLinesList.Add(new ConvertedGCodeLine(convertedGCodeLine));
                return(convertedGCodeLinesList);
            }

            return(null);
        }