From 875b64a63939a8ed769b0ea74631c53244710865 Mon Sep 17 00:00:00 2001 From: adam-urbanczyk Date: Mon, 23 May 2016 22:01:05 +0200 Subject: [PATCH] Started working on nth selector Implementing using ordered dict --- cadquery/selectors.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/cadquery/selectors.py b/cadquery/selectors.py index be07d7b..246db30 100644 --- a/cadquery/selectors.py +++ b/cadquery/selectors.py @@ -306,12 +306,20 @@ class DirectionMinMaxSelector(Selector): # pnt = tShape.Center() #return pnt.dot(self.vector) + # import OrderedDict + from collections import OrderedDict + #make and distance to object dict + objectDict = {distance(el) : el for el in objectList} + #transform it into an ordered dict + objectDict = OrderedDict(sorted(objectDict.items(), + key=lambda x: x[0])) + # find out the max/min distance if self.directionMax: - d = max(map(distance, objectList)) + d = objectDict.keys()[-1] else: - d = min(map(distance, objectList)) - + d = objectDict.keys()[0] + # return all objects at the max/min distance (within a tolerance) return filter(lambda o: abs(d - distance(o)) < self.TOLERANCE, objectList)