Пример #1
0
        private void setAxis(IDictionary <string, ParsedWord> block)
        {
            foreach (Axis axis in Enum.GetValues(typeof(Axis)))
            {
                if (block.ContainsKey(axis.ToString()))
                {
                    ParsedWord word = block[axis.ToString()];

                    machineCoordinates[Axis.X]         = mbase.Transform(Value).X;
                    machineCoordinates[Axis.Y]         = mbase.Transform(Value).Y;
                    machineCoordinates[Axis.Z]         = mbase.Transform(Value).Z;
                    machineCoordinates[Axis.A]         = RotValue.X;
                    machineCoordinates[Axis.B]         = RotValue.Y;
                    machineCoordinates[Axis.C]         = RotValue.Z;
                    originalMachineCoordinates[Axis.X] = Value.X;
                    originalMachineCoordinates[Axis.Y] = Value.Y;
                    originalMachineCoordinates[Axis.Z] = Value.Z;
                    //				Console.WriteLine("X: " + machineCoordinates[Axis.X].Value + " " + "Y: " + machineCoordinates[Axis.Y].Value + " " + "Z: " + machineCoordinates[Axis.Z].Value );

                    if (modalsCmd.Contains("DIAMON"))
                    {
                        //		machineCoordinates[Axis.X] = mbase.Transform(Value).X*0.5 ;
                    }
                }
            }
        }
Пример #2
0
        private void GetVarValue(IDictionary <string, ParsedWord> block)
        {
            foreach (NonModalsVars Vars in Enum.GetValues(typeof(NonModalsVars)))
            {
                if (block.ContainsKey(Vars.ToString()))
                {
                    ParsedWord word = block[Vars.ToString()];

                    switch (Vars)
                    {
                    case NonModalsVars.I:
                        VarValue.X = word.value;
                        break;

                    case NonModalsVars.J:
                        VarValue.Y = word.value;
                        break;

                    case NonModalsVars.K:
                        VarValue.Z = word.value;
                        break;

                    default:
                        break;
                    }
                }
            }
        }
Пример #3
0
 private void setVars(IDictionary <string, ParsedWord> block)
 {
     foreach (ModalVars modalvar in Enum.GetValues(typeof(ModalVars)))
     {
         if (block.ContainsKey(modalvar.ToString()))
         {
             ParsedWord word = block[modalvar.ToString()];
             if (word != null)
             {
                 modalVars[word.word] = word.value;
             }
         }
     }
 }
Пример #4
0
        private void setNonModalVars(IDictionary <String, ParsedWord> block)
        {
            foreach (NonModalsVars Vars in Enum.GetValues(typeof(NonModalsVars)))
            {
                if (block.ContainsKey(Vars.ToString()))
                {
                    ParsedWord word = block[Vars.ToString()];
                    if (word.cmode.Contains("AC"))
                    {
                        switch (Vars)
                        {
                        case NonModalsVars.I:
                            if (modalsCmd.Contains("DIAMON") || modalsCmd.Contains("DIAM90"))
                            {
                                machineCoordinatesVars[NonModalsVars.I] = mbase.Transform(VarValue).X *0.5 - coordinatesOld[Axis.X];
                            }
                            else
                            {
                                machineCoordinatesVars[Vars] = mbase.Transform(VarValue).X - coordinatesOld[Axis.X];
                            }
                            break;

                        case NonModalsVars.J:
                            machineCoordinatesVars[Vars] = mbase.Transform(VarValue).Y - coordinatesOld[Axis.Y];
                            break;

                        case NonModalsVars.K:
                            machineCoordinatesVars[Vars] = mbase.Transform(VarValue).Z - coordinatesOld[Axis.Z];
                            break;

                        default:
                            machineCoordinatesVars[Vars] = word.value;
                            break;
                        }
                    }
                    else
                    {
                        machineCoordinatesVars[Vars] = word.value;
                    }
                }
                else
                {
                    machineCoordinatesVars[Vars] = 0.0;
                }
            }
        }
Пример #5
0
        /// <summary>
        /// Replace a word within a GCODE block
        /// </summary>
        /// <param name="GCodeBLock"> </param>
        /// <param name="replaceWith">
        /// @return </param>
        /// <exception cref="Exception"> </exception>

        protected internal virtual string replaceWord(string GCodeBLock, string replaceWith)
        {
            if (replaceWith.StartsWith("M", StringComparison.Ordinal) || replaceWith.StartsWith("G", StringComparison.Ordinal))
            {
                throw new SimValidationException("M and G words cannot be replaced at this moment.");
            }

            ParsedWord word = findWordInBlock(new StringBuilder(GCodeBLock));

            if (word == null)
            {
                return(GCodeBLock + replaceWith);
            }
            else
            {
                return(GCodeBLock.Replace(word.asRead, replaceWith));
            }
        }
Пример #6
0
        private void GetValue(IDictionary <string, ParsedWord> block)
        {
            foreach (Axis axis in Enum.GetValues(typeof(Axis)))
            {
                if (block.ContainsKey(axis.ToString()))
                {
                    ParsedWord word = block[axis.ToString()];
                    switch (axis)
                    {
                    case Axis.X:
                        if (word.cmode.Contains("IC") || modals.Contains("G91"))
                        {
                            if (modalsCmd.Contains("DIAMON"))
                            {
                                Value.X = Value.X + word.value * 0.5;
                            }
                            else
                            {
                                Value.X = Value.X + word.value;
                            }
                        }
                        else
                        {
                            if (modalsCmd.Contains("DIAMON") || modalsCmd.Contains("DIAM90"))
                            {
                                Value.X = word.value * 0.5;
                            }
                            else
                            {
                                Value.X = word.value;
                            }
                        }
                        break;

                    case Axis.Y:
                        if (word.cmode.Contains("IC") || modals.Contains("G91"))
                        {
                            Value.Y = Value.Y + word.value;
                        }
                        else
                        {
                            Value.Y = word.value;
                        }
                        break;

                    case Axis.Z:
                        if (word.cmode.Contains("IC") || modals.Contains("G91"))
                        {
                            Value.Z = Value.Z + word.value;
                        }
                        else
                        {
                            Value.Z = word.value;
                        }
                        break;

                    case Axis.A:
                        if (word.cmode.Contains("IC") || modals.Contains("G91"))
                        {
                            RotValue.X = RotValue.X + word.value;
                        }
                        else
                        {
                            RotValue.X = word.value;
                        }
                        break;

                    case Axis.B:
                        if (word.cmode.Contains("IC") || modals.Contains("G91"))
                        {
                            RotValue.Y = RotValue.Y + word.value;
                        }
                        else
                        {
                            RotValue.Y = word.value;
                        }
                        break;

                    case Axis.C:
                        if (word.cmode.Contains("IC") || modals.Contains("G91"))
                        {
                            RotValue.Z = RotValue.Z + word.value;
                        }
                        else
                        {
                            RotValue.Z = word.value;
                        }
                        break;
                    }
                }
            }
        }