ParallelDirSelector now filters for geomType() == "PLANE"

In certain circumstances this will be breaking, most commonly when using
DirectionNthSelector and there was previously a non-planar face in the
list. In this case eg. ">X[2]" will have to become ">X[1]".
This commit is contained in:
Marcus Boyd
2020-12-25 14:30:02 +10:30
parent 88714975ff
commit e19a05d023
3 changed files with 20 additions and 6 deletions

View File

@ -162,7 +162,12 @@ class TestCQSelectors(BaseTest):
self.assertNotEqual(c_curves.edges(), 0)
self.assertEqual(c_curves.edges(loose_selector).size(), 0)
# leave faces until I figure out if it should only be PLANE or all faces
# this has a Face that is not a PLANE
face_dir = c_curves.faces().val().normalAt(None)
self.assertNotEqual(c_curves.faces(), 0)
self.assertEqual(
c_curves.faces(ParallelDirSelector(face_dir, tolerance=10)).size(), 0
)
self.assertNotEqual(c.solids().size(), 0)
self.assertEqual(c.solids(loose_selector).size(), 0)
@ -291,6 +296,11 @@ class TestCQSelectors(BaseTest):
self.assertEqual(1, hole.size())
self.assertAlmostEqual(1, hole.val().radius())
# can we select a non-planar face?
hole_face = part.faces(sel(1, Vector(1, 0, 0)))
self.assertEqual(hole_face.size(), 1)
self.assertNotEqual(hole_face.val().geomType(), "PLANE")
# select solids
box0 = Workplane().box(1, 1, 1, centered=(True, True, True))
box1 = Workplane("XY", origin=(10, 10, 10)).box(