diff --git a/cadquery/selectors.py b/cadquery/selectors.py index 1cd66f3e..23196bbe 100644 --- a/cadquery/selectors.py +++ b/cadquery/selectors.py @@ -641,7 +641,7 @@ def _makeExpressionGrammar(atom): def delta_callback(res): items = res.asList()[0][::2] - reduce(SubtractSelector,items) + return reduce(SubtractSelector,items) def not_callback(res): right = res.asList()[0][1] diff --git a/tests/TestCQSelectors.py b/tests/TestCQSelectors.py index fdb20cf6..19ed26a1 100644 --- a/tests/TestCQSelectors.py +++ b/tests/TestCQSelectors.py @@ -354,6 +354,16 @@ class TestCQSelectors(BaseTest): self.assertEqual(2, len(fl)) el = c.edges(S("|X") + S("|Y")).vals() self.assertEqual(8, len(el)) + + # test using extended string syntax + fl = c.faces(">Z | X & >Y").vals() + self.assertEqual(2, len(v)) def testSubtractSelector(self): c = CQ(makeUnitCube()) @@ -366,6 +376,10 @@ class TestCQSelectors(BaseTest): # test the subtract operator fl = c.faces(S("#Z") - S(">X")).vals() self.assertEqual(3, len(fl)) + + # test using extended string syntax + fl = c.faces("#Z ^ >X").vals() + self.assertEqual(3, len(fl)) def testInverseSelector(self): c = CQ(makeUnitCube()) @@ -382,6 +396,12 @@ class TestCQSelectors(BaseTest): self.assertEqual(5, len(fl)) el = c.faces('>Z').edges(-S('>X')).vals() self.assertEqual(3, len(el)) + + # test using extended string syntax + fl = c.faces('~>Z').vals() + self.assertEqual(5, len(fl)) + el = c.faces('>Z').edges('~>X').vals() + self.assertEqual(3, len(el)) def testFaceCount(self): c = CQ(makeUnitCube())