Пример #1
0
        private void DirectFileExport(string notes)
        {
            Stopwatch stopWatch = new Stopwatch();

            stopWatch.Start();

            bool newFile = false;

            SmileFile.Patient     = Patient;
            SmileFile.Description = notes;
            SmileFile.Type        = Smile.MANIPULATION;
            if (SmileFile.Id == null)
            {
                SmileFile.Id = DB.getSmileFileNewId(Patient.Id);
                newFile      = true;
            }

            jawFilename = "JAW" + SmileFile.Id + ".obj";

            var path = Smile.MANIPULATED_PATH + jawFilename;
            var e    = new SmileObjExporter(path);

            //e.Export(CurrentModel);
            ((SmileObjExporter)e).jawVisual = JawVisual;
            ((SmileObjExporter)e).Export(JawVisual, Patient);
            e.Close();

            string screenShot = "JAW" + SmileFile.Id + ".png";

            path = Smile.MANIPULATED_PATH + screenShot;
            HelixView.Export(path);

            //TODO save to table
            SmileFile.FileName   = jawFilename;
            SmileFile.Screenshot = screenShot;

            Treatment.Phase = Smile.GetPhase(Smile.MANIPULATION);

            if (Treatment.Id != null)
            {
                DB.UpdateTreatment(Treatment);
            }
            else
            {
                Treatment.Id            = DB.getTreatmentNewId(Patient.Id);
                Treatment.TreatmentDate = DateTime.Now;
                Treatment.TreatmentTime = DateTime.Now.ToString(Smile.TIME_FORMAT);
                DB.InsertTreatment(Treatment);
            }
            if (newFile)
            {
                DB.InsertFileInfo(SmileFile);
                DB.insertTreatmentFiles(Treatment, SmileFile);
            }
            else
            {
                DB.UpdateFileInfo(SmileFile);
            }
            showStatus(stopWatch, "Exported");
        }
Пример #2
0
        private void FileExport()
        {
            var path = FileDialogService.SaveFileDialog(null, null, Exporters.Filter, ".png");

            if (path == null)
            {
                return;
            }
            HelixView.Export(path);

            /*
             *          var ext = Path.GetExtension(path).ToLowerInvariant();
             *          switch (ext)
             *          {
             *              case ".png":
             *              case ".jpg":
             *                  HelixView.Export(path);
             *                  break;
             *              case ".xaml":
             *                  {
             *                      var e = new XamlExporter(path);
             *                      e.Export(CurrentModel);
             *                      e.Close();
             *                      break;
             *                  }
             *
             *              case ".xml":
             *                  {
             *                      var e = new KerkytheaExporter(path);
             *                      e.Export(HelixView.Viewport);
             *                      e.Close();
             *                      break;
             *                  }
             *              case ".obj":
             *                  {
             *                      var e = new ObjExporter(path);
             *                      e.Export(CurrentModel);
             *                      e.Close();
             *                      break;
             *                  }
             *              case ".objz":
             *                  {
             *                      var tmpPath = Path.ChangeExtension(path, ".obj");
             *                       var e = new ObjExporter(tmpPath);
             *                       e.Export(CurrentModel);
             *                       e.Close();
             *                      GZipHelper.Compress(tmpPath);
             *                      break;
             *                  }
             *              case ".x3d":
             *                  {
             *                      var e = new X3DExporter(path);
             *                      e.Export(CurrentModel);
             *                      e.Close();
             *                      break;
             *                  }
             *          }*/
        }
Пример #3
0
        private void LoadRawFile(string CurrentModelPath)
        {
            try
            {
                Stopwatch stopWatch = new Stopwatch();
                stopWatch.Start();

                CurrentModel = ModelImporter.Load(CurrentModelPath);
                Model3DGroup group = new Model3DGroup();
                if (CurrentModel != null)
                {
                    var    mb = new MeshBuilder(false, false);
                    Rect3D r  = CurrentModel.Bounds;

                    Model3DGroup g = (Model3DGroup)CurrentModel;
                    foreach (GeometryModel3D gm in g.Children)
                    {
                        MeshGeometry3D    mesh = (MeshGeometry3D)gm.Geometry;
                        Point3DCollection ind  = mesh.Positions;
                        for (int i = 0; i < ind.Count; i++)
                        {
                            var p0 = ind[i];

                            p0 = new Point3D(p0.X + (-(r.X + (r.SizeX / 2))), p0.Y + (-(r.Y + (r.SizeY / 2))), p0.Z + (-(r.Z + (r.SizeZ / 2))));

                            mb.Positions.Add(p0);
                        }

                        for (int i = 0; i < mesh.TriangleIndices.Count; i++)
                        {
                            mb.TriangleIndices.Add(mesh.TriangleIndices[i]);
                        }
                    }
                    var geom = new GeometryModel3D(mb.ToMesh(), MaterialHelper.CreateMaterial(Colors.BlueViolet));
                    geom.BackMaterial = MaterialHelper.CreateMaterial(Colors.Chocolate);
                    group.Children.Add(geom);

                    CurrentModel = group;
                    if (RawVisual == null)
                    {
                        RawVisual = new RawVisual3D(RootVisual);
                    }
                    RawVisual.Content         = CurrentModel;
                    RawVisual.ShowBoundingBox = true;
                    RawVisual.showHideBoundingBox();
                    RootVisual.Children.Add(RawVisual);
                    smileMode        = "RAW";
                    ApplicationTitle = String.Format(TitleFormatString, CurrentModelPath);
                    HelixView.ZoomExtents(100);
                }

                showStatus(stopWatch, "Loaded");
            }
            catch (FileNotFoundException fnfe)
            {
                MessageBox.Show("File not found. Make sure your Path Setting is correct.");
            }
        }
Пример #4
0
        private void FileOpen()
        {
            CurrentModelPath = FileDialogService.OpenFileDialog("models", null, OpenFileFilter, ".3ds");
#if !DEBUG
            try
            {
#endif
            CurrentModel     = ModelImporter.Load(CurrentModelPath);
            ApplicationTitle = String.Format(TitleFormatString, CurrentModelPath);
            HelixView.ZoomExtents(0);
#if !DEBUG
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }
#endif
        }
Пример #5
0
        private void LoadJawFile(string CurrentModelPath)
        {
            try
            {
                Stopwatch stopWatch = new Stopwatch();
                stopWatch.Start();

                JawVisual3D jv = null;
                jv = (JawVisual3D)SmileModelImporter.Load(CurrentModelPath);
                if (jv != null)
                {
                    if (RootVisual.Children.Contains(JawVisual))
                    {
                        RootVisual.Children.Remove(JawVisual);
                    }
                    JawVisual = null;
                    JawVisual = jv;
                    RootVisual.Children.Add(JawVisual);
                    smileMode = "JAW";

                    if (JawVisual.selectedGum != null)
                    {
                        drawWires();
                    }

                    //if (!HelixView.Viewport.Children.Contains(RootVisual))                    HelixView.Viewport.Children.Add(RootVisual);
                    window.chartPanel.Visibility = Visibility.Visible;
                    ApplicationTitle             = String.Format(TitleFormatString, CurrentModelPath);
                }

                HelixView.ZoomExtents(100);
                showStatus(stopWatch, "Loaded");
            }
            catch (FileNotFoundException fnfe)
            {
                MessageBox.Show("File not found. Make sure your Path Setting is correct.");
            }
        }
Пример #6
0
 private void ViewZoomExtents()
 {
     HelixView.ZoomExtents(500);
 }
Пример #7
0
 private void ViewZoomToFit()
 {
     HelixView.ZoomToFit(500);
 }
Пример #8
0
        private void FileOpenRaw()
        {
            CurrentModelPath = FileDialogService.OpenFileDialog("models", null, OpenFileFilter, ".3ds");
#if !DEBUG
            try
            {
#endif
            ///*
            Stopwatch stopWatch = new Stopwatch();
            stopWatch.Start();

            CurrentModel = ModelImporter.Load(CurrentModelPath);
            Model3DGroup group = new Model3DGroup();
            if (CurrentModel != null)
            {
                var    mb = new MeshBuilder(false, false);
                Rect3D r  = CurrentModel.Bounds;

                Model3DGroup g = (Model3DGroup)CurrentModel;
                foreach (GeometryModel3D gm in g.Children)
                {
                    MeshGeometry3D    mesh = (MeshGeometry3D)gm.Geometry;
                    Point3DCollection ind  = mesh.Positions;
                    for (int i = 0; i < ind.Count; i++)
                    {
                        var p0 = ind[i];

                        p0 = new Point3D(p0.X + (-(r.X + (r.SizeX / 2))), p0.Y + (-(r.Y + (r.SizeY / 2))), p0.Z + (-(r.Z + (r.SizeZ / 2))));

                        mb.Positions.Add(p0);
                    }

                    for (int i = 0; i < mesh.TriangleIndices.Count; i++)
                    {
                        mb.TriangleIndices.Add(mesh.TriangleIndices[i]);
                    }
                }
                var geom = new GeometryModel3D(mb.ToMesh(), MaterialHelper.CreateMaterial(Colors.BlueViolet));
                geom.BackMaterial = MaterialHelper.CreateMaterial(Colors.Chocolate);
                group.Children.Add(geom);


                /*
                 * //ADD COUNTOUR
                 * var segments = MeshGeometryHelper.GetContourSegments(geom.Geometry as MeshGeometry3D, new Point3D(0,0,0), new Vector3D(0,0,1));
                 * foreach (var contour in MeshGeometryHelper.CombineSegments(segments, 1e-6))
                 * {
                 *  if (contour.Count == 0)
                 *      continue;
                 *  HelixView.Viewport.Children.Add(new TubeVisual3D { Diameter = 0.03, Path = new Point3DCollection(contour), Fill = Brushes.Green });
                 * }
                 * //*/
                /*
                 * //FIND EDGES
                 * var edges = MeshGeometryHelper.FindEdges(geom.Geometry as MeshGeometry3D);
                 * for (int i = 0; i < edges.Count; i+=2)
                 * {
                 *  Point3DCollection points = new Point3DCollection();
                 *  MeshGeometry3D ms = geom.Geometry as MeshGeometry3D;
                 *  Point3D p0 = ms.Positions[edges[i]];
                 *  Point3D p1 = ms.Positions[edges[i+1]];
                 *  points.Add(p0);
                 *  points.Add(p1);
                 *  HelixView.Viewport.Children.Add(new TubeVisual3D { Diameter = 0.03,  Path = new Point3DCollection(points), Fill = Brushes.Black});
                 * }
                 * //*/
                CurrentModel = group;
                //Transform3DGroup tgroup = new Transform3DGroup();
                //tgroup.Children.Add(new TranslateTransform3D(-(r.X + (r.SizeX / 2)), -(r.Y + (r.SizeY / 2)), -(r.Z + (r.SizeZ / 2))));
                //tgroup.Children.Add(new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0,1,0), 45)));
                //CurrentModel.Transform = tgroup;
                //CurrentModel.Freeze();
                if (RawVisual == null)
                {
                    RawVisual = new RawVisual3D(RootVisual);
                }
                //RawVisual.Content = CurrentModel;
                RawVisual.Content         = CurrentModel;
                RawVisual.ShowBoundingBox = true;
                RawVisual.showHideBoundingBox();
                RootVisual.Children.Add(RawVisual);
                smileMode = "RAW";

                //if(!HelixView.Viewport.Children.Contains(RootVisual)) HelixView.Viewport.Children.Add(RootVisual);

                //ModelVisual3D v = new ModelVisual3D();
                //v.Content = CurrentModel;
                //RootVisual.Children.Add(v);

                //*/

                /*
                 * List<Point3D> pts = new List<Point3D>();
                 * pts.Add(new Point3D(30.4960694492679, 5.52461072334257, 9.44661196022868));
                 * pts.Add(new Point3D(28.0998337010248, 6.66945199865937, 14.4798151385421));
                 * pts.Add(new Point3D(28.2102015086476, -0.126599907551222, 19.0159875772706));
                 * pts.Add(new Point3D(29.7392389441408, -4.1789883548182, 14.8532955485325));
                 * pts.Add(new Point3D(28.4974026994517, -2.89939719282193, 8.04165108434179));
                 * pts.Add(new Point3D(24.1236797131164, 1.10693238332609, 6.46814289839299));
                 *
                 * for (var i = 0; i < pts.Count; i++)
                 * {
                 *  BoxVisual3D b = new BoxVisual3D();
                 *  b.Center = pts[i];
                 *  b.Length = 2;
                 *  b.Height = 2;
                 *  b.Width = 2;
                 *  HelixView.Viewport.Children.Add(b);
                 * }
                 */

                ApplicationTitle = String.Format(TitleFormatString, CurrentModelPath);
                HelixView.ZoomExtents(0);

                showStatus(stopWatch, "Loaded");
            }
#if !DEBUG
        }

        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }
#endif
        }
Пример #9
0
        private void FileExportRaw()
        {
            var path = FileDialogService.SaveFileDialog(null, null, Exporters.Filter, ".png");

            if (path == null)
            {
                return;
            }
            //HelixView.Export(path);
            ///*
            Stopwatch stopWatch = new Stopwatch();

            stopWatch.Start();

            var ext = Path.GetExtension(path).ToLowerInvariant();

            switch (ext)
            {
            case ".png":
            case ".jpg":
                HelixView.Export(path);
                break;

            case ".xaml":
            {
                var e = new XamlExporter(path);
                e.Export(CurrentModel);
                e.Close();
                break;
            }

            case ".xml":
            {
                var e = new KerkytheaExporter(path);
                e.Export(HelixView.Viewport);
                e.Close();
                break;
            }

            case ".obj":
            {
                var patient = new Patient();
                var e       = new SmileObjExporter(path);
                //e.Export(CurrentModel);
                ((SmileObjExporter)e).rawVisual = RawVisual;
                ((SmileObjExporter)e).Export(RawVisual, patient);
                e.Close();
                break;
            }

            case ".objz":
            {
                var tmpPath = Path.ChangeExtension(path, ".obj");
                var e       = new ObjExporter(tmpPath);
                e.Export(CurrentModel);
                e.Close();
                GZipHelper.Compress(tmpPath);
                break;
            }

            case ".x3d":
            {
                var e = new X3DExporter(path);
                e.Export(CurrentModel);
                e.Close();
                break;
            }
            }
            showStatus(stopWatch, "Exported");
            //*/
        }