Salome HOME
0022664: [CEA 1253] MakePipeWithDifferentSections fails on a elbow pipe: Fix comment
[modules/geom.git] / src / GEOM_SWIG / geomBuilder.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20
21 #  GEOM GEOM_SWIG : binding of C++ implementation with Python
22 #  File   : geomBuilder.py
23 #  Author : Paul RASCLE, EDF
24 #  Module : GEOM
25
26 """
27     \namespace geomBuilder
28     \brief Module geomBuilder
29 """
30
31 ##
32 ## @defgroup geomBuilder geomBuilder Python module
33 ## @{
34 ##
35 ## @details
36 ##
37 ## By default, all functions of geomBuilder Python module do not publish
38 ## resulting geometrical objects. This can be done in the Python script
39 ## by means of \ref geomBuilder.geomBuilder.addToStudy() "addToStudy()"
40 ## or \ref geomBuilder.geomBuilder.addToStudyInFather() "addToStudyInFather()"
41 ## functions.
42 ##
43 ## However, it is possible to publish result data in the study
44 ## automatically. For this, almost each function of
45 ## \ref geomBuilder.geomBuilder "geomBuilder" class has
46 ## an additional @a theName parameter (@c None by default).
47 ## As soon as non-empty string value is passed to this parameter,
48 ## the result object is published in the study automatically.
49 ##
50 ## For example, consider the following Python script:
51 ##
52 ## @code
53 ## import salome
54 ## from salome.geom import geomBuilder
55 ## geompy = geomBuilder.New(salome.myStudy)
56 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100) # box is not published in the study yet
57 ## geompy.addToStudy(box, "box")             # explicit publishing
58 ## @endcode
59 ##
60 ## Last two lines can be replaced by one-line instruction:
61 ##
62 ## @code
63 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100, theName="box") # box is published in the study with "box" name
64 ## @endcode
65 ##
66 ## ... or simply
67 ##
68 ## @code
69 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100, "box") # box is published in the study with "box" name
70 ## @endcode
71 ##
72 ## Note, that some functions produce more than one geometrical objects. For example,
73 ## \ref geomBuilder.geomBuilder.GetNonBlocks() "GetNonBlocks()" function returns two objects:
74 ## group of all non-hexa solids and group of all non-quad faces.
75 ## For such functions it is possible to specify separate names for results.
76 ##
77 ## For example
78 ##
79 ## @code
80 ## # create and publish cylinder
81 ## cyl = geompy.MakeCylinderRH(100, 100, "cylinder")
82 ## # get non blocks from cylinder
83 ## g1, g2 = geompy.GetNonBlocks(cyl, theName="nonblock")
84 ## @endcode
85 ##
86 ## Above example will publish both result compounds (first with non-hexa solids and
87 ## second with non-quad faces) as two items, both named "nonblock".
88 ## However, if second command is invoked as
89 ##
90 ## @code
91 ## g1, g2 = geompy.GetNonBlocks(cyl, theName=("nonhexa", "nonquad"))
92 ## @endcode
93 ##
94 ## ... the first compound will be published with "nonhexa" name, and second will be named "nonquad".
95 ##
96 ## Automatic publication of all results can be also enabled/disabled by means of the function
97 ## \ref geomBuilder.geomBuilder.addToStudyAuto() "addToStudyAuto()". The automatic publishing
98 ## is managed by the numeric parameter passed to this function:
99 ## - if @a maxNbSubShapes = 0, automatic publishing is disabled.
100 ## - if @a maxNbSubShapes = -1 (default), automatic publishing is enabled and
101 ##   maximum number of sub-shapes allowed for publishing is unlimited; any negative
102 ##   value passed as parameter has the same effect.
103 ## - if @a maxNbSubShapes is any positive value, automatic publishing is enabled and
104 ##   maximum number of sub-shapes allowed for publishing is set to specified value.
105 ##
106 ## When automatic publishing is enabled, you even do not need to pass @a theName parameter
107 ## to the functions creating objects, instead default names will be used. However, you
108 ## can always change the behavior, by passing explicit name to the @a theName parameter
109 ## and it will be used instead default one.
110 ## The publishing of the collections of objects will be done according to the above
111 ## mentioned rules (maximum allowed number of sub-shapes).
112 ##
113 ## For example:
114 ##
115 ## @code
116 ## import salome
117 ## from salome.geom import geomBuilder
118 ## geompy = geomBuilder.New(salome.myStudy)
119 ## geompy.addToStudyAuto() # enable automatic publication
120 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100)
121 ## # the box is created and published in the study with default name
122 ## geompy.addToStudyAuto(5) # set max allowed number of sub-shapes to 5
123 ## vertices = geompy.SubShapeAll(box, geomBuilder.ShapeType['VERTEX'])
124 ## # only 5 first vertices will be published, with default names
125 ## print len(vertices)
126 ## # note, that result value still containes all 8 vertices
127 ## geompy.addToStudyAuto(-1) # disable automatic publication
128 ## @endcode
129 ##
130 ## This feature can be used, for example, for debugging purposes.
131 ##
132 ## @note
133 ## - Use automatic publication feature with caution. When it is enabled, any function of
134 ##   \ref geomBuilder.geomBuilder "geomBuilder" class publishes the results in the study,
135 ##   that can lead to the huge size of the study data tree.
136 ##   For example, repeating call of \ref geomBuilder.geomBuilder.SubShapeAll() "SubShapeAll()"
137 ##   command on the same main shape each time will publish all child objects, that will lead
138 ##   to a lot of duplicated items in the study.
139 ## - Sub-shapes are automatically published as child items of the parent main shape in the study if main
140 ##   shape was also published before. Otherwise, sub-shapes are published as top-level objects.
141 ## - Some functions of \ref geomBuilder.geomBuilder "geomBuilder" class do not have
142 ##   \a theName parameter (and, thus, do not support automatic publication).
143 ##   For example, some transformation operations like
144 ##   \ref geomBuilder.geomBuilder.TranslateDXDYDZ() "TranslateDXDYDZ()".
145 ##   Refer to the documentation to check if some function has such possibility.
146 ##
147 ## It is possible to customize the representation of the geometrical
148 ## data in the data tree; this can be done by using folders. A folder can
149 ## be created in the study tree using function
150 ## \ref geomBuilder.geomBuilder.NewFolder() "NewFolder()"
151 ## (by default it is created under the "Geometry" root object).
152 ## As soon as folder is created, any published geometry object
153 ## can be moved into it.
154 ##
155 ## For example:
156 ##
157 ## @code
158 ## import salome
159 ## from salome.geom import geomBuilder
160 ## geompy = geomBuilder.New(salome.myStudy)
161 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100, "Box")
162 ## # the box was created and published in the study
163 ## folder = geompy.NewFolder("Primitives")
164 ## # an empty "Primitives" folder was created under default "Geometry" root object
165 ## geompy.PutToFolder(box, folder)
166 ## # the box was moved into "Primitives" folder
167 ## @endcode
168 ##
169 ## Subfolders are also can be created by specifying another folder as a parent:
170 ##
171 ## @code
172 ## subfolder = geompy.NewFolder("3D", folder)
173 ## # "3D" folder was created under "Primitives" folder
174 ## @endcode
175 ##
176 ## @note
177 ## - Folder container is just a representation layer object that
178 ## deals with already published objects only. So, any geometry object
179 ## should be published in the study (for example, with
180 ## \ref geomBuilder.geomBuilder.PutToFolder() "addToStudy()" function)
181 ## BEFORE moving it into any existing folder.
182 ## - \ref geomBuilder.geomBuilder.PutToFolder() "PutToFolder()" function
183 ## does not change physical position of geometry object in the study tree,
184 ## it only affects on the representation of the data tree.
185 ## - It is impossible to publish geometry object using any folder as father.
186 ##
187 ##  \defgroup l1_publish_data
188 ##  \defgroup l1_geomBuilder_auxiliary
189 ##  \defgroup l1_geomBuilder_purpose
190 ## @}
191
192 ## @defgroup l1_publish_data Publishing results in SALOME study
193
194 ## @defgroup l1_geomBuilder_auxiliary Auxiliary data structures and methods
195
196 ## @defgroup l1_geomBuilder_purpose   All package methods, grouped by their purpose
197 ## @{
198 ##   @defgroup l2_import_export Importing/exporting geometrical objects
199 ##   @defgroup l2_creating      Creating geometrical objects
200 ##   @{
201 ##     @defgroup l3_basic_go      Creating Basic Geometric Objects
202 ##     @{
203 ##       @defgroup l4_curves        Creating Curves
204
205 ##     @}
206 ##     @defgroup l3_3d_primitives Creating 3D Primitives
207 ##     @defgroup l3_complex       Creating Complex Objects
208 ##     @defgroup l3_groups        Working with groups
209 ##     @defgroup l3_blocks        Building by blocks
210 ##     @{
211 ##       @defgroup l4_blocks_measure Check and Improve
212
213 ##     @}
214 ##     @defgroup l3_sketcher      Sketcher
215 ##     @defgroup l3_advanced      Creating Advanced Geometrical Objects
216 ##     @{
217 ##       @defgroup l4_decompose     Decompose objects
218 ##       @defgroup l4_decompose_d   Decompose objects deprecated methods
219 ##       @defgroup l4_access        Access to sub-shapes by their unique IDs inside the main shape
220 ##       @defgroup l4_obtain        Access to sub-shapes by a criteria
221 ##       @defgroup l4_advanced      Advanced objects creation functions
222
223 ##     @}
224
225 ##   @}
226 ##   @defgroup l2_transforming  Transforming geometrical objects
227 ##   @{
228 ##     @defgroup l3_basic_op      Basic Operations
229 ##     @defgroup l3_boolean       Boolean Operations
230 ##     @defgroup l3_transform     Transformation Operations
231 ##     @defgroup l3_transform_d   Transformation Operations deprecated methods
232 ##     @defgroup l3_local         Local Operations (Fillet, Chamfer and other Features)
233 ##     @defgroup l3_blocks_op     Blocks Operations
234 ##     @defgroup l3_healing       Repairing Operations
235 ##     @defgroup l3_restore_ss    Restore presentation parameters and a tree of sub-shapes
236
237 ##   @}
238 ##   @defgroup l2_measure       Using measurement tools
239 ##   @defgroup l2_field         Field on Geometry
240
241 ## @}
242
243 # initialize SALOME session in try/except block
244 # to avoid problems in some cases, e.g. when generating documentation
245 try:
246     import salome
247     salome.salome_init()
248     from salome import *
249 except:
250     pass
251
252 from salome_notebook import *
253
254 import GEOM
255 import math
256 import os
257 import functools
258
259 from salome.geom.gsketcher import Sketcher3D, Sketcher2D, Polyline2D
260
261 # service function
262 def _toListOfNames(_names, _size=-1):
263     l = []
264     import types
265     if type(_names) in [types.ListType, types.TupleType]:
266         for i in _names: l.append(i)
267     elif _names:
268         l.append(_names)
269     if l and len(l) < _size:
270         for i in range(len(l), _size): l.append("%s_%d"%(l[0],i))
271     return l
272
273 # Decorator function to manage transactions for all geometric operations.
274 def ManageTransactions(theOpeName):
275     def MTDecorator(theFunction):
276         # To keep the original function name an documentation.
277         @functools.wraps(theFunction)
278         def OpenCallClose(self, *args, **kwargs):
279             # Open transaction
280             anOperation = getattr(self, theOpeName)
281             anOperation.StartOperation()
282             try:
283                 # Call the function
284                 res = theFunction(self, *args, **kwargs)
285                 # Commit transaction
286                 anOperation.FinishOperation()
287                 return res
288             except:
289                 # Abort transaction
290                 anOperation.AbortOperation()
291                 raise
292         return OpenCallClose
293     return MTDecorator
294
295 ## Raise an Error, containing the Method_name, if Operation is Failed
296 ## @ingroup l1_geomBuilder_auxiliary
297 def RaiseIfFailed (Method_name, Operation):
298     if Operation.IsDone() == 0 and Operation.GetErrorCode() != "NOT_FOUND_ANY":
299         raise RuntimeError, Method_name + " : " + Operation.GetErrorCode()
300
301 ## Return list of variables value from salome notebook
302 ## @ingroup l1_geomBuilder_auxiliary
303 def ParseParameters(*parameters):
304     Result = []
305     StringResult = []
306     for parameter in parameters:
307         if isinstance(parameter, list):
308             lResults = ParseParameters(*parameter)
309             if len(lResults) > 0:
310                 Result.append(lResults[:-1])
311                 StringResult += lResults[-1].split(":")
312                 pass
313             pass
314         else:
315             if isinstance(parameter,str):
316                 if notebook.isVariable(parameter):
317                     Result.append(notebook.get(parameter))
318                 else:
319                     raise RuntimeError, "Variable with name '" + parameter + "' doesn't exist!!!"
320                 pass
321             else:
322                 Result.append(parameter)
323                 pass
324             StringResult.append(str(parameter))
325             pass
326         pass
327     if Result:
328         Result.append(":".join(StringResult))
329     else:
330         Result = ":".join(StringResult)
331     return Result
332
333 ## Return list of variables value from salome notebook
334 ## @ingroup l1_geomBuilder_auxiliary
335 def ParseList(list):
336     Result = []
337     StringResult = ""
338     for parameter in list:
339         if isinstance(parameter,str) and notebook.isVariable(parameter):
340             Result.append(str(notebook.get(parameter)))
341             pass
342         else:
343             Result.append(str(parameter))
344             pass
345
346         StringResult = StringResult + str(parameter)
347         StringResult = StringResult + ":"
348         pass
349     StringResult = StringResult[:len(StringResult)-1]
350     return Result, StringResult
351
352 ## Return list of variables value from salome notebook
353 ## @ingroup l1_geomBuilder_auxiliary
354 def ParseSketcherCommand(command):
355     Result = ""
356     StringResult = ""
357     sections = command.split(":")
358     for section in sections:
359         parameters = section.split(" ")
360         paramIndex = 1
361         for parameter in parameters:
362             if paramIndex > 1 and parameter.find("'") != -1:
363                 parameter = parameter.replace("'","")
364                 if notebook.isVariable(parameter):
365                     Result = Result + str(notebook.get(parameter)) + " "
366                     pass
367                 else:
368                     raise RuntimeError, "Variable with name '" + parameter + "' doesn't exist!!!"
369                     pass
370                 pass
371             else:
372                 Result = Result + str(parameter) + " "
373                 pass
374             if paramIndex > 1:
375                 StringResult = StringResult + parameter
376                 StringResult = StringResult + ":"
377                 pass
378             paramIndex = paramIndex + 1
379             pass
380         Result = Result[:len(Result)-1] + ":"
381         pass
382     Result = Result[:len(Result)-1]
383     return Result, StringResult
384
385 ## Helper function which can be used to pack the passed string to the byte data.
386 ## Only '1' an '0' symbols are valid for the string. The missing bits are replaced by zeroes.
387 ## If the string contains invalid symbol (neither '1' nor '0'), the function raises an exception.
388 ## For example,
389 ## \code
390 ## val = PackData("10001110") # val = 0xAE
391 ## val = PackData("1")        # val = 0x80
392 ## \endcode
393 ## @param data unpacked data - a string containing '1' and '0' symbols
394 ## @return data packed to the byte stream
395 ## @ingroup l1_geomBuilder_auxiliary
396 def PackData(data):
397     """
398     Helper function which can be used to pack the passed string to the byte data.
399     Only '1' an '0' symbols are valid for the string. The missing bits are replaced by zeroes.
400     If the string contains invalid symbol (neither '1' nor '0'), the function raises an exception.
401
402     Parameters:
403         data unpacked data - a string containing '1' and '0' symbols
404
405     Returns:
406         data packed to the byte stream
407
408     Example of usage:
409         val = PackData("10001110") # val = 0xAE
410         val = PackData("1")        # val = 0x80
411     """
412     bytes = len(data)/8
413     if len(data)%8: bytes += 1
414     res = ""
415     for b in range(bytes):
416         d = data[b*8:(b+1)*8]
417         val = 0
418         for i in range(8):
419             val *= 2
420             if i < len(d):
421                 if d[i] == "1": val += 1
422                 elif d[i] != "0":
423                     raise "Invalid symbol %s" % d[i]
424                 pass
425             pass
426         res += chr(val)
427         pass
428     return res
429
430 ## Read bitmap texture from the text file.
431 ## In that file, any non-zero symbol represents '1' opaque pixel of the bitmap.
432 ## A zero symbol ('0') represents transparent pixel of the texture bitmap.
433 ## The function returns width and height of the pixmap in pixels and byte stream representing
434 ## texture bitmap itself.
435 ##
436 ## This function can be used to read the texture to the byte stream in order to pass it to
437 ## the AddTexture() function of geomBuilder class.
438 ## For example,
439 ## \code
440 ## from salome.geom import geomBuilder
441 ## geompy = geomBuilder.New(salome.myStudy)
442 ## texture = geompy.readtexture('mytexture.dat')
443 ## texture = geompy.AddTexture(*texture)
444 ## obj.SetMarkerTexture(texture)
445 ## \endcode
446 ## @param fname texture file name
447 ## @return sequence of tree values: texture's width, height in pixels and its byte stream
448 ## @ingroup l1_geomBuilder_auxiliary
449 def ReadTexture(fname):
450     """
451     Read bitmap texture from the text file.
452     In that file, any non-zero symbol represents '1' opaque pixel of the bitmap.
453     A zero symbol ('0') represents transparent pixel of the texture bitmap.
454     The function returns width and height of the pixmap in pixels and byte stream representing
455     texture bitmap itself.
456     This function can be used to read the texture to the byte stream in order to pass it to
457     the AddTexture() function of geomBuilder class.
458
459     Parameters:
460         fname texture file name
461
462     Returns:
463         sequence of tree values: texture's width, height in pixels and its byte stream
464
465     Example of usage:
466         from salome.geom import geomBuilder
467         geompy = geomBuilder.New(salome.myStudy)
468         texture = geompy.readtexture('mytexture.dat')
469         texture = geompy.AddTexture(*texture)
470         obj.SetMarkerTexture(texture)
471     """
472     try:
473         f = open(fname)
474         lines = [ l.strip() for l in f.readlines()]
475         f.close()
476         maxlen = 0
477         if lines: maxlen = max([len(x) for x in lines])
478         lenbytes = maxlen/8
479         if maxlen%8: lenbytes += 1
480         bytedata=""
481         for line in lines:
482             if len(line)%8:
483                 lenline = (len(line)/8+1)*8
484                 pass
485             else:
486                 lenline = (len(line)/8)*8
487                 pass
488             for i in range(lenline/8):
489                 byte=""
490                 for j in range(8):
491                     if i*8+j < len(line) and line[i*8+j] != "0": byte += "1"
492                     else: byte += "0"
493                     pass
494                 bytedata += PackData(byte)
495                 pass
496             for i in range(lenline/8, lenbytes):
497                 bytedata += PackData("0")
498             pass
499         return lenbytes*8, len(lines), bytedata
500     except:
501         pass
502     return 0, 0, ""
503
504 ## Returns a long value from enumeration type
505 #  Can be used for CORBA enumerator types like GEOM.shape_type
506 #  @param theItem enumeration type
507 #  @ingroup l1_geomBuilder_auxiliary
508 def EnumToLong(theItem):
509     """
510     Returns a long value from enumeration type
511     Can be used for CORBA enumerator types like geomBuilder.ShapeType
512
513     Parameters:
514         theItem enumeration type
515     """
516     ret = theItem
517     if hasattr(theItem, "_v"): ret = theItem._v
518     return ret
519
520 ## Pack an argument into a list
521 def ToList( arg ):
522     if isinstance( arg, list ):
523         return arg
524     if hasattr( arg, "__getitem__" ):
525         return list( arg )
526     return [ arg ]
527
528 ## Information about closed/unclosed state of shell or wire
529 #  @ingroup l1_geomBuilder_auxiliary
530 class info:
531     """
532     Information about closed/unclosed state of shell or wire
533     """
534     UNKNOWN  = 0
535     CLOSED   = 1
536     UNCLOSED = 2
537
538 ## Private class used to bind calls of plugin operations to geomBuilder
539 class PluginOperation:
540   def __init__(self, operation, function):
541     self.operation = operation
542     self.function = function
543     pass
544
545   @ManageTransactions("operation")
546   def __call__(self, *args):
547     res = self.function(self.operation, *args)
548     RaiseIfFailed(self.function.__name__, self.operation)
549     return res
550
551 # Warning: geom is a singleton
552 geom = None
553 engine = None
554 doLcc = False
555 created = False
556
557 class geomBuilder(object, GEOM._objref_GEOM_Gen):
558
559         ## Enumeration ShapeType as a dictionary. \n
560         ## Topological types of shapes (like Open Cascade types). See GEOM::shape_type for details.
561         #  @ingroup l1_geomBuilder_auxiliary
562         ShapeType = {"AUTO":-1, "COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8, "FLAT":9}
563
564         ## Kinds of shape in terms of <VAR>GEOM.GEOM_IKindOfShape.shape_kind</VAR> enumeration
565         #  and a list of parameters, describing the shape.
566         #  List of parameters, describing the shape:
567         #  - COMPOUND:            [nb_solids  nb_faces  nb_edges  nb_vertices]
568         #  - COMPSOLID:           [nb_solids  nb_faces  nb_edges  nb_vertices]
569         #
570         #  - SHELL:       [info.CLOSED / info.UNCLOSED  nb_faces  nb_edges  nb_vertices]
571         #
572         #  - WIRE:        [info.CLOSED / info.UNCLOSED nb_edges  nb_vertices]
573         #
574         #  - SPHERE:       [xc yc zc            R]
575         #  - CYLINDER:     [xb yb zb  dx dy dz  R         H]
576         #  - BOX:          [xc yc zc                      ax ay az]
577         #  - ROTATED_BOX:  [xc yc zc  zx zy zz  xx xy xz  ax ay az]
578         #  - TORUS:        [xc yc zc  dx dy dz  R_1  R_2]
579         #  - CONE:         [xb yb zb  dx dy dz  R_1  R_2  H]
580         #  - POLYHEDRON:                       [nb_faces  nb_edges  nb_vertices]
581         #  - SOLID:                            [nb_faces  nb_edges  nb_vertices]
582         #
583         #  - SPHERE2D:     [xc yc zc            R]
584         #  - CYLINDER2D:   [xb yb zb  dx dy dz  R         H]
585         #  - TORUS2D:      [xc yc zc  dx dy dz  R_1  R_2]
586         #  - CONE2D:       [xc yc zc  dx dy dz  R_1  R_2  H]
587         #  - DISK_CIRCLE:  [xc yc zc  dx dy dz  R]
588         #  - DISK_ELLIPSE: [xc yc zc  dx dy dz  R_1  R_2]
589         #  - POLYGON:      [xo yo zo  dx dy dz            nb_edges  nb_vertices]
590         #  - PLANE:        [xo yo zo  dx dy dz]
591         #  - PLANAR:       [xo yo zo  dx dy dz            nb_edges  nb_vertices]
592         #  - FACE:                                       [nb_edges  nb_vertices]
593         #
594         #  - CIRCLE:       [xc yc zc  dx dy dz  R]
595         #  - ARC_CIRCLE:   [xc yc zc  dx dy dz  R         x1 y1 z1  x2 y2 z2]
596         #  - ELLIPSE:      [xc yc zc  dx dy dz  R_1  R_2]
597         #  - ARC_ELLIPSE:  [xc yc zc  dx dy dz  R_1  R_2  x1 y1 z1  x2 y2 z2]
598         #  - LINE:         [xo yo zo  dx dy dz]
599         #  - SEGMENT:      [x1 y1 z1  x2 y2 z2]
600         #  - EDGE:                                                 [nb_vertices]
601         #
602         #  - VERTEX:       [x  y  z]
603         #  @ingroup l1_geomBuilder_auxiliary
604         kind = GEOM.GEOM_IKindOfShape
605
606         def __new__(cls):
607             global engine
608             global geom
609             global doLcc
610             global created
611             #print "==== __new__ ", engine, geom, doLcc, created
612             if geom is None:
613                 # geom engine is either retrieved from engine, or created
614                 geom = engine
615                 # Following test avoids a recursive loop
616                 if doLcc:
617                     if geom is not None:
618                         # geom engine not created: existing engine found
619                         doLcc = False
620                     if doLcc and not created:
621                         doLcc = False
622                         # FindOrLoadComponent called:
623                         # 1. CORBA resolution of server
624                         # 2. the __new__ method is called again
625                         #print "==== FindOrLoadComponent ", engine, geom, doLcc, created
626                         geom = lcc.FindOrLoadComponent( "FactoryServer", "GEOM" )
627                         #print "====1 ",geom
628                 else:
629                     # FindOrLoadComponent not called
630                     if geom is None:
631                         # geomBuilder instance is created from lcc.FindOrLoadComponent
632                         #print "==== super ", engine, geom, doLcc, created
633                         geom = super(geomBuilder,cls).__new__(cls)
634                         #print "====2 ",geom
635                     else:
636                         # geom engine not created: existing engine found
637                         #print "==== existing ", engine, geom, doLcc, created
638                         pass
639                 #print "return geom 1 ", geom
640                 return geom
641
642             #print "return geom 2 ", geom
643             return geom
644
645         def __init__(self):
646             global created
647             #print "-------- geomBuilder __init__ --- ", created, self
648             if not created:
649               created = True
650               GEOM._objref_GEOM_Gen.__init__(self)
651               self.myMaxNbSubShapesAllowed = 0 # auto-publishing is disabled by default
652               self.myBuilder = None
653               self.myStudyId = 0
654               self.father    = None
655
656               self.BasicOp  = None
657               self.CurvesOp = None
658               self.PrimOp   = None
659               self.ShapesOp = None
660               self.HealOp   = None
661               self.InsertOp = None
662               self.BoolOp   = None
663               self.TrsfOp   = None
664               self.LocalOp  = None
665               self.MeasuOp  = None
666               self.BlocksOp = None
667               self.GroupOp  = None
668               self.FieldOp  = None
669             pass
670
671         ## Process object publication in the study, as follows:
672         #  - if @a theName is specified (not None), the object is published in the study
673         #    with this name, not taking into account "auto-publishing" option;
674         #  - if @a theName is NOT specified, the object is published in the study
675         #    (using default name, which can be customized using @a theDefaultName parameter)
676         #    only if auto-publishing is switched on.
677         #
678         #  @param theObj  object, a subject for publishing
679         #  @param theName object name for study
680         #  @param theDefaultName default name for the auto-publishing
681         #
682         #  @sa addToStudyAuto()
683         def _autoPublish(self, theObj, theName, theDefaultName="noname"):
684             # ---
685             def _item_name(_names, _defname, _idx=-1):
686                 if not _names: _names = _defname
687                 if type(_names) in [types.ListType, types.TupleType]:
688                     if _idx >= 0:
689                         if _idx >= len(_names) or not _names[_idx]:
690                             if type(_defname) not in [types.ListType, types.TupleType]:
691                                 _name = "%s_%d"%(_defname, _idx+1)
692                             elif len(_defname) > 0 and _idx >= 0 and _idx < len(_defname):
693                                 _name = _defname[_idx]
694                             else:
695                                 _name = "%noname_%d"%(dn, _idx+1)
696                             pass
697                         else:
698                             _name = _names[_idx]
699                         pass
700                     else:
701                         # must be wrong  usage
702                         _name = _names[0]
703                     pass
704                 else:
705                     if _idx >= 0:
706                         _name = "%s_%d"%(_names, _idx+1)
707                     else:
708                         _name = _names
709                     pass
710                 return _name
711             # ---
712             def _publish( _name, _obj ):
713                 fatherObj = None
714                 if isinstance( _obj, GEOM._objref_GEOM_Field ):
715                     fatherObj = _obj.GetShape()
716                 elif isinstance( _obj, GEOM._objref_GEOM_FieldStep ):
717                     fatherObj = _obj.GetField()
718                 elif not _obj.IsMainShape():
719                     fatherObj = _obj.GetMainShape()
720                     pass
721                 if fatherObj and fatherObj.GetStudyEntry():
722                     self.addToStudyInFather(fatherObj, _obj, _name)
723                 else:
724                     self.addToStudy(_obj, _name)
725                     pass
726                 return
727             # ---
728             if not theObj:
729                 return # null object
730             if not theName and not self.myMaxNbSubShapesAllowed:
731                 return # nothing to do: auto-publishing is disabled
732             if not theName and not theDefaultName:
733                 return # neither theName nor theDefaultName is given
734             import types
735             if type(theObj) in [types.ListType, types.TupleType]:
736                 # list of objects is being published
737                 idx = 0
738                 for obj in theObj:
739                     if not obj: continue # bad object
740                     name = _item_name(theName, theDefaultName, idx)
741                     _publish( name, obj )
742                     idx = idx+1
743                     if not theName and idx == self.myMaxNbSubShapesAllowed: break
744                     pass
745                 pass
746             else:
747                 # single object is published
748                 name = _item_name(theName, theDefaultName)
749                 _publish( name, theObj )
750             pass
751
752         ## @addtogroup l1_geomBuilder_auxiliary
753         ## @{
754         def init_geom(self,theStudy):
755             self.myStudy = theStudy
756             self.myStudyId = self.myStudy._get_StudyId()
757             self.myBuilder = self.myStudy.NewBuilder()
758             self.father = self.myStudy.FindComponent("GEOM")
759             notebook.myStudy = theStudy
760             if self.father is None:
761                 self.father = self.myBuilder.NewComponent("GEOM")
762                 A1 = self.myBuilder.FindOrCreateAttribute(self.father, "AttributeName")
763                 FName = A1._narrow(SALOMEDS.AttributeName)
764                 FName.SetValue("Geometry")
765                 A2 = self.myBuilder.FindOrCreateAttribute(self.father, "AttributePixMap")
766                 aPixmap = A2._narrow(SALOMEDS.AttributePixMap)
767                 aPixmap.SetPixMap("ICON_OBJBROWSER_Geometry")
768                 self.myBuilder.DefineComponentInstance(self.father,self)
769                 pass
770             self.BasicOp  = self.GetIBasicOperations    (self.myStudyId)
771             self.CurvesOp = self.GetICurvesOperations   (self.myStudyId)
772             self.PrimOp   = self.GetI3DPrimOperations   (self.myStudyId)
773             self.ShapesOp = self.GetIShapesOperations   (self.myStudyId)
774             self.HealOp   = self.GetIHealingOperations  (self.myStudyId)
775             self.InsertOp = self.GetIInsertOperations   (self.myStudyId)
776             self.BoolOp   = self.GetIBooleanOperations  (self.myStudyId)
777             self.TrsfOp   = self.GetITransformOperations(self.myStudyId)
778             self.LocalOp  = self.GetILocalOperations    (self.myStudyId)
779             self.MeasuOp  = self.GetIMeasureOperations  (self.myStudyId)
780             self.BlocksOp = self.GetIBlocksOperations   (self.myStudyId)
781             self.GroupOp  = self.GetIGroupOperations    (self.myStudyId)
782             self.FieldOp  = self.GetIFieldOperations    (self.myStudyId)
783
784             # set GEOM as root in the use case tree
785             self.myUseCaseBuilder = self.myStudy.GetUseCaseBuilder()
786             self.myUseCaseBuilder.SetRootCurrent()
787             self.myUseCaseBuilder.Append(self.father)
788
789             # load data from the study file, if necessary
790             self.myBuilder.LoadWith(self.father, self)
791             pass
792
793         def GetPluginOperations(self, studyID, libraryName):
794             op = GEOM._objref_GEOM_Gen.GetPluginOperations(self, studyID, libraryName)
795             return op
796
797         ## Enable / disable results auto-publishing
798         #
799         #  The automatic publishing is managed in the following way:
800         #  - if @a maxNbSubShapes = 0, automatic publishing is disabled.
801         #  - if @a maxNbSubShapes = -1 (default), automatic publishing is enabled and
802         #  maximum number of sub-shapes allowed for publishing is unlimited; any negative
803         #  value passed as parameter has the same effect.
804         #  - if @a maxNbSubShapes is any positive value, automatic publishing is enabled and
805         #  maximum number of sub-shapes allowed for publishing is set to specified value.
806         #
807         #  @param maxNbSubShapes maximum number of sub-shapes allowed for publishing.
808         #  @ingroup l1_publish_data
809         def addToStudyAuto(self, maxNbSubShapes=-1):
810             """
811             Enable / disable results auto-publishing
812
813             The automatic publishing is managed in the following way:
814             - if @a maxNbSubShapes = 0, automatic publishing is disabled;
815             - if @a maxNbSubShapes = -1 (default), automatic publishing is enabled and
816             maximum number of sub-shapes allowed for publishing is unlimited; any negative
817             value passed as parameter has the same effect.
818             - if @a maxNbSubShapes is any positive value, automatic publishing is enabled and
819             maximum number of sub-shapes allowed for publishing is set to this value.
820
821             Parameters:
822                 maxNbSubShapes maximum number of sub-shapes allowed for publishing.
823
824             Example of usage:
825                 geompy.addToStudyAuto()   # enable auto-publishing
826                 geompy.MakeBoxDXDYDZ(100) # box is created and published with default name
827                 geompy.addToStudyAuto(0)  # disable auto-publishing
828             """
829             self.myMaxNbSubShapesAllowed = max(-1, maxNbSubShapes)
830             pass
831
832         ## Dump component to the Python script
833         #  This method overrides IDL function to allow default values for the parameters.
834         def DumpPython(self, theStudy, theIsPublished=True, theIsMultiFile=True):
835             """
836             Dump component to the Python script
837             This method overrides IDL function to allow default values for the parameters.
838             """
839             return GEOM._objref_GEOM_Gen.DumpPython(self, theStudy, theIsPublished, theIsMultiFile)
840
841         ## Get name for sub-shape aSubObj of shape aMainObj
842         #
843         # @ref swig_SubShapeName "Example"
844         @ManageTransactions("ShapesOp")
845         def SubShapeName(self,aSubObj, aMainObj):
846             """
847             Get name for sub-shape aSubObj of shape aMainObj
848             """
849             # Example: see GEOM_TestAll.py
850
851             #aSubId  = orb.object_to_string(aSubObj)
852             #aMainId = orb.object_to_string(aMainObj)
853             #index = gg.getIndexTopology(aSubId, aMainId)
854             #name = gg.getShapeTypeString(aSubId) + "_%d"%(index)
855             index = self.ShapesOp.GetTopologyIndex(aMainObj, aSubObj)
856             name = self.ShapesOp.GetShapeTypeString(aSubObj) + "_%d"%(index)
857             return name
858
859         ## Publish in study aShape with name aName
860         #
861         #  \param aShape the shape to be published
862         #  \param aName  the name for the shape
863         #  \param doRestoreSubShapes if True, finds and publishes also
864         #         sub-shapes of <VAR>aShape</VAR>, corresponding to its arguments
865         #         and published sub-shapes of arguments
866         #  \param theArgs,theFindMethod,theInheritFirstArg see RestoreSubShapes() for
867         #                                                  these arguments description
868         #  \return study entry of the published shape in form of string
869         #
870         #  @ingroup l1_publish_data
871         #  @ref swig_all_addtostudy "Example"
872         def addToStudy(self, aShape, aName, doRestoreSubShapes=False,
873                        theArgs=[], theFindMethod=GEOM.FSM_GetInPlace, theInheritFirstArg=False):
874             """
875             Publish in study aShape with name aName
876
877             Parameters:
878                 aShape the shape to be published
879                 aName  the name for the shape
880                 doRestoreSubShapes if True, finds and publishes also
881                                    sub-shapes of aShape, corresponding to its arguments
882                                    and published sub-shapes of arguments
883                 theArgs,theFindMethod,theInheritFirstArg see geompy.RestoreSubShapes() for
884                                                          these arguments description
885
886             Returns:
887                 study entry of the published shape in form of string
888
889             Example of usage:
890                 id_block1 = geompy.addToStudy(Block1, "Block 1")
891             """
892             # Example: see GEOM_TestAll.py
893             try:
894                 aSObject = self.AddInStudy(self.myStudy, aShape, aName, None)
895                 if aSObject and aName: aSObject.SetAttrString("AttributeName", aName)
896                 if doRestoreSubShapes:
897                     self.RestoreSubShapesSO(self.myStudy, aSObject, theArgs,
898                                             theFindMethod, theInheritFirstArg, True )
899             except:
900                 print "addToStudy() failed"
901                 return ""
902             return aShape.GetStudyEntry()
903
904         ## Publish in study aShape with name aName as sub-object of previously published aFather
905         #  \param aFather previously published object
906         #  \param aShape the shape to be published as sub-object of <VAR>aFather</VAR>
907         #  \param aName  the name for the shape
908         #
909         #  \return study entry of the published shape in form of string
910         #
911         #  @ingroup l1_publish_data
912         #  @ref swig_all_addtostudyInFather "Example"
913         def addToStudyInFather(self, aFather, aShape, aName):
914             """
915             Publish in study aShape with name aName as sub-object of previously published aFather
916
917             Parameters:
918                 aFather previously published object
919                 aShape the shape to be published as sub-object of aFather
920                 aName  the name for the shape
921
922             Returns:
923                 study entry of the published shape in form of string
924             """
925             # Example: see GEOM_TestAll.py
926             try:
927                 aSObject = self.AddInStudy(self.myStudy, aShape, aName, aFather)
928                 if aSObject and aName: aSObject.SetAttrString("AttributeName", aName)
929             except:
930                 print "addToStudyInFather() failed"
931                 return ""
932             return aShape.GetStudyEntry()
933
934         ## Unpublish object in study
935         #
936         #  \param obj the object to be unpublished
937         def hideInStudy(self, obj):
938             """
939             Unpublish object in study
940
941             Parameters:
942                 obj the object to be unpublished
943             """
944             ior = salome.orb.object_to_string(obj)
945             aSObject = self.myStudy.FindObjectIOR(ior)
946             if aSObject is not None:
947                 genericAttribute = self.myBuilder.FindOrCreateAttribute(aSObject, "AttributeDrawable")
948                 drwAttribute = genericAttribute._narrow(SALOMEDS.AttributeDrawable)
949                 drwAttribute.SetDrawable(False)
950                 # hide references if any
951                 vso = self.myStudy.FindDependances(aSObject);
952                 for refObj in vso :
953                     genericAttribute = self.myBuilder.FindOrCreateAttribute(refObj, "AttributeDrawable")
954                     drwAttribute = genericAttribute._narrow(SALOMEDS.AttributeDrawable)
955                     drwAttribute.SetDrawable(False)
956                     pass
957                 pass
958
959         # end of l1_geomBuilder_auxiliary
960         ## @}
961
962         ## @addtogroup l3_restore_ss
963         ## @{
964
965         ## Publish sub-shapes, standing for arguments and sub-shapes of arguments
966         #  To be used from python scripts out of addToStudy() (non-default usage)
967         #  \param theObject published GEOM.GEOM_Object, arguments of which will be published
968         #  \param theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
969         #                   If this list is empty, all operation arguments will be published
970         #  \param theFindMethod method to search sub-shapes, corresponding to arguments and
971         #                       their sub-shapes. Value from enumeration GEOM.find_shape_method.
972         #  \param theInheritFirstArg set properties of the first argument for <VAR>theObject</VAR>.
973         #                            Do not publish sub-shapes in place of arguments, but only
974         #                            in place of sub-shapes of the first argument,
975         #                            because the whole shape corresponds to the first argument.
976         #                            Mainly to be used after transformations, but it also can be
977         #                            usefull after partition with one object shape, and some other
978         #                            operations, where only the first argument has to be considered.
979         #                            If theObject has only one argument shape, this flag is automatically
980         #                            considered as True, not regarding really passed value.
981         #  \param theAddPrefix add prefix "from_" to names of restored sub-shapes,
982         #                      and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
983         #  \return list of published sub-shapes
984         #
985         #  @ref tui_restore_prs_params "Example"
986         def RestoreSubShapes (self, theObject, theArgs=[], theFindMethod=GEOM.FSM_GetInPlace,
987                               theInheritFirstArg=False, theAddPrefix=True):
988             """
989             Publish sub-shapes, standing for arguments and sub-shapes of arguments
990             To be used from python scripts out of geompy.addToStudy (non-default usage)
991
992             Parameters:
993                 theObject published GEOM.GEOM_Object, arguments of which will be published
994                 theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
995                           If this list is empty, all operation arguments will be published
996                 theFindMethod method to search sub-shapes, corresponding to arguments and
997                               their sub-shapes. Value from enumeration GEOM.find_shape_method.
998                 theInheritFirstArg set properties of the first argument for theObject.
999                                    Do not publish sub-shapes in place of arguments, but only
1000                                    in place of sub-shapes of the first argument,
1001                                    because the whole shape corresponds to the first argument.
1002                                    Mainly to be used after transformations, but it also can be
1003                                    usefull after partition with one object shape, and some other
1004                                    operations, where only the first argument has to be considered.
1005                                    If theObject has only one argument shape, this flag is automatically
1006                                    considered as True, not regarding really passed value.
1007                 theAddPrefix add prefix "from_" to names of restored sub-shapes,
1008                              and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1009             Returns:
1010                 list of published sub-shapes
1011             """
1012             # Example: see GEOM_TestAll.py
1013             return self.RestoreSubShapesO(self.myStudy, theObject, theArgs,
1014                                           theFindMethod, theInheritFirstArg, theAddPrefix)
1015
1016         ## Publish sub-shapes, standing for arguments and sub-shapes of arguments
1017         #  To be used from python scripts out of addToStudy() (non-default usage)
1018         #  \param theObject published GEOM.GEOM_Object, arguments of which will be published
1019         #  \param theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
1020         #                   If this list is empty, all operation arguments will be published
1021         #  \param theFindMethod method to search sub-shapes, corresponding to arguments and
1022         #                       their sub-shapes. Value from enumeration GEOM::find_shape_method.
1023         #  \param theInheritFirstArg set properties of the first argument for <VAR>theObject</VAR>.
1024         #                            Do not publish sub-shapes in place of arguments, but only
1025         #                            in place of sub-shapes of the first argument,
1026         #                            because the whole shape corresponds to the first argument.
1027         #                            Mainly to be used after transformations, but it also can be
1028         #                            usefull after partition with one object shape, and some other
1029         #                            operations, where only the first argument has to be considered.
1030         #                            If theObject has only one argument shape, this flag is automatically
1031         #                            considered as True, not regarding really passed value.
1032         #  \param theAddPrefix add prefix "from_" to names of restored sub-shapes,
1033         #                      and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1034         #  \return list of published sub-shapes
1035         #
1036         #  @ref tui_restore_prs_params "Example"
1037         def RestoreGivenSubShapes (self, theObject, theArgs=[], theFindMethod=GEOM.FSM_GetInPlace,
1038                                    theInheritFirstArg=False, theAddPrefix=True):
1039             """
1040             Publish sub-shapes, standing for arguments and sub-shapes of arguments
1041             To be used from python scripts out of geompy.addToStudy() (non-default usage)
1042
1043             Parameters:
1044                 theObject published GEOM.GEOM_Object, arguments of which will be published
1045                 theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
1046                           If this list is empty, all operation arguments will be published
1047                 theFindMethod method to search sub-shapes, corresponding to arguments and
1048                               their sub-shapes. Value from enumeration GEOM::find_shape_method.
1049                 theInheritFirstArg set properties of the first argument for theObject.
1050                                    Do not publish sub-shapes in place of arguments, but only
1051                                    in place of sub-shapes of the first argument,
1052                                    because the whole shape corresponds to the first argument.
1053                                    Mainly to be used after transformations, but it also can be
1054                                    usefull after partition with one object shape, and some other
1055                                    operations, where only the first argument has to be considered.
1056                                    If theObject has only one argument shape, this flag is automatically
1057                                    considered as True, not regarding really passed value.
1058                 theAddPrefix add prefix "from_" to names of restored sub-shapes,
1059                              and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1060
1061             Returns:
1062                 list of published sub-shapes
1063             """
1064             # Example: see GEOM_TestAll.py
1065             return self.RestoreGivenSubShapesO(self.myStudy, theObject, theArgs,
1066                                                theFindMethod, theInheritFirstArg, theAddPrefix)
1067
1068         # end of l3_restore_ss
1069         ## @}
1070
1071         ## @addtogroup l3_basic_go
1072         ## @{
1073
1074         ## Create point by three coordinates.
1075         #  @param theX The X coordinate of the point.
1076         #  @param theY The Y coordinate of the point.
1077         #  @param theZ The Z coordinate of the point.
1078         #  @param theName Object name; when specified, this parameter is used
1079         #         for result publication in the study. Otherwise, if automatic
1080         #         publication is switched on, default value is used for result name.
1081         #
1082         #  @return New GEOM.GEOM_Object, containing the created point.
1083         #
1084         #  @ref tui_creation_point "Example"
1085         @ManageTransactions("BasicOp")
1086         def MakeVertex(self, theX, theY, theZ, theName=None):
1087             """
1088             Create point by three coordinates.
1089
1090             Parameters:
1091                 theX The X coordinate of the point.
1092                 theY The Y coordinate of the point.
1093                 theZ The Z coordinate of the point.
1094                 theName Object name; when specified, this parameter is used
1095                         for result publication in the study. Otherwise, if automatic
1096                         publication is switched on, default value is used for result name.
1097
1098             Returns:
1099                 New GEOM.GEOM_Object, containing the created point.
1100             """
1101             # Example: see GEOM_TestAll.py
1102             theX,theY,theZ,Parameters = ParseParameters(theX, theY, theZ)
1103             anObj = self.BasicOp.MakePointXYZ(theX, theY, theZ)
1104             RaiseIfFailed("MakePointXYZ", self.BasicOp)
1105             anObj.SetParameters(Parameters)
1106             self._autoPublish(anObj, theName, "vertex")
1107             return anObj
1108
1109         ## Create a point, distant from the referenced point
1110         #  on the given distances along the coordinate axes.
1111         #  @param theReference The referenced point.
1112         #  @param theX Displacement from the referenced point along OX axis.
1113         #  @param theY Displacement from the referenced point along OY axis.
1114         #  @param theZ Displacement from the referenced point along OZ axis.
1115         #  @param theName Object name; when specified, this parameter is used
1116         #         for result publication in the study. Otherwise, if automatic
1117         #         publication is switched on, default value is used for result name.
1118         #
1119         #  @return New GEOM.GEOM_Object, containing the created point.
1120         #
1121         #  @ref tui_creation_point "Example"
1122         @ManageTransactions("BasicOp")
1123         def MakeVertexWithRef(self, theReference, theX, theY, theZ, theName=None):
1124             """
1125             Create a point, distant from the referenced point
1126             on the given distances along the coordinate axes.
1127
1128             Parameters:
1129                 theReference The referenced point.
1130                 theX Displacement from the referenced point along OX axis.
1131                 theY Displacement from the referenced point along OY axis.
1132                 theZ Displacement from the referenced point along OZ axis.
1133                 theName Object name; when specified, this parameter is used
1134                         for result publication in the study. Otherwise, if automatic
1135                         publication is switched on, default value is used for result name.
1136
1137             Returns:
1138                 New GEOM.GEOM_Object, containing the created point.
1139             """
1140             # Example: see GEOM_TestAll.py
1141             theX,theY,theZ,Parameters = ParseParameters(theX, theY, theZ)
1142             anObj = self.BasicOp.MakePointWithReference(theReference, theX, theY, theZ)
1143             RaiseIfFailed("MakePointWithReference", self.BasicOp)
1144             anObj.SetParameters(Parameters)
1145             self._autoPublish(anObj, theName, "vertex")
1146             return anObj
1147
1148         ## Create a point, corresponding to the given parameter on the given curve.
1149         #  @param theRefCurve The referenced curve.
1150         #  @param theParameter Value of parameter on the referenced curve.
1151         #  @param takeOrientationIntoAccount flag that tells if it is necessary
1152         #         to take the curve's orientation into account for the
1153         #         operation. I.e. if this flag is set, the results for the same
1154         #         parameters (except the value 0.5) is different for forward
1155         #         and reversed curves. If it is not set the result is the same.
1156         #  @param theName Object name; when specified, this parameter is used
1157         #         for result publication in the study. Otherwise, if automatic
1158         #         publication is switched on, default value is used for result name.
1159         #
1160         #  @return New GEOM.GEOM_Object, containing the created point.
1161         #
1162         #  @ref tui_creation_point "Example"
1163         @ManageTransactions("BasicOp")
1164         def MakeVertexOnCurve(self, theRefCurve, theParameter,
1165                               takeOrientationIntoAccount=False, theName=None):
1166             """
1167             Create a point, corresponding to the given parameter on the given curve.
1168
1169             Parameters:
1170                 theRefCurve The referenced curve.
1171                 theParameter Value of parameter on the referenced curve.
1172                 takeOrientationIntoAccount flag that tells if it is necessary
1173                         to take the curve's orientation into account for the
1174                         operation. I.e. if this flag is set, the results for
1175                         the same parameters (except the value 0.5) is different
1176                         for forward and reversed curves. If it is not set
1177                         the result is the same.
1178                 theName Object name; when specified, this parameter is used
1179                         for result publication in the study. Otherwise, if automatic
1180                         publication is switched on, default value is used for result name.
1181
1182             Returns:
1183                 New GEOM.GEOM_Object, containing the created point.
1184
1185             Example of usage:
1186                 p_on_arc = geompy.MakeVertexOnCurve(Arc, 0.25)
1187             """
1188             # Example: see GEOM_TestAll.py
1189             theParameter, takeOrientationIntoAccount, Parameters = ParseParameters(
1190                 theParameter, takeOrientationIntoAccount)
1191             anObj = self.BasicOp.MakePointOnCurve(theRefCurve, theParameter,
1192                                                   takeOrientationIntoAccount)
1193             RaiseIfFailed("MakePointOnCurve", self.BasicOp)
1194             anObj.SetParameters(Parameters)
1195             self._autoPublish(anObj, theName, "vertex")
1196             return anObj
1197
1198         ## Create a point by projection give coordinates on the given curve
1199         #  @param theRefCurve The referenced curve.
1200         #  @param theX X-coordinate in 3D space
1201         #  @param theY Y-coordinate in 3D space
1202         #  @param theZ Z-coordinate in 3D space
1203         #  @param theName Object name; when specified, this parameter is used
1204         #         for result publication in the study. Otherwise, if automatic
1205         #         publication is switched on, default value is used for result name.
1206         #
1207         #  @return New GEOM.GEOM_Object, containing the created point.
1208         #
1209         #  @ref tui_creation_point "Example"
1210         @ManageTransactions("BasicOp")
1211         def MakeVertexOnCurveByCoord(self, theRefCurve, theX, theY, theZ, theName=None):
1212             """
1213             Create a point by projection give coordinates on the given curve
1214
1215             Parameters:
1216                 theRefCurve The referenced curve.
1217                 theX X-coordinate in 3D space
1218                 theY Y-coordinate in 3D space
1219                 theZ Z-coordinate in 3D space
1220                 theName Object name; when specified, this parameter is used
1221                         for result publication in the study. Otherwise, if automatic
1222                         publication is switched on, default value is used for result name.
1223
1224             Returns:
1225                 New GEOM.GEOM_Object, containing the created point.
1226
1227             Example of usage:
1228                 p_on_arc3 = geompy.MakeVertexOnCurveByCoord(Arc, 100, -10, 10)
1229             """
1230             # Example: see GEOM_TestAll.py
1231             theX, theY, theZ, Parameters = ParseParameters(theX, theY, theZ)
1232             anObj = self.BasicOp.MakePointOnCurveByCoord(theRefCurve, theX, theY, theZ)
1233             RaiseIfFailed("MakeVertexOnCurveByCoord", self.BasicOp)
1234             anObj.SetParameters(Parameters)
1235             self._autoPublish(anObj, theName, "vertex")
1236             return anObj
1237
1238         ## Create a point, corresponding to the given length on the given curve.
1239         #  @param theRefCurve The referenced curve.
1240         #  @param theLength Length on the referenced curve. It can be negative.
1241         #  @param theStartPoint Point allowing to choose the direction for the calculation
1242         #                       of the length. If None, start from the first point of theRefCurve.
1243         #  @param theName Object name; when specified, this parameter is used
1244         #         for result publication in the study. Otherwise, if automatic
1245         #         publication is switched on, default value is used for result name.
1246         #
1247         #  @return New GEOM.GEOM_Object, containing the created point.
1248         #
1249         #  @ref tui_creation_point "Example"
1250         @ManageTransactions("BasicOp")
1251         def MakeVertexOnCurveByLength(self, theRefCurve, theLength, theStartPoint = None, theName=None):
1252             """
1253             Create a point, corresponding to the given length on the given curve.
1254
1255             Parameters:
1256                 theRefCurve The referenced curve.
1257                 theLength Length on the referenced curve. It can be negative.
1258                 theStartPoint Point allowing to choose the direction for the calculation
1259                               of the length. If None, start from the first point of theRefCurve.
1260                 theName Object name; when specified, this parameter is used
1261                         for result publication in the study. Otherwise, if automatic
1262                         publication is switched on, default value is used for result name.
1263
1264             Returns:
1265                 New GEOM.GEOM_Object, containing the created point.
1266             """
1267             # Example: see GEOM_TestAll.py
1268             theLength, Parameters = ParseParameters(theLength)
1269             anObj = self.BasicOp.MakePointOnCurveByLength(theRefCurve, theLength, theStartPoint)
1270             RaiseIfFailed("MakePointOnCurveByLength", self.BasicOp)
1271             anObj.SetParameters(Parameters)
1272             self._autoPublish(anObj, theName, "vertex")
1273             return anObj
1274
1275         ## Create a point, corresponding to the given parameters on the
1276         #    given surface.
1277         #  @param theRefSurf The referenced surface.
1278         #  @param theUParameter Value of U-parameter on the referenced surface.
1279         #  @param theVParameter Value of V-parameter on the referenced surface.
1280         #  @param theName Object name; when specified, this parameter is used
1281         #         for result publication in the study. Otherwise, if automatic
1282         #         publication is switched on, default value is used for result name.
1283         #
1284         #  @return New GEOM.GEOM_Object, containing the created point.
1285         #
1286         #  @ref swig_MakeVertexOnSurface "Example"
1287         @ManageTransactions("BasicOp")
1288         def MakeVertexOnSurface(self, theRefSurf, theUParameter, theVParameter, theName=None):
1289             """
1290             Create a point, corresponding to the given parameters on the
1291             given surface.
1292
1293             Parameters:
1294                 theRefSurf The referenced surface.
1295                 theUParameter Value of U-parameter on the referenced surface.
1296                 theVParameter Value of V-parameter on the referenced surface.
1297                 theName Object name; when specified, this parameter is used
1298                         for result publication in the study. Otherwise, if automatic
1299                         publication is switched on, default value is used for result name.
1300
1301             Returns:
1302                 New GEOM.GEOM_Object, containing the created point.
1303
1304             Example of usage:
1305                 p_on_face = geompy.MakeVertexOnSurface(Face, 0.1, 0.8)
1306             """
1307             theUParameter, theVParameter, Parameters = ParseParameters(theUParameter, theVParameter)
1308             # Example: see GEOM_TestAll.py
1309             anObj = self.BasicOp.MakePointOnSurface(theRefSurf, theUParameter, theVParameter)
1310             RaiseIfFailed("MakePointOnSurface", self.BasicOp)
1311             anObj.SetParameters(Parameters);
1312             self._autoPublish(anObj, theName, "vertex")
1313             return anObj
1314
1315         ## Create a point by projection give coordinates on the given surface
1316         #  @param theRefSurf The referenced surface.
1317         #  @param theX X-coordinate in 3D space
1318         #  @param theY Y-coordinate in 3D space
1319         #  @param theZ Z-coordinate in 3D space
1320         #  @param theName Object name; when specified, this parameter is used
1321         #         for result publication in the study. Otherwise, if automatic
1322         #         publication is switched on, default value is used for result name.
1323         #
1324         #  @return New GEOM.GEOM_Object, containing the created point.
1325         #
1326         #  @ref swig_MakeVertexOnSurfaceByCoord "Example"
1327         @ManageTransactions("BasicOp")
1328         def MakeVertexOnSurfaceByCoord(self, theRefSurf, theX, theY, theZ, theName=None):
1329             """
1330             Create a point by projection give coordinates on the given surface
1331
1332             Parameters:
1333                 theRefSurf The referenced surface.
1334                 theX X-coordinate in 3D space
1335                 theY Y-coordinate in 3D space
1336                 theZ Z-coordinate in 3D space
1337                 theName Object name; when specified, this parameter is used
1338                         for result publication in the study. Otherwise, if automatic
1339                         publication is switched on, default value is used for result name.
1340
1341             Returns:
1342                 New GEOM.GEOM_Object, containing the created point.
1343
1344             Example of usage:
1345                 p_on_face2 = geompy.MakeVertexOnSurfaceByCoord(Face, 0., 0., 0.)
1346             """
1347             theX, theY, theZ, Parameters = ParseParameters(theX, theY, theZ)
1348             # Example: see GEOM_TestAll.py
1349             anObj = self.BasicOp.MakePointOnSurfaceByCoord(theRefSurf, theX, theY, theZ)
1350             RaiseIfFailed("MakeVertexOnSurfaceByCoord", self.BasicOp)
1351             anObj.SetParameters(Parameters);
1352             self._autoPublish(anObj, theName, "vertex")
1353             return anObj
1354
1355         ## Create a point, which lays on the given face.
1356         #  The point will lay in arbitrary place of the face.
1357         #  The only condition on it is a non-zero distance to the face boundary.
1358         #  Such point can be used to uniquely identify the face inside any
1359         #  shape in case, when the shape does not contain overlapped faces.
1360         #  @param theFace The referenced face.
1361         #  @param theName Object name; when specified, this parameter is used
1362         #         for result publication in the study. Otherwise, if automatic
1363         #         publication is switched on, default value is used for result name.
1364         #
1365         #  @return New GEOM.GEOM_Object, containing the created point.
1366         #
1367         #  @ref swig_MakeVertexInsideFace "Example"
1368         @ManageTransactions("BasicOp")
1369         def MakeVertexInsideFace (self, theFace, theName=None):
1370             """
1371             Create a point, which lays on the given face.
1372             The point will lay in arbitrary place of the face.
1373             The only condition on it is a non-zero distance to the face boundary.
1374             Such point can be used to uniquely identify the face inside any
1375             shape in case, when the shape does not contain overlapped faces.
1376
1377             Parameters:
1378                 theFace The referenced face.
1379                 theName Object name; when specified, this parameter is used
1380                         for result publication in the study. Otherwise, if automatic
1381                         publication is switched on, default value is used for result name.
1382
1383             Returns:
1384                 New GEOM.GEOM_Object, containing the created point.
1385
1386             Example of usage:
1387                 p_on_face = geompy.MakeVertexInsideFace(Face)
1388             """
1389             # Example: see GEOM_TestAll.py
1390             anObj = self.BasicOp.MakePointOnFace(theFace)
1391             RaiseIfFailed("MakeVertexInsideFace", self.BasicOp)
1392             self._autoPublish(anObj, theName, "vertex")
1393             return anObj
1394
1395         ## Create a point on intersection of two lines.
1396         #  @param theRefLine1, theRefLine2 The referenced lines.
1397         #  @param theName Object name; when specified, this parameter is used
1398         #         for result publication in the study. Otherwise, if automatic
1399         #         publication is switched on, default value is used for result name.
1400         #
1401         #  @return New GEOM.GEOM_Object, containing the created point.
1402         #
1403         #  @ref swig_MakeVertexOnLinesIntersection "Example"
1404         @ManageTransactions("BasicOp")
1405         def MakeVertexOnLinesIntersection(self, theRefLine1, theRefLine2, theName=None):
1406             """
1407             Create a point on intersection of two lines.
1408
1409             Parameters:
1410                 theRefLine1, theRefLine2 The referenced lines.
1411                 theName Object name; when specified, this parameter is used
1412                         for result publication in the study. Otherwise, if automatic
1413                         publication is switched on, default value is used for result name.
1414
1415             Returns:
1416                 New GEOM.GEOM_Object, containing the created point.
1417             """
1418             # Example: see GEOM_TestAll.py
1419             anObj = self.BasicOp.MakePointOnLinesIntersection(theRefLine1, theRefLine2)
1420             RaiseIfFailed("MakePointOnLinesIntersection", self.BasicOp)
1421             self._autoPublish(anObj, theName, "vertex")
1422             return anObj
1423
1424         ## Create a tangent, corresponding to the given parameter on the given curve.
1425         #  @param theRefCurve The referenced curve.
1426         #  @param theParameter Value of parameter on the referenced curve.
1427         #  @param theName Object name; when specified, this parameter is used
1428         #         for result publication in the study. Otherwise, if automatic
1429         #         publication is switched on, default value is used for result name.
1430         #
1431         #  @return New GEOM.GEOM_Object, containing the created tangent.
1432         #
1433         #  @ref swig_MakeTangentOnCurve "Example"
1434         @ManageTransactions("BasicOp")
1435         def MakeTangentOnCurve(self, theRefCurve, theParameter, theName=None):
1436             """
1437             Create a tangent, corresponding to the given parameter on the given curve.
1438
1439             Parameters:
1440                 theRefCurve The referenced curve.
1441                 theParameter Value of parameter on the referenced curve.
1442                 theName Object name; when specified, this parameter is used
1443                         for result publication in the study. Otherwise, if automatic
1444                         publication is switched on, default value is used for result name.
1445
1446             Returns:
1447                 New GEOM.GEOM_Object, containing the created tangent.
1448
1449             Example of usage:
1450                 tan_on_arc = geompy.MakeTangentOnCurve(Arc, 0.7)
1451             """
1452             anObj = self.BasicOp.MakeTangentOnCurve(theRefCurve, theParameter)
1453             RaiseIfFailed("MakeTangentOnCurve", self.BasicOp)
1454             self._autoPublish(anObj, theName, "tangent")
1455             return anObj
1456
1457         ## Create a tangent plane, corresponding to the given parameter on the given face.
1458         #  @param theFace The face for which tangent plane should be built.
1459         #  @param theParameterV vertical value of the center point (0.0 - 1.0).
1460         #  @param theParameterU horisontal value of the center point (0.0 - 1.0).
1461         #  @param theTrimSize the size of plane.
1462         #  @param theName Object name; when specified, this parameter is used
1463         #         for result publication in the study. Otherwise, if automatic
1464         #         publication is switched on, default value is used for result name.
1465         #
1466         #  @return New GEOM.GEOM_Object, containing the created tangent.
1467         #
1468         #  @ref swig_MakeTangentPlaneOnFace "Example"
1469         @ManageTransactions("BasicOp")
1470         def MakeTangentPlaneOnFace(self, theFace, theParameterU, theParameterV, theTrimSize, theName=None):
1471             """
1472             Create a tangent plane, corresponding to the given parameter on the given face.
1473
1474             Parameters:
1475                 theFace The face for which tangent plane should be built.
1476                 theParameterV vertical value of the center point (0.0 - 1.0).
1477                 theParameterU horisontal value of the center point (0.0 - 1.0).
1478                 theTrimSize the size of plane.
1479                 theName Object name; when specified, this parameter is used
1480                         for result publication in the study. Otherwise, if automatic
1481                         publication is switched on, default value is used for result name.
1482
1483            Returns:
1484                 New GEOM.GEOM_Object, containing the created tangent.
1485
1486            Example of usage:
1487                 an_on_face = geompy.MakeTangentPlaneOnFace(tan_extrusion, 0.7, 0.5, 150)
1488             """
1489             anObj = self.BasicOp.MakeTangentPlaneOnFace(theFace, theParameterU, theParameterV, theTrimSize)
1490             RaiseIfFailed("MakeTangentPlaneOnFace", self.BasicOp)
1491             self._autoPublish(anObj, theName, "tangent")
1492             return anObj
1493
1494         ## Create a vector with the given components.
1495         #  @param theDX X component of the vector.
1496         #  @param theDY Y component of the vector.
1497         #  @param theDZ Z component of the vector.
1498         #  @param theName Object name; when specified, this parameter is used
1499         #         for result publication in the study. Otherwise, if automatic
1500         #         publication is switched on, default value is used for result name.
1501         #
1502         #  @return New GEOM.GEOM_Object, containing the created vector.
1503         #
1504         #  @ref tui_creation_vector "Example"
1505         @ManageTransactions("BasicOp")
1506         def MakeVectorDXDYDZ(self, theDX, theDY, theDZ, theName=None):
1507             """
1508             Create a vector with the given components.
1509
1510             Parameters:
1511                 theDX X component of the vector.
1512                 theDY Y component of the vector.
1513                 theDZ Z component of the vector.
1514                 theName Object name; when specified, this parameter is used
1515                         for result publication in the study. Otherwise, if automatic
1516                         publication is switched on, default value is used for result name.
1517
1518             Returns:
1519                 New GEOM.GEOM_Object, containing the created vector.
1520             """
1521             # Example: see GEOM_TestAll.py
1522             theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
1523             anObj = self.BasicOp.MakeVectorDXDYDZ(theDX, theDY, theDZ)
1524             RaiseIfFailed("MakeVectorDXDYDZ", self.BasicOp)
1525             anObj.SetParameters(Parameters)
1526             self._autoPublish(anObj, theName, "vector")
1527             return anObj
1528
1529         ## Create a vector between two points.
1530         #  @param thePnt1 Start point for the vector.
1531         #  @param thePnt2 End point for the vector.
1532         #  @param theName Object name; when specified, this parameter is used
1533         #         for result publication in the study. Otherwise, if automatic
1534         #         publication is switched on, default value is used for result name.
1535         #
1536         #  @return New GEOM.GEOM_Object, containing the created vector.
1537         #
1538         #  @ref tui_creation_vector "Example"
1539         @ManageTransactions("BasicOp")
1540         def MakeVector(self, thePnt1, thePnt2, theName=None):
1541             """
1542             Create a vector between two points.
1543
1544             Parameters:
1545                 thePnt1 Start point for the vector.
1546                 thePnt2 End point for the vector.
1547                 theName Object name; when specified, this parameter is used
1548                         for result publication in the study. Otherwise, if automatic
1549                         publication is switched on, default value is used for result name.
1550
1551             Returns:
1552                 New GEOM.GEOM_Object, containing the created vector.
1553             """
1554             # Example: see GEOM_TestAll.py
1555             anObj = self.BasicOp.MakeVectorTwoPnt(thePnt1, thePnt2)
1556             RaiseIfFailed("MakeVectorTwoPnt", self.BasicOp)
1557             self._autoPublish(anObj, theName, "vector")
1558             return anObj
1559
1560         ## Create a line, passing through the given point
1561         #  and parrallel to the given direction
1562         #  @param thePnt Point. The resulting line will pass through it.
1563         #  @param theDir Direction. The resulting line will be parallel to it.
1564         #  @param theName Object name; when specified, this parameter is used
1565         #         for result publication in the study. Otherwise, if automatic
1566         #         publication is switched on, default value is used for result name.
1567         #
1568         #  @return New GEOM.GEOM_Object, containing the created line.
1569         #
1570         #  @ref tui_creation_line "Example"
1571         @ManageTransactions("BasicOp")
1572         def MakeLine(self, thePnt, theDir, theName=None):
1573             """
1574             Create a line, passing through the given point
1575             and parrallel to the given direction
1576
1577             Parameters:
1578                 thePnt Point. The resulting line will pass through it.
1579                 theDir Direction. The resulting line will be parallel to it.
1580                 theName Object name; when specified, this parameter is used
1581                         for result publication in the study. Otherwise, if automatic
1582                         publication is switched on, default value is used for result name.
1583
1584             Returns:
1585                 New GEOM.GEOM_Object, containing the created line.
1586             """
1587             # Example: see GEOM_TestAll.py
1588             anObj = self.BasicOp.MakeLine(thePnt, theDir)
1589             RaiseIfFailed("MakeLine", self.BasicOp)
1590             self._autoPublish(anObj, theName, "line")
1591             return anObj
1592
1593         ## Create a line, passing through the given points
1594         #  @param thePnt1 First of two points, defining the line.
1595         #  @param thePnt2 Second of two points, defining the line.
1596         #  @param theName Object name; when specified, this parameter is used
1597         #         for result publication in the study. Otherwise, if automatic
1598         #         publication is switched on, default value is used for result name.
1599         #
1600         #  @return New GEOM.GEOM_Object, containing the created line.
1601         #
1602         #  @ref tui_creation_line "Example"
1603         @ManageTransactions("BasicOp")
1604         def MakeLineTwoPnt(self, thePnt1, thePnt2, theName=None):
1605             """
1606             Create a line, passing through the given points
1607
1608             Parameters:
1609                 thePnt1 First of two points, defining the line.
1610                 thePnt2 Second of two points, defining the line.
1611                 theName Object name; when specified, this parameter is used
1612                         for result publication in the study. Otherwise, if automatic
1613                         publication is switched on, default value is used for result name.
1614
1615             Returns:
1616                 New GEOM.GEOM_Object, containing the created line.
1617             """
1618             # Example: see GEOM_TestAll.py
1619             anObj = self.BasicOp.MakeLineTwoPnt(thePnt1, thePnt2)
1620             RaiseIfFailed("MakeLineTwoPnt", self.BasicOp)
1621             self._autoPublish(anObj, theName, "line")
1622             return anObj
1623
1624         ## Create a line on two faces intersection.
1625         #  @param theFace1 First of two faces, defining the line.
1626         #  @param theFace2 Second of two faces, defining the line.
1627         #  @param theName Object name; when specified, this parameter is used
1628         #         for result publication in the study. Otherwise, if automatic
1629         #         publication is switched on, default value is used for result name.
1630         #
1631         #  @return New GEOM.GEOM_Object, containing the created line.
1632         #
1633         #  @ref swig_MakeLineTwoFaces "Example"
1634         @ManageTransactions("BasicOp")
1635         def MakeLineTwoFaces(self, theFace1, theFace2, theName=None):
1636             """
1637             Create a line on two faces intersection.
1638
1639             Parameters:
1640                 theFace1 First of two faces, defining the line.
1641                 theFace2 Second of two faces, defining the line.
1642                 theName Object name; when specified, this parameter is used
1643                         for result publication in the study. Otherwise, if automatic
1644                         publication is switched on, default value is used for result name.
1645
1646             Returns:
1647                 New GEOM.GEOM_Object, containing the created line.
1648             """
1649             # Example: see GEOM_TestAll.py
1650             anObj = self.BasicOp.MakeLineTwoFaces(theFace1, theFace2)
1651             RaiseIfFailed("MakeLineTwoFaces", self.BasicOp)
1652             self._autoPublish(anObj, theName, "line")
1653             return anObj
1654
1655         ## Create a plane, passing through the given point
1656         #  and normal to the given vector.
1657         #  @param thePnt Point, the plane has to pass through.
1658         #  @param theVec Vector, defining the plane normal direction.
1659         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1660         #  @param theName Object name; when specified, this parameter is used
1661         #         for result publication in the study. Otherwise, if automatic
1662         #         publication is switched on, default value is used for result name.
1663         #
1664         #  @return New GEOM.GEOM_Object, containing the created plane.
1665         #
1666         #  @ref tui_creation_plane "Example"
1667         @ManageTransactions("BasicOp")
1668         def MakePlane(self, thePnt, theVec, theTrimSize, theName=None):
1669             """
1670             Create a plane, passing through the given point
1671             and normal to the given vector.
1672
1673             Parameters:
1674                 thePnt Point, the plane has to pass through.
1675                 theVec Vector, defining the plane normal direction.
1676                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1677                 theName Object name; when specified, this parameter is used
1678                         for result publication in the study. Otherwise, if automatic
1679                         publication is switched on, default value is used for result name.
1680
1681             Returns:
1682                 New GEOM.GEOM_Object, containing the created plane.
1683             """
1684             # Example: see GEOM_TestAll.py
1685             theTrimSize, Parameters = ParseParameters(theTrimSize);
1686             anObj = self.BasicOp.MakePlanePntVec(thePnt, theVec, theTrimSize)
1687             RaiseIfFailed("MakePlanePntVec", self.BasicOp)
1688             anObj.SetParameters(Parameters)
1689             self._autoPublish(anObj, theName, "plane")
1690             return anObj
1691
1692         ## Create a plane, passing through the three given points
1693         #  @param thePnt1 First of three points, defining the plane.
1694         #  @param thePnt2 Second of three points, defining the plane.
1695         #  @param thePnt3 Fird of three points, defining the plane.
1696         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1697         #  @param theName Object name; when specified, this parameter is used
1698         #         for result publication in the study. Otherwise, if automatic
1699         #         publication is switched on, default value is used for result name.
1700         #
1701         #  @return New GEOM.GEOM_Object, containing the created plane.
1702         #
1703         #  @ref tui_creation_plane "Example"
1704         @ManageTransactions("BasicOp")
1705         def MakePlaneThreePnt(self, thePnt1, thePnt2, thePnt3, theTrimSize, theName=None):
1706             """
1707             Create a plane, passing through the three given points
1708
1709             Parameters:
1710                 thePnt1 First of three points, defining the plane.
1711                 thePnt2 Second of three points, defining the plane.
1712                 thePnt3 Fird of three points, defining the plane.
1713                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1714                 theName Object name; when specified, this parameter is used
1715                         for result publication in the study. Otherwise, if automatic
1716                         publication is switched on, default value is used for result name.
1717
1718             Returns:
1719                 New GEOM.GEOM_Object, containing the created plane.
1720             """
1721             # Example: see GEOM_TestAll.py
1722             theTrimSize, Parameters = ParseParameters(theTrimSize);
1723             anObj = self.BasicOp.MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize)
1724             RaiseIfFailed("MakePlaneThreePnt", self.BasicOp)
1725             anObj.SetParameters(Parameters)
1726             self._autoPublish(anObj, theName, "plane")
1727             return anObj
1728
1729         ## Create a plane, similar to the existing one, but with another size of representing face.
1730         #  @param theFace Referenced plane or LCS(Marker).
1731         #  @param theTrimSize New half size of a side of quadrangle face, representing the plane.
1732         #  @param theName Object name; when specified, this parameter is used
1733         #         for result publication in the study. Otherwise, if automatic
1734         #         publication is switched on, default value is used for result name.
1735         #
1736         #  @return New GEOM.GEOM_Object, containing the created plane.
1737         #
1738         #  @ref tui_creation_plane "Example"
1739         @ManageTransactions("BasicOp")
1740         def MakePlaneFace(self, theFace, theTrimSize, theName=None):
1741             """
1742             Create a plane, similar to the existing one, but with another size of representing face.
1743
1744             Parameters:
1745                 theFace Referenced plane or LCS(Marker).
1746                 theTrimSize New half size of a side of quadrangle face, representing the plane.
1747                 theName Object name; when specified, this parameter is used
1748                         for result publication in the study. Otherwise, if automatic
1749                         publication is switched on, default value is used for result name.
1750
1751             Returns:
1752                 New GEOM.GEOM_Object, containing the created plane.
1753             """
1754             # Example: see GEOM_TestAll.py
1755             theTrimSize, Parameters = ParseParameters(theTrimSize);
1756             anObj = self.BasicOp.MakePlaneFace(theFace, theTrimSize)
1757             RaiseIfFailed("MakePlaneFace", self.BasicOp)
1758             anObj.SetParameters(Parameters)
1759             self._autoPublish(anObj, theName, "plane")
1760             return anObj
1761
1762         ## Create a plane, passing through the 2 vectors
1763         #  with center in a start point of the first vector.
1764         #  @param theVec1 Vector, defining center point and plane direction.
1765         #  @param theVec2 Vector, defining the plane normal direction.
1766         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1767         #  @param theName Object name; when specified, this parameter is used
1768         #         for result publication in the study. Otherwise, if automatic
1769         #         publication is switched on, default value is used for result name.
1770         #
1771         #  @return New GEOM.GEOM_Object, containing the created plane.
1772         #
1773         #  @ref tui_creation_plane "Example"
1774         @ManageTransactions("BasicOp")
1775         def MakePlane2Vec(self, theVec1, theVec2, theTrimSize, theName=None):
1776             """
1777             Create a plane, passing through the 2 vectors
1778             with center in a start point of the first vector.
1779
1780             Parameters:
1781                 theVec1 Vector, defining center point and plane direction.
1782                 theVec2 Vector, defining the plane normal direction.
1783                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1784                 theName Object name; when specified, this parameter is used
1785                         for result publication in the study. Otherwise, if automatic
1786                         publication is switched on, default value is used for result name.
1787
1788             Returns:
1789                 New GEOM.GEOM_Object, containing the created plane.
1790             """
1791             # Example: see GEOM_TestAll.py
1792             theTrimSize, Parameters = ParseParameters(theTrimSize);
1793             anObj = self.BasicOp.MakePlane2Vec(theVec1, theVec2, theTrimSize)
1794             RaiseIfFailed("MakePlane2Vec", self.BasicOp)
1795             anObj.SetParameters(Parameters)
1796             self._autoPublish(anObj, theName, "plane")
1797             return anObj
1798
1799         ## Create a plane, based on a Local coordinate system.
1800         #  @param theLCS  coordinate system, defining plane.
1801         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1802         #  @param theOrientation OXY, OYZ or OZX orientation - (1, 2 or 3)
1803         #  @param theName Object name; when specified, this parameter is used
1804         #         for result publication in the study. Otherwise, if automatic
1805         #         publication is switched on, default value is used for result name.
1806         #
1807         #  @return New GEOM.GEOM_Object, containing the created plane.
1808         #
1809         #  @ref tui_creation_plane "Example"
1810         @ManageTransactions("BasicOp")
1811         def MakePlaneLCS(self, theLCS, theTrimSize, theOrientation, theName=None):
1812             """
1813             Create a plane, based on a Local coordinate system.
1814
1815            Parameters:
1816                 theLCS  coordinate system, defining plane.
1817                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1818                 theOrientation OXY, OYZ or OZX orientation - (1, 2 or 3)
1819                 theName Object name; when specified, this parameter is used
1820                         for result publication in the study. Otherwise, if automatic
1821                         publication is switched on, default value is used for result name.
1822
1823             Returns:
1824                 New GEOM.GEOM_Object, containing the created plane.
1825             """
1826             # Example: see GEOM_TestAll.py
1827             theTrimSize, Parameters = ParseParameters(theTrimSize);
1828             anObj = self.BasicOp.MakePlaneLCS(theLCS, theTrimSize, theOrientation)
1829             RaiseIfFailed("MakePlaneLCS", self.BasicOp)
1830             anObj.SetParameters(Parameters)
1831             self._autoPublish(anObj, theName, "plane")
1832             return anObj
1833
1834         ## Create a local coordinate system.
1835         #  @param OX,OY,OZ Three coordinates of coordinate system origin.
1836         #  @param XDX,XDY,XDZ Three components of OX direction
1837         #  @param YDX,YDY,YDZ Three components of OY direction
1838         #  @param theName Object name; when specified, this parameter is used
1839         #         for result publication in the study. Otherwise, if automatic
1840         #         publication is switched on, default value is used for result name.
1841         #
1842         #  @return New GEOM.GEOM_Object, containing the created coordinate system.
1843         #
1844         #  @ref swig_MakeMarker "Example"
1845         @ManageTransactions("BasicOp")
1846         def MakeMarker(self, OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ, theName=None):
1847             """
1848             Create a local coordinate system.
1849
1850             Parameters:
1851                 OX,OY,OZ Three coordinates of coordinate system origin.
1852                 XDX,XDY,XDZ Three components of OX direction
1853                 YDX,YDY,YDZ Three components of OY direction
1854                 theName Object name; when specified, this parameter is used
1855                         for result publication in the study. Otherwise, if automatic
1856                         publication is switched on, default value is used for result name.
1857
1858             Returns:
1859                 New GEOM.GEOM_Object, containing the created coordinate system.
1860             """
1861             # Example: see GEOM_TestAll.py
1862             OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ, Parameters = ParseParameters(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ);
1863             anObj = self.BasicOp.MakeMarker(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ)
1864             RaiseIfFailed("MakeMarker", self.BasicOp)
1865             anObj.SetParameters(Parameters)
1866             self._autoPublish(anObj, theName, "lcs")
1867             return anObj
1868
1869         ## Create a local coordinate system from shape.
1870         #  @param theShape The initial shape to detect the coordinate system.
1871         #  @param theName Object name; when specified, this parameter is used
1872         #         for result publication in the study. Otherwise, if automatic
1873         #         publication is switched on, default value is used for result name.
1874         #
1875         #  @return New GEOM.GEOM_Object, containing the created coordinate system.
1876         #
1877         #  @ref tui_creation_lcs "Example"
1878         @ManageTransactions("BasicOp")
1879         def MakeMarkerFromShape(self, theShape, theName=None):
1880             """
1881             Create a local coordinate system from shape.
1882
1883             Parameters:
1884                 theShape The initial shape to detect the coordinate system.
1885                 theName Object name; when specified, this parameter is used
1886                         for result publication in the study. Otherwise, if automatic
1887                         publication is switched on, default value is used for result name.
1888
1889             Returns:
1890                 New GEOM.GEOM_Object, containing the created coordinate system.
1891             """
1892             anObj = self.BasicOp.MakeMarkerFromShape(theShape)
1893             RaiseIfFailed("MakeMarkerFromShape", self.BasicOp)
1894             self._autoPublish(anObj, theName, "lcs")
1895             return anObj
1896
1897         ## Create a local coordinate system from point and two vectors.
1898         #  @param theOrigin Point of coordinate system origin.
1899         #  @param theXVec Vector of X direction
1900         #  @param theYVec Vector of Y direction
1901         #  @param theName Object name; when specified, this parameter is used
1902         #         for result publication in the study. Otherwise, if automatic
1903         #         publication is switched on, default value is used for result name.
1904         #
1905         #  @return New GEOM.GEOM_Object, containing the created coordinate system.
1906         #
1907         #  @ref tui_creation_lcs "Example"
1908         @ManageTransactions("BasicOp")
1909         def MakeMarkerPntTwoVec(self, theOrigin, theXVec, theYVec, theName=None):
1910             """
1911             Create a local coordinate system from point and two vectors.
1912
1913             Parameters:
1914                 theOrigin Point of coordinate system origin.
1915                 theXVec Vector of X direction
1916                 theYVec Vector of Y direction
1917                 theName Object name; when specified, this parameter is used
1918                         for result publication in the study. Otherwise, if automatic
1919                         publication is switched on, default value is used for result name.
1920
1921             Returns:
1922                 New GEOM.GEOM_Object, containing the created coordinate system.
1923
1924             """
1925             anObj = self.BasicOp.MakeMarkerPntTwoVec(theOrigin, theXVec, theYVec)
1926             RaiseIfFailed("MakeMarkerPntTwoVec", self.BasicOp)
1927             self._autoPublish(anObj, theName, "lcs")
1928             return anObj
1929
1930         # end of l3_basic_go
1931         ## @}
1932
1933         ## @addtogroup l4_curves
1934         ## @{
1935
1936         ##  Create an arc of circle, passing through three given points.
1937         #  @param thePnt1 Start point of the arc.
1938         #  @param thePnt2 Middle point of the arc.
1939         #  @param thePnt3 End point of the arc.
1940         #  @param theName Object name; when specified, this parameter is used
1941         #         for result publication in the study. Otherwise, if automatic
1942         #         publication is switched on, default value is used for result name.
1943         #
1944         #  @return New GEOM.GEOM_Object, containing the created arc.
1945         #
1946         #  @ref swig_MakeArc "Example"
1947         @ManageTransactions("CurvesOp")
1948         def MakeArc(self, thePnt1, thePnt2, thePnt3, theName=None):
1949             """
1950             Create an arc of circle, passing through three given points.
1951
1952             Parameters:
1953                 thePnt1 Start point of the arc.
1954                 thePnt2 Middle point of the arc.
1955                 thePnt3 End point of the arc.
1956                 theName Object name; when specified, this parameter is used
1957                         for result publication in the study. Otherwise, if automatic
1958                         publication is switched on, default value is used for result name.
1959
1960             Returns:
1961                 New GEOM.GEOM_Object, containing the created arc.
1962             """
1963             # Example: see GEOM_TestAll.py
1964             anObj = self.CurvesOp.MakeArc(thePnt1, thePnt2, thePnt3)
1965             RaiseIfFailed("MakeArc", self.CurvesOp)
1966             self._autoPublish(anObj, theName, "arc")
1967             return anObj
1968
1969         ##  Create an arc of circle from a center and 2 points.
1970         #  @param thePnt1 Center of the arc
1971         #  @param thePnt2 Start point of the arc. (Gives also the radius of the arc)
1972         #  @param thePnt3 End point of the arc (Gives also a direction)
1973         #  @param theSense Orientation of the arc
1974         #  @param theName Object name; when specified, this parameter is used
1975         #         for result publication in the study. Otherwise, if automatic
1976         #         publication is switched on, default value is used for result name.
1977         #
1978         #  @return New GEOM.GEOM_Object, containing the created arc.
1979         #
1980         #  @ref swig_MakeArc "Example"
1981         @ManageTransactions("CurvesOp")
1982         def MakeArcCenter(self, thePnt1, thePnt2, thePnt3, theSense=False, theName=None):
1983             """
1984             Create an arc of circle from a center and 2 points.
1985
1986             Parameters:
1987                 thePnt1 Center of the arc
1988                 thePnt2 Start point of the arc. (Gives also the radius of the arc)
1989                 thePnt3 End point of the arc (Gives also a direction)
1990                 theSense Orientation of the arc
1991                 theName Object name; when specified, this parameter is used
1992                         for result publication in the study. Otherwise, if automatic
1993                         publication is switched on, default value is used for result name.
1994
1995             Returns:
1996                 New GEOM.GEOM_Object, containing the created arc.
1997             """
1998             # Example: see GEOM_TestAll.py
1999             anObj = self.CurvesOp.MakeArcCenter(thePnt1, thePnt2, thePnt3, theSense)
2000             RaiseIfFailed("MakeArcCenter", self.CurvesOp)
2001             self._autoPublish(anObj, theName, "arc")
2002             return anObj
2003
2004         ##  Create an arc of ellipse, of center and two points.
2005         #  @param theCenter Center of the arc.
2006         #  @param thePnt1 defines major radius of the arc by distance from Pnt1 to Pnt2.
2007         #  @param thePnt2 defines plane of ellipse and minor radius as distance from Pnt3 to line from Pnt1 to Pnt2.
2008         #  @param theName Object name; when specified, this parameter is used
2009         #         for result publication in the study. Otherwise, if automatic
2010         #         publication is switched on, default value is used for result name.
2011         #
2012         #  @return New GEOM.GEOM_Object, containing the created arc.
2013         #
2014         #  @ref swig_MakeArc "Example"
2015         @ManageTransactions("CurvesOp")
2016         def MakeArcOfEllipse(self, theCenter, thePnt1, thePnt2, theName=None):
2017             """
2018             Create an arc of ellipse, of center and two points.
2019
2020             Parameters:
2021                 theCenter Center of the arc.
2022                 thePnt1 defines major radius of the arc by distance from Pnt1 to Pnt2.
2023                 thePnt2 defines plane of ellipse and minor radius as distance from Pnt3 to line from Pnt1 to Pnt2.
2024                 theName Object name; when specified, this parameter is used
2025                         for result publication in the study. Otherwise, if automatic
2026                         publication is switched on, default value is used for result name.
2027
2028             Returns:
2029                 New GEOM.GEOM_Object, containing the created arc.
2030             """
2031             # Example: see GEOM_TestAll.py
2032             anObj = self.CurvesOp.MakeArcOfEllipse(theCenter, thePnt1, thePnt2)
2033             RaiseIfFailed("MakeArcOfEllipse", self.CurvesOp)
2034             self._autoPublish(anObj, theName, "arc")
2035             return anObj
2036
2037         ## Create a circle with given center, normal vector and radius.
2038         #  @param thePnt Circle center.
2039         #  @param theVec Vector, normal to the plane of the circle.
2040         #  @param theR Circle radius.
2041         #  @param theName Object name; when specified, this parameter is used
2042         #         for result publication in the study. Otherwise, if automatic
2043         #         publication is switched on, default value is used for result name.
2044         #
2045         #  @return New GEOM.GEOM_Object, containing the created circle.
2046         #
2047         #  @ref tui_creation_circle "Example"
2048         @ManageTransactions("CurvesOp")
2049         def MakeCircle(self, thePnt, theVec, theR, theName=None):
2050             """
2051             Create a circle with given center, normal vector and radius.
2052
2053             Parameters:
2054                 thePnt Circle center.
2055                 theVec Vector, normal to the plane of the circle.
2056                 theR Circle radius.
2057                 theName Object name; when specified, this parameter is used
2058                         for result publication in the study. Otherwise, if automatic
2059                         publication is switched on, default value is used for result name.
2060
2061             Returns:
2062                 New GEOM.GEOM_Object, containing the created circle.
2063             """
2064             # Example: see GEOM_TestAll.py
2065             theR, Parameters = ParseParameters(theR)
2066             anObj = self.CurvesOp.MakeCirclePntVecR(thePnt, theVec, theR)
2067             RaiseIfFailed("MakeCirclePntVecR", self.CurvesOp)
2068             anObj.SetParameters(Parameters)
2069             self._autoPublish(anObj, theName, "circle")
2070             return anObj
2071
2072         ## Create a circle with given radius.
2073         #  Center of the circle will be in the origin of global
2074         #  coordinate system and normal vector will be codirected with Z axis
2075         #  @param theR Circle radius.
2076         #  @param theName Object name; when specified, this parameter is used
2077         #         for result publication in the study. Otherwise, if automatic
2078         #         publication is switched on, default value is used for result name.
2079         #
2080         #  @return New GEOM.GEOM_Object, containing the created circle.
2081         @ManageTransactions("CurvesOp")
2082         def MakeCircleR(self, theR, theName=None):
2083             """
2084             Create a circle with given radius.
2085             Center of the circle will be in the origin of global
2086             coordinate system and normal vector will be codirected with Z axis
2087
2088             Parameters:
2089                 theR Circle radius.
2090                 theName Object name; when specified, this parameter is used
2091                         for result publication in the study. Otherwise, if automatic
2092                         publication is switched on, default value is used for result name.
2093
2094             Returns:
2095                 New GEOM.GEOM_Object, containing the created circle.
2096             """
2097             anObj = self.CurvesOp.MakeCirclePntVecR(None, None, theR)
2098             RaiseIfFailed("MakeCirclePntVecR", self.CurvesOp)
2099             self._autoPublish(anObj, theName, "circle")
2100             return anObj
2101
2102         ## Create a circle, passing through three given points
2103         #  @param thePnt1,thePnt2,thePnt3 Points, defining the circle.
2104         #  @param theName Object name; when specified, this parameter is used
2105         #         for result publication in the study. Otherwise, if automatic
2106         #         publication is switched on, default value is used for result name.
2107         #
2108         #  @return New GEOM.GEOM_Object, containing the created circle.
2109         #
2110         #  @ref tui_creation_circle "Example"
2111         @ManageTransactions("CurvesOp")
2112         def MakeCircleThreePnt(self, thePnt1, thePnt2, thePnt3, theName=None):
2113             """
2114             Create a circle, passing through three given points
2115
2116             Parameters:
2117                 thePnt1,thePnt2,thePnt3 Points, defining the circle.
2118                 theName Object name; when specified, this parameter is used
2119                         for result publication in the study. Otherwise, if automatic
2120                         publication is switched on, default value is used for result name.
2121
2122             Returns:
2123                 New GEOM.GEOM_Object, containing the created circle.
2124             """
2125             # Example: see GEOM_TestAll.py
2126             anObj = self.CurvesOp.MakeCircleThreePnt(thePnt1, thePnt2, thePnt3)
2127             RaiseIfFailed("MakeCircleThreePnt", self.CurvesOp)
2128             self._autoPublish(anObj, theName, "circle")
2129             return anObj
2130
2131         ## Create a circle, with given point1 as center,
2132         #  passing through the point2 as radius and laying in the plane,
2133         #  defined by all three given points.
2134         #  @param thePnt1,thePnt2,thePnt3 Points, defining the circle.
2135         #  @param theName Object name; when specified, this parameter is used
2136         #         for result publication in the study. Otherwise, if automatic
2137         #         publication is switched on, default value is used for result name.
2138         #
2139         #  @return New GEOM.GEOM_Object, containing the created circle.
2140         #
2141         #  @ref swig_MakeCircle "Example"
2142         @ManageTransactions("CurvesOp")
2143         def MakeCircleCenter2Pnt(self, thePnt1, thePnt2, thePnt3, theName=None):
2144             """
2145             Create a circle, with given point1 as center,
2146             passing through the point2 as radius and laying in the plane,
2147             defined by all three given points.
2148
2149             Parameters:
2150                 thePnt1,thePnt2,thePnt3 Points, defining the circle.
2151                 theName Object name; when specified, this parameter is used
2152                         for result publication in the study. Otherwise, if automatic
2153                         publication is switched on, default value is used for result name.
2154
2155             Returns:
2156                 New GEOM.GEOM_Object, containing the created circle.
2157             """
2158             # Example: see GEOM_example6.py
2159             anObj = self.CurvesOp.MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3)
2160             RaiseIfFailed("MakeCircleCenter2Pnt", self.CurvesOp)
2161             self._autoPublish(anObj, theName, "circle")
2162             return anObj
2163
2164         ## Create an ellipse with given center, normal vector and radiuses.
2165         #  @param thePnt Ellipse center.
2166         #  @param theVec Vector, normal to the plane of the ellipse.
2167         #  @param theRMajor Major ellipse radius.
2168         #  @param theRMinor Minor ellipse radius.
2169         #  @param theVecMaj Vector, direction of the ellipse's main axis.
2170         #  @param theName Object name; when specified, this parameter is used
2171         #         for result publication in the study. Otherwise, if automatic
2172         #         publication is switched on, default value is used for result name.
2173         #
2174         #  @return New GEOM.GEOM_Object, containing the created ellipse.
2175         #
2176         #  @ref tui_creation_ellipse "Example"
2177         @ManageTransactions("CurvesOp")
2178         def MakeEllipse(self, thePnt, theVec, theRMajor, theRMinor, theVecMaj=None, theName=None):
2179             """
2180             Create an ellipse with given center, normal vector and radiuses.
2181
2182             Parameters:
2183                 thePnt Ellipse center.
2184                 theVec Vector, normal to the plane of the ellipse.
2185                 theRMajor Major ellipse radius.
2186                 theRMinor Minor ellipse radius.
2187                 theVecMaj Vector, direction of the ellipse's main axis.
2188                 theName Object name; when specified, this parameter is used
2189                         for result publication in the study. Otherwise, if automatic
2190                         publication is switched on, default value is used for result name.
2191
2192             Returns:
2193                 New GEOM.GEOM_Object, containing the created ellipse.
2194             """
2195             # Example: see GEOM_TestAll.py
2196             theRMajor, theRMinor, Parameters = ParseParameters(theRMajor, theRMinor)
2197             if theVecMaj is not None:
2198                 anObj = self.CurvesOp.MakeEllipseVec(thePnt, theVec, theRMajor, theRMinor, theVecMaj)
2199             else:
2200                 anObj = self.CurvesOp.MakeEllipse(thePnt, theVec, theRMajor, theRMinor)
2201                 pass
2202             RaiseIfFailed("MakeEllipse", self.CurvesOp)
2203             anObj.SetParameters(Parameters)
2204             self._autoPublish(anObj, theName, "ellipse")
2205             return anObj
2206
2207         ## Create an ellipse with given radiuses.
2208         #  Center of the ellipse will be in the origin of global
2209         #  coordinate system and normal vector will be codirected with Z axis
2210         #  @param theRMajor Major ellipse radius.
2211         #  @param theRMinor Minor ellipse radius.
2212         #  @param theName Object name; when specified, this parameter is used
2213         #         for result publication in the study. Otherwise, if automatic
2214         #         publication is switched on, default value is used for result name.
2215         #
2216         #  @return New GEOM.GEOM_Object, containing the created ellipse.
2217         @ManageTransactions("CurvesOp")
2218         def MakeEllipseRR(self, theRMajor, theRMinor, theName=None):
2219             """
2220             Create an ellipse with given radiuses.
2221             Center of the ellipse will be in the origin of global
2222             coordinate system and normal vector will be codirected with Z axis
2223
2224             Parameters:
2225                 theRMajor Major ellipse radius.
2226                 theRMinor Minor ellipse radius.
2227                 theName Object name; when specified, this parameter is used
2228                         for result publication in the study. Otherwise, if automatic
2229                         publication is switched on, default value is used for result name.
2230
2231             Returns:
2232             New GEOM.GEOM_Object, containing the created ellipse.
2233             """
2234             anObj = self.CurvesOp.MakeEllipse(None, None, theRMajor, theRMinor)
2235             RaiseIfFailed("MakeEllipse", self.CurvesOp)
2236             self._autoPublish(anObj, theName, "ellipse")
2237             return anObj
2238
2239         ## Create a polyline on the set of points.
2240         #  @param thePoints Sequence of points for the polyline.
2241         #  @param theIsClosed If True, build a closed wire.
2242         #  @param theName Object name; when specified, this parameter is used
2243         #         for result publication in the study. Otherwise, if automatic
2244         #         publication is switched on, default value is used for result name.
2245         #
2246         #  @return New GEOM.GEOM_Object, containing the created polyline.
2247         #
2248         #  @ref tui_creation_curve "Example"
2249         @ManageTransactions("CurvesOp")
2250         def MakePolyline(self, thePoints, theIsClosed=False, theName=None):
2251             """
2252             Create a polyline on the set of points.
2253
2254             Parameters:
2255                 thePoints Sequence of points for the polyline.
2256                 theIsClosed If True, build a closed wire.
2257                 theName Object name; when specified, this parameter is used
2258                         for result publication in the study. Otherwise, if automatic
2259                         publication is switched on, default value is used for result name.
2260
2261             Returns:
2262                 New GEOM.GEOM_Object, containing the created polyline.
2263             """
2264             # Example: see GEOM_TestAll.py
2265             anObj = self.CurvesOp.MakePolyline(thePoints, theIsClosed)
2266             RaiseIfFailed("MakePolyline", self.CurvesOp)
2267             self._autoPublish(anObj, theName, "polyline")
2268             return anObj
2269
2270         ## Create bezier curve on the set of points.
2271         #  @param thePoints Sequence of points for the bezier curve.
2272         #  @param theIsClosed If True, build a closed curve.
2273         #  @param theName Object name; when specified, this parameter is used
2274         #         for result publication in the study. Otherwise, if automatic
2275         #         publication is switched on, default value is used for result name.
2276         #
2277         #  @return New GEOM.GEOM_Object, containing the created bezier curve.
2278         #
2279         #  @ref tui_creation_curve "Example"
2280         @ManageTransactions("CurvesOp")
2281         def MakeBezier(self, thePoints, theIsClosed=False, theName=None):
2282             """
2283             Create bezier curve on the set of points.
2284
2285             Parameters:
2286                 thePoints Sequence of points for the bezier curve.
2287                 theIsClosed If True, build a closed curve.
2288                 theName Object name; when specified, this parameter is used
2289                         for result publication in the study. Otherwise, if automatic
2290                         publication is switched on, default value is used for result name.
2291
2292             Returns:
2293                 New GEOM.GEOM_Object, containing the created bezier curve.
2294             """
2295             # Example: see GEOM_TestAll.py
2296             anObj = self.CurvesOp.MakeSplineBezier(thePoints, theIsClosed)
2297             RaiseIfFailed("MakeSplineBezier", self.CurvesOp)
2298             self._autoPublish(anObj, theName, "bezier")
2299             return anObj
2300
2301         ## Create B-Spline curve on the set of points.
2302         #  @param thePoints Sequence of points for the B-Spline curve.
2303         #  @param theIsClosed If True, build a closed curve.
2304         #  @param theDoReordering If TRUE, the algo does not follow the order of
2305         #                         \a thePoints but searches for the closest vertex.
2306         #  @param theName Object name; when specified, this parameter is used
2307         #         for result publication in the study. Otherwise, if automatic
2308         #         publication is switched on, default value is used for result name.
2309         #
2310         #  @return New GEOM.GEOM_Object, containing the created B-Spline curve.
2311         #
2312         #  @ref tui_creation_curve "Example"
2313         @ManageTransactions("CurvesOp")
2314         def MakeInterpol(self, thePoints, theIsClosed=False, theDoReordering=False, theName=None):
2315             """
2316             Create B-Spline curve on the set of points.
2317
2318             Parameters:
2319                 thePoints Sequence of points for the B-Spline curve.
2320                 theIsClosed If True, build a closed curve.
2321                 theDoReordering If True, the algo does not follow the order of
2322                                 thePoints but searches for the closest vertex.
2323                 theName Object name; when specified, this parameter is used
2324                         for result publication in the study. Otherwise, if automatic
2325                         publication is switched on, default value is used for result name.
2326
2327             Returns:
2328                 New GEOM.GEOM_Object, containing the created B-Spline curve.
2329             """
2330             # Example: see GEOM_TestAll.py
2331             anObj = self.CurvesOp.MakeSplineInterpolation(thePoints, theIsClosed, theDoReordering)
2332             RaiseIfFailed("MakeInterpol", self.CurvesOp)
2333             self._autoPublish(anObj, theName, "bspline")
2334             return anObj
2335
2336         ## Create B-Spline curve on the set of points.
2337         #  @param thePoints Sequence of points for the B-Spline curve.
2338         #  @param theFirstVec Vector object, defining the curve direction at its first point.
2339         #  @param theLastVec Vector object, defining the curve direction at its last point.
2340         #  @param theName Object name; when specified, this parameter is used
2341         #         for result publication in the study. Otherwise, if automatic
2342         #         publication is switched on, default value is used for result name.
2343         #
2344         #  @return New GEOM.GEOM_Object, containing the created B-Spline curve.
2345         #
2346         #  @ref tui_creation_curve "Example"
2347         @ManageTransactions("CurvesOp")
2348         def MakeInterpolWithTangents(self, thePoints, theFirstVec, theLastVec, theName=None):
2349             """
2350             Create B-Spline curve on the set of points.
2351
2352             Parameters:
2353                 thePoints Sequence of points for the B-Spline curve.
2354                 theFirstVec Vector object, defining the curve direction at its first point.
2355                 theLastVec Vector object, defining the curve direction at its last point.
2356                 theName Object name; when specified, this parameter is used
2357                         for result publication in the study. Otherwise, if automatic
2358                         publication is switched on, default value is used for result name.
2359
2360             Returns:
2361                 New GEOM.GEOM_Object, containing the created B-Spline curve.
2362             """
2363             # Example: see GEOM_TestAll.py
2364             anObj = self.CurvesOp.MakeSplineInterpolWithTangents(thePoints, theFirstVec, theLastVec)
2365             RaiseIfFailed("MakeInterpolWithTangents", self.CurvesOp)
2366             self._autoPublish(anObj, theName, "bspline")
2367             return anObj
2368
2369         ## Creates a curve using the parametric definition of the basic points.
2370         #  @param thexExpr parametric equation of the coordinates X.
2371         #  @param theyExpr parametric equation of the coordinates Y.
2372         #  @param thezExpr parametric equation of the coordinates Z.
2373         #  @param theParamMin the minimal value of the parameter.
2374         #  @param theParamMax the maximum value of the parameter.
2375         #  @param theParamStep the number of steps if theNewMethod = True, else step value of the parameter.
2376         #  @param theCurveType the type of the curve,
2377         #         one of GEOM.Polyline, GEOM.Bezier, GEOM.Interpolation.
2378         #  @param theNewMethod flag for switching to the new method if the flag is set to false a deprecated method is used which can lead to a bug.
2379         #  @param theName Object name; when specified, this parameter is used
2380         #         for result publication in the study. Otherwise, if automatic
2381         #         publication is switched on, default value is used for result name.
2382         #
2383         #  @return New GEOM.GEOM_Object, containing the created curve.
2384         #
2385         #  @ref tui_creation_curve "Example"
2386         @ManageTransactions("CurvesOp")
2387         def MakeCurveParametric(self, thexExpr, theyExpr, thezExpr,
2388                                 theParamMin, theParamMax, theParamStep, theCurveType, theNewMethod=False, theName=None ):
2389             """
2390             Creates a curve using the parametric definition of the basic points.
2391
2392             Parameters:
2393                 thexExpr parametric equation of the coordinates X.
2394                 theyExpr parametric equation of the coordinates Y.
2395                 thezExpr parametric equation of the coordinates Z.
2396                 theParamMin the minimal value of the parameter.
2397                 theParamMax the maximum value of the parameter.
2398                 theParamStep the number of steps if theNewMethod = True, else step value of the parameter.
2399                 theCurveType the type of the curve,
2400                              one of GEOM.Polyline, GEOM.Bezier, GEOM.Interpolation.
2401                 theNewMethod flag for switching to the new method if the flag is set to false a deprecated
2402                              method is used which can lead to a bug.
2403                 theName Object name; when specified, this parameter is used
2404                         for result publication in the study. Otherwise, if automatic
2405                         publication is switched on, default value is used for result name.
2406
2407             Returns:
2408                 New GEOM.GEOM_Object, containing the created curve.
2409             """
2410             theParamMin,theParamMax,theParamStep,Parameters = ParseParameters(theParamMin,theParamMax,theParamStep)
2411             if theNewMethod:
2412               anObj = self.CurvesOp.MakeCurveParametricNew(thexExpr,theyExpr,thezExpr,theParamMin,theParamMax,theParamStep,theCurveType)
2413             else:
2414               anObj = self.CurvesOp.MakeCurveParametric(thexExpr,theyExpr,thezExpr,theParamMin,theParamMax,theParamStep,theCurveType)
2415             RaiseIfFailed("MakeSplineInterpolation", self.CurvesOp)
2416             anObj.SetParameters(Parameters)
2417             self._autoPublish(anObj, theName, "curve")
2418             return anObj
2419
2420         ## Create an isoline curve on a face.
2421         #  @param theFace the face for which an isoline is created.
2422         #  @param IsUIsoline True for U-isoline creation; False for V-isoline
2423         #         creation.
2424         #  @param theParameter the U parameter for U-isoline or V parameter
2425         #         for V-isoline.
2426         #  @param theName Object name; when specified, this parameter is used
2427         #         for result publication in the study. Otherwise, if automatic
2428         #         publication is switched on, default value is used for result name.
2429         #
2430         #  @return New GEOM.GEOM_Object, containing the created isoline edge or
2431         #          a compound of edges.
2432         #
2433         #  @ref tui_creation_curve "Example"
2434         @ManageTransactions("CurvesOp")
2435         def MakeIsoline(self, theFace, IsUIsoline, theParameter, theName=None):
2436             """
2437             Create an isoline curve on a face.
2438
2439             Parameters:
2440                 theFace the face for which an isoline is created.
2441                 IsUIsoline True for U-isoline creation; False for V-isoline
2442                            creation.
2443                 theParameter the U parameter for U-isoline or V parameter
2444                              for V-isoline.
2445                 theName Object name; when specified, this parameter is used
2446                         for result publication in the study. Otherwise, if automatic
2447                         publication is switched on, default value is used for result name.
2448
2449             Returns:
2450                 New GEOM.GEOM_Object, containing the created isoline edge or a
2451                 compound of edges.
2452             """
2453             # Example: see GEOM_TestAll.py
2454             anObj = self.CurvesOp.MakeIsoline(theFace, IsUIsoline, theParameter)
2455             RaiseIfFailed("MakeIsoline", self.CurvesOp)
2456             if IsUIsoline:
2457                 self._autoPublish(anObj, theName, "U-Isoline")
2458             else:
2459                 self._autoPublish(anObj, theName, "V-Isoline")
2460             return anObj
2461
2462         # end of l4_curves
2463         ## @}
2464
2465         ## @addtogroup l3_sketcher
2466         ## @{
2467
2468         ## Create a sketcher (wire or face), following the textual description,
2469         #  passed through <VAR>theCommand</VAR> argument. \n
2470         #  Edges of the resulting wire or face will be arcs of circles and/or linear segments. \n
2471         #  Format of the description string have to be the following:
2472         #
2473         #  "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"
2474         #
2475         #  Where:
2476         #  - x1, y1 are coordinates of the first sketcher point (zero by default),
2477         #  - CMD is one of
2478         #     - "R angle" : Set the direction by angle
2479         #     - "D dx dy" : Set the direction by DX & DY
2480         #     .
2481         #       \n
2482         #     - "TT x y" : Create segment by point at X & Y
2483         #     - "T dx dy" : Create segment by point with DX & DY
2484         #     - "L length" : Create segment by direction & Length
2485         #     - "IX x" : Create segment by direction & Intersect. X
2486         #     - "IY y" : Create segment by direction & Intersect. Y
2487         #     .
2488         #       \n
2489         #     - "C radius length" : Create arc by direction, radius and length(in degree)
2490         #     - "AA x y": Create arc by point at X & Y
2491         #     - "A dx dy" : Create arc by point with DX & DY
2492         #     - "UU x y radius flag1": Create arc by point at X & Y with given radiUs
2493         #     - "U dx dy radius flag1" : Create arc by point with DX & DY with given radiUs
2494         #     - "EE x y xc yc flag1 flag2": Create arc by point at X & Y with given cEnter coordinates
2495         #     - "E dx dy dxc dyc radius flag1 flag2" : Create arc by point with DX & DY with given cEnter coordinates
2496         #     .
2497         #       \n
2498         #     - "WW" : Close Wire (to finish)
2499         #     - "WF" : Close Wire and build face (to finish)
2500         #     .
2501         #        \n
2502         #  - Flag1 (= reverse) is 0 or 2 ...
2503         #     - if 0 the drawn arc is the one of lower angle (< Pi)
2504         #     - if 2 the drawn arc ius the one of greater angle (> Pi)
2505         #     .
2506         #        \n
2507         #  - Flag2 (= control tolerance) is 0 or 1 ...
2508         #     - if 0 the specified end point can be at a distance of the arc greater than the tolerance (10^-7)
2509         #     - if 1 the wire is built only if the end point is on the arc
2510         #       with a tolerance of 10^-7 on the distance else the creation fails
2511         #
2512         #  @param theCommand String, defining the sketcher in local
2513         #                    coordinates of the working plane.
2514         #  @param theWorkingPlane Nine double values, defining origin,
2515         #                         OZ and OX directions of the working plane.
2516         #  @param theName Object name; when specified, this parameter is used
2517         #         for result publication in the study. Otherwise, if automatic
2518         #         publication is switched on, default value is used for result name.
2519         #
2520         #  @return New GEOM.GEOM_Object, containing the created wire.
2521         #
2522         #  @ref tui_sketcher_page "Example"
2523         @ManageTransactions("CurvesOp")
2524         def MakeSketcher(self, theCommand, theWorkingPlane = [0,0,0, 0,0,1, 1,0,0], theName=None):
2525             """
2526             Create a sketcher (wire or face), following the textual description, passed
2527             through theCommand argument.
2528             Edges of the resulting wire or face will be arcs of circles and/or linear segments.
2529             Format of the description string have to be the following:
2530                 "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"
2531             Where:
2532             - x1, y1 are coordinates of the first sketcher point (zero by default),
2533             - CMD is one of
2534                - "R angle" : Set the direction by angle
2535                - "D dx dy" : Set the direction by DX & DY
2536
2537                - "TT x y" : Create segment by point at X & Y
2538                - "T dx dy" : Create segment by point with DX & DY
2539                - "L length" : Create segment by direction & Length
2540                - "IX x" : Create segment by direction & Intersect. X
2541                - "IY y" : Create segment by direction & Intersect. Y
2542
2543                - "C radius length" : Create arc by direction, radius and length(in degree)
2544                - "AA x y": Create arc by point at X & Y
2545                - "A dx dy" : Create arc by point with DX & DY
2546                - "UU x y radius flag1": Create arc by point at X & Y with given radiUs
2547                - "U dx dy radius flag1" : Create arc by point with DX & DY with given radiUs
2548                - "EE x y xc yc flag1 flag2": Create arc by point at X & Y with given cEnter coordinates
2549                - "E dx dy dxc dyc radius flag1 flag2" : Create arc by point with DX & DY with given cEnter coordinates
2550
2551                - "WW" : Close Wire (to finish)
2552                - "WF" : Close Wire and build face (to finish)
2553
2554             - Flag1 (= reverse) is 0 or 2 ...
2555                - if 0 the drawn arc is the one of lower angle (< Pi)
2556                - if 2 the drawn arc ius the one of greater angle (> Pi)
2557
2558             - Flag2 (= control tolerance) is 0 or 1 ...
2559                - if 0 the specified end point can be at a distance of the arc greater than the tolerance (10^-7)
2560                - if 1 the wire is built only if the end point is on the arc
2561                  with a tolerance of 10^-7 on the distance else the creation fails
2562
2563             Parameters:
2564                 theCommand String, defining the sketcher in local
2565                            coordinates of the working plane.
2566                 theWorkingPlane Nine double values, defining origin,
2567                                 OZ and OX directions of the working plane.
2568                 theName Object name; when specified, this parameter is used
2569                         for result publication in the study. Otherwise, if automatic
2570                         publication is switched on, default value is used for result name.
2571
2572             Returns:
2573                 New GEOM.GEOM_Object, containing the created wire.
2574             """
2575             # Example: see GEOM_TestAll.py
2576             theCommand,Parameters = ParseSketcherCommand(theCommand)
2577             anObj = self.CurvesOp.MakeSketcher(theCommand, theWorkingPlane)
2578             RaiseIfFailed("MakeSketcher", self.CurvesOp)
2579             anObj.SetParameters(Parameters)
2580             self._autoPublish(anObj, theName, "wire")
2581             return anObj
2582
2583         ## Create a sketcher (wire or face), following the textual description,
2584         #  passed through <VAR>theCommand</VAR> argument. \n
2585         #  For format of the description string see MakeSketcher() method.\n
2586         #  @param theCommand String, defining the sketcher in local
2587         #                    coordinates of the working plane.
2588         #  @param theWorkingPlane Planar Face or LCS(Marker) of the working plane.
2589         #  @param theName Object name; when specified, this parameter is used
2590         #         for result publication in the study. Otherwise, if automatic
2591         #         publication is switched on, default value is used for result name.
2592         #
2593         #  @return New GEOM.GEOM_Object, containing the created wire.
2594         #
2595         #  @ref tui_sketcher_page "Example"
2596         @ManageTransactions("CurvesOp")
2597         def MakeSketcherOnPlane(self, theCommand, theWorkingPlane, theName=None):
2598             """
2599             Create a sketcher (wire or face), following the textual description,
2600             passed through theCommand argument.
2601             For format of the description string see geompy.MakeSketcher() method.
2602
2603             Parameters:
2604                 theCommand String, defining the sketcher in local
2605                            coordinates of the working plane.
2606                 theWorkingPlane Planar Face or LCS(Marker) of the working plane.
2607                 theName Object name; when specified, this parameter is used
2608                         for result publication in the study. Otherwise, if automatic
2609                         publication is switched on, default value is used for result name.
2610
2611             Returns:
2612                 New GEOM.GEOM_Object, containing the created wire.
2613             """
2614             theCommand,Parameters = ParseSketcherCommand(theCommand)
2615             anObj = self.CurvesOp.MakeSketcherOnPlane(theCommand, theWorkingPlane)
2616             RaiseIfFailed("MakeSketcherOnPlane", self.CurvesOp)
2617             anObj.SetParameters(Parameters)
2618             self._autoPublish(anObj, theName, "wire")
2619             return anObj
2620
2621         ## Obtain a 2D sketcher interface
2622         #  @return An instance of @ref gsketcher.Sketcher2D "Sketcher2D" interface
2623         def Sketcher2D (self):
2624             """
2625             Obtain a 2D sketcher interface.
2626
2627             Example of usage:
2628                sk = geompy.Sketcher2D()
2629                sk.addPoint(20, 20)
2630                sk.addSegmentRelative(15, 70)
2631                sk.addSegmentPerpY(50)
2632                sk.addArcRadiusRelative(25, 15, 14.5, 0)
2633                sk.addArcCenterAbsolute(1, 1, 50, 50, 0, 0)
2634                sk.addArcDirectionRadiusLength(20, 20, 101, 162.13)
2635                sk.close()
2636                Sketch_1 = sk.wire(geomObj_1)
2637             """
2638             sk = Sketcher2D (self)
2639             return sk
2640
2641         ## Create a sketcher wire, following the numerical description,
2642         #  passed through <VAR>theCoordinates</VAR> argument. \n
2643         #  @param theCoordinates double values, defining points to create a wire,
2644         #                                                      passing from it.
2645         #  @param theName Object name; when specified, this parameter is used
2646         #         for result publication in the study. Otherwise, if automatic
2647         #         publication is switched on, default value is used for result name.
2648         #
2649         #  @return New GEOM.GEOM_Object, containing the created wire.
2650         #
2651         #  @ref tui_3dsketcher_page "Example"
2652         @ManageTransactions("CurvesOp")
2653         def Make3DSketcher(self, theCoordinates, theName=None):
2654             """
2655             Create a sketcher wire, following the numerical description,
2656             passed through theCoordinates argument.
2657
2658             Parameters:
2659                 theCoordinates double values, defining points to create a wire,
2660                                passing from it.
2661                 theName Object name; when specified, this parameter is used
2662                         for result publication in the study. Otherwise, if automatic
2663                         publication is switched on, default value is used for result name.
2664
2665             Returns:
2666                 New GEOM_Object, containing the created wire.
2667             """
2668             theCoordinates,Parameters = ParseParameters(theCoordinates)
2669             anObj = self.CurvesOp.Make3DSketcher(theCoordinates)
2670             RaiseIfFailed("Make3DSketcher", self.CurvesOp)
2671             anObj.SetParameters(Parameters)
2672             self._autoPublish(anObj, theName, "wire")
2673             return anObj
2674
2675         ## Obtain a 3D sketcher interface
2676         #  @return An instance of @ref gsketcher.Sketcher3D "Sketcher3D" interface
2677         #
2678         #  @ref tui_3dsketcher_page "Example"
2679         def Sketcher3D (self):
2680             """
2681             Obtain a 3D sketcher interface.
2682
2683             Example of usage:
2684                 sk = geompy.Sketcher3D()
2685                 sk.addPointsAbsolute(0,0,0, 70,0,0)
2686                 sk.addPointsRelative(0, 0, 130)
2687                 sk.addPointAnglesLength("OXY", 50, 0, 100)
2688                 sk.addPointAnglesLength("OXZ", 30, 80, 130)
2689                 sk.close()
2690                 a3D_Sketcher_1 = sk.wire()
2691             """
2692             sk = Sketcher3D (self)
2693             return sk
2694
2695         ## Obtain a 2D polyline creation interface
2696         #  @return An instance of @ref gsketcher.Polyline2D "Polyline2D" interface
2697         #
2698         #  @ref tui_3dsketcher_page "Example"
2699         def Polyline2D (self):
2700             """
2701             Obtain a 2D polyline creation interface.
2702
2703             Example of usage:
2704                 pl = geompy.Polyline2D()
2705                 pl.addSection("section 1", GEOM.Polyline, True)
2706                 pl.addPoints(0, 0, 10, 0, 10, 10)
2707                 pl.addSection("section 2", GEOM.Interpolation, False)
2708                 pl.addPoints(20, 0, 30, 0, 30, 10)
2709                 resultObj = pl.result(WorkingPlane)
2710             """
2711             pl = Polyline2D (self)
2712             return pl
2713
2714         # end of l3_sketcher
2715         ## @}
2716
2717         ## @addtogroup l3_3d_primitives
2718         ## @{
2719
2720         ## Create a box by coordinates of two opposite vertices.
2721         #
2722         #  @param x1,y1,z1 double values, defining first point it.
2723         #  @param x2,y2,z2 double values, defining first point it.
2724         #  @param theName Object name; when specified, this parameter is used
2725         #         for result publication in the study. Otherwise, if automatic
2726         #         publication is switched on, default value is used for result name.
2727         #
2728         #  @return New GEOM.GEOM_Object, containing the created box.
2729         #
2730         #  @ref tui_creation_box "Example"
2731         def MakeBox(self, x1, y1, z1, x2, y2, z2, theName=None):
2732             """
2733             Create a box by coordinates of two opposite vertices.
2734
2735             Parameters:
2736                 x1,y1,z1 double values, defining first point.
2737                 x2,y2,z2 double values, defining second point.
2738                 theName Object name; when specified, this parameter is used
2739                         for result publication in the study. Otherwise, if automatic
2740                         publication is switched on, default value is used for result name.
2741
2742             Returns:
2743                 New GEOM.GEOM_Object, containing the created box.
2744             """
2745             # Example: see GEOM_TestAll.py
2746             pnt1 = self.MakeVertex(x1,y1,z1)
2747             pnt2 = self.MakeVertex(x2,y2,z2)
2748             # note: auto-publishing is done in self.MakeBoxTwoPnt()
2749             return self.MakeBoxTwoPnt(pnt1, pnt2, theName)
2750
2751         ## Create a box with specified dimensions along the coordinate axes
2752         #  and with edges, parallel to the coordinate axes.
2753         #  Center of the box will be at point (DX/2, DY/2, DZ/2).
2754         #  @param theDX Length of Box edges, parallel to OX axis.
2755         #  @param theDY Length of Box edges, parallel to OY axis.
2756         #  @param theDZ Length of Box edges, parallel to OZ axis.
2757         #  @param theName Object name; when specified, this parameter is used
2758         #         for result publication in the study. Otherwise, if automatic
2759         #         publication is switched on, default value is used for result name.
2760         #
2761         #  @return New GEOM.GEOM_Object, containing the created box.
2762         #
2763         #  @ref tui_creation_box "Example"
2764         @ManageTransactions("PrimOp")
2765         def MakeBoxDXDYDZ(self, theDX, theDY, theDZ, theName=None):
2766             """
2767             Create a box with specified dimensions along the coordinate axes
2768             and with edges, parallel to the coordinate axes.
2769             Center of the box will be at point (DX/2, DY/2, DZ/2).
2770
2771             Parameters:
2772                 theDX Length of Box edges, parallel to OX axis.
2773                 theDY Length of Box edges, parallel to OY axis.
2774                 theDZ Length of Box edges, parallel to OZ axis.
2775                 theName Object name; when specified, this parameter is used
2776                         for result publication in the study. Otherwise, if automatic
2777                         publication is switched on, default value is used for result name.
2778
2779             Returns:
2780                 New GEOM.GEOM_Object, containing the created box.
2781             """
2782             # Example: see GEOM_TestAll.py
2783             theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
2784             anObj = self.PrimOp.MakeBoxDXDYDZ(theDX, theDY, theDZ)
2785             RaiseIfFailed("MakeBoxDXDYDZ", self.PrimOp)
2786             anObj.SetParameters(Parameters)
2787             self._autoPublish(anObj, theName, "box")
2788             return anObj
2789
2790         ## Create a box with two specified opposite vertices,
2791         #  and with edges, parallel to the coordinate axes
2792         #  @param thePnt1 First of two opposite vertices.
2793         #  @param thePnt2 Second of two opposite vertices.
2794         #  @param theName Object name; when specified, this parameter is used
2795         #         for result publication in the study. Otherwise, if automatic
2796         #         publication is switched on, default value is used for result name.
2797         #
2798         #  @return New GEOM.GEOM_Object, containing the created box.
2799         #
2800         #  @ref tui_creation_box "Example"
2801         @ManageTransactions("PrimOp")
2802         def MakeBoxTwoPnt(self, thePnt1, thePnt2, theName=None):
2803             """
2804             Create a box with two specified opposite vertices,
2805             and with edges, parallel to the coordinate axes
2806
2807             Parameters:
2808                 thePnt1 First of two opposite vertices.
2809                 thePnt2 Second of two opposite vertices.
2810                 theName Object name; when specified, this parameter is used
2811                         for result publication in the study. Otherwise, if automatic
2812                         publication is switched on, default value is used for result name.
2813
2814             Returns:
2815                 New GEOM.GEOM_Object, containing the created box.
2816             """
2817             # Example: see GEOM_TestAll.py
2818             anObj = self.PrimOp.MakeBoxTwoPnt(thePnt1, thePnt2)
2819             RaiseIfFailed("MakeBoxTwoPnt", self.PrimOp)
2820             self._autoPublish(anObj, theName, "box")
2821             return anObj
2822
2823         ## Create a face with specified dimensions with edges parallel to coordinate axes.
2824         #  @param theH height of Face.
2825         #  @param theW width of Face.
2826         #  @param theOrientation face orientation: 1-OXY, 2-OYZ, 3-OZX
2827         #  @param theName Object name; when specified, this parameter is used
2828         #         for result publication in the study. Otherwise, if automatic
2829         #         publication is switched on, default value is used for result name.
2830         #
2831         #  @return New GEOM.GEOM_Object, containing the created face.
2832         #
2833         #  @ref tui_creation_face "Example"
2834         @ManageTransactions("PrimOp")
2835         def MakeFaceHW(self, theH, theW, theOrientation, theName=None):
2836             """
2837             Create a face with specified dimensions with edges parallel to coordinate axes.
2838
2839             Parameters:
2840                 theH height of Face.
2841                 theW width of Face.
2842                 theOrientation face orientation: 1-OXY, 2-OYZ, 3-OZX
2843                 theName Object name; when specified, this parameter is used
2844                         for result publication in the study. Otherwise, if automatic
2845                         publication is switched on, default value is used for result name.
2846
2847             Returns:
2848                 New GEOM.GEOM_Object, containing the created face.
2849             """
2850             # Example: see GEOM_TestAll.py
2851             theH,theW,Parameters = ParseParameters(theH, theW)
2852             anObj = self.PrimOp.MakeFaceHW(theH, theW, theOrientation)
2853             RaiseIfFailed("MakeFaceHW", self.PrimOp)
2854             anObj.SetParameters(Parameters)
2855             self._autoPublish(anObj, theName, "rectangle")
2856             return anObj
2857
2858         ## Create a face from another plane and two sizes,
2859         #  vertical size and horisontal size.
2860         #  @param theObj   Normale vector to the creating face or
2861         #  the face object.
2862         #  @param theH     Height (vertical size).
2863         #  @param theW     Width (horisontal size).
2864         #  @param theName Object name; when specified, this parameter is used
2865         #         for result publication in the study. Otherwise, if automatic
2866         #         publication is switched on, default value is used for result name.
2867         #
2868         #  @return New GEOM.GEOM_Object, containing the created face.
2869         #
2870         #  @ref tui_creation_face "Example"
2871         @ManageTransactions("PrimOp")
2872         def MakeFaceObjHW(self, theObj, theH, theW, theName=None):
2873             """
2874             Create a face from another plane and two sizes,
2875             vertical size and horisontal size.
2876
2877             Parameters:
2878                 theObj   Normale vector to the creating face or
2879                          the face object.
2880                 theH     Height (vertical size).
2881                 theW     Width (horisontal size).
2882                 theName Object name; when specified, this parameter is used
2883                         for result publication in the study. Otherwise, if automatic
2884                         publication is switched on, default value is used for result name.
2885
2886             Returns:
2887                 New GEOM_Object, containing the created face.
2888             """
2889             # Example: see GEOM_TestAll.py
2890             theH,theW,Parameters = ParseParameters(theH, theW)
2891             anObj = self.PrimOp.MakeFaceObjHW(theObj, theH, theW)
2892             RaiseIfFailed("MakeFaceObjHW", self.PrimOp)
2893             anObj.SetParameters(Parameters)
2894             self._autoPublish(anObj, theName, "rectangle")
2895             return anObj
2896
2897         ## Create a disk with given center, normal vector and radius.
2898         #  @param thePnt Disk center.
2899         #  @param theVec Vector, normal to the plane of the disk.
2900         #  @param theR Disk radius.
2901         #  @param theName Object name; when specified, this parameter is used
2902         #         for result publication in the study. Otherwise, if automatic
2903         #         publication is switched on, default value is used for result name.
2904         #
2905         #  @return New GEOM.GEOM_Object, containing the created disk.
2906         #
2907         #  @ref tui_creation_disk "Example"
2908         @ManageTransactions("PrimOp")
2909         def MakeDiskPntVecR(self, thePnt, theVec, theR, theName=None):
2910             """
2911             Create a disk with given center, normal vector and radius.
2912
2913             Parameters:
2914                 thePnt Disk center.
2915                 theVec Vector, normal to the plane of the disk.
2916                 theR Disk radius.
2917                 theName Object name; when specified, this parameter is used
2918                         for result publication in the study. Otherwise, if automatic
2919                         publication is switched on, default value is used for result name.
2920
2921             Returns:
2922                 New GEOM.GEOM_Object, containing the created disk.
2923             """
2924             # Example: see GEOM_TestAll.py
2925             theR,Parameters = ParseParameters(theR)
2926             anObj = self.PrimOp.MakeDiskPntVecR(thePnt, theVec, theR)
2927             RaiseIfFailed("MakeDiskPntVecR", self.PrimOp)
2928             anObj.SetParameters(Parameters)
2929             self._autoPublish(anObj, theName, "disk")
2930             return anObj
2931
2932         ## Create a disk, passing through three given points
2933         #  @param thePnt1,thePnt2,thePnt3 Points, defining the disk.
2934         #  @param theName Object name; when specified, this parameter is used
2935         #         for result publication in the study. Otherwise, if automatic
2936         #         publication is switched on, default value is used for result name.
2937         #
2938         #  @return New GEOM.GEOM_Object, containing the created disk.
2939         #
2940         #  @ref tui_creation_disk "Example"
2941         @ManageTransactions("PrimOp")
2942         def MakeDiskThreePnt(self, thePnt1, thePnt2, thePnt3, theName=None):
2943             """
2944             Create a disk, passing through three given points
2945
2946             Parameters:
2947                 thePnt1,thePnt2,thePnt3 Points, defining the disk.
2948                 theName Object name; when specified, this parameter is used
2949                         for result publication in the study. Otherwise, if automatic
2950                         publication is switched on, default value is used for result name.
2951
2952             Returns:
2953                 New GEOM.GEOM_Object, containing the created disk.
2954             """
2955             # Example: see GEOM_TestAll.py
2956             anObj = self.PrimOp.MakeDiskThreePnt(thePnt1, thePnt2, thePnt3)
2957             RaiseIfFailed("MakeDiskThreePnt", self.PrimOp)
2958             self._autoPublish(anObj, theName, "disk")
2959             return anObj
2960
2961         ## Create a disk with specified dimensions along OX-OY coordinate axes.
2962         #  @param theR Radius of Face.
2963         #  @param theOrientation set the orientation belong axis OXY or OYZ or OZX
2964         #  @param theName Object name; when specified, this parameter is used
2965         #         for result publication in the study. Otherwise, if automatic
2966         #         publication is switched on, default value is used for result name.
2967         #
2968         #  @return New GEOM.GEOM_Object, containing the created disk.
2969         #
2970         #  @ref tui_creation_face "Example"
2971         @ManageTransactions("PrimOp")
2972         def MakeDiskR(self, theR, theOrientation, theName=None):
2973             """
2974             Create a disk with specified dimensions along OX-OY coordinate axes.
2975
2976             Parameters:
2977                 theR Radius of Face.
2978                 theOrientation set the orientation belong axis OXY or OYZ or OZX
2979                 theName Object name; when specified, this parameter is used
2980                         for result publication in the study. Otherwise, if automatic
2981                         publication is switched on, default value is used for result name.
2982
2983             Returns:
2984                 New GEOM.GEOM_Object, containing the created disk.
2985
2986             Example of usage:
2987                 Disk3 = geompy.MakeDiskR(100., 1)
2988             """
2989             # Example: see GEOM_TestAll.py
2990             theR,Parameters = ParseParameters(theR)
2991             anObj = self.PrimOp.MakeDiskR(theR, theOrientation)
2992             RaiseIfFailed("MakeDiskR", self.PrimOp)
2993             anObj.SetParameters(Parameters)
2994             self._autoPublish(anObj, theName, "disk")
2995             return anObj
2996
2997         ## Create a cylinder with given base point, axis, radius and height.
2998         #  @param thePnt Central point of cylinder base.
2999         #  @param theAxis Cylinder axis.
3000         #  @param theR Cylinder radius.
3001         #  @param theH Cylinder height.
3002         #  @param theName Object name; when specified, this parameter is used
3003         #         for result publication in the study. Otherwise, if automatic
3004         #         publication is switched on, default value is used for result name.
3005         #
3006         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3007         #
3008         #  @ref tui_creation_cylinder "Example"
3009         @ManageTransactions("PrimOp")
3010         def MakeCylinder(self, thePnt, theAxis, theR, theH, theName=None):
3011             """
3012             Create a cylinder with given base point, axis, radius and height.
3013
3014             Parameters:
3015                 thePnt Central point of cylinder base.
3016                 theAxis Cylinder axis.
3017                 theR Cylinder radius.
3018                 theH Cylinder height.
3019                 theName Object name; when specified, this parameter is used
3020                         for result publication in the study. Otherwise, if automatic
3021                         publication is switched on, default value is used for result name.
3022
3023             Returns:
3024                 New GEOM.GEOM_Object, containing the created cylinder.
3025             """
3026             # Example: see GEOM_TestAll.py
3027             theR,theH,Parameters = ParseParameters(theR, theH)
3028             anObj = self.PrimOp.MakeCylinderPntVecRH(thePnt, theAxis, theR, theH)
3029             RaiseIfFailed("MakeCylinderPntVecRH", self.PrimOp)
3030             anObj.SetParameters(Parameters)
3031             self._autoPublish(anObj, theName, "cylinder")
3032             return anObj
3033             
3034         ## Create a portion of cylinder with given base point, axis, radius, height and angle.
3035         #  @param thePnt Central point of cylinder base.
3036         #  @param theAxis Cylinder axis.
3037         #  @param theR Cylinder radius.
3038         #  @param theH Cylinder height.
3039         #  @param theA Cylinder angle in radians.
3040         #  @param theName Object name; when specified, this parameter is used
3041         #         for result publication in the study. Otherwise, if automatic
3042         #         publication is switched on, default value is used for result name.
3043         #
3044         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3045         #
3046         #  @ref tui_creation_cylinder "Example"
3047         @ManageTransactions("PrimOp")
3048         def MakeCylinderA(self, thePnt, theAxis, theR, theH, theA, theName=None):
3049             """
3050             Create a portion of cylinder with given base point, axis, radius, height and angle.
3051
3052             Parameters:
3053                 thePnt Central point of cylinder base.
3054                 theAxis Cylinder axis.
3055                 theR Cylinder radius.
3056                 theH Cylinder height.
3057                 theA Cylinder angle in radians.
3058                 theName Object name; when specified, this parameter is used
3059                         for result publication in the study. Otherwise, if automatic
3060                         publication is switched on, default value is used for result name.
3061
3062             Returns:
3063                 New GEOM.GEOM_Object, containing the created cylinder.
3064             """
3065             # Example: see GEOM_TestAll.py
3066             flag = False
3067             if isinstance(theA,str):
3068                 flag = True
3069             theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
3070             if flag:
3071                 theA = theA*math.pi/180.
3072             if theA<=0. or theA>=2*math.pi:
3073               raise ValueError("The angle parameter should be strictly between 0 and 2*pi.")
3074             anObj = self.PrimOp.MakeCylinderPntVecRHA(thePnt, theAxis, theR, theH, theA)
3075             RaiseIfFailed("MakeCylinderPntVecRHA", self.PrimOp)
3076             anObj.SetParameters(Parameters)
3077             self._autoPublish(anObj, theName, "cylinder")
3078             return anObj
3079
3080         ## Create a cylinder with given radius and height at
3081         #  the origin of coordinate system. Axis of the cylinder
3082         #  will be collinear to the OZ axis of the coordinate system.
3083         #  @param theR Cylinder radius.
3084         #  @param theH Cylinder height.
3085         #  @param theName Object name; when specified, this parameter is used
3086         #         for result publication in the study. Otherwise, if automatic
3087         #         publication is switched on, default value is used for result name.
3088         #
3089         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3090         #
3091         #  @ref tui_creation_cylinder "Example"
3092         @ManageTransactions("PrimOp")
3093         def MakeCylinderRH(self, theR, theH, theName=None):
3094             """
3095             Create a cylinder with given radius and height at
3096             the origin of coordinate system. Axis of the cylinder
3097             will be collinear to the OZ axis of the coordinate system.
3098
3099             Parameters:
3100                 theR Cylinder radius.
3101                 theH Cylinder height.
3102                 theName Object name; when specified, this parameter is used
3103                         for result publication in the study. Otherwise, if automatic
3104                         publication is switched on, default value is used for result name.
3105
3106             Returns:
3107                 New GEOM.GEOM_Object, containing the created cylinder.
3108             """
3109             # Example: see GEOM_TestAll.py
3110             theR,theH,Parameters = ParseParameters(theR, theH)
3111             anObj = self.PrimOp.MakeCylinderRH(theR, theH)
3112             RaiseIfFailed("MakeCylinderRH", self.PrimOp)
3113             anObj.SetParameters(Parameters)
3114             self._autoPublish(anObj, theName, "cylinder")
3115             return anObj
3116             
3117         ## Create a portion of cylinder with given radius, height and angle at
3118         #  the origin of coordinate system. Axis of the cylinder
3119         #  will be collinear to the OZ axis of the coordinate system.
3120         #  @param theR Cylinder radius.
3121         #  @param theH Cylinder height.
3122         #  @param theA Cylinder angle in radians.
3123         #  @param theName Object name; when specified, this parameter is used
3124         #         for result publication in the study. Otherwise, if automatic
3125         #         publication is switched on, default value is used for result name.
3126         #
3127         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3128         #
3129         #  @ref tui_creation_cylinder "Example"
3130         @ManageTransactions("PrimOp")
3131         def MakeCylinderRHA(self, theR, theH, theA, theName=None):
3132             """
3133             Create a portion of cylinder with given radius, height and angle at
3134             the origin of coordinate system. Axis of the cylinder
3135             will be collinear to the OZ axis of the coordinate system.
3136
3137             Parameters:
3138                 theR Cylinder radius.
3139                 theH Cylinder height.
3140                 theA Cylinder angle in radians.
3141                 theName Object name; when specified, this parameter is used
3142                         for result publication in the study. Otherwise, if automatic
3143                         publication is switched on, default value is used for result name.
3144
3145             Returns:
3146                 New GEOM.GEOM_Object, containing the created cylinder.
3147             """
3148             # Example: see GEOM_TestAll.py
3149             flag = False
3150             if isinstance(theA,str):
3151                 flag = True
3152             theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
3153             if flag:
3154                 theA = theA*math.pi/180.
3155             if theA<=0. or theA>=2*math.pi:
3156               raise ValueError("The angle parameter should be strictly between 0 and 2*pi.")
3157             anObj = self.PrimOp.MakeCylinderRHA(theR, theH, theA)
3158             RaiseIfFailed("MakeCylinderRHA", self.PrimOp)
3159             anObj.SetParameters(Parameters)
3160             self._autoPublish(anObj, theName, "cylinder")
3161             return anObj
3162
3163         ## Create a sphere with given center and radius.
3164         #  @param thePnt Sphere center.
3165         #  @param theR Sphere radius.
3166         #  @param theName Object name; when specified, this parameter is used
3167         #         for result publication in the study. Otherwise, if automatic
3168         #         publication is switched on, default value is used for result name.
3169         #
3170         #  @return New GEOM.GEOM_Object, containing the created sphere.
3171         #
3172         #  @ref tui_creation_sphere "Example"
3173         @ManageTransactions("PrimOp")
3174         def MakeSpherePntR(self, thePnt, theR, theName=None):
3175             """
3176             Create a sphere with given center and radius.
3177
3178             Parameters:
3179                 thePnt Sphere center.
3180                 theR Sphere radius.
3181                 theName Object name; when specified, this parameter is used
3182                         for result publication in the study. Otherwise, if automatic
3183                         publication is switched on, default value is used for result name.
3184
3185             Returns:
3186                 New GEOM.GEOM_Object, containing the created sphere.
3187             """
3188             # Example: see GEOM_TestAll.py
3189             theR,Parameters = ParseParameters(theR)
3190             anObj = self.PrimOp.MakeSpherePntR(thePnt, theR)
3191             RaiseIfFailed("MakeSpherePntR", self.PrimOp)
3192             anObj.SetParameters(Parameters)
3193             self._autoPublish(anObj, theName, "sphere")
3194             return anObj
3195
3196         ## Create a sphere with given center and radius.
3197         #  @param x,y,z Coordinates of sphere center.
3198         #  @param theR Sphere radius.
3199         #  @param theName Object name; when specified, this parameter is used
3200         #         for result publication in the study. Otherwise, if automatic
3201         #         publication is switched on, default value is used for result name.
3202         #
3203         #  @return New GEOM.GEOM_Object, containing the created sphere.
3204         #
3205         #  @ref tui_creation_sphere "Example"
3206         def MakeSphere(self, x, y, z, theR, theName=None):
3207             """
3208             Create a sphere with given center and radius.
3209
3210             Parameters:
3211                 x,y,z Coordinates of sphere center.
3212                 theR Sphere radius.
3213                 theName Object name; when specified, this parameter is used
3214                         for result publication in the study. Otherwise, if automatic
3215                         publication is switched on, default value is used for result name.
3216
3217             Returns:
3218                 New GEOM.GEOM_Object, containing the created sphere.
3219             """
3220             # Example: see GEOM_TestAll.py
3221             point = self.MakeVertex(x, y, z)
3222             # note: auto-publishing is done in self.MakeSpherePntR()
3223             anObj = self.MakeSpherePntR(point, theR, theName)
3224             return anObj
3225
3226         ## Create a sphere with given radius at the origin of coordinate system.
3227         #  @param theR Sphere radius.
3228         #  @param theName Object name; when specified, this parameter is used
3229         #         for result publication in the study. Otherwise, if automatic
3230         #         publication is switched on, default value is used for result name.
3231         #
3232         #  @return New GEOM.GEOM_Object, containing the created sphere.
3233         #
3234         #  @ref tui_creation_sphere "Example"
3235         @ManageTransactions("PrimOp")
3236         def MakeSphereR(self, theR, theName=None):
3237             """
3238             Create a sphere with given radius at the origin of coordinate system.
3239
3240             Parameters:
3241                 theR Sphere radius.
3242                 theName Object name; when specified, this parameter is used
3243                         for result publication in the study. Otherwise, if automatic
3244                         publication is switched on, default value is used for result name.
3245
3246             Returns:
3247                 New GEOM.GEOM_Object, containing the created sphere.
3248             """
3249             # Example: see GEOM_TestAll.py
3250             theR,Parameters = ParseParameters(theR)
3251             anObj = self.PrimOp.MakeSphereR(theR)
3252             RaiseIfFailed("MakeSphereR", self.PrimOp)
3253             anObj.SetParameters(Parameters)
3254             self._autoPublish(anObj, theName, "sphere")
3255             return anObj
3256
3257         ## Create a cone with given base point, axis, height and radiuses.
3258         #  @param thePnt Central point of the first cone base.
3259         #  @param theAxis Cone axis.
3260         #  @param theR1 Radius of the first cone base.
3261         #  @param theR2 Radius of the second cone base.
3262         #    \note If both radiuses are non-zero, the cone will be truncated.
3263         #    \note If the radiuses are equal, a cylinder will be created instead.
3264         #  @param theH Cone height.
3265         #  @param theName Object name; when specified, this parameter is used
3266         #         for result publication in the study. Otherwise, if automatic
3267         #         publication is switched on, default value is used for result name.
3268         #
3269         #  @return New GEOM.GEOM_Object, containing the created cone.
3270         #
3271         #  @ref tui_creation_cone "Example"
3272         @ManageTransactions("PrimOp")
3273         def MakeCone(self, thePnt, theAxis, theR1, theR2, theH, theName=None):
3274             """
3275             Create a cone with given base point, axis, height and radiuses.
3276
3277             Parameters:
3278                 thePnt Central point of the first cone base.
3279                 theAxis Cone axis.
3280                 theR1 Radius of the first cone base.
3281                 theR2 Radius of the second cone base.
3282                 theH Cone height.
3283                 theName Object name; when specified, this parameter is used
3284                         for result publication in the study. Otherwise, if automatic
3285                         publication is switched on, default value is used for result name.
3286
3287             Note:
3288                 If both radiuses are non-zero, the cone will be truncated.
3289                 If the radiuses are equal, a cylinder will be created instead.
3290
3291             Returns:
3292                 New GEOM.GEOM_Object, containing the created cone.
3293             """
3294             # Example: see GEOM_TestAll.py
3295             theR1,theR2,theH,Parameters = ParseParameters(theR1,theR2,theH)
3296             anObj = self.PrimOp.MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theH)
3297             RaiseIfFailed("MakeConePntVecR1R2H", self.PrimOp)
3298             anObj.SetParameters(Parameters)
3299             self._autoPublish(anObj, theName, "cone")
3300             return anObj
3301
3302         ## Create a cone with given height and radiuses at
3303         #  the origin of coordinate system. Axis of the cone will
3304         #  be collinear to the OZ axis of the coordinate system.
3305         #  @param theR1 Radius of the first cone base.
3306         #  @param theR2 Radius of the second cone base.
3307         #    \note If both radiuses are non-zero, the cone will be truncated.
3308         #    \note If the radiuses are equal, a cylinder will be created instead.
3309         #  @param theH Cone height.
3310         #  @param theName Object name; when specified, this parameter is used
3311         #         for result publication in the study. Otherwise, if automatic
3312         #         publication is switched on, default value is used for result name.
3313         #
3314         #  @return New GEOM.GEOM_Object, containing the created cone.
3315         #
3316         #  @ref tui_creation_cone "Example"
3317         @ManageTransactions("PrimOp")
3318         def MakeConeR1R2H(self, theR1, theR2, theH, theName=None):
3319             """
3320             Create a cone with given height and radiuses at
3321             the origin of coordinate system. Axis of the cone will
3322             be collinear to the OZ axis of the coordinate system.
3323
3324             Parameters:
3325                 theR1 Radius of the first cone base.
3326                 theR2 Radius of the second cone base.
3327                 theH Cone height.
3328                 theName Object name; when specified, this parameter is used
3329                         for result publication in the study. Otherwise, if automatic
3330                         publication is switched on, default value is used for result name.
3331
3332             Note:
3333                 If both radiuses are non-zero, the cone will be truncated.
3334                 If the radiuses are equal, a cylinder will be created instead.
3335
3336             Returns:
3337                 New GEOM.GEOM_Object, containing the created cone.
3338             """
3339             # Example: see GEOM_TestAll.py
3340             theR1,theR2,theH,Parameters = ParseParameters(theR1,theR2,theH)
3341             anObj = self.PrimOp.MakeConeR1R2H(theR1, theR2, theH)
3342             RaiseIfFailed("MakeConeR1R2H", self.PrimOp)
3343             anObj.SetParameters(Parameters)
3344             self._autoPublish(anObj, theName, "cone")
3345             return anObj
3346
3347         ## Create a torus with given center, normal vector and radiuses.
3348         #  @param thePnt Torus central point.
3349         #  @param theVec Torus axis of symmetry.
3350         #  @param theRMajor Torus major radius.
3351         #  @param theRMinor Torus minor radius.
3352         #  @param theName Object name; when specified, this parameter is used
3353         #         for result publication in the study. Otherwise, if automatic
3354         #         publication is switched on, default value is used for result name.
3355         #
3356         #  @return New GEOM.GEOM_Object, containing the created torus.
3357         #
3358         #  @ref tui_creation_torus "Example"
3359         @ManageTransactions("PrimOp")
3360         def MakeTorus(self, thePnt, theVec, theRMajor, theRMinor, theName=None):
3361             """
3362             Create a torus with given center, normal vector and radiuses.
3363
3364             Parameters:
3365                 thePnt Torus central point.
3366                 theVec Torus axis of symmetry.
3367                 theRMajor Torus major radius.
3368                 theRMinor Torus minor radius.
3369                 theName Object name; when specified, this parameter is used
3370                         for result publication in the study. Otherwise, if automatic
3371                         publication is switched on, default value is used for result name.
3372
3373            Returns:
3374                 New GEOM.GEOM_Object, containing the created torus.
3375             """
3376             # Example: see GEOM_TestAll.py
3377             theRMajor,theRMinor,Parameters = ParseParameters(theRMajor,theRMinor)
3378             anObj = self.PrimOp.MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor)
3379             RaiseIfFailed("MakeTorusPntVecRR", self.PrimOp)
3380             anObj.SetParameters(Parameters)
3381             self._autoPublish(anObj, theName, "torus")
3382             return anObj
3383
3384         ## Create a torus with given radiuses at the origin of coordinate system.
3385         #  @param theRMajor Torus major radius.
3386         #  @param theRMinor Torus minor radius.
3387         #  @param theName Object name; when specified, this parameter is used
3388         #         for result publication in the study. Otherwise, if automatic
3389         #         publication is switched on, default value is used for result name.
3390         #
3391         #  @return New GEOM.GEOM_Object, containing the created torus.
3392         #
3393         #  @ref tui_creation_torus "Example"
3394         @ManageTransactions("PrimOp")
3395         def MakeTorusRR(self, theRMajor, theRMinor, theName=None):
3396             """
3397            Create a torus with given radiuses at the origin of coordinate system.
3398
3399            Parameters:
3400                 theRMajor Torus major radius.
3401                 theRMinor Torus minor radius.
3402                 theName Object name; when specified, this parameter is used
3403                         for result publication in the study. Otherwise, if automatic
3404                         publication is switched on, default value is used for result name.
3405
3406            Returns:
3407                 New GEOM.GEOM_Object, containing the created torus.
3408             """
3409             # Example: see GEOM_TestAll.py
3410             theRMajor,theRMinor,Parameters = ParseParameters(theRMajor,theRMinor)
3411             anObj = self.PrimOp.MakeTorusRR(theRMajor, theRMinor)
3412             RaiseIfFailed("MakeTorusRR", self.PrimOp)
3413             anObj.SetParameters(Parameters)
3414             self._autoPublish(anObj, theName, "torus")
3415             return anObj
3416
3417         # end of l3_3d_primitives
3418         ## @}
3419
3420         ## @addtogroup l3_complex
3421         ## @{
3422
3423         ## Create a shape by extrusion of the base shape along a vector, defined by two points.
3424         #  @param theBase Base shape to be extruded.
3425         #  @param thePoint1 First end of extrusion vector.
3426         #  @param thePoint2 Second end of extrusion vector.
3427         #  @param theScaleFactor Use it to make prism with scaled second base.
3428         #                        Nagative value means not scaled second base.
3429         #  @param theName Object name; when specified, this parameter is used
3430         #         for result publication in the study. Otherwise, if automatic
3431         #         publication is switched on, default value is used for result name.
3432         #
3433         #  @return New GEOM.GEOM_Object, containing the created prism.
3434         #
3435         #  @ref tui_creation_prism "Example"
3436         @ManageTransactions("PrimOp")
3437         def MakePrism(self, theBase, thePoint1, thePoint2, theScaleFactor = -1.0, theName=None):
3438             """
3439             Create a shape by extrusion of the base shape along a vector, defined by two points.
3440
3441             Parameters:
3442                 theBase Base shape to be extruded.
3443                 thePoint1 First end of extrusion vector.
3444                 thePoint2 Second end of extrusion vector.
3445                 theScaleFactor Use it to make prism with scaled second base.
3446                                Nagative value means not scaled second base.
3447                 theName Object name; when specified, this parameter is used
3448                         for result publication in the study. Otherwise, if automatic
3449                         publication is switched on, default value is used for result name.
3450
3451             Returns:
3452                 New GEOM.GEOM_Object, containing the created prism.
3453             """
3454             # Example: see GEOM_TestAll.py
3455             anObj = None
3456             Parameters = ""
3457             if theScaleFactor > 0:
3458                 theScaleFactor,Parameters = ParseParameters(theScaleFactor)
3459                 anObj = self.PrimOp.MakePrismTwoPntWithScaling(theBase, thePoint1, thePoint2, theScaleFactor)
3460             else:
3461                 anObj = self.PrimOp.MakePrismTwoPnt(theBase, thePoint1, thePoint2)
3462             RaiseIfFailed("MakePrismTwoPnt", self.PrimOp)
3463             anObj.SetParameters(Parameters)
3464             self._autoPublish(anObj, theName, "prism")
3465             return anObj
3466
3467         ## Create a shape by extrusion of the base shape along a
3468         #  vector, defined by two points, in 2 Ways (forward/backward).
3469         #  @param theBase Base shape to be extruded.
3470         #  @param thePoint1 First end of extrusion vector.
3471         #  @param thePoint2 Second end of extrusion vector.
3472         #  @param theName Object name; when specified, this parameter is used
3473         #         for result publication in the study. Otherwise, if automatic
3474         #         publication is switched on, default value is used for result name.
3475         #
3476         #  @return New GEOM.GEOM_Object, containing the created prism.
3477         #
3478         #  @ref tui_creation_prism "Example"
3479         @ManageTransactions("PrimOp")
3480         def MakePrism2Ways(self, theBase, thePoint1, thePoint2, theName=None):
3481             """
3482             Create a shape by extrusion of the base shape along a
3483             vector, defined by two points, in 2 Ways (forward/backward).
3484
3485             Parameters:
3486                 theBase Base shape to be extruded.
3487                 thePoint1 First end of extrusion vector.
3488                 thePoint2 Second end of extrusion vector.
3489                 theName Object name; when specified, this parameter is used
3490                         for result publication in the study. Otherwise, if automatic
3491                         publication is switched on, default value is used for result name.
3492
3493             Returns:
3494                 New GEOM.GEOM_Object, containing the created prism.
3495             """
3496             # Example: see GEOM_TestAll.py
3497             anObj = self.PrimOp.MakePrismTwoPnt2Ways(theBase, thePoint1, thePoint2)
3498             RaiseIfFailed("MakePrismTwoPnt", self.PrimOp)
3499             self._autoPublish(anObj, theName, "prism")
3500             return anObj
3501
3502         ## Create a shape by extrusion of the base shape along the vector,
3503         #  i.e. all the space, transfixed by the base shape during its translation
3504         #  along the vector on the given distance.
3505         #  @param theBase Base shape to be extruded.
3506         #  @param theVec Direction of extrusion.
3507         #  @param theH Prism dimension along theVec.
3508         #  @param theScaleFactor Use it to make prism with scaled second base.
3509         #                        Negative value means not scaled second base.
3510         #  @param theName Object name; when specified, this parameter is used
3511         #         for result publication in the study. Otherwise, if automatic
3512         #         publication is switched on, default value is used for result name.
3513         #
3514         #  @return New GEOM.GEOM_Object, containing the created prism.
3515         #
3516         #  @ref tui_creation_prism "Example"
3517         @ManageTransactions("PrimOp")
3518         def MakePrismVecH(self, theBase, theVec, theH, theScaleFactor = -1.0, theName=None):
3519             """
3520             Create a shape by extrusion of the base shape along the vector,
3521             i.e. all the space, transfixed by the base shape during its translation
3522             along the vector on the given distance.
3523
3524             Parameters:
3525                 theBase Base shape to be extruded.
3526                 theVec Direction of extrusion.
3527                 theH Prism dimension along theVec.
3528                 theScaleFactor Use it to make prism with scaled second base.
3529                                Negative value means not scaled second base.
3530                 theName Object name; when specified, this parameter is used
3531                         for result publication in the study. Otherwise, if automatic
3532                         publication is switched on, default value is used for result name.
3533
3534             Returns:
3535                 New GEOM.GEOM_Object, containing the created prism.
3536             """
3537             # Example: see GEOM_TestAll.py
3538             anObj = None
3539             Parameters = ""
3540             if theScaleFactor > 0:
3541                 theH,theScaleFactor,Parameters = ParseParameters(theH,theScaleFactor)
3542                 anObj = self.PrimOp.MakePrismVecHWithScaling(theBase, theVec, theH, theScaleFactor)
3543             else:
3544                 theH,Parameters = ParseParameters(theH)
3545                 anObj = self.PrimOp.MakePrismVecH(theBase, theVec, theH)
3546             RaiseIfFailed("MakePrismVecH", self.PrimOp)
3547             anObj.SetParameters(Parameters)
3548             self._autoPublish(anObj, theName, "prism")
3549             return anObj
3550
3551         ## Create a shape by extrusion of the base shape along the vector,
3552         #  i.e. all the space, transfixed by the base shape during its translation
3553         #  along the vector on the given distance in 2 Ways (forward/backward).
3554         #  @param theBase Base shape to be extruded.
3555         #  @param theVec Direction of extrusion.
3556         #  @param theH Prism dimension along theVec in forward direction.
3557         #  @param theName Object name; when specified, this parameter is used
3558         #         for result publication in the study. Otherwise, if automatic
3559         #         publication is switched on, default value is used for result name.
3560         #
3561         #  @return New GEOM.GEOM_Object, containing the created prism.
3562         #
3563         #  @ref tui_creation_prism "Example"
3564         @ManageTransactions("PrimOp")
3565         def MakePrismVecH2Ways(self, theBase, theVec, theH, theName=None):
3566             """
3567             Create a shape by extrusion of the base shape along the vector,
3568             i.e. all the space, transfixed by the base shape during its translation
3569             along the vector on the given distance in 2 Ways (forward/backward).
3570
3571             Parameters:
3572                 theBase Base shape to be extruded.
3573                 theVec Direction of extrusion.
3574                 theH Prism dimension along theVec in forward direction.
3575                 theName Object name; when specified, this parameter is used
3576                         for result publication in the study. Otherwise, if automatic
3577                         publication is switched on, default value is used for result name.
3578
3579             Returns:
3580                 New GEOM.GEOM_Object, containing the created prism.
3581             """
3582             # Example: see GEOM_TestAll.py
3583             theH,Parameters = ParseParameters(theH)
3584             anObj = self.PrimOp.MakePrismVecH2Ways(theBase, theVec, theH)
3585             RaiseIfFailed("MakePrismVecH2Ways", self.PrimOp)
3586             anObj.SetParameters(Parameters)
3587             self._autoPublish(anObj, theName, "prism")
3588             return anObj
3589
3590         ## Create a shape by extrusion of the base shape along the dx, dy, dz direction
3591         #  @param theBase Base shape to be extruded.
3592         #  @param theDX, theDY, theDZ Directions of extrusion.
3593         #  @param theScaleFactor Use it to make prism with scaled second base.
3594         #                        Nagative value means not scaled second base.
3595         #  @param theName Object name; when specified, this parameter is used
3596         #         for result publication in the study. Otherwise, if automatic
3597         #         publication is switched on, default value is used for result name.
3598         #
3599         #  @return New GEOM.GEOM_Object, containing the created prism.
3600         #
3601         #  @ref tui_creation_prism "Example"
3602         @ManageTransactions("PrimOp")
3603         def MakePrismDXDYDZ(self, theBase, theDX, theDY, theDZ, theScaleFactor = -1.0, theName=None):
3604             """
3605             Create a shape by extrusion of the base shape along the dx, dy, dz direction
3606
3607             Parameters:
3608                 theBase Base shape to be extruded.
3609                 theDX, theDY, theDZ Directions of extrusion.
3610                 theScaleFactor Use it to make prism with scaled second base.
3611                                Nagative value means not scaled second base.
3612                 theName Object name; when specified, this parameter is used
3613                         for result publication in the study. Otherwise, if automatic
3614                         publication is switched on, default value is used for result name.
3615
3616             Returns:
3617                 New GEOM.GEOM_Object, containing the created prism.
3618             """
3619             # Example: see GEOM_TestAll.py
3620             anObj = None
3621             Parameters = ""
3622             if theScaleFactor > 0:
3623                 theDX,theDY,theDZ,theScaleFactor,Parameters = ParseParameters(theDX, theDY, theDZ, theScaleFactor)
3624                 anObj = self.PrimOp.MakePrismDXDYDZWithScaling(theBase, theDX, theDY, theDZ, theScaleFactor)
3625             else:
3626                 theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
3627                 anObj = self.PrimOp.MakePrismDXDYDZ(theBase, theDX, theDY, theDZ)
3628             RaiseIfFailed("MakePrismDXDYDZ", self.PrimOp)
3629             anObj.SetParameters(Parameters)
3630             self._autoPublish(anObj, theName, "prism")
3631             return anObj
3632
3633         ## Create a shape by extrusion of the base shape along the dx, dy, dz direction
3634         #  i.e. all the space, transfixed by the base shape during its translation
3635         #  along the vector on the given distance in 2 Ways (forward/backward).
3636         #  @param theBase Base shape to be extruded.
3637         #  @param theDX, theDY, theDZ Directions of extrusion.
3638         #  @param theName Object name; when specified, this parameter is used
3639         #         for result publication in the study. Otherwise, if automatic
3640         #         publication is switched on, default value is used for result name.
3641         #
3642         #  @return New GEOM.GEOM_Object, containing the created prism.
3643         #
3644         #  @ref tui_creation_prism "Example"
3645         @ManageTransactions("PrimOp")
3646         def MakePrismDXDYDZ2Ways(self, theBase, theDX, theDY, theDZ, theName=None):
3647             """
3648             Create a shape by extrusion of the base shape along the dx, dy, dz direction
3649             i.e. all the space, transfixed by the base shape during its translation
3650             along the vector on the given distance in 2 Ways (forward/backward).
3651
3652             Parameters:
3653                 theBase Base shape to be extruded.
3654                 theDX, theDY, theDZ Directions of extrusion.
3655                 theName Object name; when specified, this parameter is used
3656                         for result publication in the study. Otherwise, if automatic
3657                         publication is switched on, default value is used for result name.
3658
3659             Returns:
3660                 New GEOM.GEOM_Object, containing the created prism.
3661             """
3662             # Example: see GEOM_TestAll.py
3663             theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
3664             anObj = self.PrimOp.MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ)
3665             RaiseIfFailed("MakePrismDXDYDZ2Ways", self.PrimOp)
3666             anObj.SetParameters(Parameters)
3667             self._autoPublish(anObj, theName, "prism")
3668             return anObj
3669
3670         ## Create a shape by revolution of the base shape around the axis
3671         #  on the given angle, i.e. all the space, transfixed by the base
3672         #  shape during its rotation around the axis on the given angle.
3673         #  @param theBase Base shape to be rotated.
3674         #  @param theAxis Rotation axis.
3675         #  @param theAngle Rotation angle in radians.
3676         #  @param theName Object name; when specified, this parameter is used
3677         #         for result publication in the study. Otherwise, if automatic
3678         #         publication is switched on, default value is used for result name.
3679         #
3680         #  @return New GEOM.GEOM_Object, containing the created revolution.
3681         #
3682         #  @ref tui_creation_revolution "Example"
3683         @ManageTransactions("PrimOp")
3684         def MakeRevolution(self, theBase, theAxis, theAngle, theName=None):
3685             """
3686             Create a shape by revolution of the base shape around the axis
3687             on the given angle, i.e. all the space, transfixed by the base
3688             shape during its rotation around the axis on the given angle.
3689
3690             Parameters:
3691                 theBase Base shape to be rotated.
3692                 theAxis Rotation axis.
3693                 theAngle Rotation angle in radians.
3694                 theName Object name; when specified, this parameter is used
3695                         for result publication in the study. Otherwise, if automatic
3696                         publication is switched on, default value is used for result name.
3697
3698             Returns:
3699                 New GEOM.GEOM_Object, containing the created revolution.
3700             """
3701             # Example: see GEOM_TestAll.py
3702             theAngle,Parameters = ParseParameters(theAngle)
3703             anObj = self.PrimOp.MakeRevolutionAxisAngle(theBase, theAxis, theAngle)
3704             RaiseIfFailed("MakeRevolutionAxisAngle", self.PrimOp)
3705             anObj.SetParameters(Parameters)
3706             self._autoPublish(anObj, theName, "revolution")
3707             return anObj
3708
3709         ## Create a shape by revolution of the base shape around the axis
3710         #  on the given angle, i.e. all the space, transfixed by the base
3711         #  shape during its rotation around the axis on the given angle in
3712         #  both directions (forward/backward)
3713         #  @param theBase Base shape to be rotated.
3714         #  @param theAxis Rotation axis.
3715         #  @param theAngle Rotation angle in radians.
3716         #  @param theName Object name; when specified, this parameter is used
3717         #         for result publication in the study. Otherwise, if automatic
3718         #         publication is switched on, default value is used for result name.
3719         #
3720         #  @return New GEOM.GEOM_Object, containing the created revolution.
3721         #
3722         #  @ref tui_creation_revolution "Example"
3723         @ManageTransactions("PrimOp")
3724         def MakeRevolution2Ways(self, theBase, theAxis, theAngle, theName=None):
3725             """
3726             Create a shape by revolution of the base shape around the axis
3727             on the given angle, i.e. all the space, transfixed by the base
3728             shape during its rotation around the axis on the given angle in
3729             both directions (forward/backward).
3730
3731             Parameters:
3732                 theBase Base shape to be rotated.
3733                 theAxis Rotation axis.
3734                 theAngle Rotation angle in radians.
3735                 theName Object name; when specified, this parameter is used
3736                         for result publication in the study. Otherwise, if automatic
3737                         publication is switched on, default value is used for result name.
3738
3739             Returns:
3740                 New GEOM.GEOM_Object, containing the created revolution.
3741             """
3742             theAngle,Parameters = ParseParameters(theAngle)
3743             anObj = self.PrimOp.MakeRevolutionAxisAngle2Ways(theBase, theAxis, theAngle)
3744             RaiseIfFailed("MakeRevolutionAxisAngle2Ways", self.PrimOp)
3745             anObj.SetParameters(Parameters)
3746             self._autoPublish(anObj, theName, "revolution")
3747             return anObj
3748
3749         ## Create a face from a given set of contours.
3750         #  @param theContours either a list or a compound of edges/wires.
3751         #  @param theMinDeg a minimal degree of BSpline surface to create.
3752         #  @param theMaxDeg a maximal degree of BSpline surface to create.
3753         #  @param theTol2D a 2d tolerance to be reached.
3754         #  @param theTol3D a 3d tolerance to be reached.
3755         #  @param theNbIter a number of iteration of approximation algorithm.
3756         #  @param theMethod Kind of method to perform filling operation
3757         #         (see GEOM.filling_oper_method enum).
3758         #  @param isApprox if True, BSpline curves are generated in the process
3759         #                  of surface construction. By default it is False, that means
3760         #                  the surface is created using given curves. The usage of
3761         #                  Approximation makes the algorithm work slower, but allows
3762         #                  building the surface for rather complex cases.
3763         #  @param theName Object name; when specified, this parameter is used
3764         #         for result publication in the study. Otherwise, if automatic
3765         #         publication is switched on, default value is used for result name.
3766         #
3767         #  @return New GEOM.GEOM_Object (face), containing the created filling surface.
3768         #
3769         #  @ref tui_creation_filling "Example"
3770         @ManageTransactions("PrimOp")
3771         def MakeFilling(self, theContours, theMinDeg=2, theMaxDeg=5, theTol2D=0.0001,
3772                         theTol3D=0.0001, theNbIter=0, theMethod=GEOM.FOM_Default, isApprox=0, theName=None):
3773             """
3774             Create a face from a given set of contours.
3775
3776             Parameters:
3777                 theContours either a list or a compound of edges/wires.
3778                 theMinDeg a minimal degree of BSpline surface to create.
3779                 theMaxDeg a maximal degree of BSpline surface to create.
3780                 theTol2D a 2d tolerance to be reached.
3781                 theTol3D a 3d tolerance to be reached.
3782                 theNbIter a number of iteration of approximation algorithm.
3783                 theMethod Kind of method to perform filling operation
3784                           (see GEOM.filling_oper_method enum).
3785                 isApprox if True, BSpline curves are generated in the process
3786                          of surface construction. By default it is False, that means
3787                          the surface is created using given curves. The usage of
3788                          Approximation makes the algorithm work slower, but allows
3789                          building the surface for rather complex cases.
3790                 theName Object name; when specified, this parameter is used
3791                         for result publication in the study. Otherwise, if automatic
3792                         publication is switched on, default value is used for result name.
3793
3794             Returns:
3795                 New GEOM.GEOM_Object (face), containing the created filling surface.
3796
3797             Example of usage:
3798                 filling = geompy.MakeFilling(compound, 2, 5, 0.0001, 0.0001, 5)
3799             """
3800             # Example: see GEOM_TestAll.py
3801             theMinDeg,theMaxDeg,theTol2D,theTol3D,theNbIter,Parameters = ParseParameters(theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter)
3802             anObj = self.PrimOp.MakeFilling(ToList(theContours), theMinDeg, theMaxDeg,
3803                                             theTol2D, theTol3D, theNbIter,
3804                                             theMethod, isApprox)
3805             RaiseIfFailed("MakeFilling", self.PrimOp)
3806             anObj.SetParameters(Parameters)
3807             self._autoPublish(anObj, theName, "filling")
3808             return anObj
3809
3810
3811         ## Create a face from a given set of contours.
3812         #  This method corresponds to MakeFilling() with isApprox=True.
3813         #  @param theContours either a list or a compound of edges/wires.
3814         #  @param theMinDeg a minimal degree of BSpline surface to create.
3815         #  @param theMaxDeg a maximal degree of BSpline surface to create.
3816         #  @param theTol3D a 3d tolerance to be reached.
3817         #  @param theName Object name; when specified, this parameter is used
3818         #         for result publication in the study. Otherwise, if automatic
3819         #         publication is switched on, default value is used for result name.
3820         #
3821         #  @return New GEOM.GEOM_Object (face), containing the created filling surface.
3822         #
3823         #  @ref tui_creation_filling "Example"
3824         @ManageTransactions("PrimOp")
3825         def MakeFillingNew(self, theContours, theMinDeg=2, theMaxDeg=5, theTol3D=0.0001, theName=None):
3826             """
3827             Create a filling from the given compound of contours.
3828             This method corresponds to MakeFilling() with isApprox=True.
3829
3830             Parameters:
3831                 theContours either a list or a compound of edges/wires.
3832                 theMinDeg a minimal degree of BSpline surface to create.
3833                 theMaxDeg a maximal degree of BSpline surface to create.
3834                 theTol3D a 3d tolerance to be reached.
3835                 theName Object name; when specified, this parameter is used
3836                         for result publication in the study. Otherwise, if automatic
3837                         publication is switched on, default value is used for result name.
3838
3839             Returns:
3840                 New GEOM.GEOM_Object (face), containing the created filling surface.
3841
3842             Example of usage:
3843                 filling = geompy.MakeFillingNew(compound, 2, 5, 0.0001)
3844             """
3845             # Example: see GEOM_TestAll.py
3846             theMinDeg,theMaxDeg,theTol3D,Parameters = ParseParameters(theMinDeg, theMaxDeg, theTol3D)
3847             anObj = self.PrimOp.MakeFilling(ToList(theContours), theMinDeg, theMaxDeg,
3848                                             0, theTol3D, 0, GEOM.FOM_Default, True)
3849             RaiseIfFailed("MakeFillingNew", self.PrimOp)
3850             anObj.SetParameters(Parameters)
3851             self._autoPublish(anObj, theName, "filling")
3852             return anObj
3853
3854         ## Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
3855         #  @param theSeqSections - set of specified sections.
3856         #  @param theModeSolid - mode defining building solid or shell
3857         #  @param thePreci - precision 3D used for smoothing
3858         #  @param theRuled - mode defining type of the result surfaces (ruled or smoothed).
3859         #  @param theName Object name; when specified, this parameter is used
3860         #         for result publication in the study. Otherwise, if automatic
3861         #         publication is switched on, default value is used for result name.
3862         #
3863         #  @return New GEOM.GEOM_Object, containing the created shell or solid.
3864         #
3865         #  @ref swig_todo "Example"
3866         @ManageTransactions("PrimOp")
3867         def MakeThruSections(self, theSeqSections, theModeSolid, thePreci, theRuled, theName=None):
3868             """
3869             Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
3870
3871             Parameters:
3872                 theSeqSections - set of specified sections.
3873                 theModeSolid - mode defining building solid or shell
3874                 thePreci - precision 3D used for smoothing
3875                 theRuled - mode defining type of the result surfaces (ruled or smoothed).
3876                 theName Object name; when specified, this parameter is used
3877                         for result publication in the study. Otherwise, if automatic
3878                         publication is switched on, default value is used for result name.
3879
3880             Returns:
3881                 New GEOM.GEOM_Object, containing the created shell or solid.
3882             """
3883             # Example: see GEOM_TestAll.py
3884             anObj = self.PrimOp.MakeThruSections(theSeqSections,theModeSolid,thePreci,theRuled)
3885             RaiseIfFailed("MakeThruSections", self.PrimOp)
3886             self._autoPublish(anObj, theName, "filling")
3887             return anObj
3888
3889         ## Create a shape by extrusion of the base shape along
3890         #  the path shape. The path shape can be a wire or an edge. It is
3891         #  possible to generate groups along with the result by means of
3892         #  setting the flag \a IsGenerateGroups.<BR>
3893         #  If \a thePath is a closed edge or wire and \a IsGenerateGroups is
3894         #  set, an error is occured. If \a thePath is not closed edge/wire,
3895         #  the following groups are returned:
3896         #  - If \a theBase is unclosed edge or wire: "Down", "Up", "Side1",
3897         #    "Side2";
3898         #  - If \a theBase is closed edge or wire, face or shell: "Down", "Up",
3899         #    "Other".
3900         #  .
3901         #  "Down" and "Up" groups contain:
3902         #  - Edges if \a theBase is edge or wire;
3903         #  - Faces if \a theBase is face or shell.<BR>
3904         #  .
3905         #  "Side1" and "Side2" groups contain edges generated from the first
3906         #  and last vertices of \a theBase. The first and last vertices are
3907         #  determined taking into account edge/wire orientation.<BR>
3908         #  "Other" group represents faces generated from the bounding edges of
3909         #  \a theBase.
3910         #
3911         #  @param theBase Base shape to be extruded.
3912         #  @param thePath Path shape to extrude the base shape along it.
3913         #  @param IsGenerateGroups flag that tells if it is necessary to
3914         #         create groups. It is equal to False by default.
3915         #  @param theName Object name; when specified, this parameter is used
3916         #         for result publication in the study. Otherwise, if automatic
3917         #         publication is switched on, default value is used for result name.
3918         #
3919         #  @return New GEOM.GEOM_Object, containing the created pipe if 
3920         #          \a IsGenerateGroups is not set. Otherwise it returns new
3921         #          GEOM.ListOfGO. Its first element is the created pipe, the
3922         #          remaining ones are created groups.
3923         #
3924         #  @ref tui_creation_pipe "Example"
3925         @ManageTransactions("PrimOp")
3926         def MakePipe(self, theBase, thePath,
3927                      IsGenerateGroups=False, theName=None):
3928             """
3929             Create a shape by extrusion of the base shape along
3930             the path shape. The path shape can be a wire or an edge. It is
3931             possible to generate groups along with the result by means of
3932             setting the flag IsGenerateGroups.
3933             If thePath is a closed edge or wire and IsGenerateGroups is
3934             set, an error is occured. If thePath is not closed edge/wire,
3935             the following groups are returned:
3936             - If theBase is unclosed edge or wire: "Down", "Up", "Side1",
3937               "Side2";
3938             - If theBase is closed edge or wire, face or shell: "Down", "Up",
3939               "Other".
3940             "Down" and "Up" groups contain:
3941             - Edges if theBase is edge or wire;
3942             - Faces if theBase is face or shell.
3943             "Side1" and "Side2" groups contain edges generated from the first
3944             and last vertices of theBase. The first and last vertices are
3945             determined taking into account edge/wire orientation.
3946             "Other" group represents faces generated from the bounding edges of
3947             theBase.
3948
3949             Parameters:
3950                 theBase Base shape to be extruded.
3951                 thePath Path shape to extrude the base shape along it.
3952                 IsGenerateGroups flag that tells if it is necessary to
3953                         create groups. It is equal to False by default.
3954                 theName Object name; when specified, this parameter is used
3955                         for result publication in the study. Otherwise, if automatic
3956                         publication is switched on, default value is used for result name.
3957
3958             Returns:
3959                 New GEOM.GEOM_Object, containing the created pipe if 
3960                 IsGenerateGroups is not set. Otherwise it returns new
3961                 GEOM.ListOfGO. Its first element is the created pipe, the
3962                 remaining ones are created groups.
3963             """
3964             # Example: see GEOM_TestAll.py
3965             aList = self.PrimOp.MakePipe(theBase, thePath, IsGenerateGroups)
3966             RaiseIfFailed("MakePipe", self.PrimOp)
3967
3968             if IsGenerateGroups:
3969               self._autoPublish(aList, theName, "pipe")
3970               return aList
3971
3972             self._autoPublish(aList[0], theName, "pipe")
3973             return aList[0]
3974
3975         ## Create a shape by extrusion of the profile shape along
3976         #  the path shape. The path shape can be a wire or an edge.
3977         #  the several profiles can be specified in the several locations of path.
3978         #  It is possible to generate groups along with the result by means of
3979         #  setting the flag \a IsGenerateGroups. For detailed information on
3980         #  groups that can be created please see the method MakePipe().
3981         #  @param theSeqBases - list of  Bases shape to be extruded.
3982         #  @param theLocations - list of locations on the path corresponding
3983         #                        specified list of the Bases shapes. Number of locations
3984         #                        should be equal to number of bases or list of locations can be empty.
3985         #  @param thePath - Path shape to extrude the base shape along it.
3986         #  @param theWithContact - the mode defining that the section is translated to be in
3987         #                          contact with the spine.
3988         #  @param theWithCorrection - defining that the section is rotated to be
3989         #                             orthogonal to the spine tangent in the correspondent point
3990         #  @param IsGenerateGroups - flag that tells if it is necessary to
3991         #                          create groups. It is equal to False by default.
3992         #  @param theName Object name; when specified, this parameter is used
3993         #         for result publication in the study. Otherwise, if automatic
3994         #         publication is switched on, default value is used for result name.
3995         #
3996         #  @return New GEOM.GEOM_Object, containing the created pipe if 
3997         #          \a IsGenerateGroups is not set. Otherwise it returns new
3998         #          GEOM.ListOfGO. Its first element is the created pipe, the
3999         #          remaining ones are created groups.
4000         #
4001         #  @ref tui_creation_pipe_with_diff_sec "Example"
4002         @ManageTransactions("PrimOp")
4003         def MakePipeWithDifferentSections(self, theSeqBases,
4004                                           theLocations, thePath,
4005                                           theWithContact, theWithCorrection,
4006                                           IsGenerateGroups=False, theName=None):
4007             """
4008             Create a shape by extrusion of the profile shape along
4009             the path shape. The path shape can be a wire or an edge.
4010             the several profiles can be specified in the several locations of path.
4011             It is possible to generate groups along with the result by means of
4012             setting the flag IsGenerateGroups. For detailed information on
4013             groups that can be created please see the method geompy.MakePipe().
4014
4015             Parameters:
4016                 theSeqBases - list of  Bases shape to be extruded.
4017                 theLocations - list of locations on the path corresponding
4018                                specified list of the Bases shapes. Number of locations
4019                                should be equal to number of bases or list of locations can be empty.
4020                 thePath - Path shape to extrude the base shape along it.
4021                 theWithContact - the mode defining that the section is translated to be in
4022                                  contact with the spine(0/1)
4023                 theWithCorrection - defining that the section is rotated to be
4024                                     orthogonal to the spine tangent in the correspondent point (0/1)
4025                 IsGenerateGroups - flag that tells if it is necessary to
4026                                  create groups. It is equal to False by default.
4027                 theName Object name; when specified, this parameter is used
4028                         for result publication in the study. Otherwise, if automatic
4029                         publication is switched on, default value is used for result name.
4030
4031             Returns:
4032                 New GEOM.GEOM_Object, containing the created pipe if 
4033                 IsGenerateGroups is not set. Otherwise it returns new
4034                 GEOM.ListOfGO. Its first element is the created pipe, the
4035                 remaining ones are created groups.
4036             """
4037             aList = self.PrimOp.MakePipeWithDifferentSections(theSeqBases,
4038                                                               theLocations, thePath,
4039                                                               theWithContact, theWithCorrection,
4040                                                               False, IsGenerateGroups)
4041             RaiseIfFailed("MakePipeWithDifferentSections", self.PrimOp)
4042
4043             if IsGenerateGroups:
4044               self._autoPublish(aList, theName, "pipe")
4045               return aList
4046
4047             self._autoPublish(aList[0], theName, "pipe")
4048             return aList[0]
4049
4050         ## Create a shape by extrusion of the profile shape along
4051         #  the path shape. This function is a version of
4052         #  MakePipeWithDifferentSections() with the same parameters, except
4053         #  eliminated theWithContact and theWithCorrection. So it is
4054         #  possible to find the description of all parameters is in this
4055         #  method. The difference is that this method performs the operation
4056         #  step by step, i.e. it creates pipes between each pair of neighbor
4057         #  sections and fuses them into a single shape.
4058         #
4059         #  @ref tui_creation_pipe_with_diff_sec "Example"
4060         @ManageTransactions("PrimOp")
4061         def MakePipeWithDifferentSectionsBySteps(self, theSeqBases,
4062                                                  theLocations, thePath,
4063                                                  IsGenerateGroups=False, theName=None):
4064             """
4065             Create a shape by extrusion of the profile shape along
4066             the path shape. This function is a version of
4067             MakePipeWithDifferentSections() with the same parameters, except
4068             eliminated theWithContact and theWithCorrection. So it is
4069             possible to find the description of all parameters is in this
4070             method. The difference is that this method performs the operation
4071             step by step, i.e. it creates pipes between each pair of neighbor
4072             sections and fuses them into a single shape.
4073             """
4074             aList = self.PrimOp.MakePipeWithDifferentSections(theSeqBases,
4075                                                               theLocations, thePath,
4076                                                               False, False,
4077                                                               True, IsGenerateGroups)
4078             RaiseIfFailed("MakePipeWithDifferentSectionsBySteps", self.PrimOp)
4079
4080             if IsGenerateGroups:
4081               self._autoPublish(aList, theName, "pipe")
4082               return aList
4083
4084             self._autoPublish(aList[0], theName, "pipe")
4085             return aList[0]
4086
4087         ## Create a shape by extrusion of the profile shape along
4088         #  the path shape. The path shape can be a wire or an edge.
4089         #  the several profiles can be specified in the several locations of path.
4090         #  It is possible to generate groups along with the result by means of
4091         #  setting the flag \a IsGenerateGroups. For detailed information on
4092         #  groups that can be created please see the method MakePipe().
4093         #  @param theSeqBases - list of  Bases shape to be extruded. Base shape must be
4094         #                       shell or face. If number of faces in neighbour sections
4095         #                       aren't coincided result solid between such sections will
4096         #                       be created using external boundaries of this shells.
4097         #  @param theSeqSubBases - list of corresponding sub-shapes of section shapes.
4098         #                          This list is used for searching correspondences between
4099         #                          faces in the sections. Size of this list must be equal
4100         #                          to size of list of base shapes.
4101         #  @param theLocations - list of locations on the path corresponding
4102         #                        specified list of the Bases shapes. Number of locations
4103         #                        should be equal to number of bases. First and last
4104         #                        locations must be coincided with first and last vertexes
4105         #                        of path correspondingly.
4106         #  @param thePath - Path shape to extrude the base shape along it.
4107         #  @param theWithContact - the mode defining that the section is translated to be in
4108         #                          contact with the spine.
4109         #  @param theWithCorrection - defining that the section is rotated to be
4110         #                             orthogonal to the spine tangent in the correspondent point
4111         #  @param IsGenerateGroups - flag that tells if it is necessary to
4112         #                          create groups. It is equal to False by default.
4113         #  @param theName Object name; when specified, this parameter is used
4114         #         for result publication in the study. Otherwise, if automatic
4115         #         publication is switched on, default value is used for result name.
4116         #
4117         #  @return New GEOM.GEOM_Object, containing the created solids if 
4118         #          \a IsGenerateGroups is not set. Otherwise it returns new
4119         #          GEOM.ListOfGO. Its first element is the created solids, the
4120         #          remaining ones are created groups.
4121         #
4122         #  @ref tui_creation_pipe_with_shell_sec "Example"
4123         @ManageTransactions("PrimOp")
4124         def MakePipeWithShellSections(self, theSeqBases, theSeqSubBases,
4125                                       theLocations, thePath,
4126                                       theWithContact, theWithCorrection,
4127                                       IsGenerateGroups=False, theName=None):
4128             """
4129             Create a shape by extrusion of the profile shape along
4130             the path shape. The path shape can be a wire or an edge.
4131             the several profiles can be specified in the several locations of path.
4132             It is possible to generate groups along with the result by means of
4133             setting the flag IsGenerateGroups. For detailed information on
4134             groups that can be created please see the method geompy.MakePipe().
4135
4136             Parameters:
4137                 theSeqBases - list of  Bases shape to be extruded. Base shape must be
4138                               shell or face. If number of faces in neighbour sections
4139                               aren't coincided result solid between such sections will
4140                               be created using external boundaries of this shells.
4141                 theSeqSubBases - list of corresponding sub-shapes of section shapes.
4142                                  This list is used for searching correspondences between
4143                                  faces in the sections. Size of this list must be equal
4144                                  to size of list of base shapes.
4145                 theLocations - list of locations on the path corresponding
4146                                specified list of the Bases shapes. Number of locations
4147                                should be equal to number of bases. First and last
4148                                locations must be coincided with first and last vertexes
4149                                of path correspondingly.
4150                 thePath - Path shape to extrude the base shape along it.
4151                 theWithContact - the mode defining that the section is translated to be in
4152                                  contact with the spine (0/1)
4153                 theWithCorrection - defining that the section is rotated to be
4154                                     orthogonal to the spine tangent in the correspondent point (0/1)
4155                 IsGenerateGroups - flag that tells if it is necessary to
4156                                  create groups. It is equal to False by default.
4157                 theName Object name; when specified, this parameter is used
4158                         for result publication in the study. Otherwise, if automatic
4159                         publication is switched on, default value is used for result name.
4160
4161             Returns:
4162                 New GEOM.GEOM_Object, containing the created solids if 
4163                 IsGenerateGroups is not set. Otherwise it returns new
4164                 GEOM.ListOfGO. Its first element is the created solids, the
4165                 remaining ones are created groups.
4166             """
4167             aList = self.PrimOp.MakePipeWithShellSections(theSeqBases, theSeqSubBases,
4168                                                           theLocations, thePath,
4169                                                           theWithContact, theWithCorrection,
4170                                                           IsGenerateGroups)
4171             RaiseIfFailed("MakePipeWithShellSections", self.PrimOp)
4172
4173             if IsGenerateGroups:
4174               self._autoPublish(aList, theName, "pipe")
4175               return aList
4176
4177             self._autoPublish(aList[0], theName, "pipe")
4178             return aList[0]
4179
4180         ## Create a shape by extrusion of the profile shape along
4181         #  the path shape. This function is used only for debug pipe
4182         #  functionality - it is a version of function MakePipeWithShellSections()
4183         #  which give a possibility to recieve information about
4184         #  creating pipe between each pair of sections step by step.
4185         @ManageTransactions("PrimOp")
4186         def MakePipeWithShellSectionsBySteps(self, theSeqBases, theSeqSubBases,
4187                                              theLocations, thePath,
4188                                              theWithContact, theWithCorrection,
4189                                              IsGenerateGroups=False, theName=None):
4190             """
4191             Create a shape by extrusion of the profile shape along
4192             the path shape. This function is used only for debug pipe
4193             functionality - it is a version of previous function
4194             geompy.MakePipeWithShellSections() which give a possibility to
4195             recieve information about creating pipe between each pair of
4196             sections step by step.
4197             """
4198             res = []
4199             nbsect = len(theSeqBases)
4200             nbsubsect = len(theSeqSubBases)
4201             #print "nbsect = ",nbsect
4202             for i in range(1,nbsect):
4203                 #print "  i = ",i
4204                 tmpSeqBases = [ theSeqBases[i-1], theSeqBases[i] ]
4205                 tmpLocations = [ theLocations[i-1], theLocations[i] ]
4206                 tmpSeqSubBases = []
4207                 if nbsubsect>0: tmpSeqSubBases = [ theSeqSubBases[i-1], theSeqSubBases[i] ]
4208                 aList = self.PrimOp.MakePipeWithShellSections(tmpSeqBases, tmpSeqSubBases,
4209                                                               tmpLocations, thePath,
4210                                                               theWithContact, theWithCorrection,
4211                                                               IsGenerateGroups)
4212                 if self.PrimOp.IsDone() == 0:
4213                     print "Problems with pipe creation between ",i," and ",i+1," sections"
4214                     RaiseIfFailed("MakePipeWithShellSections", self.PrimOp)
4215                     break
4216                 else:
4217                     print "Pipe between ",i," and ",i+1," sections is OK"
4218                     res.append(aList[0])
4219                     pass
4220                 pass
4221
4222             resc = self.MakeCompound(res)
4223             #resc = self.MakeSewing(res, 0.001)
4224             #print "resc: ",resc
4225             self._autoPublish(resc, theName, "pipe")
4226             return resc
4227
4228         ## Create solids between given sections.
4229         #  It is possible to generate groups along with the result by means of
4230         #  setting the flag \a IsGenerateGroups. For detailed information on
4231         #  groups that can be created please see the method MakePipe().
4232         #  @param theSeqBases - list of sections (shell or face).
4233         #  @param theLocations - list of corresponding vertexes
4234         #  @param IsGenerateGroups - flag that tells if it is necessary to
4235         #         create groups. It is equal to False by default.
4236         #  @param theName Object name; when specified, this parameter is used
4237         #         for result publication in the study. Otherwise, if automatic
4238         #         publication is switched on, default value is used for result name.
4239         #
4240         #  @return New GEOM.GEOM_Object, containing the created solids if 
4241         #          \a IsGenerateGroups is not set. Otherwise it returns new
4242         #          GEOM.ListOfGO. Its first element is the created solids, the
4243         #          remaining ones are created groups.
4244         #
4245         #  @ref tui_creation_pipe_without_path "Example"
4246         @ManageTransactions("PrimOp")
4247         def MakePipeShellsWithoutPath(self, theSeqBases, theLocations,
4248                                       IsGenerateGroups=False, theName=None):
4249             """
4250             Create solids between given sections.
4251             It is possible to generate groups along with the result by means of
4252             setting the flag IsGenerateGroups. For detailed information on
4253             groups that can be created please see the method geompy.MakePipe().
4254
4255             Parameters:
4256                 theSeqBases - list of sections (shell or face).
4257                 theLocations - list of corresponding vertexes
4258                 IsGenerateGroups - flag that tells if it is necessary to
4259                                  create groups. It is equal to False by default.
4260                 theName Object name; when specified, this parameter is used
4261                         for result publication in the study. Otherwise, if automatic
4262                         publication is switched on, default value is used for result name.
4263
4264             Returns:
4265                 New GEOM.GEOM_Object, containing the created solids if 
4266                 IsGenerateGroups is not set. Otherwise it returns new
4267                 GEOM.ListOfGO. Its first element is the created solids, the
4268                 remaining ones are created groups.
4269             """
4270             aList = self.PrimOp.MakePipeShellsWithoutPath(theSeqBases, theLocations,
4271                                                           IsGenerateGroups)
4272             RaiseIfFailed("MakePipeShellsWithoutPath", self.PrimOp)
4273
4274             if IsGenerateGroups:
4275               self._autoPublish(aList, theName, "pipe")
4276               return aList
4277
4278             self._autoPublish(aList[0], theName, "pipe")
4279             return aList[0]
4280
4281         ## Create a shape by extrusion of the base shape along
4282         #  the path shape with constant bi-normal direction along the given vector.
4283         #  The path shape can be a wire or an edge.
4284         #  It is possible to generate groups along with the result by means of
4285         #  setting the flag \a IsGenerateGroups. For detailed information on
4286         #  groups that can be created please see the method MakePipe().
4287         #  @param theBase Base shape to be extruded.
4288         #  @param thePath Path shape to extrude the base shape along it.
4289         #  @param theVec Vector defines a constant binormal direction to keep the
4290         #                same angle beetween the direction and the sections
4291         #                along the sweep surface.
4292         #  @param IsGenerateGroups flag that tells if it is necessary to
4293         #         create groups. It is equal to False by default.
4294         #  @param theName Object name; when specified, this parameter is used
4295         #         for result publication in the study. Otherwise, if automatic
4296         #         publication is switched on, default value is used for result name.
4297         #
4298         #  @return New GEOM.GEOM_Object, containing the created pipe if 
4299         #          \a IsGenerateGroups is not set. Otherwise it returns new
4300         #          GEOM.ListOfGO. Its first element is the created pipe, the
4301         #          remaining ones are created groups.
4302         #
4303         #  @ref tui_creation_pipe "Example"
4304         @ManageTransactions("PrimOp")
4305         def MakePipeBiNormalAlongVector(self, theBase, thePath, theVec,
4306                                         IsGenerateGroups=False, theName=None):
4307             """
4308             Create a shape by extrusion of the base shape along
4309             the path shape with constant bi-normal direction along the given vector.
4310             The path shape can be a wire or an edge.
4311             It is possible to generate groups along with the result by means of
4312             setting the flag IsGenerateGroups. For detailed information on
4313             groups that can be created please see the method geompy.MakePipe().
4314
4315             Parameters:
4316                 theBase Base shape to be extruded.
4317                 thePath Path shape to extrude the base shape along it.
4318                 theVec Vector defines a constant binormal direction to keep the
4319                        same angle beetween the direction and the sections
4320                        along the sweep surface.
4321                 IsGenerateGroups flag that tells if it is necessary to
4322                                  create groups. It is equal to False by default.
4323                 theName Object name; when specified, this parameter is used
4324                         for result publication in the study. Otherwise, if automatic
4325                         publication is switched on, default value is used for result name.
4326
4327             Returns:
4328                 New GEOM.GEOM_Object, containing the created pipe if 
4329                 IsGenerateGroups is not set. Otherwise it returns new
4330                 GEOM.ListOfGO. Its first element is the created pipe, the
4331                 remaining ones are created groups.
4332             """
4333             # Example: see GEOM_TestAll.py
4334             aList = self.PrimOp.MakePipeBiNormalAlongVector(theBase, thePath,
4335                           theVec, IsGenerateGroups)
4336             RaiseIfFailed("MakePipeBiNormalAlongVector", self.PrimOp)
4337
4338             if IsGenerateGroups:
4339               self._autoPublish(aList, theName, "pipe")
4340               return aList
4341
4342             self._autoPublish(aList[0], theName, "pipe")
4343             return aList[0]
4344
4345         ## Makes a thick solid from a shape. If the input is a surface shape
4346         #  (face or shell) the result is a thick solid. If an input shape is
4347         #  a solid the result is a hollowed solid with removed faces.
4348         #  @param theShape Face or Shell to get thick solid or solid to get
4349         #         hollowed solid.
4350         #  @param theThickness Thickness of the resulting solid
4351         #  @param theFacesIDs the list of face IDs to be removed from the
4352         #         result. It is ignored if \a theShape is a face or a shell.
4353         #         It is empty by default. 
4354         #  @param theInside If true the thickness is applied towards inside
4355         #  @param theName Object name; when specified, this parameter is used
4356         #         for result publication in the study. Otherwise, if automatic
4357         #         publication is switched on, default value is used for result name.
4358         #
4359         #  @return New GEOM.GEOM_Object, containing the created solid
4360         #
4361         #  @ref tui_creation_thickness "Example"
4362         @ManageTransactions("PrimOp")
4363         def MakeThickSolid(self, theShape, theThickness,
4364                            theFacesIDs=[], theInside=False, theName=None):
4365             """
4366             Make a thick solid from a shape. If the input is a surface shape
4367             (face or shell) the result is a thick solid. If an input shape is
4368             a solid the result is a hollowed solid with removed faces.
4369
4370             Parameters:
4371                  theShape Face or Shell to get thick solid or solid to get
4372                           hollowed solid.
4373                  theThickness Thickness of the resulting solid
4374                  theFacesIDs the list of face IDs to be removed from the
4375                           result. It is ignored if theShape is a face or a
4376                           shell. It is empty by default. 
4377                  theInside If true the thickness is applied towards inside
4378                  theName Object name; when specified, this parameter is used
4379                          for result publication in the study. Otherwise, if automatic
4380                          publication is switched on, default value is used for result name.
4381
4382             Returns:
4383                 New GEOM.GEOM_Object, containing the created solid
4384             """
4385             # Example: see GEOM_TestAll.py
4386             theThickness,Parameters = ParseParameters(theThickness)
4387             anObj = self.PrimOp.MakeThickening(theShape, theFacesIDs,
4388                                                theThickness, True, theInside)
4389             RaiseIfFailed("MakeThickSolid", self.PrimOp)
4390             anObj.SetParameters(Parameters)
4391             self._autoPublish(anObj, theName, "thickSolid")
4392             return anObj
4393
4394
4395         ## Modifies a shape to make it a thick solid. If the input is a surface
4396         #  shape (face or shell) the result is a thick solid. If an input shape
4397         #  is a solid the result is a hollowed solid with removed faces.
4398         #  @param theShape Face or Shell to get thick solid or solid to get
4399         #         hollowed solid.
4400         #  @param theThickness Thickness of the resulting solid
4401         #  @param theFacesIDs the list of face IDs to be removed from the
4402         #         result. It is ignored if \a theShape is a face or a shell.
4403         #         It is empty by default. 
4404         #  @param theInside If true the thickness is applied towards inside
4405         #
4406         #  @return The modified shape
4407         #
4408         #  @ref tui_creation_thickness "Example"
4409         @ManageTransactions("PrimOp")
4410         def Thicken(self, theShape, theThickness, theFacesIDs=[], theInside=False):
4411             """
4412             Modifies a shape to make it a thick solid. If the input is a
4413             surface shape (face or shell) the result is a thick solid. If
4414             an input shape is a solid the result is a hollowed solid with
4415             removed faces.
4416
4417             Parameters:
4418                 theShape Face or Shell to get thick solid or solid to get
4419                          hollowed solid.
4420                 theThickness Thickness of the resulting solid
4421                 theFacesIDs the list of face IDs to be removed from the
4422                          result. It is ignored if \a theShape is a face or
4423                          a shell. It is empty by default. 
4424                 theInside If true the thickness is applied towards inside
4425
4426             Returns:
4427                 The modified shape
4428             """
4429             # Example: see GEOM_TestAll.py
4430             theThickness,Parameters = ParseParameters(theThickness)
4431             anObj = self.PrimOp.MakeThickening(theShape, theFacesIDs,
4432                                                theThickness, False, theInside)
4433             RaiseIfFailed("Thicken", self.PrimOp)
4434             anObj.SetParameters(Parameters)
4435             return anObj
4436
4437         ## Build a middle path of a pipe-like shape.
4438         #  The path shape can be a wire or an edge.
4439         #  @param theShape It can be closed or unclosed pipe-like shell
4440         #                  or a pipe-like solid.
4441         #  @param theBase1, theBase2 Two bases of the supposed pipe. This
4442         #                            should be wires or faces of theShape.
4443         #  @param theName Object name; when specified, this parameter is used
4444         #         for result publication in the study. Otherwise, if automatic
4445         #         publication is switched on, default value is used for result name.
4446         #
4447         #  @note It is not assumed that exact or approximate copy of theShape
4448         #        can be obtained by applying existing Pipe operation on the
4449         #        resulting "Path" wire taking theBase1 as the base - it is not
4450         #        always possible; though in some particular cases it might work
4451         #        it is not guaranteed. Thus, RestorePath function should not be
4452         #        considered as an exact reverse operation of the Pipe.
4453         #
4454         #  @return New GEOM.GEOM_Object, containing an edge or wire that represent
4455         #                                source pipe's "path".
4456         #
4457         #  @ref tui_creation_pipe_path "Example"
4458         @ManageTransactions("PrimOp")
4459         def RestorePath (self, theShape, theBase1, theBase2, theName=None):
4460             """
4461             Build a middle path of a pipe-like shape.
4462             The path shape can be a wire or an edge.
4463
4464             Parameters:
4465                 theShape It can be closed or unclosed pipe-like shell
4466                          or a pipe-like solid.
4467                 theBase1, theBase2 Two bases of the supposed pipe. This
4468                                    should be wires or faces of theShape.
4469                 theName Object name; when specified, this parameter is used
4470                         for result publication in the study. Otherwise, if automatic
4471                         publication is switched on, default value is used for result name.
4472
4473             Returns:
4474                 New GEOM_Object, containing an edge or wire that represent
4475                                  source pipe's path.
4476             """
4477             anObj = self.PrimOp.RestorePath(theShape, theBase1, theBase2)
4478             RaiseIfFailed("RestorePath", self.PrimOp)
4479             self._autoPublish(anObj, theName, "path")
4480             return anObj
4481
4482         ## Build a middle path of a pipe-like shape.
4483         #  The path shape can be a wire or an edge.
4484         #  @param theShape It can be closed or unclosed pipe-like shell
4485         #                  or a pipe-like solid.
4486         #  @param listEdges1, listEdges2 Two bases of the supposed pipe. This
4487         #                                should be lists of edges of theShape.
4488         #  @param theName Object name; when specified, this parameter is used
4489         #         for result publication in the study. Otherwise, if automatic
4490         #         publication is switched on, default value is used for result name.
4491         #
4492         #  @note It is not assumed that exact or approximate copy of theShape
4493         #        can be obtained by applying existing Pipe operation on the
4494         #        resulting "Path" wire taking theBase1 as the base - it is not
4495         #        always possible; though in some particular cases it might work
4496         #        it is not guaranteed. Thus, RestorePath function should not be
4497         #        considered as an exact reverse operation of the Pipe.
4498         #
4499         #  @return New GEOM.GEOM_Object, containing an edge or wire that represent
4500         #                                source pipe's "path".
4501         #
4502         #  @ref tui_creation_pipe_path "Example"
4503         @ManageTransactions("PrimOp")
4504         def RestorePathEdges (self, theShape, listEdges1, listEdges2, theName=None):
4505             """
4506             Build a middle path of a pipe-like shape.
4507             The path shape can be a wire or an edge.
4508
4509             Parameters:
4510                 theShape It can be closed or unclosed pipe-like shell
4511                          or a pipe-like solid.
4512                 listEdges1, listEdges2 Two bases of the supposed pipe. This
4513                                        should be lists of edges of theShape.
4514                 theName Object name; when specified, this parameter is used
4515                         for result publication in the study. Otherwise, if automatic
4516                         publication is switched on, default value is used for result name.
4517
4518             Returns:
4519                 New GEOM_Object, containing an edge or wire that represent
4520                                  source pipe's path.
4521             """
4522             anObj = self.PrimOp.RestorePathEdges(theShape, listEdges1, listEdges2)
4523             RaiseIfFailed("RestorePath", self.PrimOp)
4524             self._autoPublish(anObj, theName, "path")
4525             return anObj
4526
4527         # end of l3_complex
4528         ## @}
4529
4530         ## @addtogroup l3_basic_go
4531         ## @{
4532
4533         ## Create a linear edge with specified ends.
4534         #  @param thePnt1 Point for the first end of edge.
4535         #  @param thePnt2 Point for the second end of edge.
4536         #  @param theName Object name; when specified, this parameter is used
4537         #         for result publication in the study. Otherwise, if automatic
4538         #         publication is switched on, default value is used for result name.
4539         #
4540         #  @return New GEOM.GEOM_Object, containing the created edge.
4541         #
4542         #  @ref tui_creation_edge "Example"
4543         @ManageTransactions("ShapesOp")
4544         def MakeEdge(self, thePnt1, thePnt2, theName=None):
4545             """
4546             Create a linear edge with specified ends.
4547
4548             Parameters:
4549                 thePnt1 Point for the first end of edge.
4550                 thePnt2 Point for the second end of edge.
4551                 theName Object name; when specified, this parameter is used
4552                         for result publication in the study. Otherwise, if automatic
4553                         publication is switched on, default value is used for result name.
4554
4555             Returns:
4556                 New GEOM.GEOM_Object, containing the created edge.
4557             """
4558             # Example: see GEOM_TestAll.py
4559             anObj = self.ShapesOp.MakeEdge(thePnt1, thePnt2)
4560             RaiseIfFailed("MakeEdge", self.ShapesOp)
4561             self._autoPublish(anObj, theName, "edge")
4562             return anObj
4563
4564         ## Create a new edge, corresponding to the given length on the given curve.
4565         #  @param theRefCurve The referenced curve (edge).
4566         #  @param theLength Length on the referenced curve. It can be negative.
4567         #  @param theStartPoint Any point can be selected for it, the new edge will begin
4568         #                       at the end of \a theRefCurve, close to the selected point.
4569         #                       If None, start from the first point of \a theRefCurve.
4570         #  @param theName Object name; when specified, this parameter is used
4571         #         for result publication in the study. Otherwise, if automatic
4572         #         publication is switched on, default value is used for result name.
4573         #
4574         #  @return New GEOM.GEOM_Object, containing the created edge.
4575         #
4576         #  @ref tui_creation_edge "Example"
4577         @ManageTransactions("ShapesOp")
4578         def MakeEdgeOnCurveByLength(self, theRefCurve, theLength, theStartPoint = None, theName=None):
4579             """
4580             Create a new edge, corresponding to the given length on the given curve.
4581
4582             Parameters:
4583                 theRefCurve The referenced curve (edge).
4584                 theLength Length on the referenced curve. It can be negative.
4585                 theStartPoint Any point can be selected for it, the new edge will begin
4586                               at the end of theRefCurve, close to the selected point.
4587                               If None, start from the first point of theRefCurve.
4588                 theName Object name; when specified, this parameter is used
4589                         for result publication in the study. Otherwise, if automatic
4590                         publication is switched on, default value is used for result name.
4591
4592             Returns:
4593                 New GEOM.GEOM_Object, containing the created edge.
4594             """
4595             # Example: see GEOM_TestAll.py
4596             theLength, Parameters = ParseParameters(theLength)
4597             anObj = self.ShapesOp.MakeEdgeOnCurveByLength(theRefCurve, theLength, theStartPoint)
4598             RaiseIfFailed("MakeEdgeOnCurveByLength", self.ShapesOp)
4599             anObj.SetParameters(Parameters)
4600             self._autoPublish(anObj, theName, "edge")
4601             return anObj
4602
4603         ## Create an edge from specified wire.
4604         #  @param theWire source Wire
4605         #  @param theLinearTolerance linear tolerance value (default = 1e-07)
4606         #  @param theAngularTolerance angular tolerance value (default = 1e-12)
4607         #  @param theName Object name; when specified, this parameter is used
4608         #         for result publication in the study. Otherwise, if automatic
4609         #         publication is switched on, default value is used for result name.
4610         #
4611         #  @return New GEOM.GEOM_Object, containing the created edge.
4612         #
4613         #  @ref tui_creation_edge "Example"
4614         @ManageTransactions("ShapesOp")
4615         def MakeEdgeWire(self, theWire, theLinearTolerance = 1e-07, theAngularTolerance = 1e-12, theName=None):
4616             """
4617             Create an edge from specified wire.
4618
4619             Parameters:
4620                 theWire source Wire
4621                 theLinearTolerance linear tolerance value (default = 1e-07)
4622                 theAngularTolerance angular tolerance value (default = 1e-12)
4623                 theName Object name; when specified, this parameter is used
4624                         for result publication in the study. Otherwise, if automatic
4625                         publication is switched on, default value is used for result name.
4626
4627             Returns:
4628                 New GEOM.GEOM_Object, containing the created edge.
4629             """
4630             # Example: see GEOM_TestAll.py
4631             anObj = self.ShapesOp.MakeEdgeWire(theWire, theLinearTolerance, theAngularTolerance)
4632             RaiseIfFailed("MakeEdgeWire", self.ShapesOp)
4633             self._autoPublish(anObj, theName, "edge")
4634             return anObj
4635
4636         ## Create a wire from the set of edges and wires.
4637         #  @param theEdgesAndWires List of edges and/or wires.
4638         #  @param theTolerance Maximum distance between vertices, that will be merged.
4639         #                      Values less than 1e-07 are equivalent to 1e-07 (Precision::Confusion())
4640         #  @param theName Object name; when specified, this parameter is used
4641         #         for result publication in the study. Otherwise, if automatic
4642         #         publication is switched on, default value is used for result name.
4643         #
4644         #  @return New GEOM.GEOM_Object, containing the created wire.
4645         #
4646         #  @ref tui_creation_wire "Example"
4647         @ManageTransactions("ShapesOp")
4648         def MakeWire(self, theEdgesAndWires, theTolerance = 1e-07, theName=None):
4649             """
4650             Create a wire from the set of edges and wires.
4651
4652             Parameters:
4653                 theEdgesAndWires List of edges and/or wires.
4654                 theTolerance Maximum distance between vertices, that will be merged.
4655                              Values less than 1e-07 are equivalent to 1e-07 (Precision::Confusion()).
4656                 theName Object name; when specified, this parameter is used
4657                         for result publication in the study. Otherwise, if automatic
4658                         publication is switched on, default value is used for result name.
4659
4660             Returns:
4661                 New GEOM.GEOM_Object, containing the created wire.
4662             """
4663             # Example: see GEOM_TestAll.py
4664             anObj = self.ShapesOp.MakeWire(theEdgesAndWires, theTolerance)
4665             RaiseIfFailed("MakeWire", self.ShapesOp)
4666             self._autoPublish(anObj, theName, "wire")
4667             return anObj
4668
4669         ## Create a face on the given wire.
4670         #  @param theWire closed Wire or Edge to build the face on.
4671         #  @param isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4672         #                        If the tolerance of the obtained planar face is less
4673         #                        than 1e-06, this face will be returned, otherwise the
4674         #                        algorithm tries to build any suitable face on the given
4675         #                        wire and prints a warning message.
4676         #  @param theName Object name; when specified, this parameter is used
4677         #         for result publication in the study. Otherwise, if automatic
4678         #         publication is switched on, default value is used for result name.
4679         #
4680         #  @return New GEOM.GEOM_Object, containing the created face.
4681         #
4682         #  @ref tui_creation_face "Example"
4683         @ManageTransactions("ShapesOp")
4684         def MakeFace(self, theWire, isPlanarWanted, theName=None):
4685             """
4686             Create a face on the given wire.
4687
4688             Parameters:
4689                 theWire closed Wire or Edge to build the face on.
4690                 isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4691                                If the tolerance of the obtained planar face is less
4692                                than 1e-06, this face will be returned, otherwise the
4693                                algorithm tries to build any suitable face on the given
4694                                wire and prints a warning message.
4695                 theName Object name; when specified, this parameter is used
4696                         for result publication in the study. Otherwise, if automatic
4697                         publication is switched on, default value is used for result name.
4698
4699             Returns:
4700                 New GEOM.GEOM_Object, containing the created face.
4701             """
4702             # Example: see GEOM_TestAll.py
4703             anObj = self.ShapesOp.MakeFace(theWire, isPlanarWanted)
4704             if isPlanarWanted and anObj is not None and self.ShapesOp.GetErrorCode() == "MAKE_FACE_TOLERANCE_TOO_BIG":
4705                 print "WARNING: Cannot build a planar face: required tolerance is too big. Non-planar face is built."
4706             else:
4707                 RaiseIfFailed("MakeFace", self.ShapesOp)
4708             self._autoPublish(anObj, theName, "face")
4709             return anObj
4710
4711         ## Create a face on the given wires set.
4712         #  @param theWires List of closed wires or edges to build the face on.
4713         #  @param isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4714         #                        If the tolerance of the obtained planar face is less
4715         #                        than 1e-06, this face will be returned, otherwise the
4716         #                        algorithm tries to build any suitable face on the given
4717         #                        wire and prints a warning message.
4718         #  @param theName Object name; when specified, this parameter is used
4719         #         for result publication in the study. Otherwise, if automatic
4720         #         publication is switched on, default value is used for result name.
4721         #
4722         #  @return New GEOM.GEOM_Object, containing the created face.
4723         #
4724         #  @ref tui_creation_face "Example"
4725         @ManageTransactions("ShapesOp")
4726         def MakeFaceWires(self, theWires, isPlanarWanted, theName=None):
4727             """
4728             Create a face on the given wires set.
4729
4730             Parameters:
4731                 theWires List of closed wires or edges to build the face on.
4732                 isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4733                                If the tolerance of the obtained planar face is less
4734                                than 1e-06, this face will be returned, otherwise the
4735                                algorithm tries to build any suitable face on the given
4736                                wire and prints a warning message.
4737                 theName Object name; when specified, this parameter is used
4738                         for result publication in the study. Otherwise, if automatic
4739                         publication is switched on, default value is used for result name.
4740
4741             Returns:
4742                 New GEOM.GEOM_Object, containing the created face.
4743             """
4744             # Example: see GEOM_TestAll.py
4745             anObj = self.ShapesOp.MakeFaceWires(ToList(theWires), isPlanarWanted)
4746             if isPlanarWanted and anObj is not None and self.ShapesOp.GetErrorCode() == "MAKE_FACE_TOLERANCE_TOO_BIG":
4747                 print "WARNING: Cannot build a planar face: required tolerance is too big. Non-planar face is built."
4748             else:
4749                 RaiseIfFailed("MakeFaceWires", self.ShapesOp)
4750             self._autoPublish(anObj, theName, "face")
4751             return anObj
4752
4753         ## See MakeFaceWires() method for details.
4754         #
4755         #  @ref tui_creation_face "Example 1"
4756         #  \n @ref swig_MakeFaces  "Example 2"
4757         def MakeFaces(self, theWires, isPlanarWanted, theName=None):
4758             """
4759             See geompy.MakeFaceWires() method for details.
4760             """
4761             # Example: see GEOM_TestOthers.py
4762             # note: auto-publishing is done in self.MakeFaceWires()
4763             anObj = self.MakeFaceWires(theWires, isPlanarWanted, theName)
4764             return anObj
4765
4766         ## Create a face based on a surface from given face bounded
4767         #  by given wire.
4768         #  @param theFace the face whose surface is used to create a new face.
4769         #  @param theWire the wire that will bound a new face.
4770         #  @param theName Object name; when specified, this parameter is used
4771         #         for result publication in the study. Otherwise, if automatic
4772         #         publication is switched on, default value is used for result name.
4773         #
4774         #  @return New GEOM.GEOM_Object, containing the created face.
4775         #
4776         #  @ref tui_creation_face "Example"
4777         @ManageTransactions("ShapesOp")
4778         def MakeFaceFromSurface(self, theFace, theWire, theName=None):
4779             """
4780             Create a face based on a surface from given face bounded
4781             by given wire.
4782
4783             Parameters:
4784                 theFace the face whose surface is used to create a new face.
4785                 theWire the wire that will bound a new face.
4786                 theName Object name; when specified, this parameter is used
4787                         for result publication in the study. Otherwise, if automatic
4788                         publication is switched on, default value is used for result name.
4789
4790             Returns:
4791                 New GEOM.GEOM_Object, containing the created face.
4792             """
4793             # Example: see GEOM_TestAll.py
4794             anObj = self.ShapesOp.MakeFaceFromSurface(theFace, theWire)
4795             RaiseIfFailed("MakeFaceFromSurface", self.ShapesOp)
4796             self._autoPublish(anObj, theName, "face")
4797             return anObj
4798           
4799         ## Create a face from a set of edges with the given constraints.
4800         #  @param theConstraints List of edges and constraint faces (as a sequence of a Edge + Face couples):
4801         #         - edges should form a closed wire;
4802         #         - for each edge, constraint face is optional: if a constraint face is missing
4803         #           for some edge, this means that there no constraint associated with this edge.
4804         #  @param theName Object name; when specified, this parameter is used
4805         #         for result publication in the study. Otherwise, if automatic
4806         #         publication is switched on, default value is used for result name.
4807         # 
4808         # @return New GEOM.GEOM_Object, containing the created face.
4809         # 
4810         # @ref tui_creation_face "Example"
4811         @ManageTransactions("ShapesOp")
4812         def MakeFaceWithConstraints(self, theConstraints, theName=None):
4813             """
4814             Create a face from a set of edges with the given constraints.
4815
4816             Parameters:
4817                 theConstraints List of edges and constraint faces (as a sequence of a Edge + Face couples):
4818                         - edges should form a closed wire;
4819                         - for each edge, constraint face is optional: if a constraint face is missing
4820                           for some edge, this means that there no constraint associated with this edge.
4821                 theName Object name; when specified, this parameter is used
4822                         for result publication in the study. Otherwise, if automatic
4823                         publication is switched on, default value is used for result name.
4824
4825             Returns:
4826                 New GEOM.GEOM_Object, containing the created face.
4827             """
4828             # Example: see GEOM_TestAll.py
4829             anObj = self.ShapesOp.MakeFaceWithConstraints(theConstraints)
4830             if anObj is None:
4831                 RaiseIfFailed("MakeFaceWithConstraints", self.ShapesOp)
4832             self._autoPublish(anObj, theName, "face")
4833             return anObj
4834
4835         ## Create a shell from the set of faces and shells.
4836         #  @param theFacesAndShells List of faces and/or shells.
4837         #  @param theName Object name; when specified, this parameter is used
4838         #         for result publication in the study. Otherwise, if automatic
4839         #         publication is switched on, default value is used for result name.
4840         #
4841         #  @return New GEOM.GEOM_Object, containing the created shell.
4842         #
4843         #  @ref tui_creation_shell "Example"
4844         @ManageTransactions("ShapesOp")
4845         def MakeShell(self, theFacesAndShells, theName=None):
4846             """
4847             Create a shell from the set of faces and shells.
4848
4849             Parameters:
4850                 theFacesAndShells List of faces and/or shells.
4851                 theName Object name; when specified, this parameter is used
4852                         for result publication in the study. Otherwise, if automatic
4853                         publication is switched on, default value is used for result name.
4854
4855             Returns:
4856                 New GEOM.GEOM_Object, containing the created shell.
4857             """
4858             # Example: see GEOM_TestAll.py
4859             anObj = self.ShapesOp.MakeShell( ToList( theFacesAndShells ))
4860             RaiseIfFailed("MakeShell", self.ShapesOp)
4861             self._autoPublish(anObj, theName, "shell")
4862             return anObj
4863
4864         ## Create a solid, bounded by the given shells.
4865         #  @param theShells Sequence of bounding shells.
4866         #  @param theName Object name; when specified, this parameter is used
4867         #         for result publication in the study. Otherwise, if automatic
4868         #         publication is switched on, default value is used for result name.
4869         #
4870         #  @return New GEOM.GEOM_Object, containing the created solid.
4871         #
4872         #  @ref tui_creation_solid "Example"
4873         @ManageTransactions("ShapesOp")
4874         def MakeSolid(self, theShells, theName=None):
4875             """
4876             Create a solid, bounded by the given shells.
4877
4878             Parameters:
4879                 theShells Sequence of bounding shells.
4880                 theName Object name; when specified, this parameter is used
4881                         for result publication in the study. Otherwise, if automatic
4882                         publication is switched on, default value is used for result name.
4883
4884             Returns:
4885                 New GEOM.GEOM_Object, containing the created solid.
4886             """
4887             # Example: see GEOM_TestAll.py
4888             theShells = ToList(theShells)
4889             if len(theShells) == 1:
4890                 descr = self._IsGoodForSolid(theShells[0])
4891                 #if len(descr) > 0:
4892                 #    raise RuntimeError, "MakeSolidShells : " + descr
4893                 if descr == "WRN_SHAPE_UNCLOSED":
4894                     raise RuntimeError, "MakeSolidShells : Unable to create solid from unclosed shape"
4895             anObj = self.ShapesOp.MakeSolidShells(theShells)
4896             RaiseIfFailed("MakeSolidShells", self.ShapesOp)
4897             self._autoPublish(anObj, theName, "solid")
4898             return anObj
4899
4900         ## Create a compound of the given shapes.
4901         #  @param theShapes List of shapes to put in compound.
4902         #  @param theName Object name; when specified, this parameter is used
4903         #         for result publication in the study. Otherwise, if automatic
4904         #         publication is switched on, default value is used for result name.
4905         #
4906         #  @return New GEOM.GEOM_Object, containing the created compound.
4907         #
4908         #  @ref tui_creation_compound "Example"
4909         @ManageTransactions("ShapesOp")
4910         def MakeCompound(self, theShapes, theName=None):
4911             """
4912             Create a compound of the given shapes.
4913
4914             Parameters:
4915                 theShapes List of shapes to put in compound.
4916                 theName Object name; when specified, this parameter is used
4917                         for result publication in the study. Otherwise, if automatic
4918                         publication is switched on, default value is used for result name.
4919
4920             Returns:
4921                 New GEOM.GEOM_Object, containing the created compound.
4922             """
4923             # Example: see GEOM_TestAll.py
4924             anObj = self.ShapesOp.MakeCompound(ToList(theShapes))
4925             RaiseIfFailed("MakeCompound", self.ShapesOp)
4926             self._autoPublish(anObj, theName, "compound")
4927             return anObj
4928         
4929         ## Create a solid (or solids) from the set of faces and/or shells.
4930         #  @param theFacesOrShells List of faces and/or shells.
4931         #  @param isIntersect If TRUE, forces performing intersections
4932         #         between arguments; otherwise (default) intersection is not performed.
4933         #  @param theName Object name; when specified, this parameter is used
4934         #         for result publication in the study. Otherwise, if automatic
4935         #         publication is switched on, default value is used for result name.
4936         #
4937         #  @return New GEOM.GEOM_Object, containing the created solid (or compound of solids).
4938         #
4939         #  @ref tui_creation_solid_from_faces "Example"
4940         @ManageTransactions("ShapesOp")
4941         def MakeSolidFromConnectedFaces(self, theFacesOrShells, isIntersect = False, theName=None):
4942             """
4943             Create a solid (or solids) from the set of connected faces and/or shells.
4944
4945             Parameters:
4946                 theFacesOrShells List of faces and/or shells.
4947                 isIntersect If TRUE, forces performing intersections
4948                         between arguments; otherwise (default) intersection is not performed
4949                 theName Object name; when specified, this parameter is used.
4950                         for result publication in the study. Otherwise, if automatic
4951                         publication is switched on, default value is used for result name.
4952
4953             Returns:
4954                 New GEOM.GEOM_Object, containing the created solid (or compound of solids).
4955             """
4956             # Example: see GEOM_TestAll.py
4957             anObj = self.ShapesOp.MakeSolidFromConnectedFaces(theFacesOrShells, isIntersect)
4958             RaiseIfFailed("MakeSolidFromConnectedFaces", self.ShapesOp)
4959             self._autoPublish(anObj, theName, "solid")
4960             return anObj
4961
4962         # end of l3_basic_go
4963         ## @}
4964
4965         ## @addtogroup l2_measure
4966         ## @{
4967
4968         ## Gives quantity of faces in the given shape.
4969         #  @param theShape Shape to count faces of.
4970         #  @return Quantity of faces.
4971         #
4972         #  @ref swig_NumberOf "Example"
4973         @ManageTransactions("ShapesOp")
4974         def NumberOfFaces(self, theShape):
4975             """
4976             Gives quantity of faces in the given shape.
4977
4978             Parameters:
4979                 theShape Shape to count faces of.
4980
4981             Returns:
4982                 Quantity of faces.
4983             """
4984             # Example: see GEOM_TestOthers.py
4985             nb_faces = self.ShapesOp.NumberOfFaces(theShape)
4986             RaiseIfFailed("NumberOfFaces", self.ShapesOp)
4987             return nb_faces
4988
4989         ## Gives quantity of edges in the given shape.
4990         #  @param theShape Shape to count edges of.
4991         #  @return Quantity of edges.
4992         #
4993         #  @ref swig_NumberOf "Example"
4994         @ManageTransactions("ShapesOp")
4995         def NumberOfEdges(self, theShape):
4996             """
4997             Gives quantity of edges in the given shape.
4998
4999             Parameters:
5000                 theShape Shape to count edges of.
5001
5002             Returns:
5003                 Quantity of edges.
5004             """
5005             # Example: see GEOM_TestOthers.py
5006             nb_edges = self.ShapesOp.NumberOfEdges(theShape)
5007             RaiseIfFailed("NumberOfEdges", self.ShapesOp)
5008             return nb_edges
5009
5010         ## Gives quantity of sub-shapes of type theShapeType in the given shape.
5011         #  @param theShape Shape to count sub-shapes of.
5012         #  @param theShapeType Type of sub-shapes to count (see ShapeType())
5013         #  @return Quantity of sub-shapes of given type.
5014         #
5015         #  @ref swig_NumberOf "Example"
5016         @ManageTransactions("ShapesOp")
5017         def NumberOfSubShapes(self, theShape, theShapeType):
5018             """
5019             Gives quantity of sub-shapes of type theShapeType in the given shape.
5020
5021             Parameters:
5022                 theShape Shape to count sub-shapes of.
5023                 theShapeType Type of sub-shapes to count (see geompy.ShapeType)
5024
5025             Returns:
5026                 Quantity of sub-shapes of given type.
5027             """
5028             # Example: see GEOM_TestOthers.py
5029             nb_ss = self.ShapesOp.NumberOfSubShapes(theShape, theShapeType)
5030             RaiseIfFailed("NumberOfSubShapes", self.ShapesOp)
5031             return nb_ss
5032
5033         ## Gives quantity of solids in the given shape.
5034         #  @param theShape Shape to count solids in.
5035         #  @return Quantity of solids.
5036         #
5037         #  @ref swig_NumberOf "Example"
5038         @ManageTransactions("ShapesOp")
5039         def NumberOfSolids(self, theShape):
5040             """
5041             Gives quantity of solids in the given shape.
5042
5043             Parameters:
5044                 theShape Shape to count solids in.
5045
5046             Returns:
5047                 Quantity of solids.
5048             """
5049             # Example: see GEOM_TestOthers.py
5050             nb_solids = self.ShapesOp.NumberOfSubShapes(theShape, self.ShapeType["SOLID"])
5051             RaiseIfFailed("NumberOfSolids", self.ShapesOp)
5052             return nb_solids
5053
5054         # end of l2_measure
5055         ## @}
5056
5057         ## @addtogroup l3_healing
5058         ## @{
5059
5060         ## Reverses an orientation the given shape.
5061         #  @param theShape Shape to be reversed.
5062         #  @param theName Object name; when specified, this parameter is used
5063         #         for result publication in the study. Otherwise, if automatic
5064         #         publication is switched on, default value is used for result name.
5065         #
5066         #  @return The reversed copy of theShape.
5067         #
5068         #  @ref swig_ChangeOrientation "Example"
5069         @ManageTransactions("ShapesOp")
5070         def ChangeOrientation(self, theShape, theName=None):
5071             """
5072             Reverses an orientation the given shape.
5073
5074             Parameters:
5075                 theShape Shape to be reversed.
5076                 theName Object name; when specified, this parameter is used
5077                         for result publication in the study. Otherwise, if automatic
5078                         publication is switched on, default value is used for result name.
5079
5080             Returns:
5081                 The reversed copy of theShape.
5082             """
5083             # Example: see GEOM_TestAll.py
5084             anObj = self.ShapesOp.ChangeOrientation(theShape)
5085             RaiseIfFailed("ChangeOrientation", self.ShapesOp)
5086             self._autoPublish(anObj, theName, "reversed")
5087             return anObj
5088
5089         ## See ChangeOrientation() method for details.
5090         #
5091         #  @ref swig_OrientationChange "Example"
5092         def OrientationChange(self, theShape, theName=None):
5093             """
5094             See geompy.ChangeOrientation method for details.
5095             """
5096             # Example: see GEOM_TestOthers.py
5097             # note: auto-publishing is done in self.ChangeOrientation()
5098             anObj = self.ChangeOrientation(theShape, theName)
5099             return anObj
5100
5101         # end of l3_healing
5102         ## @}
5103
5104         ## @addtogroup l4_obtain
5105         ## @{
5106
5107         ## Retrieve all free faces from the given shape.
5108         #  Free face is a face, which is not shared between two shells of the shape.
5109         #  @param theShape Shape to find free faces in.
5110         #  @return List of IDs of all free faces, contained in theShape.
5111         #
5112         #  @ref tui_free_faces_page "Example"
5113         @ManageTransactions("ShapesOp")
5114         def GetFreeFacesIDs(self,theShape):
5115             """
5116             Retrieve all free faces from the given shape.
5117             Free face is a face, which is not shared between two shells of the shape.
5118
5119             Parameters:
5120                 theShape Shape to find free faces in.
5121
5122             Returns:
5123                 List of IDs of all free faces, contained in theShape.
5124             """
5125             # Example: see GEOM_TestOthers.py
5126             anIDs = self.ShapesOp.GetFreeFacesIDs(theShape)
5127             RaiseIfFailed("GetFreeFacesIDs", self.ShapesOp)
5128             return anIDs
5129
5130         ## Get all sub-shapes of theShape1 of the given type, shared with theShape2.
5131         #  @param theShape1 Shape to find sub-shapes in.
5132         #  @param theShape2 Shape to find shared sub-shapes with.
5133         #  @param theShapeType Type of sub-shapes to be retrieved.
5134         #  @param theName Object name; when specified, this parameter is used
5135         #         for result publication in the study. Otherwise, if automatic
5136         #         publication is switched on, default value is used for result name.
5137         #
5138         #  @return List of sub-shapes of theShape1, shared with theShape2.
5139         #
5140         #  @ref swig_GetSharedShapes "Example"
5141         @ManageTransactions("ShapesOp")
5142         def GetSharedShapes(self, theShape1, theShape2, theShapeType, theName=None):
5143             """
5144             Get all sub-shapes of theShape1 of the given type, shared with theShape2.
5145
5146             Parameters:
5147                 theShape1 Shape to find sub-shapes in.
5148                 theShape2 Shape to find shared sub-shapes with.
5149                 theShapeType Type of sub-shapes to be retrieved.
5150                 theName Object name; when specified, this parameter is used
5151                         for result publication in the study. Otherwise, if automatic
5152                         publication is switched on, default value is used for result name.
5153
5154             Returns:
5155                 List of sub-shapes of theShape1, shared with theShape2.
5156             """
5157             # Example: see GEOM_TestOthers.py
5158             aList = self.ShapesOp.GetSharedShapes(theShape1, theShape2, theShapeType)
5159             RaiseIfFailed("GetSharedShapes", self.ShapesOp)
5160             self._autoPublish(aList, theName, "shared")
5161             return aList
5162
5163         ## Get sub-shapes, shared by input shapes.
5164         #  @param theShapes Either a list or compound of shapes to find common sub-shapes of.
5165         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType()).
5166         #  @param theMultiShare Specifies what type of shares should be checked:
5167         #         - @c True (default): search sub-shapes from 1st input shape shared with all other input shapes;
5168         #         - @c False: causes to search sub-shapes shared between couples of input shapes.
5169         #  @param theName Object name; when specified, this parameter is used
5170         #         for result publication in the study. Otherwise, if automatic
5171         #         publication is switched on, default value is used for result name.
5172         #
5173         #  @note If @a theShapes contains single compound, the shares between all possible couples of 
5174         #        its top-level shapes are returned; otherwise, only shares between 1st input shape
5175         #        and all rest input shapes are returned.
5176         #
5177         #  @return List of all found sub-shapes.
5178         #
5179         #  Examples:
5180         #  - @ref tui_shared_shapes "Example 1"
5181         #  - @ref swig_GetSharedShapes "Example 2"
5182         @ManageTransactions("ShapesOp")
5183         def GetSharedShapesMulti(self, theShapes, theShapeType, theMultiShare=True, theName=None):
5184             """
5185             Get sub-shapes, shared by input shapes.
5186
5187             Parameters:
5188                 theShapes Either a list or compound of shapes to find common sub-shapes of.
5189                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType).
5190                 theMultiShare Specifies what type of shares should be checked:
5191                   - True (default): search sub-shapes from 1st input shape shared with all other input shapes;
5192                   - False: causes to search sub-shapes shared between couples of input shapes.
5193                 theName Object name; when specified, this parameter is used
5194                         for result publication in the study. Otherwise, if automatic
5195                         publication is switched on, default value is used for result name.
5196
5197             Note: if theShapes contains single compound, the shares between all possible couples of 
5198                   its top-level shapes are returned; otherwise, only shares between 1st input shape
5199                   and all rest input shapes are returned.
5200
5201             Returns:
5202                 List of all found sub-shapes.
5203             """
5204             # Example: see GEOM_TestOthers.py
5205             aList = self.ShapesOp.GetSharedShapesMulti(ToList(theShapes), theShapeType, theMultiShare)
5206             RaiseIfFailed("GetSharedShapesMulti", self.ShapesOp)
5207             self._autoPublish(aList, theName, "shared")
5208             return aList
5209
5210         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5211         #  situated relatively the specified plane by the certain way,
5212         #  defined through <VAR>theState</VAR> parameter.
5213         #  @param theShape Shape to find sub-shapes of.
5214         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5215         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5216         #                direction and location of the plane to find shapes on.
5217         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5218         #  @param theName Object name; when specified, this parameter is used
5219         #         for result publication in the study. Otherwise, if automatic
5220         #         publication is switched on, default value is used for result name.
5221         #
5222         #  @return List of all found sub-shapes.
5223         #
5224         #  @ref swig_GetShapesOnPlane "Example"
5225         @ManageTransactions("ShapesOp")
5226         def GetShapesOnPlane(self, theShape, theShapeType, theAx1, theState, theName=None):
5227             """
5228             Find in theShape all sub-shapes of type theShapeType,
5229             situated relatively the specified plane by the certain way,
5230             defined through theState parameter.
5231
5232             Parameters:
5233                 theShape Shape to find sub-shapes of.
5234                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5235                 theAx1 Vector (or line, or linear edge), specifying normal
5236                        direction and location of the plane to find shapes on.
5237                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5238                 theName Object name; when specified, this parameter is used
5239                         for result publication in the study. Otherwise, if automatic
5240                         publication is switched on, default value is used for result name.
5241
5242             Returns:
5243                 List of all found sub-shapes.
5244             """
5245             # Example: see GEOM_TestOthers.py
5246             aList = self.ShapesOp.GetShapesOnPlane(theShape, theShapeType, theAx1, theState)
5247             RaiseIfFailed("GetShapesOnPlane", self.ShapesOp)
5248             self._autoPublish(aList, theName, "shapeOnPlane")
5249             return aList
5250
5251         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5252         #  situated relatively the specified plane by the certain way,
5253         #  defined through <VAR>theState</VAR> parameter.
5254         #  @param theShape Shape to find sub-shapes of.
5255         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5256         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5257         #                direction and location of the plane to find shapes on.
5258         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5259         #
5260         #  @return List of all found sub-shapes indices.
5261         #
5262         #  @ref swig_GetShapesOnPlaneIDs "Example"
5263         @ManageTransactions("ShapesOp")
5264         def GetShapesOnPlaneIDs(self, theShape, theShapeType, theAx1, theState):
5265             """
5266             Find in theShape all sub-shapes of type theShapeType,
5267             situated relatively the specified plane by the certain way,
5268             defined through theState parameter.
5269
5270             Parameters:
5271                 theShape Shape to find sub-shapes of.
5272                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5273                 theAx1 Vector (or line, or linear edge), specifying normal
5274                        direction and location of the plane to find shapes on.
5275                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5276
5277             Returns:
5278                 List of all found sub-shapes indices.
5279             """
5280             # Example: see GEOM_TestOthers.py
5281             aList = self.ShapesOp.GetShapesOnPlaneIDs(theShape, theShapeType, theAx1, theState)
5282             RaiseIfFailed("GetShapesOnPlaneIDs", self.ShapesOp)
5283             return aList
5284
5285         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5286         #  situated relatively the specified plane by the certain way,
5287         #  defined through <VAR>theState</VAR> parameter.
5288         #  @param theShape Shape to find sub-shapes of.
5289         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5290         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5291         #                direction of the plane to find shapes on.
5292         #  @param thePnt Point specifying location of the plane to find shapes on.
5293         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5294         #  @param theName Object name; when specified, this parameter is used
5295         #         for result publication in the study. Otherwise, if automatic
5296         #         publication is switched on, default value is used for result name.
5297         #
5298         #  @return List of all found sub-shapes.
5299         #
5300         #  @ref swig_GetShapesOnPlaneWithLocation "Example"
5301         @ManageTransactions("ShapesOp")
5302         def GetShapesOnPlaneWithLocation(self, theShape, theShapeType, theAx1, thePnt, theState, theName=None):
5303             """
5304             Find in theShape all sub-shapes of type theShapeType,
5305             situated relatively the specified plane by the certain way,
5306             defined through theState parameter.
5307
5308             Parameters:
5309                 theShape Shape to find sub-shapes of.
5310                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5311                 theAx1 Vector (or line, or linear edge), specifying normal
5312                        direction and location of the plane to find shapes on.
5313                 thePnt Point specifying location of the plane to find shapes on.
5314                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5315                 theName Object name; when specified, this parameter is used
5316                         for result publication in the study. Otherwise, if automatic
5317                         publication is switched on, default value is used for result name.
5318
5319             Returns:
5320                 List of all found sub-shapes.
5321             """
5322             # Example: see GEOM_TestOthers.py
5323             aList = self.ShapesOp.GetShapesOnPlaneWithLocation(theShape, theShapeType,
5324                                                                theAx1, thePnt, theState)
5325             RaiseIfFailed("GetShapesOnPlaneWithLocation", self.ShapesOp)
5326             self._autoPublish(aList, theName, "shapeOnPlane")
5327             return aList
5328
5329         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5330         #  situated relatively the specified plane by the certain way,
5331         #  defined through <VAR>theState</VAR> parameter.
5332         #  @param theShape Shape to find sub-shapes of.
5333         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5334         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5335         #                direction of the plane to find shapes on.
5336         #  @param thePnt Point specifying location of the plane to find shapes on.
5337         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5338         #
5339         #  @return List of all found sub-shapes indices.
5340         #
5341         #  @ref swig_GetShapesOnPlaneWithLocationIDs "Example"
5342         @ManageTransactions("ShapesOp")
5343         def GetShapesOnPlaneWithLocationIDs(self, theShape, theShapeType, theAx1, thePnt, theState):
5344             """
5345             Find in theShape all sub-shapes of type theShapeType,
5346             situated relatively the specified plane by the certain way,
5347             defined through theState parameter.
5348
5349             Parameters:
5350                 theShape Shape to find sub-shapes of.
5351                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5352                 theAx1 Vector (or line, or linear edge), specifying normal
5353                        direction and location of the plane to find shapes on.
5354                 thePnt Point specifying location of the plane to find shapes on.
5355                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5356
5357             Returns:
5358                 List of all found sub-shapes indices.
5359             """
5360             # Example: see GEOM_TestOthers.py
5361             aList = self.ShapesOp.GetShapesOnPlaneWithLocationIDs(theShape, theShapeType,
5362                                                                   theAx1, thePnt, theState)
5363             RaiseIfFailed("GetShapesOnPlaneWithLocationIDs", self.ShapesOp)
5364             return aList
5365
5366         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5367         #  the specified cylinder by the certain way, defined through \a theState parameter.
5368         #  @param theShape Shape to find sub-shapes of.
5369         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5370         #  @param theAxis Vector (or line, or linear edge), specifying
5371         #                 axis of the cylinder to find shapes on.
5372         #  @param theRadius Radius of the cylinder to find shapes on.
5373         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5374         #  @param theName Object name; when specified, this parameter is used
5375         #         for result publication in the study. Otherwise, if automatic
5376         #         publication is switched on, default value is used for result name.
5377         #
5378         #  @return List of all found sub-shapes.
5379         #
5380         #  @ref swig_GetShapesOnCylinder "Example"
5381         @ManageTransactions("ShapesOp")
5382         def GetShapesOnCylinder(self, theShape, theShapeType, theAxis, theRadius, theState, theName=None):
5383             """
5384             Find in theShape all sub-shapes of type theShapeType, situated relatively
5385             the specified cylinder by the certain way, defined through theState parameter.
5386
5387             Parameters:
5388                 theShape Shape to find sub-shapes of.
5389                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5390                 theAxis Vector (or line, or linear edge), specifying
5391                         axis of the cylinder to find shapes on.
5392                 theRadius Radius of the cylinder to find shapes on.
5393                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5394                 theName Object name; when specified, this parameter is used
5395                         for result publication in the study. Otherwise, if automatic
5396                         publication is switched on, default value is used for result name.
5397
5398             Returns:
5399                 List of all found sub-shapes.
5400             """
5401             # Example: see GEOM_TestOthers.py
5402             aList = self.ShapesOp.GetShapesOnCylinder(theShape, theShapeType, theAxis, theRadius, theState)
5403             RaiseIfFailed("GetShapesOnCylinder", self.ShapesOp)
5404             self._autoPublish(aList, theName, "shapeOnCylinder")
5405             return aList
5406
5407         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5408         #  the specified cylinder by the certain way, defined through \a theState parameter.
5409         #  @param theShape Shape to find sub-shapes of.
5410         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5411         #  @param theAxis Vector (or line, or linear edge), specifying
5412         #                 axis of the cylinder to find shapes on.
5413         #  @param theRadius Radius of the cylinder to find shapes on.
5414         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5415         #
5416         #  @return List of all found sub-shapes indices.
5417         #
5418         #  @ref swig_GetShapesOnCylinderIDs "Example"
5419         @ManageTransactions("ShapesOp")
5420         def GetShapesOnCylinderIDs(self, theShape, theShapeType, theAxis, theRadius, theState):
5421             """
5422             Find in theShape all sub-shapes of type theShapeType, situated relatively
5423             the specified cylinder by the certain way, defined through theState parameter.
5424
5425             Parameters:
5426                 theShape Shape to find sub-shapes of.
5427                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5428                 theAxis Vector (or line, or linear edge), specifying
5429                         axis of the cylinder to find shapes on.
5430                 theRadius Radius of the cylinder to find shapes on.
5431                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5432
5433             Returns:
5434                 List of all found sub-shapes indices.
5435             """
5436             # Example: see GEOM_TestOthers.py
5437             aList = self.ShapesOp.GetShapesOnCylinderIDs(theShape, theShapeType, theAxis, theRadius, theState)
5438             RaiseIfFailed("GetShapesOnCylinderIDs", self.ShapesOp)
5439             return aList
5440
5441         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5442         #  the specified cylinder by the certain way, defined through \a theState parameter.
5443         #  @param theShape Shape to find sub-shapes of.
5444         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5445         #  @param theAxis Vector (or line, or linear edge), specifying
5446         #                 axis of the cylinder to find shapes on.
5447         #  @param thePnt Point specifying location of the bottom of the cylinder.
5448         #  @param theRadius Radius of the cylinder to find shapes on.
5449         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5450         #  @param theName Object name; when specified, this parameter is used
5451         #         for result publication in the study. Otherwise, if automatic
5452         #         publication is switched on, default value is used for result name.
5453         #
5454         #  @return List of all found sub-shapes.
5455         #
5456         #  @ref swig_GetShapesOnCylinderWithLocation "Example"
5457         @ManageTransactions("ShapesOp")
5458         def GetShapesOnCylinderWithLocation(self, theShape, theShapeType, theAxis, thePnt, theRadius, theState, theName=None):
5459             """
5460             Find in theShape all sub-shapes of type theShapeType, situated relatively
5461             the specified cylinder by the certain way, defined through theState parameter.
5462
5463             Parameters:
5464                 theShape Shape to find sub-shapes of.
5465                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5466                 theAxis Vector (or line, or linear edge), specifying
5467                         axis of the cylinder to find shapes on.
5468                 theRadius Radius of the cylinder to find shapes on.
5469                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5470                 theName Object name; when specified, this parameter is used
5471                         for result publication in the study. Otherwise, if automatic
5472                         publication is switched on, default value is used for result name.
5473
5474             Returns:
5475                 List of all found sub-shapes.
5476             """
5477             # Example: see GEOM_TestOthers.py
5478             aList = self.ShapesOp.GetShapesOnCylinderWithLocation(theShape, theShapeType, theAxis, thePnt, theRadius, theState)
5479             RaiseIfFailed("GetShapesOnCylinderWithLocation", self.ShapesOp)
5480             self._autoPublish(aList, theName, "shapeOnCylinder")
5481             return aList
5482
5483         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5484         #  the specified cylinder by the certain way, defined through \a theState parameter.
5485         #  @param theShape Shape to find sub-shapes of.
5486         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5487         #  @param theAxis Vector (or line, or linear edge), specifying
5488         #                 axis of the cylinder to find shapes on.
5489         #  @param thePnt Point specifying location of the bottom of the cylinder.
5490         #  @param theRadius Radius of the cylinder to find shapes on.
5491         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5492         #
5493         #  @return List of all found sub-shapes indices
5494         #
5495         #  @ref swig_GetShapesOnCylinderWithLocationIDs "Example"
5496         @ManageTransactions("ShapesOp")
5497         def GetShapesOnCylinderWithLocationIDs(self, theShape, theShapeType, theAxis, thePnt, theRadius, theState):
5498             """
5499             Find in theShape all sub-shapes of type theShapeType, situated relatively
5500             the specified cylinder by the certain way, defined through theState parameter.
5501
5502             Parameters:
5503                 theShape Shape to find sub-shapes of.
5504                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5505                 theAxis Vector (or line, or linear edge), specifying
5506                         axis of the cylinder to find shapes on.
5507                 theRadius Radius of the cylinder to find shapes on.
5508                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5509
5510             Returns:
5511                 List of all found sub-shapes indices.
5512             """
5513             # Example: see GEOM_TestOthers.py
5514             aList = self.ShapesOp.GetShapesOnCylinderWithLocationIDs(theShape, theShapeType, theAxis, thePnt, theRadius, theState)
5515             RaiseIfFailed("GetShapesOnCylinderWithLocationIDs", self.ShapesOp)
5516             return aList
5517
5518         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5519         #  the specified sphere by the certain way, defined through \a theState parameter.
5520         #  @param theShape Shape to find sub-shapes of.
5521         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5522         #  @param theCenter Point, specifying center of the sphere to find shapes on.
5523         #  @param theRadius Radius of the sphere to find shapes on.
5524         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5525         #  @param theName Object name; when specified, this parameter is used
5526         #         for result publication in the study. Otherwise, if automatic
5527         #         publication is switched on, default value is used for result name.
5528         #
5529         #  @return List of all found sub-shapes.
5530         #
5531         #  @ref swig_GetShapesOnSphere "Example"
5532         @ManageTransactions("ShapesOp")
5533         def GetShapesOnSphere(self, theShape, theShapeType, theCenter, theRadius, theState, theName=None):
5534             """
5535             Find in theShape all sub-shapes of type theShapeType, situated relatively
5536             the specified sphere by the certain way, defined through theState parameter.
5537
5538             Parameters:
5539                 theShape Shape to find sub-shapes of.
5540                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5541                 theCenter Point, specifying center of the sphere to find shapes on.
5542                 theRadius Radius of the sphere to find shapes on.
5543                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5544                 theName Object name; when specified, this parameter is used
5545                         for result publication in the study. Otherwise, if automatic
5546                         publication is switched on, default value is used for result name.
5547
5548             Returns:
5549                 List of all found sub-shapes.
5550             """
5551             # Example: see GEOM_TestOthers.py
5552             aList = self.ShapesOp.GetShapesOnSphere(theShape, theShapeType, theCenter, theRadius, theState)
5553             RaiseIfFailed("GetShapesOnSphere", self.ShapesOp)
5554             self._autoPublish(aList, theName, "shapeOnSphere")
5555             return aList
5556
5557         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5558         #  the specified sphere by the certain way, defined through \a theState parameter.
5559         #  @param theShape Shape to find sub-shapes of.
5560         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5561         #  @param theCenter Point, specifying center of the sphere to find shapes on.
5562         #  @param theRadius Radius of the sphere to find shapes on.
5563         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5564         #
5565         #  @return List of all found sub-shapes indices.
5566         #
5567         #  @ref swig_GetShapesOnSphereIDs "Example"
5568         @ManageTransactions("ShapesOp")
5569         def GetShapesOnSphereIDs(self, theShape, theShapeType, theCenter, theRadius, theState):
5570             """
5571             Find in theShape all sub-shapes of type theShapeType, situated relatively
5572             the specified sphere by the certain way, defined through theState parameter.
5573
5574             Parameters:
5575                 theShape Shape to find sub-shapes of.
5576                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5577                 theCenter Point, specifying center of the sphere to find shapes on.
5578                 theRadius Radius of the sphere to find shapes on.
5579                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5580
5581             Returns:
5582                 List of all found sub-shapes indices.
5583             """
5584             # Example: see GEOM_TestOthers.py
5585             aList = self.ShapesOp.GetShapesOnSphereIDs(theShape, theShapeType, theCenter, theRadius, theState)
5586             RaiseIfFailed("GetShapesOnSphereIDs", self.ShapesOp)
5587             return aList
5588
5589         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5590         #  the specified quadrangle by the certain way, defined through \a theState parameter.
5591         #  @param theShape Shape to find sub-shapes of.
5592         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5593         #  @param theTopLeftPoint Point, specifying top left corner of a quadrangle
5594         #  @param theTopRigthPoint Point, specifying top right corner of a quadrangle
5595         #  @param theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5596         #  @param theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5597         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5598         #  @param theName Object name; when specified, this parameter is used
5599         #         for result publication in the study. Otherwise, if automatic
5600         #         publication is switched on, default value is used for result name.
5601         #
5602         #  @return List of all found sub-shapes.
5603         #
5604         #  @ref swig_GetShapesOnQuadrangle "Example"
5605         @ManageTransactions("ShapesOp")
5606         def GetShapesOnQuadrangle(self, theShape, theShapeType,
5607                                   theTopLeftPoint, theTopRigthPoint,
5608                                   theBottomLeftPoint, theBottomRigthPoint, theState, theName=None):
5609             """
5610             Find in theShape all sub-shapes of type theShapeType, situated relatively
5611             the specified quadrangle by the certain way, defined through theState parameter.
5612
5613             Parameters:
5614                 theShape Shape to find sub-shapes of.
5615                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5616                 theTopLeftPoint Point, specifying top left corner of a quadrangle
5617                 theTopRigthPoint Point, specifying top right corner of a quadrangle
5618                 theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5619                 theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5620                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5621                 theName Object name; when specified, this parameter is used
5622                         for result publication in the study. Otherwise, if automatic
5623                         publication is switched on, default value is used for result name.
5624
5625             Returns:
5626                 List of all found sub-shapes.
5627             """
5628             # Example: see GEOM_TestOthers.py
5629             aList = self.ShapesOp.GetShapesOnQuadrangle(theShape, theShapeType,
5630                                                         theTopLeftPoint, theTopRigthPoint,
5631                                                         theBottomLeftPoint, theBottomRigthPoint, theState)
5632             RaiseIfFailed("GetShapesOnQuadrangle", self.ShapesOp)
5633             self._autoPublish(aList, theName, "shapeOnQuadrangle")
5634             return aList
5635
5636         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5637         #  the specified quadrangle by the certain way, defined through \a theState parameter.
5638         #  @param theShape Shape to find sub-shapes of.
5639         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5640         #  @param theTopLeftPoint Point, specifying top left corner of a quadrangle
5641         #  @param theTopRigthPoint Point, specifying top right corner of a quadrangle
5642         #  @param theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5643         #  @param theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5644         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5645         #
5646         #  @return List of all found sub-shapes indices.
5647         #
5648         #  @ref swig_GetShapesOnQuadrangleIDs "Example"
5649         @ManageTransactions("ShapesOp")
5650         def GetShapesOnQuadrangleIDs(self, theShape, theShapeType,
5651                                      theTopLeftPoint, theTopRigthPoint,
5652                                      theBottomLeftPoint, theBottomRigthPoint, theState):
5653             """
5654             Find in theShape all sub-shapes of type theShapeType, situated relatively
5655             the specified quadrangle by the certain way, defined through theState parameter.
5656
5657             Parameters:
5658                 theShape Shape to find sub-shapes of.
5659                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5660                 theTopLeftPoint Point, specifying top left corner of a quadrangle
5661                 theTopRigthPoint Point, specifying top right corner of a quadrangle
5662                 theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5663                 theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5664                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5665
5666             Returns:
5667                 List of all found sub-shapes indices.
5668             """
5669
5670             # Example: see GEOM_TestOthers.py
5671             aList = self.ShapesOp.GetShapesOnQuadrangleIDs(theShape, theShapeType,
5672                                                            theTopLeftPoint, theTopRigthPoint,
5673                                                            theBottomLeftPoint, theBottomRigthPoint, theState)
5674             RaiseIfFailed("GetShapesOnQuadrangleIDs", self.ShapesOp)
5675             return aList
5676
5677         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5678         #  the specified \a theBox by the certain way, defined through \a theState parameter.
5679         #  @param theBox Shape for relative comparing.
5680         #  @param theShape Shape to find sub-shapes of.
5681         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5682         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5683         #  @param theName Object name; when specified, this parameter is used
5684         #         for result publication in the study. Otherwise, if automatic
5685         #         publication is switched on, default value is used for result name.
5686         #
5687         #  @return List of all found sub-shapes.
5688         #
5689         #  @ref swig_GetShapesOnBox "Example"
5690         @ManageTransactions("ShapesOp")
5691         def GetShapesOnBox(self, theBox, theShape, theShapeType, theState, theName=None):
5692             """
5693             Find in theShape all sub-shapes of type theShapeType, situated relatively
5694             the specified theBox by the certain way, defined through theState parameter.
5695
5696             Parameters:
5697                 theBox Shape for relative comparing.
5698                 theShape Shape to find sub-shapes of.
5699                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5700                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5701                 theName Object name; when specified, this parameter is used
5702                         for result publication in the study. Otherwise, if automatic
5703                         publication is switched on, default value is used for result name.
5704
5705             Returns:
5706                 List of all found sub-shapes.
5707             """
5708             # Example: see GEOM_TestOthers.py
5709             aList = self.ShapesOp.GetShapesOnBox(theBox, theShape, theShapeType, theState)
5710             RaiseIfFailed("GetShapesOnBox", self.ShapesOp)
5711             self._autoPublish(aList, theName, "shapeOnBox")
5712             return aList
5713
5714         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5715         #  the specified \a theBox by the certain way, defined through \a theState parameter.
5716         #  @param theBox Shape for relative comparing.
5717         #  @param theShape Shape to find sub-shapes of.
5718         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5719         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5720         #
5721         #  @return List of all found sub-shapes indices.
5722         #
5723         #  @ref swig_GetShapesOnBoxIDs "Example"
5724         @ManageTransactions("ShapesOp")
5725         def GetShapesOnBoxIDs(self, theBox, theShape, theShapeType, theState):
5726             """
5727             Find in theShape all sub-shapes of type theShapeType, situated relatively
5728             the specified theBox by the certain way, defined through theState parameter.
5729
5730             Parameters:
5731                 theBox Shape for relative comparing.
5732                 theShape Shape to find sub-shapes of.
5733                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5734                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5735
5736             Returns:
5737                 List of all found sub-shapes indices.
5738             """
5739             # Example: see GEOM_TestOthers.py
5740             aList = self.ShapesOp.GetShapesOnBoxIDs(theBox, theShape, theShapeType, theState)
5741             RaiseIfFailed("GetShapesOnBoxIDs", self.ShapesOp)
5742             return aList
5743
5744         ## Find in \a theShape all sub-shapes of type \a theShapeType,
5745         #  situated relatively the specified \a theCheckShape by the
5746         #  certain way, defined through \a theState parameter.
5747         #  @param theCheckShape Shape for relative comparing. It must be a solid.
5748         #  @param theShape Shape to find sub-shapes of.
5749         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5750         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5751         #  @param theName Object name; when specified, this parameter is used
5752         #         for result publication in the study. Otherwise, if automatic
5753         #         publication is switched on, default value is used for result name.
5754         #
5755         #  @return List of all found sub-shapes.
5756         #
5757         #  @ref swig_GetShapesOnShape "Example"
5758         @ManageTransactions("ShapesOp")
5759         def GetShapesOnShape(self, theCheckShape, theShape, theShapeType, theState, theName=None):
5760             """
5761             Find in theShape all sub-shapes of type theShapeType,
5762             situated relatively the specified theCheckShape by the
5763             certain way, defined through theState parameter.
5764
5765             Parameters:
5766                 theCheckShape Shape for relative comparing. It must be a solid.
5767                 theShape Shape to find sub-shapes of.
5768                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5769                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5770                 theName Object name; when specified, this parameter is used
5771                         for result publication in the study. Otherwise, if automatic
5772                         publication is switched on, default value is used for result name.
5773
5774             Returns:
5775                 List of all found sub-shapes.
5776             """
5777             # Example: see GEOM_TestOthers.py
5778             aList = self.ShapesOp.GetShapesOnShape(theCheckShape, theShape,
5779                                                    theShapeType, theState)
5780             RaiseIfFailed("GetShapesOnShape", self.ShapesOp)
5781             self._autoPublish(aList, theName, "shapeOnShape")
5782             return aList
5783
5784         ## Find in \a theShape all sub-shapes of type \a theShapeType,
5785         #  situated relatively the specified \a theCheckShape by the
5786         #  certain way, defined through \a theState parameter.
5787         #  @param theCheckShape Shape for relative comparing. It must be a solid.
5788         #  @param theShape Shape to find sub-shapes of.
5789         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5790         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5791         #  @param theName Object name; when specified, this parameter is used
5792         #         for result publication in the study. Otherwise, if automatic
5793         #         publication is switched on, default value is used for result name.
5794         #
5795         #  @return All found sub-shapes as compound.
5796         #
5797         #  @ref swig_GetShapesOnShapeAsCompound "Example"
5798         @ManageTransactions("ShapesOp")
5799         def GetShapesOnShapeAsCompound(self, theCheckShape, theShape, theShapeType, theState, theName=None):
5800             """
5801             Find in theShape all sub-shapes of type theShapeType,
5802             situated relatively the specified theCheckShape by the
5803             certain way, defined through theState parameter.
5804
5805             Parameters:
5806                 theCheckShape Shape for relative comparing. It must be a solid.
5807                 theShape Shape to find sub-shapes of.
5808                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5809                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5810                 theName Object name; when specified, this parameter is used
5811                         for result publication in the study. Otherwise, if automatic
5812                         publication is switched on, default value is used for result name.
5813
5814             Returns:
5815                 All found sub-shapes as compound.
5816             """
5817             # Example: see GEOM_TestOthers.py
5818             anObj = self.ShapesOp.GetShapesOnShapeAsCompound(theCheckShape, theShape,
5819                                                              theShapeType, theState)
5820             RaiseIfFailed("GetShapesOnShapeAsCompound", self.ShapesOp)
5821             self._autoPublish(anObj, theName, "shapeOnShape")
5822             return anObj
5823
5824         ## Find in \a theShape all sub-shapes of type \a theShapeType,
5825         #  situated relatively the specified \a theCheckShape by the
5826         #  certain way, defined through \a theState parameter.
5827         #  @param theCheckShape Shape for relative comparing. It must be a solid.
5828         #  @param theShape Shape to find sub-shapes of.
5829         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5830         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5831         #
5832         #  @return List of all found sub-shapes indices.
5833         #
5834         #  @ref swig_GetShapesOnShapeIDs "Example"
5835         @ManageTransactions("ShapesOp")
5836         def GetShapesOnShapeIDs(self, theCheckShape, theShape, theShapeType, theState):
5837             """
5838             Find in theShape all sub-shapes of type theShapeType,
5839             situated relatively the specified theCheckShape by the
5840             certain way, defined through theState parameter.
5841
5842             Parameters:
5843                 theCheckShape Shape for relative comparing. It must be a solid.
5844                 theShape Shape to find sub-shapes of.
5845                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5846                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5847
5848             Returns:
5849                 List of all found sub-shapes indices.
5850             """
5851             # Example: see GEOM_TestOthers.py
5852             aList = self.ShapesOp.GetShapesOnShapeIDs(theCheckShape, theShape,
5853                                                       theShapeType, theState)
5854             RaiseIfFailed("GetShapesOnShapeIDs", self.ShapesOp)
5855             return aList
5856
5857         ## Get sub-shape(s) of theShapeWhere, which are
5858         #  coincident with \a theShapeWhat or could be a part of it.
5859         #  @param theShapeWhere Shape to find sub-shapes of.
5860         #  @param theShapeWhat Shape, specifying what to find.
5861         #  @param isNewImplementation implementation of GetInPlace functionality
5862         #             (default = False, old alghorithm based on shape properties)
5863         #  @param theName Object name; when specified, this parameter is used
5864         #         for result publication in the study. Otherwise, if automatic
5865         #         publication is switched on, default value is used for result name.
5866         #
5867         #  @return Group of all found sub-shapes or a single found sub-shape.
5868         #
5869         #  @note This function has a restriction on argument shapes.
5870         #        If \a theShapeWhere has curved parts with significantly
5871         #        outstanding centres (i.e. the mass centre of a part is closer to
5872         #        \a theShapeWhat than to the part), such parts will not be found.
5873         #        @image html get_in_place_lost_part.png
5874         #
5875         #  @ref swig_GetInPlace "Example"
5876         @ManageTransactions("ShapesOp")
5877         def GetInPlace(self, theShapeWhere, theShapeWhat, isNewImplementation = False, theName=None):
5878             """
5879             Get sub-shape(s) of theShapeWhere, which are
5880             coincident with  theShapeWhat or could be a part of it.
5881
5882             Parameters:
5883                 theShapeWhere Shape to find sub-shapes of.
5884                 theShapeWhat Shape, specifying what to find.
5885                 isNewImplementation Implementation of GetInPlace functionality
5886                                     (default = False, old alghorithm based on shape properties)
5887                 theName Object name; when specified, this parameter is used
5888                         for result publication in the study. Otherwise, if automatic
5889                         publication is switched on, default value is used for result name.
5890
5891             Returns:
5892                 Group of all found sub-shapes or a single found sub-shape.
5893
5894
5895             Note:
5896                 This function has a restriction on argument shapes.
5897                 If theShapeWhere has curved parts with significantly
5898                 outstanding centres (i.e. the mass centre of a part is closer to
5899                 theShapeWhat than to the part), such parts will not be found.
5900             """
5901             # Example: see GEOM_TestOthers.py
5902             anObj = None
5903             if isNewImplementation:
5904                 anObj = self.ShapesOp.GetInPlace(theShapeWhere, theShapeWhat)
5905             else:
5906                 anObj = self.ShapesOp.GetInPlaceOld(theShapeWhere, theShapeWhat)
5907                 pass
5908             RaiseIfFailed("GetInPlace", self.ShapesOp)
5909             self._autoPublish(anObj, theName, "inplace")
5910             return anObj
5911
5912         ## Get sub-shape(s) of \a theShapeWhere, which are
5913         #  coincident with \a theShapeWhat or could be a part of it.
5914         #
5915         #  Implementation of this method is based on a saved history of an operation,
5916         #  produced \a theShapeWhere. The \a theShapeWhat must be among this operation's
5917         #  arguments (an argument shape or a sub-shape of an argument shape).
5918         #  The operation could be the Partition or one of boolean operations,
5919         #  performed on simple shapes (not on compounds).
5920         #
5921         #  @param theShapeWhere Shape to find sub-shapes of.
5922         #  @param theShapeWhat Shape, specifying what to find (must be in the
5923         #                      building history of the ShapeWhere).
5924         #  @param theName Object name; when specified, this parameter is used
5925         #         for result publication in the study. Otherwise, if automatic
5926         #         publication is switched on, default value is used for result name.
5927         #
5928         #  @return Group of all found sub-shapes or a single found sub-shape.
5929         #
5930         #  @ref swig_GetInPlace "Example"
5931         @ManageTransactions("ShapesOp")
5932         def GetInPlaceByHistory(self, theShapeWhere, theShapeWhat, theName=None):
5933             """
5934             Implementation of this method is based on a saved history of an operation,
5935             produced theShapeWhere. The theShapeWhat must be among this operation's
5936             arguments (an argument shape or a sub-shape of an argument shape).
5937             The operation could be the Partition or one of boolean operations,
5938             performed on simple shapes (not on compounds).
5939
5940             Parameters:
5941                 theShapeWhere Shape to find sub-shapes of.
5942                 theShapeWhat Shape, specifying what to find (must be in the
5943                                 building history of the ShapeWhere).
5944                 theName Object name; when specified, this parameter is used
5945                         for result publication in the study. Otherwise, if automatic
5946                         publication is switched on, default value is used for result name.
5947
5948             Returns:
5949                 Group of all found sub-shapes or a single found sub-shape.
5950             """
5951             # Example: see GEOM_TestOthers.py
5952             anObj = self.ShapesOp.GetInPlaceByHistory(theShapeWhere, theShapeWhat)
5953             RaiseIfFailed("GetInPlaceByHistory", self.ShapesOp)
5954             self._autoPublish(anObj, theName, "inplace")
5955             return anObj
5956
5957         ## Get sub-shape of theShapeWhere, which is
5958         #  equal to \a theShapeWhat.
5959         #  @param theShapeWhere Shape to find sub-shape of.
5960         #  @param theShapeWhat Shape, specifying what to find.
5961         #  @param theName Object name; when specified, this parameter is used
5962         #         for result publication in the study. Otherwise, if automatic
5963         #         publication is switched on, default value is used for result name.
5964         #
5965         #  @return New GEOM.GEOM_Object for found sub-shape.
5966         #
5967         #  @ref swig_GetSame "Example"
5968         @ManageTransactions("ShapesOp")
5969         def GetSame(self, theShapeWhere, theShapeWhat, theName=None):
5970             """
5971             Get sub-shape of theShapeWhere, which is
5972             equal to theShapeWhat.
5973
5974             Parameters:
5975                 theShapeWhere Shape to find sub-shape of.
5976                 theShapeWhat Shape, specifying what to find.
5977                 theName Object name; when specified, this parameter is used
5978                         for result publication in the study. Otherwise, if automatic
5979                         publication is switched on, default value is used for result name.
5980
5981             Returns:
5982                 New GEOM.GEOM_Object for found sub-shape.
5983             """
5984             anObj = self.ShapesOp.GetSame(theShapeWhere, theShapeWhat)
5985             RaiseIfFailed("GetSame", self.ShapesOp)
5986             self._autoPublish(anObj, theName, "sameShape")
5987             return anObj
5988
5989
5990         ## Get sub-shape indices of theShapeWhere, which is
5991         #  equal to \a theShapeWhat.
5992         #  @param theShapeWhere Shape to find sub-shape of.
5993         #  @param theShapeWhat Shape, specifying what to find.
5994         #  @return List of all found sub-shapes indices.
5995         #
5996         #  @ref swig_GetSame "Example"
5997         @ManageTransactions("ShapesOp")
5998         def GetSameIDs(self, theShapeWhere, theShapeWhat):
5999             """
6000             Get sub-shape indices of theShapeWhere, which is
6001             equal to theShapeWhat.
6002
6003             Parameters:
6004                 theShapeWhere Shape to find sub-shape of.
6005                 theShapeWhat Shape, specifying what to find.
6006
6007             Returns:
6008                 List of all found sub-shapes indices.
6009             """
6010             anObj = self.ShapesOp.GetSameIDs(theShapeWhere, theShapeWhat)
6011             RaiseIfFailed("GetSameIDs", self.ShapesOp)
6012             return anObj
6013
6014         ## Resize the input edge with the new Min and Max parameters.
6015         #  The input edge parameters range is [0, 1]. If theMin parameter is
6016         #  negative, the input edge is extended, otherwise it is shrinked by
6017         #  theMin parameter. If theMax is greater than 1, the edge is extended,
6018         #  otherwise it is shrinked by theMax parameter.
6019         #  @param theEdge the input edge to be resized.
6020         #  @param theMin the minimal parameter value.
6021         #  @param theMax the maximal parameter value.
6022         #  @param theName Object name; when specified, this parameter is used
6023         #         for result publication in the study. Otherwise, if automatic
6024         #         publication is switched on, default value is used for result name.
6025         #  @return New GEOM.GEOM_Object, containing the created edge.
6026         #
6027         #  @ref tui_extend "Example"
6028         @ManageTransactions("ShapesOp")
6029         def ExtendEdge(self, theEdge, theMin, theMax, theName=None):
6030             """
6031             Resize the input edge with the new Min and Max parameters.
6032             The input edge parameters range is [0, 1]. If theMin parameter is
6033             negative, the input edge is extended, otherwise it is shrinked by
6034             theMin parameter. If theMax is greater than 1, the edge is extended,
6035             otherwise it is shrinked by theMax parameter.
6036
6037             Parameters:
6038                 theEdge the input edge to be resized.
6039                 theMin the minimal parameter value.
6040                 theMax the maximal parameter value.
6041                 theName Object name; when specified, this parameter is used
6042                         for result publication in the study. Otherwise, if automatic
6043                         publication is switched on, default value is used for result name.
6044
6045             Returns:
6046                 New GEOM.GEOM_Object, containing the created edge.
6047             """
6048             theMin, theMax, Parameters = ParseParameters(theMin, theMax)
6049             anObj = self.ShapesOp.ExtendEdge(theEdge, theMin, theMax)
6050             RaiseIfFailed("ExtendEdge", self.ShapesOp)
6051             anObj.SetParameters(Parameters)
6052             self._autoPublish(anObj, theName, "edge")
6053             return anObj
6054
6055         ## Resize the input face with the new UMin, UMax, VMin and VMax
6056         #  parameters. The input face U and V parameters range is [0, 1]. If
6057         #  theUMin parameter is negative, the input face is extended, otherwise
6058         #  it is shrinked along U direction by theUMin parameter. If theUMax is
6059         #  greater than 1, the face is extended, otherwise it is shrinked along
6060         #  U direction by theUMax parameter. So as for theVMin, theVMax and
6061         #  V direction of the input face.
6062         #  @param theFace the input face to be resized.
6063         #  @param theUMin the minimal U parameter value.
6064         #  @param theUMax the maximal U parameter value.
6065         #  @param theVMin the minimal V parameter value.
6066         #  @param theVMax the maximal V parameter value.
6067         #  @param theName Object name; when specified, this parameter is used
6068         #         for result publication in the study. Otherwise, if automatic
6069         #         publication is switched on, default value is used for result name.
6070         #  @return New GEOM.GEOM_Object, containing the created face.
6071         #
6072         #  @ref tui_extend "Example"
6073         @ManageTransactions("ShapesOp")
6074         def ExtendFace(self, theFace, theUMin, theUMax,
6075                        theVMin, theVMax, theName=None):
6076             """
6077             Resize the input face with the new UMin, UMax, VMin and VMax
6078             parameters. The input face U and V parameters range is [0, 1]. If
6079             theUMin parameter is negative, the input face is extended, otherwise
6080             it is shrinked along U direction by theUMin parameter. If theUMax is
6081             greater than 1, the face is extended, otherwise it is shrinked along
6082             U direction by theUMax parameter. So as for theVMin, theVMax and
6083             V direction of the input face.
6084
6085             Parameters:
6086                 theFace the input face to be resized.
6087                 theUMin the minimal U parameter value.
6088                 theUMax the maximal U parameter value.
6089                 theVMin the minimal V parameter value.
6090                 theVMax the maximal V parameter value.
6091                 theName Object name; when specified, this parameter is used
6092                         for result publication in the study. Otherwise, if automatic
6093                         publication is switched on, default value is used for result name.
6094
6095             Returns:
6096                 New GEOM.GEOM_Object, containing the created face.
6097             """
6098             theUMin, theUMax, theVMin, theVMax, Parameters = ParseParameters(theUMin, theUMax, theVMin, theVMax)
6099             anObj = self.ShapesOp.ExtendFace(theFace, theUMin, theUMax,
6100                                              theVMin, theVMax)
6101             RaiseIfFailed("ExtendFace", self.ShapesOp)
6102             anObj.SetParameters(Parameters)
6103             self._autoPublish(anObj, theName, "face")
6104             return anObj
6105
6106         ## This function takes some face as input parameter and creates new
6107         #  GEOM_Object, i.e. topological shape by extracting underlying surface
6108         #  of the source face and limiting it by the Umin, Umax, Vmin, Vmax
6109         #  parameters of the source face (in the parametrical space).
6110         #  @param theFace the input face.
6111         #  @param theName Object name; when specified, this parameter is used
6112         #         for result publication in the study. Otherwise, if automatic
6113         #         publication is switched on, default value is used for result name.
6114         #  @return New GEOM.GEOM_Object, containing the created face.
6115         #
6116         #  @ref tui_creation_surface "Example"
6117         @ManageTransactions("ShapesOp")
6118         def MakeSurfaceFromFace(self, theFace, theName=None):
6119             """
6120             This function takes some face as input parameter and creates new
6121             GEOM_Object, i.e. topological shape by extracting underlying surface
6122             of the source face and limiting it by the Umin, Umax, Vmin, Vmax
6123             parameters of the source face (in the parametrical space).
6124
6125             Parameters:
6126                 theFace the input face.
6127                 theName Object name; when specified, this parameter is used
6128                         for result publication in the study. Otherwise, if automatic
6129                         publication is switched on, default value is used for result name.
6130
6131             Returns:
6132                 New GEOM.GEOM_Object, containing the created face.
6133             """
6134             anObj = self.ShapesOp.MakeSurfaceFromFace(theFace)
6135             RaiseIfFailed("MakeSurfaceFromFace", self.ShapesOp)
6136             self._autoPublish(anObj, theName, "surface")
6137             return anObj
6138
6139         # end of l4_obtain
6140         ## @}
6141
6142         ## @addtogroup l4_access
6143         ## @{
6144
6145         ## Obtain a composite sub-shape of <VAR>aShape</VAR>, composed from sub-shapes
6146         #  of aShape, selected by their unique IDs inside <VAR>aShape</VAR>
6147         #  @param aShape Shape to get sub-shape of.
6148         #  @param ListOfID List of sub-shapes indices.
6149         #  @param theName Object name; when specified, this parameter is used
6150         #         for result publication in the study. Otherwise, if automatic
6151         #         publication is switched on, default value is used for result name.
6152         #
6153         #  @return Found sub-shape.
6154         #
6155         #  @ref swig_all_decompose "Example"
6156         def GetSubShape(self, aShape, ListOfID, theName=None):
6157             """
6158             Obtain a composite sub-shape of aShape, composed from sub-shapes
6159             of aShape, selected by their unique IDs inside aShape
6160
6161             Parameters:
6162                 aShape Shape to get sub-shape of.
6163                 ListOfID List of sub-shapes indices.
6164                 theName Object name; when specified, this parameter is used
6165                         for result publication in the study. Otherwise, if automatic
6166                         publication is switched on, default value is used for result name.
6167
6168             Returns:
6169                 Found sub-shape.
6170             """
6171             # Example: see GEOM_TestAll.py
6172             anObj = self.AddSubShape(aShape,ListOfID)
6173             self._autoPublish(anObj, theName, "subshape")
6174             return anObj
6175
6176         ## Obtain unique ID of sub-shape <VAR>aSubShape</VAR> inside <VAR>aShape</VAR>
6177         #  of aShape, selected by their unique IDs inside <VAR>aShape</VAR>
6178         #  @param aShape Shape to get sub-shape of.
6179         #  @param aSubShape Sub-shapes of aShape.
6180         #  @return ID of found sub-shape.
6181         #
6182         #  @ref swig_all_decompose "Example"
6183         @ManageTransactions("LocalOp")
6184         def GetSubShapeID(self, aShape, aSubShape):
6185             """
6186             Obtain unique ID of sub-shape aSubShape inside aShape
6187             of aShape, selected by their unique IDs inside aShape
6188
6189             Parameters:
6190                aShape Shape to get sub-shape of.
6191                aSubShape Sub-shapes of aShape.
6192
6193             Returns:
6194                ID of found sub-shape.
6195             """
6196             # Example: see GEOM_TestAll.py
6197             anID = self.LocalOp.GetSubShapeIndex(aShape, aSubShape)
6198             RaiseIfFailed("GetSubShapeIndex", self.LocalOp)
6199             return anID
6200
6201         ## Obtain unique IDs of sub-shapes <VAR>aSubShapes</VAR> inside <VAR>aShape</VAR>
6202         #  This function is provided for performance purpose. The complexity is O(n) with n
6203         #  the number of subobjects of aShape
6204         #  @param aShape Shape to get sub-shape of.
6205         #  @param aSubShapes Sub-shapes of aShape.
6206         #  @return list of IDs of found sub-shapes.
6207         #
6208         #  @ref swig_all_decompose "Example"
6209         @ManageTransactions("ShapesOp")
6210         def GetSubShapesIDs(self, aShape, aSubShapes):
6211             """
6212             Obtain a list of IDs of sub-shapes aSubShapes inside aShape
6213             This function is provided for performance purpose. The complexity is O(n) with n
6214             the number of subobjects of aShape
6215
6216             Parameters:
6217                aShape Shape to get sub-shape of.
6218                aSubShapes Sub-shapes of aShape.
6219
6220             Returns:
6221                List of IDs of found sub-shape.
6222             """
6223             # Example: see GEOM_TestAll.py
6224             anIDs = self.ShapesOp.GetSubShapesIndices(aShape, aSubShapes)
6225             RaiseIfFailed("GetSubShapesIndices", self.ShapesOp)
6226             return anIDs
6227
6228         # end of l4_access
6229         ## @}
6230
6231         ## @addtogroup l4_decompose
6232         ## @{
6233
6234         ## Get all sub-shapes and groups of \a theShape,
6235         #  that were created already by any other methods.
6236         #  @param theShape Any shape.
6237         #  @param theGroupsOnly If this parameter is TRUE, only groups will be
6238         #                       returned, else all found sub-shapes and groups.
6239         #  @return List of existing sub-objects of \a theShape.
6240         #
6241         #  @ref swig_all_decompose "Example"
6242         @ManageTransactions("ShapesOp")
6243         def GetExistingSubObjects(self, theShape, theGroupsOnly = False):
6244             """
6245             Get all sub-shapes and groups of theShape,
6246             that were created already by any other methods.
6247
6248             Parameters:
6249                 theShape Any shape.
6250                 theGroupsOnly If this parameter is TRUE, only groups will be
6251                                  returned, else all found sub-shapes and groups.
6252
6253             Returns:
6254                 List of existing sub-objects of theShape.
6255             """
6256             # Example: see GEOM_TestAll.py
6257             ListObj = self.ShapesOp.GetExistingSubObjects(theShape, theGroupsOnly)
6258             RaiseIfFailed("GetExistingSubObjects", self.ShapesOp)
6259             return ListObj
6260
6261         ## Get all groups of \a theShape,
6262         #  that were created already by any other methods.
6263         #  @param theShape Any shape.
6264         #  @return List of existing groups of \a theShape.
6265         #
6266         #  @ref swig_all_decompose "Example"
6267         @ManageTransactions("ShapesOp")
6268         def GetGroups(self, theShape):
6269             """
6270             Get all groups of theShape,
6271             that were created already by any other methods.
6272
6273             Parameters:
6274                 theShape Any shape.
6275
6276             Returns:
6277                 List of existing groups of theShape.
6278             """
6279             # Example: see GEOM_TestAll.py
6280             ListObj = self.ShapesOp.GetExistingSubObjects(theShape, True)
6281             RaiseIfFailed("GetExistingSubObjects", self.ShapesOp)
6282             return ListObj
6283
6284         ## Explode a shape on sub-shapes of a given type.
6285         #  If the shape itself matches the type, it is also returned.
6286         #  @param aShape Shape to be exploded.
6287         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6288         #  @param theName Object name; when specified, this parameter is used
6289         #         for result publication in the study. Otherwise, if automatic
6290         #         publication is switched on, default value is used for result name.
6291         #
6292         #  @return List of sub-shapes of type theShapeType, contained in theShape.
6293         #
6294         #  @ref swig_all_decompose "Example"
6295         @ManageTransactions("ShapesOp")
6296         def SubShapeAll(self, aShape, aType, theName=None):
6297             """
6298             Explode a shape on sub-shapes of a given type.
6299             If the shape itself matches the type, it is also returned.
6300
6301             Parameters:
6302                 aShape Shape to be exploded.
6303                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6304                 theName Object name; when specified, this parameter is used
6305                         for result publication in the study. Otherwise, if automatic
6306                         publication is switched on, default value is used for result name.
6307
6308             Returns:
6309                 List of sub-shapes of type theShapeType, contained in theShape.
6310             """
6311             # Example: see GEOM_TestAll.py
6312             ListObj = self.ShapesOp.MakeAllSubShapes(aShape, EnumToLong( aType ), False)
6313             RaiseIfFailed("SubShapeAll", self.ShapesOp)
6314             self._autoPublish(ListObj, theName, "subshape")
6315             return ListObj
6316
6317         ## Explode a shape on sub-shapes of a given type.
6318         #  @param aShape Shape to be exploded.
6319         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6320         #  @return List of IDs of sub-shapes.
6321         #
6322         #  @ref swig_all_decompose "Example"
6323         @ManageTransactions("ShapesOp")
6324         def SubShapeAllIDs(self, aShape, aType):
6325             """
6326             Explode a shape on sub-shapes of a given type.
6327
6328             Parameters:
6329                 aShape Shape to be exploded (see geompy.ShapeType)
6330                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6331
6332             Returns:
6333                 List of IDs of sub-shapes.
6334             """
6335             ListObj = self.ShapesOp.GetAllSubShapesIDs(aShape, EnumToLong( aType ), False)
6336             RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
6337             return ListObj
6338
6339         ## Obtain a compound of sub-shapes of <VAR>aShape</VAR>,
6340         #  selected by their indices in list of all sub-shapes of type <VAR>aType</VAR>.
6341         #  Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6342         #  @param aShape Shape to get sub-shape of.
6343         #  @param ListOfInd List of sub-shapes indices.
6344         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6345         #  @param theName Object name; when specified, this parameter is used
6346         #         for result publication in the study. Otherwise, if automatic
6347         #         publication is switched on, default value is used for result name.
6348         #
6349         #  @return A compound of sub-shapes of aShape.
6350         #
6351         #  @ref swig_all_decompose "Example"
6352         def SubShape(self, aShape, aType, ListOfInd, theName=None):
6353             """
6354             Obtain a compound of sub-shapes of aShape,
6355             selected by their indices in list of all sub-shapes of type aType.
6356             Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6357
6358             Parameters:
6359                 aShape Shape to get sub-shape of.
6360                 ListOfID List of sub-shapes indices.
6361                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6362                 theName Object name; when specified, this parameter is used
6363                         for result publication in the study. Otherwise, if automatic
6364                         publication is switched on, default value is used for result name.
6365
6366             Returns:
6367                 A compound of sub-shapes of aShape.
6368             """
6369             # Example: see GEOM_TestAll.py
6370             ListOfIDs = []
6371             AllShapeIDsList = self.SubShapeAllIDs(aShape, EnumToLong( aType ))
6372             for ind in ListOfInd:
6373                 ListOfIDs.append(AllShapeIDsList[ind - 1])
6374             # note: auto-publishing is done in self.GetSubShape()
6375             anObj = self.GetSubShape(aShape, ListOfIDs, theName)
6376             return anObj
6377
6378         ## Explode a shape on sub-shapes of a given type.
6379         #  Sub-shapes will be sorted taking into account their gravity centers,
6380         #  to provide stable order of sub-shapes.
6381         #  If the shape itself matches the type, it is also returned.
6382         #  @param aShape Shape to be exploded.
6383         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6384         #  @param theName Object name; when specified, this parameter is used
6385         #         for result publication in the study. Otherwise, if automatic
6386         #         publication is switched on, default value is used for result name.
6387         #
6388         #  @return List of sub-shapes of type theShapeType, contained in theShape.
6389         #
6390         #  @ref swig_SubShapeAllSorted "Example"
6391         @ManageTransactions("ShapesOp")
6392         def SubShapeAllSortedCentres(self, aShape, aType, theName=None):
6393             """
6394             Explode a shape on sub-shapes of a given type.
6395             Sub-shapes will be sorted taking into account their gravity centers,
6396             to provide stable order of sub-shapes.
6397             If the shape itself matches the type, it is also returned.
6398
6399             Parameters:
6400                 aShape Shape to be exploded.
6401                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6402                 theName Object name; when specified, this parameter is used
6403                         for result publication in the study. Otherwise, if automatic
6404                         publication is switched on, default value is used for result name.
6405
6406             Returns:
6407                 List of sub-shapes of type theShapeType, contained in theShape.
6408             """
6409             # Example: see GEOM_TestAll.py
6410             ListObj = self.ShapesOp.MakeAllSubShapes(aShape, EnumToLong( aType ), True)
6411             RaiseIfFailed("SubShapeAllSortedCentres", self.ShapesOp)
6412             self._autoPublish(ListObj, theName, "subshape")
6413             return ListObj
6414
6415         ## Explode a shape on sub-shapes of a given type.
6416         #  Sub-shapes will be sorted taking into account their gravity centers,
6417         #  to provide stable order of sub-shapes.
6418         #  @param aShape Shape to be exploded.
6419         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6420         #  @return List of IDs of sub-shapes.
6421         #
6422         #  @ref swig_all_decompose "Example"
6423         @ManageTransactions("ShapesOp")
6424         def SubShapeAllSortedCentresIDs(self, aShape, aType):
6425             """
6426             Explode a shape on sub-shapes of a given type.
6427             Sub-shapes will be sorted taking into account their gravity centers,
6428             to provide stable order of sub-shapes.
6429
6430             Parameters:
6431                 aShape Shape to be exploded.
6432                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6433
6434             Returns:
6435                 List of IDs of sub-shapes.
6436             """
6437             ListIDs = self.ShapesOp.GetAllSubShapesIDs(aShape, EnumToLong( aType ), True)
6438             RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
6439             return ListIDs
6440
6441         ## Obtain a compound of sub-shapes of <VAR>aShape</VAR>,
6442         #  selected by they indices in sorted list of all sub-shapes of type <VAR>aType</VAR>.
6443         #  Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6444         #  @param aShape Shape to get sub-shape of.
6445         #  @param ListOfInd List of sub-shapes indices.
6446         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6447         #  @param theName Object name; when specified, this parameter is used
6448         #         for result publication in the study. Otherwise, if automatic
6449         #         publication is switched on, default value is used for result name.
6450         #
6451         #  @return A compound of sub-shapes of aShape.
6452         #
6453         #  @ref swig_all_decompose "Example"
6454         def SubShapeSortedCentres(self, aShape, aType, ListOfInd, theName=None):
6455             """
6456             Obtain a compound of sub-shapes of aShape,
6457             selected by they indices in sorted list of all sub-shapes of type aType.
6458             Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6459
6460             Parameters:
6461                 aShape Shape to get sub-shape of.
6462                 ListOfID List of sub-shapes indices.
6463                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6464                 theName Object name; when specified, this parameter is used
6465                         for result publication in the study. Otherwise, if automatic
6466                         publication is switched on, default value is used for result name.
6467
6468             Returns:
6469                 A compound of sub-shapes of aShape.
6470             """
6471             # Example: see GEOM_TestAll.py
6472             ListOfIDs = []
6473             AllShapeIDsList = self.SubShapeAllSortedCentresIDs(aShape, EnumToLong( aType ))
6474             for ind in ListOfInd:
6475                 ListOfIDs.append(AllShapeIDsList[ind - 1])
6476             # note: auto-publishing is done in self.GetSubShape()
6477             anObj = self.GetSubShape(aShape, ListOfIDs, theName)
6478             return anObj
6479
6480         ## Extract shapes (excluding the main shape) of given type.
6481         #  @param aShape The shape.
6482         #  @param aType  The shape type (see ShapeType())
6483         #  @param isSorted Boolean flag to switch sorting on/off.
6484         #  @param theName Object name; when specified, this parameter is used
6485         #         for result publication in the study. Otherwise, if automatic
6486         #         publication is switched on, default value is used for result name.
6487         #
6488         #  @return List of sub-shapes of type aType, contained in aShape.
6489         #
6490         #  @ref swig_FilletChamfer "Example"
6491         @ManageTransactions("ShapesOp")
6492         def ExtractShapes(self, aShape, aType, isSorted = False, theName=None):
6493             """
6494             Extract shapes (excluding the main shape) of given type.
6495
6496             Parameters:
6497                 aShape The shape.
6498                 aType  The shape type (see geompy.ShapeType)
6499                 isSorted Boolean flag to switch sorting on/off.
6500                 theName Object name; when specified, this parameter is used
6501                         for result publication in the study. Otherwise, if automatic
6502                         publication is switched on, default value is used for result name.
6503
6504             Returns:
6505                 List of sub-shapes of type aType, contained in aShape.
6506             """
6507             # Example: see GEOM_TestAll.py
6508             ListObj = self.ShapesOp.ExtractSubShapes(aShape, EnumToLong( aType ), isSorted)
6509             RaiseIfFailed("ExtractSubShapes", self.ShapesOp)
6510             self._autoPublish(ListObj, theName, "subshape")
6511             return ListObj
6512
6513         ## Get a set of sub-shapes defined by their unique IDs inside <VAR>aShape</VAR>
6514         #  @param aShape Main shape.
6515         #  @param anIDs List of unique IDs of sub-shapes inside <VAR>aShape</VAR>.
6516         #  @param theName Object name; when specified, this parameter is used
6517         #         for result publication in the study. Otherwise, if automatic
6518         #         publication is switched on, default value is used for result name.
6519         #  @return List of GEOM.GEOM_Object, corresponding to found sub-shapes.
6520         #
6521         #  @ref swig_all_decompose "Example"
6522         @ManageTransactions("ShapesOp")
6523         def SubShapes(self, aShape, anIDs, theName=None):
6524             """
6525             Get a set of sub-shapes defined by their unique IDs inside theMainShape
6526
6527             Parameters:
6528                 aShape Main shape.
6529                 anIDs List of unique IDs of sub-shapes inside theMainShape.
6530                 theName Object name; when specified, this parameter is used
6531                         for result publication in the study. Otherwise, if automatic
6532                         publication is switched on, default value is used for result name.
6533
6534             Returns:
6535                 List of GEOM.GEOM_Object, corresponding to found sub-shapes.
6536             """
6537             # Example: see GEOM_TestAll.py
6538             ListObj = self.ShapesOp.MakeSubShapes(aShape, anIDs)
6539             RaiseIfFailed("SubShapes", self.ShapesOp)
6540             self._autoPublish(ListObj, theName, "subshape")
6541             return ListObj
6542
6543         ## Explode a shape into edges sorted in a row from a starting point.
6544         #  @param theShape the shape to be exploded on edges.
6545         #  @param theStartPoint the starting point.
6546         #  @param theName Object name; when specified, this parameter is used
6547         #         for result publication in the study. Otherwise, if automatic
6548         #         publication is switched on, default value is used for result name.
6549         #  @return List of GEOM.GEOM_Object that is actually an ordered list
6550         #          of edges sorted in a row from a starting point.
6551         #
6552         #  @ref swig_GetSubShapeEdgeSorted "Example"
6553         @ManageTransactions("ShapesOp")
6554         def GetSubShapeEdgeSorted(self, theShape, theStartPoint, theName=None):
6555             """
6556             Explode a shape into edges sorted in a row from a starting point.
6557
6558             Parameters:
6559                 theShape the shape to be exploded on edges.
6560                 theStartPoint the starting point.
6561                 theName Object name; when specified, this parameter is used
6562                         for result publication in the study. Otherwise, if automatic
6563                         publication is switched on, default value is used for result name.
6564
6565             Returns:
6566                 List of GEOM.GEOM_Object that is actually an ordered list
6567                 of edges sorted in a row from a starting point.
6568             """
6569             # Example: see GEOM_TestAll.py
6570             ListObj = self.ShapesOp.GetSubShapeEdgeSorted(theShape, theStartPoint)
6571             RaiseIfFailed("GetSubShapeEdgeSorted", self.ShapesOp)
6572             self._autoPublish(ListObj, theName, "SortedEdges")
6573             return ListObj
6574
6575         ## Check if the object is a sub-object of another GEOM object.
6576         #  @param aSubObject Checked sub-object (or its parent object, in case if
6577         #         \a theSubObjectIndex is non-zero).
6578         #  @param anObject An object that is checked for ownership (or its parent object,
6579         #         in case if \a theObjectIndex is non-zero).
6580         #  @param aSubObjectIndex When non-zero, specifies a sub-shape index that
6581         #         identifies a sub-object within its parent specified via \a theSubObject.
6582         #  @param anObjectIndex When non-zero, specifies a sub-shape index that
6583         #         identifies an object within its parent specified via \a theObject.
6584         #  @return TRUE, if the given object contains sub-object.
6585         @ManageTransactions("ShapesOp")
6586         def IsSubShapeBelongsTo(self, aSubObject, anObject, aSubObjectIndex = 0, anObjectIndex = 0):
6587             """
6588             Check if the object is a sub-object of another GEOM object.
6589             
6590             Parameters:
6591                 aSubObject Checked sub-object (or its parent object, in case if
6592                     \a theSubObjectIndex is non-zero).
6593                 anObject An object that is checked for ownership (or its parent object,
6594                     in case if \a theObjectIndex is non-zero).
6595                 aSubObjectIndex When non-zero, specifies a sub-shape index that
6596                     identifies a sub-object within its parent specified via \a theSubObject.
6597                 anObjectIndex When non-zero, specifies a sub-shape index that
6598                     identifies an object within its parent specified via \a theObject.
6599
6600             Returns
6601                 TRUE, if the given object contains sub-object.
6602             """
6603             IsOk = self.ShapesOp.IsSubShapeBelongsTo(aSubObject, aSubObjectIndex, anObject, anObjectIndex)
6604             RaiseIfFailed("IsSubShapeBelongsTo", self.ShapesOp)
6605             return IsOk
6606
6607         # end of l4_decompose
6608         ## @}
6609
6610         ## @addtogroup l4_decompose_d
6611         ## @{
6612
6613         ## Deprecated method
6614         #  It works like SubShapeAllSortedCentres(), but wrongly
6615         #  defines centres of faces, shells and solids.
6616         @ManageTransactions("ShapesOp")
6617         def SubShapeAllSorted(self, aShape, aType, theName=None):
6618             """
6619             Deprecated method
6620             It works like geompy.SubShapeAllSortedCentres, but wrongly
6621             defines centres of faces, shells and solids.
6622             """
6623             ListObj = self.ShapesOp.MakeExplode(aShape, EnumToLong( aType ), True)
6624             RaiseIfFailed("MakeExplode", self.ShapesOp)
6625             self._autoPublish(ListObj, theName, "subshape")
6626             return ListObj
6627
6628         ## Deprecated method
6629         #  It works like SubShapeAllSortedCentresIDs(), but wrongly
6630         #  defines centres of faces, shells and solids.
6631         @ManageTransactions("ShapesOp")
6632         def SubShapeAllSortedIDs(self, aShape, aType):
6633             """
6634             Deprecated method
6635             It works like geompy.SubShapeAllSortedCentresIDs, but wrongly
6636             defines centres of faces, shells and solids.
6637             """
6638             ListIDs = self.ShapesOp.SubShapeAllIDs(aShape, EnumToLong( aType ), True)
6639             RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
6640             return ListIDs
6641
6642         ## Deprecated method
6643         #  It works like SubShapeSortedCentres(), but has a bug
6644         #  (wrongly defines centres of faces, shells and solids).
6645         def SubShapeSorted(self, aShape, aType, ListOfInd, theName=None):
6646             """
6647             Deprecated method
6648             It works like geompy.SubShapeSortedCentres, but has a bug
6649             (wrongly defines centres of faces, shells and solids).
6650             """
6651             ListOfIDs = []
6652             AllShapeIDsList = self.SubShapeAllSortedIDs(aShape, EnumToLong( aType ))
6653             for ind in ListOfInd:
6654                 ListOfIDs.append(AllShapeIDsList[ind - 1])
6655             # note: auto-publishing is done in self.GetSubShape()
6656             anObj = self.GetSubShape(aShape, ListOfIDs, theName)
6657             return anObj
6658
6659         # end of l4_decompose_d
6660         ## @}
6661
6662         ## @addtogroup l3_healing
6663         ## @{
6664
6665         ## Apply a sequence of Shape Healing operators to the given object.
6666         #  @param theShape Shape to be processed.
6667         #  @param theOperators List of names of operators ("FixShape", "SplitClosedFaces", etc.).
6668         #  @param theParameters List of names of parameters
6669         #                    ("FixShape.Tolerance3d", "SplitClosedFaces.NbSplitPoints", etc.).
6670         #  @param theValues List of values of parameters, in the same order
6671         #                    as parameters are listed in <VAR>theParameters</VAR> list.
6672         #  @param theName Object name; when specified, this parameter is used
6673         #         for result publication in the study. Otherwise, if automatic
6674         #         publication is switched on, default value is used for result name.
6675         #
6676         #  <b> Operators and Parameters: </b> \n
6677         #
6678         #  * \b FixShape - corrects invalid shapes. \n
6679         #  - \b FixShape.Tolerance3d - work tolerance for detection of the problems and correction of them. \n
6680         #  - \b FixShape.MaxTolerance3d - maximal possible tolerance of the shape after correction. \n
6681         #
6682         #  * \b FixFaceSize - removes small faces, such as spots and strips.\n
6683         #  - \b FixFaceSize.Tolerance - defines minimum possible face size. \n
6684         #  - \b DropSmallEdges - removes edges, which merge with neighbouring edges. \n
6685         #  - \b DropSmallEdges.Tolerance3d - defines minimum possible distance between two parallel edges.\n
6686         #  - \b DropSmallSolids - either removes small solids or merges them with neighboring ones. \n
6687         #  - \b DropSmallSolids.WidthFactorThreshold - defines maximum value of <em>2V/S</em> of a solid which is considered small, where \a V is volume and \a S is surface area of the solid. \n
6688         #  - \b DropSmallSolids.VolumeThreshold - defines maximum volume of a solid which is considered small. If the both tolerances are privided a solid is considered small if it meets the both criteria. \n
6689         #  - \b DropSmallSolids.MergeSolids - if "1", small solids are removed; if "0" small solids are merged to adjacent non-small solids or left untouched if cannot be merged. \n
6690         #
6691         #  * \b SplitAngle - splits faces based on conical surfaces, surfaces of revolution and cylindrical
6692         #    surfaces in segments using a certain angle. \n
6693         #  - \b SplitAngle.Angle - the central angle of the resulting segments (i.e. we obtain two segments
6694         #    if Angle=180, four if Angle=90, etc). \n
6695         #  - \b SplitAngle.MaxTolerance - maximum possible tolerance among the resulting segments.\n
6696         #
6697         #  * \b SplitClosedFaces - splits closed faces in segments.
6698         #    The number of segments depends on the number of splitting points.\n
6699         #  - \b SplitClosedFaces.NbSplitPoints - the number of splitting points.\n
6700         #
6701         #  * \b SplitContinuity - splits shapes to reduce continuities of curves and surfaces.\n
6702         #  - \b SplitContinuity.Tolerance3d - 3D tolerance for correction of geometry.\n
6703         #  - \b SplitContinuity.SurfaceContinuity - required continuity for surfaces.\n
6704         #  - \b SplitContinuity.CurveContinuity - required continuity for curves.\n
6705         #   This and the previous parameters can take the following values:\n
6706         #   \b Parametric \b Continuity \n
6707         #   \b C0 (Positional Continuity): curves are joined (the end positions of curves or surfaces
6708         #   are coincidental. The curves or surfaces may still meet at an angle, giving rise to a sharp corner or edge).\n
6709         #   \b C1 (Tangential Continuity): first derivatives are equal (the end vectors of curves or surfaces are parallel,
6710         #    ruling out sharp edges).\n
6711         #   \b C2 (Curvature Continuity): first and second derivatives are equal (the end vectors of curves or surfaces
6712         #       are of the same magnitude).\n
6713         #   \b CN N-th derivatives are equal (both the direction and the magnitude of the Nth derivatives of curves
6714         #    or surfaces (d/du C(u)) are the same at junction. \n
6715         #   \b Geometric \b Continuity \n
6716         #   \b G1: first derivatives are proportional at junction.\n
6717         #   The curve tangents thus have the same direction, but not necessarily the same magnitude.
6718         #      i.e., C1'(1) = (a,b,c) and C2'(0) = (k*a, k*b, k*c).\n
6719         #   \b G2: first and second derivatives are proportional at junction.
6720         #   As the names imply, geometric continuity requires the geometry to be continuous, while parametric
6721         #    continuity requires that the underlying parameterization was continuous as well.
6722         #   Parametric continuity of order n implies geometric continuity of order n, but not vice-versa.\n
6723         #
6724         #  * \b BsplineRestriction - converts curves and surfaces to Bsplines and processes them with the following parameters:\n
6725         #  - \b BSplineRestriction.SurfaceMode - approximation of surfaces if restriction is necessary.\n
6726         #  - \b BSplineRestriction.Curve3dMode - conversion of any 3D curve to BSpline and approximation.\n
6727         #  - \b BSplineRestriction.Curve2dMode - conversion of any 2D curve to BSpline and approximation.\n
6728         #  - \b BSplineRestriction.Tolerance3d - defines the possibility of surfaces and 3D curves approximation
6729         #       with the specified parameters.\n
6730         #  - \b BSplineRestriction.Tolerance2d - defines the possibility of surfaces and 2D curves approximation
6731         #       with the specified parameters.\n
6732         #  - \b BSplineRestriction.RequiredDegree - required degree of the resulting BSplines.\n
6733         #  - \b BSplineRestriction.RequiredNbSegments - required maximum number of segments of resultant BSplines.\n
6734         #  - \b BSplineRestriction.Continuity3d - continuity of the resulting surfaces and 3D curves.\n
6735         #  - \b BSplineRestriction.Continuity2d - continuity of the resulting 2D curves.\n
6736         #
6737         #  * \b ToBezier - converts curves and surfaces of any type to Bezier curves and surfaces.\n
6738         #  - \b ToBezier.SurfaceMode - if checked in, allows conversion of surfaces.\n
6739         #  - \b ToBezier.Curve3dMode - if checked in, allows conversion of 3D curves.\n
6740         #  - \b ToBezier.Curve2dMode - if checked in, allows conversion of 2D curves.\n
6741         #  - \b ToBezier.MaxTolerance - defines tolerance for detection and correction of problems.\n
6742         #
6743         #  * \b SameParameter - fixes edges of 2D and 3D curves not having the same parameter.\n
6744         #  - \b SameParameter.Tolerance3d - defines tolerance for fixing of edges.\n
6745         #
6746         #
6747         #  @return New GEOM.GEOM_Object, containing processed shape.
6748         #
6749         #  \n @ref tui_shape_processing "Example"
6750         @ManageTransactions("HealOp")
6751         def ProcessShape(self, theShape, theOperators, theParameters, theValues, theName=None):
6752             """
6753             Apply a sequence of Shape Healing operators to the given object.
6754
6755             Parameters:
6756                 theShape Shape to be processed.
6757                 theValues List of values of parameters, in the same order
6758                           as parameters are listed in theParameters list.
6759                 theOperators List of names of operators ('FixShape', 'SplitClosedFaces', etc.).
6760                 theParameters List of names of parameters
6761                               ('FixShape.Tolerance3d', 'SplitClosedFaces.NbSplitPoints', etc.).
6762                 theName Object name; when specified, this parameter is used
6763                         for result publication in the study. Otherwise, if automatic
6764                         publication is switched on, default value is used for result name.
6765
6766                 Operators and Parameters:
6767
6768                  * FixShape - corrects invalid shapes.
6769                      * FixShape.Tolerance3d - work tolerance for detection of the problems and correction of them.
6770                      * FixShape.MaxTolerance3d - maximal possible tolerance of the shape after correction.
6771                  * FixFaceSize - removes small faces, such as spots and strips.
6772                      * FixFaceSize.Tolerance - defines minimum possible face size.
6773                  * DropSmallEdges - removes edges, which merge with neighbouring edges.
6774                      * DropSmallEdges.Tolerance3d - defines minimum possible distance between two parallel edges.
6775                  * DropSmallSolids - either removes small solids or merges them with neighboring ones.
6776                      * DropSmallSolids.WidthFactorThreshold - defines maximum value of 2V/S of a solid which is considered small, where V is volume and S is surface area of the solid.
6777                      * DropSmallSolids.VolumeThreshold - defines maximum volume of a solid which is considered small. If the both tolerances are privided a solid is considered small if it meets the both criteria.
6778                      * DropSmallSolids.MergeSolids - if '1', small solids are removed; if '0' small solids are merged to adjacent non-small solids or left untouched if cannot be merged.
6779
6780                  * SplitAngle - splits faces based on conical surfaces, surfaces of revolution and cylindrical surfaces
6781                                 in segments using a certain angle.
6782                      * SplitAngle.Angle - the central angle of the resulting segments (i.e. we obtain two segments
6783                                           if Angle=180, four if Angle=90, etc).
6784                      * SplitAngle.MaxTolerance - maximum possible tolerance among the resulting segments.
6785                  * SplitClosedFaces - splits closed faces in segments. The number of segments depends on the number of
6786                                       splitting points.
6787                      * SplitClosedFaces.NbSplitPoints - the number of splitting points.
6788                  * SplitContinuity - splits shapes to reduce continuities of curves and surfaces.
6789                      * SplitContinuity.Tolerance3d - 3D tolerance for correction of geometry.
6790                      * SplitContinuity.SurfaceContinuity - required continuity for surfaces.
6791                      * SplitContinuity.CurveContinuity - required continuity for curves.
6792                        This and the previous parameters can take the following values:
6793
6794                        Parametric Continuity:
6795                        C0 (Positional Continuity): curves are joined (the end positions of curves or surfaces are
6796                                                    coincidental. The curves or surfaces may still meet at an angle,
6797                                                    giving rise to a sharp corner or edge).
6798                        C1 (Tangential Continuity): first derivatives are equal (the end vectors of curves or surfaces
6799                                                    are parallel, ruling out sharp edges).
6800                        C2 (Curvature Continuity): first and second derivatives are equal (the end vectors of curves
6801                                                   or surfaces are of the same magnitude).
6802                        CN N-th derivatives are equal (both the direction and the magnitude of the Nth derivatives of
6803                           curves or surfaces (d/du C(u)) are the same at junction.
6804
6805                        Geometric Continuity:
6806                        G1: first derivatives are proportional at junction.
6807                            The curve tangents thus have the same direction, but not necessarily the same magnitude.
6808                            i.e., C1'(1) = (a,b,c) and C2'(0) = (k*a, k*b, k*c).
6809                        G2: first and second derivatives are proportional at junction. As the names imply,
6810                            geometric continuity requires the geometry to be continuous, while parametric continuity requires
6811                            that the underlying parameterization was continuous as well. Parametric continuity of order n implies
6812                            geometric continuity of order n, but not vice-versa.
6813                  * BsplineRestriction - converts curves and surfaces to Bsplines and processes them with the following parameters:
6814                      * BSplineRestriction.SurfaceMode - approximation of surfaces if restriction is necessary.
6815                      * BSplineRestriction.Curve3dMode - conversion of any 3D curve to BSpline and approximation.
6816                      * BSplineRestriction.Curve2dMode - conversion of any 2D curve to BSpline and approximation.
6817                      * BSplineRestriction.Tolerance3d - defines the possibility of surfaces and 3D curves approximation with
6818                                                         the specified parameters.
6819                      * BSplineRestriction.Tolerance2d - defines the possibility of surfaces and 2D curves approximation with
6820                                                         the specified parameters.
6821                      * BSplineRestriction.RequiredDegree - required degree of the resulting BSplines.
6822                      * BSplineRestriction.RequiredNbSegments - required maximum number of segments of resultant BSplines.
6823                      * BSplineRestriction.Continuity3d - continuity of the resulting surfaces and 3D curves.
6824                      * BSplineRestriction.Continuity2d - continuity of the resulting 2D curves.
6825                  * ToBezier - converts curves and surfaces of any type to Bezier curves and surfaces.
6826                      * ToBezier.SurfaceMode - if checked in, allows conversion of surfaces.
6827                      * ToBezier.Curve3dMode - if checked in, allows conversion of 3D curves.
6828                      * ToBezier.Curve2dMode - if checked in, allows conversion of 2D curves.
6829                      * ToBezier.MaxTolerance - defines tolerance for detection and correction of problems.
6830                  * SameParameter - fixes edges of 2D and 3D curves not having the same parameter.
6831                      * SameParameter.Tolerance3d - defines tolerance for fixing of edges.
6832
6833             Returns:
6834                 New GEOM.GEOM_Object, containing processed shape.
6835
6836             Note: For more information look through SALOME Geometry User's Guide->
6837                   -> Introduction to Geometry-> Repairing Operations-> Shape Processing
6838             """
6839             # Example: see GEOM_TestHealing.py
6840             theValues,Parameters = ParseList(theValues)
6841             anObj = self.HealOp.ProcessShape(theShape, theOperators, theParameters, theValues)
6842             # To avoid script failure in case of good argument shape
6843             if self.HealOp.GetErrorCode() == "ShHealOper_NotError_msg":
6844                 return theShape
6845             RaiseIfFailed("ProcessShape", self.HealOp)
6846             for string in (theOperators + theParameters):
6847                 Parameters = ":" + Parameters
6848                 pass
6849             anObj.SetParameters(Parameters)
6850             self._autoPublish(anObj, theName, "healed")
6851             return anObj
6852
6853         ## Remove faces from the given object (shape).
6854         #  @param theObject Shape to be processed.
6855         #  @param theFaces Indices of faces to be removed, if EMPTY then the method
6856         #                  removes ALL faces of the given object.
6857         #  @param theName Object name; when specified, this parameter is used
6858         #         for result publication in the study. Otherwise, if automatic
6859         #         publication is switched on, default value is used for result name.
6860         #
6861         #  @return New GEOM.GEOM_Object, containing processed shape.
6862         #
6863         #  @ref tui_suppress_faces "Example"
6864         @ManageTransactions("HealOp")
6865         def SuppressFaces(self, theObject, theFaces, theName=None):
6866             """
6867             Remove faces from the given object (shape).
6868
6869             Parameters:
6870                 theObject Shape to be processed.
6871                 theFaces Indices of faces to be removed, if EMPTY then the method
6872                          removes ALL faces of the given object.
6873                 theName Object name; when specified, this parameter is used
6874                         for result publication in the study. Otherwise, if automatic
6875                         publication is switched on, default value is used for result name.
6876
6877             Returns:
6878                 New GEOM.GEOM_Object, containing processed shape.
6879             """
6880             # Example: see GEOM_TestHealing.py
6881             anObj = self.HealOp.SuppressFaces(theObject, theFaces)
6882             RaiseIfFailed("SuppressFaces", self.HealOp)
6883             self._autoPublish(anObj, theName, "suppressFaces")
6884             return anObj
6885
6886         ## Sewing of faces into a single shell.
6887         #  @param ListShape Shapes to be processed.
6888         #  @param theTolerance Required tolerance value.
6889         #  @param AllowNonManifold Flag that allows non-manifold sewing.
6890         #  @param theName Object name; when specified, this parameter is used
6891         #         for result publication in the study. Otherwise, if automatic
6892         #         publication is switched on, default value is used for result name.
6893         #
6894         #  @return New GEOM.GEOM_Object, containing a result shell.
6895         #
6896         #  @ref tui_sewing "Example"
6897         def MakeSewing(self, ListShape, theTolerance, AllowNonManifold=False, theName=None):
6898             """
6899             Sewing of faces into a single shell.
6900
6901             Parameters:
6902                 ListShape Shapes to be processed.
6903                 theTolerance Required tolerance value.
6904                 AllowNonManifold Flag that allows non-manifold sewing.
6905                 theName Object name; when specified, this parameter is used
6906                         for result publication in the study. Otherwise, if automatic
6907                         publication is switched on, default value is used for result name.
6908
6909             Returns:
6910                 New GEOM.GEOM_Object, containing containing a result shell.
6911             """
6912             # Example: see GEOM_TestHealing.py
6913             # note: auto-publishing is done in self.Sew()
6914             anObj = self.Sew(ListShape, theTolerance, AllowNonManifold, theName)
6915             return anObj
6916
6917         ## Sewing of faces into a single shell.
6918         #  @param ListShape Shapes to be processed.
6919         #  @param theTolerance Required tolerance value.
6920         #  @param AllowNonManifold Flag that allows non-manifold sewing.
6921         #  @param theName Object name; when specified, this parameter is used
6922         #         for result publication in the study. Otherwise, if automatic
6923         #         publication is switched on, default value is used for result name.
6924         #
6925         #  @return New GEOM.GEOM_Object, containing a result shell.
6926         @ManageTransactions("HealOp")
6927         def Sew(self, ListShape, theTolerance, AllowNonManifold=False, theName=None):
6928             """
6929             Sewing of faces into a single shell.
6930
6931             Parameters:
6932                 ListShape Shapes to be processed.
6933                 theTolerance Required tolerance value.
6934                 AllowNonManifold Flag that allows non-manifold sewing.
6935                 theName Object name; when specified, this parameter is used
6936                         for result publication in the study. Otherwise, if automatic
6937                         publication is switched on, default value is used for result name.
6938
6939             Returns:
6940                 New GEOM.GEOM_Object, containing a result shell.
6941             """
6942             # Example: see MakeSewing() above
6943             theTolerance,Parameters = ParseParameters(theTolerance)
6944             if AllowNonManifold:
6945                 anObj = self.HealOp.SewAllowNonManifold( ToList( ListShape ), theTolerance)
6946             else:
6947                 anObj = self.HealOp.Sew( ToList( ListShape ), theTolerance)
6948             # To avoid script failure in case of good argument shape
6949             # (Fix of test cases geom/bugs11/L7,L8)
6950             if self.HealOp.GetErrorCode() == "ShHealOper_NotError_msg":
6951                 return anObj
6952             RaiseIfFailed("Sew", self.HealOp)
6953             anObj.SetParameters(Parameters)
6954             self._autoPublish(anObj, theName, "sewed")
6955             return anObj
6956
6957         ## Rebuild the topology of theSolids by removing
6958         #  the faces that are shared by several solids.
6959         #  @param theSolids A compound or a list of solids to be processed.
6960         #  @param theName Object name; when specified, this parameter is used
6961         #         for result publication in the study. Otherwise, if automatic
6962         #         publication is switched on, default value is used for result name.
6963         #
6964         #  @return New GEOM.GEOM_Object, containing processed shape.
6965         #
6966         #  @ref tui_remove_webs "Example"
6967         @ManageTransactions("HealOp")
6968         def RemoveInternalFaces (self, theSolids, theName=None):
6969             """
6970             Rebuild the topology of theSolids by removing
6971             the faces that are shared by several solids.
6972
6973             Parameters:
6974                 theSolids A compound or a list of solids to be processed.
6975                 theName Object name; when specified, this parameter is used
6976                         for result publication in the study. Otherwise, if automatic
6977                         publication is switched on, default value is used for result name.
6978
6979             Returns:
6980                 New GEOM.GEOM_Object, containing processed shape.
6981             """
6982             # Example: see GEOM_TestHealing.py
6983             anObj = self.HealOp.RemoveInternalFaces(ToList(theSolids))
6984             RaiseIfFailed("RemoveInternalFaces", self.HealOp)
6985             self._autoPublish(anObj, theName, "removeWebs")
6986             return anObj
6987
6988         ## Remove internal wires and edges from the given object (face).
6989         #  @param theObject Shape to be processed.
6990         #  @param theWires Indices of wires to be removed, if EMPTY then the method
6991         #                  removes ALL internal wires of the given object.
6992         #  @param theName Object name; when specified, this parameter is used
6993         #         for result publication in the study. Otherwise, if automatic
6994         #         publication is switched on, default value is used for result name.
6995         #
6996         #  @return New GEOM.GEOM_Object, containing processed shape.
6997         #
6998         #  @ref tui_suppress_internal_wires "Example"
6999         @ManageTransactions("HealOp")
7000         def SuppressInternalWires(self, theObject, theWires, theName=None):
7001             """
7002             Remove internal wires and edges from the given object (face).
7003
7004             Parameters:
7005                 theObject Shape to be processed.
7006                 theWires Indices of wires to be removed, if EMPTY then the method
7007                          removes ALL internal wires of the given object.
7008                 theName Object name; when specified, this parameter is used
7009                         for result publication in the study. Otherwise, if automatic
7010                         publication is switched on, default value is used for result name.
7011
7012             Returns:
7013                 New GEOM.GEOM_Object, containing processed shape.
7014             """
7015             # Example: see GEOM_TestHealing.py
7016             anObj = self.HealOp.RemoveIntWires(theObject, theWires)
7017             RaiseIfFailed("RemoveIntWires", self.HealOp)
7018             self._autoPublish(anObj, theName, "suppressWires")
7019             return anObj
7020
7021         ## Remove internal closed contours (holes) from the given object.
7022         #  @param theObject Shape to be processed.
7023         #  @param theWires Indices of wires to be removed, if EMPTY then the method
7024         #                  removes ALL internal holes of the given object
7025         #  @param theName Object name; when specified, this parameter is used
7026         #         for result publication in the study. Otherwise, if automatic
7027         #         publication is switched on, default value is used for result name.
7028         #
7029         #  @return New GEOM.GEOM_Object, containing processed shape.
7030         #
7031         #  @ref tui_suppress_holes "Example"
7032         @ManageTransactions("HealOp")
7033         def SuppressHoles(self, theObject, theWires, theName=None):
7034             """
7035             Remove internal closed contours (holes) from the given object.
7036
7037             Parameters:
7038                 theObject Shape to be processed.
7039                 theWires Indices of wires to be removed, if EMPTY then the method
7040                          removes ALL internal holes of the given object
7041                 theName Object name; when specified, this parameter is used
7042                         for result publication in the study. Otherwise, if automatic
7043                         publication is switched on, default value is used for result name.
7044
7045             Returns:
7046                 New GEOM.GEOM_Object, containing processed shape.
7047             """
7048             # Example: see GEOM_TestHealing.py
7049             anObj = self.HealOp.FillHoles(theObject, theWires)
7050             RaiseIfFailed("FillHoles", self.HealOp)
7051             self._autoPublish(anObj, theName, "suppressHoles")
7052             return anObj
7053
7054         ## Close an open wire.
7055         #  @param theObject Shape to be processed.
7056         #  @param theWires Indexes of edge(s) and wire(s) to be closed within <VAR>theObject</VAR>'s shape,
7057         #                  if [ ], then <VAR>theObject</VAR> itself is a wire.
7058         #  @param isCommonVertex If True  : closure by creation of a common vertex,
7059         #                        If False : closure by creation of an edge between ends.
7060         #  @param theName Object name; when specified, this parameter is used
7061         #         for result publication in the study. Otherwise, if automatic
7062         #         publication is switched on, default value is used for result name.
7063         #
7064         #  @return New GEOM.GEOM_Object, containing processed shape.
7065         #
7066         #  @ref tui_close_contour "Example"
7067         @ManageTransactions("HealOp")
7068         def CloseContour(self,theObject, theWires, isCommonVertex, theName=None):
7069             """
7070             Close an open wire.
7071
7072             Parameters:
7073                 theObject Shape to be processed.
7074                 theWires Indexes of edge(s) and wire(s) to be closed within theObject's shape,
7075                          if [ ], then theObject itself is a wire.
7076                 isCommonVertex If True  : closure by creation of a common vertex,
7077                                If False : closure by creation of an edge between ends.
7078                 theName Object name; when specified, this parameter is used
7079                         for result publication in the study. Otherwise, if automatic
7080                         publication is switched on, default value is used for result name.
7081
7082             Returns:
7083                 New GEOM.GEOM_Object, containing processed shape.
7084             """
7085             # Example: see GEOM_TestHealing.py
7086             anObj = self.HealOp.CloseContour(theObject, theWires, isCommonVertex)
7087             RaiseIfFailed("CloseContour", self.HealOp)
7088             self._autoPublish(anObj, theName, "closeContour")
7089             return anObj
7090
7091         ## Addition of a point to a given edge object.
7092         #  @param theObject Shape to be processed.
7093         #  @param theEdgeIndex Index of edge to be divided within theObject's shape,
7094         #                      if -1, then theObject itself is the edge.
7095         #  @param theValue Value of parameter on edge or length parameter,
7096         #                  depending on \a isByParameter.
7097         #  @param isByParameter If TRUE : \a theValue is treated as a curve parameter [0..1], \n
7098         #                       if FALSE : \a theValue is treated as a length parameter [0..1]
7099         #  @param theName Object name; when specified, this parameter is used
7100         #         for result publication in the study. Otherwise, if automatic
7101         #         publication is switched on, default value is used for result name.
7102         #
7103         #  @return New GEOM.GEOM_Object, containing processed shape.
7104         #
7105         #  @ref tui_add_point_on_edge "Example"
7106         @ManageTransactions("HealOp")
7107         def DivideEdge(self, theObject, theEdgeIndex, theValue, isByParameter, theName=None):
7108             """
7109             Addition of a point to a given edge object.
7110
7111             Parameters:
7112                 theObject Shape to be processed.
7113                 theEdgeIndex Index of edge to be divided within theObject's shape,
7114                              if -1, then theObject itself is the edge.
7115                 theValue Value of parameter on edge or length parameter,
7116                          depending on isByParameter.
7117                 isByParameter If TRUE :  theValue is treated as a curve parameter [0..1],
7118                               if FALSE : theValue is treated as a length parameter [0..1]
7119                 theName Object name; when specified, this parameter is used
7120                         for result publication in the study. Otherwise, if automatic
7121                         publication is switched on, default value is used for result name.
7122
7123             Returns:
7124                 New GEOM.GEOM_Object, containing processed shape.
7125             """
7126             # Example: see GEOM_TestHealing.py
7127             theEdgeIndex,theValue,isByParameter,Parameters = ParseParameters(theEdgeIndex,theValue,isByParameter)
7128             anObj = self.HealOp.DivideEdge(theObject, theEdgeIndex, theValue, isByParameter)
7129             RaiseIfFailed("DivideEdge", self.HealOp)
7130             anObj.SetParameters(Parameters)
7131             self._autoPublish(anObj, theName, "divideEdge")
7132             return anObj
7133
7134         ## Addition of points to a given edge of \a theObject by projecting
7135         #  other points to the given edge.
7136         #  @param theObject Shape to be processed.
7137         #  @param theEdgeIndex Index of edge to be divided within theObject's shape,
7138         #                      if -1, then theObject itself is the edge.
7139         #  @param thePoints List of points to project to theEdgeIndex-th edge.
7140         #  @param theName Object name; when specified, this parameter is used
7141         #         for result publication in the study. Otherwise, if automatic
7142         #         publication is switched on, default value is used for result name.
7143         #
7144         #  @return New GEOM.GEOM_Object, containing processed shape.
7145         #
7146         #  @ref tui_add_point_on_edge "Example"
7147         @ManageTransactions("HealOp")
7148         def DivideEdgeByPoint(self, theObject, theEdgeIndex, thePoints, theName=None):
7149             """
7150             Addition of points to a given edge of \a theObject by projecting
7151             other points to the given edge.
7152
7153             Parameters:
7154                 theObject Shape to be processed.
7155                 theEdgeIndex The edge or its index to be divided within theObject's shape,
7156                              if -1, then theObject itself is the edge.
7157                 thePoints List of points to project to theEdgeIndex-th edge.
7158                 theName Object name; when specified, this parameter is used
7159                         for result publication in the study. Otherwise, if automatic
7160                         publication is switched on, default value is used for result name.
7161
7162             Returns:
7163                 New GEOM.GEOM_Object, containing processed shape.
7164             """
7165             # Example: see GEOM_TestHealing.py
7166             if isinstance( theEdgeIndex, GEOM._objref_GEOM_Object ):
7167                 theEdgeIndex = self.GetSubShapeID( theObject, theEdgeIndex )
7168             anObj = self.HealOp.DivideEdgeByPoint(theObject, theEdgeIndex, ToList( thePoints ))
7169             RaiseIfFailed("DivideEdgeByPoint", self.HealOp)
7170             self._autoPublish(anObj, theName, "divideEdge")
7171             return anObj
7172
7173         ## Suppress the vertices in the wire in case if adjacent edges are C1 continuous.
7174         #  @param theWire Wire to minimize the number of C1 continuous edges in.
7175         #  @param theVertices A list of vertices to suppress. If the list
7176         #                     is empty, all vertices in a wire will be assumed.
7177         #  @param theName Object name; when specified, this parameter is used
7178         #         for result publication in the study. Otherwise, if automatic
7179         #         publication is switched on, default value is used for result name.
7180         #
7181         #  @return New GEOM.GEOM_Object with modified wire.
7182         #
7183         #  @ref tui_fuse_collinear_edges "Example"
7184         @ManageTransactions("HealOp")
7185         def FuseCollinearEdgesWithinWire(self, theWire, theVertices = [], theName=None):
7186             """
7187             Suppress the vertices in the wire in case if adjacent edges are C1 continuous.
7188
7189             Parameters:
7190                 theWire Wire to minimize the number of C1 continuous edges in.
7191                 theVertices A list of vertices to suppress. If the list
7192                             is empty, all vertices in a wire will be assumed.
7193                 theName Object name; when specified, this parameter is used
7194                         for result publication in the study. Otherwise, if automatic
7195                         publication is switched on, default value is used for result name.
7196
7197             Returns:
7198                 New GEOM.GEOM_Object with modified wire.
7199             """
7200             anObj = self.HealOp.FuseCollinearEdgesWithinWire(theWire, theVertices)
7201             RaiseIfFailed("FuseCollinearEdgesWithinWire", self.HealOp)
7202             self._autoPublish(anObj, theName, "fuseEdges")
7203             return anObj
7204
7205         ## Change orientation of the given object. Updates given shape.
7206         #  @param theObject Shape to be processed.
7207         #  @return Updated <var>theObject</var>
7208         #
7209         #  @ref swig_todo "Example"
7210         @ManageTransactions("HealOp")
7211         def ChangeOrientationShell(self,theObject):
7212             """
7213             Change orientation of the given object. Updates given shape.
7214
7215             Parameters:
7216                 theObject Shape to be processed.
7217
7218             Returns:
7219                 Updated theObject
7220             """
7221             theObject = self.HealOp.ChangeOrientation(theObject)
7222             RaiseIfFailed("ChangeOrientation", self.HealOp)
7223             pass
7224
7225         ## Change orientation of the given object.
7226         #  @param theObject Shape to be processed.
7227         #  @param theName Object name; when specified, this parameter is used
7228         #         for result publication in the study. Otherwise, if automatic
7229         #         publication is switched on, default value is used for result name.
7230         #
7231         #  @return New GEOM.GEOM_Object, containing processed shape.
7232         #
7233         #  @ref swig_todo "Example"
7234         @ManageTransactions("HealOp")
7235         def ChangeOrientationShellCopy(self, theObject, theName=None):
7236             """
7237             Change orientation of the given object.
7238
7239             Parameters:
7240                 theObject Shape to be processed.
7241                 theName Object name; when specified, this parameter is used
7242                         for result publication in the study. Otherwise, if automatic
7243                         publication is switched on, default value is used for result name.
7244
7245             Returns:
7246                 New GEOM.GEOM_Object, containing processed shape.
7247             """
7248             anObj = self.HealOp.ChangeOrientationCopy(theObject)
7249             RaiseIfFailed("ChangeOrientationCopy", self.HealOp)
7250             self._autoPublish(anObj, theName, "reversed")
7251             return anObj
7252
7253         ## Try to limit tolerance of the given object by value \a theTolerance.
7254         #  @param theObject Shape to be processed.
7255         #  @param theTolerance Required tolerance value.
7256         #  @param theName Object name; when specified, this parameter is used
7257         #         for result publication in the study. Otherwise, if automatic
7258         #         publication is switched on, default value is used for result name.
7259         #
7260         #  @return New GEOM.GEOM_Object, containing processed shape.
7261         #
7262         #  @ref tui_limit_tolerance "Example"
7263         @ManageTransactions("HealOp")
7264         def LimitTolerance(self, theObject, theTolerance = 1e-07, theName=None):
7265             """
7266             Try to limit tolerance of the given object by value theTolerance.
7267
7268             Parameters:
7269                 theObject Shape to be processed.
7270                 theTolerance Required tolerance value.
7271                 theName Object name; when specified, this parameter is used
7272                         for result publication in the study. Otherwise, if automatic
7273                         publication is switched on, default value is used for result name.
7274
7275             Returns:
7276                 New GEOM.GEOM_Object, containing processed shape.
7277             """
7278             anObj = self.HealOp.LimitTolerance(theObject, theTolerance)
7279             RaiseIfFailed("LimitTolerance", self.HealOp)
7280             self._autoPublish(anObj, theName, "limitTolerance")
7281             return anObj
7282
7283         ## Get a list of wires (wrapped in GEOM.GEOM_Object-s),
7284         #  that constitute a free boundary of the given shape.
7285         #  @param theObject Shape to get free boundary of.
7286         #  @param theName Object name; when specified, this parameter is used
7287         #         for result publication in the study. Otherwise, if automatic
7288         #         publication is switched on, default value is used for result name.
7289         #
7290         #  @return [\a status, \a theClosedWires, \a theOpenWires]
7291         #  \n \a status: FALSE, if an error(s) occured during the method execution.
7292         #  \n \a theClosedWires: Closed wires on the free boundary of the given shape.
7293         #  \n \a theOpenWires: Open wires on the free boundary of the given shape.
7294         #
7295         #  @ref tui_free_boundaries_page "Example"
7296         @ManageTransactions("HealOp")
7297         def GetFreeBoundary(self, theObject, theName=None):
7298             """
7299             Get a list of wires (wrapped in GEOM.GEOM_Object-s),
7300             that constitute a free boundary of the given shape.
7301
7302             Parameters:
7303                 theObject Shape to get free boundary of.
7304                 theName Object name; when specified, this parameter is used
7305                         for result publication in the study. Otherwise, if automatic
7306                         publication is switched on, default value is used for result name.
7307
7308             Returns:
7309                 [status, theClosedWires, theOpenWires]
7310                  status: FALSE, if an error(s) occured during the method execution.
7311                  theClosedWires: Closed wires on the free boundary of the given shape.
7312                  theOpenWires: Open wires on the free boundary of the given shape.
7313             """
7314             # Example: see GEOM_TestHealing.py
7315             anObj = self.HealOp.GetFreeBoundary( ToList( theObject ))
7316             RaiseIfFailed("GetFreeBoundary", self.HealOp)
7317             self._autoPublish(anObj[1], theName, "closedWire")
7318             self._autoPublish(anObj[2], theName, "openWire")
7319             return anObj
7320
7321         ## Replace coincident faces in \a theShapes by one face.
7322         #  @param theShapes Initial shapes, either a list or compound of shapes.
7323         #  @param theTolerance Maximum distance between faces, which can be considered as coincident.
7324         #  @param doKeepNonSolids If FALSE, only solids will present in the result,
7325         #                         otherwise all initial shapes.
7326         #  @param theName Object name; when specified, this parameter is used
7327         #         for result publication in the study. Otherwise, if automatic
7328         #         publication is switched on, default value is used for result name.
7329         #
7330         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7331         #
7332         #  @ref tui_glue_faces "Example"
7333         @ManageTransactions("ShapesOp")
7334         def MakeGlueFaces(self, theShapes, theTolerance, doKeepNonSolids=True, theName=None):
7335             """
7336             Replace coincident faces in theShapes by one face.
7337
7338             Parameters:
7339                 theShapes Initial shapes, either a list or compound of shapes.
7340                 theTolerance Maximum distance between faces, which can be considered as coincident.
7341                 doKeepNonSolids If FALSE, only solids will present in the result,
7342                                 otherwise all initial shapes.
7343                 theName Object name; when specified, this parameter is used
7344                         for result publication in the study. Otherwise, if automatic
7345                         publication is switched on, default value is used for result name.
7346
7347             Returns:
7348                 New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7349             """
7350             # Example: see GEOM_Spanner.py
7351             theTolerance,Parameters = ParseParameters(theTolerance)
7352             anObj = self.ShapesOp.MakeGlueFaces(ToList(theShapes), theTolerance, doKeepNonSolids)
7353             if anObj is None:
7354                 raise RuntimeError, "MakeGlueFaces : " + self.ShapesOp.GetErrorCode()
7355             anObj.SetParameters(Parameters)
7356             self._autoPublish(anObj, theName, "glueFaces")
7357             return anObj
7358
7359         ## Find coincident faces in \a theShapes for possible gluing.
7360         #  @param theShapes Initial shapes, either a list or compound of shapes.
7361         #  @param theTolerance Maximum distance between faces,
7362         #                      which can be considered as coincident.
7363         #  @param theName Object name; when specified, this parameter is used
7364         #         for result publication in the study. Otherwise, if automatic
7365         #         publication is switched on, default value is used for result name.
7366         #
7367         #  @return GEOM.ListOfGO
7368         #
7369         #  @ref tui_glue_faces "Example"
7370         @ManageTransactions("ShapesOp")
7371         def GetGlueFaces(self, theShapes, theTolerance, theName=None):
7372             """
7373             Find coincident faces in theShapes for possible gluing.
7374
7375             Parameters:
7376                 theShapes Initial shapes, either a list or compound of shapes.
7377                 theTolerance Maximum distance between faces,
7378                              which can be considered as coincident.
7379                 theName Object name; when specified, this parameter is used
7380                         for result publication in the study. Otherwise, if automatic
7381                         publication is switched on, default value is used for result name.
7382
7383             Returns:
7384                 GEOM.ListOfGO
7385             """
7386             anObj = self.ShapesOp.GetGlueFaces(ToList(theShapes), theTolerance)
7387             RaiseIfFailed("GetGlueFaces", self.ShapesOp)
7388             self._autoPublish(anObj, theName, "facesToGlue")
7389             return anObj
7390
7391         ## Replace coincident faces in \a theShapes by one face
7392         #  in compliance with given list of faces
7393         #  @param theShapes Initial shapes, either a list or compound of shapes.
7394         #  @param theTolerance Maximum distance between faces,
7395         #                      which can be considered as coincident.
7396         #  @param theFaces List of faces for gluing.
7397         #  @param doKeepNonSolids If FALSE, only solids will present in the result,
7398         #                         otherwise all initial shapes.
7399         #  @param doGlueAllEdges If TRUE, all coincident edges of <VAR>theShape</VAR>
7400         #                        will be glued, otherwise only the edges,
7401         #                        belonging to <VAR>theFaces</VAR>.
7402         #  @param theName Object name; when specified, this parameter is used
7403         #         for result publication in the study. Otherwise, if automatic
7404         #         publication is switched on, default value is used for result name.
7405         #
7406         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7407         #
7408         #  @ref tui_glue_faces "Example"
7409         @ManageTransactions("ShapesOp")
7410         def MakeGlueFacesByList(self, theShapes, theTolerance, theFaces,
7411                                 doKeepNonSolids=True, doGlueAllEdges=True, theName=None):
7412             """
7413             Replace coincident faces in theShapes by one face
7414             in compliance with given list of faces
7415
7416             Parameters:
7417                 theShapes theShapes Initial shapes, either a list or compound of shapes.
7418                 theTolerance Maximum distance between faces,
7419                              which can be considered as coincident.
7420                 theFaces List of faces for gluing.
7421                 doKeepNonSolids If FALSE, only solids will present in the result,
7422                                 otherwise all initial shapes.
7423                 doGlueAllEdges If TRUE, all coincident edges of theShape
7424                                will be glued, otherwise only the edges,
7425                                belonging to theFaces.
7426                 theName Object name; when specified, this parameter is used
7427                         for result publication in the study. Otherwise, if automatic
7428                         publication is switched on, default value is used for result name.
7429
7430             Returns:
7431                 New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7432             """
7433             anObj = self.ShapesOp.MakeGlueFacesByList(ToList(theShapes), theTolerance, ToList(theFaces),
7434                                                       doKeepNonSolids, doGlueAllEdges)
7435             if anObj is None:
7436                 raise RuntimeError, "MakeGlueFacesByList : " + self.ShapesOp.GetErrorCode()
7437             self._autoPublish(anObj, theName, "glueFaces")
7438             return anObj
7439
7440         ## Replace coincident edges in \a theShapes by one edge.
7441         #  @param theShapes Initial shapes, either a list or compound of shapes.
7442         #  @param theTolerance Maximum distance between edges, which can be considered as coincident.
7443         #  @param theName Object name; when specified, this parameter is used
7444         #         for result publication in the study. Otherwise, if automatic
7445         #         publication is switched on, default value is used for result name.
7446         #
7447         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7448         #
7449         #  @ref tui_glue_edges "Example"
7450         @ManageTransactions("ShapesOp")
7451         def MakeGlueEdges(self, theShapes, theTolerance, theName=None):
7452             """
7453             Replace coincident edges in theShapes by one edge.
7454
7455             Parameters:
7456                 theShapes Initial shapes, either a list or compound of shapes.
7457                 theTolerance Maximum distance between edges, which can be considered as coincident.
7458                 theName Object name; when specified, this parameter is used
7459                         for result publication in the study. Otherwise, if automatic
7460                         publication is switched on, default value is used for result name.
7461
7462             Returns:
7463                 New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7464             """
7465             theTolerance,Parameters = ParseParameters(theTolerance)
7466             anObj = self.ShapesOp.MakeGlueEdges(ToList(theShapes), theTolerance)
7467             if anObj is None:
7468                 raise RuntimeError, "MakeGlueEdges : " + self.ShapesOp.GetErrorCode()
7469             anObj.SetParameters(Parameters)
7470             self._autoPublish(anObj, theName, "glueEdges")
7471             return anObj
7472
7473         ## Find coincident edges in \a theShapes for possible gluing.
7474         #  @param theShapes Initial shapes, either a list or compound of shapes.
7475         #  @param theTolerance Maximum distance between edges,
7476         #                      which can be considered as coincident.
7477         #  @param theName Object name; when specified, this parameter is used
7478         #         for result publication in the study. Otherwise, if automatic
7479         #         publication is switched on, default value is used for result name.
7480         #
7481         #  @return GEOM.ListOfGO
7482         #
7483         #  @ref tui_glue_edges "Example"
7484         @ManageTransactions("ShapesOp")
7485         def GetGlueEdges(self, theShapes, theTolerance, theName=None):
7486             """
7487             Find coincident edges in theShapes for possible gluing.
7488
7489             Parameters:
7490                 theShapes Initial shapes, either a list or compound of shapes.
7491                 theTolerance Maximum distance between edges,
7492                              which can be considered as coincident.
7493                 theName Object name; when specified, this parameter is used
7494                         for result publication in the study. Otherwise, if automatic
7495                         publication is switched on, default value is used for result name.
7496
7497             Returns:
7498                 GEOM.ListOfGO
7499             """
7500             anObj = self.ShapesOp.GetGlueEdges(ToList(theShapes), theTolerance)
7501             RaiseIfFailed("GetGlueEdges", self.ShapesOp)
7502             self._autoPublish(anObj, theName, "edgesToGlue")
7503             return anObj
7504
7505         ## Replace coincident edges in theShapes by one edge
7506         #  in compliance with given list of edges.
7507         #  @param theShapes Initial shapes, either a list or compound of shapes.
7508         #  @param theTolerance Maximum distance between edges,
7509         #                      which can be considered as coincident.
7510         #  @param theEdges List of edges for gluing.
7511         #  @param theName Object name; when specified, this parameter is used
7512         #         for result publication in the study. Otherwise, if automatic
7513         #         publication is switched on, default value is used for result name.
7514         #
7515         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7516         #
7517         #  @ref tui_glue_edges "Example"
7518         @ManageTransactions("ShapesOp")
7519         def MakeGlueEdgesByList(self, theShapes, theTolerance, theEdges, theName=None):
7520             """
7521             Replace coincident edges in theShapes by one edge
7522             in compliance with given list of edges.
7523
7524             Parameters:
7525                 theShapes Initial shapes, either a list or compound of shapes.
7526                 theTolerance Maximum distance between edges,
7527                              which can be considered as coincident.
7528                 theEdges List of edges for gluing.
7529                 theName Object name; when specified, this parameter is used
7530                         for result publication in the study. Otherwise, if automatic
7531                         publication is switched on, default value is used for result name.
7532
7533             Returns:
7534                 New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7535             """
7536             anObj = self.ShapesOp.MakeGlueEdgesByList(ToList(theShapes), theTolerance, theEdges)
7537             if anObj is None:
7538                 raise RuntimeError, "MakeGlueEdgesByList : " + self.ShapesOp.GetErrorCode()
7539             self._autoPublish(anObj, theName, "glueEdges")
7540             return anObj
7541
7542         # end of l3_healing
7543         ## @}
7544
7545         ## @addtogroup l3_boolean Boolean Operations
7546         ## @{
7547
7548         # -----------------------------------------------------------------------------
7549         # Boolean (Common, Cut, Fuse, Section)
7550         # -----------------------------------------------------------------------------
7551
7552         ## Perform one of boolean operations on two given shapes.
7553         #  @param theShape1 First argument for boolean operation.
7554         #  @param theShape2 Second argument for boolean operation.
7555         #  @param theOperation Indicates the operation to be done:\n
7556         #                      1 - Common, 2 - Cut, 3 - Fuse, 4 - Section.
7557         #  @param checkSelfInte The flag that tells if the arguments should
7558         #         be checked for self-intersection prior to the operation.
7559         #  @param theName Object name; when specified, this parameter is used
7560         #         for result publication in the study. Otherwise, if automatic
7561         #         publication is switched on, default value is used for result name.
7562         #
7563         #  @note This algorithm doesn't find all types of self-intersections.
7564         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7565         #        vertex/face and edge/face intersections. Face/face
7566         #        intersections detection is switched off as it is a
7567         #        time-consuming operation that gives an impact on performance.
7568         #        To find all self-intersections please use
7569         #        CheckSelfIntersections() method.
7570         #
7571         #  @return New GEOM.GEOM_Object, containing the result shape.
7572         #
7573         #  @ref tui_fuse "Example"
7574         @ManageTransactions("BoolOp")
7575         def MakeBoolean(self, theShape1, theShape2, theOperation, checkSelfInte=False, theName=None):
7576             """
7577             Perform one of boolean operations on two given shapes.
7578
7579             Parameters:
7580                 theShape1 First argument for boolean operation.
7581                 theShape2 Second argument for boolean operation.
7582                 theOperation Indicates the operation to be done:
7583                              1 - Common, 2 - Cut, 3 - Fuse, 4 - Section.
7584                 checkSelfInte The flag that tells if the arguments should
7585                               be checked for self-intersection prior to
7586                               the operation.
7587                 theName Object name; when specified, this parameter is used
7588                         for result publication in the study. Otherwise, if automatic
7589                         publication is switched on, default value is used for result name.
7590
7591             Note:
7592                     This algorithm doesn't find all types of self-intersections.
7593                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7594                     vertex/face and edge/face intersections. Face/face
7595                     intersections detection is switched off as it is a
7596                     time-consuming operation that gives an impact on performance.
7597                     To find all self-intersections please use
7598                     CheckSelfIntersections() method.
7599
7600             Returns:
7601                 New GEOM.GEOM_Object, containing the result shape.
7602             """
7603             # Example: see GEOM_TestAll.py
7604             anObj = self.BoolOp.MakeBoolean(theShape1, theShape2, theOperation, checkSelfInte)
7605             RaiseIfFailed("MakeBoolean", self.BoolOp)
7606             def_names = { 1: "common", 2: "cut", 3: "fuse", 4: "section" }
7607             self._autoPublish(anObj, theName, def_names[theOperation])
7608             return anObj
7609
7610         ## Perform Common boolean operation on two given shapes.
7611         #  @param theShape1 First argument for boolean operation.
7612         #  @param theShape2 Second argument for boolean operation.
7613         #  @param checkSelfInte The flag that tells if the arguments should
7614         #         be checked for self-intersection prior to the operation.
7615         #  @param theName Object name; when specified, this parameter is used
7616         #         for result publication in the study. Otherwise, if automatic
7617         #         publication is switched on, default value is used for result name.
7618         #
7619         #  @note This algorithm doesn't find all types of self-intersections.
7620         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7621         #        vertex/face and edge/face intersections. Face/face
7622         #        intersections detection is switched off as it is a
7623         #        time-consuming operation that gives an impact on performance.
7624         #        To find all self-intersections please use
7625         #        CheckSelfIntersections() method.
7626         #
7627         #  @return New GEOM.GEOM_Object, containing the result shape.
7628         #
7629         #  @ref tui_common "Example 1"
7630         #  \n @ref swig_MakeCommon "Example 2"
7631         def MakeCommon(self, theShape1, theShape2, checkSelfInte=False, theName=None):
7632             """
7633             Perform Common boolean operation on two given shapes.
7634
7635             Parameters:
7636                 theShape1 First argument for boolean operation.
7637                 theShape2 Second argument for boolean operation.
7638                 checkSelfInte The flag that tells if the arguments should
7639                               be checked for self-intersection prior to
7640                               the operation.
7641                 theName Object name; when specified, this parameter is used
7642                         for result publication in the study. Otherwise, if automatic
7643                         publication is switched on, default value is used for result name.
7644
7645             Note:
7646                     This algorithm doesn't find all types of self-intersections.
7647                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7648                     vertex/face and edge/face intersections. Face/face
7649                     intersections detection is switched off as it is a
7650                     time-consuming operation that gives an impact on performance.
7651                     To find all self-intersections please use
7652                     CheckSelfIntersections() method.
7653
7654             Returns:
7655                 New GEOM.GEOM_Object, containing the result shape.
7656             """
7657             # Example: see GEOM_TestOthers.py
7658             # note: auto-publishing is done in self.MakeBoolean()
7659             return self.MakeBoolean(theShape1, theShape2, 1, checkSelfInte, theName)
7660
7661         ## Perform Cut boolean operation on two given shapes.
7662         #  @param theShape1 First argument for boolean operation.
7663         #  @param theShape2 Second argument for boolean operation.
7664         #  @param checkSelfInte The flag that tells if the arguments should
7665         #         be checked for self-intersection prior to the operation.
7666         #  @param theName Object name; when specified, this parameter is used
7667         #         for result publication in the study. Otherwise, if automatic
7668         #         publication is switched on, default value is used for result name.
7669         #
7670         #  @note This algorithm doesn't find all types of self-intersections.
7671         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7672         #        vertex/face and edge/face intersections. Face/face
7673         #        intersections detection is switched off as it is a
7674         #        time-consuming operation that gives an impact on performance.
7675         #        To find all self-intersections please use
7676         #        CheckSelfIntersections() method.
7677         #
7678         #  @return New GEOM.GEOM_Object, containing the result shape.
7679         #
7680         #  @ref tui_cut "Example 1"
7681         #  \n @ref swig_MakeCommon "Example 2"
7682         def MakeCut(self, theShape1, theShape2, checkSelfInte=False, theName=None):
7683             """
7684             Perform Cut boolean operation on two given shapes.
7685
7686             Parameters:
7687                 theShape1 First argument for boolean operation.
7688                 theShape2 Second argument for boolean operation.
7689                 checkSelfInte The flag that tells if the arguments should
7690                               be checked for self-intersection prior to
7691                               the operation.
7692                 theName Object name; when specified, this parameter is used
7693                         for result publication in the study. Otherwise, if automatic
7694                         publication is switched on, default value is used for result name.
7695
7696             Note:
7697                     This algorithm doesn't find all types of self-intersections.
7698                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7699                     vertex/face and edge/face intersections. Face/face
7700                     intersections detection is switched off as it is a
7701                     time-consuming operation that gives an impact on performance.
7702                     To find all self-intersections please use
7703                     CheckSelfIntersections() method.
7704
7705             Returns:
7706                 New GEOM.GEOM_Object, containing the result shape.
7707
7708             """
7709             # Example: see GEOM_TestOthers.py
7710             # note: auto-publishing is done in self.MakeBoolean()
7711             return self.MakeBoolean(theShape1, theShape2, 2, checkSelfInte, theName)
7712
7713         ## Perform Fuse boolean operation on two given shapes.
7714         #  @param theShape1 First argument for boolean operation.
7715         #  @param theShape2 Second argument for boolean operation.
7716         #  @param checkSelfInte The flag that tells if the arguments should
7717         #         be checked for self-intersection prior to the operation.
7718         #  @param rmExtraEdges The flag that tells if Remove Extra Edges
7719         #         operation should be performed during the operation.
7720         #  @param theName Object name; when specified, this parameter is used
7721         #         for result publication in the study. Otherwise, if automatic
7722         #         publication is switched on, default value is used for result name.
7723         #
7724         #  @note This algorithm doesn't find all types of self-intersections.
7725         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7726         #        vertex/face and edge/face intersections. Face/face
7727         #        intersections detection is switched off as it is a
7728         #        time-consuming operation that gives an impact on performance.
7729         #        To find all self-intersections please use
7730         #        CheckSelfIntersections() method.
7731         #
7732         #  @return New GEOM.GEOM_Object, containing the result shape.
7733         #
7734         #  @ref tui_fuse "Example 1"
7735         #  \n @ref swig_MakeCommon "Example 2"
7736         @ManageTransactions("BoolOp")
7737         def MakeFuse(self, theShape1, theShape2, checkSelfInte=False,
7738                      rmExtraEdges=False, theName=None):
7739             """
7740             Perform Fuse boolean operation on two given shapes.
7741
7742             Parameters:
7743                 theShape1 First argument for boolean operation.
7744                 theShape2 Second argument for boolean operation.
7745                 checkSelfInte The flag that tells if the arguments should
7746                               be checked for self-intersection prior to
7747                               the operation.
7748                 rmExtraEdges The flag that tells if Remove Extra Edges
7749                              operation should be performed during the operation.
7750                 theName Object name; when specified, this parameter is used
7751                         for result publication in the study. Otherwise, if automatic
7752                         publication is switched on, default value is used for result name.
7753
7754             Note:
7755                     This algorithm doesn't find all types of self-intersections.
7756                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7757                     vertex/face and edge/face intersections. Face/face
7758                     intersections detection is switched off as it is a
7759                     time-consuming operation that gives an impact on performance.
7760                     To find all self-intersections please use
7761                     CheckSelfIntersections() method.
7762
7763             Returns:
7764                 New GEOM.GEOM_Object, containing the result shape.
7765
7766             """
7767             # Example: see GEOM_TestOthers.py
7768             anObj = self.BoolOp.MakeFuse(theShape1, theShape2,
7769                                          checkSelfInte, rmExtraEdges)
7770             RaiseIfFailed("MakeFuse", self.BoolOp)
7771             self._autoPublish(anObj, theName, "fuse")
7772             return anObj
7773
7774         ## Perform Section boolean operation on two given shapes.
7775         #  @param theShape1 First argument for boolean operation.
7776         #  @param theShape2 Second argument for boolean operation.
7777         #  @param checkSelfInte The flag that tells if the arguments should
7778         #         be checked for self-intersection prior to the operation.
7779         #         If a self-intersection detected the operation fails.
7780         #  @param theName Object name; when specified, this parameter is used
7781         #         for result publication in the study. Otherwise, if automatic
7782         #         publication is switched on, default value is used for result name.
7783         #  @return New GEOM.GEOM_Object, containing the result shape.
7784         #
7785         #  @ref tui_section "Example 1"
7786         #  \n @ref swig_MakeCommon "Example 2"
7787         def MakeSection(self, theShape1, theShape2, checkSelfInte=False, theName=None):
7788             """
7789             Perform Section boolean operation on two given shapes.
7790
7791             Parameters:
7792                 theShape1 First argument for boolean operation.
7793                 theShape2 Second argument for boolean operation.
7794                 checkSelfInte The flag that tells if the arguments should
7795                               be checked for self-intersection prior to the operation.
7796                               If a self-intersection detected the operation fails.
7797                 theName Object name; when specified, this parameter is used
7798                         for result publication in the study. Otherwise, if automatic
7799                         publication is switched on, default value is used for result name.
7800             Returns:
7801                 New GEOM.GEOM_Object, containing the result shape.
7802
7803             """
7804             # Example: see GEOM_TestOthers.py
7805             # note: auto-publishing is done in self.MakeBoolean()
7806             return self.MakeBoolean(theShape1, theShape2, 4, checkSelfInte, theName)
7807
7808         ## Perform Fuse boolean operation on the list of shapes.
7809         #  @param theShapesList Shapes to be fused.
7810         #  @param checkSelfInte The flag that tells if the arguments should
7811         #         be checked for self-intersection prior to the operation.
7812         #  @param rmExtraEdges The flag that tells if Remove Extra Edges
7813         #         operation should be performed during the operation.
7814         #  @param theName Object name; when specified, this parameter is used
7815         #         for result publication in the study. Otherwise, if automatic
7816         #         publication is switched on, default value is used for result name.
7817         #
7818         #  @note This algorithm doesn't find all types of self-intersections.
7819         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7820         #        vertex/face and edge/face intersections. Face/face
7821         #        intersections detection is switched off as it is a
7822         #        time-consuming operation that gives an impact on performance.
7823         #        To find all self-intersections please use
7824         #        CheckSelfIntersections() method.
7825         #
7826         #  @return New GEOM.GEOM_Object, containing the result shape.
7827         #
7828         #  @ref tui_fuse "Example 1"
7829         #  \n @ref swig_MakeCommon "Example 2"
7830         @ManageTransactions("BoolOp")
7831         def MakeFuseList(self, theShapesList, checkSelfInte=False,
7832                          rmExtraEdges=False, theName=None):
7833             """
7834             Perform Fuse boolean operation on the list of shapes.
7835
7836             Parameters:
7837                 theShapesList Shapes to be fused.
7838                 checkSelfInte The flag that tells if the arguments should
7839                               be checked for self-intersection prior to
7840                               the operation.
7841                 rmExtraEdges The flag that tells if Remove Extra Edges
7842                              operation should be performed during the operation.
7843                 theName Object name; when specified, this parameter is used
7844                         for result publication in the study. Otherwise, if automatic
7845                         publication is switched on, default value is used for result name.
7846
7847             Note:
7848                     This algorithm doesn't find all types of self-intersections.
7849                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7850                     vertex/face and edge/face intersections. Face/face
7851                     intersections detection is switched off as it is a
7852                     time-consuming operation that gives an impact on performance.
7853                     To find all self-intersections please use
7854                     CheckSelfIntersections() method.
7855
7856             Returns:
7857                 New GEOM.GEOM_Object, containing the result shape.
7858
7859             """
7860             # Example: see GEOM_TestOthers.py
7861             anObj = self.BoolOp.MakeFuseList(theShapesList, checkSelfInte,
7862                                              rmExtraEdges)
7863             RaiseIfFailed("MakeFuseList", self.BoolOp)
7864             self._autoPublish(anObj, theName, "fuse")
7865             return anObj
7866
7867         ## Perform Common boolean operation on the list of shapes.
7868         #  @param theShapesList Shapes for Common operation.
7869         #  @param checkSelfInte The flag that tells if the arguments should
7870         #         be checked for self-intersection prior to the operation.
7871         #  @param theName Object name; when specified, this parameter is used
7872         #         for result publication in the study. Otherwise, if automatic
7873         #         publication is switched on, default value is used for result name.
7874         #
7875         #  @note This algorithm doesn't find all types of self-intersections.
7876         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7877         #        vertex/face and edge/face intersections. Face/face
7878         #        intersections detection is switched off as it is a
7879         #        time-consuming operation that gives an impact on performance.
7880         #        To find all self-intersections please use
7881         #        CheckSelfIntersections() method.
7882         #
7883         #  @return New GEOM.GEOM_Object, containing the result shape.
7884         #
7885         #  @ref tui_common "Example 1"
7886         #  \n @ref swig_MakeCommon "Example 2"
7887         @ManageTransactions("BoolOp")
7888         def MakeCommonList(self, theShapesList, checkSelfInte=False, theName=None):
7889             """
7890             Perform Common boolean operation on the list of shapes.
7891
7892             Parameters:
7893                 theShapesList Shapes for Common operation.
7894                 checkSelfInte The flag that tells if the arguments should
7895                               be checked for self-intersection prior to
7896                               the operation.
7897                 theName Object name; when specified, this parameter is used
7898                         for result publication in the study. Otherwise, if automatic
7899                         publication is switched on, default value is used for result name.
7900
7901             Note:
7902                     This algorithm doesn't find all types of self-intersections.
7903                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7904                     vertex/face and edge/face intersections. Face/face
7905                     intersections detection is switched off as it is a
7906                     time-consuming operation that gives an impact on performance.
7907                     To find all self-intersections please use
7908                     CheckSelfIntersections() method.
7909
7910             Returns:
7911                 New GEOM.GEOM_Object, containing the result shape.
7912
7913             """
7914             # Example: see GEOM_TestOthers.py
7915             anObj = self.BoolOp.MakeCommonList(theShapesList, checkSelfInte)
7916             RaiseIfFailed("MakeCommonList", self.BoolOp)
7917             self._autoPublish(anObj, theName, "common")
7918             return anObj
7919
7920         ## Perform Cut boolean operation on one object and the list of tools.
7921         #  @param theMainShape The object of the operation.
7922         #  @param theShapesList The list of tools of the operation.
7923         #  @param checkSelfInte The flag that tells if the arguments should
7924         #         be checked for self-intersection prior to the operation.
7925         #  @param theName Object name; when specified, this parameter is used
7926         #         for result publication in the study. Otherwise, if automatic
7927         #         publication is switched on, default value is used for result name.
7928         #
7929         #  @note This algorithm doesn't find all types of self-intersections.
7930         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7931         #        vertex/face and edge/face intersections. Face/face
7932         #        intersections detection is switched off as it is a
7933         #        time-consuming operation that gives an impact on performance.
7934         #        To find all self-intersections please use
7935         #        CheckSelfIntersections() method.
7936         #
7937         #  @return New GEOM.GEOM_Object, containing the result shape.
7938         #
7939         #  @ref tui_cut "Example 1"
7940         #  \n @ref swig_MakeCommon "Example 2"
7941         @ManageTransactions("BoolOp")
7942         def MakeCutList(self, theMainShape, theShapesList, checkSelfInte=False, theName=None):
7943             """
7944             Perform Cut boolean operation on one object and the list of tools.
7945
7946             Parameters:
7947                 theMainShape The object of the operation.
7948                 theShapesList The list of tools of the operation.
7949                 checkSelfInte The flag that tells if the arguments should
7950                               be checked for self-intersection prior to
7951                               the operation.
7952                 theName Object name; when specified, this parameter is used
7953                         for result publication in the study. Otherwise, if automatic
7954                         publication is switched on, default value is used for result name.
7955
7956             Note:
7957                     This algorithm doesn't find all types of self-intersections.
7958                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7959                     vertex/face and edge/face intersections. Face/face
7960                     intersections detection is switched off as it is a
7961                     time-consuming operation that gives an impact on performance.
7962                     To find all self-intersections please use
7963                     CheckSelfIntersections() method.
7964
7965             Returns:
7966                 New GEOM.GEOM_Object, containing the result shape.
7967
7968             """
7969             # Example: see GEOM_TestOthers.py
7970             anObj = self.BoolOp.MakeCutList(theMainShape, theShapesList, checkSelfInte)
7971             RaiseIfFailed("MakeCutList", self.BoolOp)
7972             self._autoPublish(anObj, theName, "cut")
7973             return anObj
7974
7975         # end of l3_boolean
7976         ## @}
7977
7978         ## @addtogroup l3_basic_op
7979         ## @{
7980
7981         ## Perform partition operation.
7982         #  @param ListShapes Shapes to be intersected.
7983         #  @param ListTools Shapes to intersect theShapes.
7984         #  @param Limit Type of resulting shapes (see ShapeType()).\n
7985         #         If this parameter is set to -1 ("Auto"), most appropriate shape limit
7986         #         type will be detected automatically.
7987         #  @param KeepNonlimitShapes if this parameter == 0, then only shapes of
7988         #                             target type (equal to Limit) are kept in the result,
7989         #                             else standalone shapes of lower dimension
7990         #                             are kept also (if they exist).
7991         #
7992         #  @param theName Object name; when specified, this parameter is used
7993         #         for result publication in the study. Otherwise, if automatic
7994         #         publication is switched on, default value is used for result name.
7995         #
7996         #  @note Each compound from ListShapes and ListTools will be exploded
7997         #        in order to avoid possible intersection between shapes from this compound.
7998         #
7999         #  After implementation new version of PartitionAlgo (October 2006)
8000         #  other parameters are ignored by current functionality. They are kept
8001         #  in this function only for support old versions.
8002         #      @param ListKeepInside Shapes, outside which the results will be deleted.
8003         #         Each shape from theKeepInside must belong to theShapes also.
8004         #      @param ListRemoveInside Shapes, inside which the results will be deleted.
8005         #         Each shape from theRemoveInside must belong to theShapes also.
8006         #      @param RemoveWebs If TRUE, perform Glue 3D algorithm.
8007         #      @param ListMaterials Material indices for each shape. Make sence,
8008         #         only if theRemoveWebs is TRUE.
8009         #
8010         #  @return New GEOM.GEOM_Object, containing the result shapes.
8011         #
8012         #  @ref tui_partition "Example"
8013         @ManageTransactions("BoolOp")
8014         def MakePartition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
8015                           Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[],
8016                           KeepNonlimitShapes=0, theName=None):
8017             """
8018             Perform partition operation.
8019
8020             Parameters:
8021                 ListShapes Shapes to be intersected.
8022                 ListTools Shapes to intersect theShapes.
8023                 Limit Type of resulting shapes (see geompy.ShapeType)
8024                       If this parameter is set to -1 ("Auto"), most appropriate shape limit
8025                       type will be detected automatically.
8026                 KeepNonlimitShapes if this parameter == 0, then only shapes of
8027                                     target type (equal to Limit) are kept in the result,
8028                                     else standalone shapes of lower dimension
8029                                     are kept also (if they exist).
8030
8031                 theName Object name; when specified, this parameter is used
8032                         for result publication in the study. Otherwise, if automatic
8033                         publication is switched on, default value is used for result name.
8034             Note:
8035                     Each compound from ListShapes and ListTools will be exploded
8036                     in order to avoid possible intersection between shapes from
8037                     this compound.
8038
8039             After implementation new version of PartitionAlgo (October 2006) other
8040             parameters are ignored by current functionality. They are kept in this
8041             function only for support old versions.
8042
8043             Ignored parameters:
8044                 ListKeepInside Shapes, outside which the results will be deleted.
8045                                Each shape from theKeepInside must belong to theShapes also.
8046                 ListRemoveInside Shapes, inside which the results will be deleted.
8047                                  Each shape from theRemoveInside must belong to theShapes also.
8048                 RemoveWebs If TRUE, perform Glue 3D algorithm.
8049                 ListMaterials Material indices for each shape. Make sence, only if theRemoveWebs is TRUE.
8050
8051             Returns:
8052                 New GEOM.GEOM_Object, containing the result shapes.
8053             """
8054             # Example: see GEOM_TestAll.py
8055             if Limit == self.ShapeType["AUTO"]:
8056                 # automatic detection of the most appropriate shape limit type
8057                 lim = GEOM.SHAPE
8058                 for s in ListShapes: lim = min( lim, s.GetMaxShapeType() )
8059                 Limit = EnumToLong(lim)
8060                 pass
8061             anObj = self.BoolOp.MakePartition(ListShapes, ListTools,
8062                                               ListKeepInside, ListRemoveInside,
8063                                               Limit, RemoveWebs, ListMaterials,
8064                                               KeepNonlimitShapes);
8065             RaiseIfFailed("MakePartition", self.BoolOp)
8066             self._autoPublish(anObj, theName, "partition")
8067             return anObj
8068
8069         ## Perform partition operation.
8070         #  This method may be useful if it is needed to make a partition for
8071         #  compound contains nonintersected shapes. Performance will be better
8072         #  since intersection between shapes from compound is not performed.
8073         #
8074         #  Description of all parameters as in previous method MakePartition().
8075         #  One additional parameter is provided:
8076         #  @param checkSelfInte The flag that tells if the arguments should
8077         #         be checked for self-intersection prior to the operation.
8078         #
8079         #  @note This algorithm doesn't find all types of self-intersections.
8080         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8081         #        vertex/face and edge/face intersections. Face/face
8082         #        intersections detection is switched off as it is a
8083         #        time-consuming operation that gives an impact on performance.
8084         #        To find all self-intersections please use
8085         #        CheckSelfIntersections() method.
8086         #
8087         #  @note Passed compounds (via ListShapes or via ListTools)
8088         #           have to consist of nonintersecting shapes.
8089         #
8090         #  @return New GEOM.GEOM_Object, containing the result shapes.
8091         #
8092         #  @ref swig_todo "Example"
8093         @ManageTransactions("BoolOp")
8094         def MakePartitionNonSelfIntersectedShape(self, ListShapes, ListTools=[],
8095                                                  ListKeepInside=[], ListRemoveInside=[],
8096                                                  Limit=ShapeType["AUTO"], RemoveWebs=0,
8097                                                  ListMaterials=[], KeepNonlimitShapes=0,
8098                                                  checkSelfInte=False, theName=None):
8099             """
8100             Perform partition operation.
8101             This method may be useful if it is needed to make a partition for
8102             compound contains nonintersected shapes. Performance will be better
8103             since intersection between shapes from compound is not performed.
8104
8105             Parameters:
8106                 Description of all parameters as in method geompy.MakePartition.
8107                 One additional parameter is provided:
8108                 checkSelfInte The flag that tells if the arguments should
8109                               be checked for self-intersection prior to
8110                               the operation.
8111
8112             Note:
8113                     This algorithm doesn't find all types of self-intersections.
8114                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8115                     vertex/face and edge/face intersections. Face/face
8116                     intersections detection is switched off as it is a
8117                     time-consuming operation that gives an impact on performance.
8118                     To find all self-intersections please use
8119                     CheckSelfIntersections() method.
8120
8121             NOTE:
8122                 Passed compounds (via ListShapes or via ListTools)
8123                 have to consist of nonintersecting shapes.
8124
8125             Returns:
8126                 New GEOM.GEOM_Object, containing the result shapes.
8127             """
8128             if Limit == self.ShapeType["AUTO"]:
8129                 # automatic detection of the most appropriate shape limit type
8130                 lim = GEOM.SHAPE
8131                 for s in ListShapes: lim = min( lim, s.GetMaxShapeType() )
8132                 Limit = EnumToLong(lim)
8133                 pass
8134             anObj = self.BoolOp.MakePartitionNonSelfIntersectedShape(ListShapes, ListTools,
8135                                                                      ListKeepInside, ListRemoveInside,
8136                                                                      Limit, RemoveWebs, ListMaterials,
8137                                                                      KeepNonlimitShapes, checkSelfInte);
8138             RaiseIfFailed("MakePartitionNonSelfIntersectedShape", self.BoolOp)
8139             self._autoPublish(anObj, theName, "partition")
8140             return anObj
8141
8142         ## See method MakePartition() for more information.
8143         #
8144         #  @ref tui_partition "Example 1"
8145         #  \n @ref swig_Partition "Example 2"
8146         def Partition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
8147                       Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[],
8148                       KeepNonlimitShapes=0, theName=None):
8149             """
8150             See method geompy.MakePartition for more information.
8151             """
8152             # Example: see GEOM_TestOthers.py
8153             # note: auto-publishing is done in self.MakePartition()
8154             anObj = self.MakePartition(ListShapes, ListTools,
8155                                        ListKeepInside, ListRemoveInside,
8156                                        Limit, RemoveWebs, ListMaterials,
8157                                        KeepNonlimitShapes, theName);
8158             return anObj
8159
8160         ## Perform partition of the Shape with the Plane
8161         #  @param theShape Shape to be intersected.
8162         #  @param thePlane Tool shape, to intersect theShape.
8163         #  @param theName Object name; when specified, this parameter is used
8164         #         for result publication in the study. Otherwise, if automatic
8165         #         publication is switched on, default value is used for result name.
8166         #
8167         #  @return New GEOM.GEOM_Object, containing the result shape.
8168         #
8169         #  @note This operation is a shortcut to the more general @ref MakePartition
8170         #  operation, where @a theShape specifies single "object" (shape being partitioned)
8171         #  and @a thePlane specifies single "tool" (intersector shape). Other parameters of
8172         #  @ref MakePartition operation have default values:
8173         #  - @a Limit: GEOM::SHAPE (shape limit corresponds to the type of @a theShape)
8174         #  - @a KeepNonlimitShapes: 0
8175         #  - @a KeepInside, @a RemoveInside, @a RemoveWebs,
8176         #    @a Materials (obsolete parameters): empty
8177         #
8178         #  @note I.e. the following two operations are equivalent:
8179         #  @code
8180         #  Result = geompy.MakeHalfPartition(Object, Plane)
8181         #  Result = geompy.MakePartition([Object], [Plane])
8182         #  @endcode
8183         #
8184         #  @sa MakePartition, MakePartitionNonSelfIntersectedShape
8185         #
8186         #  @ref tui_partition "Example"
8187         @ManageTransactions("BoolOp")
8188         def MakeHalfPartition(self, theShape, thePlane, theName=None):
8189             """
8190             Perform partition of the Shape with the Plane
8191
8192             Parameters:
8193                 theShape Shape to be intersected.
8194                 thePlane Tool shape, to intersect theShape.
8195                 theName Object name; when specified, this parameter is used
8196                         for result publication in the study. Otherwise, if automatic
8197                         publication is switched on, default value is used for result name.
8198
8199             Returns:
8200                 New GEOM.GEOM_Object, containing the result shape.
8201          
8202             Note: This operation is a shortcut to the more general MakePartition
8203             operation, where theShape specifies single "object" (shape being partitioned)
8204             and thePlane specifies single "tool" (intersector shape). Other parameters of
8205             MakePartition operation have default values:
8206             - Limit: GEOM::SHAPE (shape limit corresponds to the type of theShape)
8207             - KeepNonlimitShapes: 0
8208             - KeepInside, RemoveInside, RemoveWebs, Materials (obsolete parameters): empty
8209          
8210             I.e. the following two operations are equivalent:
8211               Result = geompy.MakeHalfPartition(Object, Plane)
8212               Result = geompy.MakePartition([Object], [Plane])
8213             """
8214             # Example: see GEOM_TestAll.py
8215             anObj = self.BoolOp.MakeHalfPartition(theShape, thePlane)
8216             RaiseIfFailed("MakeHalfPartition", self.BoolOp)
8217             self._autoPublish(anObj, theName, "partition")
8218             return anObj
8219
8220         # end of l3_basic_op
8221         ## @}
8222
8223         ## @addtogroup l3_transform
8224         ## @{
8225
8226         ## Translate the given object along the vector, specified
8227         #  by its end points.
8228         #  @param theObject The object to be translated.
8229         #  @param thePoint1 Start point of translation vector.
8230         #  @param thePoint2 End point of translation vector.
8231         #  @param theCopy Flag used to translate object itself or create a copy.
8232         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8233         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8234         @ManageTransactions("TrsfOp")
8235         def TranslateTwoPoints(self, theObject, thePoint1, thePoint2, theCopy=False):
8236             """
8237             Translate the given object along the vector, specified by its end points.
8238
8239             Parameters:
8240                 theObject The object to be translated.
8241                 thePoint1 Start point of translation vector.
8242                 thePoint2 End point of translation vector.
8243                 theCopy Flag used to translate object itself or create a copy.
8244
8245             Returns:
8246                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8247                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8248             """
8249             if theCopy:
8250                 anObj = self.TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
8251             else:
8252                 anObj = self.TrsfOp.TranslateTwoPoints(theObject, thePoint1, thePoint2)
8253             RaiseIfFailed("TranslateTwoPoints", self.TrsfOp)
8254             return anObj
8255
8256         ## Translate the given object along the vector, specified
8257         #  by its end points, creating its copy before the translation.
8258         #  @param theObject The object to be translated.
8259         #  @param thePoint1 Start point of translation vector.
8260         #  @param thePoint2 End point of translation vector.
8261         #  @param theName Object name; when specified, this parameter is used
8262         #         for result publication in the study. Otherwise, if automatic
8263         #         publication is switched on, default value is used for result name.
8264         #
8265         #  @return New GEOM.GEOM_Object, containing the translated object.
8266         #
8267         #  @ref tui_translation "Example 1"
8268         #  \n @ref swig_MakeTranslationTwoPoints "Example 2"
8269         @ManageTransactions("TrsfOp")
8270         def MakeTranslationTwoPoints(self, theObject, thePoint1, thePoint2, theName=None):
8271             """
8272             Translate the given object along the vector, specified
8273             by its end points, creating its copy before the translation.
8274
8275             Parameters:
8276                 theObject The object to be translated.
8277                 thePoint1 Start point of translation vector.
8278                 thePoint2 End point of translation vector.
8279                 theName Object name; when specified, this parameter is used
8280                         for result publication in the study. Otherwise, if automatic
8281                         publication is switched on, default value is used for result name.
8282
8283             Returns:
8284                 New GEOM.GEOM_Object, containing the translated object.
8285             """
8286             # Example: see GEOM_TestAll.py
8287             anObj = self.TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
8288             RaiseIfFailed("TranslateTwoPointsCopy", self.TrsfOp)
8289             self._autoPublish(anObj, theName, "translated")
8290             return anObj
8291
8292         ## Translate the given object along the vector, specified by its components.
8293         #  @param theObject The object to be translated.
8294         #  @param theDX,theDY,theDZ Components of translation vector.
8295         #  @param theCopy Flag used to translate object itself or create a copy.
8296         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8297         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8298         #
8299         #  @ref tui_translation "Example"
8300         @ManageTransactions("TrsfOp")
8301         def TranslateDXDYDZ(self, theObject, theDX, theDY, theDZ, theCopy=False):
8302             """
8303             Translate the given object along the vector, specified by its components.
8304
8305             Parameters:
8306                 theObject The object to be translated.
8307                 theDX,theDY,theDZ Components of translation vector.
8308                 theCopy Flag used to translate object itself or create a copy.
8309
8310             Returns:
8311                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8312                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8313             """
8314             # Example: see GEOM_TestAll.py
8315             theDX, theDY, theDZ, Parameters = ParseParameters(theDX, theDY, theDZ)
8316             if theCopy:
8317                 anObj = self.TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
8318             else:
8319                 anObj = self.TrsfOp.TranslateDXDYDZ(theObject, theDX, theDY, theDZ)
8320             anObj.SetParameters(Parameters)
8321             RaiseIfFailed("TranslateDXDYDZ", self.TrsfOp)
8322             return anObj
8323
8324         ## Translate the given object along the vector, specified
8325         #  by its components, creating its copy before the translation.
8326         #  @param theObject The object to be translated.
8327         #  @param theDX,theDY,theDZ Components of translation vector.
8328         #  @param theName Object name; when specified, this parameter is used
8329         #         for result publication in the study. Otherwise, if automatic
8330         #         publication is switched on, default value is used for result name.
8331         #
8332         #  @return New GEOM.GEOM_Object, containing the translated object.
8333         #
8334         #  @ref tui_translation "Example"
8335         @ManageTransactions("TrsfOp")
8336         def MakeTranslation(self,theObject, theDX, theDY, theDZ, theName=None):
8337             """
8338             Translate the given object along the vector, specified
8339             by its components, creating its copy before the translation.
8340
8341             Parameters:
8342                 theObject The object to be translated.
8343                 theDX,theDY,theDZ Components of translation vector.
8344                 theName Object name; when specified, this parameter is used
8345                         for result publication in the study. Otherwise, if automatic
8346                         publication is switched on, default value is used for result name.
8347
8348             Returns:
8349                 New GEOM.GEOM_Object, containing the translated object.
8350             """
8351             # Example: see GEOM_TestAll.py
8352             theDX, theDY, theDZ, Parameters = ParseParameters(theDX, theDY, theDZ)
8353             anObj = self.TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
8354             anObj.SetParameters(Parameters)
8355             RaiseIfFailed("TranslateDXDYDZ", self.TrsfOp)
8356             self._autoPublish(anObj, theName, "translated")
8357             return anObj
8358
8359         ## Translate the given object along the given vector.
8360         #  @param theObject The object to be translated.
8361         #  @param theVector The translation vector.
8362         #  @param theCopy Flag used to translate object itself or create a copy.
8363         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8364         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8365         @ManageTransactions("TrsfOp")
8366         def TranslateVector(self, theObject, theVector, theCopy=False):
8367             """
8368             Translate the given object along the given vector.
8369
8370             Parameters:
8371                 theObject The object to be translated.
8372                 theVector The translation vector.
8373                 theCopy Flag used to translate object itself or create a copy.
8374
8375             Returns:
8376                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8377                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8378             """
8379             if theCopy:
8380                 anObj = self.TrsfOp.TranslateVectorCopy(theObject, theVector)
8381             else:
8382                 anObj = self.TrsfOp.TranslateVector(theObject, theVector)
8383             RaiseIfFailed("TranslateVector", self.TrsfOp)
8384             return anObj
8385
8386         ## Translate the given object along the given vector,
8387         #  creating its copy before the translation.
8388         #  @param theObject The object to be translated.
8389         #  @param theVector The translation vector.
8390         #  @param theName Object name; when specified, this parameter is used
8391         #         for result publication in the study. Otherwise, if automatic
8392         #         publication is switched on, default value is used for result name.
8393         #
8394         #  @return New GEOM.GEOM_Object, containing the translated object.
8395         #
8396         #  @ref tui_translation "Example"
8397         @ManageTransactions("TrsfOp")
8398         def MakeTranslationVector(self, theObject, theVector, theName=None):
8399             """
8400             Translate the given object along the given vector,
8401             creating its copy before the translation.
8402
8403             Parameters:
8404                 theObject The object to be translated.
8405                 theVector The translation vector.
8406                 theName Object name; when specified, this parameter is used
8407                         for result publication in the study. Otherwise, if automatic
8408                         publication is switched on, default value is used for result name.
8409
8410             Returns:
8411                 New GEOM.GEOM_Object, containing the translated object.
8412             """
8413             # Example: see GEOM_TestAll.py
8414             anObj = self.TrsfOp.TranslateVectorCopy(theObject, theVector)
8415             RaiseIfFailed("TranslateVectorCopy", self.TrsfOp)
8416             self._autoPublish(anObj, theName, "translated")
8417             return anObj
8418
8419         ## Translate the given object along the given vector on given distance.
8420         #  @param theObject The object to be translated.
8421         #  @param theVector The translation vector.
8422         #  @param theDistance The translation distance.
8423         #  @param theCopy Flag used to translate object itself or create a copy.
8424         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8425         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8426         #
8427         #  @ref tui_translation "Example"
8428         @ManageTransactions("TrsfOp")
8429         def TranslateVectorDistance(self, theObject, theVector, theDistance, theCopy=False):
8430             """
8431             Translate the given object along the given vector on given distance.
8432
8433             Parameters:
8434                 theObject The object to be translated.
8435                 theVector The translation vector.
8436                 theDistance The translation distance.
8437                 theCopy Flag used to translate object itself or create a copy.
8438
8439             Returns:
8440                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8441                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8442             """
8443             # Example: see GEOM_TestAll.py
8444             theDistance,Parameters = ParseParameters(theDistance)
8445             anObj = self.TrsfOp.TranslateVectorDistance(theObject, theVector, theDistance, theCopy)
8446             RaiseIfFailed("TranslateVectorDistance", self.TrsfOp)
8447             anObj.SetParameters(Parameters)
8448             return anObj
8449
8450         ## Translate the given object along the given vector on given distance,
8451         #  creating its copy before the translation.
8452         #  @param theObject The object to be translated.
8453         #  @param theVector The translation vector.
8454         #  @param theDistance The translation distance.
8455         #  @param theName Object name; when specified, this parameter is used
8456         #         for result publication in the study. Otherwise, if automatic
8457         #         publication is switched on, default value is used for result name.
8458         #
8459         #  @return New GEOM.GEOM_Object, containing the translated object.
8460         #
8461         #  @ref tui_translation "Example"
8462         @ManageTransactions("TrsfOp")
8463         def MakeTranslationVectorDistance(self, theObject, theVector, theDistance, theName=None):
8464             """
8465             Translate the given object along the given vector on given distance,
8466             creating its copy before the translation.
8467
8468             Parameters:
8469                 theObject The object to be translated.
8470                 theVector The translation vector.
8471                 theDistance The translation distance.
8472                 theName Object name; when specified, this parameter is used
8473                         for result publication in the study. Otherwise, if automatic
8474                         publication is switched on, default value is used for result name.
8475
8476             Returns:
8477                 New GEOM.GEOM_Object, containing the translated object.
8478             """
8479             # Example: see GEOM_TestAll.py
8480             theDistance,Parameters = ParseParameters(theDistance)
8481             anObj = self.TrsfOp.TranslateVectorDistance(theObject, theVector, theDistance, 1)
8482             RaiseIfFailed("TranslateVectorDistance", self.TrsfOp)
8483             anObj.SetParameters(Parameters)
8484             self._autoPublish(anObj, theName, "translated")
8485             return anObj
8486
8487         ## Rotate the given object around the given axis on the given angle.
8488         #  @param theObject The object to be rotated.
8489         #  @param theAxis Rotation axis.
8490         #  @param theAngle Rotation angle in radians.
8491         #  @param theCopy Flag used to rotate object itself or create a copy.
8492         #
8493         #  @return Rotated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8494         #  new GEOM.GEOM_Object, containing the rotated object if @a theCopy flag is @c True.
8495         #
8496         #  @ref tui_rotation "Example"
8497         @ManageTransactions("TrsfOp")
8498         def Rotate(self, theObject, theAxis, theAngle, theCopy=False):
8499             """
8500             Rotate the given object around the given axis on the given angle.
8501
8502             Parameters:
8503                 theObject The object to be rotated.
8504                 theAxis Rotation axis.
8505                 theAngle Rotation angle in radians.
8506                 theCopy Flag used to rotate object itself or create a copy.
8507
8508             Returns:
8509                 Rotated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8510                 new GEOM.GEOM_Object, containing the rotated object if theCopy flag is True.
8511             """
8512             # Example: see GEOM_TestAll.py
8513             flag = False
8514             if isinstance(theAngle,str):
8515                 flag = True
8516             theAngle, Parameters = ParseParameters(theAngle)
8517             if flag:
8518                 theAngle = theAngle*math.pi/180.0
8519             if theCopy:
8520                 anObj = self.TrsfOp.RotateCopy(theObject, theAxis, theAngle)
8521             else:
8522                 anObj = self.TrsfOp.Rotate(theObject, theAxis, theAngle)
8523             RaiseIfFailed("Rotate", self.TrsfOp)
8524             anObj.SetParameters(Parameters)
8525             return anObj
8526
8527         ## Rotate the given object around the given axis
8528         #  on the given angle, creating its copy before the rotation.
8529         #  @param theObject The object to be rotated.
8530         #  @param theAxis Rotation axis.
8531         #  @param theAngle Rotation angle in radians.
8532         #  @param theName Object name; when specified, this parameter is used
8533         #         for result publication in the study. Otherwise, if automatic
8534         #         publication is switched on, default value is used for result name.
8535         #
8536         #  @return New GEOM.GEOM_Object, containing the rotated object.
8537         #
8538         #  @ref tui_rotation "Example"
8539         @ManageTransactions("TrsfOp")
8540         def MakeRotation(self, theObject, theAxis, theAngle, theName=None):
8541             """
8542             Rotate the given object around the given axis
8543             on the given angle, creating its copy before the rotatation.
8544
8545             Parameters:
8546                 theObject The object to be rotated.
8547                 theAxis Rotation axis.
8548                 theAngle Rotation angle in radians.
8549                 theName Object name; when specified, this parameter is used
8550                         for result publication in the study. Otherwise, if automatic
8551                         publication is switched on, default value is used for result name.
8552
8553             Returns:
8554                 New GEOM.GEOM_Object, containing the rotated object.
8555             """
8556             # Example: see GEOM_TestAll.py
8557             flag = False
8558             if isinstance(theAngle,str):
8559                 flag = True
8560             theAngle, Parameters = ParseParameters(theAngle)
8561             if flag:
8562                 theAngle = theAngle*math.pi/180.0
8563             anObj = self.TrsfOp.RotateCopy(theObject, theAxis, theAngle)
8564             RaiseIfFailed("RotateCopy", self.TrsfOp)
8565             anObj.SetParameters(Parameters)
8566             self._autoPublish(anObj, theName, "rotated")
8567             return anObj
8568
8569         ## Rotate given object around vector perpendicular to plane
8570         #  containing three points.
8571         #  @param theObject The object to be rotated.
8572         #  @param theCentPoint central point the axis is the vector perpendicular to the plane
8573         #  containing the three points.
8574         #  @param thePoint1,thePoint2 points in a perpendicular plane of the axis.
8575         #  @param theCopy Flag used to rotate object itself or create a copy.
8576         #  @return Rotated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8577         #  new GEOM.GEOM_Object, containing the rotated object if @a theCopy flag is @c True.
8578         @ManageTransactions("TrsfOp")
8579         def RotateThreePoints(self, theObject, theCentPoint, thePoint1, thePoint2, theCopy=False):
8580             """
8581             Rotate given object around vector perpendicular to plane
8582             containing three points.
8583
8584             Parameters:
8585                 theObject The object to be rotated.
8586                 theCentPoint central point  the axis is the vector perpendicular to the plane
8587                              containing the three points.
8588                 thePoint1,thePoint2 points in a perpendicular plane of the axis.
8589                 theCopy Flag used to rotate object itself or create a copy.
8590
8591             Returns:
8592                 Rotated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8593                 new GEOM.GEOM_Object, containing the rotated object if theCopy flag is True.
8594             """
8595             if theCopy:
8596                 anObj = self.TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
8597             else:
8598                 anObj = self.TrsfOp.RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2)
8599             RaiseIfFailed("RotateThreePoints", self.TrsfOp)
8600             return anObj
8601
8602         ## Rotate given object around vector perpendicular to plane
8603         #  containing three points, creating its copy before the rotatation.
8604         #  @param theObject The object to be rotated.
8605         #  @param theCentPoint central point the axis is the vector perpendicular to the plane
8606         #  containing the three points.
8607         #  @param thePoint1,thePoint2 in a perpendicular plane of the axis.
8608         #  @param theName Object name; when specified, this parameter is used
8609         #         for result publication in the study. Otherwise, if automatic
8610         #         publication is switched on, default value is used for result name.
8611         #
8612         #  @return New GEOM.GEOM_Object, containing the rotated object.
8613         #
8614         #  @ref tui_rotation "Example"
8615         @ManageTransactions("TrsfOp")
8616         def MakeRotationThreePoints(self, theObject, theCentPoint, thePoint1, thePoint2, theName=None):
8617             """
8618             Rotate given object around vector perpendicular to plane
8619             containing three points, creating its copy before the rotatation.
8620
8621             Parameters:
8622                 theObject The object to be rotated.
8623                 theCentPoint central point  the axis is the vector perpendicular to the plane
8624                              containing the three points.
8625                 thePoint1,thePoint2  in a perpendicular plane of the axis.
8626                 theName Object name; when specified, this parameter is used
8627                         for result publication in the study. Otherwise, if automatic
8628                         publication is switched on, default value is used for result name.
8629
8630             Returns:
8631                 New GEOM.GEOM_Object, containing the rotated object.
8632             """
8633             # Example: see GEOM_TestAll.py
8634             anObj = self.TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
8635             RaiseIfFailed("RotateThreePointsCopy", self.TrsfOp)
8636             self._autoPublish(anObj, theName, "rotated")
8637             return anObj
8638
8639         ## Scale the given object by the specified factor.
8640         #  @param theObject The object to be scaled.
8641         #  @param thePoint Center point for scaling.
8642         #                  Passing None for it means scaling relatively the origin of global CS.
8643         #  @param theFactor Scaling factor value.
8644         #  @param theCopy Flag used to scale object itself or create a copy.
8645         #  @return Scaled @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8646         #  new GEOM.GEOM_Object, containing the scaled object if @a theCopy flag is @c True.
8647         @ManageTransactions("TrsfOp")
8648         def Scale(self, theObject, thePoint, theFactor, theCopy=False):
8649             """
8650             Scale the given object by the specified factor.
8651
8652             Parameters:
8653                 theObject The object to be scaled.
8654                 thePoint Center point for scaling.
8655                          Passing None for it means scaling relatively the origin of global CS.
8656                 theFactor Scaling factor value.
8657                 theCopy Flag used to scale object itself or create a copy.
8658
8659             Returns:
8660                 Scaled theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8661                 new GEOM.GEOM_Object, containing the scaled object if theCopy flag is True.
8662             """
8663             # Example: see GEOM_TestAll.py
8664             theFactor, Parameters = ParseParameters(theFactor)
8665             if theCopy:
8666                 anObj = self.TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
8667             else:
8668                 anObj = self.TrsfOp.ScaleShape(theObject, thePoint, theFactor)
8669             RaiseIfFailed("Scale", self.TrsfOp)
8670             anObj.SetParameters(Parameters)
8671             return anObj
8672
8673         ## Scale the given object by the factor, creating its copy before the scaling.
8674         #  @param theObject The object to be scaled.
8675         #  @param thePoint Center point for scaling.
8676         #                  Passing None for it means scaling relatively the origin of global CS.
8677         #  @param theFactor Scaling factor value.
8678         #  @param theName Object name; when specified, this parameter is used
8679         #         for result publication in the study. Otherwise, if automatic
8680         #         publication is switched on, default value is used for result name.
8681         #
8682         #  @return New GEOM.GEOM_Object, containing the scaled shape.
8683         #
8684         #  @ref tui_scale "Example"
8685         @ManageTransactions("TrsfOp")
8686         def MakeScaleTransform(self, theObject, thePoint, theFactor, theName=None):
8687             """
8688             Scale the given object by the factor, creating its copy before the scaling.
8689
8690             Parameters:
8691                 theObject The object to be scaled.
8692                 thePoint Center point for scaling.
8693                          Passing None for it means scaling relatively the origin of global CS.
8694                 theFactor Scaling factor value.
8695                 theName Object name; when specified, this parameter is used
8696                         for result publication in the study. Otherwise, if automatic
8697                         publication is switched on, default value is used for result name.
8698
8699             Returns:
8700                 New GEOM.GEOM_Object, containing the scaled shape.
8701             """
8702             # Example: see GEOM_TestAll.py
8703             theFactor, Parameters = ParseParameters(theFactor)
8704             anObj = self.TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
8705             RaiseIfFailed("ScaleShapeCopy", self.TrsfOp)
8706             anObj.SetParameters(Parameters)
8707             self._autoPublish(anObj, theName, "scaled")
8708             return anObj
8709
8710         ## Scale the given object by different factors along coordinate axes.
8711         #  @param theObject The object to be scaled.
8712         #  @param thePoint Center point for scaling.
8713         #                  Passing None for it means scaling relatively the origin of global CS.
8714         #  @param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8715         #  @param theCopy Flag used to scale object itself or create a copy.
8716         #  @return Scaled @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8717         #  new GEOM.GEOM_Object, containing the scaled object if @a theCopy flag is @c True.
8718         @ManageTransactions("TrsfOp")
8719         def ScaleAlongAxes(self, theObject, thePoint, theFactorX, theFactorY, theFactorZ, theCopy=False):
8720             """
8721             Scale the given object by different factors along coordinate axes.
8722
8723             Parameters:
8724                 theObject The object to be scaled.
8725                 thePoint Center point for scaling.
8726                             Passing None for it means scaling relatively the origin of global CS.
8727                 theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8728                 theCopy Flag used to scale object itself or create a copy.
8729
8730             Returns:
8731                 Scaled theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8732                 new GEOM.GEOM_Object, containing the scaled object if theCopy flag is True.
8733             """
8734             # Example: see GEOM_TestAll.py
8735             theFactorX, theFactorY, theFactorZ, Parameters = ParseParameters(theFactorX, theFactorY, theFactorZ)
8736             if theCopy:
8737                 anObj = self.TrsfOp.ScaleShapeAlongAxesCopy(theObject, thePoint,
8738                                                             theFactorX, theFactorY, theFactorZ)
8739             else:
8740                 anObj = self.TrsfOp.ScaleShapeAlongAxes(theObject, thePoint,
8741                                                         theFactorX, theFactorY, theFactorZ)
8742             RaiseIfFailed("ScaleAlongAxes", self.TrsfOp)
8743             anObj.SetParameters(Parameters)
8744             return anObj
8745
8746         ## Scale the given object by different factors along coordinate axes,
8747         #  creating its copy before the scaling.
8748         #  @param theObject The object to be scaled.
8749         #  @param thePoint Center point for scaling.
8750         #                  Passing None for it means scaling relatively the origin of global CS.
8751         #  @param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8752         #  @param theName Object name; when specified, this parameter is used
8753         #         for result publication in the study. Otherwise, if automatic
8754         #         publication is switched on, default value is used for result name.
8755         #
8756         #  @return New GEOM.GEOM_Object, containing the scaled shape.
8757         #
8758         #  @ref swig_scale "Example"
8759         @ManageTransactions("TrsfOp")
8760         def MakeScaleAlongAxes(self, theObject, thePoint, theFactorX, theFactorY, theFactorZ, theName=None):
8761             """
8762             Scale the given object by different factors along coordinate axes,
8763             creating its copy before the scaling.
8764
8765             Parameters:
8766                 theObject The object to be scaled.
8767                 thePoint Center point for scaling.
8768                             Passing None for it means scaling relatively the origin of global CS.
8769                 theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8770                 theName Object name; when specified, this parameter is used
8771                         for result publication in the study. Otherwise, if automatic
8772                         publication is switched on, default value is used for result name.
8773
8774             Returns:
8775                 New GEOM.GEOM_Object, containing the scaled shape.
8776             """
8777             # Example: see GEOM_TestAll.py
8778             theFactorX, theFactorY, theFactorZ, Parameters = ParseParameters(theFactorX, theFactorY, theFactorZ)
8779             anObj = self.TrsfOp.ScaleShapeAlongAxesCopy(theObject, thePoint,
8780                                                         theFactorX, theFactorY, theFactorZ)
8781             RaiseIfFailed("MakeScaleAlongAxes", self.TrsfOp)
8782             anObj.SetParameters(Parameters)
8783             self._autoPublish(anObj, theName, "scaled")
8784             return anObj
8785
8786         ## Mirror an object relatively the given plane.
8787         #  @param theObject The object to be mirrored.
8788         #  @param thePlane Plane of symmetry.
8789         #  @param theCopy Flag used to mirror object itself or create a copy.
8790         #  @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8791         #  new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
8792         @ManageTransactions("TrsfOp")
8793         def MirrorByPlane(self, theObject, thePlane, theCopy=False):
8794             """
8795             Mirror an object relatively the given plane.
8796
8797             Parameters:
8798                 theObject The object to be mirrored.
8799                 thePlane Plane of symmetry.
8800                 theCopy Flag used to mirror object itself or create a copy.
8801
8802             Returns:
8803                 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8804                 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
8805             """
8806             if theCopy:
8807                 anObj = self.TrsfOp.MirrorPlaneCopy(theObject, thePlane)
8808             else:
8809                 anObj = self.TrsfOp.MirrorPlane(theObject, thePlane)
8810             RaiseIfFailed("MirrorByPlane", self.TrsfOp)
8811             return anObj
8812
8813         ## Create an object, symmetrical
8814         #  to the given one relatively the given plane.
8815         #  @param theObject The object to be mirrored.
8816         #  @param thePlane Plane of symmetry.
8817         #  @param theName Object name; when specified, this parameter is used
8818         #         for result publication in the study. Otherwise, if automatic
8819         #         publication is switched on, default value is used for result name.
8820         #
8821         #  @return New GEOM.GEOM_Object, containing the mirrored shape.
8822         #
8823         #  @ref tui_mirror "Example"
8824         @ManageTransactions("TrsfOp")
8825         def MakeMirrorByPlane(self, theObject, thePlane, theName=None):
8826             """
8827             Create an object, symmetrical to the given one relatively the given plane.
8828
8829             Parameters:
8830                 theObject The object to be mirrored.
8831                 thePlane Plane of symmetry.
8832                 theName Object name; when specified, this parameter is used
8833                         for result publication in the study. Otherwise, if automatic
8834                         publication is switched on, default value is used for result name.
8835
8836             Returns:
8837                 New GEOM.GEOM_Object, containing the mirrored shape.
8838             """
8839             # Example: see GEOM_TestAll.py
8840             anObj = self.TrsfOp.MirrorPlaneCopy(theObject, thePlane)
8841             RaiseIfFailed("MirrorPlaneCopy", self.TrsfOp)
8842             self._autoPublish(anObj, theName, "mirrored")
8843             return anObj
8844
8845         ## Mirror an object relatively the given axis.
8846         #  @param theObject The object to be mirrored.
8847         #  @param theAxis Axis of symmetry.
8848         #  @param theCopy Flag used to mirror object itself or create a copy.
8849         #  @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8850         #  new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
8851         @ManageTransactions("TrsfOp")
8852         def MirrorByAxis(self, theObject, theAxis, theCopy=False):
8853             """
8854             Mirror an object relatively the given axis.
8855
8856             Parameters:
8857                 theObject The object to be mirrored.
8858                 theAxis Axis of symmetry.
8859                 theCopy Flag used to mirror object itself or create a copy.
8860
8861             Returns:
8862                 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8863                 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
8864             """
8865             if theCopy:
8866                 anObj = self.TrsfOp.MirrorAxisCopy(theObject, theAxis)
8867             else:
8868                 anObj = self.TrsfOp.MirrorAxis(theObject, theAxis)
8869             RaiseIfFailed("MirrorByAxis", self.TrsfOp)
8870             return anObj
8871
8872         ## Create an object, symmetrical
8873         #  to the given one relatively the given axis.
8874         #  @param theObject The object to be mirrored.
8875         #  @param theAxis Axis of symmetry.
8876         #  @param theName Object name; when specified, this parameter is used
8877         #         for result publication in the study. Otherwise, if automatic
8878         #         publication is switched on, default value is used for result name.
8879         #
8880         #  @return New GEOM.GEOM_Object, containing the mirrored shape.
8881         #
8882         #  @ref tui_mirror "Example"
8883         @ManageTransactions("TrsfOp")
8884         def MakeMirrorByAxis(self, theObject, theAxis, theName=None):
8885             """
8886             Create an object, symmetrical to the given one relatively the given axis.
8887
8888             Parameters:
8889                 theObject The object to be mirrored.
8890                 theAxis Axis of symmetry.
8891                 theName Object name; when specified, this parameter is used
8892                         for result publication in the study. Otherwise, if automatic
8893                         publication is switched on, default value is used for result name.
8894
8895             Returns:
8896                 New GEOM.GEOM_Object, containing the mirrored shape.
8897             """
8898             # Example: see GEOM_TestAll.py
8899             anObj = self.TrsfOp.MirrorAxisCopy(theObject, theAxis)
8900             RaiseIfFailed("MirrorAxisCopy", self.TrsfOp)
8901             self._autoPublish(anObj, theName, "mirrored")
8902             return anObj
8903
8904         ## Mirror an object relatively the given point.
8905         #  @param theObject The object to be mirrored.
8906         #  @param thePoint Point of symmetry.
8907         #  @param theCopy Flag used to mirror object itself or create a copy.
8908         #  @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8909         #  new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
8910         @ManageTransactions("TrsfOp")
8911         def MirrorByPoint(self, theObject, thePoint, theCopy=False):
8912             """
8913             Mirror an object relatively the given point.
8914
8915             Parameters:
8916                 theObject The object to be mirrored.
8917                 thePoint Point of symmetry.
8918                 theCopy Flag used to mirror object itself or create a copy.
8919
8920             Returns:
8921                 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8922                 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
8923             """
8924             # Example: see GEOM_TestAll.py
8925             if theCopy:
8926                 anObj = self.TrsfOp.MirrorPointCopy(theObject, thePoint)
8927             else:
8928                 anObj = self.TrsfOp.MirrorPoint(theObject, thePoint)
8929             RaiseIfFailed("MirrorByPoint", self.TrsfOp)
8930             return anObj
8931
8932         ## Create an object, symmetrical
8933         #  to the given one relatively the given point.
8934         #  @param theObject The object to be mirrored.
8935         #  @param thePoint Point of symmetry.
8936         #  @param theName Object name; when specified, this parameter is used
8937         #         for result publication in the study. Otherwise, if automatic
8938         #         publication is switched on, default value is used for result name.
8939         #
8940         #  @return New GEOM.GEOM_Object, containing the mirrored shape.
8941         #
8942         #  @ref tui_mirror "Example"
8943         @ManageTransactions("TrsfOp")
8944         def MakeMirrorByPoint(self, theObject, thePoint, theName=None):
8945             """
8946             Create an object, symmetrical
8947             to the given one relatively the given point.
8948
8949             Parameters:
8950                 theObject The object to be mirrored.
8951                 thePoint Point of symmetry.
8952                 theName Object name; when specified, this parameter is used
8953                         for result publication in the study. Otherwise, if automatic
8954                         publication is switched on, default value is used for result name.
8955
8956             Returns:
8957                 New GEOM.GEOM_Object, containing the mirrored shape.
8958             """
8959             # Example: see GEOM_TestAll.py
8960             anObj = self.TrsfOp.MirrorPointCopy(theObject, thePoint)
8961             RaiseIfFailed("MirrorPointCopy", self.TrsfOp)
8962             self._autoPublish(anObj, theName, "mirrored")
8963             return anObj
8964
8965         ## Modify the location of the given object.
8966         #  @param theObject The object to be displaced.
8967         #  @param theStartLCS Coordinate system to perform displacement from it.\n
8968         #                     If \a theStartLCS is NULL, displacement
8969         #                     will be performed from global CS.\n
8970         #                     If \a theObject itself is used as \a theStartLCS,
8971         #                     its location will be changed to \a theEndLCS.
8972         #  @param theEndLCS Coordinate system to perform displacement to it.
8973         #  @param theCopy Flag used to displace object itself or create a copy.
8974         #  @return Displaced @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8975         #  new GEOM.GEOM_Object, containing the displaced object if @a theCopy flag is @c True.
8976         @ManageTransactions("TrsfOp")
8977         def Position(self, theObject, theStartLCS, theEndLCS, theCopy=False):
8978             """
8979             Modify the Location of the given object by LCS, creating its copy before the setting.
8980
8981             Parameters:
8982                 theObject The object to be displaced.
8983                 theStartLCS Coordinate system to perform displacement from it.
8984                             If theStartLCS is NULL, displacement
8985                             will be performed from global CS.
8986                             If theObject itself is used as theStartLCS,
8987                             its location will be changed to theEndLCS.
8988                 theEndLCS Coordinate system to perform displacement to it.
8989                 theCopy Flag used to displace object itself or create a copy.
8990
8991             Returns:
8992                 Displaced theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8993                 new GEOM.GEOM_Object, containing the displaced object if theCopy flag is True.
8994             """
8995             # Example: see GEOM_TestAll.py
8996             if theCopy:
8997                 anObj = self.TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
8998             else:
8999                 anObj = self.TrsfOp.PositionShape(theObject, theStartLCS, theEndLCS)
9000             RaiseIfFailed("Displace", self.TrsfOp)
9001             return anObj
9002
9003         ## Modify the Location of the given object by LCS,
9004         #  creating its copy before the setting.
9005         #  @param theObject The object to be displaced.
9006         #  @param theStartLCS Coordinate system to perform displacement from it.\n
9007         #                     If \a theStartLCS is NULL, displacement
9008         #                     will be performed from global CS.\n
9009         #                     If \a theObject itself is used as \a theStartLCS,
9010         #                     its location will be changed to \a theEndLCS.
9011         #  @param theEndLCS Coordinate system to perform displacement to it.
9012         #  @param theName Object name; when specified, this parameter is used
9013         #         for result publication in the study. Otherwise, if automatic
9014         #         publication is switched on, default value is used for result name.
9015         #
9016         #  @return New GEOM.GEOM_Object, containing the displaced shape.
9017         #
9018         #  @ref tui_modify_location "Example"
9019         @ManageTransactions("TrsfOp")
9020         def MakePosition(self, theObject, theStartLCS, theEndLCS, theName=None):
9021             """
9022             Modify the Location of the given object by LCS, creating its copy before the setting.
9023
9024             Parameters:
9025                 theObject The object to be displaced.
9026                 theStartLCS Coordinate system to perform displacement from it.
9027                             If theStartLCS is NULL, displacement
9028                             will be performed from global CS.
9029                             If theObject itself is used as theStartLCS,
9030                             its location will be changed to theEndLCS.
9031                 theEndLCS Coordinate system to perform displacement to it.
9032                 theName Object name; when specified, this parameter is used
9033                         for result publication in the study. Otherwise, if automatic
9034                         publication is switched on, default value is used for result name.
9035
9036             Returns:
9037                 New GEOM.GEOM_Object, containing the displaced shape.
9038
9039             Example of usage:
9040                 # create local coordinate systems
9041                 cs1 = geompy.MakeMarker( 0, 0, 0, 1,0,0, 0,1,0)
9042                 cs2 = geompy.MakeMarker(30,40,40, 1,0,0, 0,1,0)
9043                 # modify the location of the given object
9044                 position = geompy.MakePosition(cylinder, cs1, cs2)
9045             """
9046             # Example: see GEOM_TestAll.py
9047             anObj = self.TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
9048             RaiseIfFailed("PositionShapeCopy", self.TrsfOp)
9049             self._autoPublish(anObj, theName, "displaced")
9050             return anObj
9051
9052         ## Modify the Location of the given object by Path.
9053         #  @param  theObject The object to be displaced.
9054         #  @param  thePath Wire or Edge along that the object will be translated.
9055         #  @param  theDistance progress of Path (0 = start location, 1 = end of path location).
9056         #  @param  theCopy is to create a copy objects if true.
9057         #  @param  theReverse  0 - for usual direction, 1 - to reverse path direction.
9058         #  @return Displaced @a theObject (GEOM.GEOM_Object) if @a theCopy is @c False or
9059         #          new GEOM.GEOM_Object, containing the displaced shape if @a theCopy is @c True.
9060         #
9061         #  @ref tui_modify_location "Example"
9062         @ManageTransactions("TrsfOp")
9063         def PositionAlongPath(self,theObject, thePath, theDistance, theCopy, theReverse):
9064             """
9065             Modify the Location of the given object by Path.
9066
9067             Parameters:
9068                  theObject The object to be displaced.
9069                  thePath Wire or Edge along that the object will be translated.
9070                  theDistance progress of Path (0 = start location, 1 = end of path location).
9071                  theCopy is to create a copy objects if true.
9072                  theReverse  0 - for usual direction, 1 - to reverse path direction.
9073
9074             Returns:
9075                  Displaced theObject (GEOM.GEOM_Object) if theCopy is False or
9076                  new GEOM.GEOM_Object, containing the displaced shape if theCopy is True.
9077
9078             Example of usage:
9079                 position = geompy.PositionAlongPath(cylinder, circle, 0.75, 1, 1)
9080             """
9081             # Example: see GEOM_TestAll.py
9082             anObj = self.TrsfOp.PositionAlongPath(theObject, thePath, theDistance, theCopy, theReverse)
9083             RaiseIfFailed("PositionAlongPath", self.TrsfOp)
9084             return anObj
9085
9086         ## Modify the Location of the given object by Path, creating its copy before the operation.
9087         #  @param theObject The object to be displaced.
9088         #  @param thePath Wire or Edge along that the object will be translated.
9089         #  @param theDistance progress of Path (0 = start location, 1 = end of path location).
9090         #  @param theReverse  0 - for usual direction, 1 - to reverse path direction.
9091         #  @param theName Object name; when specified, this parameter is used
9092         #         for result publication in the study. Otherwise, if automatic
9093         #         publication is switched on, default value is used for result name.
9094         #
9095         #  @return New GEOM.GEOM_Object, containing the displaced shape.
9096         @ManageTransactions("TrsfOp")
9097         def MakePositionAlongPath(self, theObject, thePath, theDistance, theReverse, theName=None):
9098             """
9099             Modify the Location of the given object by Path, creating its copy before the operation.
9100
9101             Parameters:
9102                  theObject The object to be displaced.
9103                  thePath Wire or Edge along that the object will be translated.
9104                  theDistance progress of Path (0 = start location, 1 = end of path location).
9105                  theReverse  0 - for usual direction, 1 - to reverse path direction.
9106                  theName Object name; when specified, this parameter is used
9107                          for result publication in the study. Otherwise, if automatic
9108                          publication is switched on, default value is used for result name.
9109
9110             Returns:
9111                 New GEOM.GEOM_Object, containing the displaced shape.
9112             """
9113             # Example: see GEOM_TestAll.py
9114             anObj = self.TrsfOp.PositionAlongPath(theObject, thePath, theDistance, 1, theReverse)
9115             RaiseIfFailed("PositionAlongPath", self.TrsfOp)
9116             self._autoPublish(anObj, theName, "displaced")
9117             return anObj
9118
9119         ## Offset given shape.
9120         #  @param theObject The base object for the offset.
9121         #  @param theOffset Offset value.
9122         #  @param theCopy Flag used to offset object itself or create a copy.
9123         #  @return Modified @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9124         #  new GEOM.GEOM_Object, containing the result of offset operation if @a theCopy flag is @c True.
9125         @ManageTransactions("TrsfOp")
9126         def Offset(self, theObject, theOffset, theCopy=False):
9127             """
9128             Offset given shape.
9129
9130             Parameters:
9131                 theObject The base object for the offset.
9132                 theOffset Offset value.
9133                 theCopy Flag used to offset object itself or create a copy.
9134
9135             Returns:
9136                 Modified theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9137                 new GEOM.GEOM_Object, containing the result of offset operation if theCopy flag is True.
9138             """
9139             theOffset, Parameters = ParseParameters(theOffset)
9140             if theCopy:
9141                 anObj = self.TrsfOp.OffsetShapeCopy(theObject, theOffset)
9142             else:
9143                 anObj = self.TrsfOp.OffsetShape(theObject, theOffset)
9144             RaiseIfFailed("Offset", self.TrsfOp)
9145             anObj.SetParameters(Parameters)
9146             return anObj
9147
9148         ## Create new object as offset of the given one.
9149         #  @param theObject The base object for the offset.
9150         #  @param theOffset Offset value.
9151         #  @param theName Object name; when specified, this parameter is used
9152         #         for result publication in the study. Otherwise, if automatic
9153         #         publication is switched on, default value is used for result name.
9154         #
9155         #  @return New GEOM.GEOM_Object, containing the offset object.
9156         #
9157         #  @ref tui_offset "Example"
9158         @ManageTransactions("TrsfOp")
9159         def MakeOffset(self, theObject, theOffset, theName=None):
9160             """
9161             Create new object as offset of the given one.
9162
9163             Parameters:
9164                 theObject The base object for the offset.
9165                 theOffset Offset value.
9166                 theName Object name; when specified, this parameter is used
9167                         for result publication in the study. Otherwise, if automatic
9168                         publication is switched on, default value is used for result name.
9169
9170             Returns:
9171                 New GEOM.GEOM_Object, containing the offset object.
9172
9173             Example of usage:
9174                  box = geompy.MakeBox(20, 20, 20, 200, 200, 200)
9175                  # create a new object as offset of the given object
9176                  offset = geompy.MakeOffset(box, 70.)
9177             """
9178             # Example: see GEOM_TestAll.py
9179             theOffset, Parameters = ParseParameters(theOffset)
9180             anObj = self.TrsfOp.OffsetShapeCopy(theObject, theOffset)
9181             RaiseIfFailed("OffsetShapeCopy", self.TrsfOp)
9182             anObj.SetParameters(Parameters)
9183             self._autoPublish(anObj, theName, "offset")
9184             return anObj
9185
9186         ## Create new object as projection of the given one on another.
9187         #  @param theSource The source object for the projection. It can be a point, edge or wire.
9188         #         Edge and wire are acceptable if @a theTarget is a face.
9189         #  @param theTarget The target object. It can be planar or cylindrical face, edge or wire.
9190         #  @param theName Object name; when specified, this parameter is used
9191         #         for result publication in the study. Otherwise, if automatic
9192         #         publication is switched on, default value is used for result name.
9193         #
9194         #  @return New GEOM.GEOM_Object, containing the projection.
9195         #
9196         #  @ref tui_projection "Example"
9197         @ManageTransactions("TrsfOp")
9198         def MakeProjection(self, theSource, theTarget, theName=None):
9199             """
9200             Create new object as projection of the given one on another.
9201
9202             Parameters:
9203                 theSource The source object for the projection. It can be a point, edge or wire.
9204                           Edge and wire are acceptable if theTarget is a face.
9205                 theTarget The target object. It can be planar or cylindrical face, edge or wire.
9206                 theName Object name; when specified, this parameter is used
9207                         for result publication in the study. Otherwise, if automatic
9208                         publication is switched on, default value is used for result name.
9209
9210             Returns:
9211                 New GEOM.GEOM_Object, containing the projection.
9212             """
9213             # Example: see GEOM_TestAll.py
9214             anObj = self.TrsfOp.ProjectShapeCopy(theSource, theTarget)
9215             RaiseIfFailed("ProjectShapeCopy", self.TrsfOp)
9216             self._autoPublish(anObj, theName, "projection")
9217             return anObj
9218
9219         ## Create a projection of the given point on a wire or an edge.
9220         #  If there are no solutions or there are 2 or more solutions It throws an
9221         #  exception.
9222         #  @param thePoint the point to be projected.
9223         #  @param theWire the wire. The edge is accepted as well.
9224         #  @param theName Object name; when specified, this parameter is used
9225         #         for result publication in the study. Otherwise, if automatic
9226         #         publication is switched on, default value is used for result name.
9227         #
9228         #  @return [\a u, \a PointOnEdge, \a EdgeInWireIndex]
9229         #  \n \a u: The parameter of projection point on edge.
9230         #  \n \a PointOnEdge: The projection point.
9231         #  \n \a EdgeInWireIndex: The index of an edge in a wire.
9232         #
9233         #  @ref tui_projection "Example"
9234         @ManageTransactions("TrsfOp")
9235         def MakeProjectionOnWire(self, thePoint, theWire, theName=None):
9236             """
9237             Create a projection of the given point on a wire or an edge.
9238             If there are no solutions or there are 2 or more solutions It throws an
9239             exception.
9240
9241             Parameters:
9242                 thePoint the point to be projected.
9243                 theWire the wire. The edge is accepted as well.
9244                 theName Object name; when specified, this parameter is used
9245                         for result publication in the study. Otherwise, if automatic
9246                         publication is switched on, default value is used for result name.
9247
9248             Returns:
9249                 [u, PointOnEdge, EdgeInWireIndex]
9250                  u: The parameter of projection point on edge.
9251                  PointOnEdge: The projection point.
9252                  EdgeInWireIndex: The index of an edge in a wire.
9253             """
9254             # Example: see GEOM_TestAll.py
9255             anObj = self.TrsfOp.ProjectPointOnWire(thePoint, theWire)
9256             RaiseIfFailed("ProjectPointOnWire", self.TrsfOp)
9257             self._autoPublish(anObj[1], theName, "projection")
9258             return anObj
9259
9260         # -----------------------------------------------------------------------------
9261         # Patterns
9262         # -----------------------------------------------------------------------------
9263
9264         ## Translate the given object along the given vector a given number times
9265         #  @param theObject The object to be translated.
9266         #  @param theVector Direction of the translation. DX if None.
9267         #  @param theStep Distance to translate on.
9268         #  @param theNbTimes Quantity of translations to be done.
9269         #  @param theName Object name; when specified, this parameter is used
9270         #         for result publication in the study. Otherwise, if automatic
9271         #         publication is switched on, default value is used for result name.
9272         #
9273         #  @return New GEOM.GEOM_Object, containing compound of all
9274         #          the shapes, obtained after each translation.
9275         #
9276         #  @ref tui_multi_translation "Example"
9277         @ManageTransactions("TrsfOp")
9278         def MakeMultiTranslation1D(self, theObject, theVector, theStep, theNbTimes, theName=None):
9279             """
9280             Translate the given object along the given vector a given number times
9281
9282             Parameters:
9283                 theObject The object to be translated.
9284                 theVector Direction of the translation. DX if None.
9285                 theStep Distance to translate on.
9286                 theNbTimes Quantity of translations to be done.
9287                 theName Object name; when specified, this parameter is used
9288                         for result publication in the study. Otherwise, if automatic
9289                         publication is switched on, default value is used for result name.
9290
9291             Returns:
9292                 New GEOM.GEOM_Object, containing compound of all
9293                 the shapes, obtained after each translation.
9294
9295             Example of usage:
9296                 r1d = geompy.MakeMultiTranslation1D(prism, vect, 20, 4)
9297             """
9298             # Example: see GEOM_TestAll.py
9299             theStep, theNbTimes, Parameters = ParseParameters(theStep, theNbTimes)
9300             anObj = self.TrsfOp.MultiTranslate1D(theObject, theVector, theStep, theNbTimes)
9301             RaiseIfFailed("MultiTranslate1D", self.TrsfOp)
9302             anObj.SetParameters(Parameters)
9303             self._autoPublish(anObj, theName, "multitranslation")
9304             return anObj
9305
9306         ## Conseqently apply two specified translations to theObject specified number of times.
9307         #  @param theObject The object to be translated.
9308         #  @param theVector1 Direction of the first translation. DX if None.
9309         #  @param theStep1 Step of the first translation.
9310         #  @param theNbTimes1 Quantity of translations to be done along theVector1.
9311         #  @param theVector2 Direction of the second translation. DY if None.
9312         #  @param theStep2 Step of the second translation.
9313         #  @param theNbTimes2 Quantity of translations to be done along theVector2.
9314         #  @param theName Object name; when specified, this parameter is used
9315         #         for result publication in the study. Otherwise, if automatic
9316         #         publication is switched on, default value is used for result name.
9317         #
9318         #  @return New GEOM.GEOM_Object, containing compound of all
9319         #          the shapes, obtained after each translation.
9320         #
9321         #  @ref tui_multi_translation "Example"
9322         @ManageTransactions("TrsfOp")
9323         def MakeMultiTranslation2D(self, theObject, theVector1, theStep1, theNbTimes1,
9324                                    theVector2, theStep2, theNbTimes2, theName=None):
9325             """
9326             Conseqently apply two specified translations to theObject specified number of times.
9327
9328             Parameters:
9329                 theObject The object to be translated.
9330                 theVector1 Direction of the first translation. DX if None.
9331                 theStep1 Step of the first translation.
9332                 theNbTimes1 Quantity of translations to be done along theVector1.
9333                 theVector2 Direction of the second translation. DY if None.
9334                 theStep2 Step of the second translation.
9335                 theNbTimes2 Quantity of translations to be done along theVector2.
9336                 theName Object name; when specified, this parameter is used
9337                         for result publication in the study. Otherwise, if automatic
9338                         publication is switched on, default value is used for result name.
9339
9340             Returns:
9341                 New GEOM.GEOM_Object, containing compound of all
9342                 the shapes, obtained after each translation.
9343
9344             Example of usage:
9345                 tr2d = geompy.MakeMultiTranslation2D(prism, vect1, 20, 4, vect2, 80, 3)
9346             """
9347             # Example: see GEOM_TestAll.py
9348             theStep1,theNbTimes1,theStep2,theNbTimes2, Parameters = ParseParameters(theStep1,theNbTimes1,theStep2,theNbTimes2)
9349             anObj = self.TrsfOp.MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
9350                                                  theVector2, theStep2, theNbTimes2)
9351             RaiseIfFailed("MultiTranslate2D", self.TrsfOp)
9352             anObj.SetParameters(Parameters)
9353             self._autoPublish(anObj, theName, "multitranslation")
9354             return anObj
9355
9356         ## Rotate the given object around the given axis a given number times.
9357         #  Rotation angle will be 2*PI/theNbTimes.
9358         #  @param theObject The object to be rotated.
9359         #  @param theAxis The rotation axis. DZ if None.
9360         #  @param theNbTimes Quantity of rotations to be done.
9361         #  @param theName Object name; when specified, this parameter is used
9362         #         for result publication in the study. Otherwise, if automatic
9363         #         publication is switched on, default value is used for result name.
9364         #
9365         #  @return New GEOM.GEOM_Object, containing compound of all the
9366         #          shapes, obtained after each rotation.
9367         #
9368         #  @ref tui_multi_rotation "Example"
9369         @ManageTransactions("TrsfOp")
9370         def MultiRotate1DNbTimes (self, theObject, theAxis, theNbTimes, theName=None):
9371             """
9372             Rotate the given object around the given axis a given number times.
9373             Rotation angle will be 2*PI/theNbTimes.
9374
9375             Parameters:
9376                 theObject The object to be rotated.
9377                 theAxis The rotation axis. DZ if None.
9378                 theNbTimes Quantity of rotations to be done.
9379                 theName Object name; when specified, this parameter is used
9380                         for result publication in the study. Otherwise, if automatic
9381                         publication is switched on, default value is used for result name.
9382
9383             Returns:
9384                 New GEOM.GEOM_Object, containing compound of all the
9385                 shapes, obtained after each rotation.
9386
9387             Example of usage:
9388                 rot1d = geompy.MultiRotate1DNbTimes(prism, vect, 4)
9389             """
9390             # Example: see GEOM_TestAll.py
9391             theNbTimes, Parameters = ParseParameters(theNbTimes)
9392             anObj = self.TrsfOp.MultiRotate1D(theObject, theAxis, theNbTimes)
9393             RaiseIfFailed("MultiRotate1DNbTimes", self.TrsfOp)
9394             anObj.SetParameters(Parameters)
9395             self._autoPublish(anObj, theName, "multirotation")
9396             return anObj
9397
9398         ## Rotate the given object around the given axis
9399         #  a given number times on the given angle.
9400         #  @param theObject The object to be rotated.
9401         #  @param theAxis The rotation axis. DZ if None.
9402         #  @param theAngleStep Rotation angle in radians.
9403         #  @param theNbTimes Quantity of rotations to be done.
9404         #  @param theName Object name; when specified, this parameter is used
9405         #         for result publication in the study. Otherwise, if automatic
9406         #         publication is switched on, default value is used for result name.
9407         #
9408         #  @return New GEOM.GEOM_Object, containing compound of all the
9409         #          shapes, obtained after each rotation.
9410         #
9411         #  @ref tui_multi_rotation "Example"
9412         @ManageTransactions("TrsfOp")
9413         def MultiRotate1DByStep(self, theObject, theAxis, theAngleStep, theNbTimes, theName=None):
9414             """
9415             Rotate the given object around the given axis
9416             a given number times on the given angle.
9417
9418             Parameters:
9419                 theObject The object to be rotated.
9420                 theAxis The rotation axis. DZ if None.
9421                 theAngleStep Rotation angle in radians.
9422                 theNbTimes Quantity of rotations to be done.
9423                 theName Object name; when specified, this parameter is used
9424                         for result publication in the study. Otherwise, if automatic
9425                         publication is switched on, default value is used for result name.
9426
9427             Returns:
9428                 New GEOM.GEOM_Object, containing compound of all the
9429                 shapes, obtained after each rotation.
9430
9431             Example of usage:
9432                 rot1d = geompy.MultiRotate1DByStep(prism, vect, math.pi/4, 4)
9433             """
9434             # Example: see GEOM_TestAll.py
9435             theAngleStep, theNbTimes, Parameters = ParseParameters(theAngleStep, theNbTimes)
9436             anObj = self.TrsfOp.MultiRotate1DByStep(theObject, theAxis, theAngleStep, theNbTimes)
9437             RaiseIfFailed("MultiRotate1DByStep", self.TrsfOp)
9438             anObj.SetParameters(Parameters)
9439             self._autoPublish(anObj, theName, "multirotation")
9440             return anObj
9441
9442         ## Rotate the given object around the given axis a given
9443         #  number times and multi-translate each rotation result.
9444         #  Rotation angle will be 2*PI/theNbTimes1.
9445         #  Translation direction passes through center of gravity
9446         #  of rotated shape and its projection on the rotation axis.
9447         #  @param theObject The object to be rotated.
9448         #  @param theAxis Rotation axis. DZ if None.
9449         #  @param theNbTimes1 Quantity of rotations to be done.
9450         #  @param theRadialStep Translation distance.
9451         #  @param theNbTimes2 Quantity of translations to be done.
9452         #  @param theName Object name; when specified, this parameter is used
9453         #         for result publication in the study. Otherwise, if automatic
9454         #         publication is switched on, default value is used for result name.
9455         #
9456         #  @return New GEOM.GEOM_Object, containing compound of all the
9457         #          shapes, obtained after each transformation.
9458         #
9459         #  @ref tui_multi_rotation "Example"
9460         @ManageTransactions("TrsfOp")
9461         def MultiRotate2DNbTimes(self, theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
9462             """
9463             Rotate the given object around the
9464             given axis on the given angle a given number
9465             times and multi-translate each rotation result.
9466             Translation direction passes through center of gravity
9467             of rotated shape and its projection on the rotation axis.
9468
9469             Parameters:
9470                 theObject The object to be rotated.
9471                 theAxis Rotation axis. DZ if None.
9472                 theNbTimes1 Quantity of rotations to be done.
9473                 theRadialStep Translation distance.
9474                 theNbTimes2 Quantity of translations to be done.
9475                 theName Object name; when specified, this parameter is used
9476                         for result publication in the study. Otherwise, if automatic
9477                         publication is switched on, default value is used for result name.
9478
9479             Returns:
9480                 New GEOM.GEOM_Object, containing compound of all the
9481                 shapes, obtained after each transformation.
9482
9483             Example of usage:
9484                 rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
9485             """
9486             # Example: see GEOM_TestAll.py
9487             theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theNbTimes1, theRadialStep, theNbTimes2)
9488             anObj = self.TrsfOp.MultiRotate2DNbTimes(theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2)
9489             RaiseIfFailed("MultiRotate2DNbTimes", self.TrsfOp)
9490             anObj.SetParameters(Parameters)
9491             self._autoPublish(anObj, theName, "multirotation")
9492             return anObj
9493
9494         ## Rotate the given object around the
9495         #  given axis on the given angle a given number
9496         #  times and multi-translate each rotation result.
9497         #  Translation direction passes through center of gravity
9498         #  of rotated shape and its projection on the rotation axis.
9499         #  @param theObject The object to be rotated.
9500         #  @param theAxis Rotation axis. DZ if None.
9501         #  @param theAngleStep Rotation angle in radians.
9502         #  @param theNbTimes1 Quantity of rotations to be done.
9503         #  @param theRadialStep Translation distance.
9504         #  @param theNbTimes2 Quantity of translations to be done.
9505         #  @param theName Object name; when specified, this parameter is used
9506         #         for result publication in the study. Otherwise, if automatic
9507         #         publication is switched on, default value is used for result name.
9508         #
9509         #  @return New GEOM.GEOM_Object, containing compound of all the
9510         #          shapes, obtained after each transformation.
9511         #
9512         #  @ref tui_multi_rotation "Example"
9513         @ManageTransactions("TrsfOp")
9514         def MultiRotate2DByStep (self, theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
9515             """
9516             Rotate the given object around the
9517             given axis on the given angle a given number
9518             times and multi-translate each rotation result.
9519             Translation direction passes through center of gravity
9520             of rotated shape and its projection on the rotation axis.
9521
9522             Parameters:
9523                 theObject The object to be rotated.
9524                 theAxis Rotation axis. DZ if None.
9525                 theAngleStep Rotation angle in radians.
9526                 theNbTimes1 Quantity of rotations to be done.
9527                 theRadialStep Translation distance.
9528                 theNbTimes2 Quantity of translations to be done.
9529                 theName Object name; when specified, this parameter is used
9530                         for result publication in the study. Otherwise, if automatic
9531                         publication is switched on, default value is used for result name.
9532
9533             Returns:
9534                 New GEOM.GEOM_Object, containing compound of all the
9535                 shapes, obtained after each transformation.
9536
9537             Example of usage:
9538                 rot2d = geompy.MultiRotate2D(prism, vect, math.pi/3, 4, 50, 5)
9539             """
9540             # Example: see GEOM_TestAll.py
9541             theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
9542             anObj = self.TrsfOp.MultiRotate2DByStep(theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
9543             RaiseIfFailed("MultiRotate2DByStep", self.TrsfOp)
9544             anObj.SetParameters(Parameters)
9545             self._autoPublish(anObj, theName, "multirotation")
9546             return anObj
9547
9548         ## The same, as MultiRotate1DNbTimes(), but axis is given by direction and point
9549         #
9550         #  @ref swig_MakeMultiRotation "Example"
9551         def MakeMultiRotation1DNbTimes(self, aShape, aDir, aPoint, aNbTimes, theName=None):
9552             """
9553             The same, as geompy.MultiRotate1DNbTimes, but axis is given by direction and point
9554
9555             Example of usage:
9556                 pz = geompy.MakeVertex(0, 0, 100)
9557                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9558                 MultiRot1D = geompy.MakeMultiRotation1DNbTimes(prism, vy, pz, 6)
9559             """
9560             # Example: see GEOM_TestOthers.py
9561             aVec = self.MakeLine(aPoint,aDir)
9562             # note: auto-publishing is done in self.MultiRotate1D()
9563             anObj = self.MultiRotate1DNbTimes(aShape, aVec, aNbTimes, theName)
9564             return anObj
9565
9566         ## The same, as MultiRotate1DByStep(), but axis is given by direction and point
9567         #
9568         #  @ref swig_MakeMultiRotation "Example"
9569         def MakeMultiRotation1DByStep(self, aShape, aDir, aPoint, anAngle, aNbTimes, theName=None):
9570             """
9571             The same, as geompy.MultiRotate1D, but axis is given by direction and point
9572
9573             Example of usage:
9574                 pz = geompy.MakeVertex(0, 0, 100)
9575                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9576                 MultiRot1D = geompy.MakeMultiRotation1DByStep(prism, vy, pz, math.pi/3, 6)
9577             """
9578             # Example: see GEOM_TestOthers.py
9579             aVec = self.MakeLine(aPoint,aDir)
9580             # note: auto-publishing is done in self.MultiRotate1D()
9581             anObj = self.MultiRotate1DByStep(aShape, aVec, anAngle, aNbTimes, theName)
9582             return anObj
9583
9584         ## The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
9585         #
9586         #  @ref swig_MakeMultiRotation "Example"
9587         def MakeMultiRotation2DNbTimes(self, aShape, aDir, aPoint, nbtimes1, aStep, nbtimes2, theName=None):
9588             """
9589             The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
9590
9591             Example of usage:
9592                 pz = geompy.MakeVertex(0, 0, 100)
9593                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9594                 MultiRot2D = geompy.MakeMultiRotation2DNbTimes(f12, vy, pz, 6, 30, 3)
9595             """
9596             # Example: see GEOM_TestOthers.py
9597             aVec = self.MakeLine(aPoint,aDir)
9598             # note: auto-publishing is done in self.MultiRotate2DNbTimes()
9599             anObj = self.MultiRotate2DNbTimes(aShape, aVec, nbtimes1, aStep, nbtimes2, theName)
9600             return anObj
9601
9602         ## The same, as MultiRotate2DByStep(), but axis is given by direction and point
9603         #
9604         #  @ref swig_MakeMultiRotation "Example"
9605         def MakeMultiRotation2DByStep(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
9606             """
9607             The same, as MultiRotate2DByStep(), but axis is given by direction and point
9608
9609             Example of usage:
9610                 pz = geompy.MakeVertex(0, 0, 100)
9611                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9612                 MultiRot2D = geompy.MakeMultiRotation2DByStep(f12, vy, pz, math.pi/4, 6, 30, 3)
9613             """
9614             # Example: see GEOM_TestOthers.py
9615             aVec = self.MakeLine(aPoint,aDir)
9616             # note: auto-publishing is done in self.MultiRotate2D()
9617             anObj = self.MultiRotate2DByStep(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
9618             return anObj
9619
9620         ##
9621         #  Compute a wire or a face that represents a projection of the source
9622         #  shape onto cylinder. The cylinder's coordinate system is the same
9623         #  as the global coordinate system.
9624         #
9625         #  @param theObject The object to be projected. It can be either
9626         #         a planar wire or a face.
9627         #  @param theRadius The radius of the cylinder.
9628         #  @param theStartAngle The starting angle in radians from
9629         #         the cylinder's X axis around Z axis. The angle from which
9630         #         the projection is started.
9631         #  @param theAngleLength The projection length angle in radians.
9632         #         The angle in which to project the total length of the wire.
9633         #         If it is negative the projection is not scaled and natural
9634         #         wire length is kept for the projection.
9635         #  @param theAngleRotation The desired angle in radians between
9636         #         the tangent vector to the first curve at the first point of
9637         #         the theObject's projection in 2D space and U-direction of
9638         #         cylinder's 2D space.
9639         #  @param theName Object name; when specified, this parameter is used
9640         #         for result publication in the study. Otherwise, if automatic
9641         #         publication is switched on, default value is used for result name.
9642         #
9643         #  @return New GEOM.GEOM_Object, containing the result shape. The result
9644         #         represents a wire or a face that represents a projection of
9645         #         the source shape onto a cylinder.
9646         #
9647         #  @ref tui_projection "Example"
9648         def MakeProjectionOnCylinder (self, theObject, theRadius,
9649                                       theStartAngle=0.0, theAngleLength=-1.0,
9650                                       theAngleRotation=0.0,
9651                                       theName=None):
9652             """
9653             Compute a wire or a face that represents a projection of the source
9654             shape onto cylinder. The cylinder's coordinate system is the same
9655             as the global coordinate system.
9656
9657             Parameters:
9658                 theObject The object to be projected. It can be either
9659                         a planar wire or a face.
9660                 theRadius The radius of the cylinder.
9661                 theStartAngle The starting angle in radians from the cylinder's X axis
9662                         around Z axis. The angle from which the projection is started.
9663                 theAngleLength The projection length angle in radians. The angle in which
9664                         to project the total length of the wire. If it is negative the
9665                         projection is not scaled and natural wire length is kept for
9666                         the projection.
9667                 theAngleRotation The desired angle in radians between
9668                         the tangent vector to the first curve at the first
9669                         point of the theObject's projection in 2D space and
9670                         U-direction of cylinder's 2D space.
9671                 theName Object name; when specified, this parameter is used
9672                         for result publication in the study. Otherwise, if automatic
9673                         publication is switched on, default value is used for result name.
9674
9675             Returns:
9676                 New GEOM.GEOM_Object, containing the result shape. The result
9677                 represents a wire or a face that represents a projection of
9678                 the source shape onto a cylinder.
9679             """
9680             # Example: see GEOM_TestAll.py
9681             flagStartAngle = False
9682             if isinstance(theStartAngle,str):
9683                 flagStartAngle = True
9684             flagAngleLength = False
9685             if isinstance(theAngleLength,str):
9686                 flagAngleLength = True
9687             flagAngleRotation = False
9688             if isinstance(theAngleRotation,str):
9689                 flagAngleRotation = True
9690             theRadius, theStartAngle, theAngleLength, theAngleRotation, Parameters = ParseParameters(
9691               theRadius, theStartAngle, theAngleLength, theAngleRotation)
9692             if flagStartAngle:
9693                 theStartAngle = theStartAngle*math.pi/180.
9694             if flagAngleLength:
9695                 theAngleLength = theAngleLength*math.pi/180.
9696             if flagAngleRotation:
9697                 theAngleRotation = theAngleRotation*math.pi/180.
9698             anObj = self.TrsfOp.MakeProjectionOnCylinder(theObject, theRadius,
9699                 theStartAngle, theAngleLength, theAngleRotation)
9700             RaiseIfFailed("MakeProjectionOnCylinder", self.TrsfOp)
9701             anObj.SetParameters(Parameters)
9702             self._autoPublish(anObj, theName, "projection")
9703             return anObj
9704
9705         # end of l3_transform
9706         ## @}
9707
9708         ## @addtogroup l3_transform_d
9709         ## @{
9710
9711         ## Deprecated method. Use MultiRotate1DNbTimes instead.
9712         def MultiRotate1D(self, theObject, theAxis, theNbTimes, theName=None):
9713             """
9714             Deprecated method. Use MultiRotate1DNbTimes instead.
9715             """
9716             print "The method MultiRotate1D is DEPRECATED. Use MultiRotate1DNbTimes instead."
9717             return self.MultiRotate1DNbTimes(theObject, theAxis, theNbTimes, theName)
9718
9719         ## The same, as MultiRotate2DByStep(), but theAngle is in degrees.
9720         #  This method is DEPRECATED. Use MultiRotate2DByStep() instead.
9721         @ManageTransactions("TrsfOp")
9722         def MultiRotate2D(self, theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2, theName=None):
9723             """
9724             The same, as MultiRotate2DByStep(), but theAngle is in degrees.
9725             This method is DEPRECATED. Use MultiRotate2DByStep() instead.
9726
9727             Example of usage:
9728                 rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
9729             """
9730             print "The method MultiRotate2D is DEPRECATED. Use MultiRotate2DByStep instead."
9731             theAngle, theNbTimes1, theStep, theNbTimes2, Parameters = ParseParameters(theAngle, theNbTimes1, theStep, theNbTimes2)
9732             anObj = self.TrsfOp.MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2)
9733             RaiseIfFailed("MultiRotate2D", self.TrsfOp)
9734             anObj.SetParameters(Parameters)
9735             self._autoPublish(anObj, theName, "multirotation")
9736             return anObj
9737
9738         ## The same, as MultiRotate1D(), but axis is given by direction and point
9739         #  This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
9740         def MakeMultiRotation1D(self, aShape, aDir, aPoint, aNbTimes, theName=None):
9741             """
9742             The same, as geompy.MultiRotate1D, but axis is given by direction and point.
9743             This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
9744
9745             Example of usage:
9746                 pz = geompy.MakeVertex(0, 0, 100)
9747                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9748                 MultiRot1D = geompy.MakeMultiRotation1D(prism, vy, pz, 6)
9749             """
9750             print "The method MakeMultiRotation1D is DEPRECATED. Use MakeMultiRotation1DNbTimes instead."
9751             aVec = self.MakeLine(aPoint,aDir)
9752             # note: auto-publishing is done in self.MultiRotate1D()
9753             anObj = self.MultiRotate1D(aShape, aVec, aNbTimes, theName)
9754             return anObj
9755
9756         ## The same, as MultiRotate2D(), but axis is given by direction and point
9757         #  This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
9758         def MakeMultiRotation2D(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
9759             """
9760             The same, as MultiRotate2D(), but axis is given by direction and point
9761             This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
9762
9763             Example of usage:
9764                 pz = geompy.MakeVertex(0, 0, 100)
9765                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9766                 MultiRot2D = geompy.MakeMultiRotation2D(f12, vy, pz, 45, 6, 30, 3)
9767             """
9768             print "The method MakeMultiRotation2D is DEPRECATED. Use MakeMultiRotation2DByStep instead."
9769             aVec = self.MakeLine(aPoint,aDir)
9770             # note: auto-publishing is done in self.MultiRotate2D()
9771             anObj = self.MultiRotate2D(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
9772             return anObj
9773
9774         # end of l3_transform_d
9775         ## @}
9776
9777         ## @addtogroup l3_local
9778         ## @{
9779
9780         ## Perform a fillet on all edges of the given shape.
9781         #  @param theShape Shape, to perform fillet on.
9782         #  @param theR Fillet radius.
9783         #  @param theName Object name; when specified, this parameter is used
9784         #         for result publication in the study. Otherwise, if automatic
9785         #         publication is switched on, default value is used for result name.
9786         #
9787         #  @return New GEOM.GEOM_Object, containing the result shape.
9788         #
9789         #  @ref tui_fillet "Example 1"
9790         #  \n @ref swig_MakeFilletAll "Example 2"
9791         @ManageTransactions("LocalOp")
9792         def MakeFilletAll(self, theShape, theR, theName=None):
9793             """
9794             Perform a fillet on all edges of the given shape.
9795
9796             Parameters:
9797                 theShape Shape, to perform fillet on.
9798                 theR Fillet radius.
9799                 theName Object name; when specified, this parameter is used
9800                         for result publication in the study. Otherwise, if automatic
9801                         publication is switched on, default value is used for result name.
9802
9803             Returns:
9804                 New GEOM.GEOM_Object, containing the result shape.
9805
9806             Example of usage:
9807                filletall = geompy.MakeFilletAll(prism, 10.)
9808             """
9809             # Example: see GEOM_TestOthers.py
9810             theR,Parameters = ParseParameters(theR)
9811             anObj = self.LocalOp.MakeFilletAll(theShape, theR)
9812             RaiseIfFailed("MakeFilletAll", self.LocalOp)
9813             anObj.SetParameters(Parameters)
9814             self._autoPublish(anObj, theName, "fillet")
9815             return anObj
9816
9817         ## Perform a fillet on the specified edges/faces of the given shape
9818         #  @param theShape Shape, to perform fillet on.
9819         #  @param theR Fillet radius.
9820         #  @param theShapeType Type of shapes in <VAR>theListShapes</VAR> (see ShapeType())
9821         #  @param theListShapes Global indices of edges/faces to perform fillet on.
9822         #  @param theName Object name; when specified, this parameter is used
9823         #         for result publication in the study. Otherwise, if automatic
9824         #         publication is switched on, default value is used for result name.
9825         #
9826         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
9827         #
9828         #  @return New GEOM.GEOM_Object, containing the result shape.
9829         #
9830         #  @ref tui_fillet "Example"
9831         @ManageTransactions("LocalOp")
9832         def MakeFillet(self, theShape, theR, theShapeType, theListShapes, theName=None):
9833             """
9834             Perform a fillet on the specified edges/faces of the given shape
9835
9836             Parameters:
9837                 theShape Shape, to perform fillet on.
9838                 theR Fillet radius.
9839                 theShapeType Type of shapes in theListShapes (see geompy.ShapeTypes)
9840                 theListShapes Global indices of edges/faces to perform fillet on.
9841                 theName Object name; when specified, this parameter is used
9842                         for result publication in the study. Otherwise, if automatic
9843                         publication is switched on, default value is used for result name.
9844
9845             Note:
9846                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
9847
9848             Returns:
9849                 New GEOM.GEOM_Object, containing the result shape.
9850
9851             Example of usage:
9852                 # get the list of IDs (IDList) for the fillet
9853                 prism_edges = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["EDGE"])
9854                 IDlist_e = []
9855                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[0]))
9856                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[1]))
9857                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[2]))
9858                 # make a fillet on the specified edges of the given shape
9859                 fillet = geompy.MakeFillet(prism, 10., geompy.ShapeType["EDGE"], IDlist_e)
9860             """
9861             # Example: see GEOM_TestAll.py
9862             theR,Parameters = ParseParameters(theR)
9863             anObj = None
9864             if theShapeType == self.ShapeType["EDGE"]:
9865                 anObj = self.LocalOp.MakeFilletEdges(theShape, theR, theListShapes)
9866                 RaiseIfFailed("MakeFilletEdges", self.LocalOp)
9867             else:
9868                 anObj = self.LocalOp.MakeFilletFaces(theShape, theR, theListShapes)
9869                 RaiseIfFailed("MakeFilletFaces", self.LocalOp)
9870             anObj.SetParameters(Parameters)
9871             self._autoPublish(anObj, theName, "fillet")
9872             return anObj
9873
9874         ## The same that MakeFillet() but with two Fillet Radius R1 and R2
9875         @ManageTransactions("LocalOp")
9876         def MakeFilletR1R2(self, theShape, theR1, theR2, theShapeType, theListShapes, theName=None):
9877             """
9878             The same that geompy.MakeFillet but with two Fillet Radius R1 and R2
9879
9880             Example of usage:
9881                 # get the list of IDs (IDList) for the fillet
9882                 prism_edges = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["EDGE"])
9883                 IDlist_e = []
9884                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[0]))
9885                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[1]))
9886                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[2]))
9887                 # make a fillet on the specified edges of the given shape
9888                 fillet = geompy.MakeFillet(prism, 10., 15., geompy.ShapeType["EDGE"], IDlist_e)
9889             """
9890             theR1,theR2,Parameters = ParseParameters(theR1,theR2)
9891             anObj = None
9892             if theShapeType == self.ShapeType["EDGE"]:
9893                 anObj = self.LocalOp.MakeFilletEdgesR1R2(theShape, theR1, theR2, theListShapes)
9894                 RaiseIfFailed("MakeFilletEdgesR1R2", self.LocalOp)
9895             else:
9896                 anObj = self.LocalOp.MakeFilletFacesR1R2(theShape, theR1, theR2, theListShapes)
9897                 RaiseIfFailed("MakeFilletFacesR1R2", self.LocalOp)
9898             anObj.SetParameters(Parameters)
9899             self._autoPublish(anObj, theName, "fillet")
9900             return anObj
9901
9902         ## Perform a fillet on the specified edges of the given shape
9903         #  @param theShape  Wire Shape to perform fillet on.
9904         #  @param theR  Fillet radius.
9905         #  @param theListOfVertexes Global indices of vertexes to perform fillet on.
9906         #    \note Global index of sub-shape can be obtained, using method GetSubShapeID()
9907         #    \note The list of vertices could be empty,
9908         #          in this case fillet will done done at all vertices in wire
9909         #  @param doIgnoreSecantVertices If FALSE, fillet radius is always limited
9910         #         by the length of the edges, nearest to the fillet vertex.
9911         #         But sometimes the next edge is C1 continuous with the one, nearest to
9912         #         the fillet point, and such two (or more) edges can be united to allow
9913         #         bigger radius. Set this flag to TRUE to allow collinear edges union,
9914         #         thus ignoring the secant vertex (vertices).
9915         #  @param theName Object name; when specified, this parameter is used
9916         #         for result publication in the study. Otherwise, if automatic
9917         #         publication is switched on, default value is used for result name.
9918         #
9919         #  @return New GEOM.GEOM_Object, containing the result shape.
9920         #
9921         #  @ref tui_fillet2d "Example"
9922         @ManageTransactions("LocalOp")
9923         def MakeFillet1D(self, theShape, theR, theListOfVertexes, doIgnoreSecantVertices = True, theName=None):
9924             """
9925             Perform a fillet on the specified edges of the given shape
9926
9927             Parameters:
9928                 theShape  Wire Shape to perform fillet on.
9929                 theR  Fillet radius.
9930                 theListOfVertexes Global indices of vertexes to perform fillet on.
9931                 doIgnoreSecantVertices If FALSE, fillet radius is always limited
9932                     by the length of the edges, nearest to the fillet vertex.
9933                     But sometimes the next edge is C1 continuous with the one, nearest to
9934                     the fillet point, and such two (or more) edges can be united to allow
9935                     bigger radius. Set this flag to TRUE to allow collinear edges union,
9936                     thus ignoring the secant vertex (vertices).
9937                 theName Object name; when specified, this parameter is used
9938                         for result publication in the study. Otherwise, if automatic
9939                         publication is switched on, default value is used for result name.
9940             Note:
9941                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
9942
9943                 The list of vertices could be empty,in this case fillet will done done at all vertices in wire
9944
9945             Returns:
9946                 New GEOM.GEOM_Object, containing the result shape.
9947
9948             Example of usage:
9949                 # create wire
9950                 Wire_1 = geompy.MakeWire([Edge_12, Edge_7, Edge_11, Edge_6, Edge_1,Edge_4])
9951                 # make fillet at given wire vertices with giver radius
9952                 Fillet_1D_1 = geompy.MakeFillet1D(Wire_1, 55, [3, 4, 6, 8, 10])
9953             """
9954             # Example: see GEOM_TestAll.py
9955             theR,doIgnoreSecantVertices,Parameters = ParseParameters(theR,doIgnoreSecantVertices)
9956             anObj = self.LocalOp.MakeFillet1D(theShape, theR, theListOfVertexes, doIgnoreSecantVertices)
9957             RaiseIfFailed("MakeFillet1D", self.LocalOp)
9958             anObj.SetParameters(Parameters)
9959             self._autoPublish(anObj, theName, "fillet")
9960             return anObj
9961
9962         ## Perform a fillet at the specified vertices of the given face/shell.
9963         #  @param theShape Face or Shell shape to perform fillet on.
9964         #  @param theR Fillet radius.
9965         #  @param theListOfVertexes Global indices of vertexes to perform fillet on.
9966         #  @param theName Object name; when specified, this parameter is used
9967         #         for result publication in the study. Otherwise, if automatic
9968         #         publication is switched on, default value is used for result name.
9969         #
9970         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
9971         #
9972         #  @return New GEOM.GEOM_Object, containing the result shape.
9973         #
9974         #  @ref tui_fillet2d "Example"
9975         @ManageTransactions("LocalOp")
9976         def MakeFillet2D(self, theShape, theR, theListOfVertexes, theName=None):
9977             """
9978             Perform a fillet at the specified vertices of the given face/shell.
9979
9980             Parameters:
9981                 theShape  Face or Shell shape to perform fillet on.
9982                 theR  Fillet radius.
9983                 theListOfVertexes Global indices of vertexes to perform fillet on.
9984                 theName Object name; when specified, this parameter is used
9985                         for result publication in the study. Otherwise, if automatic
9986                         publication is switched on, default value is used for result name.
9987             Note:
9988                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
9989
9990             Returns:
9991                 New GEOM.GEOM_Object, containing the result shape.
9992
9993             Example of usage:
9994                 face = geompy.MakeFaceHW(100, 100, 1)
9995                 fillet2d = geompy.MakeFillet2D(face, 30, [7, 9])
9996             """
9997             # Example: see GEOM_TestAll.py
9998             theR,Parameters = ParseParameters(theR)
9999             anObj = self.LocalOp.MakeFillet2D(theShape, theR, theListOfVertexes)
10000             RaiseIfFailed("MakeFillet2D", self.LocalOp)
10001             anObj.SetParameters(Parameters)
10002             self._autoPublish(anObj, theName, "fillet")
10003             return anObj
10004
10005         ## Perform a symmetric chamfer on all edges of the given shape.
10006         #  @param theShape Shape, to perform chamfer on.
10007         #  @param theD Chamfer size along each face.
10008         #  @param theName Object name; when specified, this parameter is used
10009         #         for result publication in the study. Otherwise, if automatic
10010         #         publication is switched on, default value is used for result name.
10011         #
10012         #  @return New GEOM.GEOM_Object, containing the result shape.
10013         #
10014         #  @ref tui_chamfer "Example 1"
10015         #  \n @ref swig_MakeChamferAll "Example 2"
10016         @ManageTransactions("LocalOp")
10017         def MakeChamferAll(self, theShape, theD, theName=None):
10018             """
10019             Perform a symmetric chamfer on all edges of the given shape.
10020
10021             Parameters:
10022                 theShape Shape, to perform chamfer on.
10023                 theD Chamfer size along each face.
10024                 theName Object name; when specified, this parameter is used
10025                         for result publication in the study. Otherwise, if automatic
10026                         publication is switched on, default value is used for result name.
10027
10028             Returns:
10029                 New GEOM.GEOM_Object, containing the result shape.
10030
10031             Example of usage:
10032                 chamfer_all = geompy.MakeChamferAll(prism, 10.)
10033             """
10034             # Example: see GEOM_TestOthers.py
10035             theD,Parameters = ParseParameters(theD)
10036             anObj = self.LocalOp.MakeChamferAll(theShape, theD)
10037             RaiseIfFailed("MakeChamferAll", self.LocalOp)
10038             anObj.SetParameters(Parameters)
10039             self._autoPublish(anObj, theName, "chamfer")
10040             return anObj
10041
10042         ## Perform a chamfer on edges, common to the specified faces,
10043         #  with distance D1 on the Face1
10044         #  @param theShape Shape, to perform chamfer on.
10045         #  @param theD1 Chamfer size along \a theFace1.
10046         #  @param theD2 Chamfer size along \a theFace2.
10047         #  @param theFace1,theFace2 Global indices of two faces of \a theShape.
10048         #  @param theName Object name; when specified, this parameter is used
10049         #         for result publication in the study. Otherwise, if automatic
10050         #         publication is switched on, default value is used for result name.
10051         #
10052         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10053         #
10054         #  @return New GEOM.GEOM_Object, containing the result shape.
10055         #
10056         #  @ref tui_chamfer "Example"
10057         @ManageTransactions("LocalOp")
10058         def MakeChamferEdge(self, theShape, theD1, theD2, theFace1, theFace2, theName=None):
10059             """
10060             Perform a chamfer on edges, common to the specified faces,
10061             with distance D1 on the Face1
10062
10063             Parameters:
10064                 theShape Shape, to perform chamfer on.
10065                 theD1 Chamfer size along theFace1.
10066                 theD2 Chamfer size along theFace2.
10067                 theFace1,theFace2 Global indices of two faces of theShape.
10068                 theName Object name; when specified, this parameter is used
10069                         for result publication in the study. Otherwise, if automatic
10070                         publication is switched on, default value is used for result name.
10071
10072             Note:
10073                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10074
10075             Returns:
10076                 New GEOM.GEOM_Object, containing the result shape.
10077
10078             Example of usage:
10079                 prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"])
10080                 f_ind_1 = geompy.GetSubShapeID(prism, prism_faces[0])
10081                 f_ind_2 = geompy.GetSubShapeID(prism, prism_faces[1])
10082                 chamfer_e = geompy.MakeChamferEdge(prism, 10., 10., f_ind_1, f_ind_2)
10083             """
10084             # Example: see GEOM_TestAll.py
10085             theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10086             anObj = self.LocalOp.MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2)
10087             RaiseIfFailed("MakeChamferEdge", self.LocalOp)
10088             anObj.SetParameters(Parameters)
10089             self._autoPublish(anObj, theName, "chamfer")
10090             return anObj
10091
10092         ## Perform a chamfer on edges
10093         #  @param theShape Shape, to perform chamfer on.
10094         #  @param theD Chamfer length
10095         #  @param theAngle Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10096         #  @param theFace1,theFace2 Global indices of two faces of \a theShape.
10097         #  @param theName Object name; when specified, this parameter is used
10098         #         for result publication in the study. Otherwise, if automatic
10099         #         publication is switched on, default value is used for result name.
10100         #
10101         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10102         #
10103         #  @return New GEOM.GEOM_Object, containing the result shape.
10104         @ManageTransactions("LocalOp")
10105         def MakeChamferEdgeAD(self, theShape, theD, theAngle, theFace1, theFace2, theName=None):
10106             """
10107             Perform a chamfer on edges
10108
10109             Parameters:
10110                 theShape Shape, to perform chamfer on.
10111                 theD1 Chamfer size along theFace1.
10112                 theAngle Angle of chamfer (angle in radians or a name of variable which defines angle in degrees).
10113                 theFace1,theFace2 Global indices of two faces of theShape.
10114                 theName Object name; when specified, this parameter is used
10115                         for result publication in the study. Otherwise, if automatic
10116                         publication is switched on, default value is used for result name.
10117
10118             Note:
10119                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10120
10121             Returns:
10122                 New GEOM.GEOM_Object, containing the result shape.
10123
10124             Example of usage:
10125                 prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"])
10126                 f_ind_1 = geompy.GetSubShapeID(prism, prism_faces[0])
10127                 f_ind_2 = geompy.GetSubShapeID(prism, prism_faces[1])
10128                 ang = 30
10129                 chamfer_e = geompy.MakeChamferEdge(prism, 10., ang, f_ind_1, f_ind_2)
10130             """
10131             flag = False
10132             if isinstance(theAngle,str):
10133                 flag = True
10134             theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10135             if flag:
10136                 theAngle = theAngle*math.pi/180.0
10137             anObj = self.LocalOp.MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2)
10138             RaiseIfFailed("MakeChamferEdgeAD", self.LocalOp)
10139             anObj.SetParameters(Parameters)
10140             self._autoPublish(anObj, theName, "chamfer")
10141             return anObj
10142
10143         ## Perform a chamfer on all edges of the specified faces,
10144         #  with distance D1 on the first specified face (if several for one edge)
10145         #  @param theShape Shape, to perform chamfer on.
10146         #  @param theD1 Chamfer size along face from \a theFaces. If both faces,
10147         #               connected to the edge, are in \a theFaces, \a theD1
10148         #               will be get along face, which is nearer to \a theFaces beginning.
10149         #  @param theD2 Chamfer size along another of two faces, connected to the edge.
10150         #  @param theFaces Sequence of global indices of faces of \a theShape.
10151         #  @param theName Object name; when specified, this parameter is used
10152         #         for result publication in the study. Otherwise, if automatic
10153         #         publication is switched on, default value is used for result name.
10154         #
10155         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10156         #
10157         #  @return New GEOM.GEOM_Object, containing the result shape.
10158         #
10159         #  @ref tui_chamfer "Example"
10160         @ManageTransactions("LocalOp")
10161         def MakeChamferFaces(self, theShape, theD1, theD2, theFaces, theName=None):
10162             """
10163             Perform a chamfer on all edges of the specified faces,
10164             with distance D1 on the first specified face (if several for one edge)
10165
10166             Parameters:
10167                 theShape Shape, to perform chamfer on.
10168                 theD1 Chamfer size along face from  theFaces. If both faces,
10169                       connected to the edge, are in theFaces, theD1
10170                       will be get along face, which is nearer to theFaces beginning.
10171                 theD2 Chamfer size along another of two faces, connected to the edge.
10172                 theFaces Sequence of global indices of faces of theShape.
10173                 theName Object name; when specified, this parameter is used
10174                         for result publication in the study. Otherwise, if automatic
10175                         publication is switched on, default value is used for result name.
10176
10177             Note: Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
10178
10179             Returns:
10180                 New GEOM.GEOM_Object, containing the result shape.
10181             """
10182             # Example: see GEOM_TestAll.py
10183             theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10184             anObj = self.LocalOp.MakeChamferFaces(theShape, theD1, theD2, theFaces)
10185             RaiseIfFailed("MakeChamferFaces", self.LocalOp)
10186             anObj.SetParameters(Parameters)
10187             self._autoPublish(anObj, theName, "chamfer")
10188             return anObj
10189
10190         ## The Same that MakeChamferFaces() but with params theD is chamfer lenght and
10191         #  theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10192         #
10193         #  @ref swig_FilletChamfer "Example"
10194         @ManageTransactions("LocalOp")
10195         def MakeChamferFacesAD(self, theShape, theD, theAngle, theFaces, theName=None):
10196             """
10197             The Same that geompy.MakeChamferFaces but with params theD is chamfer lenght and
10198             theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10199             """
10200             flag = False
10201             if isinstance(theAngle,str):
10202                 flag = True
10203             theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10204             if flag:
10205                 theAngle = theAngle*math.pi/180.0
10206             anObj = self.LocalOp.MakeChamferFacesAD(theShape, theD, theAngle, theFaces)
10207             RaiseIfFailed("MakeChamferFacesAD", self.LocalOp)
10208             anObj.SetParameters(Parameters)
10209             self._autoPublish(anObj, theName, "chamfer")
10210             return anObj
10211
10212         ## Perform a chamfer on edges,
10213         #  with distance D1 on the first specified face (if several for one edge)
10214         #  @param theShape Shape, to perform chamfer on.
10215         #  @param theD1,theD2 Chamfer size
10216         #  @param theEdges Sequence of edges of \a theShape.
10217         #  @param theName Object name; when specified, this parameter is used
10218         #         for result publication in the study. Otherwise, if automatic
10219         #         publication is switched on, default value is used for result name.
10220         #
10221         #  @return New GEOM.GEOM_Object, containing the result shape.
10222         #
10223         #  @ref swig_FilletChamfer "Example"
10224         @ManageTransactions("LocalOp")
10225         def MakeChamferEdges(self, theShape, theD1, theD2, theEdges, theName=None):
10226             """
10227             Perform a chamfer on edges,
10228             with distance D1 on the first specified face (if several for one edge)
10229
10230             Parameters:
10231                 theShape Shape, to perform chamfer on.
10232                 theD1,theD2 Chamfer size
10233                 theEdges Sequence of edges of theShape.
10234                 theName Object name; when specified, this parameter is used
10235                         for result publication in the study. Otherwise, if automatic
10236                         publication is switched on, default value is used for result name.
10237
10238             Returns:
10239                 New GEOM.GEOM_Object, containing the result shape.
10240             """
10241             theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10242             anObj = self.LocalOp.MakeChamferEdges(theShape, theD1, theD2, theEdges)
10243             RaiseIfFailed("MakeChamferEdges", self.LocalOp)
10244             anObj.SetParameters(Parameters)
10245             self._autoPublish(anObj, theName, "chamfer")
10246             return anObj
10247
10248         ## The Same that MakeChamferEdges() but with params theD is chamfer lenght and
10249         #  theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10250         @ManageTransactions("LocalOp")
10251         def MakeChamferEdgesAD(self, theShape, theD, theAngle, theEdges, theName=None):
10252             """
10253             The Same that geompy.MakeChamferEdges but with params theD is chamfer lenght and
10254             theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10255             """
10256             flag = False
10257             if isinstance(theAngle,str):
10258                 flag = True
10259             theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10260             if flag:
10261                 theAngle = theAngle*math.pi/180.0
10262             anObj = self.LocalOp.MakeChamferEdgesAD(theShape, theD, theAngle, theEdges)
10263             RaiseIfFailed("MakeChamferEdgesAD", self.LocalOp)
10264             anObj.SetParameters(Parameters)
10265             self._autoPublish(anObj, theName, "chamfer")
10266             return anObj
10267
10268         ## @sa MakeChamferEdge(), MakeChamferFaces()
10269         #
10270         #  @ref swig_MakeChamfer "Example"
10271         def MakeChamfer(self, aShape, d1, d2, aShapeType, ListShape, theName=None):
10272             """
10273             See geompy.MakeChamferEdge() and geompy.MakeChamferFaces() functions for more information.
10274             """
10275             # Example: see GEOM_TestOthers.py
10276             anObj = None
10277             # note: auto-publishing is done in self.MakeChamferEdge() or self.MakeChamferFaces()
10278             if aShapeType == self.ShapeType["EDGE"]:
10279                 anObj = self.MakeChamferEdge(aShape,d1,d2,ListShape[0],ListShape[1],theName)
10280             else:
10281                 anObj = self.MakeChamferFaces(aShape,d1,d2,ListShape,theName)
10282             return anObj
10283
10284         ## Remove material from a solid by extrusion of the base shape on the given distance.
10285         #  @param theInit Shape to remove material from. It must be a solid or
10286         #  a compound made of a single solid.
10287         #  @param theBase Closed edge or wire defining the base shape to be extruded.
10288         #  @param theH Prism dimension along the normal to theBase
10289         #  @param theAngle Draft angle in degrees.
10290         #  @param theInvert If true material changes the direction
10291         #  @param theName Object name; when specified, this parameter is used
10292         #         for result publication in the study. Otherwise, if automatic
10293         #         publication is switched on, default value is used for result name.
10294         #
10295         #  @return New GEOM.GEOM_Object, containing the initial shape with removed material
10296         #
10297         #  @ref tui_creation_prism "Example"
10298         @ManageTransactions("PrimOp")
10299         def MakeExtrudedCut(self, theInit, theBase, theH, theAngle, theInvert=False, theName=None):
10300             """
10301             Add material to a solid by extrusion of the base shape on the given distance.
10302
10303             Parameters:
10304                 theInit Shape to remove material from. It must be a solid or a compound made of a single solid.
10305                 theBase Closed edge or wire defining the base shape to be extruded.
10306                 theH Prism dimension along the normal  to theBase
10307                 theAngle Draft angle in degrees.
10308                 theInvert If true material changes the direction.
10309                 theName Object name; when specified, this parameter is used
10310                         for result publication in the study. Otherwise, if automatic
10311                         publication is switched on, default value is used for result name.
10312
10313             Returns:
10314                 New GEOM.GEOM_Object,  containing the initial shape with removed material.
10315             """
10316             # Example: see GEOM_TestAll.py
10317             theH,theAngle,Parameters = ParseParameters(theH,theAngle)
10318             anObj = self.PrimOp.MakeDraftPrism(theInit, theBase, theH, theAngle, False, theInvert)
10319             RaiseIfFailed("MakeExtrudedBoss", self.PrimOp)
10320             anObj.SetParameters(Parameters)
10321             self._autoPublish(anObj, theName, "extrudedCut")
10322             return anObj
10323
10324         ## Add material to a solid by extrusion of the base shape on the given distance.
10325         #  @param theInit Shape to add material to. It must be a solid or
10326         #  a compound made of a single solid.
10327         #  @param theBase Closed edge or wire defining the base shape to be extruded.
10328         #  @param theH Prism dimension along the normal to theBase
10329         #  @param theAngle Draft angle in degrees.
10330         #  @param theInvert If true material changes the direction
10331         #  @param theName Object name; when specified, this parameter is used
10332         #         for result publication in the study. Otherwise, if automatic
10333         #         publication is switched on, default value is used for result name.
10334         #
10335         #  @return New GEOM.GEOM_Object, containing the initial shape with added material
10336         #
10337         #  @ref tui_creation_prism "Example"
10338         @ManageTransactions("PrimOp")
10339         def MakeExtrudedBoss(self, theInit, theBase, theH, theAngle, theInvert=False, theName=None):
10340             """
10341             Add material to a solid by extrusion of the base shape on the given distance.
10342
10343             Parameters:
10344                 theInit Shape to add material to. It must be a solid or a compound made of a single solid.
10345                 theBase Closed edge or wire defining the base shape to be extruded.
10346                 theH Prism dimension along the normal  to theBase
10347                 theAngle Draft angle in degrees.
10348                 theInvert If true material changes the direction.
10349                 theName Object name; when specified, this parameter is used
10350                         for result publication in the study. Otherwise, if automatic
10351                         publication is switched on, default value is used for result name.
10352
10353             Returns:
10354                 New GEOM.GEOM_Object,  containing the initial shape with added material.
10355             """
10356             # Example: see GEOM_TestAll.py
10357             theH,theAngle,Parameters = ParseParameters(theH,theAngle)
10358             anObj = self.PrimOp.MakeDraftPrism(theInit, theBase, theH, theAngle, True, theInvert)
10359             RaiseIfFailed("MakeExtrudedBoss", self.PrimOp)
10360             anObj.SetParameters(Parameters)
10361             self._autoPublish(anObj, theName, "extrudedBoss")
10362             return anObj
10363
10364         # end of l3_local
10365         ## @}
10366
10367         ## @addtogroup l3_basic_op
10368         ## @{
10369
10370         ## Perform an Archimde operation on the given shape with given parameters.
10371         #  The object presenting the resulting face is returned.
10372         #  @param theShape Shape to be put in water.
10373         #  @param theWeight Weight of the shape.
10374         #  @param theWaterDensity Density of the water.
10375         #  @param theMeshDeflection Deflection of the mesh, using to compute the section.
10376         #  @param theName Object name; when specified, this parameter is used
10377         #         for result publication in the study. Otherwise, if automatic
10378         #         publication is switched on, default value is used for result name.
10379         #
10380         #  @return New GEOM.GEOM_Object, containing a section of \a theShape
10381         #          by a plane, corresponding to water level.
10382         #
10383         #  @ref tui_archimede "Example"
10384         @ManageTransactions("LocalOp")
10385         def Archimede(self, theShape, theWeight, theWaterDensity, theMeshDeflection, theName=None):
10386             """
10387             Perform an Archimde operation on the given shape with given parameters.
10388             The object presenting the resulting face is returned.
10389
10390             Parameters:
10391                 theShape Shape to be put in water.
10392                 theWeight Weight of the shape.
10393                 theWaterDensity Density of the water.
10394                 theMeshDeflection Deflection of the mesh, using to compute the section.
10395                 theName Object name; when specified, this parameter is used
10396                         for result publication in the study. Otherwise, if automatic
10397                         publication is switched on, default value is used for result name.
10398
10399             Returns:
10400                 New GEOM.GEOM_Object, containing a section of theShape
10401                 by a plane, corresponding to water level.
10402             """
10403             # Example: see GEOM_TestAll.py
10404             theWeight,theWaterDensity,theMeshDeflection,Parameters = ParseParameters(
10405               theWeight,theWaterDensity,theMeshDeflection)
10406             anObj = self.LocalOp.MakeArchimede(theShape, theWeight, theWaterDensity, theMeshDeflection)
10407             RaiseIfFailed("MakeArchimede", self.LocalOp)
10408             anObj.SetParameters(Parameters)
10409             self._autoPublish(anObj, theName, "archimede")
10410             return anObj
10411
10412         # end of l3_basic_op
10413         ## @}
10414
10415         ## @addtogroup l2_measure
10416         ## @{
10417
10418         ## Get point coordinates
10419         #  @return [x, y, z]
10420         #
10421         #  @ref tui_point_coordinates_page "Example"
10422         @ManageTransactions("MeasuOp")
10423         def PointCoordinates(self,Point):
10424             """
10425             Get point coordinates
10426
10427             Returns:
10428                 [x, y, z]
10429             """
10430             # Example: see GEOM_TestMeasures.py
10431             aTuple = self.MeasuOp.PointCoordinates(Point)
10432             RaiseIfFailed("PointCoordinates", self.MeasuOp)
10433             return aTuple
10434
10435         ## Get vector coordinates
10436         #  @return [x, y, z]
10437         #
10438         #  @ref tui_measurement_tools_page "Example"
10439         def VectorCoordinates(self,Vector):
10440             """
10441             Get vector coordinates
10442
10443             Returns:
10444                 [x, y, z]
10445             """
10446
10447             p1=self.GetFirstVertex(Vector)
10448             p2=self.GetLastVertex(Vector)
10449
10450             X1=self.PointCoordinates(p1)
10451             X2=self.PointCoordinates(p2)
10452
10453             return (X2[0]-X1[0],X2[1]-X1[1],X2[2]-X1[2])
10454
10455
10456         ## Compute cross product
10457         #  @return vector w=u^v
10458         #
10459         #  @ref tui_measurement_tools_page "Example"
10460         def CrossProduct(self, Vector1, Vector2):
10461             """
10462             Compute cross product
10463
10464             Returns: vector w=u^v
10465             """
10466             u=self.VectorCoordinates(Vector1)
10467             v=self.VectorCoordinates(Vector2)
10468             w=self.MakeVectorDXDYDZ(u[1]*v[2]-u[2]*v[1], u[2]*v[0]-u[0]*v[2], u[0]*v[1]-u[1]*v[0])
10469
10470             return w
10471
10472         ## Compute cross product
10473         #  @return dot product  p=u.v
10474         #
10475         #  @ref tui_measurement_tools_page "Example"
10476         def DotProduct(self, Vector1, Vector2):
10477             """
10478             Compute cross product
10479
10480             Returns: dot product  p=u.v
10481             """
10482             u=self.VectorCoordinates(Vector1)
10483             v=self.VectorCoordinates(Vector2)
10484             p=u[0]*v[0]+u[1]*v[1]+u[2]*v[2]
10485
10486             return p
10487
10488
10489         ## Get summarized length of all wires,
10490         #  area of surface and volume of the given shape.
10491         #  @param theShape Shape to define properties of.
10492         #  @return [theLength, theSurfArea, theVolume]\n
10493         #  theLength:   Summarized length of all wires of the given shape.\n
10494         #  theSurfArea: Area of surface of the given shape.\n
10495         #  theVolume:   Volume of the given shape.
10496         #
10497         #  @ref tui_basic_properties_page "Example"
10498         @ManageTransactions("MeasuOp")
10499         def BasicProperties(self,theShape):
10500             """
10501             Get summarized length of all wires,
10502             area of surface and volume of the given shape.
10503
10504             Parameters:
10505                 theShape Shape to define properties of.
10506
10507             Returns:
10508                 [theLength, theSurfArea, theVolume]
10509                  theLength:   Summarized length of all wires of the given shape.
10510                  theSurfArea: Area of surface of the given shape.
10511                  theVolume:   Volume of the given shape.
10512             """
10513             # Example: see GEOM_TestMeasures.py
10514             aTuple = self.MeasuOp.GetBasicProperties(theShape)
10515             RaiseIfFailed("GetBasicProperties", self.MeasuOp)
10516             return aTuple
10517
10518         ## Get parameters of bounding box of the given shape
10519         #  @param theShape Shape to obtain bounding box of.
10520         #  @param precise TRUE for precise computation; FALSE for fast one.
10521         #  @return [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
10522         #  Xmin,Xmax: Limits of shape along OX axis.
10523         #  Ymin,Ymax: Limits of shape along OY axis.
10524         #  Zmin,Zmax: Limits of shape along OZ axis.
10525         #
10526         #  @ref tui_bounding_box_page "Example"
10527         @ManageTransactions("MeasuOp")
10528         def BoundingBox (self, theShape, precise=False):
10529             """
10530             Get parameters of bounding box of the given shape
10531
10532             Parameters:
10533                 theShape Shape to obtain bounding box of.
10534                 precise TRUE for precise computation; FALSE for fast one.
10535
10536             Returns:
10537                 [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
10538                  Xmin,Xmax: Limits of shape along OX axis.
10539                  Ymin,Ymax: Limits of shape along OY axis.
10540                  Zmin,Zmax: Limits of shape along OZ axis.
10541             """
10542             # Example: see GEOM_TestMeasures.py
10543             aTuple = self.MeasuOp.GetBoundingBox(theShape, precise)
10544             RaiseIfFailed("GetBoundingBox", self.MeasuOp)
10545             return aTuple
10546
10547         ## Get bounding box of the given shape
10548         #  @param theShape Shape to obtain bounding box of.
10549         #  @param precise TRUE for precise computation; FALSE for fast one.
10550         #  @param theName Object name; when specified, this parameter is used
10551         #         for result publication in the study. Otherwise, if automatic
10552         #         publication is switched on, default value is used for result name.
10553         #
10554         #  @return New GEOM.GEOM_Object, containing the created box.
10555         #
10556         #  @ref tui_bounding_box_page "Example"
10557         @ManageTransactions("MeasuOp")
10558         def MakeBoundingBox (self, theShape, precise=False, theName=None):
10559             """
10560             Get bounding box of the given shape
10561
10562             Parameters:
10563                 theShape Shape to obtain bounding box of.
10564                 precise TRUE for precise computation; FALSE for fast one.
10565                 theName Object name; when specified, this parameter is used
10566                         for result publication in the study. Otherwise, if automatic
10567                         publication is switched on, default value is used for result name.
10568
10569             Returns:
10570                 New GEOM.GEOM_Object, containing the created box.
10571             """
10572             # Example: see GEOM_TestMeasures.py
10573             anObj = self.MeasuOp.MakeBoundingBox(theShape, precise)
10574             RaiseIfFailed("MakeBoundingBox", self.MeasuOp)
10575             self._autoPublish(anObj, theName, "bndbox")
10576             return anObj
10577
10578         ## Get inertia matrix and moments of inertia of theShape.
10579         #  @param theShape Shape to calculate inertia of.
10580         #  @return [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
10581         #  I(1-3)(1-3): Components of the inertia matrix of the given shape.
10582         #  Ix,Iy,Iz:    Moments of inertia of the given shape.
10583         #
10584         #  @ref tui_inertia_page "Example"
10585         @ManageTransactions("MeasuOp")
10586         def Inertia(self,theShape):
10587             """
10588             Get inertia matrix and moments of inertia of theShape.
10589
10590             Parameters:
10591                 theShape Shape to calculate inertia of.
10592
10593             Returns:
10594                 [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
10595                  I(1-3)(1-3): Components of the inertia matrix of the given shape.
10596                  Ix,Iy,Iz:    Moments of inertia of the given shape.
10597             """
10598             # Example: see GEOM_TestMeasures.py
10599             aTuple = self.MeasuOp.GetInertia(theShape)
10600             RaiseIfFailed("GetInertia", self.MeasuOp)
10601             return aTuple
10602
10603         ## Get if coords are included in the shape (ST_IN or ST_ON)
10604         #  @param theShape Shape
10605         #  @param coords list of points coordinates [x1, y1, z1, x2, y2, z2, ...]
10606         #  @param tolerance to be used (default is 1.0e-7)
10607         #  @return list_of_boolean = [res1, res2, ...]
10608         @ManageTransactions("MeasuOp")
10609         def AreCoordsInside(self, theShape, coords, tolerance=1.e-7):
10610             """
10611             Get if coords are included in the shape (ST_IN or ST_ON)
10612
10613             Parameters:
10614                 theShape Shape
10615                 coords list of points coordinates [x1, y1, z1, x2, y2, z2, ...]
10616                 tolerance to be used (default is 1.0e-7)
10617
10618             Returns:
10619                 list_of_boolean = [res1, res2, ...]
10620             """
10621             return self.MeasuOp.AreCoordsInside(theShape, coords, tolerance)
10622
10623         ## Get minimal distance between the given shapes.
10624         #  @param theShape1,theShape2 Shapes to find minimal distance between.
10625         #  @return Value of the minimal distance between the given shapes.
10626         #
10627         #  @ref tui_min_distance_page "Example"
10628         @ManageTransactions("MeasuOp")
10629         def MinDistance(self, theShape1, theShape2):
10630             """
10631             Get minimal distance between the given shapes.
10632
10633             Parameters:
10634                 theShape1,theShape2 Shapes to find minimal distance between.
10635
10636             Returns:
10637                 Value of the minimal distance between the given shapes.
10638             """
10639             # Example: see GEOM_TestMeasures.py
10640             aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
10641             RaiseIfFailed("GetMinDistance", self.MeasuOp)
10642             return aTuple[0]
10643
10644         ## Get minimal distance between the given shapes.
10645         #  @param theShape1,theShape2 Shapes to find minimal distance between.
10646         #  @return Value of the minimal distance between the given shapes, in form of list
10647         #          [Distance, DX, DY, DZ].
10648         #
10649         #  @ref tui_min_distance_page "Example"
10650         @ManageTransactions("MeasuOp")
10651         def MinDistanceComponents(self, theShape1, theShape2):
10652             """
10653             Get minimal distance between the given shapes.
10654
10655             Parameters:
10656                 theShape1,theShape2 Shapes to find minimal distance between.
10657
10658             Returns:
10659                 Value of the minimal distance between the given shapes, in form of list
10660                 [Distance, DX, DY, DZ]
10661             """
10662             # Example: see GEOM_TestMeasures.py
10663             aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
10664             RaiseIfFailed("GetMinDistance", self.MeasuOp)
10665             aRes = [aTuple[0], aTuple[4] - aTuple[1], aTuple[5] - aTuple[2], aTuple[6] - aTuple[3]]
10666             return aRes
10667
10668         ## Get closest points of the given shapes.
10669         #  @param theShape1,theShape2 Shapes to find closest points of.
10670         #  @return The number of found solutions (-1 in case of infinite number of
10671         #          solutions) and a list of (X, Y, Z) coordinates for all couples of points.
10672         #
10673         #  @ref tui_min_distance_page "Example"
10674         @ManageTransactions("MeasuOp")
10675         def ClosestPoints (self, theShape1, theShape2):
10676             """
10677             Get closest points of the given shapes.
10678
10679             Parameters:
10680                 theShape1,theShape2 Shapes to find closest points of.
10681
10682             Returns:
10683                 The number of found solutions (-1 in case of infinite number of
10684                 solutions) and a list of (X, Y, Z) coordinates for all couples of points.
10685             """
10686             # Example: see GEOM_TestMeasures.py
10687             aTuple = self.MeasuOp.ClosestPoints(theShape1, theShape2)
10688             RaiseIfFailed("ClosestPoints", self.MeasuOp)
10689             return aTuple
10690
10691         ## Get angle between the given shapes in degrees.
10692         #  @param theShape1,theShape2 Lines or linear edges to find angle between.
10693         #  @note If both arguments are vectors, the angle is computed in accordance
10694         #        with their orientations, otherwise the minimum angle is computed.
10695         #  @return Value of the angle between the given shapes in degrees.
10696         #
10697         #  @ref tui_angle_page "Example"
10698         @ManageTransactions("MeasuOp")
10699         def GetAngle(self, theShape1, theShape2):
10700             """
10701             Get angle between the given shapes in degrees.
10702
10703             Parameters:
10704                 theShape1,theShape2 Lines or linear edges to find angle between.
10705
10706             Note:
10707                 If both arguments are vectors, the angle is computed in accordance
10708                 with their orientations, otherwise the minimum angle is computed.
10709
10710             Returns:
10711                 Value of the angle between the given shapes in degrees.
10712             """
10713             # Example: see GEOM_TestMeasures.py
10714             anAngle = self.MeasuOp.GetAngle(theShape1, theShape2)
10715             RaiseIfFailed("GetAngle", self.MeasuOp)
10716             return anAngle
10717
10718         ## Get angle between the given shapes in radians.
10719         #  @param theShape1,theShape2 Lines or linear edges to find angle between.
10720         #  @note If both arguments are vectors, the angle is computed in accordance
10721         #        with their orientations, otherwise the minimum angle is computed.
10722         #  @return Value of the angle between the given shapes in radians.
10723         #
10724         #  @ref tui_angle_page "Example"
10725         @ManageTransactions("MeasuOp")
10726         def GetAngleRadians(self, theShape1, theShape2):
10727             """
10728             Get angle between the given shapes in radians.
10729
10730             Parameters:
10731                 theShape1,theShape2 Lines or linear edges to find angle between.
10732
10733
10734             Note:
10735                 If both arguments are vectors, the angle is computed in accordance
10736                 with their orientations, otherwise the minimum angle is computed.
10737
10738             Returns:
10739                 Value of the angle between the given shapes in radians.
10740             """
10741             # Example: see GEOM_TestMeasures.py
10742             anAngle = self.MeasuOp.GetAngle(theShape1, theShape2)*math.pi/180.
10743             RaiseIfFailed("GetAngle", self.MeasuOp)
10744             return anAngle
10745
10746         ## Get angle between the given vectors in degrees.
10747         #  @param theShape1,theShape2 Vectors to find angle between.
10748         #  @param theFlag If True, the normal vector is defined by the two vectors cross,
10749         #                 if False, the opposite vector to the normal vector is used.
10750         #  @return Value of the angle between the given vectors in degrees.
10751         #
10752         #  @ref tui_angle_page "Example"
10753         @ManageTransactions("MeasuOp")
10754         def GetAngleVectors(self, theShape1, theShape2, theFlag = True):
10755             """
10756             Get angle between the given vectors in degrees.
10757
10758             Parameters:
10759                 theShape1,theShape2 Vectors to find angle between.
10760                 theFlag If True, the normal vector is defined by the two vectors cross,
10761                         if False, the opposite vector to the normal vector is used.
10762
10763             Returns:
10764                 Value of the angle between the given vectors in degrees.
10765             """
10766             anAngle = self.MeasuOp.GetAngleBtwVectors(theShape1, theShape2)
10767             if not theFlag:
10768                 anAngle = 360. - anAngle
10769             RaiseIfFailed("GetAngleVectors", self.MeasuOp)
10770             return anAngle
10771
10772         ## The same as GetAngleVectors, but the result is in radians.
10773         def GetAngleRadiansVectors(self, theShape1, theShape2, theFlag = True):
10774             """
10775             Get angle between the given vectors in radians.
10776
10777             Parameters:
10778                 theShape1,theShape2 Vectors to find angle between.
10779                 theFlag If True, the normal vector is defined by the two vectors cross,
10780                         if False, the opposite vector to the normal vector is used.
10781
10782             Returns:
10783                 Value of the angle between the given vectors in radians.
10784             """
10785             anAngle = self.GetAngleVectors(theShape1, theShape2, theFlag)*math.pi/180.
10786             return anAngle
10787
10788         ## @name Curve Curvature Measurement
10789         #  Methods for receiving radius of curvature of curves
10790         #  in the given point
10791         ## @{
10792
10793         ## Measure curvature of a curve at a point, set by parameter.
10794         #  @param theCurve a curve.
10795         #  @param theParam parameter.
10796         #  @return radius of curvature of \a theCurve.
10797         #
10798         #  @ref swig_todo "Example"
10799         @ManageTransactions("MeasuOp")
10800         def CurveCurvatureByParam(self, theCurve, theParam):
10801             """
10802             Measure curvature of a curve at a point, set by parameter.
10803
10804             Parameters:
10805                 theCurve a curve.
10806                 theParam parameter.
10807
10808             Returns:
10809                 radius of curvature of theCurve.
10810             """
10811             # Example: see GEOM_TestMeasures.py
10812             aCurv = self.MeasuOp.CurveCurvatureByParam(theCurve,theParam)
10813             RaiseIfFailed("CurveCurvatureByParam", self.MeasuOp)
10814             return aCurv
10815
10816         ## Measure curvature of a curve at a point.
10817         #  @param theCurve a curve.
10818         #  @param thePoint given point.
10819         #  @return radius of curvature of \a theCurve.
10820         #
10821         #  @ref swig_todo "Example"
10822         @ManageTransactions("MeasuOp")
10823         def CurveCurvatureByPoint(self, theCurve, thePoint):
10824             """
10825             Measure curvature of a curve at a point.
10826
10827             Parameters:
10828                 theCurve a curve.
10829                 thePoint given point.
10830
10831             Returns:
10832                 radius of curvature of theCurve.
10833             """
10834             aCurv = self.MeasuOp.CurveCurvatureByPoint(theCurve,thePoint)
10835             RaiseIfFailed("CurveCurvatureByPoint", self.MeasuOp)
10836             return aCurv
10837         ## @}
10838
10839         ## @name Surface Curvature Measurement
10840         #  Methods for receiving max and min radius of curvature of surfaces
10841         #  in the given point
10842         ## @{
10843
10844         ## Measure max radius of curvature of surface.
10845         #  @param theSurf the given surface.
10846         #  @param theUParam Value of U-parameter on the referenced surface.
10847         #  @param theVParam Value of V-parameter on the referenced surface.
10848         #  @return max radius of curvature of theSurf.
10849         #
10850         ## @ref swig_todo "Example"
10851         @ManageTransactions("MeasuOp")
10852         def MaxSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
10853             """
10854             Measure max radius of curvature of surface.
10855
10856             Parameters:
10857                 theSurf the given surface.
10858                 theUParam Value of U-parameter on the referenced surface.
10859                 theVParam Value of V-parameter on the referenced surface.
10860
10861             Returns:
10862                 max radius of curvature of theSurf.
10863             """
10864             # Example: see GEOM_TestMeasures.py
10865             aSurf = self.MeasuOp.MaxSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
10866             RaiseIfFailed("MaxSurfaceCurvatureByParam", self.MeasuOp)
10867             return aSurf
10868
10869         ## Measure max radius of curvature of surface in the given point
10870         #  @param theSurf the given surface.
10871         #  @param thePoint given point.
10872         #  @return max radius of curvature of theSurf.
10873         #
10874         ## @ref swig_todo "Example"
10875         @ManageTransactions("MeasuOp")
10876         def MaxSurfaceCurvatureByPoint(self, theSurf, thePoint):
10877             """
10878             Measure max radius of curvature of surface in the given point.
10879
10880             Parameters:
10881                 theSurf the given surface.
10882                 thePoint given point.
10883
10884             Returns:
10885                 max radius of curvature of theSurf.
10886             """
10887             aSurf = self.MeasuOp.MaxSurfaceCurvatureByPoint(theSurf,thePoint)
10888             RaiseIfFailed("MaxSurfaceCurvatureByPoint", self.MeasuOp)
10889             return aSurf
10890
10891         ## Measure min radius of curvature of surface.
10892         #  @param theSurf the given surface.
10893         #  @param theUParam Value of U-parameter on the referenced surface.
10894         #  @param theVParam Value of V-parameter on the referenced surface.
10895         #  @return min radius of curvature of theSurf.
10896         #
10897         ## @ref swig_todo "Example"
10898         @ManageTransactions("MeasuOp")
10899         def MinSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
10900             """
10901             Measure min radius of curvature of surface.
10902
10903             Parameters:
10904                 theSurf the given surface.
10905                 theUParam Value of U-parameter on the referenced surface.
10906                 theVParam Value of V-parameter on the referenced surface.
10907
10908             Returns:
10909                 Min radius of curvature of theSurf.
10910             """
10911             aSurf = self.MeasuOp.MinSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
10912             RaiseIfFailed("MinSurfaceCurvatureByParam", self.MeasuOp)
10913             return aSurf
10914
10915         ## Measure min radius of curvature of surface in the given point
10916         #  @param theSurf the given surface.
10917         #  @param thePoint given point.
10918         #  @return min radius of curvature of theSurf.
10919         #
10920         ## @ref swig_todo "Example"
10921         @ManageTransactions("MeasuOp")
10922         def MinSurfaceCurvatureByPoint(self, theSurf, thePoint):
10923             """
10924             Measure min radius of curvature of surface in the given point.
10925
10926             Parameters:
10927                 theSurf the given surface.
10928                 thePoint given point.
10929
10930             Returns:
10931                 Min radius of curvature of theSurf.
10932             """
10933             aSurf = self.MeasuOp.MinSurfaceCurvatureByPoint(theSurf,thePoint)
10934             RaiseIfFailed("MinSurfaceCurvatureByPoint", self.MeasuOp)
10935             return aSurf
10936         ## @}
10937
10938         ## Get min and max tolerances of sub-shapes of theShape
10939         #  @param theShape Shape, to get tolerances of.
10940         #  @return [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]\n
10941         #  FaceMin,FaceMax: Min and max tolerances of the faces.\n
10942         #  EdgeMin,EdgeMax: Min and max tolerances of the edges.\n
10943         #  VertMin,VertMax: Min and max tolerances of the vertices.
10944         #
10945         #  @ref tui_tolerance_page "Example"
10946         @ManageTransactions("MeasuOp")
10947         def Tolerance(self,theShape):
10948             """
10949             Get min and max tolerances of sub-shapes of theShape
10950
10951             Parameters:
10952                 theShape Shape, to get tolerances of.
10953
10954             Returns:
10955                 [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]
10956                  FaceMin,FaceMax: Min and max tolerances of the faces.
10957                  EdgeMin,EdgeMax: Min and max tolerances of the edges.
10958                  VertMin,VertMax: Min and max tolerances of the vertices.
10959             """
10960             # Example: see GEOM_TestMeasures.py
10961             aTuple = self.MeasuOp.GetTolerance(theShape)
10962             RaiseIfFailed("GetTolerance", self.MeasuOp)
10963             return aTuple
10964
10965         ## Obtain description of the given shape (number of sub-shapes of each type)
10966         #  @param theShape Shape to be described.
10967         #  @return Description of the given shape.
10968         #
10969         #  @ref tui_whatis_page "Example"
10970         @ManageTransactions("MeasuOp")
10971         def WhatIs(self,theShape):
10972             """
10973             Obtain description of the given shape (number of sub-shapes of each type)
10974
10975             Parameters:
10976                 theShape Shape to be described.
10977
10978             Returns:
10979                 Description of the given shape.
10980             """
10981             # Example: see GEOM_TestMeasures.py
10982             aDescr = self.MeasuOp.WhatIs(theShape)
10983             RaiseIfFailed("WhatIs", self.MeasuOp)
10984             return aDescr
10985
10986         ## Obtain quantity of shapes of the given type in \a theShape.
10987         #  If \a theShape is of type \a theType, it is also counted.
10988         #  @param theShape Shape to be described.
10989         #  @param theType the given ShapeType().
10990         #  @return Quantity of shapes of type \a theType in \a theShape.
10991         #
10992         #  @ref tui_measurement_tools_page "Example"
10993         def NbShapes (self, theShape, theType):
10994             """
10995             Obtain quantity of shapes of the given type in theShape.
10996             If theShape is of type theType, it is also counted.
10997
10998             Parameters:
10999                 theShape Shape to be described.
11000                 theType the given geompy.ShapeType
11001
11002             Returns:
11003                 Quantity of shapes of type theType in theShape.
11004             """
11005             # Example: see GEOM_TestMeasures.py
11006             listSh = self.SubShapeAllIDs(theShape, theType)
11007             Nb = len(listSh)
11008             return Nb
11009
11010         ## Obtain quantity of shapes of each type in \a theShape.
11011         #  The \a theShape is also counted.
11012         #  @param theShape Shape to be described.
11013         #  @return Dictionary of ShapeType() with bound quantities of shapes.
11014         #
11015         #  @ref tui_measurement_tools_page "Example"
11016         def ShapeInfo (self, theShape):
11017             """
11018             Obtain quantity of shapes of each type in theShape.
11019             The theShape is also counted.
11020
11021             Parameters:
11022                 theShape Shape to be described.
11023
11024             Returns:
11025                 Dictionary of geompy.ShapeType with bound quantities of shapes.
11026             """
11027             # Example: see GEOM_TestMeasures.py
11028             aDict = {}
11029             for typeSh in self.ShapeType:
11030                 if typeSh in ( "AUTO", "SHAPE" ): continue
11031                 listSh = self.SubShapeAllIDs(theShape, self.ShapeType[typeSh])
11032                 Nb = len(listSh)
11033                 aDict[typeSh] = Nb
11034                 pass
11035             return aDict
11036
11037         def GetCreationInformation(self, theShape):
11038             res = ''
11039             infos = theShape.GetCreationInformation()
11040             for info in infos:
11041                 # operationName
11042                 opName = info.operationName
11043                 if not opName: opName = "no info available"
11044                 if res: res += "\n"
11045                 res += "Operation: " + opName
11046                 # parameters
11047                 for parVal in info.params:
11048                     res += "\n \t%s = %s" % ( parVal.name, parVal.value )
11049             return res
11050
11051         ## Get a point, situated at the centre of mass of theShape.
11052         #  @param theShape Shape to define centre of mass of.
11053         #  @param theName Object name; when specified, this parameter is used
11054         #         for result publication in the study. Otherwise, if automatic
11055         #         publication is switched on, default value is used for result name.
11056         #
11057         #  @return New GEOM.GEOM_Object, containing the created point.
11058         #
11059         #  @ref tui_center_of_mass_page "Example"
11060         @ManageTransactions("MeasuOp")
11061         def MakeCDG(self, theShape, theName=None):
11062             """
11063             Get a point, situated at the centre of mass of theShape.
11064
11065             Parameters:
11066                 theShape Shape to define centre of mass of.
11067                 theName Object name; when specified, this parameter is used
11068                         for result publication in the study. Otherwise, if automatic
11069                         publication is switched on, default value is used for result name.
11070
11071             Returns:
11072                 New GEOM.GEOM_Object, containing the created point.
11073             """
11074             # Example: see GEOM_TestMeasures.py
11075             anObj = self.MeasuOp.GetCentreOfMass(theShape)
11076             RaiseIfFailed("GetCentreOfMass", self.MeasuOp)
11077             self._autoPublish(anObj, theName, "centerOfMass")
11078             return anObj
11079
11080         ## Get a vertex sub-shape by index depended with orientation.
11081         #  @param theShape Shape to find sub-shape.
11082         #  @param theIndex Index to find vertex by this index (starting from zero)
11083         #  @param theName Object name; when specified, this parameter is used
11084         #         for result publication in the study. Otherwise, if automatic
11085         #         publication is switched on, default value is used for result name.
11086         #
11087         #  @return New GEOM.GEOM_Object, containing the created vertex.
11088         #
11089         #  @ref tui_measurement_tools_page "Example"
11090         @ManageTransactions("MeasuOp")
11091         def GetVertexByIndex(self, theShape, theIndex, theName=None):
11092             """
11093             Get a vertex sub-shape by index depended with orientation.
11094
11095             Parameters:
11096                 theShape Shape to find sub-shape.
11097                 theIndex Index to find vertex by this index (starting from zero)
11098                 theName Object name; when specified, this parameter is used
11099                         for result publication in the study. Otherwise, if automatic
11100                         publication is switched on, default value is used for result name.
11101
11102             Returns:
11103                 New GEOM.GEOM_Object, containing the created vertex.
11104             """
11105             # Example: see GEOM_TestMeasures.py
11106             anObj = self.MeasuOp.GetVertexByIndex(theShape, theIndex)
11107             RaiseIfFailed("GetVertexByIndex", self.MeasuOp)
11108             self._autoPublish(anObj, theName, "vertex")
11109             return anObj
11110
11111         ## Get the first vertex of wire/edge depended orientation.
11112         #  @param theShape Shape to find first vertex.
11113         #  @param theName Object name; when specified, this parameter is used
11114         #         for result publication in the study. Otherwise, if automatic
11115         #         publication is switched on, default value is used for result name.
11116         #
11117         #  @return New GEOM.GEOM_Object, containing the created vertex.
11118         #
11119         #  @ref tui_measurement_tools_page "Example"
11120         def GetFirstVertex(self, theShape, theName=None):
11121             """
11122             Get the first vertex of wire/edge depended orientation.
11123
11124             Parameters:
11125                 theShape Shape to find first vertex.
11126                 theName Object name; when specified, this parameter is used
11127                         for result publication in the study. Otherwise, if automatic
11128                         publication is switched on, default value is used for result name.
11129
11130             Returns:
11131                 New GEOM.GEOM_Object, containing the created vertex.
11132             """
11133             # Example: see GEOM_TestMeasures.py
11134             # note: auto-publishing is done in self.GetVertexByIndex()
11135             return self.GetVertexByIndex(theShape, 0, theName)
11136
11137         ## Get the last vertex of wire/edge depended orientation.
11138         #  @param theShape Shape to find last vertex.
11139         #  @param theName Object name; when specified, this parameter is used
11140         #         for result publication in the study. Otherwise, if automatic
11141         #         publication is switched on, default value is used for result name.
11142         #
11143         #  @return New GEOM.GEOM_Object, containing the created vertex.
11144         #
11145         #  @ref tui_measurement_tools_page "Example"
11146         def GetLastVertex(self, theShape, theName=None):
11147             """
11148             Get the last vertex of wire/edge depended orientation.
11149
11150             Parameters:
11151                 theShape Shape to find last vertex.
11152                 theName Object name; when specified, this parameter is used
11153                         for result publication in the study. Otherwise, if automatic
11154                         publication is switched on, default value is used for result name.
11155
11156             Returns:
11157                 New GEOM.GEOM_Object, containing the created vertex.
11158             """
11159             # Example: see GEOM_TestMeasures.py
11160             nb_vert =  self.NumberOfSubShapes(theShape, self.ShapeType["VERTEX"])
11161             # note: auto-publishing is done in self.GetVertexByIndex()
11162             return self.GetVertexByIndex(theShape, (nb_vert-1), theName)
11163
11164         ## Get a normale to the given face. If the point is not given,
11165         #  the normale is calculated at the center of mass.
11166         #  @param theFace Face to define normale of.
11167         #  @param theOptionalPoint Point to compute the normale at.
11168         #  @param theName Object name; when specified, this parameter is used
11169         #         for result publication in the study. Otherwise, if automatic
11170         #         publication is switched on, default value is used for result name.
11171         #
11172         #  @return New GEOM.GEOM_Object, containing the created vector.
11173         #
11174         #  @ref swig_todo "Example"
11175         @ManageTransactions("MeasuOp")
11176         def GetNormal(self, theFace, theOptionalPoint = None, theName=None):
11177             """
11178             Get a normale to the given face. If the point is not given,
11179             the normale is calculated at the center of mass.
11180
11181             Parameters:
11182                 theFace Face to define normale of.
11183                 theOptionalPoint Point to compute the normale at.
11184                 theName Object name; when specified, this parameter is used
11185                         for result publication in the study. Otherwise, if automatic
11186                         publication is switched on, default value is used for result name.
11187
11188             Returns:
11189                 New GEOM.GEOM_Object, containing the created vector.
11190             """
11191             # Example: see GEOM_TestMeasures.py
11192             anObj = self.MeasuOp.GetNormal(theFace, theOptionalPoint)
11193             RaiseIfFailed("GetNormal", self.MeasuOp)
11194             self._autoPublish(anObj, theName, "normal")
11195             return anObj
11196
11197         ## Print shape errors obtained from CheckShape.
11198         #  @param theShape Shape that was checked.
11199         #  @param theShapeErrors the shape errors obtained by CheckShape.
11200         #  @param theReturnStatus If 0 the description of problem is printed.
11201         #                         If 1 the description of problem is returned.
11202         #  @return If theReturnStatus is equal to 1 the description is returned.
11203         #          Otherwise doesn't return anything.
11204         #
11205         #  @ref tui_check_shape_page "Example"
11206         @ManageTransactions("MeasuOp")
11207         def PrintShapeErrors(self, theShape, theShapeErrors, theReturnStatus = 0):
11208             """
11209             Print shape errors obtained from CheckShape.
11210
11211             Parameters:
11212                 theShape Shape that was checked.
11213                 theShapeErrors the shape errors obtained by CheckShape.
11214                 theReturnStatus If 0 the description of problem is printed.
11215                                 If 1 the description of problem is returned.
11216
11217             Returns:
11218                 If theReturnStatus is equal to 1 the description is returned.
11219                   Otherwise doesn't return anything.
11220             """
11221             # Example: see GEOM_TestMeasures.py
11222             Descr = self.MeasuOp.PrintShapeErrors(theShape, theShapeErrors)
11223             if theReturnStatus == 1:
11224                 return Descr
11225             print Descr
11226             pass
11227
11228         ## Check a topology of the given shape.
11229         #  @param theShape Shape to check validity of.
11230         #  @param theIsCheckGeom If FALSE, only the shape's topology will be checked, \n
11231         #                        if TRUE, the shape's geometry will be checked also.
11232         #  @param theReturnStatus If 0 and if theShape is invalid, a description
11233         #                         of problem is printed.
11234         #                         If 1 isValid flag and the description of
11235         #                         problem is returned.
11236         #                         If 2 isValid flag and the list of error data
11237         #                         is returned.
11238         #  @return TRUE, if the shape "seems to be valid".
11239         #          If theShape is invalid, prints a description of problem.
11240         #          If theReturnStatus is equal to 1 the description is returned
11241         #          along with IsValid flag.
11242         #          If theReturnStatus is equal to 2 the list of error data is
11243         #          returned along with IsValid flag.
11244         #
11245         #  @ref tui_check_shape_page "Example"
11246         @ManageTransactions("MeasuOp")
11247         def CheckShape(self,theShape, theIsCheckGeom = 0, theReturnStatus = 0):
11248             """
11249             Check a topology of the given shape.
11250
11251             Parameters:
11252                 theShape Shape to check validity of.
11253                 theIsCheckGeom If FALSE, only the shape's topology will be checked,
11254                                if TRUE, the shape's geometry will be checked also.
11255                 theReturnStatus If 0 and if theShape is invalid, a description
11256                                 of problem is printed.
11257                                 If 1 IsValid flag and the description of
11258                                 problem is returned.
11259                                 If 2 IsValid flag and the list of error data
11260                                 is returned.
11261
11262             Returns:
11263                 TRUE, if the shape "seems to be valid".
11264                 If theShape is invalid, prints a description of problem.
11265                 If theReturnStatus is equal to 1 the description is returned
11266                 along with IsValid flag.
11267                 If theReturnStatus is equal to 2 the list of error data is
11268                 returned along with IsValid flag.
11269             """
11270             # Example: see GEOM_TestMeasures.py
11271             if theIsCheckGeom:
11272                 (IsValid, ShapeErrors) = self.MeasuOp.CheckShapeWithGeometry(theShape)
11273                 RaiseIfFailed("CheckShapeWithGeometry", self.MeasuOp)
11274             else:
11275                 (IsValid, ShapeErrors) = self.MeasuOp.CheckShape(theShape)
11276                 RaiseIfFailed("CheckShape", self.MeasuOp)
11277             if IsValid == 0:
11278                 if theReturnStatus == 0:
11279                     Descr = self.MeasuOp.PrintShapeErrors(theShape, ShapeErrors)
11280                     print Descr
11281             if theReturnStatus == 1:
11282               Descr = self.MeasuOp.PrintShapeErrors(theShape, ShapeErrors)
11283               return (IsValid, Descr)
11284             elif theReturnStatus == 2:
11285               return (IsValid, ShapeErrors)
11286             return IsValid
11287
11288         ## Detect self-intersections in the given shape.
11289         #  @param theShape Shape to check.
11290         #  @param theCheckLevel is the level of self-intersection check.
11291         #         Possible input values are:
11292         #         - GEOM.SI_V_V(0) - only V/V interferences
11293         #         - GEOM.SI_V_E(1) - V/V and V/E interferences
11294         #         - GEOM.SI_E_E(2) - V/V, V/E and E/E interferences
11295         #         - GEOM.SI_V_F(3) - V/V, V/E, E/E and V/F interferences
11296         #         - GEOM.SI_E_F(4) - V/V, V/E, E/E, V/F and E/F interferences
11297         #         - GEOM.SI_ALL(5) - all interferences.
11298         #  @return TRUE, if the shape contains no self-intersections.
11299         #
11300         #  @ref tui_check_self_intersections_page "Example"
11301         @ManageTransactions("MeasuOp")
11302         def CheckSelfIntersections(self, theShape, theCheckLevel = GEOM.SI_ALL):
11303             """
11304             Detect self-intersections in the given shape.
11305
11306             Parameters:
11307                 theShape Shape to check.
11308                 theCheckLevel is the level of self-intersection check.
11309                   Possible input values are:
11310                    - GEOM.SI_V_V(0) - only V/V interferences
11311                    - GEOM.SI_V_E(1) - V/V and V/E interferences
11312                    - GEOM.SI_E_E(2) - V/V, V/E and E/E interferences
11313                    - GEOM.SI_V_F(3) - V/V, V/E, E/E and V/F interferences
11314                    - GEOM.SI_E_F(4) - V/V, V/E, E/E, V/F and E/F interferences
11315                    - GEOM.SI_ALL(5) - all interferences.
11316  
11317             Returns:
11318                 TRUE, if the shape contains no self-intersections.
11319             """
11320             # Example: see GEOM_TestMeasures.py
11321             (IsValid, Pairs) = self.MeasuOp.CheckSelfIntersections(theShape, EnumToLong(theCheckLevel))
11322             RaiseIfFailed("CheckSelfIntersections", self.MeasuOp)
11323             return IsValid
11324
11325         ## Detect self-intersections of the given shape with algorithm based on mesh intersections.
11326         #  @param theShape Shape to check.
11327         #  @param theDeflection Linear deflection coefficient that specifies quality of tesselation:
11328         #         - if \a theDeflection <= 0, default deflection 0.001 is used
11329         #  @param theTolerance Specifies a distance between sub-shapes used for detecting gaps:
11330         #         - if \a theTolerance <= 0, algorithm detects intersections (default behavior)
11331         #         - if \a theTolerance > 0, algorithm detects gaps
11332         #  @return TRUE, if the shape contains no self-intersections.
11333         #
11334         #  @ref tui_check_self_intersections_fast_page "Example"
11335         @ManageTransactions("MeasuOp")
11336         def CheckSelfIntersectionsFast(self, theShape, theDeflection = 0.001, theTolerance = 0.0):
11337             """
11338             Detect self-intersections of the given shape with algorithm based on mesh intersections.
11339
11340             Parameters:
11341                 theShape Shape to check.
11342                 theDeflection Linear deflection coefficient that specifies quality of tesselation:
11343                     - if theDeflection <= 0, default deflection 0.001 is used
11344                 theTolerance Specifies a distance between shapes used for detecting gaps:
11345                     - if theTolerance <= 0, algorithm detects intersections (default behavior)
11346                     - if theTolerance > 0, algorithm detects gaps
11347  
11348             Returns:
11349                 TRUE, if the shape contains no self-intersections.
11350             """
11351             # Example: see GEOM_TestMeasures.py
11352             (IsValid, Pairs) = self.MeasuOp.CheckSelfIntersectionsFast(theShape, theDeflection, theTolerance)
11353             RaiseIfFailed("CheckSelfIntersectionsFast", self.MeasuOp)
11354             return IsValid
11355
11356         ## Detect intersections of the given shapes with algorithm based on mesh intersections.
11357         #  @param theShape1 First source object
11358         #  @param theShape2 Second source object
11359         #  @param theTolerance Specifies a distance between shapes used for detecting gaps:
11360         #         - if \a theTolerance <= 0, algorithm detects intersections (default behavior)
11361         #         - if \a theTolerance > 0, algorithm detects gaps
11362         #  @param theDeflection Linear deflection coefficient that specifies quality of tesselation:
11363         #         - if \a theDeflection <= 0, default deflection 0.001 is used
11364         #  @return TRUE, if there are intersections (gaps) between source shapes
11365         #  @return List of sub-shapes IDs from 1st shape that localize intersection.
11366         #  @return List of sub-shapes IDs from 2nd shape that localize intersection.
11367         #
11368         #  @ref tui_fast_intersection_page "Example"
11369         @ManageTransactions("MeasuOp")
11370         def FastIntersect(self, theShape1, theShape2, theTolerance = 0.0, theDeflection = 0.001):
11371             """
11372             Detect intersections of the given shapes with algorithm based on mesh intersections.
11373
11374             Parameters:
11375                 theShape1 First source object
11376                 theShape2 Second source object
11377                 theTolerance Specifies a distance between shapes used for detecting gaps:
11378                     - if theTolerance <= 0, algorithm detects intersections (default behavior)
11379                     - if theTolerance > 0, algorithm detects gaps
11380                 theDeflection Linear deflection coefficient that specifies quality of tesselation:
11381                     - if theDeflection <= 0, default deflection 0.001 is used
11382  
11383             Returns:
11384                 TRUE, if there are intersections (gaps) between source shapes
11385                 List of sub-shapes IDs from 1st shape that localize intersection.
11386                 List of sub-shapes IDs from 2nd shape that localize intersection.
11387             """
11388             # Example: see GEOM_TestMeasures.py
11389             IsOk, Res1, Res2 = self.MeasuOp.FastIntersect(theShape1, theShape2, theTolerance, theDeflection)
11390             RaiseIfFailed("FastIntersect", self.MeasuOp)
11391             return IsOk, Res1, Res2
11392
11393         ## Get position (LCS) of theShape.
11394         #
11395         #  Origin of the LCS is situated at the shape's center of mass.
11396         #  Axes of the LCS are obtained from shape's location or,
11397         #  if the shape is a planar face, from position of its plane.
11398         #
11399         #  @param theShape Shape to calculate position of.
11400         #  @return [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
11401         #          Ox,Oy,Oz: Coordinates of shape's LCS origin.
11402         #          Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
11403         #          Xx,Xy,Xz: Coordinates of shape's LCS X direction.
11404         #
11405         #  @ref swig_todo "Example"
11406         @ManageTransactions("MeasuOp")
11407         def GetPosition(self,theShape):
11408             """
11409             Get position (LCS) of theShape.
11410             Origin of the LCS is situated at the shape's center of mass.
11411             Axes of the LCS are obtained from shape's location or,
11412             if the shape is a planar face, from position of its plane.
11413
11414             Parameters:
11415                 theShape Shape to calculate position of.
11416
11417             Returns:
11418                 [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
11419                  Ox,Oy,Oz: Coordinates of shape's LCS origin.
11420                  Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
11421                  Xx,Xy,Xz: Coordinates of shape's LCS X direction.
11422             """
11423             # Example: see GEOM_TestMeasures.py
11424             aTuple = self.MeasuOp.GetPosition(theShape)
11425             RaiseIfFailed("GetPosition", self.MeasuOp)
11426             return aTuple
11427
11428         ## Get kind of theShape.
11429         #
11430         #  @param theShape Shape to get a kind of.
11431         #  @return Returns a kind of shape in terms of <VAR>GEOM.GEOM_IKindOfShape.shape_kind</VAR> enumeration
11432         #          and a list of parameters, describing the shape.
11433         #  @note  Concrete meaning of each value, returned via \a theIntegers
11434         #         or \a theDoubles list depends on the kind() of the shape.
11435         #
11436         #  @ref swig_todo "Example"
11437         @ManageTransactions("MeasuOp")
11438         def KindOfShape(self,theShape):
11439             """
11440             Get kind of theShape.
11441
11442             Parameters:
11443                 theShape Shape to get a kind of.
11444
11445             Returns:
11446                 a kind of shape in terms of GEOM_IKindOfShape.shape_kind enumeration
11447                     and a list of parameters, describing the shape.
11448             Note:
11449                 Concrete meaning of each value, returned via theIntegers
11450                 or theDoubles list depends on the geompy.kind of the shape
11451             """
11452             # Example: see GEOM_TestMeasures.py
11453             aRoughTuple = self.MeasuOp.KindOfShape(theShape)
11454             RaiseIfFailed("KindOfShape", self.MeasuOp)
11455
11456             aKind  = aRoughTuple[0]
11457             anInts = aRoughTuple[1]
11458             aDbls  = aRoughTuple[2]
11459
11460             # Now there is no exception from this rule:
11461             aKindTuple = [aKind] + aDbls + anInts
11462
11463             # If they are we will regroup parameters for such kind of shape.
11464             # For example:
11465             #if aKind == kind.SOME_KIND:
11466             #    #  SOME_KIND     int int double int double double
11467             #    aKindTuple = [aKind, anInts[0], anInts[1], aDbls[0], anInts[2], aDbls[1], aDbls[2]]
11468
11469             return aKindTuple
11470
11471         ## Returns the string that describes if the shell is good for solid.
11472         #  This is a support method for MakeSolid.
11473         #
11474         #  @param theShell the shell to be checked.
11475         #  @return Returns a string that describes the shell validity for
11476         #          solid construction.
11477         @ManageTransactions("MeasuOp")
11478         def _IsGoodForSolid(self, theShell):
11479             """
11480             Returns the string that describes if the shell is good for solid.
11481             This is a support method for MakeSolid.
11482
11483             Parameter:
11484                 theShell the shell to be checked.
11485
11486             Returns:
11487                 Returns a string that describes the shell validity for
11488                 solid construction.
11489             """
11490             aDescr = self.MeasuOp.IsGoodForSolid(theShell)
11491             return aDescr
11492
11493         # end of l2_measure
11494         ## @}
11495
11496         ## @addtogroup l2_import_export
11497         ## @{
11498
11499         ## Import a shape from the BREP, IGES, STEP or other file
11500         #  (depends on given format) with given name.
11501         #
11502         #  Note: this function is deprecated, it is kept for backward compatibility only
11503         #  Use Import<FormatName> instead, where <FormatName> is a name of desirable format to import.
11504         #
11505         #  @param theFileName The file, containing the shape.
11506         #  @param theFormatName Specify format for the file reading.
11507         #         Available formats can be obtained with InsertOp.ImportTranslators() method.
11508         #         If format 'IGES_SCALE' is used instead of 'IGES' or
11509         #            format 'STEP_SCALE' is used instead of 'STEP',
11510         #            length unit will be set to 'meter' and result model will be scaled.
11511         #  @param theName Object name; when specified, this parameter is used
11512         #         for result publication in the study. Otherwise, if automatic
11513         #         publication is switched on, default value is used for result name.
11514         #
11515         #  @return New GEOM.GEOM_Object, containing the imported shape.
11516         #          If material names are imported it returns the list of
11517         #          objects. The first one is the imported object followed by
11518         #          material groups.
11519         #  @note Auto publishing is allowed for the shape itself. Imported
11520         #        material groups are not automatically published.
11521         #
11522         #  @ref swig_Import_Export "Example"
11523         @ManageTransactions("InsertOp")
11524         def ImportFile(self, theFileName, theFormatName, theName=None):
11525             """
11526             Import a shape from the BREP, IGES, STEP or other file
11527             (depends on given format) with given name.
11528
11529             Note: this function is deprecated, it is kept for backward compatibility only
11530             Use Import<FormatName> instead, where <FormatName> is a name of desirable format to import.
11531
11532             Parameters: 
11533                 theFileName The file, containing the shape.
11534                 theFormatName Specify format for the file reading.
11535                     Available formats can be obtained with geompy.InsertOp.ImportTranslators() method.
11536                     If format 'IGES_SCALE' is used instead of 'IGES' or
11537                        format 'STEP_SCALE' is used instead of 'STEP',
11538                        length unit will be set to 'meter' and result model will be scaled.
11539                 theName Object name; when specified, this parameter is used
11540                         for result publication in the study. Otherwise, if automatic
11541                         publication is switched on, default value is used for result name.
11542
11543             Returns:
11544                 New GEOM.GEOM_Object, containing the imported shape.
11545                 If material names are imported it returns the list of
11546                 objects. The first one is the imported object followed by
11547                 material groups.
11548             Note:
11549                 Auto publishing is allowed for the shape itself. Imported
11550                 material groups are not automatically published.
11551             """
11552             # Example: see GEOM_TestOthers.py
11553             print """
11554             WARNING: Function ImportFile is deprecated, use Import<FormatName> instead,
11555             where <FormatName> is a name of desirable format for importing.
11556             """
11557             aListObj = self.InsertOp.ImportFile(theFileName, theFormatName)
11558             RaiseIfFailed("ImportFile", self.InsertOp)
11559             aNbObj = len(aListObj)
11560             if aNbObj > 0:
11561                 self._autoPublish(aListObj[0], theName, "imported")
11562             if aNbObj == 1:
11563                 return aListObj[0]
11564             return aListObj
11565
11566         ## Deprecated analog of ImportFile()
11567         def Import(self, theFileName, theFormatName, theName=None):
11568             """
11569             Deprecated analog of geompy.ImportFile, kept for backward compatibility only.
11570             """
11571             # note: auto-publishing is done in self.ImportFile()
11572             return self.ImportFile(theFileName, theFormatName, theName)
11573
11574         ## Read a shape from the binary stream, containing its bounding representation (BRep).
11575         #  @note This method will not be dumped to the python script by DumpStudy functionality.
11576         #  @note GEOM.GEOM_Object.GetShapeStream() method can be used to obtain the shape's BRep stream.
11577         #  @param theStream The BRep binary stream.
11578         #  @param theName Object name; when specified, this parameter is used
11579         #         for result publication in the study. Otherwise, if automatic
11580         #         publication is switched on, default value is used for result name.
11581         #
11582         #  @return New GEOM_Object, containing the shape, read from theStream.
11583         #
11584         #  @ref swig_Import_Export "Example"
11585         @ManageTransactions("InsertOp")
11586         def RestoreShape (self, theStream, theName=None):
11587             """
11588             Read a shape from the binary stream, containing its bounding representation (BRep).
11589
11590             Note:
11591                 shape.GetShapeStream() method can be used to obtain the shape's BRep stream.
11592
11593             Parameters:
11594                 theStream The BRep binary stream.
11595                 theName Object name; when specified, this parameter is used
11596                         for result publication in the study. Otherwise, if automatic
11597                         publication is switched on, default value is used for result name.
11598
11599             Returns:
11600                 New GEOM_Object, containing the shape, read from theStream.
11601             """
11602             # Example: see GEOM_TestOthers.py
11603             anObj = self.InsertOp.RestoreShape(theStream)
11604             RaiseIfFailed("RestoreShape", self.InsertOp)
11605             self._autoPublish(anObj, theName, "restored")
11606             return anObj
11607
11608         ## Export the given shape into a file with given name.
11609         #
11610         #  Note: this function is deprecated, it is kept for backward compatibility only
11611         #  Use Export<FormatName> instead, where <FormatName> is a name of desirable format to export.
11612         #
11613         #  @param theObject Shape to be stored in the file.
11614         #  @param theFileName Name of the file to store the given shape in.
11615         #  @param theFormatName Specify format for the shape storage.
11616         #         Available formats can be obtained with
11617         #         geompy.InsertOp.ExportTranslators()[0] method.
11618         #
11619         #  @ref swig_Import_Export "Example"
11620         @ManageTransactions("InsertOp")
11621         def Export(self, theObject, theFileName, theFormatName):
11622             """
11623             Export the given shape into a file with given name.
11624
11625             Note: this function is deprecated, it is kept for backward compatibility only
11626             Use Export<FormatName> instead, where <FormatName> is a name of desirable format to export.
11627             
11628             Parameters: 
11629                 theObject Shape to be stored in the file.
11630                 theFileName Name of the file to store the given shape in.
11631                 theFormatName Specify format for the shape storage.
11632                               Available formats can be obtained with
11633                               geompy.InsertOp.ExportTranslators()[0] method.
11634             """
11635             # Example: see GEOM_TestOthers.py
11636             print """
11637             WARNING: Function Export is deprecated, use Export<FormatName> instead,
11638             where <FormatName> is a name of desirable format for exporting.
11639             """
11640             self.InsertOp.Export(theObject, theFileName, theFormatName)
11641             if self.InsertOp.IsDone() == 0:
11642                 raise RuntimeError,  "Export : " + self.InsertOp.GetErrorCode()
11643                 pass
11644             pass
11645
11646         # end of l2_import_export
11647         ## @}
11648
11649         ## @addtogroup l3_blocks
11650         ## @{
11651
11652         ## Create a quadrangle face from four edges. Order of Edges is not
11653         #  important. It is  not necessary that edges share the same vertex.
11654         #  @param E1,E2,E3,E4 Edges for the face bound.
11655         #  @param theName Object name; when specified, this parameter is used
11656         #         for result publication in the study. Otherwise, if automatic
11657         #         publication is switched on, default value is used for result name.
11658         #
11659         #  @return New GEOM.GEOM_Object, containing the created face.
11660         #
11661         #  @ref tui_building_by_blocks_page "Example"
11662         @ManageTransactions("BlocksOp")
11663         def MakeQuad(self, E1, E2, E3, E4, theName=None):
11664             """
11665             Create a quadrangle face from four edges. Order of Edges is not
11666             important. It is  not necessary that edges share the same vertex.
11667
11668             Parameters:
11669                 E1,E2,E3,E4 Edges for the face bound.
11670                 theName Object name; when specified, this parameter is used
11671                         for result publication in the study. Otherwise, if automatic
11672                         publication is switched on, default value is used for result name.
11673
11674             Returns:
11675                 New GEOM.GEOM_Object, containing the created face.
11676
11677             Example of usage:
11678                 qface1 = geompy.MakeQuad(edge1, edge2, edge3, edge4)
11679             """
11680             # Example: see GEOM_Spanner.py
11681             anObj = self.BlocksOp.MakeQuad(E1, E2, E3, E4)
11682             RaiseIfFailed("MakeQuad", self.BlocksOp)
11683             self._autoPublish(anObj, theName, "quad")
11684             return anObj
11685
11686         ## Create a quadrangle face on two edges.
11687         #  The missing edges will be built by creating the shortest ones.
11688         #  @param E1,E2 Two opposite edges for the face.
11689         #  @param theName Object name; when specified, this parameter is used
11690         #         for result publication in the study. Otherwise, if automatic
11691         #         publication is switched on, default value is used for result name.
11692         #
11693         #  @return New GEOM.GEOM_Object, containing the created face.
11694         #
11695         #  @ref tui_building_by_blocks_page "Example"
11696         @ManageTransactions("BlocksOp")
11697         def MakeQuad2Edges(self, E1, E2, theName=None):
11698             """
11699             Create a quadrangle face on two edges.
11700             The missing edges will be built by creating the shortest ones.
11701
11702             Parameters:
11703                 E1,E2 Two opposite edges for the face.
11704                 theName Object name; when specified, this parameter is used
11705                         for result publication in the study. Otherwise, if automatic
11706                         publication is switched on, default value is used for result name.
11707
11708             Returns:
11709                 New GEOM.GEOM_Object, containing the created face.
11710
11711             Example of usage:
11712                 # create vertices
11713                 p1 = geompy.MakeVertex(  0.,   0.,   0.)
11714                 p2 = geompy.MakeVertex(150.,  30.,   0.)
11715                 p3 = geompy.MakeVertex(  0., 120.,  50.)
11716                 p4 = geompy.MakeVertex(  0.,  40.,  70.)
11717                 # create edges
11718                 edge1 = geompy.MakeEdge(p1, p2)
11719                 edge2 = geompy.MakeEdge(p3, p4)
11720                 # create a quadrangle face from two edges
11721                 qface2 = geompy.MakeQuad2Edges(edge1, edge2)
11722             """
11723             # Example: see GEOM_Spanner.py
11724             anObj = self.BlocksOp.MakeQuad2Edges(E1, E2)
11725             RaiseIfFailed("MakeQuad2Edges", self.BlocksOp)
11726             self._autoPublish(anObj, theName, "quad")
11727             return anObj
11728
11729         ## Create a quadrangle face with specified corners.
11730         #  The missing edges will be built by creating the shortest ones.
11731         #  @param V1,V2,V3,V4 Corner vertices for the face.
11732         #  @param theName Object name; when specified, this parameter is used
11733         #         for result publication in the study. Otherwise, if automatic
11734         #         publication is switched on, default value is used for result name.
11735         #
11736         #  @return New GEOM.GEOM_Object, containing the created face.
11737         #
11738         #  @ref tui_building_by_blocks_page "Example 1"
11739         #  \n @ref swig_MakeQuad4Vertices "Example 2"
11740         @ManageTransactions("BlocksOp")
11741         def MakeQuad4Vertices(self, V1, V2, V3, V4, theName=None):
11742             """
11743             Create a quadrangle face with specified corners.
11744             The missing edges will be built by creating the shortest ones.
11745
11746             Parameters:
11747                 V1,V2,V3,V4 Corner vertices for the face.
11748                 theName Object name; when specified, this parameter is used
11749                         for result publication in the study. Otherwise, if automatic
11750                         publication is switched on, default value is used for result name.
11751
11752             Returns:
11753                 New GEOM.GEOM_Object, containing the created face.
11754
11755             Example of usage:
11756                 # create vertices
11757                 p1 = geompy.MakeVertex(  0.,   0.,   0.)
11758                 p2 = geompy.MakeVertex(150.,  30.,   0.)
11759                 p3 = geompy.MakeVertex(  0., 120.,  50.)
11760                 p4 = geompy.MakeVertex(  0.,  40.,  70.)
11761                 # create a quadrangle from four points in its corners
11762                 qface3 = geompy.MakeQuad4Vertices(p1, p2, p3, p4)
11763             """
11764             # Example: see GEOM_Spanner.py
11765             anObj = self.BlocksOp.MakeQuad4Vertices(V1, V2, V3, V4)
11766             RaiseIfFailed("MakeQuad4Vertices", self.BlocksOp)
11767             self._autoPublish(anObj, theName, "quad")
11768             return anObj
11769
11770         ## Create a hexahedral solid, bounded by the six given faces. Order of
11771         #  faces is not important. It is  not necessary that Faces share the same edge.
11772         #  @param F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
11773         #  @param theName Object name; when specified, this parameter is used
11774         #         for result publication in the study. Otherwise, if automatic
11775         #         publication is switched on, default value is used for result name.
11776         #
11777         #  @return New GEOM.GEOM_Object, containing the created solid.
11778         #
11779         #  @ref tui_building_by_blocks_page "Example 1"
11780         #  \n @ref swig_MakeHexa "Example 2"
11781         @ManageTransactions("BlocksOp")
11782         def MakeHexa(self, F1, F2, F3, F4, F5, F6, theName=None):
11783             """
11784             Create a hexahedral solid, bounded by the six given faces. Order of
11785             faces is not important. It is  not necessary that Faces share the same edge.
11786
11787             Parameters:
11788                 F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
11789                 theName Object name; when specified, this parameter is used
11790                         for result publication in the study. Otherwise, if automatic
11791                         publication is switched on, default value is used for result name.
11792
11793             Returns:
11794                 New GEOM.GEOM_Object, containing the created solid.
11795
11796             Example of usage:
11797                 solid = geompy.MakeHexa(qface1, qface2, qface3, qface4, qface5, qface6)
11798             """
11799             # Example: see GEOM_Spanner.py
11800             anObj = self.BlocksOp.MakeHexa(F1, F2, F3, F4, F5, F6)
11801             RaiseIfFailed("MakeHexa", self.BlocksOp)
11802             self._autoPublish(anObj, theName, "hexa")
11803             return anObj
11804
11805         ## Create a hexahedral solid between two given faces.
11806         #  The missing faces will be built by creating the smallest ones.
11807         #  @param F1,F2 Two opposite faces for the hexahedral solid.
11808         #  @param theName Object name; when specified, this parameter is used
11809         #         for result publication in the study. Otherwise, if automatic
11810         #         publication is switched on, default value is used for result name.
11811         #
11812         #  @return New GEOM.GEOM_Object, containing the created solid.
11813         #
11814         #  @ref tui_building_by_blocks_page "Example 1"
11815         #  \n @ref swig_MakeHexa2Faces "Example 2"
11816         @ManageTransactions("BlocksOp")
11817         def MakeHexa2Faces(self, F1, F2, theName=None):
11818             """
11819             Create a hexahedral solid between two given faces.
11820             The missing faces will be built by creating the smallest ones.
11821
11822             Parameters:
11823                 F1,F2 Two opposite faces for the hexahedral solid.
11824                 theName Object name; when specified, this parameter is used
11825                         for result publication in the study. Otherwise, if automatic
11826                         publication is switched on, default value is used for result name.
11827
11828             Returns:
11829                 New GEOM.GEOM_Object, containing the created solid.
11830
11831             Example of usage:
11832                 solid1 = geompy.MakeHexa2Faces(qface1, qface2)
11833             """
11834             # Example: see GEOM_Spanner.py
11835             anObj = self.BlocksOp.MakeHexa2Faces(F1, F2)
11836             RaiseIfFailed("MakeHexa2Faces", self.BlocksOp)
11837             self._autoPublish(anObj, theName, "hexa")
11838             return anObj
11839
11840         # end of l3_blocks
11841         ## @}
11842
11843         ## @addtogroup l3_blocks_op
11844         ## @{
11845
11846         ## Get a vertex, found in the given shape by its coordinates.
11847         #  @param theShape Block or a compound of blocks.
11848         #  @param theX,theY,theZ Coordinates of the sought vertex.
11849         #  @param theEpsilon Maximum allowed distance between the resulting
11850         #                    vertex and point with the given coordinates.
11851         #  @param theName Object name; when specified, this parameter is used
11852         #         for result publication in the study. Otherwise, if automatic
11853         #         publication is switched on, default value is used for result name.
11854         #
11855         #  @return New GEOM.GEOM_Object, containing the found vertex.
11856         #
11857         #  @ref swig_GetPoint "Example"
11858         @ManageTransactions("BlocksOp")
11859         def GetPoint(self, theShape, theX, theY, theZ, theEpsilon, theName=None):
11860             """
11861             Get a vertex, found in the given shape by its coordinates.
11862
11863             Parameters:
11864                 theShape Block or a compound of blocks.
11865                 theX,theY,theZ Coordinates of the sought vertex.
11866                 theEpsilon Maximum allowed distance between the resulting
11867                            vertex and point with the given coordinates.
11868                 theName Object name; when specified, this parameter is used
11869                         for result publication in the study. Otherwise, if automatic
11870                         publication is switched on, default value is used for result name.
11871
11872             Returns:
11873                 New GEOM.GEOM_Object, containing the found vertex.
11874
11875             Example of usage:
11876                 pnt = geompy.GetPoint(shape, -50,  50,  50, 0.01)
11877             """
11878             # Example: see GEOM_TestOthers.py
11879             anObj = self.BlocksOp.GetPoint(theShape, theX, theY, theZ, theEpsilon)
11880             RaiseIfFailed("GetPoint", self.BlocksOp)
11881             self._autoPublish(anObj, theName, "vertex")
11882             return anObj
11883
11884         ## Find a vertex of the given shape, which has minimal distance to the given point.
11885         #  @param theShape Any shape.
11886         #  @param thePoint Point, close to the desired vertex.
11887         #  @param theName Object name; when specified, this parameter is used
11888         #         for result publication in the study. Otherwise, if automatic
11889         #         publication is switched on, default value is used for result name.
11890         #
11891         #  @return New GEOM.GEOM_Object, containing the found vertex.
11892         #
11893         #  @ref swig_GetVertexNearPoint "Example"
11894         @ManageTransactions("BlocksOp")
11895         def GetVertexNearPoint(self, theShape, thePoint, theName=None):
11896             """
11897             Find a vertex of the given shape, which has minimal distance to the given point.
11898
11899             Parameters:
11900                 theShape Any shape.
11901                 thePoint Point, close to the desired vertex.
11902                 theName Object name; when specified, this parameter is used
11903                         for result publication in the study. Otherwise, if automatic
11904                         publication is switched on, default value is used for result name.
11905
11906             Returns:
11907                 New GEOM.GEOM_Object, containing the found vertex.
11908
11909             Example of usage:
11910                 pmidle = geompy.MakeVertex(50, 0, 50)
11911                 edge1 = geompy.GetEdgeNearPoint(blocksComp, pmidle)
11912             """
11913             # Example: see GEOM_TestOthers.py
11914             anObj = self.BlocksOp.GetVertexNearPoint(theShape, thePoint)
11915             RaiseIfFailed("GetVertexNearPoint", self.BlocksOp)
11916             self._autoPublish(anObj, theName, "vertex")
11917             return anObj
11918
11919         ## Get an edge, found in the given shape by two given vertices.
11920         #  @param theShape Block or a compound of blocks.
11921         #  @param thePoint1,thePoint2 Points, close to the ends of the desired edge.
11922         #  @param theName Object name; when specified, this parameter is used
11923         #         for result publication in the study. Otherwise, if automatic
11924         #         publication is switched on, default value is used for result name.
11925         #
11926         #  @return New GEOM.GEOM_Object, containing the found edge.
11927         #
11928         #  @ref swig_GetEdge "Example"
11929         @ManageTransactions("BlocksOp")
11930         def GetEdge(self, theShape, thePoint1, thePoint2, theName=None):
11931             """
11932             Get an edge, found in the given shape by two given vertices.
11933
11934             Parameters:
11935                 theShape Block or a compound of blocks.
11936                 thePoint1,thePoint2 Points, close to the ends of the desired edge.
11937                 theName Object name; when specified, this parameter is used
11938                         for result publication in the study. Otherwise, if automatic
11939                         publication is switched on, default value is used for result name.
11940
11941             Returns:
11942                 New GEOM.GEOM_Object, containing the found edge.
11943             """
11944             # Example: see GEOM_Spanner.py
11945             anObj = self.BlocksOp.GetEdge(theShape, thePoint1, thePoint2)
11946             RaiseIfFailed("GetEdge", self.BlocksOp)
11947             self._autoPublish(anObj, theName, "edge")
11948             return anObj
11949
11950         ## Find an edge of the given shape, which has minimal distance to the given point.
11951         #  @param theShape Block or a compound of blocks.
11952         #  @param thePoint Point, close to the desired edge.
11953         #  @param theName Object name; when specified, this parameter is used
11954         #         for result publication in the study. Otherwise, if automatic
11955         #         publication is switched on, default value is used for result name.
11956         #
11957         #  @return New GEOM.GEOM_Object, containing the found edge.
11958         #
11959         #  @ref swig_GetEdgeNearPoint "Example"
11960         @ManageTransactions("BlocksOp")
11961         def GetEdgeNearPoint(self, theShape, thePoint, theName=None):
11962             """
11963             Find an edge of the given shape, which has minimal distance to the given point.
11964
11965             Parameters:
11966                 theShape Block or a compound of blocks.
11967                 thePoint Point, close to the desired edge.
11968                 theName Object name; when specified, this parameter is used
11969                         for result publication in the study. Otherwise, if automatic
11970                         publication is switched on, default value is used for result name.
11971
11972             Returns:
11973                 New GEOM.GEOM_Object, containing the found edge.
11974             """
11975             # Example: see GEOM_TestOthers.py
11976             anObj = self.BlocksOp.GetEdgeNearPoint(theShape, thePoint)
11977             RaiseIfFailed("GetEdgeNearPoint", self.BlocksOp)
11978             self._autoPublish(anObj, theName, "edge")
11979             return anObj
11980
11981         ## Returns a face, found in the given shape by four given corner vertices.
11982         #  @param theShape Block or a compound of blocks.
11983         #  @param thePoint1,thePoint2,thePoint3,thePoint4 Points, close to the corners of the desired face.
11984         #  @param theName Object name; when specified, this parameter is used
11985         #         for result publication in the study. Otherwise, if automatic
11986         #         publication is switched on, default value is used for result name.
11987         #
11988         #  @return New GEOM.GEOM_Object, containing the found face.
11989         #
11990         #  @ref swig_todo "Example"
11991         @ManageTransactions("BlocksOp")
11992         def GetFaceByPoints(self, theShape, thePoint1, thePoint2, thePoint3, thePoint4, theName=None):
11993             """
11994             Returns a face, found in the given shape by four given corner vertices.
11995
11996             Parameters:
11997                 theShape Block or a compound of blocks.
11998                 thePoint1,thePoint2,thePoint3,thePoint4 Points, close to the corners of the desired face.
11999                 theName Object name; when specified, this parameter is used
12000                         for result publication in the study. Otherwise, if automatic
12001                         publication is switched on, default value is used for result name.
12002
12003             Returns:
12004                 New GEOM.GEOM_Object, containing the found face.
12005             """
12006             # Example: see GEOM_Spanner.py
12007             anObj = self.BlocksOp.GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4)
12008             RaiseIfFailed("GetFaceByPoints", self.BlocksOp)
12009             self._autoPublish(anObj, theName, "face")
12010             return anObj
12011
12012         ## Get a face of block, found in the given shape by two given edges.
12013         #  @param theShape Block or a compound of blocks.
12014         #  @param theEdge1,theEdge2 Edges, close to the edges of the desired face.
12015         #  @param theName Object name; when specified, this parameter is used
12016         #         for result publication in the study. Otherwise, if automatic
12017         #         publication is switched on, default value is used for result name.
12018         #
12019         #  @return New GEOM.GEOM_Object, containing the found face.
12020         #
12021         #  @ref swig_todo "Example"
12022         @ManageTransactions("BlocksOp")
12023         def GetFaceByEdges(self, theShape, theEdge1, theEdge2, theName=None):
12024             """
12025             Get a face of block, found in the given shape by two given edges.
12026
12027             Parameters:
12028                 theShape Block or a compound of blocks.
12029                 theEdge1,theEdge2 Edges, close to the edges of the desired face.
12030                 theName Object name; when specified, this parameter is used
12031                         for result publication in the study. Otherwise, if automatic
12032                         publication is switched on, default value is used for result name.
12033
12034             Returns:
12035                 New GEOM.GEOM_Object, containing the found face.
12036             """
12037             # Example: see GEOM_Spanner.py
12038             anObj = self.BlocksOp.GetFaceByEdges(theShape, theEdge1, theEdge2)
12039             RaiseIfFailed("GetFaceByEdges", self.BlocksOp)
12040             self._autoPublish(anObj, theName, "face")
12041             return anObj
12042
12043         ## Find a face, opposite to the given one in the given block.
12044         #  @param theBlock Must be a hexahedral solid.
12045         #  @param theFace Face of \a theBlock, opposite to the desired face.
12046         #  @param theName Object name; when specified, this parameter is used
12047         #         for result publication in the study. Otherwise, if automatic
12048         #         publication is switched on, default value is used for result name.
12049         #
12050         #  @return New GEOM.GEOM_Object, containing the found face.
12051         #
12052         #  @ref swig_GetOppositeFace "Example"
12053         @ManageTransactions("BlocksOp")
12054         def GetOppositeFace(self, theBlock, theFace, theName=None):
12055             """
12056             Find a face, opposite to the given one in the given block.
12057
12058             Parameters:
12059                 theBlock Must be a hexahedral solid.
12060                 theFace Face of theBlock, opposite to the desired face.
12061                 theName Object name; when specified, this parameter is used
12062                         for result publication in the study. Otherwise, if automatic
12063                         publication is switched on, default value is used for result name.
12064
12065             Returns:
12066                 New GEOM.GEOM_Object, containing the found face.
12067             """
12068             # Example: see GEOM_Spanner.py
12069             anObj = self.BlocksOp.GetOppositeFace(theBlock, theFace)
12070             RaiseIfFailed("GetOppositeFace", self.BlocksOp)
12071             self._autoPublish(anObj, theName, "face")
12072             return anObj
12073
12074         ## Find a face of the given shape, which has minimal distance to the given point.
12075         #  @param theShape Block or a compound of blocks.
12076         #  @param thePoint Point, close to the desired face.
12077         #  @param theName Object name; when specified, this parameter is used
12078         #         for result publication in the study. Otherwise, if automatic
12079         #         publication is switched on, default value is used for result name.
12080         #
12081         #  @return New GEOM.GEOM_Object, containing the found face.
12082         #
12083         #  @ref swig_GetFaceNearPoint "Example"
12084         @ManageTransactions("BlocksOp")
12085         def GetFaceNearPoint(self, theShape, thePoint, theName=None):
12086             """
12087             Find a face of the given shape, which has minimal distance to the given point.
12088
12089             Parameters:
12090                 theShape Block or a compound of blocks.
12091                 thePoint Point, close to the desired face.
12092                 theName Object name; when specified, this parameter is used
12093                         for result publication in the study. Otherwise, if automatic
12094                         publication is switched on, default value is used for result name.
12095
12096             Returns:
12097                 New GEOM.GEOM_Object, containing the found face.
12098             """
12099             # Example: see GEOM_Spanner.py
12100             anObj = self.BlocksOp.GetFaceNearPoint(theShape, thePoint)
12101             RaiseIfFailed("GetFaceNearPoint", self.BlocksOp)
12102             self._autoPublish(anObj, theName, "face")
12103             return anObj
12104
12105         ## Find a face of block, whose outside normale has minimal angle with the given vector.
12106         #  @param theBlock Block or a compound of blocks.
12107         #  @param theVector Vector, close to the normale of the desired face.
12108         #  @param theName Object name; when specified, this parameter is used
12109         #         for result publication in the study. Otherwise, if automatic
12110         #         publication is switched on, default value is used for result name.
12111         #
12112         #  @return New GEOM.GEOM_Object, containing the found face.
12113         #
12114         #  @ref swig_todo "Example"
12115         @ManageTransactions("BlocksOp")
12116         def GetFaceByNormale(self, theBlock, theVector, theName=None):
12117             """
12118             Find a face of block, whose outside normale has minimal angle with the given vector.
12119
12120             Parameters:
12121                 theBlock Block or a compound of blocks.
12122                 theVector Vector, close to the normale of the desired face.
12123                 theName Object name; when specified, this parameter is used
12124                         for result publication in the study. Otherwise, if automatic
12125                         publication is switched on, default value is used for result name.
12126
12127             Returns:
12128                 New GEOM.GEOM_Object, containing the found face.
12129             """
12130             # Example: see GEOM_Spanner.py
12131             anObj = self.BlocksOp.GetFaceByNormale(theBlock, theVector)
12132             RaiseIfFailed("GetFaceByNormale", self.BlocksOp)
12133             self._autoPublish(anObj, theName, "face")
12134             return anObj
12135
12136         ## Find all sub-shapes of type \a theShapeType of the given shape,
12137         #  which have minimal distance to the given point.
12138         #  @param theShape Any shape.
12139         #  @param thePoint Point, close to the desired shape.
12140         #  @param theShapeType Defines what kind of sub-shapes is searched GEOM::shape_type
12141         #  @param theTolerance The tolerance for distances comparison. All shapes
12142         #                      with distances to the given point in interval
12143         #                      [minimal_distance, minimal_distance + theTolerance] will be gathered.
12144         #  @param theName Object name; when specified, this parameter is used
12145         #         for result publication in the study. Otherwise, if automatic
12146         #         publication is switched on, default value is used for result name.
12147         #
12148         #  @return New GEOM_Object, containing a group of all found shapes.
12149         #
12150         #  @ref swig_GetShapesNearPoint "Example"
12151         @ManageTransactions("BlocksOp")
12152         def GetShapesNearPoint(self, theShape, thePoint, theShapeType, theTolerance = 1e-07, theName=None):
12153             """
12154             Find all sub-shapes of type theShapeType of the given shape,
12155             which have minimal distance to the given point.
12156
12157             Parameters:
12158                 theShape Any shape.
12159                 thePoint Point, close to the desired shape.
12160                 theShapeType Defines what kind of sub-shapes is searched (see GEOM::shape_type)
12161                 theTolerance The tolerance for distances comparison. All shapes
12162                                 with distances to the given point in interval
12163                                 [minimal_distance, minimal_distance + theTolerance] will be gathered.
12164                 theName Object name; when specified, this parameter is used
12165                         for result publication in the study. Otherwise, if automatic
12166                         publication is switched on, default value is used for result name.
12167
12168             Returns:
12169                 New GEOM_Object, containing a group of all found shapes.
12170             """
12171             # Example: see GEOM_TestOthers.py
12172             anObj = self.BlocksOp.GetShapesNearPoint(theShape, thePoint, theShapeType, theTolerance)
12173             RaiseIfFailed("GetShapesNearPoint", self.BlocksOp)
12174             self._autoPublish(anObj, theName, "group")
12175             return anObj
12176
12177         # end of l3_blocks_op
12178         ## @}
12179
12180         ## @addtogroup l4_blocks_measure
12181         ## @{
12182
12183         ## Check, if the compound of blocks is given.
12184         #  To be considered as a compound of blocks, the
12185         #  given shape must satisfy the following conditions:
12186         #  - Each element of the compound should be a Block (6 faces).
12187         #  - Each face should be a quadrangle, i.e. it should have only 1 wire
12188         #       with 4 edges. If <VAR>theIsUseC1</VAR> is set to True and
12189         #       there are more than 4 edges in the only wire of a face,
12190         #       this face is considered to be quadrangle if it has 4 bounds
12191         #       (1 or more edge) of C1 continuity.
12192         #  - A connection between two Blocks should be an entire quadrangle face or an entire edge.
12193         #  - The compound should be connexe.
12194         #  - The glue between two quadrangle faces should be applied.
12195         #  @param theCompound The compound to check.
12196         #  @param theIsUseC1 Flag to check if there are 4 bounds on a face
12197         #         taking into account C1 continuity.
12198         #  @param theAngTolerance the angular tolerance to check if two neighbor
12199         #         edges are codirectional in the common vertex with this
12200         #         tolerance. This parameter is used only if
12201         #         <VAR>theIsUseC1</VAR> is set to True.
12202         #  @return TRUE, if the given shape is a compound of blocks.
12203         #  If theCompound is not valid, prints all discovered errors.
12204         #
12205         #  @ref tui_check_compound_of_blocks_page "Example 1"
12206         #  \n @ref swig_CheckCompoundOfBlocks "Example 2"
12207         @ManageTransactions("BlocksOp")
12208         def CheckCompoundOfBlocks(self,theCompound, theIsUseC1 = False,
12209                                   theAngTolerance = 1.e-12):
12210             """
12211             Check, if the compound of blocks is given.
12212             To be considered as a compound of blocks, the
12213             given shape must satisfy the following conditions:
12214             - Each element of the compound should be a Block (6 faces).
12215             - Each face should be a quadrangle, i.e. it should have only 1 wire
12216                  with 4 edges. If theIsUseC1 is set to True and
12217                  there are more than 4 edges in the only wire of a face,
12218                  this face is considered to be quadrangle if it has 4 bounds
12219                  (1 or more edge) of C1 continuity.
12220             - A connection between two Blocks should be an entire quadrangle face or an entire edge.
12221             - The compound should be connexe.
12222             - The glue between two quadrangle faces should be applied.
12223
12224             Parameters:
12225                 theCompound The compound to check.
12226                 theIsUseC1 Flag to check if there are 4 bounds on a face
12227                            taking into account C1 continuity.
12228                 theAngTolerance the angular tolerance to check if two neighbor
12229                            edges are codirectional in the common vertex with this
12230                            tolerance. This parameter is used only if
12231                            theIsUseC1 is set to True.
12232
12233             Returns:
12234                 TRUE, if the given shape is a compound of blocks.
12235                 If theCompound is not valid, prints all discovered errors.
12236             """
12237             # Example: see GEOM_Spanner.py
12238             aTolerance = -1.0
12239             if theIsUseC1:
12240                 aTolerance = theAngTolerance
12241             (IsValid, BCErrors) = self.BlocksOp.CheckCompoundOfBlocks(theCompound, aTolerance)
12242             RaiseIfFailed("CheckCompoundOfBlocks", self.BlocksOp)
12243             if IsValid == 0:
12244                 Descr = self.BlocksOp.PrintBCErrors(theCompound, BCErrors)
12245                 print Descr
12246             return IsValid
12247
12248         ## Retrieve all non blocks solids and faces from \a theShape.
12249         #  @param theShape The shape to explore.
12250         #  @param theIsUseC1 Flag to check if there are 4 bounds on a face
12251         #         taking into account C1 continuity.
12252         #  @param theAngTolerance the angular tolerance to check if two neighbor
12253         #         edges are codirectional in the common vertex with this
12254         #         tolerance. This parameter is used only if
12255         #         <VAR>theIsUseC1</VAR> is set to True.
12256         #  @param theName Object name; when specified, this parameter is used
12257         #         for result publication in the study. Otherwise, if automatic
12258         #         publication is switched on, default value is used for result name.
12259         #
12260         #  @return A tuple of two GEOM_Objects. The first object is a group of all
12261         #          non block solids (= not 6 faces, or with 6 faces, but with the
12262         #          presence of non-quadrangular faces). The second object is a
12263         #          group of all non quadrangular faces (= faces with more then
12264         #          1 wire or, if <VAR>theIsUseC1</VAR> is set to True, faces
12265         #          with 1 wire with not 4 edges that do not form 4 bounds of
12266         #          C1 continuity).
12267         #
12268         #  @ref tui_get_non_blocks_page "Example 1"
12269         #  \n @ref swig_GetNonBlocks "Example 2"
12270         @ManageTransactions("BlocksOp")
12271         def GetNonBlocks (self, theShape, theIsUseC1 = False,
12272                           theAngTolerance = 1.e-12, theName=None):
12273             """
12274             Retrieve all non blocks solids and faces from theShape.
12275
12276             Parameters:
12277                 theShape The shape to explore.
12278                 theIsUseC1 Flag to check if there are 4 bounds on a face
12279                            taking into account C1 continuity.
12280                 theAngTolerance the angular tolerance to check if two neighbor
12281                            edges are codirectional in the common vertex with this
12282                            tolerance. This parameter is used only if
12283                            theIsUseC1 is set to True.
12284                 theName Object name; when specified, this parameter is used
12285                         for result publication in the study. Otherwise, if automatic
12286                         publication is switched on, default value is used for result name.
12287
12288             Returns:
12289                 A tuple of two GEOM_Objects. The first object is a group of all
12290                 non block solids (= not 6 faces, or with 6 faces, but with the
12291                 presence of non-quadrangular faces). The second object is a
12292                 group of all non quadrangular faces (= faces with more then
12293                 1 wire or, if <VAR>theIsUseC1</VAR> is set to True, faces
12294                 with 1 wire with not 4 edges that do not form 4 bounds of
12295                 C1 continuity).
12296
12297             Usage:
12298                 (res_sols, res_faces) = geompy.GetNonBlocks(myShape1)
12299             """
12300             # Example: see GEOM_Spanner.py
12301             aTolerance = -1.0
12302             if theIsUseC1:
12303                 aTolerance = theAngTolerance
12304             aTuple = self.BlocksOp.GetNonBlocks(theShape, aTolerance)
12305             RaiseIfFailed("GetNonBlocks", self.BlocksOp)
12306             self._autoPublish(aTuple, theName, ("groupNonHexas", "groupNonQuads"))
12307             return aTuple
12308
12309         ## Remove all seam and degenerated edges from \a theShape.
12310         #  Unite faces and edges, sharing one surface. It means that
12311         #  this faces must have references to one C++ surface object (handle).
12312         #  @param theShape The compound or single solid to remove irregular edges from.
12313         #  @param doUnionFaces If True, then unite faces. If False (the default value),
12314         #         do not unite faces.
12315         #  @param theName Object name; when specified, this parameter is used
12316         #         for result publication in the study. Otherwise, if automatic
12317         #         publication is switched on, default value is used for result name.
12318         #
12319         #  @return Improved shape.
12320         #
12321         #  @ref swig_RemoveExtraEdges "Example"
12322         @ManageTransactions("BlocksOp")
12323         def RemoveExtraEdges(self, theShape, doUnionFaces=False, theName=None):
12324             """
12325             Remove all seam and degenerated edges from theShape.
12326             Unite faces and edges, sharing one surface. It means that
12327             this faces must have references to one C++ surface object (handle).
12328
12329             Parameters:
12330                 theShape The compound or single solid to remove irregular edges from.
12331                 doUnionFaces If True, then unite faces. If False (the default value),
12332                              do not unite faces.
12333                 theName Object name; when specified, this parameter is used
12334                         for result publication in the study. Otherwise, if automatic
12335                         publication is switched on, default value is used for result name.
12336
12337             Returns:
12338                 Improved shape.
12339             """
12340             # Example: see GEOM_TestOthers.py
12341             nbFacesOptimum = -1 # -1 means do not unite faces
12342             if doUnionFaces is True: nbFacesOptimum = 0 # 0 means unite faces
12343             anObj = self.BlocksOp.RemoveExtraEdges(theShape, nbFacesOptimum)
12344             RaiseIfFailed("RemoveExtraEdges", self.BlocksOp)
12345             self._autoPublish(anObj, theName, "removeExtraEdges")
12346             return anObj
12347
12348         ## Performs union faces of \a theShape
12349         #  Unite faces sharing one surface. It means that
12350         #  these faces must have references to one C++ surface object (handle).
12351         #  @param theShape The compound or single solid that contains faces
12352         #         to perform union.
12353         #  @param theName Object name; when specified, this parameter is used
12354         #         for result publication in the study. Otherwise, if automatic
12355         #         publication is switched on, default value is used for result name.
12356         #
12357         #  @return Improved shape.
12358         #
12359         #  @ref swig_UnionFaces "Example"
12360         @ManageTransactions("BlocksOp")
12361         def UnionFaces(self, theShape, theName=None):
12362             """
12363             Performs union faces of theShape.
12364             Unite faces sharing one surface. It means that
12365             these faces must have references to one C++ surface object (handle).
12366
12367             Parameters:
12368                 theShape The compound or single solid that contains faces
12369                          to perform union.
12370                 theName Object name; when specified, this parameter is used
12371                         for result publication in the study. Otherwise, if automatic
12372                         publication is switched on, default value is used for result name.
12373
12374             Returns:
12375                 Improved shape.
12376             """
12377             # Example: see GEOM_TestOthers.py
12378             anObj = self.BlocksOp.UnionFaces(theShape)
12379             RaiseIfFailed("UnionFaces", self.BlocksOp)
12380             self._autoPublish(anObj, theName, "unionFaces")
12381             return anObj
12382
12383         ## Check, if the given shape is a blocks compound.
12384         #  Fix all detected errors.
12385         #    \note Single block can be also fixed by this method.
12386         #  @param theShape The compound to check and improve.
12387         #  @param theName Object name; when specified, this parameter is used
12388         #         for result publication in the study. Otherwise, if automatic
12389         #         publication is switched on, default value is used for result name.
12390         #
12391         #  @return Improved compound.
12392         #
12393         #  @ref swig_CheckAndImprove "Example"
12394         @ManageTransactions("BlocksOp")
12395         def CheckAndImprove(self, theShape, theName=None):
12396             """
12397             Check, if the given shape is a blocks compound.
12398             Fix all detected errors.
12399
12400             Note:
12401                 Single block can be also fixed by this method.
12402
12403             Parameters:
12404                 theShape The compound to check and improve.
12405                 theName Object name; when specified, this parameter is used
12406                         for result publication in the study. Otherwise, if automatic
12407                         publication is switched on, default value is used for result name.
12408
12409             Returns:
12410                 Improved compound.
12411             """
12412             # Example: see GEOM_TestOthers.py
12413             anObj = self.BlocksOp.CheckAndImprove(theShape)
12414             RaiseIfFailed("CheckAndImprove", self.BlocksOp)
12415             self._autoPublish(anObj, theName, "improved")
12416             return anObj
12417
12418         # end of l4_blocks_measure
12419         ## @}
12420
12421         ## @addtogroup l3_blocks_op
12422         ## @{
12423
12424         ## Get all the blocks, contained in the given compound.
12425         #  @param theCompound The compound to explode.
12426         #  @param theMinNbFaces If solid has lower number of faces, it is not a block.
12427         #  @param theMaxNbFaces If solid has higher number of faces, it is not a block.
12428         #  @param theName Object name; when specified, this parameter is used
12429         #         for result publication in the study. Otherwise, if automatic
12430         #         publication is switched on, default value is used for result name.
12431         #
12432         #  @note If theMaxNbFaces = 0, the maximum number of faces is not restricted.
12433         #
12434         #  @return List of GEOM.GEOM_Object, containing the retrieved blocks.
12435         #
12436         #  @ref tui_explode_on_blocks "Example 1"
12437         #  \n @ref swig_MakeBlockExplode "Example 2"
12438         @ManageTransactions("BlocksOp")
12439         def MakeBlockExplode(self, theCompound, theMinNbFaces, theMaxNbFaces, theName=None):
12440             """
12441             Get all the blocks, contained in the given compound.
12442
12443             Parameters:
12444                 theCompound The compound to explode.
12445                 theMinNbFaces If solid has lower number of faces, it is not a block.
12446                 theMaxNbFaces If solid has higher number of faces, it is not a block.
12447                 theName Object name; when specified, this parameter is used
12448                         for result publication in the study. Otherwise, if automatic
12449                         publication is switched on, default value is used for result name.
12450
12451             Note:
12452                 If theMaxNbFaces = 0, the maximum number of faces is not restricted.
12453
12454             Returns:
12455                 List of GEOM.GEOM_Object, containing the retrieved blocks.
12456             """
12457             # Example: see GEOM_TestOthers.py
12458             theMinNbFaces,theMaxNbFaces,Parameters = ParseParameters(theMinNbFaces,theMaxNbFaces)
12459             aList = self.BlocksOp.ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces)
12460             RaiseIfFailed("ExplodeCompoundOfBlocks", self.BlocksOp)
12461             for anObj in aList:
12462                 anObj.SetParameters(Parameters)
12463                 pass
12464             self._autoPublish(aList, theName, "block")
12465             return aList
12466
12467         ## Find block, containing the given point inside its volume or on boundary.
12468         #  @param theCompound Compound, to find block in.
12469         #  @param thePoint Point, close to the desired block. If the point lays on
12470         #         boundary between some blocks, we return block with nearest center.
12471         #  @param theName Object name; when specified, this parameter is used
12472         #         for result publication in the study. Otherwise, if automatic
12473         #         publication is switched on, default value is used for result name.
12474         #
12475         #  @return New GEOM.GEOM_Object, containing the found block.
12476         #
12477         #  @ref swig_todo "Example"
12478         @ManageTransactions("BlocksOp")
12479         def GetBlockNearPoint(self, theCompound, thePoint, theName=None):
12480             """
12481             Find block, containing the given point inside its volume or on boundary.
12482
12483             Parameters:
12484                 theCompound Compound, to find block in.
12485                 thePoint Point, close to the desired block. If the point lays on
12486                          boundary between some blocks, we return block with nearest center.
12487                 theName Object name; when specified, this parameter is used
12488                         for result publication in the study. Otherwise, if automatic
12489                         publication is switched on, default value is used for result name.
12490
12491             Returns:
12492                 New GEOM.GEOM_Object, containing the found block.
12493             """
12494             # Example: see GEOM_Spanner.py
12495             anObj = self.BlocksOp.GetBlockNearPoint(theCompound, thePoint)
12496             RaiseIfFailed("GetBlockNearPoint", self.BlocksOp)
12497             self._autoPublish(anObj, theName, "block")
12498             return anObj
12499
12500         ## Find block, containing all the elements, passed as the parts, or maximum quantity of them.
12501         #  @param theCompound Compound, to find block in.
12502         #  @param theParts List of faces and/or edges and/or vertices to be parts of the found block.
12503         #  @param theName Object name; when specified, this parameter is used
12504         #         for result publication in the study. Otherwise, if automatic
12505         #         publication is switched on, default value is used for result name.
12506         #
12507         #  @return New GEOM.GEOM_Object, containing the found block.
12508         #
12509         #  @ref swig_GetBlockByParts "Example"
12510         @ManageTransactions("BlocksOp")
12511         def GetBlockByParts(self, theCompound, theParts, theName=None):
12512             """
12513              Find block, containing all the elements, passed as the parts, or maximum quantity of them.
12514
12515              Parameters:
12516                 theCompound Compound, to find block in.
12517                 theParts List of faces and/or edges and/or vertices to be parts of the found block.
12518                 theName Object name; when specified, this parameter is used
12519                         for result publication in the study. Otherwise, if automatic
12520                         publication is switched on, default value is used for result name.
12521
12522             Returns:
12523                 New GEOM_Object, containing the found block.
12524             """
12525             # Example: see GEOM_TestOthers.py
12526             anObj = self.BlocksOp.GetBlockByParts(theCompound, theParts)
12527             RaiseIfFailed("GetBlockByParts", self.BlocksOp)
12528             self._autoPublish(anObj, theName, "block")
12529             return anObj
12530
12531         ## Return all blocks, containing all the elements, passed as the parts.
12532         #  @param theCompound Compound, to find blocks in.
12533         #  @param theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
12534         #  @param theName Object name; when specified, this parameter is used
12535         #         for result publication in the study. Otherwise, if automatic
12536         #         publication is switched on, default value is used for result name.
12537         #
12538         #  @return List of GEOM.GEOM_Object, containing the found blocks.
12539         #
12540         #  @ref swig_todo "Example"
12541         @ManageTransactions("BlocksOp")
12542         def GetBlocksByParts(self, theCompound, theParts, theName=None):
12543             """
12544             Return all blocks, containing all the elements, passed as the parts.
12545
12546             Parameters:
12547                 theCompound Compound, to find blocks in.
12548                 theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
12549                 theName Object name; when specified, this parameter is used
12550                         for result publication in the study. Otherwise, if automatic
12551                         publication is switched on, default value is used for result name.
12552
12553             Returns:
12554                 List of GEOM.GEOM_Object, containing the found blocks.
12555             """
12556             # Example: see GEOM_Spanner.py
12557             aList = self.BlocksOp.GetBlocksByParts(theCompound, theParts)
12558             RaiseIfFailed("GetBlocksByParts", self.BlocksOp)
12559             self._autoPublish(aList, theName, "block")
12560             return aList
12561
12562         ## Multi-transformate block and glue the result.
12563         #  Transformation is defined so, as to superpose direction faces.
12564         #  @param Block Hexahedral solid to be multi-transformed.
12565         #  @param DirFace1 ID of First direction face.
12566         #  @param DirFace2 ID of Second direction face.
12567         #  @param NbTimes Quantity of transformations to be done.
12568         #  @param theName Object name; when specified, this parameter is used
12569         #         for result publication in the study. Otherwise, if automatic
12570         #         publication is switched on, default value is used for result name.
12571         #
12572         #  @note Unique ID of sub-shape can be obtained, using method GetSubShapeID().
12573         #
12574         #  @return New GEOM.GEOM_Object, containing the result shape.
12575         #
12576         #  @ref tui_multi_transformation "Example"
12577         @ManageTransactions("BlocksOp")
12578         def MakeMultiTransformation1D(self, Block, DirFace1, DirFace2, NbTimes, theName=None):
12579             """
12580             Multi-transformate block and glue the result.
12581             Transformation is defined so, as to superpose direction faces.
12582
12583             Parameters:
12584                 Block Hexahedral solid to be multi-transformed.
12585                 DirFace1 ID of First direction face.
12586                 DirFace2 ID of Second direction face.
12587                 NbTimes Quantity of transformations to be done.
12588                 theName Object name; when specified, this parameter is used
12589                         for result publication in the study. Otherwise, if automatic
12590                         publication is switched on, default value is used for result name.
12591
12592             Note:
12593                 Unique ID of sub-shape can be obtained, using method GetSubShapeID().
12594
12595             Returns:
12596                 New GEOM.GEOM_Object, containing the result shape.
12597             """
12598             # Example: see GEOM_Spanner.py
12599             DirFace1,DirFace2,NbTimes,Parameters = ParseParameters(DirFace1,DirFace2,NbTimes)
12600             anObj = self.BlocksOp.MakeMultiTransformation1D(Block, DirFace1, DirFace2, NbTimes)
12601             RaiseIfFailed("MakeMultiTransformation1D", self.BlocksOp)
12602             anObj.SetParameters(Parameters)
12603             self._autoPublish(anObj, theName, "transformed")
12604             return anObj
12605
12606         ## Multi-transformate block and glue the result.
12607         #  @param Block Hexahedral solid to be multi-transformed.
12608         #  @param DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
12609         #  @param DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
12610         #  @param NbTimesU,NbTimesV Quantity of transformations to be done.
12611         #  @param theName Object name; when specified, this parameter is used
12612         #         for result publication in the study. Otherwise, if automatic
12613         #         publication is switched on, default value is used for result name.
12614         #
12615         #  @return New GEOM.GEOM_Object, containing the result shape.
12616         #
12617         #  @ref tui_multi_transformation "Example"
12618         @ManageTransactions("BlocksOp")
12619         def MakeMultiTransformation2D(self, Block, DirFace1U, DirFace2U, NbTimesU,
12620                                       DirFace1V, DirFace2V, NbTimesV, theName=None):
12621             """
12622             Multi-transformate block and glue the result.
12623
12624             Parameters:
12625                 Block Hexahedral solid to be multi-transformed.
12626                 DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
12627                 DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
12628                 NbTimesU,NbTimesV Quantity of transformations to be done.
12629                 theName Object name; when specified, this parameter is used
12630                         for result publication in the study. Otherwise, if automatic
12631                         publication is switched on, default value is used for result name.
12632
12633             Returns:
12634                 New GEOM.GEOM_Object, containing the result shape.
12635             """
12636             # Example: see GEOM_Spanner.py
12637             DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV,Parameters = ParseParameters(
12638               DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV)
12639             anObj = self.BlocksOp.MakeMultiTransformation2D(Block, DirFace1U, DirFace2U, NbTimesU,
12640                                                             DirFace1V, DirFace2V, NbTimesV)
12641             RaiseIfFailed("MakeMultiTransformation2D", self.BlocksOp)
12642             anObj.SetParameters(Parameters)
12643             self._autoPublish(anObj, theName, "transformed")
12644             return anObj
12645
12646         ## Build all possible propagation groups.
12647         #  Propagation group is a set of all edges, opposite to one (main)
12648         #  edge of this group directly or through other opposite edges.
12649         #  Notion of Opposite Edge make sence only on quadrangle face.
12650         #  @param theShape Shape to build propagation groups on.
12651         #  @param theName Object name; when specified, this parameter is used
12652         #         for result publication in the study. Otherwise, if automatic
12653         #         publication is switched on, default value is used for result name.
12654         #
12655         #  @return List of GEOM.GEOM_Object, each of them is a propagation group.
12656         #
12657         #  @ref swig_Propagate "Example"
12658         @ManageTransactions("BlocksOp")
12659         def Propagate(self, theShape, theName=None):
12660             """
12661             Build all possible propagation groups.
12662             Propagation group is a set of all edges, opposite to one (main)
12663             edge of this group directly or through other opposite edges.
12664             Notion of Opposite Edge make sence only on quadrangle face.
12665
12666             Parameters:
12667                 theShape Shape to build propagation groups on.
12668                 theName Object name; when specified, this parameter is used
12669                         for result publication in the study. Otherwise, if automatic
12670                         publication is switched on, default value is used for result name.
12671
12672             Returns:
12673                 List of GEOM.GEOM_Object, each of them is a propagation group.
12674             """
12675             # Example: see GEOM_TestOthers.py
12676             listChains = self.BlocksOp.Propagate(theShape)
12677             RaiseIfFailed("Propagate", self.BlocksOp)
12678             self._autoPublish(listChains, theName, "propagate")
12679             return listChains
12680
12681         # end of l3_blocks_op
12682         ## @}
12683
12684         ## @addtogroup l3_groups
12685         ## @{
12686
12687         ## Creates a new group which will store sub-shapes of theMainShape
12688         #  @param theMainShape is a GEOM object on which the group is selected
12689         #  @param theShapeType defines a shape type of the group (see GEOM::shape_type)
12690         #  @param theName Object name; when specified, this parameter is used
12691         #         for result publication in the study. Otherwise, if automatic
12692         #         publication is switched on, default value is used for result name.
12693         #
12694         #  @return a newly created GEOM group (GEOM.GEOM_Object)
12695         #
12696         #  @ref tui_working_with_groups_page "Example 1"
12697         #  \n @ref swig_CreateGroup "Example 2"
12698         @ManageTransactions("GroupOp")
12699         def CreateGroup(self, theMainShape, theShapeType, theName=None):
12700             """
12701             Creates a new group which will store sub-shapes of theMainShape
12702
12703             Parameters:
12704                theMainShape is a GEOM object on which the group is selected
12705                theShapeType defines a shape type of the group:"COMPOUND", "COMPSOLID",
12706                             "SOLID", "SHELL", "FACE", "WIRE", "EDGE", "VERTEX", "SHAPE".
12707                 theName Object name; when specified, this parameter is used
12708                         for result publication in the study. Otherwise, if automatic
12709                         publication is switched on, default value is used for result name.
12710
12711             Returns:
12712                a newly created GEOM group
12713
12714             Example of usage:
12715                 group = geompy.CreateGroup(Box, geompy.ShapeType["FACE"])
12716
12717             """
12718             # Example: see GEOM_TestOthers.py
12719             anObj = self.GroupOp.CreateGroup(theMainShape, theShapeType)
12720             RaiseIfFailed("CreateGroup", self.GroupOp)
12721             self._autoPublish(anObj, theName, "group")
12722             return anObj
12723
12724         ## Adds a sub-object with ID theSubShapeId to the group
12725         #  @param theGroup is a GEOM group to which the new sub-shape is added
12726         #  @param theSubShapeID is a sub-shape ID in the main object.
12727         #  \note Use method GetSubShapeID() to get an unique ID of the sub-shape
12728         #
12729         #  @ref tui_working_with_groups_page "Example"
12730         @ManageTransactions("GroupOp")
12731         def AddObject(self,theGroup, theSubShapeID):
12732             """
12733             Adds a sub-object with ID theSubShapeId to the group
12734
12735             Parameters:
12736                 theGroup       is a GEOM group to which the new sub-shape is added
12737                 theSubShapeID  is a sub-shape ID in the main object.
12738
12739             Note:
12740                 Use method GetSubShapeID() to get an unique ID of the sub-shape
12741             """
12742             # Example: see GEOM_TestOthers.py
12743             self.GroupOp.AddObject(theGroup, theSubShapeID)
12744             if self.GroupOp.GetErrorCode() != "PAL_ELEMENT_ALREADY_PRESENT":
12745                 RaiseIfFailed("AddObject", self.GroupOp)
12746                 pass
12747             pass
12748
12749         ## Removes a sub-object with ID \a theSubShapeId from the group
12750         #  @param theGroup is a GEOM group from which the new sub-shape is removed
12751         #  @param theSubShapeID is a sub-shape ID in the main object.
12752         #  \note Use method GetSubShapeID() to get an unique ID of the sub-shape
12753         #
12754         #  @ref tui_working_with_groups_page "Example"
12755         @ManageTransactions("GroupOp")
12756         def RemoveObject(self,theGroup, theSubShapeID):
12757             """
12758             Removes a sub-object with ID theSubShapeId from the group
12759
12760             Parameters:
12761                 theGroup is a GEOM group from which the new sub-shape is removed
12762                 theSubShapeID is a sub-shape ID in the main object.
12763
12764             Note:
12765                 Use method GetSubShapeID() to get an unique ID of the sub-shape
12766             """
12767             # Example: see GEOM_TestOthers.py
12768             self.GroupOp.RemoveObject(theGroup, theSubShapeID)
12769             RaiseIfFailed("RemoveObject", self.GroupOp)
12770             pass
12771
12772         ## Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12773         #  @param theGroup is a GEOM group to which the new sub-shapes are added.
12774         #  @param theSubShapes is a list of sub-shapes to be added.
12775         #
12776         #  @ref tui_working_with_groups_page "Example"
12777         @ManageTransactions("GroupOp")
12778         def UnionList (self,theGroup, theSubShapes):
12779             """
12780             Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12781
12782             Parameters:
12783                 theGroup is a GEOM group to which the new sub-shapes are added.
12784                 theSubShapes is a list of sub-shapes to be added.
12785             """
12786             # Example: see GEOM_TestOthers.py
12787             self.GroupOp.UnionList(theGroup, theSubShapes)
12788             RaiseIfFailed("UnionList", self.GroupOp)
12789             pass
12790
12791         ## Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12792         #  @param theGroup is a GEOM group to which the new sub-shapes are added.
12793         #  @param theSubShapes is a list of indices of sub-shapes to be added.
12794         #
12795         #  @ref swig_UnionIDs "Example"
12796         @ManageTransactions("GroupOp")
12797         def UnionIDs(self,theGroup, theSubShapes):
12798             """
12799             Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12800
12801             Parameters:
12802                 theGroup is a GEOM group to which the new sub-shapes are added.
12803                 theSubShapes is a list of indices of sub-shapes to be added.
12804             """
12805             # Example: see GEOM_TestOthers.py
12806             self.GroupOp.UnionIDs(theGroup, theSubShapes)
12807             RaiseIfFailed("UnionIDs", self.GroupOp)
12808             pass
12809
12810         ## Removes from the group all the given shapes. No errors, if some shapes are not included.
12811         #  @param theGroup is a GEOM group from which the sub-shapes are removed.
12812         #  @param theSubShapes is a list of sub-shapes to be removed.
12813         #
12814         #  @ref tui_working_with_groups_page "Example"
12815         @ManageTransactions("GroupOp")
12816         def DifferenceList (self,theGroup, theSubShapes):
12817             """
12818             Removes from the group all the given shapes. No errors, if some shapes are not included.
12819
12820             Parameters:
12821                 theGroup is a GEOM group from which the sub-shapes are removed.
12822                 theSubShapes is a list of sub-shapes to be removed.
12823             """
12824             # Example: see GEOM_TestOthers.py
12825             self.GroupOp.DifferenceList(theGroup, theSubShapes)
12826             RaiseIfFailed("DifferenceList", self.GroupOp)
12827             pass
12828
12829         ## Removes from the group all the given shapes. No errors, if some shapes are not included.
12830         #  @param theGroup is a GEOM group from which the sub-shapes are removed.
12831         #  @param theSubShapes is a list of indices of sub-shapes to be removed.
12832         #
12833         #  @ref swig_DifferenceIDs "Example"
12834         @ManageTransactions("GroupOp")
12835         def DifferenceIDs(self,theGroup, theSubShapes):
12836             """
12837             Removes from the group all the given shapes. No errors, if some shapes are not included.
12838
12839             Parameters:
12840                 theGroup is a GEOM group from which the sub-shapes are removed.
12841                 theSubShapes is a list of indices of sub-shapes to be removed.
12842             """
12843             # Example: see GEOM_TestOthers.py
12844             self.GroupOp.DifferenceIDs(theGroup, theSubShapes)
12845             RaiseIfFailed("DifferenceIDs", self.GroupOp)
12846             pass
12847
12848         ## Union of two groups.
12849         #  New group is created. It will contain all entities
12850         #  which are present in groups theGroup1 and theGroup2.
12851         #  @param theGroup1, theGroup2 are the initial GEOM groups
12852         #                              to create the united group from.
12853         #  @param theName Object name; when specified, this parameter is used
12854         #         for result publication in the study. Otherwise, if automatic
12855         #         publication is switched on, default value is used for result name.
12856         #
12857         #  @return a newly created GEOM group.
12858         #
12859         #  @ref tui_union_groups_anchor "Example"
12860         @ManageTransactions("GroupOp")
12861         def UnionGroups (self, theGroup1, theGroup2, theName=None):
12862             """
12863             Union of two groups.
12864             New group is created. It will contain all entities
12865             which are present in groups theGroup1 and theGroup2.
12866
12867             Parameters:
12868                 theGroup1, theGroup2 are the initial GEOM groups
12869                                      to create the united group from.
12870                 theName Object name; when specified, this parameter is used
12871                         for result publication in the study. Otherwise, if automatic
12872                         publication is switched on, default value is used for result name.
12873
12874             Returns:
12875                 a newly created GEOM group.
12876             """
12877             # Example: see GEOM_TestOthers.py
12878             aGroup = self.GroupOp.UnionGroups(theGroup1, theGroup2)
12879             RaiseIfFailed("UnionGroups", self.GroupOp)
12880             self._autoPublish(aGroup, theName, "group")
12881             return aGroup
12882
12883         ## Intersection of two groups.
12884         #  New group is created. It will contain only those entities
12885         #  which are present in both groups theGroup1 and theGroup2.
12886         #  @param theGroup1, theGroup2 are the initial GEOM groups to get common part of.
12887         #  @param theName Object name; when specified, this parameter is used
12888         #         for result publication in the study. Otherwise, if automatic
12889         #         publication is switched on, default value is used for result name.
12890         #
12891         #  @return a newly created GEOM group.
12892         #
12893         #  @ref tui_intersect_groups_anchor "Example"
12894         @ManageTransactions("GroupOp")
12895         def IntersectGroups (self, theGroup1, theGroup2, theName=None):
12896             """
12897             Intersection of two groups.
12898             New group is created. It will contain only those entities
12899             which are present in both groups theGroup1 and theGroup2.
12900
12901             Parameters:
12902                 theGroup1, theGroup2 are the initial GEOM groups to get common part of.
12903                 theName Object name; when specified, this parameter is used
12904                         for result publication in the study. Otherwise, if automatic
12905                         publication is switched on, default value is used for result name.
12906
12907             Returns:
12908                 a newly created GEOM group.
12909             """
12910             # Example: see GEOM_TestOthers.py
12911             aGroup = self.GroupOp.IntersectGroups(theGroup1, theGroup2)
12912             RaiseIfFailed("IntersectGroups", self.GroupOp)
12913             self._autoPublish(aGroup, theName, "group")
12914             return aGroup
12915
12916         ## Cut of two groups.
12917         #  New group is created. It will contain entities which are
12918         #  present in group theGroup1 but are not present in group theGroup2.
12919         #  @param theGroup1 is a GEOM group to include elements of.
12920         #  @param theGroup2 is a GEOM group to exclude elements of.
12921         #  @param theName Object name; when specified, this parameter is used
12922         #         for result publication in the study. Otherwise, if automatic
12923         #         publication is switched on, default value is used for result name.
12924         #
12925         #  @return a newly created GEOM group.
12926         #
12927         #  @ref tui_cut_groups_anchor "Example"
12928         @ManageTransactions("GroupOp")
12929         def CutGroups (self, theGroup1, theGroup2, theName=None):
12930             """
12931             Cut of two groups.
12932             New group is created. It will contain entities which are
12933             present in group theGroup1 but are not present in group theGroup2.
12934
12935             Parameters:
12936                 theGroup1 is a GEOM group to include elements of.
12937                 theGroup2 is a GEOM group to exclude elements of.
12938                 theName Object name; when specified, this parameter is used
12939                         for result publication in the study. Otherwise, if automatic
12940                         publication is switched on, default value is used for result name.
12941
12942             Returns:
12943                 a newly created GEOM group.
12944             """
12945             # Example: see GEOM_TestOthers.py
12946             aGroup = self.GroupOp.CutGroups(theGroup1, theGroup2)
12947             RaiseIfFailed("CutGroups", self.GroupOp)
12948             self._autoPublish(aGroup, theName, "group")
12949             return aGroup
12950
12951         ## Union of list of groups.
12952         #  New group is created. It will contain all entities that are
12953         #  present in groups listed in theGList.
12954         #  @param theGList is a list of GEOM groups to create the united group from.
12955         #  @param theName Object name; when specified, this parameter is used
12956         #         for result publication in the study. Otherwise, if automatic
12957         #         publication is switched on, default value is used for result name.
12958         #
12959         #  @return a newly created GEOM group.
12960         #
12961         #  @ref tui_union_groups_anchor "Example"
12962         @ManageTransactions("GroupOp")
12963         def UnionListOfGroups (self, theGList, theName=None):
12964             """
12965             Union of list of groups.
12966             New group is created. It will contain all entities that are
12967             present in groups listed in theGList.
12968
12969             Parameters:
12970                 theGList is a list of GEOM groups to create the united group from.
12971                 theName Object name; when specified, this parameter is used
12972                         for result publication in the study. Otherwise, if automatic
12973                         publication is switched on, default value is used for result name.
12974
12975             Returns:
12976                 a newly created GEOM group.
12977             """
12978             # Example: see GEOM_TestOthers.py
12979             aGroup = self.GroupOp.UnionListOfGroups(theGList)
12980             RaiseIfFailed("UnionListOfGroups", self.GroupOp)
12981             self._autoPublish(aGroup, theName, "group")
12982             return aGroup
12983
12984         ## Cut of lists of groups.
12985         #  New group is created. It will contain only entities
12986         #  which are present in groups listed in theGList.
12987         #  @param theGList is a list of GEOM groups to include elements of.
12988         #  @param theName Object name; when specified, this parameter is used
12989         #         for result publication in the study. Otherwise, if automatic
12990         #         publication is switched on, default value is used for result name.
12991         #
12992         #  @return a newly created GEOM group.
12993         #
12994         #  @ref tui_intersect_groups_anchor "Example"
12995         @ManageTransactions("GroupOp")
12996         def IntersectListOfGroups (self, theGList, theName=None):
12997             """
12998             Cut of lists of groups.
12999             New group is created. It will contain only entities
13000             which are present in groups listed in theGList.
13001
13002             Parameters:
13003                 theGList is a list of GEOM groups to include elements of.
13004                 theName Object name; when specified, this parameter is used
13005                         for result publication in the study. Otherwise, if automatic
13006                         publication is switched on, default value is used for result name.
13007
13008             Returns:
13009                 a newly created GEOM group.
13010             """
13011             # Example: see GEOM_TestOthers.py
13012             aGroup = self.GroupOp.IntersectListOfGroups(theGList)
13013             RaiseIfFailed("IntersectListOfGroups", self.GroupOp)
13014             self._autoPublish(aGroup, theName, "group")
13015             return aGroup
13016
13017         ## Cut of lists of groups.
13018         #  New group is created. It will contain only entities
13019         #  which are present in groups listed in theGList1 but
13020         #  are not present in groups from theGList2.
13021         #  @param theGList1 is a list of GEOM groups to include elements of.
13022         #  @param theGList2 is a list of GEOM groups to exclude elements of.
13023         #  @param theName Object name; when specified, this parameter is used
13024         #         for result publication in the study. Otherwise, if automatic
13025         #         publication is switched on, default value is used for result name.
13026         #
13027         #  @return a newly created GEOM group.
13028         #
13029         #  @ref tui_cut_groups_anchor "Example"
13030         @ManageTransactions("GroupOp")
13031         def CutListOfGroups (self, theGList1, theGList2, theName=None):
13032             """
13033             Cut of lists of groups.
13034             New group is created. It will contain only entities
13035             which are present in groups listed in theGList1 but
13036             are not present in groups from theGList2.
13037
13038             Parameters:
13039                 theGList1 is a list of GEOM groups to include elements of.
13040                 theGList2 is a list of GEOM groups to exclude elements of.
13041                 theName Object name; when specified, this parameter is used
13042                         for result publication in the study. Otherwise, if automatic
13043                         publication is switched on, default value is used for result name.
13044
13045             Returns:
13046                 a newly created GEOM group.
13047             """
13048             # Example: see GEOM_TestOthers.py
13049             aGroup = self.GroupOp.CutListOfGroups(theGList1, theGList2)
13050             RaiseIfFailed("CutListOfGroups", self.GroupOp)
13051             self._autoPublish(aGroup, theName, "group")
13052             return aGroup
13053
13054         ## Returns a list of sub-objects ID stored in the group
13055         #  @param theGroup is a GEOM group for which a list of IDs is requested
13056         #
13057         #  @ref swig_GetObjectIDs "Example"
13058         @ManageTransactions("GroupOp")
13059         def GetObjectIDs(self,theGroup):
13060             """
13061             Returns a list of sub-objects ID stored in the group
13062
13063             Parameters:
13064                 theGroup is a GEOM group for which a list of IDs is requested
13065             """
13066             # Example: see GEOM_TestOthers.py
13067             ListIDs = self.GroupOp.GetObjects(theGroup)
13068             RaiseIfFailed("GetObjects", self.GroupOp)
13069             return ListIDs
13070
13071         ## Returns a type of sub-objects stored in the group
13072         #  @param theGroup is a GEOM group which type is returned.
13073         #
13074         #  @ref swig_GetType "Example"
13075         @ManageTransactions("GroupOp")
13076         def GetType(self,theGroup):
13077             """
13078             Returns a type of sub-objects stored in the group
13079
13080             Parameters:
13081                 theGroup is a GEOM group which type is returned.
13082             """
13083             # Example: see GEOM_TestOthers.py
13084             aType = self.GroupOp.GetType(theGroup)
13085             RaiseIfFailed("GetType", self.GroupOp)
13086             return aType
13087
13088         ## Convert a type of geom object from id to string value
13089         #  @param theId is a GEOM obect type id.
13090         #  @return type of geom object (POINT, VECTOR, PLANE, LINE, TORUS, ... )
13091         #  @ref swig_GetType "Example"
13092         def ShapeIdToType(self, theId):
13093             """
13094             Convert a type of geom object from id to string value
13095
13096             Parameters:
13097                 theId is a GEOM obect type id.
13098
13099             Returns:
13100                 type of geom object (POINT, VECTOR, PLANE, LINE, TORUS, ... )
13101             """
13102             if theId == 0:
13103                 return "COPY"
13104             if theId == 1:
13105                 return "IMPORT"
13106             if theId == 2:
13107                 return "POINT"
13108             if theId == 3:
13109                 return "VECTOR"
13110             if theId == 4:
13111                 return "PLANE"
13112             if theId == 5:
13113                 return "LINE"
13114             if theId == 6:
13115                 return "TORUS"
13116             if theId == 7:
13117                 return "BOX"
13118             if theId == 8:
13119                 return "CYLINDER"
13120             if theId == 9:
13121                 return "CONE"
13122             if theId == 10:
13123                 return "SPHERE"
13124             if theId == 11:
13125                 return "PRISM"
13126             if theId == 12:
13127                 return "REVOLUTION"
13128             if theId == 13:
13129                 return "BOOLEAN"
13130             if theId == 14:
13131                 return "PARTITION"
13132             if theId == 15:
13133                 return "POLYLINE"
13134             if theId == 16:
13135                 return "CIRCLE"
13136             if theId == 17:
13137                 return "SPLINE"
13138             if theId == 18:
13139                 return "ELLIPSE"
13140             if theId == 19:
13141                 return "CIRC_ARC"
13142             if theId == 20:
13143                 return "FILLET"
13144             if theId == 21:
13145                 return "CHAMFER"
13146             if theId == 22:
13147                 return "EDGE"
13148             if theId == 23:
13149                 return "WIRE"
13150             if theId == 24:
13151                 return "FACE"
13152             if theId == 25:
13153                 return "SHELL"
13154             if theId == 26:
13155                 return "SOLID"
13156             if theId == 27:
13157                 return "COMPOUND"
13158             if theId == 28:
13159                 return "SUBSHAPE"
13160             if theId == 29:
13161                 return "PIPE"
13162             if theId == 30:
13163                 return "ARCHIMEDE"
13164             if theId == 31:
13165                 return "FILLING"
13166             if theId == 32:
13167                 return "EXPLODE"
13168             if theId == 33:
13169                 return "GLUED"
13170             if theId == 34:
13171                 return "SKETCHER"
13172             if theId == 35:
13173                 return "CDG"
13174             if theId == 36:
13175                 return "FREE_BOUNDS"
13176             if theId == 37:
13177                 return "GROUP"
13178             if theId == 38:
13179                 return "BLOCK"
13180             if theId == 39:
13181                 return "MARKER"
13182             if theId == 40:
13183                 return "THRUSECTIONS"
13184             if theId == 41:
13185                 return "COMPOUNDFILTER"
13186             if theId == 42:
13187                 return "SHAPES_ON_SHAPE"
13188             if theId == 43:
13189                 return "ELLIPSE_ARC"
13190             if theId == 44:
13191                 return "3DSKETCHER"
13192             if theId == 45:
13193                 return "FILLET_2D"
13194             if theId == 46:
13195                 return "FILLET_1D"
13196             if theId == 201:
13197                 return "PIPETSHAPE"
13198             return "Shape Id not exist."
13199
13200         ## Returns a main shape associated with the group
13201         #  @param theGroup is a GEOM group for which a main shape object is requested
13202         #  @return a GEOM object which is a main shape for theGroup
13203         #
13204         #  @ref swig_GetMainShape "Example"
13205         @ManageTransactions("GroupOp")
13206         def GetMainShape(self,theGroup):
13207             """
13208             Returns a main shape associated with the group
13209
13210             Parameters:
13211                 theGroup is a GEOM group for which a main shape object is requested
13212
13213             Returns:
13214                 a GEOM object which is a main shape for theGroup
13215
13216             Example of usage: BoxCopy = geompy.GetMainShape(CreateGroup)
13217             """
13218             # Example: see GEOM_TestOthers.py
13219             anObj = self.GroupOp.GetMainShape(theGroup)
13220             RaiseIfFailed("GetMainShape", self.GroupOp)
13221             return anObj
13222
13223         ## Create group of edges of theShape, whose length is in range [min_length, max_length].
13224         #  If include_min/max == 0, edges with length == min/max_length will not be included in result.
13225         #  @param theShape given shape (see GEOM.GEOM_Object)
13226         #  @param min_length minimum length of edges of theShape
13227         #  @param max_length maximum length of edges of theShape
13228         #  @param include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13229         #  @param include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13230         #  @param theName Object name; when specified, this parameter is used
13231         #         for result publication in the study. Otherwise, if automatic
13232         #         publication is switched on, default value is used for result name.
13233         #
13234         #  @return a newly created GEOM group of edges
13235         #
13236         #  @@ref swig_todo "Example"
13237         def GetEdgesByLength (self, theShape, min_length, max_length, include_min = 1, include_max = 1, theName=None):
13238             """
13239             Create group of edges of theShape, whose length is in range [min_length, max_length].
13240             If include_min/max == 0, edges with length == min/max_length will not be included in result.
13241
13242             Parameters:
13243                 theShape given shape
13244                 min_length minimum length of edges of theShape
13245                 max_length maximum length of edges of theShape
13246                 include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13247                 include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13248                 theName Object name; when specified, this parameter is used
13249                         for result publication in the study. Otherwise, if automatic
13250                         publication is switched on, default value is used for result name.
13251
13252              Returns:
13253                 a newly created GEOM group of edges.
13254             """
13255             edges = self.SubShapeAll(theShape, self.ShapeType["EDGE"])
13256             edges_in_range = []
13257             for edge in edges:
13258                 Props = self.BasicProperties(edge)
13259                 if min_length <= Props[0] and Props[0] <= max_length:
13260                     if (not include_min) and (min_length == Props[0]):
13261                         skip = 1
13262                     else:
13263                         if (not include_max) and (Props[0] == max_length):
13264                             skip = 1
13265                         else:
13266                             edges_in_range.append(edge)
13267
13268             if len(edges_in_range) <= 0:
13269                 print "No edges found by given criteria"
13270                 return None
13271
13272             # note: auto-publishing is done in self.CreateGroup()
13273             group_edges = self.CreateGroup(theShape, self.ShapeType["EDGE"], theName)
13274             self.UnionList(group_edges, edges_in_range)
13275
13276             return group_edges
13277
13278         ## Create group of edges of selected shape, whose length is in range [min_length, max_length].
13279         #  If include_min/max == 0, edges with length == min/max_length will not be included in result.
13280         #  @param min_length minimum length of edges of selected shape
13281         #  @param max_length maximum length of edges of selected shape
13282         #  @param include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13283         #  @param include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13284         #  @return a newly created GEOM group of edges
13285         #  @ref swig_todo "Example"
13286         def SelectEdges (self, min_length, max_length, include_min = 1, include_max = 1):
13287             """
13288             Create group of edges of selected shape, whose length is in range [min_length, max_length].
13289             If include_min/max == 0, edges with length == min/max_length will not be included in result.
13290
13291             Parameters:
13292                 min_length minimum length of edges of selected shape
13293                 max_length maximum length of edges of selected shape
13294                 include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13295                 include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13296
13297              Returns:
13298                 a newly created GEOM group of edges.
13299             """
13300             nb_selected = sg.SelectedCount()
13301             if nb_selected < 1:
13302                 print "Select a shape before calling this function, please."
13303                 return 0
13304             if nb_selected > 1:
13305                 print "Only one shape must be selected"
13306                 return 0
13307
13308             id_shape = sg.getSelected(0)
13309             shape = IDToObject( id_shape )
13310
13311             group_edges = self.GetEdgesByLength(shape, min_length, max_length, include_min, include_max)
13312
13313             left_str  = " < "
13314             right_str = " < "
13315             if include_min: left_str  = " <= "
13316             if include_max: right_str  = " <= "
13317
13318             self.addToStudyInFather(shape, group_edges, "Group of edges with " + `min_length`
13319                                     + left_str + "length" + right_str + `max_length`)
13320
13321             sg.updateObjBrowser(1)
13322
13323             return group_edges
13324
13325         # end of l3_groups
13326         ## @}
13327
13328         #@@ insert new functions before this line @@ do not remove this line @@#
13329
13330         ## Create a copy of the given object
13331         #
13332         #  @param theOriginal geometry object for copy
13333         #  @param theName Object name; when specified, this parameter is used
13334         #         for result publication in the study. Otherwise, if automatic
13335         #         publication is switched on, default value is used for result name.
13336         #
13337         #  @return New GEOM_Object, containing the copied shape.
13338         #
13339         #  @ingroup l1_geomBuilder_auxiliary
13340         #  @ref swig_MakeCopy "Example"
13341         @ManageTransactions("InsertOp")
13342         def MakeCopy(self, theOriginal, theName=None):
13343             """
13344             Create a copy of the given object
13345
13346             Parameters:
13347                 theOriginal geometry object for copy
13348                 theName Object name; when specified, this parameter is used
13349                         for result publication in the study. Otherwise, if automatic
13350                         publication is switched on, default value is used for result name.
13351
13352             Returns:
13353                 New GEOM_Object, containing the copied shape.
13354
13355             Example of usage: Copy = geompy.MakeCopy(Box)
13356             """
13357             # Example: see GEOM_TestAll.py
13358             anObj = self.InsertOp.MakeCopy(theOriginal)
13359             RaiseIfFailed("MakeCopy", self.InsertOp)
13360             self._autoPublish(anObj, theName, "copy")
13361             return anObj
13362
13363         ## Add Path to load python scripts from
13364         #  @param Path a path to load python scripts from
13365         #  @ingroup l1_geomBuilder_auxiliary
13366         def addPath(self,Path):
13367             """
13368             Add Path to load python scripts from
13369
13370             Parameters:
13371                 Path a path to load python scripts from
13372             """
13373             if (sys.path.count(Path) < 1):
13374                 sys.path.append(Path)
13375                 pass
13376             pass
13377
13378         ## Load marker texture from the file
13379         #  @param Path a path to the texture file
13380         #  @return unique texture identifier
13381         #  @ingroup l1_geomBuilder_auxiliary
13382         @ManageTransactions("InsertOp")
13383         def LoadTexture(self, Path):
13384             """
13385             Load marker texture from the file
13386
13387             Parameters:
13388                 Path a path to the texture file
13389
13390             Returns:
13391                 unique texture identifier
13392             """
13393             # Example: see GEOM_TestAll.py
13394             ID = self.InsertOp.LoadTexture(Path)
13395             RaiseIfFailed("LoadTexture", self.InsertOp)
13396             return ID
13397
13398         ## Get internal name of the object based on its study entry
13399         #  @note This method does not provide an unique identifier of the geometry object.
13400         #  @note This is internal function of GEOM component, though it can be used outside it for
13401         #  appropriate reason (e.g. for identification of geometry object).
13402         #  @param obj geometry object
13403         #  @return unique object identifier
13404         #  @ingroup l1_geomBuilder_auxiliary
13405         def getObjectID(self, obj):
13406             """
13407             Get internal name of the object based on its study entry.
13408             Note: this method does not provide an unique identifier of the geometry object.
13409             It is an internal function of GEOM component, though it can be used outside GEOM for
13410             appropriate reason (e.g. for identification of geometry object).
13411
13412             Parameters:
13413                 obj geometry object
13414
13415             Returns:
13416                 unique object identifier
13417             """
13418             ID = ""
13419             entry = salome.ObjectToID(obj)
13420             if entry is not None:
13421                 lst = entry.split(":")
13422                 if len(lst) > 0:
13423                     ID = lst[-1] # -1 means last item in the list
13424                     return "GEOM_" + ID
13425             return ID
13426
13427
13428
13429         ## Add marker texture. @a Width and @a Height parameters
13430         #  specify width and height of the texture in pixels.
13431         #  If @a RowData is @c True, @a Texture parameter should represent texture data
13432         #  packed into the byte array. If @a RowData is @c False (default), @a Texture
13433         #  parameter should be unpacked string, in which '1' symbols represent opaque
13434         #  pixels and '0' represent transparent pixels of the texture bitmap.
13435         #
13436         #  @param Width texture width in pixels
13437         #  @param Height texture height in pixels
13438         #  @param Texture texture data
13439         #  @param RowData if @c True, @a Texture data are packed in the byte stream
13440         #  @return unique texture identifier
13441         #  @ingroup l1_geomBuilder_auxiliary
13442         @ManageTransactions("InsertOp")
13443         def AddTexture(self, Width, Height, Texture, RowData=False):
13444             """
13445             Add marker texture. Width and Height parameters
13446             specify width and height of the texture in pixels.
13447             If RowData is True, Texture parameter should represent texture data
13448             packed into the byte array. If RowData is False (default), Texture
13449             parameter should be unpacked string, in which '1' symbols represent opaque
13450             pixels and '0' represent transparent pixels of the texture bitmap.
13451
13452             Parameters:
13453                 Width texture width in pixels
13454                 Height texture height in pixels
13455                 Texture texture data
13456                 RowData if True, Texture data are packed in the byte stream
13457
13458             Returns:
13459                 return unique texture identifier
13460             """
13461             if not RowData: Texture = PackData(Texture)
13462             ID = self.InsertOp.AddTexture(Width, Height, Texture)
13463             RaiseIfFailed("AddTexture", self.InsertOp)
13464             return ID
13465
13466         ## Transfer not topological data from one GEOM object to another.
13467         #
13468         #  @param theObjectFrom the source object of non-topological data
13469         #  @param theObjectTo the destination object of non-topological data
13470         #  @param theFindMethod method to search sub-shapes of theObjectFrom
13471         #         in shape theObjectTo. Possible values are: GEOM.FSM_GetInPlace,
13472         #         GEOM.FSM_GetInPlaceByHistory and GEOM.FSM_GetInPlace_Old.
13473         #         Other values of GEOM.find_shape_method are not supported.
13474         #
13475         #  @return True in case of success; False otherwise.
13476         #
13477         #  @ingroup l1_geomBuilder_auxiliary
13478         #
13479         #  @ref swig_TransferData "Example"
13480         @ManageTransactions("InsertOp")
13481         def TransferData(self, theObjectFrom, theObjectTo,
13482                          theFindMethod=GEOM.FSM_GetInPlace):
13483             """
13484             Transfer not topological data from one GEOM object to another.
13485
13486             Parameters:
13487                 theObjectFrom the source object of non-topological data
13488                 theObjectTo the destination object of non-topological data
13489                 theFindMethod method to search sub-shapes of theObjectFrom
13490                               in shape theObjectTo. Possible values are:
13491                               GEOM.FSM_GetInPlace, GEOM.FSM_GetInPlaceByHistory
13492                               and GEOM.FSM_GetInPlace_Old. Other values of
13493                               GEOM.find_shape_method are not supported.
13494
13495             Returns:
13496                 True in case of success; False otherwise.
13497
13498             # Example: see GEOM_TestOthers.py
13499             """
13500             # Example: see GEOM_TestAll.py
13501             isOk = self.InsertOp.TransferData(theObjectFrom,
13502                                                theObjectTo, theFindMethod)
13503             RaiseIfFailed("TransferData", self.InsertOp)
13504             return isOk
13505
13506         ## Creates a new folder object. It is a container for any GEOM objects.
13507         #  @param Name name of the container
13508         #  @param Father parent object. If None,
13509         #         folder under 'Geometry' root object will be created.
13510         #  @return a new created folder
13511         #  @ingroup l1_publish_data
13512         def NewFolder(self, Name, Father=None):
13513             """
13514             Create a new folder object. It is an auxiliary container for any GEOM objects.
13515
13516             Parameters:
13517                 Name name of the container
13518                 Father parent object. If None,
13519                 folder under 'Geometry' root object will be created.
13520
13521             Returns:
13522                 a new created folder
13523             """
13524             if not Father: Father = self.father
13525             return self.CreateFolder(Name, Father)
13526
13527         ## Move object to the specified folder
13528         #  @param Object object to move
13529         #  @param Folder target folder
13530         #  @ingroup l1_publish_data
13531         def PutToFolder(self, Object, Folder):
13532             """
13533             Move object to the specified folder
13534
13535             Parameters:
13536                 Object object to move
13537                 Folder target folder
13538             """
13539             self.MoveToFolder(Object, Folder)
13540             pass
13541
13542         ## Move list of objects to the specified folder
13543         #  @param ListOfSO list of objects to move
13544         #  @param Folder target folder
13545         #  @ingroup l1_publish_data
13546         def PutListToFolder(self, ListOfSO, Folder):
13547             """
13548             Move list of objects to the specified folder
13549
13550             Parameters:
13551                 ListOfSO list of objects to move
13552                 Folder target folder
13553             """
13554             self.MoveListToFolder(ListOfSO, Folder)
13555             pass
13556
13557         ## @addtogroup l2_field
13558         ## @{
13559
13560         ## Creates a field
13561         #  @param shape the shape the field lies on
13562         #  @param name the field name
13563         #  @param type type of field data: 0 - bool, 1 - int, 2 - double, 3 - string
13564         #  @param dimension dimension of the shape the field lies on
13565         #         0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
13566         #  @param componentNames names of components
13567         #  @return a created field
13568         @ManageTransactions("FieldOp")
13569         def CreateField(self, shape, name, type, dimension, componentNames):
13570             """
13571             Creates a field
13572
13573             Parameters:
13574                 shape the shape the field lies on
13575                 name  the field name
13576                 type  type of field data
13577                 dimension dimension of the shape the field lies on
13578                           0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
13579                 componentNames names of components
13580
13581             Returns:
13582                 a created field
13583             """
13584             if isinstance( type, int ):
13585                 if type < 0 or type > 3:
13586                     raise RuntimeError, "CreateField : Error: data type must be within [0-3] range"
13587                 type = [GEOM.FDT_Bool,GEOM.FDT_Int,GEOM.FDT_Double,GEOM.FDT_String][type]
13588
13589             f = self.FieldOp.CreateField( shape, name, type, dimension, componentNames)
13590             RaiseIfFailed("CreateField", self.FieldOp)
13591             global geom
13592             geom._autoPublish( f, "", name)
13593             return f
13594
13595         ## Removes a field from the GEOM component
13596         #  @param field the field to remove
13597         def RemoveField(self, field):
13598             "Removes a field from the GEOM component"
13599             global geom
13600             if isinstance( field, GEOM._objref_GEOM_Field ):
13601                 geom.RemoveObject( field )
13602             elif isinstance( field, geomField ):
13603                 geom.RemoveObject( field.field )
13604             else:
13605                 raise RuntimeError, "RemoveField() : the object is not a field"
13606             return
13607
13608         ## Returns number of fields on a shape
13609         @ManageTransactions("FieldOp")
13610         def CountFields(self, shape):
13611             "Returns number of fields on a shape"
13612             nb = self.FieldOp.CountFields( shape )
13613             RaiseIfFailed("CountFields", self.FieldOp)
13614             return nb
13615
13616         ## Returns all fields on a shape
13617         @ManageTransactions("FieldOp")
13618         def GetFields(self, shape):
13619             "Returns all fields on a shape"
13620             ff = self.FieldOp.GetFields( shape )
13621             RaiseIfFailed("GetFields", self.FieldOp)
13622             return ff
13623
13624         ## Returns a field on a shape by its name
13625         @ManageTransactions("FieldOp")
13626         def GetField(self, shape, name):
13627             "Returns a field on a shape by its name"
13628             f = self.FieldOp.GetField( shape, name )
13629             RaiseIfFailed("GetField", self.FieldOp)
13630             return f
13631
13632         # end of l2_field
13633         ## @}
13634
13635
13636 import omniORB
13637 # Register the new proxy for GEOM_Gen
13638 omniORB.registerObjref(GEOM._objref_GEOM_Gen._NP_RepositoryId, geomBuilder)
13639
13640
13641 ## Field on Geometry
13642 #  @ingroup l2_field
13643 class geomField( GEOM._objref_GEOM_Field ):
13644
13645     def __init__(self):
13646         GEOM._objref_GEOM_Field.__init__(self)
13647         self.field = GEOM._objref_GEOM_Field
13648         return
13649
13650     ## Returns the shape the field lies on
13651     def getShape(self):
13652         "Returns the shape the field lies on"
13653         return self.field.GetShape(self)
13654
13655     ## Returns the field name
13656     def getName(self):
13657         "Returns the field name"
13658         return self.field.GetName(self)
13659
13660     ## Returns type of field data as integer [0-3]
13661     def getType(self):
13662         "Returns type of field data"
13663         return self.field.GetDataType(self)._v
13664
13665     ## Returns type of field data:
13666     #  one of GEOM.FDT_Bool, GEOM.FDT_Int, GEOM.FDT_Double, GEOM.FDT_String
13667     def getTypeEnum(self):
13668         "Returns type of field data"
13669         return self.field.GetDataType(self)
13670
13671     ## Returns dimension of the shape the field lies on:
13672     #  0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
13673     def getDimension(self):
13674         """Returns dimension of the shape the field lies on:
13675         0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape"""
13676         return self.field.GetDimension(self)
13677
13678     ## Returns names of components
13679     def getComponents(self):
13680         "Returns names of components"
13681         return self.field.GetComponents(self)
13682
13683     ## Adds a time step to the field
13684     #  @param step the time step number further used as the step identifier
13685     #  @param stamp the time step time
13686     #  @param values the values of the time step
13687     def addStep(self, step, stamp, values):
13688         "Adds a time step to the field"
13689         stp = self.field.AddStep( self, step, stamp )
13690         if not stp:
13691             raise RuntimeError, \
13692                   "Field.addStep() : Error: step %s already exists in this field"%step
13693         global geom
13694         geom._autoPublish( stp, "", "Step %s, %s"%(step,stamp))
13695         self.setValues( step, values )
13696         return stp
13697
13698     ## Remove a time step from the field
13699     def removeStep(self,step):
13700         "Remove a time step from the field"
13701         stepSO = None
13702         try:
13703             stepObj = self.field.GetStep( self, step )
13704             if stepObj:
13705                 stepSO = geom.myStudy.FindObjectID( stepObj.GetStudyEntry() )
13706         except:
13707             #import traceback
13708             #traceback.print_exc()
13709             pass
13710         self.field.RemoveStep( self, step )
13711         if stepSO:
13712             geom.myBuilder.RemoveObjectWithChildren( stepSO )
13713         return
13714
13715     ## Returns number of time steps in the field
13716     def countSteps(self):
13717         "Returns number of time steps in the field"
13718         return self.field.CountSteps(self)
13719
13720     ## Returns a list of time step IDs in the field
13721     def getSteps(self):
13722         "Returns a list of time step IDs in the field"
13723         return self.field.GetSteps(self)
13724
13725     ## Returns a time step by its ID
13726     def getStep(self,step):
13727         "Returns a time step by its ID"
13728         stp = self.field.GetStep(self, step)
13729         if not stp:
13730             raise RuntimeError, "Step %s is missing from this field"%step
13731         return stp
13732
13733     ## Returns the time of the field step
13734     def getStamp(self,step):
13735         "Returns the time of the field step"
13736         return self.getStep(step).GetStamp()
13737
13738     ## Changes the time of the field step
13739     def setStamp(self, step, stamp):
13740         "Changes the time of the field step"
13741         return self.getStep(step).SetStamp(stamp)
13742
13743     ## Returns values of the field step
13744     def getValues(self, step):
13745         "Returns values of the field step"
13746         return self.getStep(step).GetValues()
13747
13748     ## Changes values of the field step
13749     def setValues(self, step, values):
13750         "Changes values of the field step"
13751         stp = self.getStep(step)
13752         errBeg = "Field.setValues(values) : Error: "
13753         try:
13754             ok = stp.SetValues( values )
13755         except Exception, e:
13756             excStr = str(e)
13757             if excStr.find("WrongPythonType") > 0:
13758                 raise RuntimeError, errBeg +\
13759                       "wrong type of values, %s values are expected"%str(self.getTypeEnum())[4:]
13760             raise RuntimeError, errBeg + str(e)
13761         if not ok:
13762             nbOK = self.field.GetArraySize(self)
13763             nbKO = len(values)
13764             if nbOK != nbKO:
13765                 raise RuntimeError, errBeg + "len(values) must be %s but not %s"%(nbOK,nbKO)
13766             else:
13767                 raise RuntimeError, errBeg + "failed"
13768         return
13769
13770     pass # end of class geomField
13771
13772 # Register the new proxy for GEOM_Field
13773 omniORB.registerObjref(GEOM._objref_GEOM_Field._NP_RepositoryId, geomField)
13774
13775
13776 ## Create a new geomBuilder instance.The geomBuilder class provides the Python
13777 #  interface to GEOM operations.
13778 #
13779 #  Typical use is:
13780 #  \code
13781 #    import salome
13782 #    salome.salome_init()
13783 #    from salome.geom import geomBuilder
13784 #    geompy = geomBuilder.New(salome.myStudy)
13785 #  \endcode
13786 #  @param  study     SALOME study, generally obtained by salome.myStudy.
13787 #  @param  instance  CORBA proxy of GEOM Engine. If None, the default Engine is used.
13788 #  @return geomBuilder instance
13789 def New( study, instance=None):
13790     """
13791     Create a new geomBuilder instance.The geomBuilder class provides the Python
13792     interface to GEOM operations.
13793
13794     Typical use is:
13795         import salome
13796         salome.salome_init()
13797         from salome.geom import geomBuilder
13798         geompy = geomBuilder.New(salome.myStudy)
13799
13800     Parameters:
13801         study     SALOME study, generally obtained by salome.myStudy.
13802         instance  CORBA proxy of GEOM Engine. If None, the default Engine is used.
13803     Returns:
13804         geomBuilder instance
13805     """
13806     #print "New geomBuilder ", study, instance
13807     global engine
13808     global geom
13809     global doLcc
13810     engine = instance
13811     if engine is None:
13812       doLcc = True
13813     geom = geomBuilder()
13814     assert isinstance(geom,geomBuilder), "Geom engine class is %s but should be geomBuilder.geomBuilder. Import geomBuilder before creating the instance."%geom.__class__
13815     geom.init_geom(study)
13816     return geom
13817
13818
13819 # Register methods from the plug-ins in the geomBuilder class 
13820 plugins_var = os.environ.get( "GEOM_PluginsList" )
13821
13822 plugins = None
13823 if plugins_var is not None:
13824     plugins = plugins_var.split( ":" )
13825     plugins=filter(lambda x: len(x)>0, plugins)
13826 if plugins is not None:
13827     for pluginName in plugins:
13828         pluginBuilderName = pluginName + "Builder"
13829         try:
13830             exec( "from salome.%s.%s import *" % (pluginName, pluginBuilderName))
13831         except Exception, e:
13832             from salome_utils import verbose
13833             print "Exception while loading %s: %s" % ( pluginBuilderName, e )
13834             continue
13835         exec( "from salome.%s import %s" % (pluginName, pluginBuilderName))
13836         plugin = eval( pluginBuilderName )
13837         
13838         # add methods from plugin module to the geomBuilder class
13839         for k in dir( plugin ):
13840             if k[0] == '_': continue
13841             method = getattr( plugin, k )
13842             if type( method ).__name__ == 'function':
13843                 if not hasattr( geomBuilder, k ):
13844                     setattr( geomBuilder, k, method )
13845                 pass
13846             pass
13847         del pluginName
13848         pass
13849     pass