0

Intersection of an stl object and plane3d

Anonymous 10 years ago 0
This discussion was imported from CodePlex

abuseukk wrote at 2013-02-05 13:35:

Hi guys,

I am trying to find the intersection points of GeometryModel3D and a plane. The model is STL file and loaded by the helix methods. I thought that I have all the triangles and with the implemented intersection of line and Plane3D i will find the points easily but that's not true. I don't know why I find so many points on the plane but not only the intersection points - What I mean is that Plane3D.LineIntersection(...) every time return some points but not null. If someone have an idea it will be grateful :) Thanks
MeshGeometry3D modelGeometry = (MeshGeometry3D)hitgeo.Geometry;

for (int i = 0; i < modelGeometry.TriangleIndices.Count; i=i+3)
{
    int index1 = modelGeometry.TriangleIndices[i];
    int index2 = modelGeometry.TriangleIndices[i+1];
    int index3 = modelGeometry.TriangleIndices[i+2];

    Point3D point1 = modelGeometry.Positions[index1];
    Point3D point2 = modelGeometry.Positions[index2];
    Point3D point3 = modelGeometry.Positions[index3];


    Point3D? intersection1 = p3d.LineIntersection(point1, point2);
    Point3D? intersection2 = p3d.LineIntersection(point1, point3);
    Point3D? intersection3 = p3d.LineIntersection(point2, point3);


    if(intersection1 != null)
    {
        IntersectionPoints.Add(intersection1);
    }
    if(intersection2 != null)
    {
        IntersectionPoints.Add(intersection2);
    }
    if(intersection3 != null)
    {
        IntersectionPoints.Add(intersection3);
    }
}

abuseukk wrote at 2013-02-07 09:50:

I found it ... the interesction is not line and plane its ray and plane, I had to check if the point is on the line :)

objo wrote at 2013-02-07 19:59:

Great! (For general use you may also need to account for transforms applied to your model)

Also see the contouring example in Source\Examples\ExampleBrowser\Examples\Contour