Mesh: [skip ci] add unit test for self-intersection

This commit is contained in:
wmayer
2021-10-13 17:29:18 +02:00
parent 925e115c93
commit c0445e5094

View File

@@ -4,7 +4,10 @@
# Copyright (c) 2007 Jürgen Riegel <juergen.riegel@web.de>
# LGPL
import FreeCAD, os, sys, unittest, Mesh
import os
import sys
import io
import FreeCAD, unittest, Mesh
from FreeCAD import Base
import time, tempfile, math
# http://python-kurs.eu/threads.php
@@ -223,6 +226,51 @@ class MeshGeoTestCases(unittest.TestCase):
res=f1.intersect(f2)
self.assertTrue(len(res) == 0)
def testSelfIntersection(self):
s = b"""solid Simple
facet normal 0.0e0 0.0e0 1.0e1
outer loop
vertex 0.0e1 0.0e1 1.0e1
vertex 0.0e1 +1.0e1 1.0e1
vertex +1.0e1 0.0e1 1.0e1
endloop
endfacet
facet normal 0.0e0 0.0e0 1.0e1
outer loop
vertex 0.0e1 +1.0e1 1.0e1
vertex +1.0e1 0.0e1 1.0e1
vertex 1.0e1 1.0e1 1.0e1
endloop
endfacet
facet normal 0.0e0 0.0e0 1.0e1
outer loop
vertex 0.0e1 0.0e1 1.0e1
vertex 0.0e1 +1.0e1 1.0e1
vertex -1.0e1 1.0e1 1.0e1
endloop
endfacet
facet normal 0.0e0 0.0e0 1.0e1
outer loop
vertex 0.0e1 0.0e1 1.0e1
vertex +1.0e1 0.0e1 1.0e1
vertex +1.0e1 -1.0e1 1.0e1
endloop
endfacet
facet normal 0.0e0 0.0e0 1.0e1
outer loop
vertex 0.6e1 0.8e1 1.0e1
vertex +1.6e1 0.8e1 1.0e1
vertex +0.6e1 1.8e1 1.0e1
endloop
endfacet
endsolid Simple"""
mesh = Mesh.Mesh()
data = io.BytesIO(s)
mesh.read(Stream=data, Format="AST")
self.assertTrue(mesh.hasSelfIntersections())
class PivyTestCases(unittest.TestCase):
def setUp(self):
# set up a planar face with 2 triangles