Updated docstring for DirectionNthSelector and extended the related test-case

This commit is contained in:
adam-urbanczyk 2016-06-05 21:26:26 +02:00
parent 6678d3f546
commit 9df0e39133
2 changed files with 9 additions and 22 deletions

View File

@ -325,29 +325,12 @@ class DirectionMinMaxSelector(Selector):
class DirectionNthSelector(ParallelDirSelector):
"""
Selects objects closest or farthest in the specified direction
Used for faces, points, and edges
Selects nth object parallel (or normal) to the specified direction
Used for faces and edges
Applicability:
All object types. for a vertex, its point is used. for all other kinds
of objects, the center of mass of the object is used.
You can use the string shortcuts >(X|Y|Z) or <(X|Y|Z) if you want to
select based on a cardinal direction.
For example this::
CQ(aCube).faces ( DirectionMinMaxSelector((0,0,1),True )
Means to select the face having the center of mass farthest in the positive z direction,
and is the same as:
CQ(aCube).faces( ">Z" )
Future Enhancements:
provide a nicer way to select in arbitrary directions. IE, a bit more code could
allow '>(0,0,1)' to work.
Linear Edges
Planar Faces
"""
def __init__(self, vector, n, directionMax=True, tolerance=0.0001):
self.direction = vector

View File

@ -174,6 +174,10 @@ class TestCQSelectors(BaseTest):
val = c.faces(selectors.DirectionNthSelector(Vector(1,0,0),1)).val()
self.assertAlmostEqual(val.Center().x,-1.5)
#2nd face with inversed selection vector
val = c.faces(selectors.DirectionNthSelector(Vector(-1,0,0),1)).val()
self.assertAlmostEqual(val.Center().x,1.5)
#2nd last face
val = c.faces(selectors.DirectionNthSelector(Vector(1,0,0),-2)).val()
self.assertAlmostEqual(val.Center().x,1.5)
@ -182,7 +186,7 @@ class TestCQSelectors(BaseTest):
val = c.faces(selectors.DirectionNthSelector(Vector(1,0,0),-1)).val()
self.assertAlmostEqual(val.Center().x,2.5)
#check if the selected face if normal to given Vector
#check if the selected face if normal to the specified Vector
self.assertAlmostEqual(val.normalAt().cross(Vector(1,0,0)).Length,0.0)
def testNearestTo(self):