예제 #1
0
        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);
            }
        }
예제 #2
0
        ///<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);
        }