public int CheckFlatCircle(List <MillPlusStringData> dom, ref string errMsg) { int rez = 0; string ptg = ""; foreach (var millPlusStringData in dom) { #region проверка безусловного перехода UnconditionalTransferSearch(millPlusStringData._fullString, ref ptg); if (ptg != "") { if (millPlusStringData.currentN != ptg) { continue; } else { ptg = ""; } } #endregion int g2 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G2 "); int g3 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G3 "); if (g2 != -1 || g3 != -1) { if (Math.Abs(millPlusStringData.currentAngleB) > 0 || Math.Abs(millPlusStringData.currentAngleC) > 0) { rez++; errMsg += ReportCreator.Event("G2 или G3 не в плоскости", millPlusStringData._fullString, millPlusStringData.currentPath); } } } return(rez); }
public int CheckUnVerticalToolChange(IEnumerable <MillPlusStringData> dom, ref string errMsg) { int rez = 0; string ptg = ""; foreach (var millPlusStringData in dom) { #region проверка безусловного перехода UnconditionalTransferSearch(millPlusStringData._fullString, ref ptg); if (ptg != "") { if (millPlusStringData.currentN != ptg) { continue; } else { ptg = ""; } } #endregion var m = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M6"); var m1 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M06"); if (m != -1 || m1 != -1) { if (Math.Abs(millPlusStringData.currentAngleB) > 0) { rez++; errMsg += ReportCreator.Event("Смена инструмента без вертикальной оси", millPlusStringData._fullString, millPlusStringData.currentPath); } } } return(rez); }
public int CheckLooseToolChangeCommand(List <MillPlusStringData> dom, ref string errMsg) { int rez = 0; string ct = dom[0].currentTool; int upperbound = dom.Count; for (int i = 0; i < upperbound; i++) { if (ct != dom[i].currentTool) { for (int j = i; j < upperbound; j++) { int g79 = MillPlusDataObjectModel.FindSubString(dom[j]._fullString, "G79 "); int g1 = MillPlusDataObjectModel.FindSubString(dom[j]._fullString, "G1 "); int g2 = MillPlusDataObjectModel.FindSubString(dom[j]._fullString, "G2 "); int g3 = MillPlusDataObjectModel.FindSubString(dom[j]._fullString, "G3 "); int m6 = MillPlusDataObjectModel.FindSubString(dom[j]._fullString, "M6"); int m06 = MillPlusDataObjectModel.FindSubString(dom[j]._fullString, "M06"); if (m6 != -1 || m06 != -1) { int t = MillPlusDataObjectModel.FindSubString(dom[j]._fullString, " T"); if (t != -1) { int tEnd = dom[j]._fullString.IndexOf(" ", t + 2); if (tEnd == -1) { tEnd = dom[j]._fullString.Length; } var curT = dom[j]._fullString.Substring(t + 1, tEnd - (t + 1)); if (curT == dom[j].currentTool) { ct = dom[j].currentTool; break; } else { rez++; errMsg += ReportCreator.Event("Отсутствие необходимой команды смены инструмента", dom[j]._fullString, dom[j].currentPath); } } } if (g79 != -1 || g1 != -1 || g2 != -1 || g3 != -1) { rez++; errMsg += ReportCreator.Event("Отсутствие необходимой команды смены инструмента", dom[j]._fullString, dom[j].currentPath); } if (rez > 0) { return(rez); } } } } return(rez); }
public int CheckSpinSettedWithoutTool(List <MillPlusStringData> dom, ref string errMsg) { int rez = 0; string ptg = ""; bool spindelActivatedFlag = false; foreach (var millPlusStringData in dom) { #region проверка безусловного перехода UnconditionalTransferSearch(millPlusStringData._fullString, ref ptg); if (ptg != "") { if (millPlusStringData.currentN != ptg) { continue; } else { ptg = ""; } } #endregion int m3 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M3"); int m03 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M03"); int m30 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M30"); int m13 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M13"); int m4 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M4"); int m14 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M14"); var m6 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M6"); var m06 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M06"); var m0 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M0"); if ((m3 != -1 || m03 != -1 || m13 != -1 || m14 != -1 || m4 != -1) && m30 == -1) { spindelActivatedFlag = true; } if (m06 != -1 || m6 != -1 || m0 != -1) { spindelActivatedFlag = false; } if (spindelActivatedFlag && millPlusStringData.settedTool == "") { rez++; errMsg += ReportCreator.Event("Включение шпинделя без установленного инструмента", millPlusStringData._fullString, millPlusStringData.currentPath); } if (rez > 0) { return(rez); } } return(rez); }
public bool ReadFile(string pathToFile, int machineId, out string errMsg) { //_dom=new List<string>(); errMsg = ""; var fi = new FileInfo(pathToFile); if (!fi.Exists) { errMsg = "Файл не найден"; return(false); } if (fi.Extension != ".pm") { errMsg = "Файл не является файлом системы ЧПУ MillPlus"; return(false); } var db = new MillPlusFormatControlDb(); var machineDb = new MachineDB(); machineDb.GetMachineParams(machineId, out _minB, out _maxB, out _maxSpin, out errMsg); List <int> gFuncAvailable; List <int> mFuncAvailable; if (!db.GetListOfAvailableGFunc(out gFuncAvailable, out errMsg)) { return(false); } if (!db.GetListOfAvailableMFunc(out mFuncAvailable, out errMsg)) { return(false); } _report = ReportCreator.StartReport(fi.Name); foreach (var line in File.ReadLines(pathToFile)) { var v = new MillPlusStringData { _fullString = line }; _dom.Add(v); } if (!Build()) { _report += ReportCreator.EndReport(); return(false); } else { if (!Check(gFuncAvailable, mFuncAvailable)) { _report += ReportCreator.EndReport(); return(false); } } return(true); }
public int CheckNullPoint(List <MillPlusStringData> dom, ref string errMsg) { int rez = 0; string ptg = ""; bool g54Flag = false; foreach (var millPlusStringData in dom) { #region проверка безусловного перехода UnconditionalTransferSearch(millPlusStringData._fullString, ref ptg); if (ptg != "") { if (millPlusStringData.currentN != ptg) { continue; } else { ptg = ""; } } #endregion int g54 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G54"); int g53 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G53"); int g1 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G1 "); int g2 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G2 "); int g3 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G3 "); if (g54 != -1) { g54Flag = true; } if (g53 != -1) { g54Flag = false; } if ((g1 != -1 || g2 != -1 || g3 != -1) && !g54Flag) { rez++; errMsg += ReportCreator.Event("Не задана нулевая точка", millPlusStringData._fullString, millPlusStringData.currentPath); } if (rez > 0) { return(rez); } } return(rez); }
public int CheckWrongG7G141Order(List <MillPlusStringData> dom, ref string errMsg) { int rez = 0; string ptg = ""; bool g141Flag = false; foreach (var millPlusStringData in dom) { #region проверка безусловного перехода UnconditionalTransferSearch(millPlusStringData._fullString, ref ptg); if (ptg != "") { if (millPlusStringData.currentN != ptg) { continue; } else { ptg = ""; } } #endregion int g141 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G141"); int g40 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G40"); int g7 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G7"); int m6 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M6"); int m06 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M06"); if (g141 != -1) { g141Flag = true; } if (g40 != -1 || m6 != -1 || m06 != -1) { g141Flag = false; } if (g7 != -1) { if (g141Flag) { rez++; errMsg += ReportCreator.Event("Неправильный порядок функций G141, G7.", millPlusStringData._fullString, millPlusStringData.currentPath); } } } return(rez); }
public int CheckFeedSetted(List <MillPlusStringData> dom, ref string errMsg) { int rez = 0; string ptg = ""; bool feedFlag = false; foreach (var millPlusStringData in dom) { #region проверка безусловного перехода UnconditionalTransferSearch(millPlusStringData._fullString, ref ptg); if (ptg != "") { if (millPlusStringData.currentN != ptg) { continue; } else { ptg = ""; } } #endregion int g1 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G1 "); int g2 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G2 "); int g3 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G3 "); int f = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "F"); if (f != -1) { feedFlag = true; } if (!feedFlag) { if (g1 != -1 || g2 != -1 || g3 != -1) { rez++; errMsg += ReportCreator.Event("Не задана рабочая подача.", millPlusStringData._fullString, millPlusStringData.currentPath); } } if (rez > 0) { return(rez); } } return(rez); }
public int CheckMeasuringProbeActivated(List <MillPlusStringData> dom, ref string errMsg) { int rez = 0; string ptg = ""; bool m27Flag = false; foreach (var millPlusStringData in dom) { #region проверка безусловного перехода UnconditionalTransferSearch(millPlusStringData._fullString, ref ptg); if (ptg != "") { if (millPlusStringData.currentN != ptg) { continue; } else { ptg = ""; } } #endregion int m27 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M27"); int m28 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M28"); int g621 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G621"); if (m27 != -1) { m27Flag = true; } if (m28 != -1) { m27Flag = false; } if (g621 != -1) { if (!m27Flag) { rez++; errMsg += ReportCreator.Event("Измерение без активации измерительного щупа.", millPlusStringData._fullString, millPlusStringData.currentPath); } } } return(rez); }
public int CheckGFunctions(List <MillPlusStringData> dom, List <int> availableGfunctions, ref string errMsg) { int rez = 0; foreach (var d in dom) { int gStart = MillPlusDataObjectModel.FindSubString(d._fullString, " G"); if (gStart != -1) { int gEnd = d._fullString.IndexOf(" ", gStart + 2); int g; if (gEnd == -1) { if (!int.TryParse(d._fullString.Substring(gStart + 2, d._fullString.Length - (gStart + 2)), out g)) { errMsg += ReportCreator.Event("Задействуется неиспользуемая G функция", d._fullString, d.currentPath); rez++; } if (!availableGfunctions.Contains(g)) { errMsg += ReportCreator.Event("Задействуется неиспользуемая G функция", d._fullString, d.currentPath); rez++; } } else { var s = d._fullString.Substring(gStart + 2, gEnd - (gStart + 2)); if (int.TryParse(s, out g)) { if (!availableGfunctions.Contains(g)) { errMsg += ReportCreator.Event("Задействуется неиспользуемая G функция", d._fullString, d.currentPath); rez++; } } else { errMsg += ReportCreator.Event("Задействуется неиспользуемая G функция", d._fullString, d.currentPath); rez++; } } } } return(rez); }
public int CheckMaxSpin(List <MillPlusStringData> dom, int maxSpin, ref string errMsg) { int rez = 0; foreach (var millPlusStringData in dom) { if (millPlusStringData.currentSpin > maxSpin) { rez++; errMsg += ReportCreator.Event("Превышена максимальная скорость вращения шпинделя для станка.", millPlusStringData._fullString, millPlusStringData.currentPath); } if (rez > 1) { return(rez); } } return(rez); }
public int CheckFormatKadr(List <MillPlusStringData> dom, ref string errMsg) { int rez = 0; var availableLetters = "ABCDEFGIJKLMNORSTXYZ0123456789-+/.="; foreach (var millPlusStringData in dom) { var upBound = millPlusStringData._fullString.Length; for (var i = 0; i < upBound; i++) { var c = millPlusStringData._fullString[i]; #region SkipComments if (c == '(') { var comCnt = 0; while (comCnt != 0 || i < upBound) { c = millPlusStringData._fullString[i]; if (c == '(') { comCnt++; } if (c == ')') { comCnt--; } i++; } } #endregion if (c != 0x0020 && i < upBound) { if (!availableLetters.Contains(c)) { errMsg += ReportCreator.Event("Нарушен формат кадра", millPlusStringData._fullString, millPlusStringData.currentPath); rez++; } } } } return(rez); }
public int CheckBAngle(List <MillPlusStringData> dom, decimal minB, decimal maxB, ref string errMsg) { int rez = 0; foreach (var millPlusStringData in dom) { if (millPlusStringData.currentAngleB < (double)minB || millPlusStringData.currentAngleB > (double)maxB) { rez++; errMsg += ReportCreator.Event("Превышен максимальный угол по оси \"B\" для станка.", millPlusStringData._fullString, millPlusStringData.currentPath); } if (rez > 1) { return(rez); } } return(rez); }
public int CheckMovigWithoutTool(List <MillPlusStringData> dom, ref string errMsg) { int rez = 0; string ptg = ""; foreach (var millPlusStringData in dom) { #region проверка безусловного перехода UnconditionalTransferSearch(millPlusStringData._fullString, ref ptg); if (ptg != "") { if (millPlusStringData.currentN != ptg) { continue; } else { ptg = ""; } } #endregion if (millPlusStringData.settedTool == "") { int g1 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G1 "); int g2 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G2 "); int g3 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G3 "); if (g1 != -1 || g2 != -1 || g3 != -1) { rez++; errMsg += ReportCreator.Event("Рабочие перемещения без установленного инструмента", millPlusStringData._fullString, millPlusStringData.currentPath); } } if (rez > 0) { return(rez); } } return(rez); }
private bool Build() { var upperBound = _dom.Count; int nLen; uint n; double curSpin = 0; double curAngleB = 0; double curAngleC = 0; string curPath = "Заголовок программы"; string curN; string curTool = ""; string setTool = ""; string localErr; for (var i = 0; i < upperBound; i++) { localErr = ReportCreator.Event("Ошибка формата файла.", _dom[i]._fullString, curPath); #region Определение текущего номера кадра if (!_dom[i]._fullString.StartsWith("N")) //Все строки должны начинаться с номера кадра { _report += localErr; return(false); } nLen = _dom[i]._fullString.IndexOf(" "); curN = nLen == -1 ? _dom[i]._fullString.Substring(1) : _dom[i]._fullString.Substring(1, nLen); try { n = Convert.ToUInt32(curN); } catch (Exception e) { _report += ReportCreator.Event("Ошибка формата числа.", i.ToString(), curPath); return(false); } _dom[i].currentN = string.Format("N{0}", n); #endregion #region Проверка целостнсти комментариев var cnt = 0; foreach (var str in _dom[i]._fullString) { if (str == '(') { cnt++; } if (str == ')') { cnt--; } } if (cnt != 0) { _report += localErr; return(false); } #endregion #region Определение текущего PATH int pathStart = _dom[i]._fullString.IndexOf("PATH/"); if (pathStart != -1 && (pathStart + 1) < _dom[i]._fullString.Length) { pathStart = _dom[i]._fullString.IndexOf("/", pathStart) + 1; var pathEnd = _dom[i]._fullString.IndexOf(",", pathStart); if (pathEnd == -1) { _report += localErr; return(false); } curPath = _dom[i]._fullString.Substring(pathStart, pathEnd - pathStart); } #region Поиск намёка на смену инструмента if (_dom.Count > i + 1) { int toolStart = _dom[i + 1]._fullString.IndexOf("Load"); if (toolStart != -1) { toolStart = _dom[i + 1]._fullString.IndexOf("T"); if (toolStart != -1) { int toolEnd = _dom[i + 1]._fullString.IndexOf(" ", toolStart); if (toolEnd != -1) { curTool = _dom[i + 1]._fullString.Substring(toolStart, toolEnd - toolStart); } } else { _report += localErr; return(false); } } } #endregion _dom[i].currentPath = curPath; _dom[i].currentTool = curTool; #endregion #region Определение текущих углов поворота var nfi = new CultureInfo("ru-RU", true).NumberFormat; nfi.NumberDecimalSeparator = "."; nfi.CurrencyDecimalSeparator = "."; if (-1 != FindSubString(_dom[i]._fullString, "M56") || -1 != FindSubString(_dom[i]._fullString, "M59") || -1 != FindSubString(_dom[i]._fullString, "G7 L1=1")) { curAngleB = 0; curAngleC = 0; } int startB = FindSubString(_dom[i]._fullString, " B"); if (startB != -1) { startB = _dom[i]._fullString.IndexOf("B", startB); int endB = _dom[i]._fullString.IndexOf(" ", startB); string tcurAngleB = endB == -1 ? _dom[i]._fullString.Substring(startB + 1, _dom[i]._fullString.Length - (startB + 1)) : //true _dom[i]._fullString.Substring(startB + 1, endB - (startB + 1)); //false double b; if (double.TryParse(tcurAngleB, NumberStyles.AllowDecimalPoint | NumberStyles.Float, nfi, out b)) { curAngleB = b; } } int startC = FindSubString(_dom[i]._fullString, " C"); if (startC != -1) { startC = _dom[i]._fullString.IndexOf("C", startC); int endC = _dom[i]._fullString.IndexOf(" ", startC); string tcurAngleC = endC == -1 ? _dom[i]._fullString.Substring(startC + 1, _dom[i]._fullString.Length - (startC + 1)) : //true _dom[i]._fullString.Substring(startC + 1, endC - (startC + 1)); //false double c; if (double.TryParse(tcurAngleC, NumberStyles.AllowDecimalPoint | NumberStyles.Float, nfi, out c)) { curAngleC = c; } } _dom[i].currentAngleB = curAngleB; _dom[i].currentAngleC = curAngleC; #endregion #region Определение установленного инструмента if (-1 != FindSubString(_dom[i]._fullString, "M6") || -1 != FindSubString(_dom[i]._fullString, "M06")) { int t = FindSubString(_dom[i]._fullString, " T"); if (t != -1) { int tEnd = _dom[i]._fullString.IndexOf(" ", t + 2); if (tEnd == -1) { tEnd = _dom[i]._fullString.Length; } var curT = _dom[i]._fullString.Substring(t + 1, tEnd - (t + 1)); if (curT == "T0") { curT = ""; } setTool = curT; } } _dom[i].settedTool = setTool; #endregion #region Определение скорости вращения шпинделя var spin = ""; int m3 = FindSubString(_dom[i]._fullString, "M3"); int m03 = FindSubString(_dom[i]._fullString, "M03"); int m30 = FindSubString(_dom[i]._fullString, "M30"); int m13 = FindSubString(_dom[i]._fullString, "M13"); int m4 = FindSubString(_dom[i]._fullString, "M4"); int m14 = FindSubString(_dom[i]._fullString, "M14"); if ((m3 != -1 || m03 != -1 || m13 != -1 || m4 != -1 || m14 != -1) && m30 == -1)//Поиск всех комманд включения шпинделя { int s = FindSubString(_dom[i]._fullString, "S"); if (s != -1) { int sEnd = _dom[i]._fullString.IndexOf(" ", s + 1); if (sEnd == -1) { sEnd = _dom[i]._fullString.Length; } spin = _dom[i]._fullString.Substring(s + 1, sEnd - (s + 1)); } double b; if (double.TryParse(spin, NumberStyles.AllowDecimalPoint | NumberStyles.Float, nfi, out b)) { curSpin = b; } } _dom[i].currentSpin = curSpin; #endregion } return(true); }
public int CheckCorrection(List <MillPlusStringData> dom, ref string errMsg) { int rez = 0; string ptg = ""; bool g41Flag = false; bool g42Flag = false; string curX = ""; string curY = ""; string lastX = ""; string lastY = ""; bool movedByG1 = false; foreach (var millPlusStringData in dom) { #region проверка безусловного перехода UnconditionalTransferSearch(millPlusStringData._fullString, ref ptg); if (ptg != "") { if (millPlusStringData.currentN != ptg) { continue; } else { ptg = ""; } } #endregion int g41 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G41"); int g42 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G42"); int g40 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G40"); int m6 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M6"); int m06 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M06"); int x = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "X"); int y = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "Y"); int g1 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G1 "); int g2 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G2 "); int g3 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G3 "); if (g41 != -1) { g41Flag = true; } if (g42 != -1) { g42Flag = true; } if (g40 != -1 || m6 != -1 || m06 != -1) { g41Flag = false; g42Flag = false; movedByG1 = false; } #region Текущий Х if (x != -1) { int endX = millPlusStringData._fullString.IndexOf(" ", x); if (endX == -1) { endX = millPlusStringData._fullString.Length; } lastX = curX; curX = millPlusStringData._fullString.Substring(x + 1, endX - (x + 1)); } #endregion #region Текущий У if (y != -1) { int endY = millPlusStringData._fullString.IndexOf(" ", y); if (endY == -1) { endY = millPlusStringData._fullString.Length; } lastY = curY; curY = millPlusStringData._fullString.Substring(y + 1, endY - (y + 1)); } #endregion if (g41Flag || g42Flag) { if (g1 != -1) { if (lastX != curX || lastY != curY) { movedByG1 = true; } } } if ((g2 != -1 || g3 != -1) && (g41Flag || g42Flag)) { if (!movedByG1) { rez++; errMsg += ReportCreator.Event("Включение корректора, без линейного перемещения.", millPlusStringData._fullString, millPlusStringData.currentPath); } } if (rez > 10) { return(rez); } } return(rez); }
public int CheckMutuallyExclusiveCommands(List <MillPlusStringData> dom, ref string errMsg) { int rez = 0; string ptg = ""; bool g141Flag = false; bool g41Flag = false; bool g42Flag = false; foreach (var millPlusStringData in dom) { #region проверка безусловного перехода UnconditionalTransferSearch(millPlusStringData._fullString, ref ptg); if (ptg != "") { if (millPlusStringData.currentN != ptg) { continue; } else { ptg = ""; } } #endregion int g141 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G141"); int g41 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G41"); int g42 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G42"); int g40 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "G40"); int m6 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M6"); int m06 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M06"); if (g141 != -1) { g141Flag = true; } if (g41 != -1) { g41Flag = true; } if (g42 != -1) { g42Flag = true; } if (g40 != -1 || m6 != -1 || m06 != -1) { g41Flag = false; g42Flag = false; g141Flag = false; } if (g41 != -1 || g42 != -1 || g141 != -1) { if ((g141Flag && (g41Flag || g42Flag)) || (g41Flag && g42Flag)) { rez++; errMsg += ReportCreator.Event("Использование взаимоисключающих функций (G41,42,141).", millPlusStringData._fullString, millPlusStringData.currentPath); } } } return(rez); }
public int CheckBlockedSpindelActivated(List <MillPlusStringData> dom, ref string errMsg) { int rez = 0; string ptg = ""; bool m51Flag = false; bool spindelActivatedFlag = false; foreach (var millPlusStringData in dom) { #region проверка безусловного перехода UnconditionalTransferSearch(millPlusStringData._fullString, ref ptg); if (ptg != "") { if (millPlusStringData.currentN != ptg) { continue; } else { ptg = ""; } } #endregion int m51 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M51"); int m52 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M52"); int m3 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M3"); int m03 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M03"); int m30 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M30"); int m13 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M13"); int m4 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M4"); int m14 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M14"); var m6 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M6"); var m06 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M06"); var m0 = MillPlusDataObjectModel.FindSubString(millPlusStringData._fullString, "M0"); if ((m3 != -1 || m03 != -1 || m13 != -1 || m14 != -1 || m4 != -1) && m30 == -1) { spindelActivatedFlag = true; } if (m06 != -1 || m6 != -1 || m51 != -1 || m0 != -1) { spindelActivatedFlag = false; } if (m51 != -1) { m51Flag = true; } if (m52 != -1) { m51Flag = false; } if (m51Flag) { if (spindelActivatedFlag) { rez++; errMsg += ReportCreator.Event("Попытка включения заблокированного шпинделя.", millPlusStringData._fullString, millPlusStringData.currentPath); } } if (rez > 0) { return(rez); } } return(rez); }