+## Copyright (C) 2014-2017 CEA/DEN, EDF R&D
+##
+## This library is free software; you can redistribute it and/or
+## modify it under the terms of the GNU Lesser General Public
+## License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+##
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+## Lesser General Public License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public
+## License along with this library; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+## See http:##www.salome-platform.org/ or
+## email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+##
+
"""
TestFilletInteracting.py
Unit test of SketchPlugin_Fillet feature.
__updated__ = "2017-03-06"
def isArcLineSmooth(theArc, theLine, theTolerance):
- aCenter = geomDataAPI_Point2D(theArc.attribute("ArcCenter"))
- aDistance = distancePointLine(aCenter, theLine)
+ aCenter = geomDataAPI_Point2D(theArc.attribute("center_point"))
+ aDistance = model.distancePointLine(aCenter, theLine)
aRadius = arcRadius(theArc)
return math.fabs(aRadius - aDistance) < theTolerance
def isArcArcSmooth(theArc1, theArc2, theTolerance):
- aCenter1 = geomDataAPI_Point2D(theArc1.attribute("ArcCenter"))
- aCenter2 = geomDataAPI_Point2D(theArc2.attribute("ArcCenter"))
- aDistance = distancePointPoint(aCenter1, aCenter2)
+ aCenter1 = geomDataAPI_Point2D(theArc1.attribute("center_point"))
+ aCenter2 = geomDataAPI_Point2D(theArc2.attribute("center_point"))
+ aDistance = model.distancePointPoint(aCenter1, aCenter2)
aRadius1 = arcRadius(theArc1)
aRadius2 = arcRadius(theArc2)
aRadSum = aRadius1 + aRadius2
return math.fabs(aDistance - aRadSum) < theTolerance or math.fabs(aDistance - aRadDiff) < theTolerance
def arcRadius(theArc):
- aCenter = geomDataAPI_Point2D(theArc.attribute("ArcCenter"))
- aStart = geomDataAPI_Point2D(theArc.attribute("ArcStartPoint"))
- return distancePointPoint(aCenter, aStart)
-
-def distancePointPoint(thePoint1, thePoint2):
- return math.hypot(thePoint1.x() - thePoint2.x(), thePoint1.y() - thePoint2.y())
-
-def distancePointLine(thePoint, theLine):
- aLineStart = geomDataAPI_Point2D(theLine.attribute("StartPoint"))
- aLineEnd = geomDataAPI_Point2D(theLine.attribute("EndPoint"))
- aLength = distancePointPoint(aLineStart, aLineEnd)
- aDir1x, aDir1y = aLineEnd.x() - aLineStart.x(), aLineEnd.y() - aLineStart.y()
- aDir2x, aDir2y = thePoint.x() - aLineStart.x(), thePoint.y() - aLineStart.y()
- aCross = aDir1x * aDir2y - aDir1y * aDir2x
- return math.fabs(aCross) / aLength
+ aCenter = geomDataAPI_Point2D(theArc.attribute("center_point"))
+ aStart = geomDataAPI_Point2D(theArc.attribute("start_point"))
+ return model.distancePointPoint(aCenter, aStart)
def tearDown(self):
model.end()
- assert(model.checkPythonDump())
+ self.assertTrue(model.checkPythonDump())
model.reset()
return [aFeatureA, aFeatureB]
- @unittest.expectedFailure
def test_fillet_two_lines(self):
""" Test 1. Fillet on two connected lines
"""
# remove fillet for correct python dump
self.myDocument.removeFeature(aFillet.feature())
- @unittest.expectedFailure
def test_fillet_arc_line(self):
""" Test 3. Fillet on connected arc and line
"""
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.EDGE, [3])
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [6])
- @unittest.expectedFailure
def test_fillet_two_arcs(self):
""" Test 4. Fillet on two connected arcs
"""
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.EDGE, [3])
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [6])
- @unittest.expectedFailure
def test_fillet_with_horizontal_vertical(self):
""" Test 5. Fillet on two connected lines in case of Horizontal or Vertical constraints applied
"""
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.EDGE, [3])
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [6])
- @unittest.expectedFailure
def test_fillet_with_orthogonal(self):
""" Test 6. Fillet on two connected lines in case of Perpendicular constraint applied
"""
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.EDGE, [3])
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [6])
- @unittest.expectedFailure
def test_fillet_with_parallel(self):
""" Test 7. Fillet on two connected lines in case of Parallel constraint applied
"""
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.EDGE, [4])
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [8])
- @unittest.expectedFailure
def test_fillet_with_equal_lines(self):
""" Test 8. Fillet on two connected lines in case of Equal constraint applied
"""
model.do()
self.checkDOF()
self.mySketch.setFillet(aSketchLineA.startPoint())
- self.myDOF += 2
+ self.myDOF += 2 # Equal has been removed
model.do()
self.checkFillet()
self.checkDOF()
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.EDGE, [3])
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [6])
- @unittest.expectedFailure
def test_fillet_with_equal_arcs(self):
""" Test 9. Fillet on two connected arcs in case of Equal constraint applied
"""
model.do()
self.checkDOF()
self.mySketch.setFillet(aSketchArc1.endPoint())
- self.myDOF += 1
+ self.myDOF += 2 # Equal has been removed
model.do()
self.checkFillet()
self.checkDOF()
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.EDGE, [3])
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [6])
- @unittest.expectedFailure
def test_fillet_with_length(self):
""" Test 10. Fillet on two connected lines in case of Length constraint applied
"""
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.EDGE, [3])
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [6])
- @unittest.expectedFailure
def test_fillet_with_radius(self):
""" Test 11. Fillet on connected arc and line in case of Radius constraint is applied to arc
"""
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.EDGE, [3])
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [6])
- @unittest.expectedFailure
def test_fillet_with_distance(self):
""" Test 12. Fillet on two connected lines in case of Distance constraint applied
"""
model.do()
self.checkDOF()
self.mySketch.setFillet(aSketchLineA.startPoint())
- self.myDOF += 1
+ self.myDOF += 2 # Distance has been removed
model.do()
self.checkFillet()
self.checkDOF()
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.EDGE, [4])
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [8])
- @unittest.expectedFailure
def test_fillet_with_fixed_point(self):
""" Test 13. Fillet on two connected lines in case of Fixed constraint applied to the fillet point
"""
model.do()
self.checkDOF()
self.mySketch.setFillet(aSketchLineA.startPoint())
- self.myDOF += 1
+ self.myDOF += 3 # Fixed constraint has been removed
model.do()
self.checkFillet()
self.checkDOF()
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.EDGE, [3])
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [6])
- @unittest.expectedFailure
def test_fillet_with_fixed_line(self):
""" Test 14. Fillet on two connected lines in case of Fixed constraint applied to one of lines
"""
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.EDGE, [3])
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [6])
- @unittest.expectedFailure
def test_fillet_with_angle(self):
""" Test 15. Fillet on two connected lines in case of Perpendicular constraint applied
"""
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [6])
-# TODO: Remove unittest.expectedFailure if the Tangency in PlaneGCS will be updated
if __name__ == '__main__':
unittest.main()