예제 #1
0
        private void MenuItem_Click_1(object sender, RoutedEventArgs e)
        {
            //TODO: Dinar: think about changing statuses and implementation
            currentStatus.Content = "Экспортирование модели.";

            SaveFileDialog importDlg = new SaveFileDialog();

            importDlg.InitialDirectory = "C:\\";
            importDlg.Filter           = "All files (*.*)|*.*|XML (*.xml)|*.xml";
            importDlg.FilterIndex      = 2;
            importDlg.RestoreDirectory = true;
            if (importDlg.ShowDialog() != null)
            {
                try
                {
                    Component.Model model_temp = new Component.Model();
                    new FigureParser().ExportFile(mid_surface_model, importDlg.FileName);

                    //TODO: Dinar: some trick, maybe not good solution
                    model             = null;
                    mid_surface_model = null;
                    RedrawModel();
                }
                catch (Exception ex)
                {
                    //TODO: Dinar: replace
                    MessageBox.Show("Ошибка экспорта! Причина ошибки: " + ex.Message);
                    currentStatus.Content = "Готов к работе.";
                    return;
                }
            }
            mid_surface_model     = null;
            currentStatus.Content = "Экспортирование завершено успешно. Готов к работе.";
        }
예제 #2
0
        private void Go_all_tests(object sender, RoutedEventArgs e)
        {
            System.Windows.Forms.FolderBrowserDialog FBD = new System.Windows.Forms.FolderBrowserDialog();
            if (FBD.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string[]           allFoundFiles     = Directory.GetFiles(FBD.SelectedPath, "*.xml", SearchOption.AllDirectories);
                double             splitterAccuracy  = double.Parse(textBox_Splitter_Accuracy.Text, CultureInfo.InvariantCulture);
                double             detalizerAccuracy = double.Parse(textBox_Detalizer_Accuracy.Text, CultureInfo.InvariantCulture);
                IAlgorithm         alg = new Algorithm(splitterAccuracy, detalizerAccuracy);
                RenderTargetBitmap rtb = new RenderTargetBitmap((int)mainCanvas.ActualWidth, (int)mainCanvas.ActualHeight, 96d, 96d, PixelFormats.Pbgra32);
                foreach (string path in allFoundFiles)
                {
                    Component.Model model_temp = new Component.Model();
                    model_temp.Add(new FigureParser().ParseFile(path));
                    model = model_temp;
                    RedrawModel();
                    mid_surface_model = alg.Run(new SolverData(model));
                    RedrawMidSurface();
                    // needed otherwise the image output is black
                    mainCanvas.Measure(new Size((int)mainCanvas.ActualWidth, (int)mainCanvas.ActualHeight));
                    mainCanvas.Arrange(new Rect(new Size((int)mainCanvas.ActualWidth, (int)mainCanvas.ActualHeight)));
                    rtb.Render(mainCanvas);

                    PngBitmapEncoder BufferSave = new PngBitmapEncoder();
                    BufferSave.Frames.Add((BitmapFrame.Create(rtb)));
                    using (var fs = File.OpenWrite(path.Substring(0, path.Length - 4) + "res.png"))
                    {
                        BufferSave.Save(fs);
                    }
                }
            }
        }
예제 #3
0
        private void Generate(object sender, RoutedEventArgs e)
        {
            //TODO: Dinar: prepare generating implementation
            if (model == null)
            {
                return;
            }
            RedrawModel();
            currentStatus.Content = "Генерация в процессе.";
            currentStatus.UpdateLayout();
            //TODO: Move to some input checking
            double splitterAccuracy  = 0;
            double detalizerAccuracy = 0;

            try
            {
                splitterAccuracy  = double.Parse(textBox_Splitter_Accuracy.Text, CultureInfo.InvariantCulture);
                detalizerAccuracy = double.Parse(textBox_Detalizer_Accuracy.Text, CultureInfo.InvariantCulture);
            }
            catch (Exception)
            {
                currentStatus.Content = "Генерация прервана. Введите корректные настройки точностей.";
                return;
            }

            IAlgorithm alg = new Algorithm(splitterAccuracy, detalizerAccuracy);
            Stopwatch  sw  = new Stopwatch();

            sw.Start();
            mid_surface_model = alg.Run(new SolverData(model));
            sw.Stop();
            RedrawMidSurface();
            currentStatus.Content = "Генерация завершена успешно. Затраченное время: " + sw.Elapsed;
        }
예제 #4
0
        public void ExportFile(IMidSurface f, string filePath)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(MidSurfaceNameSpace.Component.MSModel));
            FileStream    fs         = new FileStream(filePath, FileMode.Open);

            serializer.Serialize(fs, f);
            fs.Close();
        }
예제 #5
0
        private void Do_Enumeration(object sender, RoutedEventArgs e)
        {
            System.Windows.Forms.FolderBrowserDialog FBD = new System.Windows.Forms.FolderBrowserDialog();
            if (FBD.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                Component.IModel  current_model = model;
                Segments_iterator SI            = new Segments_iterator(model);

                int nom_file = 0;

                double     splitterAccuracy  = double.Parse(textBox_Splitter_Accuracy.Text, CultureInfo.InvariantCulture);
                double     detalizerAccuracy = double.Parse(textBox_Detalizer_Accuracy.Text, CultureInfo.InvariantCulture);
                IAlgorithm alg = new Algorithm(splitterAccuracy, detalizerAccuracy);

                Html view = new Html(filename);

                RenderTargetBitmap rtb = new RenderTargetBitmap((int)mainCanvas.ActualWidth, (int)mainCanvas.ActualHeight, 96d, 96d, PixelFormats.Pbgra32);
                PngBitmapEncoder   BufferSave;

                while (!SI.IsOver)
                {
                    model = current_model;
                    RedrawModel();
                    mid_surface_model = alg.Run(new SolverData(model));
                    RedrawMidSurface();

                    model = SI.Next;
                    RedrawModel(Brushes.Purple);

                    //построение текущей поверхности

                    mid_surface_model = alg.Run(new SolverData(model));
                    RedrawMidSurface(Brushes.Blue);

                    // сохранение картинки

                    mainCanvas.UpdateLayout();
                    //mainCanvas.Measure(new Size((int)mainCanvas.ActualWidth, (int)mainCanvas.ActualHeight));
                    //mainCanvas.Arrange(new Rect(new Size((int)mainCanvas.ActualWidth, (int)mainCanvas.ActualHeight)));
                    rtb.Render(mainCanvas);
                    BufferSave = new PngBitmapEncoder();
                    BufferSave.Frames.Add((BitmapFrame.Create(rtb)));
                    using (var fs = File.OpenWrite(FBD.SelectedPath + "\\image" + nom_file + ".png"))
                    {
                        BufferSave.Save(fs);
                        fs.Close();
                    }
                    view.Add(FBD.SelectedPath + "\\image" + nom_file + ".png");
                    nom_file++;
                }
                System.IO.File.WriteAllText(FBD.SelectedPath + "\\show.html", view.Save());
            }
        }
예제 #6
0
 public void Check(IModel model, IMidSurface midsurface)
 {
     test.CheckQuality(model, midsurface);
 }
예제 #7
0
 public VisibleData(IMidSurface midsurface, VisibleDataSettings settings)
 {
     segments      = midsurface.GetData().ToList <ISegment>();
     this.settings = settings;
 }
예제 #8
0
 public VisibleData(IMidSurface midsurface) : this()
 {
     segments = midsurface.GetData().ToList <ISegment>();
 }
예제 #9
0
 public void Export(IMidSurface midsurface)
 {
 }
예제 #10
0
 public IMidSurfaceObject(IMidSurface IMidSurfaceinstance)
 {
     IMidSurfaceInstance = IMidSurfaceinstance;
 }
예제 #11
0
 void CheckQuality(IModel model, IMidSurface midsurface)
 {
 }