Example #1
0
        /// <summary>
        /// Построение сетки
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button1_Click(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text  = @"Выполняется построение модели...";
            toolStripProgressBar1.Value = 0;
            Refresh();

            float pw = Convert.ToSingle(_layers[0].Dicom.PixelSpacingValue[0], CultureInfo.InvariantCulture.NumberFormat);
            float ph = Convert.ToSingle(_layers[0].Dicom.PixelSpacingValue[1], CultureInfo.InvariantCulture.NumberFormat);

            Volume volume = new Volume(_layers, pw, ph);
            var    depth  = _layers[0].Dicom.pixelDepth;
            var    space  = _layers[0].Dicom.pixeSpace;
            var    t      = MCCube.getTriangles(volume);
            int    koeff  = 18;

            for (int k = 0; k < t.Count - 2; k += 3)
            {
                var    trg  = new MyTriangle(t[k], t[k + 1], t[k + 2]);
                Vertex vrt1 = new Vertex(t[k].X * koeff, t[k].Z * koeff * (-1), t[k].Y * koeff);
                Vertex vrt2 = new Vertex(t[k + 1].X * koeff, t[k + 1].Z * koeff * (-1), t[k + 1].Y * koeff);
                Vertex vrt3 = new Vertex(t[k + 2].X * koeff, t[k + 2].Z * koeff * (-1), t[k + 2].Y * koeff);
                var    trg2 = new MyTriangle(vrt1, vrt2, vrt3);
                _triangles.Add(trg2);
            }

            SystemSounds.Beep.Play();
            MessageBox.Show("Done!!!");
            toolStripStatusLabel1.Text = @"Реконструкция 3D модели позвонка завершена. Число треугольников:" + _triangles.Count.ToString();

            Stream  myStream = new FileStream(@"Stl\Vertebras\st1\L1.stl", FileMode.Create);
            StlFile stl      = new StlFile
            {
                SolidName = "my",
                Triangles = _triangles
            };

            stl.Save(myStream, true);
            myStream.Close();



            btn_render_start.Enabled           = true;
            btn_render_stop.Enabled            = true;
            сохранитьToolStripMenuItem.Enabled = true;
            button2.Enabled = true;
            Refresh();
        }
Example #2
0
        /// <summary>
        /// Сохранение файлов
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void СохранитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            renderTimer.Stop();
            saveFileDialog1 = new SaveFileDialog
            {
                Filter           = @"Stl Files (*.stl)|*.stl|Mesh Files (*.mesh)|*.mesh|GMesh Files (*.msh)|*.msh",
                FilterIndex      = 1,
                RestoreDirectory = true
            };


            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                Stream myStream = saveFileDialog1.OpenFile();
                switch (saveFileDialog1.FilterIndex)
                {
                case 1:
                    StlFile stl = new StlFile
                    {
                        SolidName = "my",
                        Triangles = _triangles
                    };
                    stl.Save(myStream, false);
                    break;

                case 2:
                    //MeshWriter(new StreamWriter(myStream));
                    break;

                case 3:
                    //GMeshWriter(new StreamWriter(myStream));
                    break;
                }
                myStream.Close();
                System.Media.SystemSounds.Beep.Play();
                MessageBox.Show(@"Файл сохранен!");
            }
        }