public void ConvertFromMpfToNct(string mpfFile, string nctFile) { FolderUtil.CreateDirectoryIfNotExists(MPF_FOLDER); string middleNctFile = MPF_FOLDER + Path.GetFileName(nctFile); using (StreamReader reader = new StreamReader(mpfFile)) { string line; writer = new StreamWriter(middleNctFile, false); WriteProgramIdAndComment(); WriteOsztofejValue(); WriteGQOn(); while (!M30.Equals(line = reader.ReadLine())) { string semiColonedLine = PutSemicolonedPartOfRowsIntoBrackets(line); //WriteGQOffAtFileEnd(semiColonedLine); writer.WriteLine(semiColonedLine); } WriteG0XYZOrG650(); WriteFileClosing(); writer.Close(); MiddleToFinalNctConverter finalNctConverter = new MiddleToFinalNctConverter(doneLabel); finalNctConverter.NCTConfiguration = NCTConfiguration; finalNctConverter.ConvertMiddleNctToFinalNct(middleNctFile); } }
///<summary> ///1. Soronként beolvasom a fájlt. ///(A T-s sor biztosan az után a sor után van, amelyik az utolsó ;-s sor, legalábbis a fájl elején.) ///2. Ha a sorban van T, akkor elmentem az utána levő értéket. Ha nem sikerült számmá alakítani, akkor ez nem jó T. ///(ehhez esetleg lehet egy bool változó) ///3. Ha volt T, akkor megnézem, hogy van-e M6. Ha nincs, akkor megnézem, hogy van-e T. -> 2. ///4. Ha volt M6, akkor megnézem, hogy van-e S. Ha nincs, akkor a következő sorra ugrok. -> 2. ///5. Ha volt S, akkor megnézem, hogy van-e G. Ha van, akkor a szükséges műveletek végrehajtása. ///Ha nincs, akkor a következő sorra ugrok. -> 2. ///6. G után újrakezdi a keresést, és ha több TMSG mintát talál, akkor mindre megcsinálja az átalakítást. ///T, M6, S keresése; T értékének lementése ///S után mindig G0-s mondat lesz ///A G0-s mondatban megkeresni a Z koordinátát. A Zxxx kerüljön új sorba. Az új Z-s sor elejére "G43 H<a T utáni szám>" ///"G43 H<a T utáni szám>" után lehet, de nem feltétlen szükségeltetik szóköz a Zxx.xx elé ///A T után szerepelhet 2 jegyű szám is. /// /// Az összes minta után új sorba még bekerül egy M8, ha ki van választva a checkbox. ///</summary> public void ConvertMiddleNctToFinalNct(string middleNctFile) { string finalNctFile = NCT_FOLDER + Path.GetFileNameWithoutExtension(middleNctFile) + FinalFilePostFix() + Path.GetExtension(middleNctFile); valueOfT = -1; isPatternCorrect = false; nextSignToLookFor = T; using (StreamReader reader = new StreamReader(middleNctFile)) { string line; FolderUtil.CreateDirectoryIfNotExists(NCT_FOLDER); writer = new StreamWriter(finalNctFile, false); while ((line = reader.ReadLine()) != null) { if (!isPatternCorrect) { if (nextSignToLookFor.Equals(NEW_PATTERN)) { writer.WriteLine(line); nextSignToLookFor = T; continue; } if (line.Contains(T)) { isPatternCorrect = true; Int32.TryParse(line.Substring(line.LastIndexOf(T) + 1), out valueOfT); nextSignToLookFor = M6; } writer.WriteLine(line); } else { switch (nextSignToLookFor) { case M6: if (IsLineContainLetter(M6, line)) { continue; } break; case S: if (IsLineContainLetter(S, line)) { continue; } break; case G: WriteValuesAccordingToLineContainsG(line); break; } } } writer.Close(); doneLabel.Visible = true; } Finalize(middleNctFile, finalNctFile); }