diff --git a/cadquery/occ_impl/shapes.py b/cadquery/occ_impl/shapes.py index 4df95882..7429078c 100644 --- a/cadquery/occ_impl/shapes.py +++ b/cadquery/occ_impl/shapes.py @@ -1214,6 +1214,8 @@ class Solid(Shape, Mixin3D): wants to make an infinitely thin shell for a real FreeCADPart. """ # the True flag requests building a solid instead of a shell. + if len(listOfWire) < 2: + raise ValueError("More than one wire is required") loft_builder = BRepOffsetAPI_ThruSections(True, ruled) for w in listOfWire: diff --git a/tests/TestCadQuery.py b/tests/TestCadQuery.py index df89de8e..644c242c 100644 --- a/tests/TestCadQuery.py +++ b/tests/TestCadQuery.py @@ -259,6 +259,15 @@ class TestCadQuery(BaseTest): # the resulting loft had a split on the side, not sure why really, i expected only 3 faces self.assertEqual(7, s.faces().size()) + def testLoftWithOneWireRaisesValueError(self): + s = Workplane("XY").circle(5) + try: + s.loft() + self.assertFail() + except ValueError as e: + self.assertEqual(str(e), "More than one wire is required") + + def testLoftCombine(self): """ test combining a lof with another feature @@ -2050,4 +2059,4 @@ class TestCadQuery(BaseTest): # find solid should return a compund of two solids s = r.findSolid() self.assertEqual(len(s.Solids()),2) - self.assertTrue(isinstance(s,Compound)) \ No newline at end of file + self.assertTrue(isinstance(s,Compound))