Part/Toponaming: align TopoShape::findSubShapesWithSharedVertex() to LS3
* added test for issue #15539 Signed-off-by: CalligaroV <vincenzo.calligaro@gmail.com>
This commit is contained in:
@@ -468,6 +468,64 @@ class PartTestRuledSurface(unittest.TestCase):
|
||||
self.assertEqual(len(same1), 2)
|
||||
self.assertEqual(len(same2), 2)
|
||||
|
||||
def testRuledSurfaceFromTwoObjectsWithSharedVertexs(self):
|
||||
"""Test reproducing issue #15539"""
|
||||
|
||||
# Arrange
|
||||
line = Part.makeLine(FreeCAD.Vector(0, 0, 50), FreeCAD.Vector(0, -50, 0))
|
||||
line1 = Part.makeLine(FreeCAD.Vector(0, 0, 50), FreeCAD.Vector(50, 0, 0))
|
||||
line2 = Part.makeLine(FreeCAD.Vector(0, 0, 0), FreeCAD.Vector(0, -50, 0))
|
||||
line3 = Part.makeLine(FreeCAD.Vector(0, 0, 0), FreeCAD.Vector(50, 0, 0))
|
||||
fea = self.Doc.addObject("Part::Feature")
|
||||
fea1 = self.Doc.addObject("Part::Feature")
|
||||
fea2 = self.Doc.addObject("Part::Feature")
|
||||
fea3 = self.Doc.addObject("Part::Feature")
|
||||
fea.Shape = line
|
||||
fea1.Shape = line1
|
||||
fea2.Shape = line2
|
||||
fea3.Shape = line3
|
||||
|
||||
# Defining all the surfaces generated by 2 lines with one common vertex
|
||||
ruled = self.Doc.addObject("Part::RuledSurface")
|
||||
ruled.Curve1 = fea
|
||||
ruled.Curve2 = fea1
|
||||
|
||||
ruled1 = self.Doc.addObject("Part::RuledSurface")
|
||||
ruled1.Curve1 = fea1
|
||||
ruled1.Curve2 = fea3
|
||||
|
||||
ruled2 = self.Doc.addObject("Part::RuledSurface")
|
||||
ruled2.Curve1 = fea2
|
||||
ruled2.Curve2 = fea3
|
||||
|
||||
ruled3 = self.Doc.addObject("Part::RuledSurface")
|
||||
ruled3.Curve1 = fea
|
||||
ruled3.Curve2 = fea2
|
||||
|
||||
# Act
|
||||
self.Doc.recompute()
|
||||
|
||||
# Assert
|
||||
same00 = getCoincidentVertexes(fea.Shape.Vertexes, ruled.Shape.Vertexes)
|
||||
same03 = getCoincidentVertexes(fea.Shape.Vertexes, ruled3.Shape.Vertexes)
|
||||
same10 = getCoincidentVertexes(fea1.Shape.Vertexes, ruled.Shape.Vertexes)
|
||||
same11 = getCoincidentVertexes(fea1.Shape.Vertexes, ruled1.Shape.Vertexes)
|
||||
same22 = getCoincidentVertexes(fea2.Shape.Vertexes, ruled2.Shape.Vertexes)
|
||||
same23 = getCoincidentVertexes(fea2.Shape.Vertexes, ruled3.Shape.Vertexes)
|
||||
same31 = getCoincidentVertexes(fea3.Shape.Vertexes, ruled1.Shape.Vertexes)
|
||||
same32 = getCoincidentVertexes(fea3.Shape.Vertexes, ruled2.Shape.Vertexes)
|
||||
|
||||
# BRepFill::Face() seems creating faces with 4 vertexes
|
||||
# Therefore, in this case, every face shares 3 vertexes (1 counted twice as coincident) with the lines that generate that face
|
||||
self.assertEqual(len(same00), 3)
|
||||
self.assertEqual(len(same03), 3)
|
||||
self.assertEqual(len(same10), 3)
|
||||
self.assertEqual(len(same11), 3)
|
||||
self.assertEqual(len(same22), 3)
|
||||
self.assertEqual(len(same23), 3)
|
||||
self.assertEqual(len(same31), 3)
|
||||
self.assertEqual(len(same32), 3)
|
||||
|
||||
def testRuledSurfaceFromOneObject(self):
|
||||
sketch = self.Doc.addObject('Sketcher::SketchObject', 'Sketch')
|
||||
sketch.Placement = FreeCAD.Placement(FreeCAD.Vector(0.000000, 0.000000, 0.000000), App.Rotation(0.707107, 0.000000, 0.000000, 0.707107))
|
||||
|
||||
Reference in New Issue
Block a user