[vtkusers] what's wrong in my code

Ali Habib ali.mahmoud.habib at gmail.com
Sat Jun 26 10:58:42 EDT 2010


 static vtkBoxWidget boxWidget;

        static vtkPlanes planes;

       static  vtkLODActor selectActor;

        static void Main(string[] args)
        {
            //Create a mace out of filters.

            vtkSphereSource sphere = new vtkSphereSource();
            vtkConeSource cone = new vtkConeSource();
            vtkGlyph3D glyph = new vtkGlyph3D();
            glyph.SetInputConnection(sphere.GetOutputPort());
            glyph.SetSource(cone.GetOutput());
            glyph.SetVectorModeToUseNormal();
            glyph.SetScaleModeToScaleByVector();
            glyph.SetScaleFactor(0.25);

            //The sphere and spikes are appended into a single polydata.
This just makes things
            //simpler to manage.
            vtkAppendPolyData apd = new vtkAppendPolyData();
            apd.AddInput(glyph.GetOutput());
            apd.AddInput(sphere.GetOutput());
            vtkPolyDataMapper maceMapper = new vtkPolyDataMapper();
            maceMapper.SetInputConnection(apd.GetOutputPort());
            vtkLODActor maceActor = new vtkLODActor();
            maceActor.SetMapper(maceMapper);
            maceActor.VisibilityOn();


            //This portion of the code clips the mace with the vtkPlanes
implicit function.
            //The clipped region is colored green.
             planes = new vtkPlanes();
            vtkClipPolyData clipper = new vtkClipPolyData();
            clipper.SetInputConnection(apd.GetOutputPort());
            clipper.SetClipFunction(planes);
            clipper.InsideOutOn();
            vtkPolyDataMapper selectMapper = new vtkPolyDataMapper();
            selectMapper.SetInputConnection(clipper.GetOutputPort());
             selectActor = new vtkLODActor();
            selectActor.SetMapper(selectMapper);
            selectActor.GetProperty().SetColor(0, 1, 0);
            selectActor.VisibilityOff();
            selectActor.SetScale(1.01, 1.01, 1.01);

            //Create the RenderWindow, Renderer and both Actors

            vtkRenderer ren1 = new vtkRenderer();
            vtkRenderWindow renWin = new vtkRenderWindow();
            renWin.AddRenderer(ren1);

            vtkRenderWindowInteractor iren = new
vtkRenderWindowInteractor();
            iren.SetRenderWindow(renWin);

            //The SetInteractor method is how 3D widgets are associated with
the render
            //window interactor. Internally, SetInteractor sets up a bunch
of callbacks
            //using the Command/Observer mechanism (AddObserver()).
            boxWidget = new vtkBoxWidget();
            boxWidget.SetInteractor(iren);
            boxWidget.SetPlaceFactor(1.25);

            ren1.AddActor(maceActor);
            ren1.AddActor(selectActor);

            //Add the actors to the renderer, set the background and size

            ren1.SetBackground(0.1, 0.2, 0.4);
            renWin.SetSize(300, 300);





            //Place the interactor initially. The input to a 3D widget is
used to
            //initially position and scale the widget. The
EndInteractionEvent is
            //observed which invokes the SelectPolygons callback.
            boxWidget.SetInput(glyph.GetOutput());
            boxWidget.PlaceWidget();
            iren.AddObserver((uint)vtk.EventIds.EndInteractionEvent, new
vtk.vtkDotNetCallback(SelectPolygons));
            iren.Initialize();







        }
        public static void SelectPolygons(vtk.vtkObject obj, uint eventId,
Object data, IntPtr clientdata)
        {
               boxWidget.GetPlanes( planes);
               selectActor.VisibilityOn();
        }

On Sat, Jun 26, 2010 at 5:57 PM, Ali Habib <ali.mahmoud.habib at gmail.com>wrote:

> this is the complete code
>
>         static vtkBoxWidget boxWidget;
>
>         static vtkPlanes planes;
>
>        static  vtkLODActor selectActor;
>
>         static void Main(string[] args)
>         {
>             //Create a mace out of filters.
>
>             vtkSphereSource sphere = new vtkSphereSource();
>             vtkConeSource cone = new vtkConeSource();
>             vtkGlyph3D glyph = new vtkGlyph3D();
>             glyph.SetInputConnection(sphere.GetOutputPort());
>             glyph.SetSource(cone.GetOutput());
>             glyph.SetVectorModeToUseNormal();
>             glyph.SetScaleModeToScaleByVector();
>             glyph.SetScaleFactor(0.25);
>
>             //The sphere and spikes are appended into a single polydata.
> This just makes things
>             //simpler to manage.
>             vtkAppendPolyData apd = new vtkAppendPolyData();
>             apd.AddInput(glyph.GetOutput());
>             apd.AddInput(sphere.GetOutput());
>             vtkPolyDataMapper maceMapper = new vtkPolyDataMapper();
>             maceMapper.SetInputConnection(apd.GetOutputPort());
>             vtkLODActor maceActor = new vtkLODActor();
>             maceActor.SetMapper(maceMapper);
>             maceActor.VisibilityOn();
>
>
>             //This portion of the code clips the mace with the vtkPlanes
> implicit function.
>             //The clipped region is colored green.
>              planes = new vtkPlanes();
>             vtkClipPolyData clipper = new vtkClipPolyData();
>             clipper.SetInputConnection(apd.GetOutputPort());
>             clipper.SetClipFunction(planes);
>             clipper.InsideOutOn();
>             vtkPolyDataMapper selectMapper = new vtkPolyDataMapper();
>             selectMapper.SetInputConnection(clipper.GetOutputPort());
>              selectActor = new vtkLODActor();
>             selectActor.SetMapper(selectMapper);
>             selectActor.GetProperty().SetColor(0, 1, 0);
>             selectActor.VisibilityOff();
>             selectActor.SetScale(1.01, 1.01, 1.01);
>
>             //Create the RenderWindow, Renderer and both Actors
>
>             vtkRenderer ren1 = new vtkRenderer();
>             vtkRenderWindow renWin = new vtkRenderWindow();
>             renWin.AddRenderer(ren1);
>
>             vtkRenderWindowInteractor iren = new
> vtkRenderWindowInteractor();
>             iren.SetRenderWindow(renWin);
>
>             //The SetInteractor method is how 3D widgets are associated
> with the render
>             //window interactor. Internally, SetInteractor sets up a bunch
> of callbacks
>             //using the Command/Observer mechanism (AddObserver()).
>             boxWidget = new vtkBoxWidget();
>             boxWidget.SetInteractor(iren);
>             boxWidget.SetPlaceFactor(1.25);
>
>             ren1.AddActor(maceActor);
>             ren1.AddActor(selectActor);
>
>             //Add the actors to the renderer, set the background and size
>
>             ren1.SetBackground(0.1, 0.2, 0.4);
>             renWin.SetSize(300, 300);
>
>
>
>
>
>             //Place the interactor initially. The input to a 3D widget is
> used to
>             //initially position and scale the widget. The
> EndInteractionEvent is
>             //observed which invokes the SelectPolygons callback.
>             boxWidget.SetInput(glyph.GetOutput());
>             boxWidget.PlaceWidget();
>             iren.AddObserver((uint)vtk.EventIds.EndInteractionEvent, new
> vtk.vtkDotNetCallback(SelectPolygons));
>             iren.Initialize();
>
>
>
>
>
>
>
>         }
>         public static void SelectPolygons(vtk.vtkObject obj, uint eventId,
> Object data, IntPtr clientdata)
>         {
>                boxWidget.GetPlanes( planes);
>                selectActor.VisibilityOn();
>         }
>
> Best regards
>
> On Sat, Jun 26, 2010 at 1:21 PM, Ali Habib <ali.mahmoud.habib at gmail.com>wrote:
>
>> I wante to cut part using vtk box widget , but the pipeline always fail
>> any suggestion please
>>
>> the code is
>>
>>         static vtkBoxWidget boxWidget;
>>
>>         static vtkPlanes planes;
>>
>>        static  vtkLODActor selectActor;
>>
>>         static void Main(string[] args)
>>         {
>>             //Create a mace out of filters.
>>
>>             vtkSphereSource sphere = new vtkSphereSource();
>>             vtkConeSource cone = new vtkConeSource();
>>             vtkGlyph3D glyph = new vtkGlyph3D();
>>             glyph.SetInputConnection(sphere.GetOutputPort());
>>             glyph.SetSource(cone.GetOutput());
>>             glyph.SetVectorModeToUseNormal();
>>             glyph.SetScaleModeToScaleByVector();
>>             glyph.SetScaleFactor(0.25);
>>
>>             //The sphere and spikes are appended into a single polydata.
>> This just makes things
>>             //simpler to manage.
>>             vtkAppendPolyData apd = new vtkAppendPolyData();
>>             apd.AddInput(glyph.GetOutput());
>>             apd.AddInput(sphere.GetOutput());
>>             vtkPolyDataMapper maceMapper = new vtkPolyDataMapper();
>>             maceMapper.SetInputConnection(apd.GetOutputPort());
>>             vtkLODActor maceActor = new vtkLODActor();
>>             maceActor.SetMapper(maceMapper);
>>             maceActor.VisibilityOn();
>>
>>
>>             //This portion of the code clips the mace with the vtkPlanes
>> implicit function.
>>             //The clipped region is colored green.
>>
>>
>>             //Create the RenderWindow, Renderer and both Actors
>>
>>             vtkRenderer ren1 = new vtkRenderer();
>>             vtkRenderWindow renWin = new vtkRenderWindow();
>>             renWin.AddRenderer(ren1);
>>
>>             vtkRenderWindowInteractor iren = new
>> vtkRenderWindowInteractor();
>>             iren.SetRenderWindow(renWin);
>>
>>             //The SetInteractor method is how 3D widgets are associated
>> with the render
>>             //window interactor. Internally, SetInteractor sets up a bunch
>> of callbacks
>>             //using the Command/Observer mechanism (AddObserver()).
>>             boxWidget = new vtkBoxWidget();
>>             boxWidget.SetInteractor(iren);
>>             boxWidget.SetPlaceFactor(1.25);
>>
>>             ren1.AddActor(maceActor);
>>             ren1.AddActor(selectActor);
>>
>>             //Add the actors to the renderer, set the background and size
>>
>>             ren1.SetBackground(0.1, 0.2, 0.4);
>>             renWin.SetSize(300, 300);
>>
>>
>>
>>
>>
>>             //Place the interactor initially. The input to a 3D widget is
>> used to
>>             //initially position and scale the widget. The
>> EndInteractionEvent is
>>             //observed which invokes the SelectPolygons callback.
>>             boxWidget.SetInput(glyph.GetOutput());
>>             boxWidget.PlaceWidget();
>>             iren.AddObserver((uint)vtk.EventIds.EndInteractionEvent, new
>> vtk.vtkDotNetCallback(SelectPolygons));
>>             iren.Initialize();
>>
>>
>>
>>
>>
>>
>>
>>         }
>>         public static void SelectPolygons(vtk.vtkObject obj, uint eventId,
>> Object data, IntPtr clientdata)
>>         {
>>                boxWidget.GetPlanes( planes);
>>                selectActor.VisibilityOn();
>>         }
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100626/5cbeac79/attachment.htm>


More information about the vtkusers mailing list