Implement close for wires

This commit is contained in:
adam-urbanczyk
2021-03-31 18:59:57 +02:00
parent 650b2fff7c
commit 8e23195a34
2 changed files with 21 additions and 3 deletions

View File

@ -1404,8 +1404,7 @@ class Edge(Shape, Mixin1D):
rv: Union[Wire, Edge]
if not self.IsClosed():
e = Edge.makeLine(self.endPoint(), self.startPoint())
rv = Wire.assembleEdges((self, e))
rv = Wire.assembleEdges((self,)).close()
else:
rv = self
@ -1673,6 +1672,19 @@ class Wire(Shape, Mixin1D):
return curve, BRepAdaptor_HCompCurve(curve)
def close(self) -> "Wire":
"""
Close a Wire
"""
if not self.IsClosed():
e = Edge.makeLine(self.endPoint(), self.startPoint())
rv = Wire.combine((self, e))[0]
else:
rv = self
return rv
@classmethod
def combine(
cls: Type["Wire"], listOfWires: Iterable[Union["Wire", Edge]], tol: float = 1e-9

View File

@ -4476,7 +4476,7 @@ class TestCadQuery(BaseTest):
self.assertTrue(r2.solids().val().isValid())
self.assertEqual(r2.solids().size(), 2)
def testEdgeClose(self):
def testEdgeWireClose(self):
# test with edge
e0 = Edge.makeThreePointArc(Vector(0, 0, 0), Vector(1, 1, 0), Vector(0, 2, 0))
@ -4491,6 +4491,12 @@ class TestCadQuery(BaseTest):
self.assertTrue(e2.IsClosed())
self.assertEqual(type(e1), type(e2))
# test with already closed WIRE
w1 = Wire.makeCircle(1, Vector(), Vector(0, 0, 1))
self.assertTrue(w1.IsClosed())
w2 = w1.close()
self.assertTrue(w1 is w2)
def testSplitShape(self):
"""
Testing the Shape.split method.