Пример #1
0
 public void AddGeometric3DObject(cGeometric3DObject object3D)
 {
     AddObject3D((cObject3D)object3D);
 }
Пример #2
0
 public c3DIsoContours(cGeometric3DObject AssociatedObject, cDRC_Region AssociatedRegion, double Zposition, bool IsIsoboles)
 {
     Create(AssociatedObject, AssociatedRegion, Color.White, Zposition, IsIsoboles);
 }
Пример #3
0
        private void Create(cGeometric3DObject AssociatedObject, cDRC_Region AssociatedRegion, Color Color, double ZPosition, bool IsIsoboles)
        {
            if (AssociatedObject.AlgoOutPut == null) return;

               SetPosition(new cPoint3D(AssociatedObject.GetActor().GetPosition()[0], AssociatedObject.GetActor().GetPosition()[1], 0));// AssociatedObject.GetActor().GetPosition()[2]);
            //Position = new cPoint3D(0, 0, 0);// AssociatedObject.GetActor().GetPosition()[2]);

            vtkPlane plane = vtkPlane.New();

            // isoboles
            if (IsIsoboles)
            {
                plane.SetOrigin(AssociatedObject.GetActor().GetPosition()[0], AssociatedObject.GetActor().GetPosition()[1], ZPosition);
                plane.SetNormal(0, 0, 1);
            }
            else
            {
                plane.SetOrigin(AssociatedObject.GetPosition().X - AssociatedObject.GetActor().GetPosition()[0], AssociatedObject.GetPosition().Y - AssociatedObject.GetActor().GetPosition()[1], 0);
                plane.SetNormal(AssociatedRegion.SizeY - 1 + 2 * ZPosition, -AssociatedRegion.SizeX, 0);

                // vtkPlaneSource PlaneSource = vtkPlaneSource.New();
                //PlaneSource.SetOrigin(AssociatedObject.Position.X, AssociatedObject.Position.Y, 0);
                //PlaneSource.SetNormal(5, -10, 0);
            }

            // Create cutter
            vtkCutter cutter = vtkCutter.New();

            cutter.SetCutFunction(plane);
            cutter.SetInputConnection(AssociatedObject.AlgoOutPut);
            cutter.Update();

            vtkPoints Pts = cutter.GetOutput().GetPoints();
            int NumPts = (int)Pts.GetNumberOfPoints();
            for (int IdxPt = 0; IdxPt < NumPts; IdxPt++)
            {

                double[] Pt = Pts.GetPoint(IdxPt);
                cPoint3D NewPt = new cPoint3D(Pt[0], Pt[1], Pt[2]);
                ListPtContour.Add(NewPt);
            }

            vtkTubeFilter tubeFilter = vtkTubeFilter.New();

            tubeFilter.SetInputConnection(cutter.GetOutputPort());
            tubeFilter.SetRadius(.035); //default is .5
            tubeFilter.SetNumberOfSides(50);
            tubeFilter.Update();

            //     vtkPolyDataMapper cutterMapper = vtkPolyDataMapper.New();

            vtk_PolyDataMapper = vtkPolyDataMapper.New();
            vtk_PolyDataMapper.SetInputConnection(/*PlaneSource.GetOutputPort());*/ tubeFilter.GetOutputPort());

            // Create plane actor
            //vtkActor planeActor = vtkActor.New();

            //planeActor.SetMapper(vtk_PolyDataMapper);

            CreateVTK3DObject(0);

            SetColor(Color);
            SetOpacity(1);
            SetToSurface();
        }
Пример #4
0
        public void AddGeometric3DObject(cGeometric3DObject object3D)
        {
            AddObject3D((cObject3D)object3D);

            object3D.AssociatedWorld = this;
            if(AssociatedVTKRenderer!=null)
                AssociatedVTKRenderer.AddViewProp(object3D.GetActor());
        }