Ejemplo n.º 1
0
        /// <summary>
        /// Détruit proprement les objets
        /// </summary>
        public void destroy()
        {
            _renderer.RemoveActor(_volumeActor);

            if (_stlReader != null)
            {
                _stlReader.Dispose();
            }

            if (_volumeMapper != null)
            {
                _volumeMapper.Dispose();
            }

            if (_volumeActor != null)
            {
                _renderer.RemoveActor(_volumeActor);
                _volumeActor.Dispose();
            }

            if (_edgeMapper != null)
            {
                _edgeMapper.Dispose();
            }

            if (_edgeActor != null)
            {
                _renderer.RemoveActor(_edgeActor);
                _edgeActor.Dispose();
            }

            Render();
        }
Ejemplo n.º 2
0
 public override bool Read(string fileName, IMonitor mon = null)
 {
     try
     {
         unitList.Clear();
         vtkSTLReader      reader = vtkSTLReader.New();
         vtkPolyDataMapper mapper = vtkPolyDataMapper.New();
         reader.SetFileName(fileName);
         mapper.SetInputConnection(reader.GetOutputPort());
         StlUnit unit = new StlUnit("Stl." + Path.GetFileNameWithoutExtension(fileName));
         unit.Actor.SetMapper(mapper);
         unitList.Add(unit);
         reader.Dispose();
         mapper.Dispose();
         return(true);
     }
     catch (Exception e)
     {
         if (mon != null)
         {
             mon.ErrorLine(e.Message);
         }
         return(false);
     }
 }
Ejemplo n.º 3
0
        static private void init()
        {
            vtkSTLReader rdr = vtkSTLReader.New();

            rdr.SetFileName("BODY-EXTRUDEUR-WADE.stl");



            // Créer une géométrie sphérique

            /*vtkSphereSource sphere = vtkSphereSource.New();
             * sphere.SetRadius(1.0);
             * sphere.SetThetaResolution(18);
             * sphere.SetPhiResolution(18);*/

            // Transforme la géométrie en primitives graphiques (OpenGL dans notre cas)
            vtkPolyDataMapper map = vtkPolyDataMapper.New();

            map.SetInput(rdr.GetOutput());

            // L'acteur représente l'entitée géométrique.
            // Il permet de définir sa position, son orientation, sa couleur, etc.
            vtkActor aSphere = new vtkActor();

            aSphere.SetMapper(map);
            aSphere.GetProperty().SetColor(0.8, 0.8, 0.8); // color blue

            // Nous créons un renderer qui va faire le rendu de notre entitée.
            vtkRenderer ren1 = vtkRenderer.New();

            ren1.AddActor(aSphere);
            ren1.SetBackground(1, 1, 1); // background color white

            // Nous créons une fenêtre de rendu
            vtkRenderWindow renWin = vtkRenderWindow.New();

            renWin.AddRenderer(ren1);
            renWin.SetSize(300, 300);

            // Nous créons un interactor qui permet de bouger la caméra.
            vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor();

            iren.SetRenderWindow(renWin);

            // Nous lançons le rendu et l'interaction
            renWin.Render();
            iren.Start();


            ////// CLEANUP ///////
            rdr.Dispose();
            map.Dispose();
            aSphere.Dispose();
            ren1.Dispose();
            renWin.Dispose();
            iren.Dispose();
        }
Ejemplo n.º 4
0
        public static double CalculateVolumeFromStl(string fileName)
        {
            vtkSTLReader reader = vtkSTLReader.New();

            reader.SetFileName(fileName);
            vtkMassProperties property = vtkMassProperties.New();

            property.SetInputConnection(reader.GetOutputPort());
            property.Update();
            double volume = property.GetVolume();

            property.Dispose();
            reader.Dispose();
            return(volume);
        }