Salome HOME
0022767: [EDF] Construction of composite solids
[modules/geom.git] / src / GEOM_SWIG / GEOM_TestAll.py
index b74b8081640f0cbe76a37327f41e8a3f9fb242bc..6dafa5265f71f5458a4832b446206161a94a1e45 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2014  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
@@ -7,7 +7,7 @@
 # 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.
+# 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
@@ -19,6 +19,7 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
 
 #  GEOM GEOM_SWIG : binding of C++ omplementaion with Python
 #  File   : GEOM_usinggeom.py
@@ -102,6 +103,8 @@ def TestAll (geompy, math):
   Polyline = geompy.MakePolyline([p0, pz, py, p200])      #(List of GEOM_Object)->GEOM_Object
   Bezier   = geompy.MakeBezier([p0, pz, p200, px])        #(List of GEOM_Object)->GEOM_Object
   Interpol = geompy.MakeInterpol([px, py, p200, pxyz], True) #(List of GEOM_Object,Boolean)->GEOM_Object
+  InterpT1 = geompy.MakeInterpolWithTangents([px, py, pxyz], vx, vz) #(List of GO, GO, GO)->GEOM_Object
+  InterpT2 = geompy.MakeInterpolWithTangents([px, py, pxyz], vxy, vxyz) #(List of GO, GO, GO)->GEOM_Object
   Sketcher = geompy.MakeSketcher("Sketcher:F -100 -100:TT 250 -100:R 0:C 100 150:R 0:L 300:WW",
                                  [100,0,0, 1,1,1, -1,1,0]) #(String, List of Doubles)->GEOM_Object
 
@@ -109,8 +112,12 @@ def TestAll (geompy, math):
   sk = geompy.Sketcher3D()
   sk.addPointsAbsolute(0,0,0, 70,0,0)
   sk.addPointsRelative(0, 0, 130)
-  sk.addPointAnglesLength("OXY", 50, 0, 100)
-  sk.addPointAnglesLength("OXZ", 30, 80, 130)
+  sk.addPointRadiusAnglesRelative(100, 50, 0,"OXY")
+  sk.addPointRadiusAnglesRelative(130, 30, 80, "OXZ")
+  sk.addPointRadiusAnglesAbsolute(500, 60, 30,"OXY")
+  sk.addPointRadiusAngleHRelative(100, 50, 0,"OXY")
+  sk.addPointRadiusAngleHRelative(130, 30, 40, "OXZ")
+  sk.addPointRadiusAngleHAbsolute(800, 60, 30,"OXY")
   sk.close()
   Sketcher3d_1 = sk.wire()
 
@@ -140,18 +147,20 @@ def TestAll (geompy, math):
   tan_on_face = geompy.MakeTangentPlaneOnFace(tan_extrusion, 0.7, 0.5, 150)
 
   #Create base geometry 3D
-  Box      = geompy.MakeBoxTwoPnt(p0, p200)                   #(2 GEOM_Object)->GEOM_Object
-  Box1     = geompy.MakeBoxDXDYDZ(10, 20, 30)                 #(3 Doubles)->GEOM_Object
-  Box2     = geompy.MakeBox(10,20,30, 15,25,35)               #(6 Doubles)->GEOM_Object
-  Cylinder = geompy.MakeCylinder(p0, vz, radius1, height)     #(2 GEOM_Object, 2 Doubles)->GEOM_Object
-  Cyl1     = geompy.MakeCylinderRH(radius2, height)           #(2 Doubles)->GEOM_Object
-  Sphere   = geompy.MakeSpherePntR(p0, radius1)               #(GEOM_Object, Double)->GEOM_Object
-  Sphere1  = geompy.MakeSphereR(radius)                       #(Double)->GEOM_Object
-  Sphere2  = geompy.MakeSphere(50, 70, 30, radius)            #(4 Doubles)->GEOM_Object
-  Cone     = geompy.MakeCone(p0, vz, radius2, radius, height) #(2 GEOM_Object, 3 Doubles)->GEOM_Object
-  Cone1    = geompy.MakeConeR1R2H(radius1, radius, height)    #(3 Doubles)->GEOM_Object
-  Torus    = geompy.MakeTorus(p0, vz, radius2, radius)        #(2 GEOM_Object, 2 Doubles)->GEOM_Object
-  Torus1   = geompy.MakeTorusRR(radius2, radius1)             #(2 Doubles)->GEOM_Object
+  Box      = geompy.MakeBoxTwoPnt(p0, p200)                             #(2 GEOM_Object)->GEOM_Object
+  Box1     = geompy.MakeBoxDXDYDZ(10, 20, 30)                           #(3 Doubles)->GEOM_Object
+  Box2     = geompy.MakeBox(10,20,30, 15,25,35)                         #(6 Doubles)->GEOM_Object
+  Cylinder = geompy.MakeCylinder(p0, vz, radius1, height)               #(2 GEOM_Object, 2 Doubles)->GEOM_Object
+  Cyl1     = geompy.MakeCylinderRH(radius2, height)                     #(2 Doubles)->GEOM_Object
+  Cylinder1= geompy.MakeCylinderA(p0, vz, radius1, height, angle1)      #(2 GEOM_Object, 3 Doubles)->GEOM_Object
+  Cyl2     = geompy.MakeCylinderRHA(radius2, height, angle2)            #(3 Doubles)->GEOM_Object
+  Sphere   = geompy.MakeSpherePntR(p0, radius1)                         #(GEOM_Object, Double)->GEOM_Object
+  Sphere1  = geompy.MakeSphereR(radius)                                 #(Double)->GEOM_Object
+  Sphere2  = geompy.MakeSphere(50, 70, 30, radius)                      #(4 Doubles)->GEOM_Object
+  Cone     = geompy.MakeCone(p0, vz, radius2, radius, height)           #(2 GEOM_Object, 3 Doubles)->GEOM_Object
+  Cone1    = geompy.MakeConeR1R2H(radius1, radius, height)              #(3 Doubles)->GEOM_Object
+  Torus    = geompy.MakeTorus(p0, vz, radius2, radius)                  #(2 GEOM_Object, 2 Doubles)->GEOM_Object
+  Torus1   = geompy.MakeTorusRR(radius2, radius1)                       #(2 Doubles)->GEOM_Object
 
   #Boolean (Common, Cut, Fuse, Section)
   Common  = geompy.MakeBoolean(Box, Sphere, 1) #(2 GEOM_Object, Short)->GEOM_Object
@@ -169,6 +178,7 @@ def TestAll (geompy, math):
   Face2    = geompy.MakeFace(Sketcher, WantPlanarFace)
   Face3    = geompy.MakeFaceHW (100., 200., 1)       #(2 Doubles, 1 Int)->GEOM_Object
   Face4    = geompy.MakeFaceObjHW (vz, 200., 100.)   #(1 GEOM_Object, 2 Doubles)->GEOM_Object
+  Face5    = geompy.MakeFaceFromSurface(Face, Sketcher) #(2 GEOM_Objects)->GEOM_Object
   Disk     = geompy.MakeDiskPntVecR (p0, vz, radius) #(2 GEOM_Object, 1 Double)->GEOM_Object
   Disk2    = geompy.MakeDiskThreePnt(p0, p200, pz)   #(3 GEOM_Object)->GEOM_Object
   Disk3    = geompy.MakeDiskR(100., 1)               #(1 Doubles, 1 Int)->GEOM_Object
@@ -180,6 +190,15 @@ def TestAll (geompy, math):
                                prism1_faces[3], prism1_faces[4],
                                prism1_faces[5], prism1_faces[2]])
   Solid    = geompy.MakeSolid([Shell1])              #(List of GEOM_Object)->GEOM_Object
+  
+  Box1_translation = geompy.MakeTranslation(Box1, 10, 0, 0)
+  Box1_shell = geompy.SubShapeAllSorted(Box1, geompy.ShapeType["SHELL"])[0]
+  Box1_translation_shell = geompy.SubShapeAllSorted(Box1_translation, geompy.ShapeType["SHELL"])[0]
+  
+  Solid_from_shells = geompy.MakeSolidFromConnectedFaces([Box1_shell, Box1_translation_shell], 1) #(List of GEOM_Object, Boolean)->GEOM_Object
+  
+  # Create Isoline
+  Isoline = geompy.MakeIsoline(Face1, True, 0.5)     #(1 GEOM_Object, Boolean, Double)->GEOM_Object
 
   ShapeListCompound = []
   i = 0
@@ -204,7 +223,7 @@ def TestAll (geompy, math):
   Line3 = geompy.MakeLineTwoFaces(prism1_faces[0], prism1_faces[1]) #(2 GEOM_Object)->GEOM_Object
 
   #Create advanced objects
-  Copy       = geompy.MakeCopy(Box)                      #(GEOM_Object)->GEOM_Object
+  Copy             = geompy.MakeCopy(Box)                      #(GEOM_Object)->GEOM_Object
   Prism            = geompy.MakePrismVecH(Face, vz, 100.0)     #(2 GEOM_Object, Double)->GEOM_Object
   Prism2Ways       = geompy.MakePrismVecH2Ways(Face, vz, 10.0) #(2 GEOM_Object, Double)->GEOM_Object
   PrismTwoPnt      = geompy.MakePrism(Face2, p0, pxyz)         #(3 GEOM_Object)->GEOM_Object
@@ -214,9 +233,9 @@ def TestAll (geompy, math):
   Revolution       = geompy.MakeRevolution(Face, vz, angle2)   #
   Revolution2Ways  = geompy.MakeRevolution(Face, vz, angle1)   #
   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
+                                        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
 
   #Transform objects
   Translation = geompy.MakeTranslationTwoPoints(Box, px, pz)    #(3 GEOM_Object)->GEOM_Object
@@ -241,6 +260,10 @@ 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
   Orientation = geompy.ChangeOrientation(Box)
+  ProjOnWire  = geompy.MakeProjectionOnWire(p0, Wire)
+  ExtEdge     = geompy.ExtendEdge(Edge1, -0.3, 1.3)
+  ExtFace     = geompy.ExtendFace(Face5, -0.3, 1.3, -0.1, 1.1)
+  Surface     = geompy.MakeSurfaceFromFace(Face5)
 
   #IDList for Fillet/Chamfer
   prism_edges = geompy.ExtractShapes(Prism, geompy.ShapeType["EDGE"], True)
@@ -284,9 +307,10 @@ def TestAll (geompy, math):
   #Create Patterns
   MultiTrans1D = geompy.MakeMultiTranslation1D(Fillet, vz, step1, nbtimes1)
   MultiTrans2D = geompy.MakeMultiTranslation2D(Fillet, vz, step1, nbtimes1, vy, step2, nbtimes2)
-  #!!!!Angle In Degree!!!!
-  MultiRot1D   = geompy.MultiRotate1D(Chamfer, vx, nbtimes1)
-  MultiRot2D   = geompy.MultiRotate2D(Chamfer, vx, angle, nbtimes1, step1, nbtimes2)
+  MultiRot1Dt  = geompy.MultiRotate1DNbTimes(Chamfer, vx, nbtimes1)
+  MultiRot1Ds  = geompy.MultiRotate1DByStep(Chamfer, vx, math.pi/4., nbtimes1)
+  MultiRot2Dt  = geompy.MultiRotate2DNbTimes(Chamfer, vx, nbtimes1, step1, nbtimes2)
+  MultiRot2Ds  = geompy.MultiRotate2DByStep(Chamfer, vx, angle1, nbtimes1, step1, nbtimes2)
 
   #Create Informations objects
   CDG        = geompy.MakeCDG(Prism)               #(GEOM_Object)->GEOM_Object
@@ -339,6 +363,8 @@ def TestAll (geompy, math):
   id_Polyline = geompy.addToStudy(Polyline, "Polyline")
   id_Bezier   = geompy.addToStudy(Bezier,   "Bezier")
   id_Interpol = geompy.addToStudy(Interpol, "Interpol")
+  id_InterpT1 = geompy.addToStudy(InterpT1, "InterpT1")
+  id_InterpT2 = geompy.addToStudy(InterpT2, "InterpT2")
   id_Sketcher = geompy.addToStudy(Sketcher, "Sketcher")
 
   id_Sketcher3d_1 = geompy.addToStudy(Sketcher3d_1, "Sketcher 3D by interface")
@@ -358,6 +384,8 @@ def TestAll (geompy, math):
   id_Box2     = geompy.addToStudy(Box2,     "Box (10,20,30)-(15,25,35)")
   id_Cylinder = geompy.addToStudy(Cylinder, "Cylinder")
   id_Cyl1     = geompy.addToStudy(Cyl1,     "Cylinder RH")
+  id_Cylinder1= geompy.addToStudy(Cylinder1,"CylinderA")
+  id_Cyl2     = geompy.addToStudy(Cyl2,     "Cylinder RHA")
   id_Sphere   = geompy.addToStudy(Sphere,   "Sphere Pnt R")
   id_Sphere1  = geompy.addToStudy(Sphere1,  "Sphere R")
   id_Sphere2  = geompy.addToStudy(Sphere2,  "Sphere")
@@ -379,11 +407,14 @@ def TestAll (geompy, math):
   id_Face2    = geompy.addToStudy(Face2,    "Face from Sketcher")
   id_Face3    = geompy.addToStudy(Face3,    "Face Height Width")
   id_Face4    = geompy.addToStudy(Face4,    "Face Plane_HW")
+  id_Face5    = geompy.addToStudy(Face5,    "Face from surface and wire")
   id_Disk     = geompy.addToStudy(Disk,     "Disk PntVecR")
   id_Disk2    = geompy.addToStudy(Disk2,    "Disk Three Points")
   id_Disk3    = geompy.addToStudy(Disk3,    "Disk OXY Radius")
   id_Shell    = geompy.addToStudy(Shell,    "Shell")
 
+  id_Isoline  = geompy.addToStudy(Isoline,  "Isoline")
+
   id_p_on_face = geompy.addToStudy(p_on_face, "Vertex on Face (0.1, 0.8)")
   id_p_on_face2 = geompy.addToStudy(p_on_face2, "Vertex on Face at(0., 0., 0.)")
   id_p_on_face3 = geompy.addToStudy(p_on_face3, "Vertex inside Face")
@@ -391,6 +422,8 @@ def TestAll (geompy, math):
   id_Prism1   = geompy.addToStudy(Prism1,     "Prism by Two Pnt")
   id_Shell1   = geompy.addToStudy(Shell1,   "Shell from Prism1 faces")
   id_Solid    = geompy.addToStudy(Solid,    "Solid")
+  id_Solid1   = geompy.addToStudy(Solid_from_shells,   "Solid1")
+  
   id_Compound = geompy.addToStudy(Compound, "Compound")
 
   id_Plane2   = geompy.addToStudy(Plane2,   "Plane on Face")
@@ -408,22 +441,48 @@ def TestAll (geompy, math):
   id_Pipe       = geompy.addToStudy(Pipe,       "Pipe")
   id_Sewing     = geompy.addToStudy(Sewing,     "Sewing")
 
-  id_Translation = geompy.addToStudy(Translation, "Translation")
-  id_TranslVect  = geompy.addToStudy(TranslVect , "Translation along vector")
-  id_TranslVectD = geompy.addToStudy(TranslVectD, "Translation along vector with defined distance")
-  id_Rotation    = geompy.addToStudy(Rotation,    "Rotation")
-  id_RotatPnt    = geompy.addToStudy(RotatPnt,    "Rotation by three points")
-  id_Scale1      = geompy.addToStudy(Scale1,      "Scale1")
-  id_Scale2      = geompy.addToStudy(Scale2,      "Scale2")
-  id_Scale3      = geompy.addToStudy(Scale3,      "Scale3")
-  id_Scale4      = geompy.addToStudy(Scale4,      "Scale4")
-  id_Mirror      = geompy.addToStudy(Mirror,      "Mirror by Plane")
-  id_MirrorAxis  = geompy.addToStudy(MirrorAxis,  "Mirror by Axis")
-  id_MirrorPnt   = geompy.addToStudy(MirrorPnt,   "Mirror by Point")
-  id_Position    = geompy.addToStudy(Position,    "Positioned box")
-  id_Position2   = geompy.addToStudy(Position2,   "Positioned box along path")
-  id_Offset      = geompy.addToStudy(Offset,      "Offset")
-  id_Orientation = geompy.addToStudy(Orientation, "Orientation")
+  import salome_version
+  if int(salome_version.getXVersion(), 16) >= int('0x060600', 16):
+    [Face5, Face6] = geompy.SubShapes(Box, [31, 33])
+    [b1_e1, b1_e2, b1_e3, b1_e4] = geompy.SubShapes(Box, [12, 22, 25, 29])
+    [b2_e1, b2_e2, b2_e3, b2_e4] = geompy.SubShapes(Box, [ 8, 18, 26, 30])
+    Path1 = geompy.RestorePath(Box, Face5, Face6)
+    Path2 = geompy.RestorePathEdges(Box, [b1_e1, b1_e2, b1_e3, b1_e4], [b2_e1, b2_e2, b2_e3, b2_e4])
+
+    id_Base1      = geompy.addToStudyInFather(Box, Face5, "Base1")
+    id_Base2      = geompy.addToStudyInFather(Box, Face6, "Base2")
+    id_Base1e1    = geompy.addToStudyInFather(Box, b1_e1, "Base1 Edge1")
+    id_Base1e2    = geompy.addToStudyInFather(Box, b1_e2, "Base1 Edge2")
+    id_Base1e3    = geompy.addToStudyInFather(Box, b1_e3, "Base1 Edge3")
+    id_Base1e4    = geompy.addToStudyInFather(Box, b1_e4, "Base1 Edge4")
+    id_Base2e1    = geompy.addToStudyInFather(Box, b2_e1, "Base2 Edge1")
+    id_Base2e2    = geompy.addToStudyInFather(Box, b2_e2, "Base2 Edge2")
+    id_Base2e3    = geompy.addToStudyInFather(Box, b2_e3, "Base2 Edge3")
+    id_Base2e4    = geompy.addToStudyInFather(Box, b2_e4, "Base2 Edge4")
+    id_Path1      = geompy.addToStudy(Path1,      "Path1")
+    id_Path2      = geompy.addToStudy(Path2,      "Path2")
+    pass
+
+  id_Translation = geompy.addToStudy(Translation,   "Translation")
+  id_TranslVect  = geompy.addToStudy(TranslVect ,   "Translation along vector")
+  id_TranslVectD = geompy.addToStudy(TranslVectD,   "Translation along vector with defined distance")
+  id_Rotation    = geompy.addToStudy(Rotation,      "Rotation")
+  id_RotatPnt    = geompy.addToStudy(RotatPnt,      "Rotation by three points")
+  id_Scale1      = geompy.addToStudy(Scale1,        "Scale1")
+  id_Scale2      = geompy.addToStudy(Scale2,        "Scale2")
+  id_Scale3      = geompy.addToStudy(Scale3,        "Scale3")
+  id_Scale4      = geompy.addToStudy(Scale4,        "Scale4")
+  id_Mirror      = geompy.addToStudy(Mirror,        "Mirror by Plane")
+  id_MirrorAxis  = geompy.addToStudy(MirrorAxis,    "Mirror by Axis")
+  id_MirrorPnt   = geompy.addToStudy(MirrorPnt,     "Mirror by Point")
+  id_Position    = geompy.addToStudy(Position,      "Positioned box")
+  id_Position2   = geompy.addToStudy(Position2,     "Positioned box along path")
+  id_Offset      = geompy.addToStudy(Offset,        "Offset")
+  id_Orientation = geompy.addToStudy(Orientation,   "Orientation")
+  id_ProjOnWire  = geompy.addToStudy(ProjOnWire[1], "ProjOnWire")
+  id_ExtEdge     = geompy.addToStudy(ExtEdge,       "ExtendedEdge")
+  id_ExtFace     = geompy.addToStudy(ExtFace,       "ExtendedFace")
+  id_Surface     = geompy.addToStudy(Surface,       "Surface From Face")
 
   id_Fillet   = geompy.addToStudy(Fillet,   "Fillet")
   id_Fillet2  = geompy.addToStudy(Fillet2,  "Fillet2")
@@ -436,15 +495,17 @@ def TestAll (geompy, math):
 
   id_MultiTrans1D = geompy.addToStudy(MultiTrans1D, "MultiTrans1D")
   id_MultiTrans2D = geompy.addToStudy(MultiTrans2D, "MultiTrans2D")
-  id_MultiRot1D   = geompy.addToStudy(MultiRot1D,   "MultiRot1D")
-  id_MultiRot2D   = geompy.addToStudy(MultiRot2D,   "MultiRot2D")
+  id_MultiRot1Dt  = geompy.addToStudy(MultiRot1Dt,  "MultiRot1D NbTimes")
+  id_MultiRot1Ds  = geompy.addToStudy(MultiRot1Ds,  "MultiRot1D ByStep")
+  id_MultiRot2Dt  = geompy.addToStudy(MultiRot2Dt,  "MultiRot2D NbTimes")
+  id_MultiRot2Ds  = geompy.addToStudy(MultiRot2Ds,  "MultiRot2D ByStep")
 
   id_CDG       = geompy.addToStudy(CDG,       "CDG")
   id_Archimede = geompy.addToStudy(Archimede, "Archimede")
 
   id_Partition  = geompy.addToStudy(Partition, "Partition")
   id_Partition1 = geompy.addToStudy(Partition1, "Half Partition")
-
+  
   #Decompose objects
 
   # SubShape