[vtkusers] [ActiViz] Attempted to read or write protected memory. Hold Reference?
Julien Jomier
julien.jomier at kitware.com
Fri Jul 18 04:00:06 EDT 2014
This is not an ActiViz problem. Your sample code doesn't work in C++
either. The main reason is that your points are coplanar and the
vtkSurfaceReconstructionFilter fails to return a surface. If you change
your first line from:
double[] p0 = new double[] { 4, 4, 0 };
to
double[] p0 = new double[] { 4, 4, 1 };
then it should work.
Julien
On 18/07/2014 05:14, ferluduena wrote:
> Hi! I'm trying to port my working code on c++ to C#, but i cant get it to
> work.
>
> It compiles but i get this error :"Attempted to read or write protected
> memory. This is often an indication that other memory is corrupt."
>
> VTK is trying to acces an out of bounds array location.
>
> I've been reading a lot, and the most logical explanation i got was that as
> C# is managed, it might be that C# is deleting something that VTK will need
> to use later. Some people talk about "Holding Managed references" and also
> the importance of sometimes using the Dispose() function.
>
> I tried a lot of things, but i just cant figure it out.
>
> Hope someone can help! and Thanks in advance!
>
> This is my code:
>
> using System;
> using System.Collections.Generic;
> using System.ComponentModel;
> using System.Data;
> using System.Drawing;
> using System.Linq;
> using System.Text;
> using System.Threading.Tasks;
> using System.Windows.Forms;
> using Kitware.VTK;
>
> namespace Prueba3D
> {
> public partial class Form1 : Form
> {
> vtkPolyData polydata;
> vtkPoints points;
> vtkSurfaceReconstructionFilter surf;
> vtkPolyDataMapper Mapper;
> vtkContourFilter cf;
> vtkActor Actor;
> vtkRenderWindow RenderWindow;
> vtkRenderer Renderer;
> public Form1()
> {
> InitializeComponent();
> }
>
> private void renderWindowControl1_Load(object sender, EventArgs e)
> {
> //Generate some points
> //Z=0
> double[] p0 = new double[] { 4, 4, 0 };
> double[] p1 = new double[] { 3, 3, 0 };
> double[] p2 = new double[] { 3, 4, 0 };
> double[] p3 = new double[] { 3, 5, 0 };
> double[] p4 = new double[] { 4, 3, 0 };
> double[] p5 = new double[] { 4, 5, 0 };
> double[] p6 = new double[] { 5, 3, 0 };
> double[] p7 = new double[] { 5, 4, 0 };
>
> // Create a vtkPoints object and store the points in it
> points = vtkPoints.New();
> points.InsertNextPoint(p0[0], p0[1], p0[2]);
> points.InsertNextPoint(p1[0], p1[1], p1[2]);
> points.InsertNextPoint(p2[0], p2[1], p2[2]);
> points.InsertNextPoint(p3[0], p3[1], p3[2]);
> points.InsertNextPoint(p4[0], p4[1], p4[2]);
> points.InsertNextPoint(p5[0], p5[1], p5[2]);
> points.InsertNextPoint(p6[0], p6[1], p6[2]);
> points.InsertNextPoint(p7[0], p7[1], p7[2]);
>
> polydata = vtkPolyData.New();
> polydata.SetPoints(points);
>
>
> surf = vtkSurfaceReconstructionFilter.New();
> surf.SetInput(polydata);
>
>
> // mapper
> Mapper = vtkPolyDataMapper.New();
> Mapper.ScalarVisibilityOff();
> cf = vtkContourFilter.New();
> cf.SetInputConnection(surf.GetOutputPort());
> cf.SetValue(0, 0.0);
> Mapper.SetInputConnection(cf.GetOutputPort());
> // actor
> Actor = vtkActor.New();
> Actor.SetMapper(Mapper);
> // get a reference to the renderwindow of our
> renderWindowControl1
>
> RenderWindow = renderWindowControl1.RenderWindow;
> // get a reference to the renderer
> Renderer = RenderWindow.GetRenderers().GetFirstRenderer();
> // set background color
> Renderer.SetBackground(0.2, 0.3, 0.4);
> // add actor to the renderer
> Renderer.AddActor(Actor);
>
> // ensure all actors are visible (in this example not
> necessarely needed,
> // but in case more than one actor needs to be shown it might be
> a good idea)
>
> Renderer.ResetCamera();
> }
> }
> }
>
>
>
>
> --
> View this message in context: http://vtk.1045678.n5.nabble.com/ActiViz-Attempted-to-read-or-write-protected-memory-Hold-Reference-tp5727902.html
> Sent from the VTK - Users mailing list archive at Nabble.com.
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers
>
More information about the vtkusers
mailing list