Salome HOME
Copyright update 2022
[modules/geom.git] / src / GEOM_SWIG / geomBuilder.py
index 90646df4ba6169c5af160556f3ca80b3896c7cd2..5dbc1d202cb8aa211adf408876c15c8fe6696ea3 100644 (file)
@@ -1,5 +1,5 @@
 #  -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2022  CEA/DEN, EDF R&D, OPEN CASCADE
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
 ##   @}
 ##   @defgroup l2_measure       Using measurement tools
 ##   @defgroup l2_field         Field on Geometry
+##   @defgroup l2_testing       Testing
 
 ## @}
 
@@ -732,8 +733,6 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
               GEOM._objref_GEOM_Gen.__init__(self, *args)
               self.myMaxNbSubShapesAllowed = 0 # auto-publishing is disabled by default
               self.myBuilder = None
-              self.father    = None
-
               self.BasicOp  = None
               self.CurvesOp = None
               self.PrimOp   = None
@@ -747,6 +746,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
               self.BlocksOp = None
               self.GroupOp  = None
               self.FieldOp  = None
+              self.TestOp   = None
             pass
 
         ## Process object publication in the study, as follows:
@@ -835,18 +835,12 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
         def init_geom(self):
             self.myStudy = salome.myStudy
             self.myBuilder = self.myStudy.NewBuilder()
-            self.father = self.myStudy.FindComponent("GEOM")
-            notebook.myStudy = salome.myStudy
-            if self.father is None:
-                self.father = self.myBuilder.NewComponent("GEOM")
-                A1 = self.myBuilder.FindOrCreateAttribute(self.father, "AttributeName")
-                FName = A1._narrow(SALOMEDS.AttributeName)
-                FName.SetValue("Geometry")
-                A2 = self.myBuilder.FindOrCreateAttribute(self.father, "AttributePixMap")
-                aPixmap = A2._narrow(SALOMEDS.AttributePixMap)
-                aPixmap.SetPixMap("ICON_OBJBROWSER_Geometry")
-                self.myBuilder.DefineComponentInstance(self.father,self)
-                pass
+
+            # load data from the study file, if necessary
+            component = self.myStudy.FindComponent("GEOM")
+            if component:
+                self.myBuilder.LoadWith(component, self)
+
             self.BasicOp  = self.GetIBasicOperations    ()
             self.CurvesOp = self.GetICurvesOperations   ()
             self.PrimOp   = self.GetI3DPrimOperations   ()
@@ -860,14 +854,9 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
             self.BlocksOp = self.GetIBlocksOperations   ()
             self.GroupOp  = self.GetIGroupOperations    ()
             self.FieldOp  = self.GetIFieldOperations    ()
+            self.TestOp   = self.GetITestOperations     ()
 
-            # set GEOM as root in the use case tree
-            self.myUseCaseBuilder = self.myStudy.GetUseCaseBuilder()
-            self.myUseCaseBuilder.SetRootCurrent()
-            self.myUseCaseBuilder.Append(self.father)
-
-            # load data from the study file, if necessary
-            self.myBuilder.LoadWith(self.father, self)
+            notebook.myStudy = self.myStudy
             pass
 
         def GetPluginOperations(self, libraryName):
@@ -1772,7 +1761,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
         ## Create a plane, passing through the three given points
         #  @param thePnt1 First of three points, defining the plane.
         #  @param thePnt2 Second of three points, defining the plane.
-        #  @param thePnt3 Fird of three points, defining the plane.
+        #  @param thePnt3 Third of three points, defining the plane.
         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
         #  @param theName Object name; when specified, this parameter is used
         #         for result publication in the study. Otherwise, if automatic
@@ -1789,7 +1778,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
             Parameters:
                 thePnt1 First of three points, defining the plane.
                 thePnt2 Second of three points, defining the plane.
-                thePnt3 Fird of three points, defining the plane.
+                thePnt3 Third of three points, defining the plane.
                 theTrimSize Half size of a side of quadrangle face, representing the plane.
                 theName Object name; when specified, this parameter is used
                         for result publication in the study. Otherwise, if automatic
@@ -4367,7 +4356,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
         #  @param theBase Base shape to be extruded.
         #  @param thePath Path shape to extrude the base shape along it.
         #  @param theVec Vector defines a constant binormal direction to keep the
-        #                same angle beetween the direction and the sections
+        #                same angle between the direction and the sections
         #                along the sweep surface.
         #  @param IsGenerateGroups flag that tells if it is necessary to
         #         create groups. It is equal to False by default.
@@ -4396,7 +4385,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
                 theBase Base shape to be extruded.
                 thePath Path shape to extrude the base shape along it.
                 theVec Vector defines a constant binormal direction to keep the
-                       same angle beetween the direction and the sections
+                       same angle between the direction and the sections
                        along the sweep surface.
                 IsGenerateGroups flag that tells if it is necessary to
                                  create groups. It is equal to False by default.
@@ -5671,9 +5660,9 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
         #  @param theShape Shape to find sub-shapes of.
         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
         #  @param theTopLeftPoint Point, specifying top left corner of a quadrangle
-        #  @param theTopRigthPoint Point, specifying top right corner of a quadrangle
+        #  @param theTopRightPoint Point, specifying top right corner of a quadrangle
         #  @param theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
-        #  @param theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
+        #  @param theBottomRightPoint Point, specifying bottom right corner of a quadrangle
         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
         #  @param theName Object name; when specified, this parameter is used
         #         for result publication in the study. Otherwise, if automatic
@@ -5684,8 +5673,8 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
         #  @ref swig_GetShapesOnQuadrangle "Example"
         @ManageTransactions("ShapesOp")
         def GetShapesOnQuadrangle(self, theShape, theShapeType,
-                                  theTopLeftPoint, theTopRigthPoint,
-                                  theBottomLeftPoint, theBottomRigthPoint, theState, theName=None):
+                                  theTopLeftPoint, theTopRightPoint,
+                                  theBottomLeftPoint, theBottomRightPoint, theState, theName=None):
             """
             Find in theShape all sub-shapes of type theShapeType, situated relatively
             the specified quadrangle by the certain way, defined through theState parameter.
@@ -5694,9 +5683,9 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
                 theShape Shape to find sub-shapes of.
                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
                 theTopLeftPoint Point, specifying top left corner of a quadrangle
-                theTopRigthPoint Point, specifying top right corner of a quadrangle
+                theTopRightPoint Point, specifying top right corner of a quadrangle
                 theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
-                theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
+                theBottomRightPoint Point, specifying bottom right corner of a quadrangle
                 theState The state of the sub-shapes to find (see GEOM::shape_state)
                 theName Object name; when specified, this parameter is used
                         for result publication in the study. Otherwise, if automatic
@@ -5707,8 +5696,8 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
             """
             # Example: see GEOM_TestOthers.py
             aList = self.ShapesOp.GetShapesOnQuadrangle(theShape, theShapeType,
-                                                        theTopLeftPoint, theTopRigthPoint,
-                                                        theBottomLeftPoint, theBottomRigthPoint, theState)
+                                                        theTopLeftPoint, theTopRightPoint,
+                                                        theBottomLeftPoint, theBottomRightPoint, theState)
             RaiseIfFailed("GetShapesOnQuadrangle", self.ShapesOp)
             self._autoPublish(aList, theName, "shapeOnQuadrangle")
             return aList
@@ -5718,9 +5707,9 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
         #  @param theShape Shape to find sub-shapes of.
         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
         #  @param theTopLeftPoint Point, specifying top left corner of a quadrangle
-        #  @param theTopRigthPoint Point, specifying top right corner of a quadrangle
+        #  @param theTopRightPoint Point, specifying top right corner of a quadrangle
         #  @param theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
-        #  @param theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
+        #  @param theBottomRightPoint Point, specifying bottom right corner of a quadrangle
         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
         #
         #  @return List of all found sub-shapes indices.
@@ -5728,8 +5717,8 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
         #  @ref swig_GetShapesOnQuadrangleIDs "Example"
         @ManageTransactions("ShapesOp")
         def GetShapesOnQuadrangleIDs(self, theShape, theShapeType,
-                                     theTopLeftPoint, theTopRigthPoint,
-                                     theBottomLeftPoint, theBottomRigthPoint, theState):
+                                     theTopLeftPoint, theTopRightPoint,
+                                     theBottomLeftPoint, theBottomRightPoint, theState):
             """
             Find in theShape all sub-shapes of type theShapeType, situated relatively
             the specified quadrangle by the certain way, defined through theState parameter.
@@ -5738,9 +5727,9 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
                 theShape Shape to find sub-shapes of.
                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
                 theTopLeftPoint Point, specifying top left corner of a quadrangle
-                theTopRigthPoint Point, specifying top right corner of a quadrangle
+                theTopRightPoint Point, specifying top right corner of a quadrangle
                 theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
-                theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
+                theBottomRightPoint Point, specifying bottom right corner of a quadrangle
                 theState The state of the sub-shapes to find (see GEOM::shape_state)
 
             Returns:
@@ -5749,8 +5738,8 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
 
             # Example: see GEOM_TestOthers.py
             aList = self.ShapesOp.GetShapesOnQuadrangleIDs(theShape, theShapeType,
-                                                           theTopLeftPoint, theTopRigthPoint,
-                                                           theBottomLeftPoint, theBottomRigthPoint, theState)
+                                                           theTopLeftPoint, theTopRightPoint,
+                                                           theBottomLeftPoint, theBottomRightPoint, theState)
             RaiseIfFailed("GetShapesOnQuadrangleIDs", self.ShapesOp)
             return aList
 
@@ -6038,6 +6027,38 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
             self._autoPublish(anObj, theName, "inplace")
             return anObj
 
+        ## A sort of GetInPlace functionality, returning IDs of sub-shapes.
+        #  For each sub-shape ID of @a theShapeWhat return a list of corresponding sub-shape
+        #  IDs of @a theShapeWhere.
+        #  For example, if theShapeWhat is a box and theShapeWhere is this box cut into 
+        #  two parts by a plane, then the result can be as this: 
+        #    len( result_list ) = 35,
+        #    result_list[ 1 ] = [ 2, 36 ], which means that the box  (ID 1) turned into two
+        #  solids with IDs 2 and 36 within theShapeWhere
+        #
+        #  @param theShapeWhere Shape to find sub-shapes of.
+        #  @param theShapeWhat Shape, specifying what to find.
+        #  @return List of lists of sub-shape IDS of theShapeWhere.
+        def GetInPlaceMap(self, theShapeWhere, theShapeWhat):
+            """
+            A sort of GetInPlace functionality, returning IDs of sub-shapes.
+            For each sub-shape ID of @a theShapeWhat return a list of corresponding sub-shape
+            IDs of @a theShapeWhere.
+            For example, if theShapeWhat is a box and theShapeWhere is this box cut into 
+            two parts by a plane, then the result can be as this: 
+              len( result_list ) = 35,
+              result_list[ 1 ] = [ 2, 36 ], which means that the box (ID 1) turned into two
+            solids with IDs 2 and 36 within theShapeWhere
+
+            Parameters:
+                theShapeWhere Shape to find sub-shapes of.
+                theShapeWhat Shape, specifying what to find.
+
+            Returns:
+                List of lists of sub-shape IDS of theShapeWhere.
+            """
+            return self.ShapesOp.GetInPlaceMap(theShapeWhere, theShapeWhat)
+
         ## Get sub-shape of theShapeWhere, which is
         #  equal to \a theShapeWhat.
         #  @param theShapeWhere Shape to find sub-shape of.
@@ -10515,7 +10536,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
             Parameters:
                 theInit Shape to remove material from. It must be a solid or a compound made of a single solid.
                 theBase Closed edge or wire defining the base shape to be extruded.
-                theH Prism dimension along the normal  to theBase
+                theH Prism dimension along the normal to theBase
                 theAngle Draft angle in degrees.
                 theInvert If true material changes the direction.
                 theName Object name; when specified, this parameter is used
@@ -10555,7 +10576,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
             Parameters:
                 theInit Shape to add material to. It must be a solid or a compound made of a single solid.
                 theBase Closed edge or wire defining the base shape to be extruded.
-                theH Prism dimension along the normal  to theBase
+                theH Prism dimension along the normal to theBase
                 theAngle Draft angle in degrees.
                 theInvert If true material changes the direction.
                 theName Object name; when specified, this parameter is used
@@ -11293,9 +11314,10 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
             self._autoPublish(anObj, theName, "centerOfMass")
             return anObj
 
-        ## Get a vertex sub-shape by index depended with orientation.
+        ## Get a vertex sub-shape by index.
         #  @param theShape Shape to find sub-shape.
         #  @param theIndex Index to find vertex by this index (starting from zero)
+        #  @param theUseOri To consider edge/wire orientation or not
         #  @param theName Object name; when specified, this parameter is used
         #         for result publication in the study. Otherwise, if automatic
         #         publication is switched on, default value is used for result name.
@@ -11304,13 +11326,14 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
         #
         #  @ref tui_measurement_tools_page "Example"
         @ManageTransactions("MeasuOp")
-        def GetVertexByIndex(self, theShape, theIndex, theName=None):
+        def GetVertexByIndex(self, theShape, theIndex, theUseOri=True, theName=None):
             """
-            Get a vertex sub-shape by index depended with orientation.
+            Get a vertex sub-shape by index.
 
             Parameters:
                 theShape Shape to find sub-shape.
                 theIndex Index to find vertex by this index (starting from zero)
+                theUseOri To consider edge/wire orientation or not
                 theName Object name; when specified, this parameter is used
                         for result publication in the study. Otherwise, if automatic
                         publication is switched on, default value is used for result name.
@@ -11319,7 +11342,9 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
                 New GEOM.GEOM_Object, containing the created vertex.
             """
             # Example: see GEOM_TestMeasures.py
-            anObj = self.MeasuOp.GetVertexByIndex(theShape, theIndex)
+            if isinstance( theUseOri, str ): # theUseOri was inserted before theName
+                theUseOri, theName = True, theUseOri
+            anObj = self.MeasuOp.GetVertexByIndex(theShape, theIndex, theUseOri)
             RaiseIfFailed("GetVertexByIndex", self.MeasuOp)
             self._autoPublish(anObj, theName, "vertex")
             return anObj
@@ -11348,7 +11373,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
             """
             # Example: see GEOM_TestMeasures.py
             # note: auto-publishing is done in self.GetVertexByIndex()
-            return self.GetVertexByIndex(theShape, 0, theName)
+            return self.GetVertexByIndex(theShape, 0, True, theName)
 
         ## Get the last vertex of wire/edge depended orientation.
         #  @param theShape Shape to find last vertex.
@@ -11375,7 +11400,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
             # Example: see GEOM_TestMeasures.py
             nb_vert =  self.NumberOfSubShapes(theShape, self.ShapeType["VERTEX"])
             # note: auto-publishing is done in self.GetVertexByIndex()
-            return self.GetVertexByIndex(theShape, (nb_vert-1), theName)
+            return self.GetVertexByIndex(theShape, (nb_vert-1), True, theName)
 
         ## Get a normale to the given face. If the point is not given,
         #  the normale is calculated at the center of mass.
@@ -11540,7 +11565,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
 
         ## Detect self-intersections of the given shape with algorithm based on mesh intersections.
         #  @param theShape Shape to check.
-        #  @param theDeflection Linear deflection coefficient that specifies quality of tesselation:
+        #  @param theDeflection Linear deflection coefficient that specifies quality of tessellation:
         #         - if \a theDeflection <= 0, default deflection 0.001 is used
         #  @param theTolerance Specifies a distance between sub-shapes used for detecting gaps:
         #         - if \a theTolerance <= 0, algorithm detects intersections (default behavior)
@@ -11555,7 +11580,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
 
             Parameters:
                 theShape Shape to check.
-                theDeflection Linear deflection coefficient that specifies quality of tesselation:
+                theDeflection Linear deflection coefficient that specifies quality of tessellation:
                     - if theDeflection <= 0, default deflection 0.001 is used
                 theTolerance Specifies a distance between shapes used for detecting gaps:
                     - if theTolerance <= 0, algorithm detects intersections (default behavior)
@@ -11569,20 +11594,20 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
             RaiseIfFailed("CheckSelfIntersectionsFast", self.MeasuOp)
             return IsValid
 
-        ## Check boolean and partition operations agruments.
-        #  @param theShape the agrument of an operation to be checked
-        #  @return TRUE if the agrument is valid for a boolean or partition
+        ## Check boolean and partition operations arguments.
+        #  @param theShape the argument of an operation to be checked
+        #  @return TRUE if the argument is valid for a boolean or partition
         #          operation; FALSE otherwise.
         @ManageTransactions("MeasuOp")
         def CheckBOPArguments(self, theShape):
             """
-            Check boolean and partition operations agruments.
+            Check boolean and partition operations arguments.
 
             Parameters:
-                theShape the agrument of an operation to be checked
+                theShape the argument of an operation to be checked
 
             Returns:
-                TRUE if the agrument is valid for a boolean or partition
+                TRUE if the argument is valid for a boolean or partition
                 operation; FALSE otherwise.
             """
             return self.MeasuOp.CheckBOPArguments(theShape)
@@ -11593,7 +11618,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
         #  @param theTolerance Specifies a distance between shapes used for detecting gaps:
         #         - if \a theTolerance <= 0, algorithm detects intersections (default behavior)
         #         - if \a theTolerance > 0, algorithm detects gaps
-        #  @param theDeflection Linear deflection coefficient that specifies quality of tesselation:
+        #  @param theDeflection Linear deflection coefficient that specifies quality of tessellation:
         #         - if \a theDeflection <= 0, default deflection 0.001 is used
         #  @return TRUE, if there are intersections (gaps) between source shapes
         #  @return List of sub-shapes IDs from 1st shape that localize intersection.
@@ -11611,7 +11636,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
                 theTolerance Specifies a distance between shapes used for detecting gaps:
                     - if theTolerance <= 0, algorithm detects intersections (default behavior)
                     - if theTolerance > 0, algorithm detects gaps
-                theDeflection Linear deflection coefficient that specifies quality of tesselation:
+                theDeflection Linear deflection coefficient that specifies quality of tessellation:
                     - if theDeflection <= 0, default deflection 0.001 is used
  
             Returns:
@@ -11895,7 +11920,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
         ## @{
 
         ## Create a quadrangle face from four edges. Order of Edges is not
-        #  important. It is  not necessary that edges share the same vertex.
+        #  important. It is not necessary that edges share the same vertex.
         #  @param E1,E2,E3,E4 Edges for the face bound.
         #  @param theName Object name; when specified, this parameter is used
         #         for result publication in the study. Otherwise, if automatic
@@ -11908,7 +11933,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
         def MakeQuad(self, E1, E2, E3, E4, theName=None):
             """
             Create a quadrangle face from four edges. Order of Edges is not
-            important. It is  not necessary that edges share the same vertex.
+            important. It is not necessary that edges share the same vertex.
 
             Parameters:
                 E1,E2,E3,E4 Edges for the face bound.
@@ -12013,7 +12038,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
             return anObj
 
         ## Create a hexahedral solid, bounded by the six given faces. Order of
-        #  faces is not important. It is  not necessary that Faces share the same edge.
+        #  faces is not important. It is not necessary that Faces share the same edge.
         #  @param F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
         #  @param theName Object name; when specified, this parameter is used
         #         for result publication in the study. Otherwise, if automatic
@@ -12027,7 +12052,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
         def MakeHexa(self, F1, F2, F3, F4, F5, F6, theName=None):
             """
             Create a hexahedral solid, bounded by the six given faces. Order of
-            faces is not important. It is  not necessary that Faces share the same edge.
+            faces is not important. It is not necessary that Faces share the same edge.
 
             Parameters:
                 F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
@@ -13014,7 +13039,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
             RaiseIfFailed("RemoveObject", self.GroupOp)
             pass
 
-        ## Adds to the group all the given shapes. No errors, if some shapes are alredy included.
+        ## Adds to the group all the given shapes. No errors, if some shapes are already included.
         #  @param theGroup is a GEOM group to which the new sub-shapes are added.
         #  @param theSubShapes is a list of sub-shapes to be added.
         #
@@ -13022,7 +13047,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
         @ManageTransactions("GroupOp")
         def UnionList (self,theGroup, theSubShapes):
             """
-            Adds to the group all the given shapes. No errors, if some shapes are alredy included.
+            Adds to the group all the given shapes. No errors, if some shapes are already included.
 
             Parameters:
                 theGroup is a GEOM group to which the new sub-shapes are added.
@@ -13033,7 +13058,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
             RaiseIfFailed("UnionList", self.GroupOp)
             pass
 
-        ## Adds to the group all the given shapes. No errors, if some shapes are alredy included.
+        ## Adds to the group all the given shapes. No errors, if some shapes are already included.
         #  @param theGroup is a GEOM group to which the new sub-shapes are added.
         #  @param theSubShapes is a list of indices of sub-shapes to be added.
         #
@@ -13041,7 +13066,7 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
         @ManageTransactions("GroupOp")
         def UnionIDs(self,theGroup, theSubShapes):
             """
-            Adds to the group all the given shapes. No errors, if some shapes are alredy included.
+            Adds to the group all the given shapes. No errors, if some shapes are already included.
 
             Parameters:
                 theGroup is a GEOM group to which the new sub-shapes are added.
@@ -13766,7 +13791,6 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
             Returns:
                 a new created folder
             """
-            if not Father: Father = self.father
             return self.CreateFolder(Name, Father)
 
         ## Move object to the specified folder
@@ -13877,6 +13901,37 @@ class geomBuilder(GEOM._objref_GEOM_Gen):
         # end of l2_field
         ## @}
 
+        ## @addtogroup l2_testing
+        ## @{
+
+        ## Build a mesh on the given shape.
+        # @param shape the source shape
+        # @param linear_deflection linear deflection coefficient
+        # @param is_relative says if given value of deflection is relative to shape's bounding box
+        # @param angular_deflection angular deflection for edges in degrees
+        # @return True in case of success; otherwise False.
+        @ManageTransactions("TestOp")
+        def Tesselate(self, shape, linear_deflection=0, is_relative=True, angular_deflection=0):
+            """Build a mesh on the given shape.
+
+            Parameters:
+                shape the source shape
+                linear_deflection linear deflection coefficient
+                is_relative says if given value of deflection is relative to shape's bounding box
+                angular_deflection angular deflection for edges in degrees
+
+            Returns:
+                True in case of success; otherwise False.
+            """
+            if angular_deflection > 0:
+                angular_deflection = angular_deflection * math.pi / 180.
+            r = self.TestOp.Tesselate(shape, linear_deflection, is_relative, angular_deflection)
+            RaiseIfFailed("Tesselate", self.TestOp)
+            return r
+
+        # end of l2_testing
+        ## @}
+
 
 # Register the new proxy for GEOM_Gen
 omniORB.registerObjref(GEOM._objref_GEOM_Gen._NP_RepositoryId, geomBuilder)
@@ -14048,6 +14103,10 @@ def New( instance=None):
     global engine
     global geom
     global doLcc
+    if instance and isinstance( instance, SALOMEDS._objref_Study ):
+        import sys
+        sys.stderr.write("Warning: 'study' argument is no more needed in geomBuilder.New(). Consider updating your script!!!\n\n")
+        instance = None
     engine = instance
     if engine is None:
       doLcc = True