-## 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>
-##
+# Copyright (C) 2014-2023 CEA, EDF
+#
+# 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
+#
"""
TestFilletInteracting.py
from GeomAPI import *
from GeomDataAPI import *
from ModelAPI import *
+from SketchAPI import *
import math
import unittest
from salome.shaper import model
self.checkNbFeatures("SketchConstraintTangent", 0) # no tangencies should not be created
self.checkNbFeatures("SketchFillet", 1) # fillet feature should still exist. it should be wrong
- model.testNbSubShapes(self.mySketch, GeomAPI_Shape.FACE, [0])
- model.testNbSubShapes(self.mySketch, GeomAPI_Shape.EDGE, [2])
- model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [4])
+ # sketch is invalid, so, no results at all
+ model.testNbSubShapes(self.mySketch, GeomAPI_Shape.FACE, [])
+ model.testNbSubShapes(self.mySketch, GeomAPI_Shape.EDGE, [])
+ model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [])
# remove fillet for correct python dump
self.myDocument.removeFeature(aFillet.feature())
model.do()
self.checkDOF()
self.mySketch.setFillet(aSketchLineA.startPoint())
- self.myDOF += 2
+ self.myDOF += 1
model.do()
self.checkFillet()
self.checkDOF()
self.collectFeatures()
self.checkNbFeatures("SketchLine", 2)
self.checkNbFeatures("SketchArc", 1)
- self.checkNbFeatures("SketchConstraintCoincidence", 2)
+ self.checkNbFeatures("SketchConstraintCoincidence", 4) # Additionally 2 coincidences for apex with fillet objects
self.checkNbFeatures("SketchConstraintTangent", 2)
self.checkNbFeatures("SketchConstraintLength", 0) # Length constraint expected to be removed
+ self.checkNbFeatures("SketchConstraintDistance", 1) # Distance constraint should appear instead of Length
self.checkNbFeatures("SketchFillet", 0)
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.FACE, [0])
def test_fillet_with_distance(self):
""" Test 12. Fillet on two connected lines in case of Distance constraint applied
"""
- aSketchLineA = self.mySketch.addLine(10., 10., 20., 10.)
- aSketchLineB = self.mySketch.addLine(10., 10., 10., 20.)
- self.myDOF += 8
+ aSketchLineA = self.mySketch.addLine(20, 20, 70, 20)
+ aSketchLineB = self.mySketch.addLine(70, 20, 70, 53.16624790355412)
+ aSketchLineC = self.mySketch.addLine(70, 53.16624790355412, 20, 20)
+ self.myDOF += 12
+ model.do()
self.checkDOF()
- self.mySketch.setCoincident(aSketchLineA.startPoint(), aSketchLineB.startPoint())
- self.myDOF -= 2
+ # coincidences
+ self.mySketch.setCoincident(aSketchLineA.endPoint(), aSketchLineB.startPoint())
+ self.mySketch.setCoincident(aSketchLineB.endPoint(), aSketchLineC.startPoint())
+ self.mySketch.setCoincident(aSketchLineA.startPoint(), aSketchLineC.endPoint())
+ self.myDOF -= 6
model.do()
self.checkDOF()
- # third line to apply Distance constraints
- aSketchLineC = self.mySketch.addLine(10., 0., 20., 5.)
- self.myDOF += 4
- self.mySketch.setDistance(aSketchLineB.startPoint(), aSketchLineC.result(), 10.)
- self.mySketch.setDistance(aSketchLineB.endPoint(), aSketchLineC.result(), 5.)
+ # other constraints
+ self.mySketch.setHorizontal(aSketchLineA.result())
+ self.mySketch.setVertical(aSketchLineB.result())
self.myDOF -= 2
model.do()
self.checkDOF()
+ # construction point
+ aProjection = self.mySketch.addProjection(model.selection("VERTEX", "Origin"), False)
+ aSketchPoint = SketchAPI_Point(aProjection.createdFeature())
+ model.do()
+ # distances
+ self.mySketch.setLength(aSketchLineA.result(), 50)
+ self.mySketch.setDistance(aSketchLineA.startPoint(), aSketchLineC.startPoint(), 60, True)
+ self.mySketch.setHorizontalDistance(aSketchPoint.coordinates(), aSketchLineA.startPoint(), 20)
+ self.mySketch.setVerticalDistance(aSketchPoint.coordinates(), aSketchLineC.endPoint(), 20)
+ self.myDOF -= 4
+ model.do()
+ self.checkDOF()
+
self.mySketch.setFillet(aSketchLineA.startPoint())
- self.myDOF += 2 # Distance has been removed
+ self.myDOF += 1
model.do()
self.checkFillet()
self.checkDOF()
self.collectFeatures()
self.checkNbFeatures("SketchLine", 3)
self.checkNbFeatures("SketchArc", 1)
- self.checkNbFeatures("SketchConstraintCoincidence", 2)
+ self.checkNbFeatures("SketchConstraintCoincidence", 6) # Additionally 2 coincidences for apex with fillet objects
+ self.checkNbFeatures("SketchConstraintHorizontal", 1)
+ self.checkNbFeatures("SketchConstraintVertical", 1)
self.checkNbFeatures("SketchConstraintTangent", 2)
- self.checkNbFeatures("SketchConstraintDistance", 1) # only one Distance should be left
+ self.checkNbFeatures("SketchConstraintLength", 0) # Length translated to Distance
+ self.checkNbFeatures("SketchConstraintDistance", 2) # Length translated to Distance
+ self.checkNbFeatures("SketchConstraintDistanceHorizontal", 1)
+ self.checkNbFeatures("SketchConstraintDistanceVertical", 1)
self.checkNbFeatures("SketchFillet", 0)
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.FACE, [0])
model.testNbSubShapes(self.mySketch, GeomAPI_Shape.VERTEX, [6])
-if __name__ == '__main__':
- unittest.main()
+if __name__ == "__main__":
+ test_program = unittest.main(exit=False)
+ assert test_program.result.wasSuccessful(), "Test failed"