コード例 #1
0
        public void BeeHiveVersNotBeeHive()
        {
            string BeeHiveAdress    = @"C:\Users\крендель\Desktop\Code\Defect2019\bin\Debug\EllipseData";
            string NotBeeHiveAdress = @"C:\Users\крендель\Desktop\Code\Defect2019\bin\Release\EllipseData";
            string Symbols          = "ABCDEFGH";

            string[] files = new string[Symbols.Length * (Symbols.Length - 1)];
            int      k     = 0;

            for (int i = 0; i < Symbols.Length; i++)
            {
                for (int j = 0; j < Symbols.Length; j++)
                {
                    if (i != j)
                    {
                        files[k++] = $"{Symbols[i]}to{Symbols[j]}(MaxCoordinate).txt";
                    }
                }
            }

            double[] Get(string path) => files.Select(s => Expendator.GetStringArrayFromFile(Path.Combine(path, s))[2].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)[2].ToDouble()).ToArray();

            var vec1 = Get(BeeHiveAdress);
            var vec2 = Get(NotBeeHiveAdress);

            using (StreamWriter r = new StreamWriter("bee.txt"))
                for (int i = 0; i < vec1.Length; i++)
                {
                    r.WriteLine($"{vec1[i]} {vec2[i]}");
                }

            Expendator.StartProcessOnly("TestBee.r");
            Process.Start("bee.png");
        }
コード例 #2
0
        public async void анимацияПоПоследнимСохранённымДаннымToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (!File.Exists("3D ur, uz(info).txt"))
            {
                MessageBox.Show("Не найдено файла со списком изображений", $"Нет списка \"3D ur, uz(info).txt\"", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }


            string[] st = Expendator.GetStringArrayFromFile("3D ur, uz(info).txt", true);
            for (int i = 0; i < st.Length; i++)
            {
                if (!File.Exists(st[i]))
                {
                    FlexibleMessageBox.Show($"Не найдено файла \"{st[i]}\" из списка изображений. Анимация не готова", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    if (FilesUrUzExist(st) && MessageBox.Show($"Поскольку все нужные текстовые файлы в наличии, изображения можно восстановить. Создать анимацию? (может занять около 15 минут)", "Перерисовка", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                    {
                        await Task.Run(() => Expendator.StartProcessOnly("ReDraw3Duxt2.r", true));

                        break;
                    }
                    else
                    {
                        return;
                    }
                }
            }


            new Anima(st).Show();
        }
コード例 #3
0
        private async void загрузитьНеобходимыеПакетыRToolStripMenuItem_Click(object sender, EventArgs e)
        {
            const string mess = "Требуется подключение к Интернету. Будут загружены все пакеты R, необходимые программе. Загрузка может занимать несколько минут, по окончанию загрузки консоль закроется. Уже установленные пакеты могут загрузиться заново либо обновиться. Выполнить действие?";

            if (MessageBox.Show(mess, "Требуется подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                SoundMethods.OK();
                await Task.Run(() => Expendator.StartProcessOnly(OtherMethods.GetResource("InstallPackages.r"), true));
            }
        }
コード例 #4
0
        /// <summary>
        /// Только создать 3D графики с сохранением в файлы
        /// </summary>
        /// <param name="shortname"></param>
        /// <param name="F"></param>
        /// <param name="xmin"></param>
        /// <param name="xmax"></param>
        /// <param name="ymin"></param>
        /// <param name="ymax"></param>
        /// <param name="count"></param>
        /// <param name="progress"></param>
        /// <param name="token"></param>
        /// <param name="graficType"></param>
        /// <param name="title"></param>
        /// <param name="xlab"></param>
        /// <param name="ylab"></param>
        /// <param name="zlab"></param>
        /// <param name="parallel"></param>
        public static async Task JustGetGraficInFilesAsync(string shortname, string savename, Func <double, double, double> F, NetOnDouble x, NetOnDouble y, IProgress <int> progress, System.Threading.CancellationToken token, StringsForGrafic forGrafic, GraficType graficType = GraficType.PdfPngHtml, bool parallel = true)
        {
            await GetDataToFileAsync(shortname, savename, F, x.Array, y.Array, progress, token, forGrafic, parallel);

            GraficTypeToFile(graficType);
            RemoveOlds(shortname);
            if (x.Count == y.Count)
            {
                await Task.Run(() => Expendator.StartProcessOnly("Magic3Dscript.R"));
            }
        }
コード例 #5
0
        static void Main(string[] args)
        {
            string BeeHiveAdress    = @"C:\Users\user1\source\repos\CodeIt\Defect2019\bin\Release\EllipseData";
            string NotBeeHiveAdress = @"C:\Users\user1\Desktop\EllipseData";
            string Symbols          = "ABCDEFGH";

            string[] files = new string[Symbols.Length * (Symbols.Length - 1)];
            int      k     = 0;

            for (int i = 0; i < Symbols.Length; i++)
            {
                for (int j = 0; j < Symbols.Length; j++)
                {
                    if (i != j)
                    {
                        files[k++] = $"{Symbols[i]}to{Symbols[j]}(MaxCoordinate).txt";
                    }
                }
            }

            double[] Get(string path) => files.Select(s => Expendator.GetStringArrayFromFile(Path.Combine(path, s))[2].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)[2].Replace('.', ',').ToDouble()).ToArray();

            var vec1 = Get(BeeHiveAdress);
            var vec2 = Get(NotBeeHiveAdress);

            double s1 = 0, s2 = 0;

            using (StreamWriter r = new StreamWriter("bee.txt"))
                for (int i = 0; i < vec1.Length; i++)
                {
                    r.WriteLine($"{vec1[i]} {vec2[i]}");
                    Console.WriteLine($"{vec1[i]} \t{vec2[i]} " + ((vec1[i] >= vec2[i]) ? "\tЛучше  +" : "\tХучше  -"));
                    double tmp = vec1[i] - vec2[i];
                    if (tmp < 0)
                    {
                        s2 -= tmp;
                    }
                    else
                    {
                        s1 += tmp;
                    }
                }
            Console.WriteLine($"Выигрыш = \t{s1} ({Expendator.GetProcent(s1, s1 + s2)}%)");
            Console.WriteLine($"Проигрыш = \t{s2} ({Expendator.GetProcent(s2, s1 + s2)}%)");

            File.Copy(Expendator.GetResource("TestBee.r", "OptimisationTest"), "TestBee.r", true);
            Expendator.StartProcessOnly("TestBee.r");
            Process.Start("bee.png");

            Console.ReadKey();
        }
コード例 #6
0
        private async Task MakeInteractive()
        {
            if (checkBox4.Checked || checkBox5.Checked)
            {
                toolStripStatusLabel1.Text = $"Создаются графики";
                new System.Media.SoundPlayer(Properties.Resources.СоздаютсяГрафики).Play();
                await Task.Run(() =>
                {
                    Parallel.ForEach(fdiff, path => Expendator.StartProcessOnly("GraficFunc.r", true, path));
                });

                new System.Media.SoundPlayer(Properties.Resources.ГрафикиДоступны).Play();
            }
        }
コード例 #7
0
        private async Task AnimateAsync(string gl, string path)
        {
            toolStripStatusLabel1.Text = $"Запущено построение поверхностей";
            toolStripStatusLabel2.Text = $"";

            if (source.IsCancellationRequested)
            {
                return;
            }

            label9.Text = $"Очистка...{Environment.NewLine}Построение...";
            await Task.Run(() =>
                           Parallel.Invoke(
                               () => StartProcess("WavesSurface.r", gl, true, path),
                               () =>
            {
                Functions.cmas.Dispose();
                GC.Collect();
            })
                           );

            // new Библиотека_графики.PdfOpen("Полученные u-surfaces", Path.Combine(Environment.CurrentDirectory, $"{gl} .pdf")).Show();

            if (source.IsCancellationRequested)
            {
                return;
            }
            checkBox2.Hide();
            if (checkBox2.Checked)
            {
                toolStripStatusLabel1.Text = $"Построены u-surface. Создаётся массив кадров";
                await Task.Run(() => Expendator.StartProcessOnly("ReDraw3Duxt2.r", true, path));

                if (source.IsCancellationRequested)
                {
                    return;
                }
                //new Anima(filenames).ShowDialog();
            }
        }
コード例 #8
0
        /// <summary>
        /// Суммирование замеров, построение анимации и прочие заключительные действия
        /// </summary>
        /// <returns></returns>
        private async Task AfterLoopsActAsync()
        {
            label9.Show();
            label9.Text = $"Суммирование{Environment.NewLine}по замерам";
            toolStripStatusLabel1.Text = $"Запущено построение u-surfaces";
            toolStripStatusLabel2.Text = $"";
            BegShow();
            string gl = $"{Source.ToString(sourcesArray)}, (xmin, xmax, count, ymin, ymax) = ({xmin}, {xmax}, {count}dot{count2}, {ymin}, {ymax})";

            await Task.Run(() =>
            {
                StreamWriter ts  = new StreamWriter("textnames.txt");
                StreamWriter pds = new StreamWriter("pdfnames.txt");

                Expendator.WriteStringInFile("SurfaceMain.txt", gl);

                double th = (tmax - tmin) / (tcount - 1);
                for (int i = 0; i < tcount; i++)
                {
                    double t = tmin + i *th;
                    if (t == 0)
                    {
                        continue;
                    }
                    string tit = $"{Source.ToString(sourcesArray)}, t = {t.ToString(4)}, (xmin, xmax, count, ymin, ymax) = ({xmin}, {xmax}, {count}dot{count2}, {ymin}, {ymax})";
                    ts.WriteLine(tit + ".txt");
                    pds.WriteLine($"3D ur, uz(title , {tit} ).pdf");
                    filenames[i] = "3D " + tit + " .png";
                }
                FilenamesArrayToFile();
                ts.Close();
                pds.Close();

                OtherMethods.PlaySound("ДанныеСуммируются");
                Parallel.Invoke(
                    () => SSum(),
                    () =>
                {
                    if (Functions.ur.Lenght > 0)
                    {
                        Functions.ur.Dispose();
                        GC.Collect();
                    }
                });

                Expendator.CopyFiles(Expendator.GetWordFromFile("WhereData.txt"), Environment.CurrentDirectory, "3D ur, uz(x).txt", "3D ur, uz(y).txt");
            });

            label9.Hide();

            if (source.IsCancellationRequested)
            {
                return;
            }
            await Task.Run(() => StartProcess("OnlySurface.r", global : true));

            //new Библиотека_графики.PdfOpen("Полученные u-surfaces", Path.Combine(Environment.CurrentDirectory, $"{gl} .pdf")).Show();
            CopyImages(gl);
            ShowImages(gl);

            OtherMethods.PlaySound("ПоверхностиПостроены");

            if (count == count2)
            {
                if (MessageBox.Show("Создавать анимацию? (может занять до 15 минут)", "Анимация", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                {
                    toolStripStatusLabel1.Text = $"Построены u-surface. Создаётся массив кадров";
                    await Task.Run(() => Expendator.StartProcessOnly("ReDraw3Duxt2.r", true));

                    if (source.IsCancellationRequested)
                    {
                        return;
                    }
                    OtherMethods.PlaySound("АнимацияГотова");
                    new Anima(filenames).ShowDialog();
                }

                new Scheme(sourcesArray, new Point(xmin, ymin), xmax - xmin, ymax - ymin, gl + " (heatmap).png").Show();
                OtherMethods.PlaySound("ВычисленияЗавершены");
            }

            toolStripStatusLabel1.Text = $"Операции закончены";
        }