Dessia-tech / volmdlr

A python VOLume MoDeLeR computations-oriented with STEP support for import/export
GNU Lesser General Public License v2.1
26 stars 8 forks source link

Mesh3D.remove_degenerate_triangles() -> flat triangle not taken into account #1350

Open MackJoly opened 3 months ago

MackJoly commented 3 months ago

Those are my points aligned: point1: Point3D(-0.6205590209960937, 0.349411376953125, 0.17962226867675782) point2: Point3D(-0.6205590209960937, 0.349411376953125, 0.407595458984375) point3: Point3D(-0.6205590209960937, 0.349411376953125, 0.384592529296875)

MackJoly commented 3 months ago

Another possiblity is to put a try except: def to_triangles3d(self): """ Export the mesh faces as Triangle3D objects.

    :return: The triangles comosing the mesh.
    :rtype: list[Triangle3D]
    """
    # pylint: disable=import-outside-toplevel, cyclic-import
    from volmdlr.faces import Triangle3D

    triangles3d = []
    for vertex1, vertex2, vertex3 in self.remove_degenerate_triangles(tol=1e-6).triangles_vertices():
        point1 = volmdlr.Point3D(*vertex1)
        point2 = volmdlr.Point3D(*vertex2)
        point3 = volmdlr.Point3D(*vertex3)

        try:
            triangles3d.append(Triangle3D(point1, point2, point3))
        except ZeroDivisionError:
            continue

    return triangles3d