示例#1
0
        internal TeethVisual3D addNewTeeth(Material material)
        {
            TeethVisual3D t = new TeethVisual3D(this);

            tc.Children.Add(t);

            if (selectedPoint != null)
            {
                Transform3DGroup transformGroup = new Transform3DGroup();
                transformGroup.Children.Add(new TranslateTransform3D(selectedPoint.ToVector3D()));
                t.Transform = transformGroup;
            }

            int intID = getTeethIDint(t.Id);

            teethDictionaries.Add(intID, t.Id);

            if (material == null)
            {
                material = MaterialHelper.CreateMaterial(TeethVisual3D.getTeethColor(intID));
            }
            ((GeometryModel3D)t.Content).Material     = material;
            ((GeometryModel3D)t.Content).BackMaterial = material;

            selectedTeeth = t;
            return(t);
        }
示例#2
0
        internal List <GeometryModel3D> manualSegment(Point3DCollection points, Vector3DCollection vectors)
        {
            List <GeometryModel3D> models = new List <GeometryModel3D>();
            //MeshGeometry3D worldMesh = GetMesh();//ToWorldMesh();
            MeshGeometry3D worldMesh = ToWorldMesh();

            for (var i = 1; i < points.Count; i++)
            {
                Point3D  p0 = points[i - 1];
                Vector3D n0 = vectors[i - 1];
                Point3D  pi = points[i];
                Vector3D ni = vectors[i];

                Point3D  pp = new Point3D(0, 0, 0);
                Vector3D nn = Point3D.Subtract(p0, pp);
                if (i == 1)
                {
                    nn = Point3D.Subtract(pi, pp);
                }
                var g1 = MeshGeometryHelper.Cut(worldMesh, pp, nn);
                this.Children.Add(new RectangleVisual3D {
                    Origin = ToLocal(pp), Normal = nn, Fill = new SolidColorBrush(Colors.LightGoldenrodYellow), BackMaterial = MaterialHelper.CreateMaterial(new SolidColorBrush(Colors.Blue))
                });

                if (i > 1)
                {
                    n0.Negate();
                }
                //var geo = MeshGeometryHelper.Cut(worldMesh, p0, n0);
                var geo = MeshGeometryHelper.Cut(g1, p0, n0);
                this.Children.Add(new RectangleVisual3D {
                    Origin = ToLocal(p0), Normal = n0, Fill = new SolidColorBrush(Colors.LightGoldenrodYellow), BackMaterial = MaterialHelper.CreateMaterial(new SolidColorBrush(Colors.Blue))
                });
                //Console.WriteLine(i+" = "+p0.ToString());
                var geo1 = MeshGeometryHelper.Cut(geo, pi, ni);
                this.Children.Add(new RectangleVisual3D {
                    Origin = ToLocal(pi), Normal = ni, Fill = new SolidColorBrush(Color.FromArgb(80, 255, 0, 0)), BackMaterial = MaterialHelper.CreateMaterial(new SolidColorBrush(Colors.Green))
                });

                //var geo2 = ToLocalMesh(geo1);

                var model = new GeometryModel3D(geo1, MaterialHelper.CreateMaterial(TeethVisual3D.getTeethColor(i)));
                models.Add(model);
            }
            return(models);
        }