Salome HOME
updated copyright message
[modules/geom.git] / src / GEOM_SWIG / GEOM_TestAll.py
index 53e597c6c959e678380d758452046646de4447ab..a53e8ccc9354f87a1e9f002e5e0ecd2ac57b447c 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2023  CEA/DEN, EDF R&D, OPEN CASCADE
 #
 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -21,7 +21,7 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-#  GEOM GEOM_SWIG : binding of C++ omplementaion with Python
+#  GEOM GEOM_SWIG : binding of C++ implementation with Python
 #  File   : GEOM_usinggeom.py
 #  Author : Damien COQUERET, Open CASCADE
 #  Module : GEOM
@@ -235,12 +235,18 @@ def TestAll (geompy, math):
   PrismTwoPnt2Ways = geompy.MakePrism2Ways(Face2, p0, pxyz)    #(3 GEOM_Object)->GEOM_Object
   PrismDXDYDZ      = geompy.MakePrismDXDYDZ(Face2, 10, 20, 100)#(2 GEOM_Object, Double)->GEOM_Object
   PrismDXDYDZ2Ways = geompy.MakePrismDXDYDZ2Ways(Face, 30, -20, 200)#(2 GEOM_Object, Double)->GEOM_Object
-  Revolution       = geompy.MakeRevolution(Face, vz, angle2)   #
-  Revolution2Ways  = geompy.MakeRevolution(Face, vz, angle1)   #
+  Revolution       = geompy.MakeRevolution(Face, vxy, angle2)      #(2 GEOM_Object, Double)->GEOM_Object
+  Revolution2Ways  = geompy.MakeRevolution2Ways(Face, vxy, angle1) #(2 GEOM_Object, Double)->GEOM_Object
   Filling          = geompy.MakeFilling(Compound, mindeg, maxdeg,
                                         tol2d, tol3d, nbiter)  #(GEOM_Object, 4 Doubles, Short)->GEOM_Object
   Pipe             = geompy.MakePipe(Wire, Edge)               #(2 GEOM_Object)->GEOM_Object
   Sewing           = geompy.MakeSewing([Face, S], precision)   #(List Of GEOM_Object, Double)->GEOM_Object
+  ThickSolid       = geompy.MakeCopy(Box)
+  faces            = geompy.SubShapeAllSortedCentres(Box, geompy.ShapeType["FACE"])
+  shell            = geompy.MakeShell([faces[0], faces[1], faces[2]])
+  faceIDs          = geompy.SubShapeAllSortedCentresIDs(ThickSolid, geompy.ShapeType["FACE"])
+  ThickShell       = geompy.MakeThickSolid(shell, 50)          #(GEOM_Object, Double)->GEOM_Object
+  geompy.Thicken(ThickSolid, 50, [faceIDs[0], faceIDs[1]])     #(GEOM_Object) modification
   Copy             = geompy.MakeCopy(Box)                      #(GEOM_Object)->GEOM_Object
 
   #Transform objects
@@ -266,6 +272,7 @@ def TestAll (geompy, math):
   Position2   = geompy.PositionAlongPath(Box, Arc, 0.5, 1, 0)  #(2 GEOM_Object, 1 Double, 2 Bool)->GEOM_Object
   Offset      = geompy.MakeOffset(Box, 10.)          #(GEOM_Object, Double)->GEOM_Object
   ProjOnWire  = geompy.MakeProjectionOnWire(p0, Wire)
+  ProjOnCyl   = geompy.MakeProjectionOnCylinder(Wire, 100)
   Orientation = geompy.ChangeOrientation(Box)
   ExtEdge     = geompy.ExtendEdge(Edge1, -0.3, 1.3)
   ExtFace     = geompy.ExtendFace(Face5, -0.3, 1.3, -0.1, 1.1)
@@ -280,7 +287,7 @@ def TestAll (geompy, math):
 
     sse_id = geompy.GetSubShapeID(Prism, sse)
     if sse_id != eid:
-      print "Error: GetSubShape() or GetSubShapeID() has failed!"
+      print("Error: GetSubShape() or GetSubShapeID() has failed!")
 
   IDlist_e = []
   IDlist_e.append(geompy.GetSubShapeID(Prism, prism_edges[0]))
@@ -318,15 +325,15 @@ def TestAll (geompy, math):
   MultiRot2Dt  = geompy.MultiRotate2DNbTimes(Chamfer, vx, nbtimes1, step1, nbtimes2)
   MultiRot2Ds  = geompy.MultiRotate2DByStep(Chamfer, vx, angle1, nbtimes1, step1, nbtimes2)
 
-  #Create Informations objects
+  #Create Information objects
   CDG        = geompy.MakeCDG(Prism)               #(GEOM_Object)->GEOM_Object
   Archimede  = geompy.Archimede(Box, weight, waterdensity,
                                 meshingdeflection) #(GEOM_Object, 3 Doubles)->GEOM_Object
   mindist = geompy.MinDistanceComponents(TranslVect, Mirror) #(2 GEOM_Object)->4 Doubles
-  print "Minumal distance between TranslVect and Mirror is", mindist[0],
-  print "by components:", mindist[1], ",", mindist[2], ",", mindist[3]
+  print("Minumal distance between TranslVect and Mirror is", mindist[0], end=' ')
+  print("by components:", mindist[1], ",", mindist[2], ",", mindist[3])
   CheckShape = geompy.CheckShape(Prism)            #(GEOM_Object)->Boolean
-  print "CheckShape(Prism) = ", CheckShape
+  print("CheckShape(Prism) = ", CheckShape)
 
   #Partition objects
   Partition  = geompy.MakePartition([Box], [Plane]) #(2 Lists Of GEOM_Object)->GEOM_Object
@@ -437,6 +444,9 @@ def TestAll (geompy, math):
   id_Plane2   = geompy.addToStudy(Plane2,   "Plane on Face")
 
   id_Copy       = geompy.addToStudy(Copy,       "Copy")
+  id_ThickShell = geompy.addToStudy(ThickShell, "ThickShell")
+  id_ThickSolid = geompy.addToStudy(ThickSolid, "ThickSolid")
+
   id_Prism            = geompy.addToStudy(Prism,            "Prism")
   id_Prism2Ways       = geompy.addToStudy(Prism2Ways,       "Prism2Ways")
   id_PrismTwoPnt      = geompy.addToStudy(PrismTwoPnt,      "PrismTwoPnt")
@@ -488,6 +498,7 @@ def TestAll (geompy, math):
   id_Offset      = geompy.addToStudy(Offset,        "Offset")
   id_Orientation = geompy.addToStudy(Orientation,   "Orientation")
   id_ProjOnWire  = geompy.addToStudy(ProjOnWire[1], "ProjOnWire")
+  id_ProjOnCyl   = geompy.addToStudy(ProjOnCyl,     "ProjOnCyl")
   id_ExtEdge     = geompy.addToStudy(ExtEdge,       "ExtendedEdge")
   id_ExtFace     = geompy.addToStudy(ExtFace,       "ExtendedFace")
   id_Surface     = geompy.addToStudy(Surface,       "Surface From Face")
@@ -528,11 +539,11 @@ def TestAll (geompy, math):
 
   # GetExistingSubObjects
   SubObjsAll = geompy.GetExistingSubObjects(Box, True)
-  print "For now, Box has the following created sub-objects:", SubObjsAll
+  print("For now, Box has the following created sub-objects:", SubObjsAll)
 
   # GetGroups
   SubGrpsAll = geompy.GetGroups(Box)
-  print "For now, Box has the following created groups:", SubGrpsAll
+  print("For now, Box has the following created groups:", SubGrpsAll)
 
   # SubShapeAll
   SubEdgeList = geompy.SubShapeAll(SubFace, geompy.ShapeType["EDGE"])
@@ -543,21 +554,21 @@ def TestAll (geompy, math):
 
   # SubShapeAllIDs
   SubEdgeIDsList = geompy.SubShapeAllIDs(SubFace, geompy.ShapeType["EDGE"])
-  print "IDs of edges of SubFace:", SubEdgeIDsList, "(unsorted)"
+  print("IDs of edges of SubFace:", SubEdgeIDsList, "(unsorted)")
   group = geompy.CreateGroup(SubFace, geompy.ShapeType["EDGE"])
   geompy.UnionIDs(group, SubEdgeIDsList)
   geompy.addToStudyInFather(SubFace, group, "Group of all edges")
 
   # SubShapeAllSortedCentresIDs
   SubEdgeIDsList = geompy.SubShapeAllSortedCentresIDs(SubFace, geompy.ShapeType["EDGE"])
-  print "IDs of edges of SubFace:", SubEdgeIDsList, "(sorted)"
+  print("IDs of edges of SubFace:", SubEdgeIDsList, "(sorted)")
 
   # GetSubShape and GetSubShapeID
   for ind in SubEdgeIDsList:
     edge = geompy.GetSubShape(SubFace, [ind])
     ind_e = geompy.GetSubShapeID(SubFace, edge)
     if ind_e != ind:
-      print "Error in GetSubShape or GetSubShapeID"
+      print("Error in GetSubShape or GetSubShapeID")
 
   # RestoreSubShapes
   geompy.RestoreSubShapes(Copy)
@@ -573,5 +584,31 @@ def TestAll (geompy, math):
   geompy.GetSubShapeEdgeSorted(Sketcher3d_1, p2, "OrderedEdges")
   geompy.GetSubShapeEdgeSorted(Sketcher3d_2, p3, "OrderedEdges")
 
-
-  print "DONE"
+  # GetSubShapesWithTolerance
+  geompy.GetSubShapesWithTolerance(Box, GEOM.FACE, GEOM.CC_GT, 1.e-8, "gt")
+  geompy.GetSubShapesWithTolerance(Box, GEOM.FACE, GEOM.CC_GE, 1.e-7, "ge")
+  geompy.GetSubShapesWithTolerance(Box, GEOM.FACE, GEOM.CC_LT, 2.e-7, "lt")
+  geompy.GetSubShapesWithTolerance(Box, GEOM.FACE, GEOM.CC_LE, 1.e-7, "le")
+
+  # MakeExtraction
+  geompy.MakeExtraction(Box, [13], "Ext_no_face")
+  geompy.MakeExtraction(Box, [18], "Ext_no_edge")
+  geompy.MakeExtraction(Box, [16], "Ext_no_vertex")
+
+  # CurvatureOnFace
+  Cylinder_1 = geompy.MakeCylinderRH(100, 50, 'Cylinder_r100_h150')
+  [Face_1,Face_2,Face_3] = geompy.ExtractShapes(Cylinder_1, geompy.ShapeType["FACE"], True, "Face")
+  curvature_1 = geompy.CurvatureOnFace(Face_2, px, vy, 'curvature_cyl_px_vy')
+  assert(abs(geompy.BasicProperties(curvature_1)[0] - 100) < 1e-07)
+  curvature_zero = geompy.CurvatureOnFace(Face_2, px, vz)
+  assert(geompy.MeasuOp.GetErrorCode() == "ZERO_CURVATURE")
+  assert(not curvature_zero)
+  isExcept = False
+  try:
+    # p0 is on cylinder axis, projection should fail
+    geompy.CurvatureOnFace(Face_2, p0, vy)
+  except:
+    isExcept = True
+  assert(isExcept)
+
+  print("DONE")