Salome HOME
Typo-fix by Kunda
[modules/geom.git] / src / GEOM_SWIG / geomBuilder.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2016  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 contains 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 not Operation.IsDone() 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         #
604         #  - LCS:          [x y z  xx xy xz  yx yy yz  zx zy zz]
605         #  @ingroup l1_geomBuilder_auxiliary
606         kind = GEOM.GEOM_IKindOfShape
607
608         def __new__(cls):
609             global engine
610             global geom
611             global doLcc
612             global created
613             #print "==== __new__ ", engine, geom, doLcc, created
614             if geom is None:
615                 # geom engine is either retrieved from engine, or created
616                 geom = engine
617                 # Following test avoids a recursive loop
618                 if doLcc:
619                     if geom is not None:
620                         # geom engine not created: existing engine found
621                         doLcc = False
622                     if doLcc and not created:
623                         doLcc = False
624                         # FindOrLoadComponent called:
625                         # 1. CORBA resolution of server
626                         # 2. the __new__ method is called again
627                         #print "==== FindOrLoadComponent ", engine, geom, doLcc, created
628                         geom = lcc.FindOrLoadComponent( "FactoryServer", "GEOM" )
629                         #print "====1 ",geom
630                 else:
631                     # FindOrLoadComponent not called
632                     if geom is None:
633                         # geomBuilder instance is created from lcc.FindOrLoadComponent
634                         #print "==== super ", engine, geom, doLcc, created
635                         geom = super(geomBuilder,cls).__new__(cls)
636                         #print "====2 ",geom
637                     else:
638                         # geom engine not created: existing engine found
639                         #print "==== existing ", engine, geom, doLcc, created
640                         pass
641                 #print "return geom 1 ", geom
642                 return geom
643
644             #print "return geom 2 ", geom
645             return geom
646
647         def __init__(self):
648             global created
649             #print "-------- geomBuilder __init__ --- ", created, self
650             if not created:
651               created = True
652               GEOM._objref_GEOM_Gen.__init__(self)
653               self.myMaxNbSubShapesAllowed = 0 # auto-publishing is disabled by default
654               self.myBuilder = None
655               self.myStudyId = 0
656               self.father    = None
657
658               self.BasicOp  = None
659               self.CurvesOp = None
660               self.PrimOp   = None
661               self.ShapesOp = None
662               self.HealOp   = None
663               self.InsertOp = None
664               self.BoolOp   = None
665               self.TrsfOp   = None
666               self.LocalOp  = None
667               self.MeasuOp  = None
668               self.BlocksOp = None
669               self.GroupOp  = None
670               self.FieldOp  = None
671             pass
672
673         ## Process object publication in the study, as follows:
674         #  - if @a theName is specified (not None), the object is published in the study
675         #    with this name, not taking into account "auto-publishing" option;
676         #  - if @a theName is NOT specified, the object is published in the study
677         #    (using default name, which can be customized using @a theDefaultName parameter)
678         #    only if auto-publishing is switched on.
679         #
680         #  @param theObj  object, a subject for publishing
681         #  @param theName object name for study
682         #  @param theDefaultName default name for the auto-publishing
683         #
684         #  @sa addToStudyAuto()
685         def _autoPublish(self, theObj, theName, theDefaultName="noname"):
686             # ---
687             def _item_name(_names, _defname, _idx=-1):
688                 if not _names: _names = _defname
689                 if type(_names) in [types.ListType, types.TupleType]:
690                     if _idx >= 0:
691                         if _idx >= len(_names) or not _names[_idx]:
692                             if type(_defname) not in [types.ListType, types.TupleType]:
693                                 _name = "%s_%d"%(_defname, _idx+1)
694                             elif len(_defname) > 0 and _idx >= 0 and _idx < len(_defname):
695                                 _name = _defname[_idx]
696                             else:
697                                 _name = "%noname_%d"%(dn, _idx+1)
698                             pass
699                         else:
700                             _name = _names[_idx]
701                         pass
702                     else:
703                         # must be wrong  usage
704                         _name = _names[0]
705                     pass
706                 else:
707                     if _idx >= 0:
708                         _name = "%s_%d"%(_names, _idx+1)
709                     else:
710                         _name = _names
711                     pass
712                 return _name
713             # ---
714             def _publish( _name, _obj ):
715                 fatherObj = None
716                 if isinstance( _obj, GEOM._objref_GEOM_Field ):
717                     fatherObj = _obj.GetShape()
718                 elif isinstance( _obj, GEOM._objref_GEOM_FieldStep ):
719                     fatherObj = _obj.GetField()
720                 elif not _obj.IsMainShape():
721                     fatherObj = _obj.GetMainShape()
722                     pass
723                 if fatherObj and fatherObj.GetStudyEntry():
724                     self.addToStudyInFather(fatherObj, _obj, _name)
725                 else:
726                     self.addToStudy(_obj, _name)
727                     pass
728                 return
729             # ---
730             if not theObj:
731                 return # null object
732             if not theName and not self.myMaxNbSubShapesAllowed:
733                 return # nothing to do: auto-publishing is disabled
734             if not theName and not theDefaultName:
735                 return # neither theName nor theDefaultName is given
736             import types
737             if type(theObj) in [types.ListType, types.TupleType]:
738                 # list of objects is being published
739                 idx = 0
740                 for obj in theObj:
741                     if not obj: continue # bad object
742                     name = _item_name(theName, theDefaultName, idx)
743                     _publish( name, obj )
744                     idx = idx+1
745                     if not theName and idx == self.myMaxNbSubShapesAllowed: break
746                     pass
747                 pass
748             else:
749                 # single object is published
750                 name = _item_name(theName, theDefaultName)
751                 _publish( name, theObj )
752             pass
753
754         ## @addtogroup l1_geomBuilder_auxiliary
755         ## @{
756         def init_geom(self,theStudy):
757             self.myStudy = theStudy
758             self.myStudyId = self.myStudy._get_StudyId()
759             self.myBuilder = self.myStudy.NewBuilder()
760             self.father = self.myStudy.FindComponent("GEOM")
761             notebook.myStudy = theStudy
762             if self.father is None:
763                 self.father = self.myBuilder.NewComponent("GEOM")
764                 A1 = self.myBuilder.FindOrCreateAttribute(self.father, "AttributeName")
765                 FName = A1._narrow(SALOMEDS.AttributeName)
766                 FName.SetValue("Geometry")
767                 A2 = self.myBuilder.FindOrCreateAttribute(self.father, "AttributePixMap")
768                 aPixmap = A2._narrow(SALOMEDS.AttributePixMap)
769                 aPixmap.SetPixMap("ICON_OBJBROWSER_Geometry")
770                 self.myBuilder.DefineComponentInstance(self.father,self)
771                 pass
772             self.BasicOp  = self.GetIBasicOperations    (self.myStudyId)
773             self.CurvesOp = self.GetICurvesOperations   (self.myStudyId)
774             self.PrimOp   = self.GetI3DPrimOperations   (self.myStudyId)
775             self.ShapesOp = self.GetIShapesOperations   (self.myStudyId)
776             self.HealOp   = self.GetIHealingOperations  (self.myStudyId)
777             self.InsertOp = self.GetIInsertOperations   (self.myStudyId)
778             self.BoolOp   = self.GetIBooleanOperations  (self.myStudyId)
779             self.TrsfOp   = self.GetITransformOperations(self.myStudyId)
780             self.LocalOp  = self.GetILocalOperations    (self.myStudyId)
781             self.MeasuOp  = self.GetIMeasureOperations  (self.myStudyId)
782             self.BlocksOp = self.GetIBlocksOperations   (self.myStudyId)
783             self.GroupOp  = self.GetIGroupOperations    (self.myStudyId)
784             self.FieldOp  = self.GetIFieldOperations    (self.myStudyId)
785
786             # set GEOM as root in the use case tree
787             self.myUseCaseBuilder = self.myStudy.GetUseCaseBuilder()
788             self.myUseCaseBuilder.SetRootCurrent()
789             self.myUseCaseBuilder.Append(self.father)
790
791             # load data from the study file, if necessary
792             self.myBuilder.LoadWith(self.father, self)
793             pass
794
795         def GetPluginOperations(self, studyID, libraryName):
796             op = GEOM._objref_GEOM_Gen.GetPluginOperations(self, studyID, libraryName)
797             return op
798
799         ## Enable / disable results auto-publishing
800         #
801         #  The automatic publishing is managed in the following way:
802         #  - if @a maxNbSubShapes = 0, automatic publishing is disabled.
803         #  - if @a maxNbSubShapes = -1 (default), automatic publishing is enabled and
804         #  maximum number of sub-shapes allowed for publishing is unlimited; any negative
805         #  value passed as parameter has the same effect.
806         #  - if @a maxNbSubShapes is any positive value, automatic publishing is enabled and
807         #  maximum number of sub-shapes allowed for publishing is set to specified value.
808         #
809         #  @param maxNbSubShapes maximum number of sub-shapes allowed for publishing.
810         #  @ingroup l1_publish_data
811         def addToStudyAuto(self, maxNbSubShapes=-1):
812             """
813             Enable / disable results auto-publishing
814
815             The automatic publishing is managed in the following way:
816             - if @a maxNbSubShapes = 0, automatic publishing is disabled;
817             - if @a maxNbSubShapes = -1 (default), automatic publishing is enabled and
818             maximum number of sub-shapes allowed for publishing is unlimited; any negative
819             value passed as parameter has the same effect.
820             - if @a maxNbSubShapes is any positive value, automatic publishing is enabled and
821             maximum number of sub-shapes allowed for publishing is set to this value.
822
823             Parameters:
824                 maxNbSubShapes maximum number of sub-shapes allowed for publishing.
825
826             Example of usage:
827                 geompy.addToStudyAuto()   # enable auto-publishing
828                 geompy.MakeBoxDXDYDZ(100) # box is created and published with default name
829                 geompy.addToStudyAuto(0)  # disable auto-publishing
830             """
831             self.myMaxNbSubShapesAllowed = max(-1, maxNbSubShapes)
832             pass
833
834         ## Dump component to the Python script
835         #  This method overrides IDL function to allow default values for the parameters.
836         def DumpPython(self, theStudy, theIsPublished=True, theIsMultiFile=True):
837             """
838             Dump component to the Python script
839             This method overrides IDL function to allow default values for the parameters.
840             """
841             return GEOM._objref_GEOM_Gen.DumpPython(self, theStudy, theIsPublished, theIsMultiFile)
842
843         ## Get name for sub-shape aSubObj of shape aMainObj
844         #
845         # @ref swig_SubShapeName "Example"
846         @ManageTransactions("ShapesOp")
847         def SubShapeName(self,aSubObj, aMainObj):
848             """
849             Get name for sub-shape aSubObj of shape aMainObj
850             """
851             # Example: see GEOM_TestAll.py
852
853             #aSubId  = orb.object_to_string(aSubObj)
854             #aMainId = orb.object_to_string(aMainObj)
855             #index = gg.getIndexTopology(aSubId, aMainId)
856             #name = gg.getShapeTypeString(aSubId) + "_%d"%(index)
857             index = self.ShapesOp.GetTopologyIndex(aMainObj, aSubObj)
858             name = self.ShapesOp.GetShapeTypeString(aSubObj) + "_%d"%(index)
859             return name
860
861         ## Publish in study aShape with name aName
862         #
863         #  \param aShape the shape to be published
864         #  \param aName  the name for the shape
865         #  \param doRestoreSubShapes if True, finds and publishes also
866         #         sub-shapes of <VAR>aShape</VAR>, corresponding to its arguments
867         #         and published sub-shapes of arguments
868         #  \param theArgs,theFindMethod,theInheritFirstArg see RestoreSubShapes() for
869         #                                                  these arguments description
870         #  \return study entry of the published shape in form of string
871         #
872         #  @ingroup l1_publish_data
873         #  @ref swig_all_addtostudy "Example"
874         def addToStudy(self, aShape, aName, doRestoreSubShapes=False,
875                        theArgs=[], theFindMethod=GEOM.FSM_GetInPlace, theInheritFirstArg=False):
876             """
877             Publish in study aShape with name aName
878
879             Parameters:
880                 aShape the shape to be published
881                 aName  the name for the shape
882                 doRestoreSubShapes if True, finds and publishes also
883                                    sub-shapes of aShape, corresponding to its arguments
884                                    and published sub-shapes of arguments
885                 theArgs,theFindMethod,theInheritFirstArg see geompy.RestoreSubShapes() for
886                                                          these arguments description
887
888             Returns:
889                 study entry of the published shape in form of string
890
891             Example of usage:
892                 id_block1 = geompy.addToStudy(Block1, "Block 1")
893             """
894             # Example: see GEOM_TestAll.py
895             try:
896                 aSObject = self.AddInStudy(self.myStudy, aShape, aName, None)
897                 if aSObject and aName: aSObject.SetAttrString("AttributeName", aName)
898                 if doRestoreSubShapes:
899                     self.RestoreSubShapesSO(self.myStudy, aSObject, theArgs,
900                                             theFindMethod, theInheritFirstArg, True )
901             except:
902                 print "addToStudy() failed"
903                 return ""
904             return aShape.GetStudyEntry()
905
906         ## Publish in study aShape with name aName as sub-object of previously published aFather
907         #  \param aFather previously published object
908         #  \param aShape the shape to be published as sub-object of <VAR>aFather</VAR>
909         #  \param aName  the name for the shape
910         #
911         #  \return study entry of the published shape in form of string
912         #
913         #  @ingroup l1_publish_data
914         #  @ref swig_all_addtostudyInFather "Example"
915         def addToStudyInFather(self, aFather, aShape, aName):
916             """
917             Publish in study aShape with name aName as sub-object of previously published aFather
918
919             Parameters:
920                 aFather previously published object
921                 aShape the shape to be published as sub-object of aFather
922                 aName  the name for the shape
923
924             Returns:
925                 study entry of the published shape in form of string
926             """
927             # Example: see GEOM_TestAll.py
928             try:
929                 aSObject = self.AddInStudy(self.myStudy, aShape, aName, aFather)
930                 if aSObject and aName: aSObject.SetAttrString("AttributeName", aName)
931             except:
932                 print "addToStudyInFather() failed"
933                 return ""
934             return aShape.GetStudyEntry()
935
936         ## Unpublish object in study
937         #
938         #  \param obj the object to be unpublished
939         def hideInStudy(self, obj):
940             """
941             Unpublish object in study
942
943             Parameters:
944                 obj the object to be unpublished
945             """
946             ior = salome.orb.object_to_string(obj)
947             aSObject = self.myStudy.FindObjectIOR(ior)
948             if aSObject is not None:
949                 genericAttribute = self.myBuilder.FindOrCreateAttribute(aSObject, "AttributeDrawable")
950                 drwAttribute = genericAttribute._narrow(SALOMEDS.AttributeDrawable)
951                 drwAttribute.SetDrawable(False)
952                 # hide references if any
953                 vso = self.myStudy.FindDependances(aSObject);
954                 for refObj in vso :
955                     genericAttribute = self.myBuilder.FindOrCreateAttribute(refObj, "AttributeDrawable")
956                     drwAttribute = genericAttribute._narrow(SALOMEDS.AttributeDrawable)
957                     drwAttribute.SetDrawable(False)
958                     pass
959                 pass
960
961         # end of l1_geomBuilder_auxiliary
962         ## @}
963
964         ## @addtogroup l3_restore_ss
965         ## @{
966
967         ## Publish sub-shapes, standing for arguments and sub-shapes of arguments
968         #  To be used from python scripts out of addToStudy() (non-default usage)
969         #  \param theObject published GEOM.GEOM_Object, arguments of which will be published
970         #  \param theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
971         #                   If this list is empty, all operation arguments will be published
972         #  \param theFindMethod method to search sub-shapes, corresponding to arguments and
973         #                       their sub-shapes. Value from enumeration GEOM.find_shape_method.
974         #  \param theInheritFirstArg set properties of the first argument for <VAR>theObject</VAR>.
975         #                            Do not publish sub-shapes in place of arguments, but only
976         #                            in place of sub-shapes of the first argument,
977         #                            because the whole shape corresponds to the first argument.
978         #                            Mainly to be used after transformations, but it also can be
979         #                            useful after partition with one object shape, and some other
980         #                            operations, where only the first argument has to be considered.
981         #                            If theObject has only one argument shape, this flag is automatically
982         #                            considered as True, not regarding really passed value.
983         #  \param theAddPrefix add prefix "from_" to names of restored sub-shapes,
984         #                      and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
985         #  \return list of published sub-shapes
986         #
987         #  @ref tui_restore_prs_params "Example"
988         def RestoreSubShapes (self, theObject, theArgs=[], theFindMethod=GEOM.FSM_GetInPlace,
989                               theInheritFirstArg=False, theAddPrefix=True):
990             """
991             Publish sub-shapes, standing for arguments and sub-shapes of arguments
992             To be used from python scripts out of geompy.addToStudy (non-default usage)
993
994             Parameters:
995                 theObject published GEOM.GEOM_Object, arguments of which will be published
996                 theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
997                           If this list is empty, all operation arguments will be published
998                 theFindMethod method to search sub-shapes, corresponding to arguments and
999                               their sub-shapes. Value from enumeration GEOM.find_shape_method.
1000                 theInheritFirstArg set properties of the first argument for theObject.
1001                                    Do not publish sub-shapes in place of arguments, but only
1002                                    in place of sub-shapes of the first argument,
1003                                    because the whole shape corresponds to the first argument.
1004                                    Mainly to be used after transformations, but it also can be
1005                                    useful after partition with one object shape, and some other
1006                                    operations, where only the first argument has to be considered.
1007                                    If theObject has only one argument shape, this flag is automatically
1008                                    considered as True, not regarding really passed value.
1009                 theAddPrefix add prefix "from_" to names of restored sub-shapes,
1010                              and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1011             Returns:
1012                 list of published sub-shapes
1013             """
1014             # Example: see GEOM_TestAll.py
1015             return self.RestoreSubShapesO(self.myStudy, theObject, theArgs,
1016                                           theFindMethod, theInheritFirstArg, theAddPrefix)
1017
1018         ## Publish sub-shapes, standing for arguments and sub-shapes of arguments
1019         #  To be used from python scripts out of addToStudy() (non-default usage)
1020         #  \param theObject published GEOM.GEOM_Object, arguments of which will be published
1021         #  \param theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
1022         #                   If this list is empty, all operation arguments will be published
1023         #  \param theFindMethod method to search sub-shapes, corresponding to arguments and
1024         #                       their sub-shapes. Value from enumeration GEOM::find_shape_method.
1025         #  \param theInheritFirstArg set properties of the first argument for <VAR>theObject</VAR>.
1026         #                            Do not publish sub-shapes in place of arguments, but only
1027         #                            in place of sub-shapes of the first argument,
1028         #                            because the whole shape corresponds to the first argument.
1029         #                            Mainly to be used after transformations, but it also can be
1030         #                            useful after partition with one object shape, and some other
1031         #                            operations, where only the first argument has to be considered.
1032         #                            If theObject has only one argument shape, this flag is automatically
1033         #                            considered as True, not regarding really passed value.
1034         #  \param theAddPrefix add prefix "from_" to names of restored sub-shapes,
1035         #                      and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1036         #  \return list of published sub-shapes
1037         #
1038         #  @ref tui_restore_prs_params "Example"
1039         def RestoreGivenSubShapes (self, theObject, theArgs=[], theFindMethod=GEOM.FSM_GetInPlace,
1040                                    theInheritFirstArg=False, theAddPrefix=True):
1041             """
1042             Publish sub-shapes, standing for arguments and sub-shapes of arguments
1043             To be used from python scripts out of geompy.addToStudy() (non-default usage)
1044
1045             Parameters:
1046                 theObject published GEOM.GEOM_Object, arguments of which will be published
1047                 theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
1048                           If this list is empty, all operation arguments will be published
1049                 theFindMethod method to search sub-shapes, corresponding to arguments and
1050                               their sub-shapes. Value from enumeration GEOM::find_shape_method.
1051                 theInheritFirstArg set properties of the first argument for theObject.
1052                                    Do not publish sub-shapes in place of arguments, but only
1053                                    in place of sub-shapes of the first argument,
1054                                    because the whole shape corresponds to the first argument.
1055                                    Mainly to be used after transformations, but it also can be
1056                                    useful after partition with one object shape, and some other
1057                                    operations, where only the first argument has to be considered.
1058                                    If theObject has only one argument shape, this flag is automatically
1059                                    considered as True, not regarding really passed value.
1060                 theAddPrefix add prefix "from_" to names of restored sub-shapes,
1061                              and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1062
1063             Returns:
1064                 list of published sub-shapes
1065             """
1066             # Example: see GEOM_TestAll.py
1067             return self.RestoreGivenSubShapesO(self.myStudy, theObject, theArgs,
1068                                                theFindMethod, theInheritFirstArg, theAddPrefix)
1069
1070         # end of l3_restore_ss
1071         ## @}
1072
1073         ## @addtogroup l3_basic_go
1074         ## @{
1075
1076         ## Create point by three coordinates.
1077         #  @param theX The X coordinate of the point.
1078         #  @param theY The Y coordinate of the point.
1079         #  @param theZ The Z coordinate of the point.
1080         #  @param theName Object name; when specified, this parameter is used
1081         #         for result publication in the study. Otherwise, if automatic
1082         #         publication is switched on, default value is used for result name.
1083         #
1084         #  @return New GEOM.GEOM_Object, containing the created point.
1085         #
1086         #  @ref tui_creation_point "Example"
1087         @ManageTransactions("BasicOp")
1088         def MakeVertex(self, theX, theY, theZ, theName=None):
1089             """
1090             Create point by three coordinates.
1091
1092             Parameters:
1093                 theX The X coordinate of the point.
1094                 theY The Y coordinate of the point.
1095                 theZ The Z coordinate of the point.
1096                 theName Object name; when specified, this parameter is used
1097                         for result publication in the study. Otherwise, if automatic
1098                         publication is switched on, default value is used for result name.
1099
1100             Returns:
1101                 New GEOM.GEOM_Object, containing the created point.
1102             """
1103             # Example: see GEOM_TestAll.py
1104             theX,theY,theZ,Parameters = ParseParameters(theX, theY, theZ)
1105             anObj = self.BasicOp.MakePointXYZ(theX, theY, theZ)
1106             RaiseIfFailed("MakePointXYZ", self.BasicOp)
1107             anObj.SetParameters(Parameters)
1108             self._autoPublish(anObj, theName, "vertex")
1109             return anObj
1110
1111         ## Create a point, distant from the referenced point
1112         #  on the given distances along the coordinate axes.
1113         #  @param theReference The referenced point.
1114         #  @param theX Displacement from the referenced point along OX axis.
1115         #  @param theY Displacement from the referenced point along OY axis.
1116         #  @param theZ Displacement from the referenced point along OZ axis.
1117         #  @param theName Object name; when specified, this parameter is used
1118         #         for result publication in the study. Otherwise, if automatic
1119         #         publication is switched on, default value is used for result name.
1120         #
1121         #  @return New GEOM.GEOM_Object, containing the created point.
1122         #
1123         #  @ref tui_creation_point "Example"
1124         @ManageTransactions("BasicOp")
1125         def MakeVertexWithRef(self, theReference, theX, theY, theZ, theName=None):
1126             """
1127             Create a point, distant from the referenced point
1128             on the given distances along the coordinate axes.
1129
1130             Parameters:
1131                 theReference The referenced point.
1132                 theX Displacement from the referenced point along OX axis.
1133                 theY Displacement from the referenced point along OY axis.
1134                 theZ Displacement from the referenced point along OZ axis.
1135                 theName Object name; when specified, this parameter is used
1136                         for result publication in the study. Otherwise, if automatic
1137                         publication is switched on, default value is used for result name.
1138
1139             Returns:
1140                 New GEOM.GEOM_Object, containing the created point.
1141             """
1142             # Example: see GEOM_TestAll.py
1143             theX,theY,theZ,Parameters = ParseParameters(theX, theY, theZ)
1144             anObj = self.BasicOp.MakePointWithReference(theReference, theX, theY, theZ)
1145             RaiseIfFailed("MakePointWithReference", self.BasicOp)
1146             anObj.SetParameters(Parameters)
1147             self._autoPublish(anObj, theName, "vertex")
1148             return anObj
1149
1150         ## Create a point, corresponding to the given parameter on the given curve.
1151         #  @param theRefCurve The referenced curve.
1152         #  @param theParameter Value of parameter on the referenced curve.
1153         #  @param takeOrientationIntoAccount flag that tells if it is necessary
1154         #         to take the curve's orientation into account for the
1155         #         operation. I.e. if this flag is set, the results for the same
1156         #         parameters (except the value 0.5) is different for forward
1157         #         and reversed curves. If it is not set the result is the same.
1158         #  @param theName Object name; when specified, this parameter is used
1159         #         for result publication in the study. Otherwise, if automatic
1160         #         publication is switched on, default value is used for result name.
1161         #
1162         #  @return New GEOM.GEOM_Object, containing the created point.
1163         #
1164         #  @ref tui_creation_point "Example"
1165         @ManageTransactions("BasicOp")
1166         def MakeVertexOnCurve(self, theRefCurve, theParameter,
1167                               takeOrientationIntoAccount=False, theName=None):
1168             """
1169             Create a point, corresponding to the given parameter on the given curve.
1170
1171             Parameters:
1172                 theRefCurve The referenced curve.
1173                 theParameter Value of parameter on the referenced curve.
1174                 takeOrientationIntoAccount flag that tells if it is necessary
1175                         to take the curve's orientation into account for the
1176                         operation. I.e. if this flag is set, the results for
1177                         the same parameters (except the value 0.5) is different
1178                         for forward and reversed curves. If it is not set
1179                         the result is the same.
1180                 theName Object name; when specified, this parameter is used
1181                         for result publication in the study. Otherwise, if automatic
1182                         publication is switched on, default value is used for result name.
1183
1184             Returns:
1185                 New GEOM.GEOM_Object, containing the created point.
1186
1187             Example of usage:
1188                 p_on_arc = geompy.MakeVertexOnCurve(Arc, 0.25)
1189             """
1190             # Example: see GEOM_TestAll.py
1191             theParameter, takeOrientationIntoAccount, Parameters = ParseParameters(
1192                 theParameter, takeOrientationIntoAccount)
1193             anObj = self.BasicOp.MakePointOnCurve(theRefCurve, theParameter,
1194                                                   takeOrientationIntoAccount)
1195             RaiseIfFailed("MakePointOnCurve", self.BasicOp)
1196             anObj.SetParameters(Parameters)
1197             self._autoPublish(anObj, theName, "vertex")
1198             return anObj
1199
1200         ## Create a point by projection give coordinates on the given curve
1201         #  @param theRefCurve The referenced curve.
1202         #  @param theX X-coordinate in 3D space
1203         #  @param theY Y-coordinate in 3D space
1204         #  @param theZ Z-coordinate in 3D space
1205         #  @param theName Object name; when specified, this parameter is used
1206         #         for result publication in the study. Otherwise, if automatic
1207         #         publication is switched on, default value is used for result name.
1208         #
1209         #  @return New GEOM.GEOM_Object, containing the created point.
1210         #
1211         #  @ref tui_creation_point "Example"
1212         @ManageTransactions("BasicOp")
1213         def MakeVertexOnCurveByCoord(self, theRefCurve, theX, theY, theZ, theName=None):
1214             """
1215             Create a point by projection give coordinates on the given curve
1216
1217             Parameters:
1218                 theRefCurve The referenced curve.
1219                 theX X-coordinate in 3D space
1220                 theY Y-coordinate in 3D space
1221                 theZ Z-coordinate in 3D space
1222                 theName Object name; when specified, this parameter is used
1223                         for result publication in the study. Otherwise, if automatic
1224                         publication is switched on, default value is used for result name.
1225
1226             Returns:
1227                 New GEOM.GEOM_Object, containing the created point.
1228
1229             Example of usage:
1230                 p_on_arc3 = geompy.MakeVertexOnCurveByCoord(Arc, 100, -10, 10)
1231             """
1232             # Example: see GEOM_TestAll.py
1233             theX, theY, theZ, Parameters = ParseParameters(theX, theY, theZ)
1234             anObj = self.BasicOp.MakePointOnCurveByCoord(theRefCurve, theX, theY, theZ)
1235             RaiseIfFailed("MakeVertexOnCurveByCoord", self.BasicOp)
1236             anObj.SetParameters(Parameters)
1237             self._autoPublish(anObj, theName, "vertex")
1238             return anObj
1239
1240         ## Create a point, corresponding to the given length on the given curve.
1241         #  @param theRefCurve The referenced curve.
1242         #  @param theLength Length on the referenced curve. It can be negative.
1243         #  @param theStartPoint Point allowing to choose the direction for the calculation
1244         #                       of the length. If None, start from the first point of theRefCurve.
1245         #  @param theName Object name; when specified, this parameter is used
1246         #         for result publication in the study. Otherwise, if automatic
1247         #         publication is switched on, default value is used for result name.
1248         #
1249         #  @return New GEOM.GEOM_Object, containing the created point.
1250         #
1251         #  @ref tui_creation_point "Example"
1252         @ManageTransactions("BasicOp")
1253         def MakeVertexOnCurveByLength(self, theRefCurve, theLength, theStartPoint = None, theName=None):
1254             """
1255             Create a point, corresponding to the given length on the given curve.
1256
1257             Parameters:
1258                 theRefCurve The referenced curve.
1259                 theLength Length on the referenced curve. It can be negative.
1260                 theStartPoint Point allowing to choose the direction for the calculation
1261                               of the length. If None, start from the first point of theRefCurve.
1262                 theName Object name; when specified, this parameter is used
1263                         for result publication in the study. Otherwise, if automatic
1264                         publication is switched on, default value is used for result name.
1265
1266             Returns:
1267                 New GEOM.GEOM_Object, containing the created point.
1268             """
1269             # Example: see GEOM_TestAll.py
1270             theLength, Parameters = ParseParameters(theLength)
1271             anObj = self.BasicOp.MakePointOnCurveByLength(theRefCurve, theLength, theStartPoint)
1272             RaiseIfFailed("MakePointOnCurveByLength", self.BasicOp)
1273             anObj.SetParameters(Parameters)
1274             self._autoPublish(anObj, theName, "vertex")
1275             return anObj
1276
1277         ## Create a point, corresponding to the given parameters on the
1278         #    given surface.
1279         #  @param theRefSurf The referenced surface.
1280         #  @param theUParameter Value of U-parameter on the referenced surface.
1281         #  @param theVParameter Value of V-parameter on the referenced surface.
1282         #  @param theName Object name; when specified, this parameter is used
1283         #         for result publication in the study. Otherwise, if automatic
1284         #         publication is switched on, default value is used for result name.
1285         #
1286         #  @return New GEOM.GEOM_Object, containing the created point.
1287         #
1288         #  @ref swig_MakeVertexOnSurface "Example"
1289         @ManageTransactions("BasicOp")
1290         def MakeVertexOnSurface(self, theRefSurf, theUParameter, theVParameter, theName=None):
1291             """
1292             Create a point, corresponding to the given parameters on the
1293             given surface.
1294
1295             Parameters:
1296                 theRefSurf The referenced surface.
1297                 theUParameter Value of U-parameter on the referenced surface.
1298                 theVParameter Value of V-parameter on the referenced surface.
1299                 theName Object name; when specified, this parameter is used
1300                         for result publication in the study. Otherwise, if automatic
1301                         publication is switched on, default value is used for result name.
1302
1303             Returns:
1304                 New GEOM.GEOM_Object, containing the created point.
1305
1306             Example of usage:
1307                 p_on_face = geompy.MakeVertexOnSurface(Face, 0.1, 0.8)
1308             """
1309             theUParameter, theVParameter, Parameters = ParseParameters(theUParameter, theVParameter)
1310             # Example: see GEOM_TestAll.py
1311             anObj = self.BasicOp.MakePointOnSurface(theRefSurf, theUParameter, theVParameter)
1312             RaiseIfFailed("MakePointOnSurface", self.BasicOp)
1313             anObj.SetParameters(Parameters);
1314             self._autoPublish(anObj, theName, "vertex")
1315             return anObj
1316
1317         ## Create a point by projection give coordinates on the given surface
1318         #  @param theRefSurf The referenced surface.
1319         #  @param theX X-coordinate in 3D space
1320         #  @param theY Y-coordinate in 3D space
1321         #  @param theZ Z-coordinate in 3D space
1322         #  @param theName Object name; when specified, this parameter is used
1323         #         for result publication in the study. Otherwise, if automatic
1324         #         publication is switched on, default value is used for result name.
1325         #
1326         #  @return New GEOM.GEOM_Object, containing the created point.
1327         #
1328         #  @ref swig_MakeVertexOnSurfaceByCoord "Example"
1329         @ManageTransactions("BasicOp")
1330         def MakeVertexOnSurfaceByCoord(self, theRefSurf, theX, theY, theZ, theName=None):
1331             """
1332             Create a point by projection give coordinates on the given surface
1333
1334             Parameters:
1335                 theRefSurf The referenced surface.
1336                 theX X-coordinate in 3D space
1337                 theY Y-coordinate in 3D space
1338                 theZ Z-coordinate in 3D space
1339                 theName Object name; when specified, this parameter is used
1340                         for result publication in the study. Otherwise, if automatic
1341                         publication is switched on, default value is used for result name.
1342
1343             Returns:
1344                 New GEOM.GEOM_Object, containing the created point.
1345
1346             Example of usage:
1347                 p_on_face2 = geompy.MakeVertexOnSurfaceByCoord(Face, 0., 0., 0.)
1348             """
1349             theX, theY, theZ, Parameters = ParseParameters(theX, theY, theZ)
1350             # Example: see GEOM_TestAll.py
1351             anObj = self.BasicOp.MakePointOnSurfaceByCoord(theRefSurf, theX, theY, theZ)
1352             RaiseIfFailed("MakeVertexOnSurfaceByCoord", self.BasicOp)
1353             anObj.SetParameters(Parameters);
1354             self._autoPublish(anObj, theName, "vertex")
1355             return anObj
1356
1357         ## Create a point, which lays on the given face.
1358         #  The point will lay in arbitrary place of the face.
1359         #  The only condition on it is a non-zero distance to the face boundary.
1360         #  Such point can be used to uniquely identify the face inside any
1361         #  shape in case, when the shape does not contain overlapped faces.
1362         #  @param theFace The referenced face.
1363         #  @param theName Object name; when specified, this parameter is used
1364         #         for result publication in the study. Otherwise, if automatic
1365         #         publication is switched on, default value is used for result name.
1366         #
1367         #  @return New GEOM.GEOM_Object, containing the created point.
1368         #
1369         #  @ref swig_MakeVertexInsideFace "Example"
1370         @ManageTransactions("BasicOp")
1371         def MakeVertexInsideFace (self, theFace, theName=None):
1372             """
1373             Create a point, which lays on the given face.
1374             The point will lay in arbitrary place of the face.
1375             The only condition on it is a non-zero distance to the face boundary.
1376             Such point can be used to uniquely identify the face inside any
1377             shape in case, when the shape does not contain overlapped faces.
1378
1379             Parameters:
1380                 theFace The referenced face.
1381                 theName Object name; when specified, this parameter is used
1382                         for result publication in the study. Otherwise, if automatic
1383                         publication is switched on, default value is used for result name.
1384
1385             Returns:
1386                 New GEOM.GEOM_Object, containing the created point.
1387
1388             Example of usage:
1389                 p_on_face = geompy.MakeVertexInsideFace(Face)
1390             """
1391             # Example: see GEOM_TestAll.py
1392             anObj = self.BasicOp.MakePointOnFace(theFace)
1393             RaiseIfFailed("MakeVertexInsideFace", self.BasicOp)
1394             self._autoPublish(anObj, theName, "vertex")
1395             return anObj
1396
1397         ## Create a point on intersection of two lines.
1398         #  @param theRefLine1, theRefLine2 The referenced lines.
1399         #  @param theName Object name; when specified, this parameter is used
1400         #         for result publication in the study. Otherwise, if automatic
1401         #         publication is switched on, default value is used for result name.
1402         #
1403         #  @return New GEOM.GEOM_Object, containing the created point.
1404         #
1405         #  @ref swig_MakeVertexOnLinesIntersection "Example"
1406         @ManageTransactions("BasicOp")
1407         def MakeVertexOnLinesIntersection(self, theRefLine1, theRefLine2, theName=None):
1408             """
1409             Create a point on intersection of two lines.
1410
1411             Parameters:
1412                 theRefLine1, theRefLine2 The referenced lines.
1413                 theName Object name; when specified, this parameter is used
1414                         for result publication in the study. Otherwise, if automatic
1415                         publication is switched on, default value is used for result name.
1416
1417             Returns:
1418                 New GEOM.GEOM_Object, containing the created point.
1419             """
1420             # Example: see GEOM_TestAll.py
1421             anObj = self.BasicOp.MakePointOnLinesIntersection(theRefLine1, theRefLine2)
1422             RaiseIfFailed("MakePointOnLinesIntersection", self.BasicOp)
1423             self._autoPublish(anObj, theName, "vertex")
1424             return anObj
1425
1426         ## Create a tangent, corresponding to the given parameter on the given curve.
1427         #  @param theRefCurve The referenced curve.
1428         #  @param theParameter Value of parameter on the referenced curve.
1429         #  @param theName Object name; when specified, this parameter is used
1430         #         for result publication in the study. Otherwise, if automatic
1431         #         publication is switched on, default value is used for result name.
1432         #
1433         #  @return New GEOM.GEOM_Object, containing the created tangent.
1434         #
1435         #  @ref swig_MakeTangentOnCurve "Example"
1436         @ManageTransactions("BasicOp")
1437         def MakeTangentOnCurve(self, theRefCurve, theParameter, theName=None):
1438             """
1439             Create a tangent, corresponding to the given parameter on the given curve.
1440
1441             Parameters:
1442                 theRefCurve The referenced curve.
1443                 theParameter Value of parameter on the referenced curve.
1444                 theName Object name; when specified, this parameter is used
1445                         for result publication in the study. Otherwise, if automatic
1446                         publication is switched on, default value is used for result name.
1447
1448             Returns:
1449                 New GEOM.GEOM_Object, containing the created tangent.
1450
1451             Example of usage:
1452                 tan_on_arc = geompy.MakeTangentOnCurve(Arc, 0.7)
1453             """
1454             anObj = self.BasicOp.MakeTangentOnCurve(theRefCurve, theParameter)
1455             RaiseIfFailed("MakeTangentOnCurve", self.BasicOp)
1456             self._autoPublish(anObj, theName, "tangent")
1457             return anObj
1458
1459         ## Create a tangent plane, corresponding to the given parameter on the given face.
1460         #  @param theFace The face for which tangent plane should be built.
1461         #  @param theParameterV vertical value of the center point (0.0 - 1.0).
1462         #  @param theParameterU horisontal value of the center point (0.0 - 1.0).
1463         #  @param theTrimSize the size of plane.
1464         #  @param theName Object name; when specified, this parameter is used
1465         #         for result publication in the study. Otherwise, if automatic
1466         #         publication is switched on, default value is used for result name.
1467         #
1468         #  @return New GEOM.GEOM_Object, containing the created tangent.
1469         #
1470         #  @ref swig_MakeTangentPlaneOnFace "Example"
1471         @ManageTransactions("BasicOp")
1472         def MakeTangentPlaneOnFace(self, theFace, theParameterU, theParameterV, theTrimSize, theName=None):
1473             """
1474             Create a tangent plane, corresponding to the given parameter on the given face.
1475
1476             Parameters:
1477                 theFace The face for which tangent plane should be built.
1478                 theParameterV vertical value of the center point (0.0 - 1.0).
1479                 theParameterU horisontal value of the center point (0.0 - 1.0).
1480                 theTrimSize the size of plane.
1481                 theName Object name; when specified, this parameter is used
1482                         for result publication in the study. Otherwise, if automatic
1483                         publication is switched on, default value is used for result name.
1484
1485            Returns:
1486                 New GEOM.GEOM_Object, containing the created tangent.
1487
1488            Example of usage:
1489                 an_on_face = geompy.MakeTangentPlaneOnFace(tan_extrusion, 0.7, 0.5, 150)
1490             """
1491             anObj = self.BasicOp.MakeTangentPlaneOnFace(theFace, theParameterU, theParameterV, theTrimSize)
1492             RaiseIfFailed("MakeTangentPlaneOnFace", self.BasicOp)
1493             self._autoPublish(anObj, theName, "tangent")
1494             return anObj
1495
1496         ## Create a vector with the given components.
1497         #  @param theDX X component of the vector.
1498         #  @param theDY Y component of the vector.
1499         #  @param theDZ Z component of the vector.
1500         #  @param theName Object name; when specified, this parameter is used
1501         #         for result publication in the study. Otherwise, if automatic
1502         #         publication is switched on, default value is used for result name.
1503         #
1504         #  @return New GEOM.GEOM_Object, containing the created vector.
1505         #
1506         #  @ref tui_creation_vector "Example"
1507         @ManageTransactions("BasicOp")
1508         def MakeVectorDXDYDZ(self, theDX, theDY, theDZ, theName=None):
1509             """
1510             Create a vector with the given components.
1511
1512             Parameters:
1513                 theDX X component of the vector.
1514                 theDY Y component of the vector.
1515                 theDZ Z component of the vector.
1516                 theName Object name; when specified, this parameter is used
1517                         for result publication in the study. Otherwise, if automatic
1518                         publication is switched on, default value is used for result name.
1519
1520             Returns:
1521                 New GEOM.GEOM_Object, containing the created vector.
1522             """
1523             # Example: see GEOM_TestAll.py
1524             theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
1525             anObj = self.BasicOp.MakeVectorDXDYDZ(theDX, theDY, theDZ)
1526             RaiseIfFailed("MakeVectorDXDYDZ", self.BasicOp)
1527             anObj.SetParameters(Parameters)
1528             self._autoPublish(anObj, theName, "vector")
1529             return anObj
1530
1531         ## Create a vector between two points.
1532         #  @param thePnt1 Start point for the vector.
1533         #  @param thePnt2 End point for the vector.
1534         #  @param theName Object name; when specified, this parameter is used
1535         #         for result publication in the study. Otherwise, if automatic
1536         #         publication is switched on, default value is used for result name.
1537         #
1538         #  @return New GEOM.GEOM_Object, containing the created vector.
1539         #
1540         #  @ref tui_creation_vector "Example"
1541         @ManageTransactions("BasicOp")
1542         def MakeVector(self, thePnt1, thePnt2, theName=None):
1543             """
1544             Create a vector between two points.
1545
1546             Parameters:
1547                 thePnt1 Start point for the vector.
1548                 thePnt2 End point for the vector.
1549                 theName Object name; when specified, this parameter is used
1550                         for result publication in the study. Otherwise, if automatic
1551                         publication is switched on, default value is used for result name.
1552
1553             Returns:
1554                 New GEOM.GEOM_Object, containing the created vector.
1555             """
1556             # Example: see GEOM_TestAll.py
1557             anObj = self.BasicOp.MakeVectorTwoPnt(thePnt1, thePnt2)
1558             RaiseIfFailed("MakeVectorTwoPnt", self.BasicOp)
1559             self._autoPublish(anObj, theName, "vector")
1560             return anObj
1561
1562         ## Create a line, passing through the given point
1563         #  and parallel to the given direction
1564         #  @param thePnt Point. The resulting line will pass through it.
1565         #  @param theDir Direction. The resulting line will be parallel to it.
1566         #  @param theName Object name; when specified, this parameter is used
1567         #         for result publication in the study. Otherwise, if automatic
1568         #         publication is switched on, default value is used for result name.
1569         #
1570         #  @return New GEOM.GEOM_Object, containing the created line.
1571         #
1572         #  @ref tui_creation_line "Example"
1573         @ManageTransactions("BasicOp")
1574         def MakeLine(self, thePnt, theDir, theName=None):
1575             """
1576             Create a line, passing through the given point
1577             and parallel to the given direction
1578
1579             Parameters:
1580                 thePnt Point. The resulting line will pass through it.
1581                 theDir Direction. The resulting line will be parallel to it.
1582                 theName Object name; when specified, this parameter is used
1583                         for result publication in the study. Otherwise, if automatic
1584                         publication is switched on, default value is used for result name.
1585
1586             Returns:
1587                 New GEOM.GEOM_Object, containing the created line.
1588             """
1589             # Example: see GEOM_TestAll.py
1590             anObj = self.BasicOp.MakeLine(thePnt, theDir)
1591             RaiseIfFailed("MakeLine", self.BasicOp)
1592             self._autoPublish(anObj, theName, "line")
1593             return anObj
1594
1595         ## Create a line, passing through the given points
1596         #  @param thePnt1 First of two points, defining the line.
1597         #  @param thePnt2 Second of two points, defining the line.
1598         #  @param theName Object name; when specified, this parameter is used
1599         #         for result publication in the study. Otherwise, if automatic
1600         #         publication is switched on, default value is used for result name.
1601         #
1602         #  @return New GEOM.GEOM_Object, containing the created line.
1603         #
1604         #  @ref tui_creation_line "Example"
1605         @ManageTransactions("BasicOp")
1606         def MakeLineTwoPnt(self, thePnt1, thePnt2, theName=None):
1607             """
1608             Create a line, passing through the given points
1609
1610             Parameters:
1611                 thePnt1 First of two points, defining the line.
1612                 thePnt2 Second of two points, defining the line.
1613                 theName Object name; when specified, this parameter is used
1614                         for result publication in the study. Otherwise, if automatic
1615                         publication is switched on, default value is used for result name.
1616
1617             Returns:
1618                 New GEOM.GEOM_Object, containing the created line.
1619             """
1620             # Example: see GEOM_TestAll.py
1621             anObj = self.BasicOp.MakeLineTwoPnt(thePnt1, thePnt2)
1622             RaiseIfFailed("MakeLineTwoPnt", self.BasicOp)
1623             self._autoPublish(anObj, theName, "line")
1624             return anObj
1625
1626         ## Create a line on two faces intersection.
1627         #  @param theFace1 First of two faces, defining the line.
1628         #  @param theFace2 Second of two faces, defining the line.
1629         #  @param theName Object name; when specified, this parameter is used
1630         #         for result publication in the study. Otherwise, if automatic
1631         #         publication is switched on, default value is used for result name.
1632         #
1633         #  @return New GEOM.GEOM_Object, containing the created line.
1634         #
1635         #  @ref swig_MakeLineTwoFaces "Example"
1636         @ManageTransactions("BasicOp")
1637         def MakeLineTwoFaces(self, theFace1, theFace2, theName=None):
1638             """
1639             Create a line on two faces intersection.
1640
1641             Parameters:
1642                 theFace1 First of two faces, defining the line.
1643                 theFace2 Second of two faces, defining the line.
1644                 theName Object name; when specified, this parameter is used
1645                         for result publication in the study. Otherwise, if automatic
1646                         publication is switched on, default value is used for result name.
1647
1648             Returns:
1649                 New GEOM.GEOM_Object, containing the created line.
1650             """
1651             # Example: see GEOM_TestAll.py
1652             anObj = self.BasicOp.MakeLineTwoFaces(theFace1, theFace2)
1653             RaiseIfFailed("MakeLineTwoFaces", self.BasicOp)
1654             self._autoPublish(anObj, theName, "line")
1655             return anObj
1656
1657         ## Create a plane, passing through the given point
1658         #  and normal to the given vector.
1659         #  @param thePnt Point, the plane has to pass through.
1660         #  @param theVec Vector, defining the plane normal direction.
1661         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1662         #  @param theName Object name; when specified, this parameter is used
1663         #         for result publication in the study. Otherwise, if automatic
1664         #         publication is switched on, default value is used for result name.
1665         #
1666         #  @return New GEOM.GEOM_Object, containing the created plane.
1667         #
1668         #  @ref tui_creation_plane "Example"
1669         @ManageTransactions("BasicOp")
1670         def MakePlane(self, thePnt, theVec, theTrimSize, theName=None):
1671             """
1672             Create a plane, passing through the given point
1673             and normal to the given vector.
1674
1675             Parameters:
1676                 thePnt Point, the plane has to pass through.
1677                 theVec Vector, defining the plane normal direction.
1678                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1679                 theName Object name; when specified, this parameter is used
1680                         for result publication in the study. Otherwise, if automatic
1681                         publication is switched on, default value is used for result name.
1682
1683             Returns:
1684                 New GEOM.GEOM_Object, containing the created plane.
1685             """
1686             # Example: see GEOM_TestAll.py
1687             theTrimSize, Parameters = ParseParameters(theTrimSize);
1688             anObj = self.BasicOp.MakePlanePntVec(thePnt, theVec, theTrimSize)
1689             RaiseIfFailed("MakePlanePntVec", self.BasicOp)
1690             anObj.SetParameters(Parameters)
1691             self._autoPublish(anObj, theName, "plane")
1692             return anObj
1693
1694         ## Create a plane, passing through the three given points
1695         #  @param thePnt1 First of three points, defining the plane.
1696         #  @param thePnt2 Second of three points, defining the plane.
1697         #  @param thePnt3 Fird of three points, defining the plane.
1698         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1699         #  @param theName Object name; when specified, this parameter is used
1700         #         for result publication in the study. Otherwise, if automatic
1701         #         publication is switched on, default value is used for result name.
1702         #
1703         #  @return New GEOM.GEOM_Object, containing the created plane.
1704         #
1705         #  @ref tui_creation_plane "Example"
1706         @ManageTransactions("BasicOp")
1707         def MakePlaneThreePnt(self, thePnt1, thePnt2, thePnt3, theTrimSize, theName=None):
1708             """
1709             Create a plane, passing through the three given points
1710
1711             Parameters:
1712                 thePnt1 First of three points, defining the plane.
1713                 thePnt2 Second of three points, defining the plane.
1714                 thePnt3 Fird of three points, defining the plane.
1715                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1716                 theName Object name; when specified, this parameter is used
1717                         for result publication in the study. Otherwise, if automatic
1718                         publication is switched on, default value is used for result name.
1719
1720             Returns:
1721                 New GEOM.GEOM_Object, containing the created plane.
1722             """
1723             # Example: see GEOM_TestAll.py
1724             theTrimSize, Parameters = ParseParameters(theTrimSize);
1725             anObj = self.BasicOp.MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize)
1726             RaiseIfFailed("MakePlaneThreePnt", self.BasicOp)
1727             anObj.SetParameters(Parameters)
1728             self._autoPublish(anObj, theName, "plane")
1729             return anObj
1730
1731         ## Create a plane, similar to the existing one, but with another size of representing face.
1732         #  @param theFace Referenced plane or LCS(Marker).
1733         #  @param theTrimSize New half size of a side of quadrangle face, representing the plane.
1734         #  @param theName Object name; when specified, this parameter is used
1735         #         for result publication in the study. Otherwise, if automatic
1736         #         publication is switched on, default value is used for result name.
1737         #
1738         #  @return New GEOM.GEOM_Object, containing the created plane.
1739         #
1740         #  @ref tui_creation_plane "Example"
1741         @ManageTransactions("BasicOp")
1742         def MakePlaneFace(self, theFace, theTrimSize, theName=None):
1743             """
1744             Create a plane, similar to the existing one, but with another size of representing face.
1745
1746             Parameters:
1747                 theFace Referenced plane or LCS(Marker).
1748                 theTrimSize New half size of a side of quadrangle face, representing the plane.
1749                 theName Object name; when specified, this parameter is used
1750                         for result publication in the study. Otherwise, if automatic
1751                         publication is switched on, default value is used for result name.
1752
1753             Returns:
1754                 New GEOM.GEOM_Object, containing the created plane.
1755             """
1756             # Example: see GEOM_TestAll.py
1757             theTrimSize, Parameters = ParseParameters(theTrimSize);
1758             anObj = self.BasicOp.MakePlaneFace(theFace, theTrimSize)
1759             RaiseIfFailed("MakePlaneFace", self.BasicOp)
1760             anObj.SetParameters(Parameters)
1761             self._autoPublish(anObj, theName, "plane")
1762             return anObj
1763
1764         ## Create a plane, passing through the 2 vectors
1765         #  with center in a start point of the first vector.
1766         #  @param theVec1 Vector, defining center point and plane direction.
1767         #  @param theVec2 Vector, defining the plane normal direction.
1768         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1769         #  @param theName Object name; when specified, this parameter is used
1770         #         for result publication in the study. Otherwise, if automatic
1771         #         publication is switched on, default value is used for result name.
1772         #
1773         #  @return New GEOM.GEOM_Object, containing the created plane.
1774         #
1775         #  @ref tui_creation_plane "Example"
1776         @ManageTransactions("BasicOp")
1777         def MakePlane2Vec(self, theVec1, theVec2, theTrimSize, theName=None):
1778             """
1779             Create a plane, passing through the 2 vectors
1780             with center in a start point of the first vector.
1781
1782             Parameters:
1783                 theVec1 Vector, defining center point and plane direction.
1784                 theVec2 Vector, defining the plane normal direction.
1785                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1786                 theName Object name; when specified, this parameter is used
1787                         for result publication in the study. Otherwise, if automatic
1788                         publication is switched on, default value is used for result name.
1789
1790             Returns:
1791                 New GEOM.GEOM_Object, containing the created plane.
1792             """
1793             # Example: see GEOM_TestAll.py
1794             theTrimSize, Parameters = ParseParameters(theTrimSize);
1795             anObj = self.BasicOp.MakePlane2Vec(theVec1, theVec2, theTrimSize)
1796             RaiseIfFailed("MakePlane2Vec", self.BasicOp)
1797             anObj.SetParameters(Parameters)
1798             self._autoPublish(anObj, theName, "plane")
1799             return anObj
1800
1801         ## Create a plane, based on a Local coordinate system.
1802         #  @param theLCS  coordinate system, defining plane.
1803         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1804         #  @param theOrientation OXY, OYZ or OZX orientation - (1, 2 or 3)
1805         #  @param theName Object name; when specified, this parameter is used
1806         #         for result publication in the study. Otherwise, if automatic
1807         #         publication is switched on, default value is used for result name.
1808         #
1809         #  @return New GEOM.GEOM_Object, containing the created plane.
1810         #
1811         #  @ref tui_creation_plane "Example"
1812         @ManageTransactions("BasicOp")
1813         def MakePlaneLCS(self, theLCS, theTrimSize, theOrientation, theName=None):
1814             """
1815             Create a plane, based on a Local coordinate system.
1816
1817            Parameters:
1818                 theLCS  coordinate system, defining plane.
1819                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1820                 theOrientation OXY, OYZ or OZX orientation - (1, 2 or 3)
1821                 theName Object name; when specified, this parameter is used
1822                         for result publication in the study. Otherwise, if automatic
1823                         publication is switched on, default value is used for result name.
1824
1825             Returns:
1826                 New GEOM.GEOM_Object, containing the created plane.
1827             """
1828             # Example: see GEOM_TestAll.py
1829             theTrimSize, Parameters = ParseParameters(theTrimSize);
1830             anObj = self.BasicOp.MakePlaneLCS(theLCS, theTrimSize, theOrientation)
1831             RaiseIfFailed("MakePlaneLCS", self.BasicOp)
1832             anObj.SetParameters(Parameters)
1833             self._autoPublish(anObj, theName, "plane")
1834             return anObj
1835
1836         ## Create a local coordinate system.
1837         #  @param OX,OY,OZ Three coordinates of coordinate system origin.
1838         #  @param XDX,XDY,XDZ Three components of OX direction
1839         #  @param YDX,YDY,YDZ Three components of OY direction
1840         #  @param theName Object name; when specified, this parameter is used
1841         #         for result publication in the study. Otherwise, if automatic
1842         #         publication is switched on, default value is used for result name.
1843         #
1844         #  @return New GEOM.GEOM_Object, containing the created coordinate system.
1845         #
1846         #  @ref swig_MakeMarker "Example"
1847         @ManageTransactions("BasicOp")
1848         def MakeMarker(self, OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ, theName=None):
1849             """
1850             Create a local coordinate system.
1851
1852             Parameters:
1853                 OX,OY,OZ Three coordinates of coordinate system origin.
1854                 XDX,XDY,XDZ Three components of OX direction
1855                 YDX,YDY,YDZ Three components of OY direction
1856                 theName Object name; when specified, this parameter is used
1857                         for result publication in the study. Otherwise, if automatic
1858                         publication is switched on, default value is used for result name.
1859
1860             Returns:
1861                 New GEOM.GEOM_Object, containing the created coordinate system.
1862             """
1863             # Example: see GEOM_TestAll.py
1864             OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ, Parameters = ParseParameters(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ);
1865             anObj = self.BasicOp.MakeMarker(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ)
1866             RaiseIfFailed("MakeMarker", self.BasicOp)
1867             anObj.SetParameters(Parameters)
1868             self._autoPublish(anObj, theName, "lcs")
1869             return anObj
1870
1871         ## Create a local coordinate system from shape.
1872         #  @param theShape The initial shape to detect the coordinate system.
1873         #  @param theName Object name; when specified, this parameter is used
1874         #         for result publication in the study. Otherwise, if automatic
1875         #         publication is switched on, default value is used for result name.
1876         #
1877         #  @return New GEOM.GEOM_Object, containing the created coordinate system.
1878         #
1879         #  @ref tui_creation_lcs "Example"
1880         @ManageTransactions("BasicOp")
1881         def MakeMarkerFromShape(self, theShape, theName=None):
1882             """
1883             Create a local coordinate system from shape.
1884
1885             Parameters:
1886                 theShape The initial shape to detect the coordinate system.
1887                 theName Object name; when specified, this parameter is used
1888                         for result publication in the study. Otherwise, if automatic
1889                         publication is switched on, default value is used for result name.
1890
1891             Returns:
1892                 New GEOM.GEOM_Object, containing the created coordinate system.
1893             """
1894             anObj = self.BasicOp.MakeMarkerFromShape(theShape)
1895             RaiseIfFailed("MakeMarkerFromShape", self.BasicOp)
1896             self._autoPublish(anObj, theName, "lcs")
1897             return anObj
1898
1899         ## Create a local coordinate system from point and two vectors.
1900         #  @param theOrigin Point of coordinate system origin.
1901         #  @param theXVec Vector of X direction
1902         #  @param theYVec Vector of Y direction
1903         #  @param theName Object name; when specified, this parameter is used
1904         #         for result publication in the study. Otherwise, if automatic
1905         #         publication is switched on, default value is used for result name.
1906         #
1907         #  @return New GEOM.GEOM_Object, containing the created coordinate system.
1908         #
1909         #  @ref tui_creation_lcs "Example"
1910         @ManageTransactions("BasicOp")
1911         def MakeMarkerPntTwoVec(self, theOrigin, theXVec, theYVec, theName=None):
1912             """
1913             Create a local coordinate system from point and two vectors.
1914
1915             Parameters:
1916                 theOrigin Point of coordinate system origin.
1917                 theXVec Vector of X direction
1918                 theYVec Vector of Y direction
1919                 theName Object name; when specified, this parameter is used
1920                         for result publication in the study. Otherwise, if automatic
1921                         publication is switched on, default value is used for result name.
1922
1923             Returns:
1924                 New GEOM.GEOM_Object, containing the created coordinate system.
1925
1926             """
1927             anObj = self.BasicOp.MakeMarkerPntTwoVec(theOrigin, theXVec, theYVec)
1928             RaiseIfFailed("MakeMarkerPntTwoVec", self.BasicOp)
1929             self._autoPublish(anObj, theName, "lcs")
1930             return anObj
1931
1932         # end of l3_basic_go
1933         ## @}
1934
1935         ## @addtogroup l4_curves
1936         ## @{
1937
1938         ##  Create an arc of circle, passing through three given points.
1939         #  @param thePnt1 Start point of the arc.
1940         #  @param thePnt2 Middle point of the arc.
1941         #  @param thePnt3 End point of the arc.
1942         #  @param theName Object name; when specified, this parameter is used
1943         #         for result publication in the study. Otherwise, if automatic
1944         #         publication is switched on, default value is used for result name.
1945         #
1946         #  @return New GEOM.GEOM_Object, containing the created arc.
1947         #
1948         #  @ref swig_MakeArc "Example"
1949         @ManageTransactions("CurvesOp")
1950         def MakeArc(self, thePnt1, thePnt2, thePnt3, theName=None):
1951             """
1952             Create an arc of circle, passing through three given points.
1953
1954             Parameters:
1955                 thePnt1 Start point of the arc.
1956                 thePnt2 Middle point of the arc.
1957                 thePnt3 End point of the arc.
1958                 theName Object name; when specified, this parameter is used
1959                         for result publication in the study. Otherwise, if automatic
1960                         publication is switched on, default value is used for result name.
1961
1962             Returns:
1963                 New GEOM.GEOM_Object, containing the created arc.
1964             """
1965             # Example: see GEOM_TestAll.py
1966             anObj = self.CurvesOp.MakeArc(thePnt1, thePnt2, thePnt3)
1967             RaiseIfFailed("MakeArc", self.CurvesOp)
1968             self._autoPublish(anObj, theName, "arc")
1969             return anObj
1970
1971         ##  Create an arc of circle from a center and 2 points.
1972         #  @param thePnt1 Center of the arc
1973         #  @param thePnt2 Start point of the arc. (Gives also the radius of the arc)
1974         #  @param thePnt3 End point of the arc (Gives also a direction)
1975         #  @param theSense Orientation of the arc
1976         #  @param theName Object name; when specified, this parameter is used
1977         #         for result publication in the study. Otherwise, if automatic
1978         #         publication is switched on, default value is used for result name.
1979         #
1980         #  @return New GEOM.GEOM_Object, containing the created arc.
1981         #
1982         #  @ref swig_MakeArc "Example"
1983         @ManageTransactions("CurvesOp")
1984         def MakeArcCenter(self, thePnt1, thePnt2, thePnt3, theSense=False, theName=None):
1985             """
1986             Create an arc of circle from a center and 2 points.
1987
1988             Parameters:
1989                 thePnt1 Center of the arc
1990                 thePnt2 Start point of the arc. (Gives also the radius of the arc)
1991                 thePnt3 End point of the arc (Gives also a direction)
1992                 theSense Orientation of the arc
1993                 theName Object name; when specified, this parameter is used
1994                         for result publication in the study. Otherwise, if automatic
1995                         publication is switched on, default value is used for result name.
1996
1997             Returns:
1998                 New GEOM.GEOM_Object, containing the created arc.
1999             """
2000             # Example: see GEOM_TestAll.py
2001             anObj = self.CurvesOp.MakeArcCenter(thePnt1, thePnt2, thePnt3, theSense)
2002             RaiseIfFailed("MakeArcCenter", self.CurvesOp)
2003             self._autoPublish(anObj, theName, "arc")
2004             return anObj
2005
2006         ##  Create an arc of ellipse, of center and two points.
2007         #  @param theCenter Center of the arc.
2008         #  @param thePnt1 defines major radius of the arc by distance from Pnt1 to Pnt2.
2009         #  @param thePnt2 defines plane of ellipse and minor radius as distance from Pnt3 to line from Pnt1 to Pnt2.
2010         #  @param theName Object name; when specified, this parameter is used
2011         #         for result publication in the study. Otherwise, if automatic
2012         #         publication is switched on, default value is used for result name.
2013         #
2014         #  @return New GEOM.GEOM_Object, containing the created arc.
2015         #
2016         #  @ref swig_MakeArc "Example"
2017         @ManageTransactions("CurvesOp")
2018         def MakeArcOfEllipse(self, theCenter, thePnt1, thePnt2, theName=None):
2019             """
2020             Create an arc of ellipse, of center and two points.
2021
2022             Parameters:
2023                 theCenter Center of the arc.
2024                 thePnt1 defines major radius of the arc by distance from Pnt1 to Pnt2.
2025                 thePnt2 defines plane of ellipse and minor radius as distance from Pnt3 to line from Pnt1 to Pnt2.
2026                 theName Object name; when specified, this parameter is used
2027                         for result publication in the study. Otherwise, if automatic
2028                         publication is switched on, default value is used for result name.
2029
2030             Returns:
2031                 New GEOM.GEOM_Object, containing the created arc.
2032             """
2033             # Example: see GEOM_TestAll.py
2034             anObj = self.CurvesOp.MakeArcOfEllipse(theCenter, thePnt1, thePnt2)
2035             RaiseIfFailed("MakeArcOfEllipse", self.CurvesOp)
2036             self._autoPublish(anObj, theName, "arc")
2037             return anObj
2038
2039         ## Create a circle with given center, normal vector and radius.
2040         #  @param thePnt Circle center.
2041         #  @param theVec Vector, normal to the plane of the circle.
2042         #  @param theR Circle radius.
2043         #  @param theName Object name; when specified, this parameter is used
2044         #         for result publication in the study. Otherwise, if automatic
2045         #         publication is switched on, default value is used for result name.
2046         #
2047         #  @return New GEOM.GEOM_Object, containing the created circle.
2048         #
2049         #  @ref tui_creation_circle "Example"
2050         @ManageTransactions("CurvesOp")
2051         def MakeCircle(self, thePnt, theVec, theR, theName=None):
2052             """
2053             Create a circle with given center, normal vector and radius.
2054
2055             Parameters:
2056                 thePnt Circle center.
2057                 theVec Vector, normal to the plane of the circle.
2058                 theR Circle radius.
2059                 theName Object name; when specified, this parameter is used
2060                         for result publication in the study. Otherwise, if automatic
2061                         publication is switched on, default value is used for result name.
2062
2063             Returns:
2064                 New GEOM.GEOM_Object, containing the created circle.
2065             """
2066             # Example: see GEOM_TestAll.py
2067             theR, Parameters = ParseParameters(theR)
2068             anObj = self.CurvesOp.MakeCirclePntVecR(thePnt, theVec, theR)
2069             RaiseIfFailed("MakeCirclePntVecR", self.CurvesOp)
2070             anObj.SetParameters(Parameters)
2071             self._autoPublish(anObj, theName, "circle")
2072             return anObj
2073
2074         ## Create a circle with given radius.
2075         #  Center of the circle will be in the origin of global
2076         #  coordinate system and normal vector will be codirected with Z axis
2077         #  @param theR Circle radius.
2078         #  @param theName Object name; when specified, this parameter is used
2079         #         for result publication in the study. Otherwise, if automatic
2080         #         publication is switched on, default value is used for result name.
2081         #
2082         #  @return New GEOM.GEOM_Object, containing the created circle.
2083         @ManageTransactions("CurvesOp")
2084         def MakeCircleR(self, theR, theName=None):
2085             """
2086             Create a circle with given radius.
2087             Center of the circle will be in the origin of global
2088             coordinate system and normal vector will be codirected with Z axis
2089
2090             Parameters:
2091                 theR Circle radius.
2092                 theName Object name; when specified, this parameter is used
2093                         for result publication in the study. Otherwise, if automatic
2094                         publication is switched on, default value is used for result name.
2095
2096             Returns:
2097                 New GEOM.GEOM_Object, containing the created circle.
2098             """
2099             anObj = self.CurvesOp.MakeCirclePntVecR(None, None, theR)
2100             RaiseIfFailed("MakeCirclePntVecR", self.CurvesOp)
2101             self._autoPublish(anObj, theName, "circle")
2102             return anObj
2103
2104         ## Create a circle, passing through three given points
2105         #  @param thePnt1,thePnt2,thePnt3 Points, defining the circle.
2106         #  @param theName Object name; when specified, this parameter is used
2107         #         for result publication in the study. Otherwise, if automatic
2108         #         publication is switched on, default value is used for result name.
2109         #
2110         #  @return New GEOM.GEOM_Object, containing the created circle.
2111         #
2112         #  @ref tui_creation_circle "Example"
2113         @ManageTransactions("CurvesOp")
2114         def MakeCircleThreePnt(self, thePnt1, thePnt2, thePnt3, theName=None):
2115             """
2116             Create a circle, passing through three given points
2117
2118             Parameters:
2119                 thePnt1,thePnt2,thePnt3 Points, defining the circle.
2120                 theName Object name; when specified, this parameter is used
2121                         for result publication in the study. Otherwise, if automatic
2122                         publication is switched on, default value is used for result name.
2123
2124             Returns:
2125                 New GEOM.GEOM_Object, containing the created circle.
2126             """
2127             # Example: see GEOM_TestAll.py
2128             anObj = self.CurvesOp.MakeCircleThreePnt(thePnt1, thePnt2, thePnt3)
2129             RaiseIfFailed("MakeCircleThreePnt", self.CurvesOp)
2130             self._autoPublish(anObj, theName, "circle")
2131             return anObj
2132
2133         ## Create a circle, with given point1 as center,
2134         #  passing through the point2 as radius and laying in the plane,
2135         #  defined by all three given points.
2136         #  @param thePnt1,thePnt2,thePnt3 Points, defining the circle.
2137         #  @param theName Object name; when specified, this parameter is used
2138         #         for result publication in the study. Otherwise, if automatic
2139         #         publication is switched on, default value is used for result name.
2140         #
2141         #  @return New GEOM.GEOM_Object, containing the created circle.
2142         #
2143         #  @ref swig_MakeCircle "Example"
2144         @ManageTransactions("CurvesOp")
2145         def MakeCircleCenter2Pnt(self, thePnt1, thePnt2, thePnt3, theName=None):
2146             """
2147             Create a circle, with given point1 as center,
2148             passing through the point2 as radius and laying in the plane,
2149             defined by all three given points.
2150
2151             Parameters:
2152                 thePnt1,thePnt2,thePnt3 Points, defining the circle.
2153                 theName Object name; when specified, this parameter is used
2154                         for result publication in the study. Otherwise, if automatic
2155                         publication is switched on, default value is used for result name.
2156
2157             Returns:
2158                 New GEOM.GEOM_Object, containing the created circle.
2159             """
2160             # Example: see GEOM_example6.py
2161             anObj = self.CurvesOp.MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3)
2162             RaiseIfFailed("MakeCircleCenter2Pnt", self.CurvesOp)
2163             self._autoPublish(anObj, theName, "circle")
2164             return anObj
2165
2166         ## Create an ellipse with given center, normal vector and radiuses.
2167         #  @param thePnt Ellipse center.
2168         #  @param theVec Vector, normal to the plane of the ellipse.
2169         #  @param theRMajor Major ellipse radius.
2170         #  @param theRMinor Minor ellipse radius.
2171         #  @param theVecMaj Vector, direction of the ellipse's main axis.
2172         #  @param theName Object name; when specified, this parameter is used
2173         #         for result publication in the study. Otherwise, if automatic
2174         #         publication is switched on, default value is used for result name.
2175         #
2176         #  @return New GEOM.GEOM_Object, containing the created ellipse.
2177         #
2178         #  @ref tui_creation_ellipse "Example"
2179         @ManageTransactions("CurvesOp")
2180         def MakeEllipse(self, thePnt, theVec, theRMajor, theRMinor, theVecMaj=None, theName=None):
2181             """
2182             Create an ellipse with given center, normal vector and radiuses.
2183
2184             Parameters:
2185                 thePnt Ellipse center.
2186                 theVec Vector, normal to the plane of the ellipse.
2187                 theRMajor Major ellipse radius.
2188                 theRMinor Minor ellipse radius.
2189                 theVecMaj Vector, direction of the ellipse's main axis.
2190                 theName Object name; when specified, this parameter is used
2191                         for result publication in the study. Otherwise, if automatic
2192                         publication is switched on, default value is used for result name.
2193
2194             Returns:
2195                 New GEOM.GEOM_Object, containing the created ellipse.
2196             """
2197             # Example: see GEOM_TestAll.py
2198             theRMajor, theRMinor, Parameters = ParseParameters(theRMajor, theRMinor)
2199             if theVecMaj is not None:
2200                 anObj = self.CurvesOp.MakeEllipseVec(thePnt, theVec, theRMajor, theRMinor, theVecMaj)
2201             else:
2202                 anObj = self.CurvesOp.MakeEllipse(thePnt, theVec, theRMajor, theRMinor)
2203                 pass
2204             RaiseIfFailed("MakeEllipse", self.CurvesOp)
2205             anObj.SetParameters(Parameters)
2206             self._autoPublish(anObj, theName, "ellipse")
2207             return anObj
2208
2209         ## Create an ellipse with given radiuses.
2210         #  Center of the ellipse will be in the origin of global
2211         #  coordinate system and normal vector will be codirected with Z axis
2212         #  @param theRMajor Major ellipse radius.
2213         #  @param theRMinor Minor ellipse radius.
2214         #  @param theName Object name; when specified, this parameter is used
2215         #         for result publication in the study. Otherwise, if automatic
2216         #         publication is switched on, default value is used for result name.
2217         #
2218         #  @return New GEOM.GEOM_Object, containing the created ellipse.
2219         @ManageTransactions("CurvesOp")
2220         def MakeEllipseRR(self, theRMajor, theRMinor, theName=None):
2221             """
2222             Create an ellipse with given radiuses.
2223             Center of the ellipse will be in the origin of global
2224             coordinate system and normal vector will be codirected with Z axis
2225
2226             Parameters:
2227                 theRMajor Major ellipse radius.
2228                 theRMinor Minor ellipse radius.
2229                 theName Object name; when specified, this parameter is used
2230                         for result publication in the study. Otherwise, if automatic
2231                         publication is switched on, default value is used for result name.
2232
2233             Returns:
2234             New GEOM.GEOM_Object, containing the created ellipse.
2235             """
2236             anObj = self.CurvesOp.MakeEllipse(None, None, theRMajor, theRMinor)
2237             RaiseIfFailed("MakeEllipse", self.CurvesOp)
2238             self._autoPublish(anObj, theName, "ellipse")
2239             return anObj
2240
2241         ## Create a polyline on the set of points.
2242         #  @param thePoints Sequence of points for the polyline.
2243         #  @param theIsClosed If True, build a closed wire.
2244         #  @param theName Object name; when specified, this parameter is used
2245         #         for result publication in the study. Otherwise, if automatic
2246         #         publication is switched on, default value is used for result name.
2247         #
2248         #  @return New GEOM.GEOM_Object, containing the created polyline.
2249         #
2250         #  @ref tui_creation_curve "Example"
2251         @ManageTransactions("CurvesOp")
2252         def MakePolyline(self, thePoints, theIsClosed=False, theName=None):
2253             """
2254             Create a polyline on the set of points.
2255
2256             Parameters:
2257                 thePoints Sequence of points for the polyline.
2258                 theIsClosed If True, build a closed wire.
2259                 theName Object name; when specified, this parameter is used
2260                         for result publication in the study. Otherwise, if automatic
2261                         publication is switched on, default value is used for result name.
2262
2263             Returns:
2264                 New GEOM.GEOM_Object, containing the created polyline.
2265             """
2266             # Example: see GEOM_TestAll.py
2267             anObj = self.CurvesOp.MakePolyline(thePoints, theIsClosed)
2268             RaiseIfFailed("MakePolyline", self.CurvesOp)
2269             self._autoPublish(anObj, theName, "polyline")
2270             return anObj
2271
2272         ## Create bezier curve on the set of points.
2273         #  @param thePoints Sequence of points for the bezier curve.
2274         #  @param theIsClosed If True, build a closed curve.
2275         #  @param theName Object name; when specified, this parameter is used
2276         #         for result publication in the study. Otherwise, if automatic
2277         #         publication is switched on, default value is used for result name.
2278         #
2279         #  @return New GEOM.GEOM_Object, containing the created bezier curve.
2280         #
2281         #  @ref tui_creation_curve "Example"
2282         @ManageTransactions("CurvesOp")
2283         def MakeBezier(self, thePoints, theIsClosed=False, theName=None):
2284             """
2285             Create bezier curve on the set of points.
2286
2287             Parameters:
2288                 thePoints Sequence of points for the bezier curve.
2289                 theIsClosed If True, build a closed curve.
2290                 theName Object name; when specified, this parameter is used
2291                         for result publication in the study. Otherwise, if automatic
2292                         publication is switched on, default value is used for result name.
2293
2294             Returns:
2295                 New GEOM.GEOM_Object, containing the created bezier curve.
2296             """
2297             # Example: see GEOM_TestAll.py
2298             anObj = self.CurvesOp.MakeSplineBezier(thePoints, theIsClosed)
2299             RaiseIfFailed("MakeSplineBezier", self.CurvesOp)
2300             self._autoPublish(anObj, theName, "bezier")
2301             return anObj
2302
2303         ## Create B-Spline curve on the set of points.
2304         #  @param thePoints Sequence of points for the B-Spline curve.
2305         #  @param theIsClosed If True, build a closed curve.
2306         #  @param theDoReordering If TRUE, the algo does not follow the order of
2307         #                         \a thePoints but searches for the closest vertex.
2308         #  @param theName Object name; when specified, this parameter is used
2309         #         for result publication in the study. Otherwise, if automatic
2310         #         publication is switched on, default value is used for result name.
2311         #
2312         #  @return New GEOM.GEOM_Object, containing the created B-Spline curve.
2313         #
2314         #  @ref tui_creation_curve "Example"
2315         @ManageTransactions("CurvesOp")
2316         def MakeInterpol(self, thePoints, theIsClosed=False, theDoReordering=False, theName=None):
2317             """
2318             Create B-Spline curve on the set of points.
2319
2320             Parameters:
2321                 thePoints Sequence of points for the B-Spline curve.
2322                 theIsClosed If True, build a closed curve.
2323                 theDoReordering If True, the algo does not follow the order of
2324                                 thePoints but searches for the closest vertex.
2325                 theName Object name; when specified, this parameter is used
2326                         for result publication in the study. Otherwise, if automatic
2327                         publication is switched on, default value is used for result name.
2328
2329             Returns:
2330                 New GEOM.GEOM_Object, containing the created B-Spline curve.
2331             """
2332             # Example: see GEOM_TestAll.py
2333             anObj = self.CurvesOp.MakeSplineInterpolation(thePoints, theIsClosed, theDoReordering)
2334             RaiseIfFailed("MakeInterpol", self.CurvesOp)
2335             self._autoPublish(anObj, theName, "bspline")
2336             return anObj
2337
2338         ## Create B-Spline curve on the set of points.
2339         #  @param thePoints Sequence of points for the B-Spline curve.
2340         #  @param theFirstVec Vector object, defining the curve direction at its first point.
2341         #  @param theLastVec Vector object, defining the curve direction at its last point.
2342         #  @param theName Object name; when specified, this parameter is used
2343         #         for result publication in the study. Otherwise, if automatic
2344         #         publication is switched on, default value is used for result name.
2345         #
2346         #  @return New GEOM.GEOM_Object, containing the created B-Spline curve.
2347         #
2348         #  @ref tui_creation_curve "Example"
2349         @ManageTransactions("CurvesOp")
2350         def MakeInterpolWithTangents(self, thePoints, theFirstVec, theLastVec, theName=None):
2351             """
2352             Create B-Spline curve on the set of points.
2353
2354             Parameters:
2355                 thePoints Sequence of points for the B-Spline curve.
2356                 theFirstVec Vector object, defining the curve direction at its first point.
2357                 theLastVec Vector object, defining the curve direction at its last point.
2358                 theName Object name; when specified, this parameter is used
2359                         for result publication in the study. Otherwise, if automatic
2360                         publication is switched on, default value is used for result name.
2361
2362             Returns:
2363                 New GEOM.GEOM_Object, containing the created B-Spline curve.
2364             """
2365             # Example: see GEOM_TestAll.py
2366             anObj = self.CurvesOp.MakeSplineInterpolWithTangents(thePoints, theFirstVec, theLastVec)
2367             RaiseIfFailed("MakeInterpolWithTangents", self.CurvesOp)
2368             self._autoPublish(anObj, theName, "bspline")
2369             return anObj
2370
2371         ## Creates a curve using the parametric definition of the basic points.
2372         #  @param thexExpr parametric equation of the coordinates X.
2373         #  @param theyExpr parametric equation of the coordinates Y.
2374         #  @param thezExpr parametric equation of the coordinates Z.
2375         #  @param theParamMin the minimal value of the parameter.
2376         #  @param theParamMax the maximum value of the parameter.
2377         #  @param theParamStep the number of steps if theNewMethod = True, else step value of the parameter.
2378         #  @param theCurveType the type of the curve,
2379         #         one of GEOM.Polyline, GEOM.Bezier, GEOM.Interpolation.
2380         #  @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.
2381         #  @param theName Object name; when specified, this parameter is used
2382         #         for result publication in the study. Otherwise, if automatic
2383         #         publication is switched on, default value is used for result name.
2384         #
2385         #  @return New GEOM.GEOM_Object, containing the created curve.
2386         #
2387         #  @ref tui_creation_curve "Example"
2388         @ManageTransactions("CurvesOp")
2389         def MakeCurveParametric(self, thexExpr, theyExpr, thezExpr,
2390                                 theParamMin, theParamMax, theParamStep, theCurveType, theNewMethod=False, theName=None ):
2391             """
2392             Creates a curve using the parametric definition of the basic points.
2393
2394             Parameters:
2395                 thexExpr parametric equation of the coordinates X.
2396                 theyExpr parametric equation of the coordinates Y.
2397                 thezExpr parametric equation of the coordinates Z.
2398                 theParamMin the minimal value of the parameter.
2399                 theParamMax the maximum value of the parameter.
2400                 theParamStep the number of steps if theNewMethod = True, else step value of the parameter.
2401                 theCurveType the type of the curve,
2402                              one of GEOM.Polyline, GEOM.Bezier, GEOM.Interpolation.
2403                 theNewMethod flag for switching to the new method if the flag is set to false a deprecated
2404                              method is used which can lead to a bug.
2405                 theName Object name; when specified, this parameter is used
2406                         for result publication in the study. Otherwise, if automatic
2407                         publication is switched on, default value is used for result name.
2408
2409             Returns:
2410                 New GEOM.GEOM_Object, containing the created curve.
2411             """
2412             theParamMin,theParamMax,theParamStep,Parameters = ParseParameters(theParamMin,theParamMax,theParamStep)
2413             if theNewMethod:
2414               anObj = self.CurvesOp.MakeCurveParametricNew(thexExpr,theyExpr,thezExpr,theParamMin,theParamMax,theParamStep,theCurveType)
2415             else:
2416               anObj = self.CurvesOp.MakeCurveParametric(thexExpr,theyExpr,thezExpr,theParamMin,theParamMax,theParamStep,theCurveType)
2417             RaiseIfFailed("MakeCurveParametric", self.CurvesOp)
2418             anObj.SetParameters(Parameters)
2419             self._autoPublish(anObj, theName, "curve")
2420             return anObj
2421
2422         ## Create an isoline curve on a face.
2423         #  @param theFace the face for which an isoline is created.
2424         #  @param IsUIsoline True for U-isoline creation; False for V-isoline
2425         #         creation.
2426         #  @param theParameter the U parameter for U-isoline or V parameter
2427         #         for V-isoline.
2428         #  @param theName Object name; when specified, this parameter is used
2429         #         for result publication in the study. Otherwise, if automatic
2430         #         publication is switched on, default value is used for result name.
2431         #
2432         #  @return New GEOM.GEOM_Object, containing the created isoline edge or
2433         #          a compound of edges.
2434         #
2435         #  @ref tui_creation_curve "Example"
2436         @ManageTransactions("CurvesOp")
2437         def MakeIsoline(self, theFace, IsUIsoline, theParameter, theName=None):
2438             """
2439             Create an isoline curve on a face.
2440
2441             Parameters:
2442                 theFace the face for which an isoline is created.
2443                 IsUIsoline True for U-isoline creation; False for V-isoline
2444                            creation.
2445                 theParameter the U parameter for U-isoline or V parameter
2446                              for V-isoline.
2447                 theName Object name; when specified, this parameter is used
2448                         for result publication in the study. Otherwise, if automatic
2449                         publication is switched on, default value is used for result name.
2450
2451             Returns:
2452                 New GEOM.GEOM_Object, containing the created isoline edge or a
2453                 compound of edges.
2454             """
2455             # Example: see GEOM_TestAll.py
2456             anObj = self.CurvesOp.MakeIsoline(theFace, IsUIsoline, theParameter)
2457             RaiseIfFailed("MakeIsoline", self.CurvesOp)
2458             if IsUIsoline:
2459                 self._autoPublish(anObj, theName, "U-Isoline")
2460             else:
2461                 self._autoPublish(anObj, theName, "V-Isoline")
2462             return anObj
2463
2464         # end of l4_curves
2465         ## @}
2466
2467         ## @addtogroup l3_sketcher
2468         ## @{
2469
2470         ## Create a sketcher (wire or face), following the textual description,
2471         #  passed through <VAR>theCommand</VAR> argument. \n
2472         #  Edges of the resulting wire or face will be arcs of circles and/or linear segments. \n
2473         #  Format of the description string have to be the following:
2474         #
2475         #  "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"
2476         #
2477         #  Where:
2478         #  - x1, y1 are coordinates of the first sketcher point (zero by default),
2479         #  - CMD is one of
2480         #     - "R angle" : Set the direction by angle
2481         #     - "D dx dy" : Set the direction by DX & DY
2482         #     .
2483         #       \n
2484         #     - "TT x y" : Create segment by point at X & Y
2485         #     - "T dx dy" : Create segment by point with DX & DY
2486         #     - "L length" : Create segment by direction & Length
2487         #     - "IX x" : Create segment by direction & Intersect. X
2488         #     - "IY y" : Create segment by direction & Intersect. Y
2489         #     .
2490         #       \n
2491         #     - "C radius length" : Create arc by direction, radius and length(in degree)
2492         #     - "AA x y": Create arc by point at X & Y
2493         #     - "A dx dy" : Create arc by point with DX & DY
2494         #     - "UU x y radius flag1": Create arc by point at X & Y with given radiUs
2495         #     - "U dx dy radius flag1" : Create arc by point with DX & DY with given radiUs
2496         #     - "EE x y xc yc flag1 flag2": Create arc by point at X & Y with given cEnter coordinates
2497         #     - "E dx dy dxc dyc radius flag1 flag2" : Create arc by point with DX & DY with given cEnter coordinates
2498         #     .
2499         #       \n
2500         #     - "WW" : Close Wire (to finish)
2501         #     - "WF" : Close Wire and build face (to finish)
2502         #     .
2503         #        \n
2504         #  - Flag1 (= reverse) is 0 or 2 ...
2505         #     - if 0 the drawn arc is the one of lower angle (< Pi)
2506         #     - if 2 the drawn arc ius the one of greater angle (> Pi)
2507         #     .
2508         #        \n
2509         #  - Flag2 (= control tolerance) is 0 or 1 ...
2510         #     - if 0 the specified end point can be at a distance of the arc greater than the tolerance (10^-7)
2511         #     - if 1 the wire is built only if the end point is on the arc
2512         #       with a tolerance of 10^-7 on the distance else the creation fails
2513         #
2514         #  @param theCommand String, defining the sketcher in local
2515         #                    coordinates of the working plane.
2516         #  @param theWorkingPlane Nine double values, defining origin,
2517         #                         OZ and OX directions of the working plane.
2518         #  @param theName Object name; when specified, this parameter is used
2519         #         for result publication in the study. Otherwise, if automatic
2520         #         publication is switched on, default value is used for result name.
2521         #
2522         #  @return New GEOM.GEOM_Object, containing the created wire.
2523         #
2524         #  @ref tui_sketcher_page "Example"
2525         @ManageTransactions("CurvesOp")
2526         def MakeSketcher(self, theCommand, theWorkingPlane = [0,0,0, 0,0,1, 1,0,0], theName=None):
2527             """
2528             Create a sketcher (wire or face), following the textual description, passed
2529             through theCommand argument.
2530             Edges of the resulting wire or face will be arcs of circles and/or linear segments.
2531             Format of the description string have to be the following:
2532                 "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"
2533             Where:
2534             - x1, y1 are coordinates of the first sketcher point (zero by default),
2535             - CMD is one of
2536                - "R angle" : Set the direction by angle
2537                - "D dx dy" : Set the direction by DX & DY
2538
2539                - "TT x y" : Create segment by point at X & Y
2540                - "T dx dy" : Create segment by point with DX & DY
2541                - "L length" : Create segment by direction & Length
2542                - "IX x" : Create segment by direction & Intersect. X
2543                - "IY y" : Create segment by direction & Intersect. Y
2544
2545                - "C radius length" : Create arc by direction, radius and length(in degree)
2546                - "AA x y": Create arc by point at X & Y
2547                - "A dx dy" : Create arc by point with DX & DY
2548                - "UU x y radius flag1": Create arc by point at X & Y with given radiUs
2549                - "U dx dy radius flag1" : Create arc by point with DX & DY with given radiUs
2550                - "EE x y xc yc flag1 flag2": Create arc by point at X & Y with given cEnter coordinates
2551                - "E dx dy dxc dyc radius flag1 flag2" : Create arc by point with DX & DY with given cEnter coordinates
2552
2553                - "WW" : Close Wire (to finish)
2554                - "WF" : Close Wire and build face (to finish)
2555
2556             - Flag1 (= reverse) is 0 or 2 ...
2557                - if 0 the drawn arc is the one of lower angle (< Pi)
2558                - if 2 the drawn arc ius the one of greater angle (> Pi)
2559
2560             - Flag2 (= control tolerance) is 0 or 1 ...
2561                - if 0 the specified end point can be at a distance of the arc greater than the tolerance (10^-7)
2562                - if 1 the wire is built only if the end point is on the arc
2563                  with a tolerance of 10^-7 on the distance else the creation fails
2564
2565             Parameters:
2566                 theCommand String, defining the sketcher in local
2567                            coordinates of the working plane.
2568                 theWorkingPlane Nine double values, defining origin,
2569                                 OZ and OX directions of the working plane.
2570                 theName Object name; when specified, this parameter is used
2571                         for result publication in the study. Otherwise, if automatic
2572                         publication is switched on, default value is used for result name.
2573
2574             Returns:
2575                 New GEOM.GEOM_Object, containing the created wire.
2576             """
2577             # Example: see GEOM_TestAll.py
2578             theCommand,Parameters = ParseSketcherCommand(theCommand)
2579             anObj = self.CurvesOp.MakeSketcher(theCommand, theWorkingPlane)
2580             RaiseIfFailed("MakeSketcher", self.CurvesOp)
2581             anObj.SetParameters(Parameters)
2582             self._autoPublish(anObj, theName, "wire")
2583             return anObj
2584
2585         ## Create a sketcher (wire or face), following the textual description,
2586         #  passed through <VAR>theCommand</VAR> argument. \n
2587         #  For format of the description string see MakeSketcher() method.\n
2588         #  @param theCommand String, defining the sketcher in local
2589         #                    coordinates of the working plane.
2590         #  @param theWorkingPlane Planar Face or LCS(Marker) of the working plane.
2591         #  @param theName Object name; when specified, this parameter is used
2592         #         for result publication in the study. Otherwise, if automatic
2593         #         publication is switched on, default value is used for result name.
2594         #
2595         #  @return New GEOM.GEOM_Object, containing the created wire.
2596         #
2597         #  @ref tui_sketcher_page "Example"
2598         @ManageTransactions("CurvesOp")
2599         def MakeSketcherOnPlane(self, theCommand, theWorkingPlane, theName=None):
2600             """
2601             Create a sketcher (wire or face), following the textual description,
2602             passed through theCommand argument.
2603             For format of the description string see geompy.MakeSketcher() method.
2604
2605             Parameters:
2606                 theCommand String, defining the sketcher in local
2607                            coordinates of the working plane.
2608                 theWorkingPlane Planar Face or LCS(Marker) of the working plane.
2609                 theName Object name; when specified, this parameter is used
2610                         for result publication in the study. Otherwise, if automatic
2611                         publication is switched on, default value is used for result name.
2612
2613             Returns:
2614                 New GEOM.GEOM_Object, containing the created wire.
2615             """
2616             theCommand,Parameters = ParseSketcherCommand(theCommand)
2617             anObj = self.CurvesOp.MakeSketcherOnPlane(theCommand, theWorkingPlane)
2618             RaiseIfFailed("MakeSketcherOnPlane", self.CurvesOp)
2619             anObj.SetParameters(Parameters)
2620             self._autoPublish(anObj, theName, "wire")
2621             return anObj
2622
2623         ## Obtain a 2D sketcher interface
2624         #  @return An instance of @ref gsketcher.Sketcher2D "Sketcher2D" interface
2625         def Sketcher2D (self):
2626             """
2627             Obtain a 2D sketcher interface.
2628
2629             Example of usage:
2630                sk = geompy.Sketcher2D()
2631                sk.addPoint(20, 20)
2632                sk.addSegmentRelative(15, 70)
2633                sk.addSegmentPerpY(50)
2634                sk.addArcRadiusRelative(25, 15, 14.5, 0)
2635                sk.addArcCenterAbsolute(1, 1, 50, 50, 0, 0)
2636                sk.addArcDirectionRadiusLength(20, 20, 101, 162.13)
2637                sk.close()
2638                Sketch_1 = sk.wire(geomObj_1)
2639             """
2640             sk = Sketcher2D (self)
2641             return sk
2642
2643         ## Create a sketcher wire, following the numerical description,
2644         #  passed through <VAR>theCoordinates</VAR> argument. \n
2645         #  @param theCoordinates double values, defining points to create a wire,
2646         #                                                      passing from it.
2647         #  @param theName Object name; when specified, this parameter is used
2648         #         for result publication in the study. Otherwise, if automatic
2649         #         publication is switched on, default value is used for result name.
2650         #
2651         #  @return New GEOM.GEOM_Object, containing the created wire.
2652         #
2653         #  @ref tui_3dsketcher_page "Example"
2654         @ManageTransactions("CurvesOp")
2655         def Make3DSketcher(self, theCoordinates, theName=None):
2656             """
2657             Create a sketcher wire, following the numerical description,
2658             passed through theCoordinates argument.
2659
2660             Parameters:
2661                 theCoordinates double values, defining points to create a wire,
2662                                passing from it.
2663                 theName Object name; when specified, this parameter is used
2664                         for result publication in the study. Otherwise, if automatic
2665                         publication is switched on, default value is used for result name.
2666
2667             Returns:
2668                 New GEOM_Object, containing the created wire.
2669             """
2670             theCoordinates,Parameters = ParseParameters(theCoordinates)
2671             anObj = self.CurvesOp.Make3DSketcher(theCoordinates)
2672             RaiseIfFailed("Make3DSketcher", self.CurvesOp)
2673             anObj.SetParameters(Parameters)
2674             self._autoPublish(anObj, theName, "wire")
2675             return anObj
2676
2677         ## Obtain a 3D sketcher interface
2678         #  @return An instance of @ref gsketcher.Sketcher3D "Sketcher3D" interface
2679         #
2680         #  @ref tui_3dsketcher_page "Example"
2681         def Sketcher3D (self):
2682             """
2683             Obtain a 3D sketcher interface.
2684
2685             Example of usage:
2686                 sk = geompy.Sketcher3D()
2687                 sk.addPointsAbsolute(0,0,0, 70,0,0)
2688                 sk.addPointsRelative(0, 0, 130)
2689                 sk.addPointAnglesLength("OXY", 50, 0, 100)
2690                 sk.addPointAnglesLength("OXZ", 30, 80, 130)
2691                 sk.close()
2692                 a3D_Sketcher_1 = sk.wire()
2693             """
2694             sk = Sketcher3D (self)
2695             return sk
2696
2697         ## Obtain a 2D polyline creation interface
2698         #  @return An instance of @ref gsketcher.Polyline2D "Polyline2D" interface
2699         #
2700         #  @ref tui_3dsketcher_page "Example"
2701         def Polyline2D (self):
2702             """
2703             Obtain a 2D polyline creation interface.
2704
2705             Example of usage:
2706                 pl = geompy.Polyline2D()
2707                 pl.addSection("section 1", GEOM.Polyline, True)
2708                 pl.addPoints(0, 0, 10, 0, 10, 10)
2709                 pl.addSection("section 2", GEOM.Interpolation, False)
2710                 pl.addPoints(20, 0, 30, 0, 30, 10)
2711                 resultObj = pl.result(WorkingPlane)
2712             """
2713             pl = Polyline2D (self)
2714             return pl
2715
2716         # end of l3_sketcher
2717         ## @}
2718
2719         ## @addtogroup l3_3d_primitives
2720         ## @{
2721
2722         ## Create a box by coordinates of two opposite vertices.
2723         #
2724         #  @param x1,y1,z1 double values, defining first point it.
2725         #  @param x2,y2,z2 double values, defining first point it.
2726         #  @param theName Object name; when specified, this parameter is used
2727         #         for result publication in the study. Otherwise, if automatic
2728         #         publication is switched on, default value is used for result name.
2729         #
2730         #  @return New GEOM.GEOM_Object, containing the created box.
2731         #
2732         #  @ref tui_creation_box "Example"
2733         def MakeBox(self, x1, y1, z1, x2, y2, z2, theName=None):
2734             """
2735             Create a box by coordinates of two opposite vertices.
2736
2737             Parameters:
2738                 x1,y1,z1 double values, defining first point.
2739                 x2,y2,z2 double values, defining second point.
2740                 theName Object name; when specified, this parameter is used
2741                         for result publication in the study. Otherwise, if automatic
2742                         publication is switched on, default value is used for result name.
2743
2744             Returns:
2745                 New GEOM.GEOM_Object, containing the created box.
2746             """
2747             # Example: see GEOM_TestAll.py
2748             pnt1 = self.MakeVertex(x1,y1,z1)
2749             pnt2 = self.MakeVertex(x2,y2,z2)
2750             # note: auto-publishing is done in self.MakeBoxTwoPnt()
2751             return self.MakeBoxTwoPnt(pnt1, pnt2, theName)
2752
2753         ## Create a box with specified dimensions along the coordinate axes
2754         #  and with edges, parallel to the coordinate axes.
2755         #  Center of the box will be at point (DX/2, DY/2, DZ/2).
2756         #  @param theDX Length of Box edges, parallel to OX axis.
2757         #  @param theDY Length of Box edges, parallel to OY axis.
2758         #  @param theDZ Length of Box edges, parallel to OZ axis.
2759         #  @param theName Object name; when specified, this parameter is used
2760         #         for result publication in the study. Otherwise, if automatic
2761         #         publication is switched on, default value is used for result name.
2762         #
2763         #  @return New GEOM.GEOM_Object, containing the created box.
2764         #
2765         #  @ref tui_creation_box "Example"
2766         @ManageTransactions("PrimOp")
2767         def MakeBoxDXDYDZ(self, theDX, theDY, theDZ, theName=None):
2768             """
2769             Create a box with specified dimensions along the coordinate axes
2770             and with edges, parallel to the coordinate axes.
2771             Center of the box will be at point (DX/2, DY/2, DZ/2).
2772
2773             Parameters:
2774                 theDX Length of Box edges, parallel to OX axis.
2775                 theDY Length of Box edges, parallel to OY axis.
2776                 theDZ Length of Box edges, parallel to OZ axis.
2777                 theName Object name; when specified, this parameter is used
2778                         for result publication in the study. Otherwise, if automatic
2779                         publication is switched on, default value is used for result name.
2780
2781             Returns:
2782                 New GEOM.GEOM_Object, containing the created box.
2783             """
2784             # Example: see GEOM_TestAll.py
2785             theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
2786             anObj = self.PrimOp.MakeBoxDXDYDZ(theDX, theDY, theDZ)
2787             RaiseIfFailed("MakeBoxDXDYDZ", self.PrimOp)
2788             anObj.SetParameters(Parameters)
2789             self._autoPublish(anObj, theName, "box")
2790             return anObj
2791
2792         ## Create a box with two specified opposite vertices,
2793         #  and with edges, parallel to the coordinate axes
2794         #  @param thePnt1 First of two opposite vertices.
2795         #  @param thePnt2 Second of two opposite vertices.
2796         #  @param theName Object name; when specified, this parameter is used
2797         #         for result publication in the study. Otherwise, if automatic
2798         #         publication is switched on, default value is used for result name.
2799         #
2800         #  @return New GEOM.GEOM_Object, containing the created box.
2801         #
2802         #  @ref tui_creation_box "Example"
2803         @ManageTransactions("PrimOp")
2804         def MakeBoxTwoPnt(self, thePnt1, thePnt2, theName=None):
2805             """
2806             Create a box with two specified opposite vertices,
2807             and with edges, parallel to the coordinate axes
2808
2809             Parameters:
2810                 thePnt1 First of two opposite vertices.
2811                 thePnt2 Second of two opposite vertices.
2812                 theName Object name; when specified, this parameter is used
2813                         for result publication in the study. Otherwise, if automatic
2814                         publication is switched on, default value is used for result name.
2815
2816             Returns:
2817                 New GEOM.GEOM_Object, containing the created box.
2818             """
2819             # Example: see GEOM_TestAll.py
2820             anObj = self.PrimOp.MakeBoxTwoPnt(thePnt1, thePnt2)
2821             RaiseIfFailed("MakeBoxTwoPnt", self.PrimOp)
2822             self._autoPublish(anObj, theName, "box")
2823             return anObj
2824
2825         ## Create a face with specified dimensions with edges parallel to coordinate axes.
2826         #  @param theH height of Face.
2827         #  @param theW width of Face.
2828         #  @param theOrientation face orientation: 1-OXY, 2-OYZ, 3-OZX
2829         #  @param theName Object name; when specified, this parameter is used
2830         #         for result publication in the study. Otherwise, if automatic
2831         #         publication is switched on, default value is used for result name.
2832         #
2833         #  @return New GEOM.GEOM_Object, containing the created face.
2834         #
2835         #  @ref tui_creation_face "Example"
2836         @ManageTransactions("PrimOp")
2837         def MakeFaceHW(self, theH, theW, theOrientation, theName=None):
2838             """
2839             Create a face with specified dimensions with edges parallel to coordinate axes.
2840
2841             Parameters:
2842                 theH height of Face.
2843                 theW width of Face.
2844                 theOrientation face orientation: 1-OXY, 2-OYZ, 3-OZX
2845                 theName Object name; when specified, this parameter is used
2846                         for result publication in the study. Otherwise, if automatic
2847                         publication is switched on, default value is used for result name.
2848
2849             Returns:
2850                 New GEOM.GEOM_Object, containing the created face.
2851             """
2852             # Example: see GEOM_TestAll.py
2853             theH,theW,Parameters = ParseParameters(theH, theW)
2854             anObj = self.PrimOp.MakeFaceHW(theH, theW, theOrientation)
2855             RaiseIfFailed("MakeFaceHW", self.PrimOp)
2856             anObj.SetParameters(Parameters)
2857             self._autoPublish(anObj, theName, "rectangle")
2858             return anObj
2859
2860         ## Create a face from another plane and two sizes,
2861         #  vertical size and horisontal size.
2862         #  @param theObj   Normale vector to the creating face or
2863         #  the face object.
2864         #  @param theH     Height (vertical size).
2865         #  @param theW     Width (horisontal size).
2866         #  @param theName Object name; when specified, this parameter is used
2867         #         for result publication in the study. Otherwise, if automatic
2868         #         publication is switched on, default value is used for result name.
2869         #
2870         #  @return New GEOM.GEOM_Object, containing the created face.
2871         #
2872         #  @ref tui_creation_face "Example"
2873         @ManageTransactions("PrimOp")
2874         def MakeFaceObjHW(self, theObj, theH, theW, theName=None):
2875             """
2876             Create a face from another plane and two sizes,
2877             vertical size and horisontal size.
2878
2879             Parameters:
2880                 theObj   Normale vector to the creating face or
2881                          the face object.
2882                 theH     Height (vertical size).
2883                 theW     Width (horisontal size).
2884                 theName Object name; when specified, this parameter is used
2885                         for result publication in the study. Otherwise, if automatic
2886                         publication is switched on, default value is used for result name.
2887
2888             Returns:
2889                 New GEOM_Object, containing the created face.
2890             """
2891             # Example: see GEOM_TestAll.py
2892             theH,theW,Parameters = ParseParameters(theH, theW)
2893             anObj = self.PrimOp.MakeFaceObjHW(theObj, theH, theW)
2894             RaiseIfFailed("MakeFaceObjHW", self.PrimOp)
2895             anObj.SetParameters(Parameters)
2896             self._autoPublish(anObj, theName, "rectangle")
2897             return anObj
2898
2899         ## Create a disk with given center, normal vector and radius.
2900         #  @param thePnt Disk center.
2901         #  @param theVec Vector, normal to the plane of the disk.
2902         #  @param theR Disk radius.
2903         #  @param theName Object name; when specified, this parameter is used
2904         #         for result publication in the study. Otherwise, if automatic
2905         #         publication is switched on, default value is used for result name.
2906         #
2907         #  @return New GEOM.GEOM_Object, containing the created disk.
2908         #
2909         #  @ref tui_creation_disk "Example"
2910         @ManageTransactions("PrimOp")
2911         def MakeDiskPntVecR(self, thePnt, theVec, theR, theName=None):
2912             """
2913             Create a disk with given center, normal vector and radius.
2914
2915             Parameters:
2916                 thePnt Disk center.
2917                 theVec Vector, normal to the plane of the disk.
2918                 theR Disk radius.
2919                 theName Object name; when specified, this parameter is used
2920                         for result publication in the study. Otherwise, if automatic
2921                         publication is switched on, default value is used for result name.
2922
2923             Returns:
2924                 New GEOM.GEOM_Object, containing the created disk.
2925             """
2926             # Example: see GEOM_TestAll.py
2927             theR,Parameters = ParseParameters(theR)
2928             anObj = self.PrimOp.MakeDiskPntVecR(thePnt, theVec, theR)
2929             RaiseIfFailed("MakeDiskPntVecR", self.PrimOp)
2930             anObj.SetParameters(Parameters)
2931             self._autoPublish(anObj, theName, "disk")
2932             return anObj
2933
2934         ## Create a disk, passing through three given points
2935         #  @param thePnt1,thePnt2,thePnt3 Points, defining the disk.
2936         #  @param theName Object name; when specified, this parameter is used
2937         #         for result publication in the study. Otherwise, if automatic
2938         #         publication is switched on, default value is used for result name.
2939         #
2940         #  @return New GEOM.GEOM_Object, containing the created disk.
2941         #
2942         #  @ref tui_creation_disk "Example"
2943         @ManageTransactions("PrimOp")
2944         def MakeDiskThreePnt(self, thePnt1, thePnt2, thePnt3, theName=None):
2945             """
2946             Create a disk, passing through three given points
2947
2948             Parameters:
2949                 thePnt1,thePnt2,thePnt3 Points, defining the disk.
2950                 theName Object name; when specified, this parameter is used
2951                         for result publication in the study. Otherwise, if automatic
2952                         publication is switched on, default value is used for result name.
2953
2954             Returns:
2955                 New GEOM.GEOM_Object, containing the created disk.
2956             """
2957             # Example: see GEOM_TestAll.py
2958             anObj = self.PrimOp.MakeDiskThreePnt(thePnt1, thePnt2, thePnt3)
2959             RaiseIfFailed("MakeDiskThreePnt", self.PrimOp)
2960             self._autoPublish(anObj, theName, "disk")
2961             return anObj
2962
2963         ## Create a disk with specified dimensions along OX-OY coordinate axes.
2964         #  @param theR Radius of Face.
2965         #  @param theOrientation set the orientation belong axis OXY or OYZ or OZX
2966         #  @param theName Object name; when specified, this parameter is used
2967         #         for result publication in the study. Otherwise, if automatic
2968         #         publication is switched on, default value is used for result name.
2969         #
2970         #  @return New GEOM.GEOM_Object, containing the created disk.
2971         #
2972         #  @ref tui_creation_face "Example"
2973         @ManageTransactions("PrimOp")
2974         def MakeDiskR(self, theR, theOrientation, theName=None):
2975             """
2976             Create a disk with specified dimensions along OX-OY coordinate axes.
2977
2978             Parameters:
2979                 theR Radius of Face.
2980                 theOrientation set the orientation belong axis OXY or OYZ or OZX
2981                 theName Object name; when specified, this parameter is used
2982                         for result publication in the study. Otherwise, if automatic
2983                         publication is switched on, default value is used for result name.
2984
2985             Returns:
2986                 New GEOM.GEOM_Object, containing the created disk.
2987
2988             Example of usage:
2989                 Disk3 = geompy.MakeDiskR(100., 1)
2990             """
2991             # Example: see GEOM_TestAll.py
2992             theR,Parameters = ParseParameters(theR)
2993             anObj = self.PrimOp.MakeDiskR(theR, theOrientation)
2994             RaiseIfFailed("MakeDiskR", self.PrimOp)
2995             anObj.SetParameters(Parameters)
2996             self._autoPublish(anObj, theName, "disk")
2997             return anObj
2998
2999         ## Create a cylinder with given base point, axis, radius and height.
3000         #  @param thePnt Central point of cylinder base.
3001         #  @param theAxis Cylinder axis.
3002         #  @param theR Cylinder radius.
3003         #  @param theH Cylinder height.
3004         #  @param theName Object name; when specified, this parameter is used
3005         #         for result publication in the study. Otherwise, if automatic
3006         #         publication is switched on, default value is used for result name.
3007         #
3008         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3009         #
3010         #  @ref tui_creation_cylinder "Example"
3011         @ManageTransactions("PrimOp")
3012         def MakeCylinder(self, thePnt, theAxis, theR, theH, theName=None):
3013             """
3014             Create a cylinder with given base point, axis, radius and height.
3015
3016             Parameters:
3017                 thePnt Central point of cylinder base.
3018                 theAxis Cylinder axis.
3019                 theR Cylinder radius.
3020                 theH Cylinder height.
3021                 theName Object name; when specified, this parameter is used
3022                         for result publication in the study. Otherwise, if automatic
3023                         publication is switched on, default value is used for result name.
3024
3025             Returns:
3026                 New GEOM.GEOM_Object, containing the created cylinder.
3027             """
3028             # Example: see GEOM_TestAll.py
3029             theR,theH,Parameters = ParseParameters(theR, theH)
3030             anObj = self.PrimOp.MakeCylinderPntVecRH(thePnt, theAxis, theR, theH)
3031             RaiseIfFailed("MakeCylinderPntVecRH", self.PrimOp)
3032             anObj.SetParameters(Parameters)
3033             self._autoPublish(anObj, theName, "cylinder")
3034             return anObj
3035             
3036         ## Create a portion of cylinder with given base point, axis, radius, height and angle.
3037         #  @param thePnt Central point of cylinder base.
3038         #  @param theAxis Cylinder axis.
3039         #  @param theR Cylinder radius.
3040         #  @param theH Cylinder height.
3041         #  @param theA Cylinder angle in radians.
3042         #  @param theName Object name; when specified, this parameter is used
3043         #         for result publication in the study. Otherwise, if automatic
3044         #         publication is switched on, default value is used for result name.
3045         #
3046         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3047         #
3048         #  @ref tui_creation_cylinder "Example"
3049         @ManageTransactions("PrimOp")
3050         def MakeCylinderA(self, thePnt, theAxis, theR, theH, theA, theName=None):
3051             """
3052             Create a portion of cylinder with given base point, axis, radius, height and angle.
3053
3054             Parameters:
3055                 thePnt Central point of cylinder base.
3056                 theAxis Cylinder axis.
3057                 theR Cylinder radius.
3058                 theH Cylinder height.
3059                 theA Cylinder angle in radians.
3060                 theName Object name; when specified, this parameter is used
3061                         for result publication in the study. Otherwise, if automatic
3062                         publication is switched on, default value is used for result name.
3063
3064             Returns:
3065                 New GEOM.GEOM_Object, containing the created cylinder.
3066             """
3067             # Example: see GEOM_TestAll.py
3068             flag = False
3069             if isinstance(theA,str):
3070                 flag = True
3071             theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
3072             if flag:
3073                 theA = theA*math.pi/180.
3074             if theA<=0. or theA>=2*math.pi:
3075               raise ValueError("The angle parameter should be strictly between 0 and 2*pi.")
3076             anObj = self.PrimOp.MakeCylinderPntVecRHA(thePnt, theAxis, theR, theH, theA)
3077             RaiseIfFailed("MakeCylinderPntVecRHA", self.PrimOp)
3078             anObj.SetParameters(Parameters)
3079             self._autoPublish(anObj, theName, "cylinder")
3080             return anObj
3081
3082         ## Create a cylinder with given radius and height at
3083         #  the origin of coordinate system. Axis of the cylinder
3084         #  will be collinear to the OZ axis of the coordinate system.
3085         #  @param theR Cylinder radius.
3086         #  @param theH Cylinder height.
3087         #  @param theName Object name; when specified, this parameter is used
3088         #         for result publication in the study. Otherwise, if automatic
3089         #         publication is switched on, default value is used for result name.
3090         #
3091         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3092         #
3093         #  @ref tui_creation_cylinder "Example"
3094         @ManageTransactions("PrimOp")
3095         def MakeCylinderRH(self, theR, theH, theName=None):
3096             """
3097             Create a cylinder with given radius and height at
3098             the origin of coordinate system. Axis of the cylinder
3099             will be collinear to the OZ axis of the coordinate system.
3100
3101             Parameters:
3102                 theR Cylinder radius.
3103                 theH Cylinder height.
3104                 theName Object name; when specified, this parameter is used
3105                         for result publication in the study. Otherwise, if automatic
3106                         publication is switched on, default value is used for result name.
3107
3108             Returns:
3109                 New GEOM.GEOM_Object, containing the created cylinder.
3110             """
3111             # Example: see GEOM_TestAll.py
3112             theR,theH,Parameters = ParseParameters(theR, theH)
3113             anObj = self.PrimOp.MakeCylinderRH(theR, theH)
3114             RaiseIfFailed("MakeCylinderRH", self.PrimOp)
3115             anObj.SetParameters(Parameters)
3116             self._autoPublish(anObj, theName, "cylinder")
3117             return anObj
3118             
3119         ## Create a portion of cylinder with given radius, height and angle at
3120         #  the origin of coordinate system. Axis of the cylinder
3121         #  will be collinear to the OZ axis of the coordinate system.
3122         #  @param theR Cylinder radius.
3123         #  @param theH Cylinder height.
3124         #  @param theA Cylinder angle in radians.
3125         #  @param theName Object name; when specified, this parameter is used
3126         #         for result publication in the study. Otherwise, if automatic
3127         #         publication is switched on, default value is used for result name.
3128         #
3129         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3130         #
3131         #  @ref tui_creation_cylinder "Example"
3132         @ManageTransactions("PrimOp")
3133         def MakeCylinderRHA(self, theR, theH, theA, theName=None):
3134             """
3135             Create a portion of cylinder with given radius, height and angle at
3136             the origin of coordinate system. Axis of the cylinder
3137             will be collinear to the OZ axis of the coordinate system.
3138
3139             Parameters:
3140                 theR Cylinder radius.
3141                 theH Cylinder height.
3142                 theA Cylinder angle in radians.
3143                 theName Object name; when specified, this parameter is used
3144                         for result publication in the study. Otherwise, if automatic
3145                         publication is switched on, default value is used for result name.
3146
3147             Returns:
3148                 New GEOM.GEOM_Object, containing the created cylinder.
3149             """
3150             # Example: see GEOM_TestAll.py
3151             flag = False
3152             if isinstance(theA,str):
3153                 flag = True
3154             theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
3155             if flag:
3156                 theA = theA*math.pi/180.
3157             if theA<=0. or theA>=2*math.pi:
3158               raise ValueError("The angle parameter should be strictly between 0 and 2*pi.")
3159             anObj = self.PrimOp.MakeCylinderRHA(theR, theH, theA)
3160             RaiseIfFailed("MakeCylinderRHA", self.PrimOp)
3161             anObj.SetParameters(Parameters)
3162             self._autoPublish(anObj, theName, "cylinder")
3163             return anObj
3164
3165         ## Create a sphere with given center and radius.
3166         #  @param thePnt Sphere center.
3167         #  @param theR Sphere radius.
3168         #  @param theName Object name; when specified, this parameter is used
3169         #         for result publication in the study. Otherwise, if automatic
3170         #         publication is switched on, default value is used for result name.
3171         #
3172         #  @return New GEOM.GEOM_Object, containing the created sphere.
3173         #
3174         #  @ref tui_creation_sphere "Example"
3175         @ManageTransactions("PrimOp")
3176         def MakeSpherePntR(self, thePnt, theR, theName=None):
3177             """
3178             Create a sphere with given center and radius.
3179
3180             Parameters:
3181                 thePnt Sphere center.
3182                 theR Sphere radius.
3183                 theName Object name; when specified, this parameter is used
3184                         for result publication in the study. Otherwise, if automatic
3185                         publication is switched on, default value is used for result name.
3186
3187             Returns:
3188                 New GEOM.GEOM_Object, containing the created sphere.
3189             """
3190             # Example: see GEOM_TestAll.py
3191             theR,Parameters = ParseParameters(theR)
3192             anObj = self.PrimOp.MakeSpherePntR(thePnt, theR)
3193             RaiseIfFailed("MakeSpherePntR", self.PrimOp)
3194             anObj.SetParameters(Parameters)
3195             self._autoPublish(anObj, theName, "sphere")
3196             return anObj
3197
3198         ## Create a sphere with given center and radius.
3199         #  @param x,y,z Coordinates of sphere center.
3200         #  @param theR Sphere radius.
3201         #  @param theName Object name; when specified, this parameter is used
3202         #         for result publication in the study. Otherwise, if automatic
3203         #         publication is switched on, default value is used for result name.
3204         #
3205         #  @return New GEOM.GEOM_Object, containing the created sphere.
3206         #
3207         #  @ref tui_creation_sphere "Example"
3208         def MakeSphere(self, x, y, z, theR, theName=None):
3209             """
3210             Create a sphere with given center and radius.
3211
3212             Parameters:
3213                 x,y,z Coordinates of sphere center.
3214                 theR Sphere radius.
3215                 theName Object name; when specified, this parameter is used
3216                         for result publication in the study. Otherwise, if automatic
3217                         publication is switched on, default value is used for result name.
3218
3219             Returns:
3220                 New GEOM.GEOM_Object, containing the created sphere.
3221             """
3222             # Example: see GEOM_TestAll.py
3223             point = self.MakeVertex(x, y, z)
3224             # note: auto-publishing is done in self.MakeSpherePntR()
3225             anObj = self.MakeSpherePntR(point, theR, theName)
3226             return anObj
3227
3228         ## Create a sphere with given radius at the origin of coordinate system.
3229         #  @param theR Sphere radius.
3230         #  @param theName Object name; when specified, this parameter is used
3231         #         for result publication in the study. Otherwise, if automatic
3232         #         publication is switched on, default value is used for result name.
3233         #
3234         #  @return New GEOM.GEOM_Object, containing the created sphere.
3235         #
3236         #  @ref tui_creation_sphere "Example"
3237         @ManageTransactions("PrimOp")
3238         def MakeSphereR(self, theR, theName=None):
3239             """
3240             Create a sphere with given radius at the origin of coordinate system.
3241
3242             Parameters:
3243                 theR Sphere radius.
3244                 theName Object name; when specified, this parameter is used
3245                         for result publication in the study. Otherwise, if automatic
3246                         publication is switched on, default value is used for result name.
3247
3248             Returns:
3249                 New GEOM.GEOM_Object, containing the created sphere.
3250             """
3251             # Example: see GEOM_TestAll.py
3252             theR,Parameters = ParseParameters(theR)
3253             anObj = self.PrimOp.MakeSphereR(theR)
3254             RaiseIfFailed("MakeSphereR", self.PrimOp)
3255             anObj.SetParameters(Parameters)
3256             self._autoPublish(anObj, theName, "sphere")
3257             return anObj
3258
3259         ## Create a cone with given base point, axis, height and radiuses.
3260         #  @param thePnt Central point of the first cone base.
3261         #  @param theAxis Cone axis.
3262         #  @param theR1 Radius of the first cone base.
3263         #  @param theR2 Radius of the second cone base.
3264         #    \note If both radiuses are non-zero, the cone will be truncated.
3265         #    \note If the radiuses are equal, a cylinder will be created instead.
3266         #  @param theH Cone height.
3267         #  @param theName Object name; when specified, this parameter is used
3268         #         for result publication in the study. Otherwise, if automatic
3269         #         publication is switched on, default value is used for result name.
3270         #
3271         #  @return New GEOM.GEOM_Object, containing the created cone.
3272         #
3273         #  @ref tui_creation_cone "Example"
3274         @ManageTransactions("PrimOp")
3275         def MakeCone(self, thePnt, theAxis, theR1, theR2, theH, theName=None):
3276             """
3277             Create a cone with given base point, axis, height and radiuses.
3278
3279             Parameters:
3280                 thePnt Central point of the first cone base.
3281                 theAxis Cone axis.
3282                 theR1 Radius of the first cone base.
3283                 theR2 Radius of the second cone base.
3284                 theH Cone height.
3285                 theName Object name; when specified, this parameter is used
3286                         for result publication in the study. Otherwise, if automatic
3287                         publication is switched on, default value is used for result name.
3288
3289             Note:
3290                 If both radiuses are non-zero, the cone will be truncated.
3291                 If the radiuses are equal, a cylinder will be created instead.
3292
3293             Returns:
3294                 New GEOM.GEOM_Object, containing the created cone.
3295             """
3296             # Example: see GEOM_TestAll.py
3297             theR1,theR2,theH,Parameters = ParseParameters(theR1,theR2,theH)
3298             anObj = self.PrimOp.MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theH)
3299             RaiseIfFailed("MakeConePntVecR1R2H", self.PrimOp)
3300             anObj.SetParameters(Parameters)
3301             self._autoPublish(anObj, theName, "cone")
3302             return anObj
3303
3304         ## Create a cone with given height and radiuses at
3305         #  the origin of coordinate system. Axis of the cone will
3306         #  be collinear to the OZ axis of the coordinate system.
3307         #  @param theR1 Radius of the first cone base.
3308         #  @param theR2 Radius of the second cone base.
3309         #    \note If both radiuses are non-zero, the cone will be truncated.
3310         #    \note If the radiuses are equal, a cylinder will be created instead.
3311         #  @param theH Cone height.
3312         #  @param theName Object name; when specified, this parameter is used
3313         #         for result publication in the study. Otherwise, if automatic
3314         #         publication is switched on, default value is used for result name.
3315         #
3316         #  @return New GEOM.GEOM_Object, containing the created cone.
3317         #
3318         #  @ref tui_creation_cone "Example"
3319         @ManageTransactions("PrimOp")
3320         def MakeConeR1R2H(self, theR1, theR2, theH, theName=None):
3321             """
3322             Create a cone with given height and radiuses at
3323             the origin of coordinate system. Axis of the cone will
3324             be collinear to the OZ axis of the coordinate system.
3325
3326             Parameters:
3327                 theR1 Radius of the first cone base.
3328                 theR2 Radius of the second cone base.
3329                 theH Cone height.
3330                 theName Object name; when specified, this parameter is used
3331                         for result publication in the study. Otherwise, if automatic
3332                         publication is switched on, default value is used for result name.
3333
3334             Note:
3335                 If both radiuses are non-zero, the cone will be truncated.
3336                 If the radiuses are equal, a cylinder will be created instead.
3337
3338             Returns:
3339                 New GEOM.GEOM_Object, containing the created cone.
3340             """
3341             # Example: see GEOM_TestAll.py
3342             theR1,theR2,theH,Parameters = ParseParameters(theR1,theR2,theH)
3343             anObj = self.PrimOp.MakeConeR1R2H(theR1, theR2, theH)
3344             RaiseIfFailed("MakeConeR1R2H", self.PrimOp)
3345             anObj.SetParameters(Parameters)
3346             self._autoPublish(anObj, theName, "cone")
3347             return anObj
3348
3349         ## Create a torus with given center, normal vector and radiuses.
3350         #  @param thePnt Torus central point.
3351         #  @param theVec Torus axis of symmetry.
3352         #  @param theRMajor Torus major radius.
3353         #  @param theRMinor Torus minor radius.
3354         #  @param theName Object name; when specified, this parameter is used
3355         #         for result publication in the study. Otherwise, if automatic
3356         #         publication is switched on, default value is used for result name.
3357         #
3358         #  @return New GEOM.GEOM_Object, containing the created torus.
3359         #
3360         #  @ref tui_creation_torus "Example"
3361         @ManageTransactions("PrimOp")
3362         def MakeTorus(self, thePnt, theVec, theRMajor, theRMinor, theName=None):
3363             """
3364             Create a torus with given center, normal vector and radiuses.
3365
3366             Parameters:
3367                 thePnt Torus central point.
3368                 theVec Torus axis of symmetry.
3369                 theRMajor Torus major radius.
3370                 theRMinor Torus minor radius.
3371                 theName Object name; when specified, this parameter is used
3372                         for result publication in the study. Otherwise, if automatic
3373                         publication is switched on, default value is used for result name.
3374
3375            Returns:
3376                 New GEOM.GEOM_Object, containing the created torus.
3377             """
3378             # Example: see GEOM_TestAll.py
3379             theRMajor,theRMinor,Parameters = ParseParameters(theRMajor,theRMinor)
3380             anObj = self.PrimOp.MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor)
3381             RaiseIfFailed("MakeTorusPntVecRR", self.PrimOp)
3382             anObj.SetParameters(Parameters)
3383             self._autoPublish(anObj, theName, "torus")
3384             return anObj
3385
3386         ## Create a torus with given radiuses at the origin of coordinate system.
3387         #  @param theRMajor Torus major radius.
3388         #  @param theRMinor Torus minor radius.
3389         #  @param theName Object name; when specified, this parameter is used
3390         #         for result publication in the study. Otherwise, if automatic
3391         #         publication is switched on, default value is used for result name.
3392         #
3393         #  @return New GEOM.GEOM_Object, containing the created torus.
3394         #
3395         #  @ref tui_creation_torus "Example"
3396         @ManageTransactions("PrimOp")
3397         def MakeTorusRR(self, theRMajor, theRMinor, theName=None):
3398             """
3399            Create a torus with given radiuses at the origin of coordinate system.
3400
3401            Parameters:
3402                 theRMajor Torus major radius.
3403                 theRMinor Torus minor radius.
3404                 theName Object name; when specified, this parameter is used
3405                         for result publication in the study. Otherwise, if automatic
3406                         publication is switched on, default value is used for result name.
3407
3408            Returns:
3409                 New GEOM.GEOM_Object, containing the created torus.
3410             """
3411             # Example: see GEOM_TestAll.py
3412             theRMajor,theRMinor,Parameters = ParseParameters(theRMajor,theRMinor)
3413             anObj = self.PrimOp.MakeTorusRR(theRMajor, theRMinor)
3414             RaiseIfFailed("MakeTorusRR", self.PrimOp)
3415             anObj.SetParameters(Parameters)
3416             self._autoPublish(anObj, theName, "torus")
3417             return anObj
3418
3419         # end of l3_3d_primitives
3420         ## @}
3421
3422         ## @addtogroup l3_complex
3423         ## @{
3424
3425         ## Create a shape by extrusion of the base shape along a vector, defined by two points.
3426         #  @param theBase Base shape to be extruded.
3427         #  @param thePoint1 First end of extrusion vector.
3428         #  @param thePoint2 Second end of extrusion vector.
3429         #  @param theScaleFactor Use it to make prism with scaled second base.
3430         #                        Nagative value means not scaled second base.
3431         #  @param theName Object name; when specified, this parameter is used
3432         #         for result publication in the study. Otherwise, if automatic
3433         #         publication is switched on, default value is used for result name.
3434         #
3435         #  @return New GEOM.GEOM_Object, containing the created prism.
3436         #
3437         #  @ref tui_creation_prism "Example"
3438         @ManageTransactions("PrimOp")
3439         def MakePrism(self, theBase, thePoint1, thePoint2, theScaleFactor = -1.0, theName=None):
3440             """
3441             Create a shape by extrusion of the base shape along a vector, defined by two points.
3442
3443             Parameters:
3444                 theBase Base shape to be extruded.
3445                 thePoint1 First end of extrusion vector.
3446                 thePoint2 Second end of extrusion vector.
3447                 theScaleFactor Use it to make prism with scaled second base.
3448                                Nagative value means not scaled second base.
3449                 theName Object name; when specified, this parameter is used
3450                         for result publication in the study. Otherwise, if automatic
3451                         publication is switched on, default value is used for result name.
3452
3453             Returns:
3454                 New GEOM.GEOM_Object, containing the created prism.
3455             """
3456             # Example: see GEOM_TestAll.py
3457             anObj = None
3458             Parameters = ""
3459             if theScaleFactor > 0:
3460                 theScaleFactor,Parameters = ParseParameters(theScaleFactor)
3461                 anObj = self.PrimOp.MakePrismTwoPntWithScaling(theBase, thePoint1, thePoint2, theScaleFactor)
3462             else:
3463                 anObj = self.PrimOp.MakePrismTwoPnt(theBase, thePoint1, thePoint2)
3464             RaiseIfFailed("MakePrismTwoPnt", self.PrimOp)
3465             anObj.SetParameters(Parameters)
3466             self._autoPublish(anObj, theName, "prism")
3467             return anObj
3468
3469         ## Create a shape by extrusion of the base shape along a
3470         #  vector, defined by two points, in 2 Ways (forward/backward).
3471         #  @param theBase Base shape to be extruded.
3472         #  @param thePoint1 First end of extrusion vector.
3473         #  @param thePoint2 Second end of extrusion vector.
3474         #  @param theName Object name; when specified, this parameter is used
3475         #         for result publication in the study. Otherwise, if automatic
3476         #         publication is switched on, default value is used for result name.
3477         #
3478         #  @return New GEOM.GEOM_Object, containing the created prism.
3479         #
3480         #  @ref tui_creation_prism "Example"
3481         @ManageTransactions("PrimOp")
3482         def MakePrism2Ways(self, theBase, thePoint1, thePoint2, theName=None):
3483             """
3484             Create a shape by extrusion of the base shape along a
3485             vector, defined by two points, in 2 Ways (forward/backward).
3486
3487             Parameters:
3488                 theBase Base shape to be extruded.
3489                 thePoint1 First end of extrusion vector.
3490                 thePoint2 Second end of extrusion vector.
3491                 theName Object name; when specified, this parameter is used
3492                         for result publication in the study. Otherwise, if automatic
3493                         publication is switched on, default value is used for result name.
3494
3495             Returns:
3496                 New GEOM.GEOM_Object, containing the created prism.
3497             """
3498             # Example: see GEOM_TestAll.py
3499             anObj = self.PrimOp.MakePrismTwoPnt2Ways(theBase, thePoint1, thePoint2)
3500             RaiseIfFailed("MakePrismTwoPnt", self.PrimOp)
3501             self._autoPublish(anObj, theName, "prism")
3502             return anObj
3503
3504         ## Create a shape by extrusion of the base shape along the vector,
3505         #  i.e. all the space, transfixed by the base shape during its translation
3506         #  along the vector on the given distance.
3507         #  @param theBase Base shape to be extruded.
3508         #  @param theVec Direction of extrusion.
3509         #  @param theH Prism dimension along theVec.
3510         #  @param theScaleFactor Use it to make prism with scaled second base.
3511         #                        Negative value means not scaled second base.
3512         #  @param theName Object name; when specified, this parameter is used
3513         #         for result publication in the study. Otherwise, if automatic
3514         #         publication is switched on, default value is used for result name.
3515         #
3516         #  @return New GEOM.GEOM_Object, containing the created prism.
3517         #
3518         #  @ref tui_creation_prism "Example"
3519         @ManageTransactions("PrimOp")
3520         def MakePrismVecH(self, theBase, theVec, theH, theScaleFactor = -1.0, theName=None):
3521             """
3522             Create a shape by extrusion of the base shape along the vector,
3523             i.e. all the space, transfixed by the base shape during its translation
3524             along the vector on the given distance.
3525
3526             Parameters:
3527                 theBase Base shape to be extruded.
3528                 theVec Direction of extrusion.
3529                 theH Prism dimension along theVec.
3530                 theScaleFactor Use it to make prism with scaled second base.
3531                                Negative value means not scaled second base.
3532                 theName Object name; when specified, this parameter is used
3533                         for result publication in the study. Otherwise, if automatic
3534                         publication is switched on, default value is used for result name.
3535
3536             Returns:
3537                 New GEOM.GEOM_Object, containing the created prism.
3538             """
3539             # Example: see GEOM_TestAll.py
3540             anObj = None
3541             Parameters = ""
3542             if theScaleFactor > 0:
3543                 theH,theScaleFactor,Parameters = ParseParameters(theH,theScaleFactor)
3544                 anObj = self.PrimOp.MakePrismVecHWithScaling(theBase, theVec, theH, theScaleFactor)
3545             else:
3546                 theH,Parameters = ParseParameters(theH)
3547                 anObj = self.PrimOp.MakePrismVecH(theBase, theVec, theH)
3548             RaiseIfFailed("MakePrismVecH", self.PrimOp)
3549             anObj.SetParameters(Parameters)
3550             self._autoPublish(anObj, theName, "prism")
3551             return anObj
3552
3553         ## Create a shape by extrusion of the base shape along the vector,
3554         #  i.e. all the space, transfixed by the base shape during its translation
3555         #  along the vector on the given distance in 2 Ways (forward/backward).
3556         #  @param theBase Base shape to be extruded.
3557         #  @param theVec Direction of extrusion.
3558         #  @param theH Prism dimension along theVec in forward direction.
3559         #  @param theName Object name; when specified, this parameter is used
3560         #         for result publication in the study. Otherwise, if automatic
3561         #         publication is switched on, default value is used for result name.
3562         #
3563         #  @return New GEOM.GEOM_Object, containing the created prism.
3564         #
3565         #  @ref tui_creation_prism "Example"
3566         @ManageTransactions("PrimOp")
3567         def MakePrismVecH2Ways(self, theBase, theVec, theH, theName=None):
3568             """
3569             Create a shape by extrusion of the base shape along the vector,
3570             i.e. all the space, transfixed by the base shape during its translation
3571             along the vector on the given distance in 2 Ways (forward/backward).
3572
3573             Parameters:
3574                 theBase Base shape to be extruded.
3575                 theVec Direction of extrusion.
3576                 theH Prism dimension along theVec in forward direction.
3577                 theName Object name; when specified, this parameter is used
3578                         for result publication in the study. Otherwise, if automatic
3579                         publication is switched on, default value is used for result name.
3580
3581             Returns:
3582                 New GEOM.GEOM_Object, containing the created prism.
3583             """
3584             # Example: see GEOM_TestAll.py
3585             theH,Parameters = ParseParameters(theH)
3586             anObj = self.PrimOp.MakePrismVecH2Ways(theBase, theVec, theH)
3587             RaiseIfFailed("MakePrismVecH2Ways", self.PrimOp)
3588             anObj.SetParameters(Parameters)
3589             self._autoPublish(anObj, theName, "prism")
3590             return anObj
3591
3592         ## Create a shape by extrusion of the base shape along the dx, dy, dz direction
3593         #  @param theBase Base shape to be extruded.
3594         #  @param theDX, theDY, theDZ Directions of extrusion.
3595         #  @param theScaleFactor Use it to make prism with scaled second base.
3596         #                        Nagative value means not scaled second base.
3597         #  @param theName Object name; when specified, this parameter is used
3598         #         for result publication in the study. Otherwise, if automatic
3599         #         publication is switched on, default value is used for result name.
3600         #
3601         #  @return New GEOM.GEOM_Object, containing the created prism.
3602         #
3603         #  @ref tui_creation_prism "Example"
3604         @ManageTransactions("PrimOp")
3605         def MakePrismDXDYDZ(self, theBase, theDX, theDY, theDZ, theScaleFactor = -1.0, theName=None):
3606             """
3607             Create a shape by extrusion of the base shape along the dx, dy, dz direction
3608
3609             Parameters:
3610                 theBase Base shape to be extruded.
3611                 theDX, theDY, theDZ Directions of extrusion.
3612                 theScaleFactor Use it to make prism with scaled second base.
3613                                Nagative value means not scaled second base.
3614                 theName Object name; when specified, this parameter is used
3615                         for result publication in the study. Otherwise, if automatic
3616                         publication is switched on, default value is used for result name.
3617
3618             Returns:
3619                 New GEOM.GEOM_Object, containing the created prism.
3620             """
3621             # Example: see GEOM_TestAll.py
3622             anObj = None
3623             Parameters = ""
3624             if theScaleFactor > 0:
3625                 theDX,theDY,theDZ,theScaleFactor,Parameters = ParseParameters(theDX, theDY, theDZ, theScaleFactor)
3626                 anObj = self.PrimOp.MakePrismDXDYDZWithScaling(theBase, theDX, theDY, theDZ, theScaleFactor)
3627             else:
3628                 theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
3629                 anObj = self.PrimOp.MakePrismDXDYDZ(theBase, theDX, theDY, theDZ)
3630             RaiseIfFailed("MakePrismDXDYDZ", self.PrimOp)
3631             anObj.SetParameters(Parameters)
3632             self._autoPublish(anObj, theName, "prism")
3633             return anObj
3634
3635         ## Create a shape by extrusion of the base shape along the dx, dy, dz direction
3636         #  i.e. all the space, transfixed by the base shape during its translation
3637         #  along the vector on the given distance in 2 Ways (forward/backward).
3638         #  @param theBase Base shape to be extruded.
3639         #  @param theDX, theDY, theDZ Directions of extrusion.
3640         #  @param theName Object name; when specified, this parameter is used
3641         #         for result publication in the study. Otherwise, if automatic
3642         #         publication is switched on, default value is used for result name.
3643         #
3644         #  @return New GEOM.GEOM_Object, containing the created prism.
3645         #
3646         #  @ref tui_creation_prism "Example"
3647         @ManageTransactions("PrimOp")
3648         def MakePrismDXDYDZ2Ways(self, theBase, theDX, theDY, theDZ, theName=None):
3649             """
3650             Create a shape by extrusion of the base shape along the dx, dy, dz direction
3651             i.e. all the space, transfixed by the base shape during its translation
3652             along the vector on the given distance in 2 Ways (forward/backward).
3653
3654             Parameters:
3655                 theBase Base shape to be extruded.
3656                 theDX, theDY, theDZ Directions of extrusion.
3657                 theName Object name; when specified, this parameter is used
3658                         for result publication in the study. Otherwise, if automatic
3659                         publication is switched on, default value is used for result name.
3660
3661             Returns:
3662                 New GEOM.GEOM_Object, containing the created prism.
3663             """
3664             # Example: see GEOM_TestAll.py
3665             theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
3666             anObj = self.PrimOp.MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ)
3667             RaiseIfFailed("MakePrismDXDYDZ2Ways", self.PrimOp)
3668             anObj.SetParameters(Parameters)
3669             self._autoPublish(anObj, theName, "prism")
3670             return anObj
3671
3672         ## Create a shape by revolution of the base shape around the axis
3673         #  on the given angle, i.e. all the space, transfixed by the base
3674         #  shape during its rotation around the axis on the given angle.
3675         #  @param theBase Base shape to be rotated.
3676         #  @param theAxis Rotation axis.
3677         #  @param theAngle Rotation angle in radians.
3678         #  @param theName Object name; when specified, this parameter is used
3679         #         for result publication in the study. Otherwise, if automatic
3680         #         publication is switched on, default value is used for result name.
3681         #
3682         #  @return New GEOM.GEOM_Object, containing the created revolution.
3683         #
3684         #  @ref tui_creation_revolution "Example"
3685         @ManageTransactions("PrimOp")
3686         def MakeRevolution(self, theBase, theAxis, theAngle, theName=None):
3687             """
3688             Create a shape by revolution of the base shape around the axis
3689             on the given angle, i.e. all the space, transfixed by the base
3690             shape during its rotation around the axis on the given angle.
3691
3692             Parameters:
3693                 theBase Base shape to be rotated.
3694                 theAxis Rotation axis.
3695                 theAngle Rotation angle in radians.
3696                 theName Object name; when specified, this parameter is used
3697                         for result publication in the study. Otherwise, if automatic
3698                         publication is switched on, default value is used for result name.
3699
3700             Returns:
3701                 New GEOM.GEOM_Object, containing the created revolution.
3702             """
3703             # Example: see GEOM_TestAll.py
3704             theAngle,Parameters = ParseParameters(theAngle)
3705             anObj = self.PrimOp.MakeRevolutionAxisAngle(theBase, theAxis, theAngle)
3706             RaiseIfFailed("MakeRevolutionAxisAngle", self.PrimOp)
3707             anObj.SetParameters(Parameters)
3708             self._autoPublish(anObj, theName, "revolution")
3709             return anObj
3710
3711         ## Create a shape by revolution of the base shape around the axis
3712         #  on the given angle, i.e. all the space, transfixed by the base
3713         #  shape during its rotation around the axis on the given angle in
3714         #  both directions (forward/backward)
3715         #  @param theBase Base shape to be rotated.
3716         #  @param theAxis Rotation axis.
3717         #  @param theAngle Rotation angle in radians.
3718         #  @param theName Object name; when specified, this parameter is used
3719         #         for result publication in the study. Otherwise, if automatic
3720         #         publication is switched on, default value is used for result name.
3721         #
3722         #  @return New GEOM.GEOM_Object, containing the created revolution.
3723         #
3724         #  @ref tui_creation_revolution "Example"
3725         @ManageTransactions("PrimOp")
3726         def MakeRevolution2Ways(self, theBase, theAxis, theAngle, theName=None):
3727             """
3728             Create a shape by revolution of the base shape around the axis
3729             on the given angle, i.e. all the space, transfixed by the base
3730             shape during its rotation around the axis on the given angle in
3731             both directions (forward/backward).
3732
3733             Parameters:
3734                 theBase Base shape to be rotated.
3735                 theAxis Rotation axis.
3736                 theAngle Rotation angle in radians.
3737                 theName Object name; when specified, this parameter is used
3738                         for result publication in the study. Otherwise, if automatic
3739                         publication is switched on, default value is used for result name.
3740
3741             Returns:
3742                 New GEOM.GEOM_Object, containing the created revolution.
3743             """
3744             theAngle,Parameters = ParseParameters(theAngle)
3745             anObj = self.PrimOp.MakeRevolutionAxisAngle2Ways(theBase, theAxis, theAngle)
3746             RaiseIfFailed("MakeRevolutionAxisAngle2Ways", self.PrimOp)
3747             anObj.SetParameters(Parameters)
3748             self._autoPublish(anObj, theName, "revolution")
3749             return anObj
3750
3751         ## Create a face from a given set of contours.
3752         #  @param theContours either a list or a compound of edges/wires.
3753         #  @param theMinDeg a minimal degree of BSpline surface to create.
3754         #  @param theMaxDeg a maximal degree of BSpline surface to create.
3755         #  @param theTol2D a 2d tolerance to be reached.
3756         #  @param theTol3D a 3d tolerance to be reached.
3757         #  @param theNbIter a number of iteration of approximation algorithm.
3758         #  @param theMethod Kind of method to perform filling operation
3759         #         (see GEOM.filling_oper_method enum).
3760         #  @param isApprox if True, BSpline curves are generated in the process
3761         #                  of surface construction. By default it is False, that means
3762         #                  the surface is created using given curves. The usage of
3763         #                  Approximation makes the algorithm work slower, but allows
3764         #                  building the surface for rather complex cases.
3765         #  @param theName Object name; when specified, this parameter is used
3766         #         for result publication in the study. Otherwise, if automatic
3767         #         publication is switched on, default value is used for result name.
3768         #
3769         #  @return New GEOM.GEOM_Object (face), containing the created filling surface.
3770         #
3771         #  @ref tui_creation_filling "Example"
3772         @ManageTransactions("PrimOp")
3773         def MakeFilling(self, theContours, theMinDeg=2, theMaxDeg=5, theTol2D=0.0001,
3774                         theTol3D=0.0001, theNbIter=0, theMethod=GEOM.FOM_Default, isApprox=0, theName=None):
3775             """
3776             Create a face from a given set of contours.
3777
3778             Parameters:
3779                 theContours either a list or a compound of edges/wires.
3780                 theMinDeg a minimal degree of BSpline surface to create.
3781                 theMaxDeg a maximal degree of BSpline surface to create.
3782                 theTol2D a 2d tolerance to be reached.
3783                 theTol3D a 3d tolerance to be reached.
3784                 theNbIter a number of iteration of approximation algorithm.
3785                 theMethod Kind of method to perform filling operation
3786                           (see GEOM.filling_oper_method enum).
3787                 isApprox if True, BSpline curves are generated in the process
3788                          of surface construction. By default it is False, that means
3789                          the surface is created using given curves. The usage of
3790                          Approximation makes the algorithm work slower, but allows
3791                          building the surface for rather complex cases.
3792                 theName Object name; when specified, this parameter is used
3793                         for result publication in the study. Otherwise, if automatic
3794                         publication is switched on, default value is used for result name.
3795
3796             Returns:
3797                 New GEOM.GEOM_Object (face), containing the created filling surface.
3798
3799             Example of usage:
3800                 filling = geompy.MakeFilling(compound, 2, 5, 0.0001, 0.0001, 5)
3801             """
3802             # Example: see GEOM_TestAll.py
3803             theMinDeg,theMaxDeg,theTol2D,theTol3D,theNbIter,Parameters = ParseParameters(theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter)
3804             anObj = self.PrimOp.MakeFilling(ToList(theContours), theMinDeg, theMaxDeg,
3805                                             theTol2D, theTol3D, theNbIter,
3806                                             theMethod, isApprox)
3807             RaiseIfFailed("MakeFilling", self.PrimOp)
3808             anObj.SetParameters(Parameters)
3809             self._autoPublish(anObj, theName, "filling")
3810             return anObj
3811
3812
3813         ## Create a face from a given set of contours.
3814         #  This method corresponds to MakeFilling() with isApprox=True.
3815         #  @param theContours either a list or a compound of edges/wires.
3816         #  @param theMinDeg a minimal degree of BSpline surface to create.
3817         #  @param theMaxDeg a maximal degree of BSpline surface to create.
3818         #  @param theTol3D a 3d tolerance to be reached.
3819         #  @param theName Object name; when specified, this parameter is used
3820         #         for result publication in the study. Otherwise, if automatic
3821         #         publication is switched on, default value is used for result name.
3822         #
3823         #  @return New GEOM.GEOM_Object (face), containing the created filling surface.
3824         #
3825         #  @ref tui_creation_filling "Example"
3826         @ManageTransactions("PrimOp")
3827         def MakeFillingNew(self, theContours, theMinDeg=2, theMaxDeg=5, theTol3D=0.0001, theName=None):
3828             """
3829             Create a filling from the given compound of contours.
3830             This method corresponds to MakeFilling() with isApprox=True.
3831
3832             Parameters:
3833                 theContours either a list or a compound of edges/wires.
3834                 theMinDeg a minimal degree of BSpline surface to create.
3835                 theMaxDeg a maximal degree of BSpline surface to create.
3836                 theTol3D a 3d tolerance to be reached.
3837                 theName Object name; when specified, this parameter is used
3838                         for result publication in the study. Otherwise, if automatic
3839                         publication is switched on, default value is used for result name.
3840
3841             Returns:
3842                 New GEOM.GEOM_Object (face), containing the created filling surface.
3843
3844             Example of usage:
3845                 filling = geompy.MakeFillingNew(compound, 2, 5, 0.0001)
3846             """
3847             # Example: see GEOM_TestAll.py
3848             theMinDeg,theMaxDeg,theTol3D,Parameters = ParseParameters(theMinDeg, theMaxDeg, theTol3D)
3849             anObj = self.PrimOp.MakeFilling(ToList(theContours), theMinDeg, theMaxDeg,
3850                                             0, theTol3D, 0, GEOM.FOM_Default, True)
3851             RaiseIfFailed("MakeFillingNew", self.PrimOp)
3852             anObj.SetParameters(Parameters)
3853             self._autoPublish(anObj, theName, "filling")
3854             return anObj
3855
3856         ## Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
3857         #  @param theSeqSections - set of specified sections.
3858         #  @param theModeSolid - mode defining building solid or shell
3859         #  @param thePreci - precision 3D used for smoothing
3860         #  @param theRuled - mode defining type of the result surfaces (ruled or smoothed).
3861         #  @param theName Object name; when specified, this parameter is used
3862         #         for result publication in the study. Otherwise, if automatic
3863         #         publication is switched on, default value is used for result name.
3864         #
3865         #  @return New GEOM.GEOM_Object, containing the created shell or solid.
3866         #
3867         #  @ref swig_todo "Example"
3868         @ManageTransactions("PrimOp")
3869         def MakeThruSections(self, theSeqSections, theModeSolid, thePreci, theRuled, theName=None):
3870             """
3871             Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
3872
3873             Parameters:
3874                 theSeqSections - set of specified sections.
3875                 theModeSolid - mode defining building solid or shell
3876                 thePreci - precision 3D used for smoothing
3877                 theRuled - mode defining type of the result surfaces (ruled or smoothed).
3878                 theName Object name; when specified, this parameter is used
3879                         for result publication in the study. Otherwise, if automatic
3880                         publication is switched on, default value is used for result name.
3881
3882             Returns:
3883                 New GEOM.GEOM_Object, containing the created shell or solid.
3884             """
3885             # Example: see GEOM_TestAll.py
3886             anObj = self.PrimOp.MakeThruSections(theSeqSections,theModeSolid,thePreci,theRuled)
3887             RaiseIfFailed("MakeThruSections", self.PrimOp)
3888             self._autoPublish(anObj, theName, "filling")
3889             return anObj
3890
3891         ## Create a shape by extrusion of the base shape along
3892         #  the path shape. The path shape can be a wire or an edge. It is
3893         #  possible to generate groups along with the result by means of
3894         #  setting the flag \a IsGenerateGroups.<BR>
3895         #  If \a thePath is a closed edge or wire and \a IsGenerateGroups is
3896         #  set, an error is occurred. If \a thePath is not closed edge/wire,
3897         #  the following groups are returned:
3898         #  - If \a theBase is unclosed edge or wire: "Down", "Up", "Side1",
3899         #    "Side2";
3900         #  - If \a theBase is closed edge or wire, face or shell: "Down", "Up",
3901         #    "Other".
3902         #  .
3903         #  "Down" and "Up" groups contain:
3904         #  - Edges if \a theBase is edge or wire;
3905         #  - Faces if \a theBase is face or shell.<BR>
3906         #  .
3907         #  "Side1" and "Side2" groups contain edges generated from the first
3908         #  and last vertices of \a theBase. The first and last vertices are
3909         #  determined taking into account edge/wire orientation.<BR>
3910         #  "Other" group represents faces generated from the bounding edges of
3911         #  \a theBase.
3912         #
3913         #  @param theBase Base shape to be extruded.
3914         #  @param thePath Path shape to extrude the base shape along it.
3915         #  @param IsGenerateGroups flag that tells if it is necessary to
3916         #         create groups. It is equal to False by default.
3917         #  @param theName Object name; when specified, this parameter is used
3918         #         for result publication in the study. Otherwise, if automatic
3919         #         publication is switched on, default value is used for result name.
3920         #
3921         #  @return New GEOM.GEOM_Object, containing the created pipe if 
3922         #          \a IsGenerateGroups is not set. Otherwise it returns a
3923         #          list of GEOM.GEOM_Object. Its first element is the created pipe, the
3924         #          remaining ones are created groups.
3925         #
3926         #  @ref tui_creation_pipe "Example"
3927         @ManageTransactions("PrimOp")
3928         def MakePipe(self, theBase, thePath,
3929                      IsGenerateGroups=False, theName=None):
3930             """
3931             Create a shape by extrusion of the base shape along
3932             the path shape. The path shape can be a wire or an edge. It is
3933             possible to generate groups along with the result by means of
3934             setting the flag IsGenerateGroups.
3935             If thePath is a closed edge or wire and IsGenerateGroups is
3936             set, an error is occurred. If thePath is not closed edge/wire,
3937             the following groups are returned:
3938             - If theBase is unclosed edge or wire: "Down", "Up", "Side1",
3939               "Side2";
3940             - If theBase is closed edge or wire, face or shell: "Down", "Up",
3941               "Other".
3942             "Down" and "Up" groups contain:
3943             - Edges if theBase is edge or wire;
3944             - Faces if theBase is face or shell.
3945             "Side1" and "Side2" groups contain edges generated from the first
3946             and last vertices of theBase. The first and last vertices are
3947             determined taking into account edge/wire orientation.
3948             "Other" group represents faces generated from the bounding edges of
3949             theBase.
3950
3951             Parameters:
3952                 theBase Base shape to be extruded.
3953                 thePath Path shape to extrude the base shape along it.
3954                 IsGenerateGroups flag that tells if it is necessary to
3955                         create groups. It is equal to False by default.
3956                 theName Object name; when specified, this parameter is used
3957                         for result publication in the study. Otherwise, if automatic
3958                         publication is switched on, default value is used for result name.
3959
3960             Returns:
3961                 New GEOM.GEOM_Object, containing the created pipe if 
3962                 IsGenerateGroups is not set. Otherwise it returns a
3963                 list of GEOM.GEOM_Object. Its first element is the created pipe, the
3964                 remaining ones are created groups.
3965             """
3966             # Example: see GEOM_TestAll.py
3967             aList = self.PrimOp.MakePipe(theBase, thePath, IsGenerateGroups)
3968             RaiseIfFailed("MakePipe", self.PrimOp)
3969
3970             if IsGenerateGroups:
3971               self._autoPublish(aList, theName, "pipe")
3972               return aList
3973
3974             self._autoPublish(aList[0], theName, "pipe")
3975             return aList[0]
3976
3977         ## Create a shape by extrusion of the profile shape along
3978         #  the path shape. The path shape can be a wire or an edge.
3979         #  the several profiles can be specified in the several locations of path.
3980         #  It is possible to generate groups along with the result by means of
3981         #  setting the flag \a IsGenerateGroups. For detailed information on
3982         #  groups that can be created please see the method MakePipe().
3983         #  @param theSeqBases - list of  Bases shape to be extruded.
3984         #  @param theLocations - list of locations on the path corresponding
3985         #                        specified list of the Bases shapes. Number of locations
3986         #                        should be equal to number of bases or list of locations can be empty.
3987         #  @param thePath - Path shape to extrude the base shape along it.
3988         #  @param theWithContact - the mode defining that the section is translated to be in
3989         #                          contact with the spine.
3990         #  @param theWithCorrection - defining that the section is rotated to be
3991         #                             orthogonal to the spine tangent in the correspondent point
3992         #  @param IsGenerateGroups - flag that tells if it is necessary to
3993         #                          create groups. It is equal to False by default.
3994         #  @param theName Object name; when specified, this parameter is used
3995         #         for result publication in the study. Otherwise, if automatic
3996         #         publication is switched on, default value is used for result name.
3997         #
3998         #  @return New GEOM.GEOM_Object, containing the created pipe if 
3999         #          \a IsGenerateGroups is not set. Otherwise it returns new
4000         #          GEOM.ListOfGO. Its first element is the created pipe, the
4001         #          remaining ones are created groups.
4002         #
4003         #  @ref tui_creation_pipe_with_diff_sec "Example"
4004         @ManageTransactions("PrimOp")
4005         def MakePipeWithDifferentSections(self, theSeqBases,
4006                                           theLocations, thePath,
4007                                           theWithContact, theWithCorrection,
4008                                           IsGenerateGroups=False, theName=None):
4009             """
4010             Create a shape by extrusion of the profile shape along
4011             the path shape. The path shape can be a wire or an edge.
4012             the several profiles can be specified in the several locations of path.
4013             It is possible to generate groups along with the result by means of
4014             setting the flag IsGenerateGroups. For detailed information on
4015             groups that can be created please see the method geompy.MakePipe().
4016
4017             Parameters:
4018                 theSeqBases - list of  Bases shape to be extruded.
4019                 theLocations - list of locations on the path corresponding
4020                                specified list of the Bases shapes. Number of locations
4021                                should be equal to number of bases or list of locations can be empty.
4022                 thePath - Path shape to extrude the base shape along it.
4023                 theWithContact - the mode defining that the section is translated to be in
4024                                  contact with the spine(0/1)
4025                 theWithCorrection - defining that the section is rotated to be
4026                                     orthogonal to the spine tangent in the correspondent point (0/1)
4027                 IsGenerateGroups - flag that tells if it is necessary to
4028                                  create groups. It is equal to False by default.
4029                 theName Object name; when specified, this parameter is used
4030                         for result publication in the study. Otherwise, if automatic
4031                         publication is switched on, default value is used for result name.
4032
4033             Returns:
4034                 New GEOM.GEOM_Object, containing the created pipe if 
4035                 IsGenerateGroups is not set. Otherwise it returns new
4036                 GEOM.ListOfGO. Its first element is the created pipe, the
4037                 remaining ones are created groups.
4038             """
4039             aList = self.PrimOp.MakePipeWithDifferentSections(theSeqBases,
4040                                                               theLocations, thePath,
4041                                                               theWithContact, theWithCorrection,
4042                                                               False, IsGenerateGroups)
4043             RaiseIfFailed("MakePipeWithDifferentSections", self.PrimOp)
4044
4045             if IsGenerateGroups:
4046               self._autoPublish(aList, theName, "pipe")
4047               return aList
4048
4049             self._autoPublish(aList[0], theName, "pipe")
4050             return aList[0]
4051
4052         ## Create a shape by extrusion of the profile shape along
4053         #  the path shape. This function is a version of
4054         #  MakePipeWithDifferentSections() with the same parameters, except
4055         #  eliminated theWithContact and theWithCorrection. So it is
4056         #  possible to find the description of all parameters is in this
4057         #  method. The difference is that this method performs the operation
4058         #  step by step, i.e. it creates pipes between each pair of neighbor
4059         #  sections and fuses them into a single shape.
4060         #
4061         #  @ref tui_creation_pipe_with_diff_sec "Example"
4062         @ManageTransactions("PrimOp")
4063         def MakePipeWithDifferentSectionsBySteps(self, theSeqBases,
4064                                                  theLocations, thePath,
4065                                                  IsGenerateGroups=False, theName=None):
4066             """
4067             Create a shape by extrusion of the profile shape along
4068             the path shape. This function is a version of
4069             MakePipeWithDifferentSections() with the same parameters, except
4070             eliminated theWithContact and theWithCorrection. So it is
4071             possible to find the description of all parameters is in this
4072             method. The difference is that this method performs the operation
4073             step by step, i.e. it creates pipes between each pair of neighbor
4074             sections and fuses them into a single shape.
4075             """
4076             aList = self.PrimOp.MakePipeWithDifferentSections(theSeqBases,
4077                                                               theLocations, thePath,
4078                                                               False, False,
4079                                                               True, IsGenerateGroups)
4080             RaiseIfFailed("MakePipeWithDifferentSectionsBySteps", self.PrimOp)
4081
4082             if IsGenerateGroups:
4083               self._autoPublish(aList, theName, "pipe")
4084               return aList
4085
4086             self._autoPublish(aList[0], theName, "pipe")
4087             return aList[0]
4088
4089         ## Create a shape by extrusion of the profile shape along
4090         #  the path shape. The path shape can be a wire or an edge.
4091         #  the several profiles can be specified in the several locations of path.
4092         #  It is possible to generate groups along with the result by means of
4093         #  setting the flag \a IsGenerateGroups. For detailed information on
4094         #  groups that can be created please see the method MakePipe().
4095         #  @param theSeqBases - list of  Bases shape to be extruded. Base shape must be
4096         #                       shell or face. If number of faces in neighbour sections
4097         #                       aren't coincided result solid between such sections will
4098         #                       be created using external boundaries of this shells.
4099         #  @param theSeqSubBases - list of corresponding sub-shapes of section shapes.
4100         #                          This list is used for searching correspondences between
4101         #                          faces in the sections. Size of this list must be equal
4102         #                          to size of list of base shapes.
4103         #  @param theLocations - list of locations on the path corresponding
4104         #                        specified list of the Bases shapes. Number of locations
4105         #                        should be equal to number of bases. First and last
4106         #                        locations must be coincided with first and last vertexes
4107         #                        of path correspondingly.
4108         #  @param thePath - Path shape to extrude the base shape along it.
4109         #  @param theWithContact - the mode defining that the section is translated to be in
4110         #                          contact with the spine.
4111         #  @param theWithCorrection - defining that the section is rotated to be
4112         #                             orthogonal to the spine tangent in the correspondent point
4113         #  @param IsGenerateGroups - flag that tells if it is necessary to
4114         #                          create groups. It is equal to False by default.
4115         #  @param theName Object name; when specified, this parameter is used
4116         #         for result publication in the study. Otherwise, if automatic
4117         #         publication is switched on, default value is used for result name.
4118         #
4119         #  @return New GEOM.GEOM_Object, containing the created solids if 
4120         #          \a IsGenerateGroups is not set. Otherwise it returns new
4121         #          GEOM.ListOfGO. Its first element is the created solids, the
4122         #          remaining ones are created groups.
4123         #
4124         #  @ref tui_creation_pipe_with_shell_sec "Example"
4125         @ManageTransactions("PrimOp")
4126         def MakePipeWithShellSections(self, theSeqBases, theSeqSubBases,
4127                                       theLocations, thePath,
4128                                       theWithContact, theWithCorrection,
4129                                       IsGenerateGroups=False, theName=None):
4130             """
4131             Create a shape by extrusion of the profile shape along
4132             the path shape. The path shape can be a wire or an edge.
4133             the several profiles can be specified in the several locations of path.
4134             It is possible to generate groups along with the result by means of
4135             setting the flag IsGenerateGroups. For detailed information on
4136             groups that can be created please see the method geompy.MakePipe().
4137
4138             Parameters:
4139                 theSeqBases - list of  Bases shape to be extruded. Base shape must be
4140                               shell or face. If number of faces in neighbour sections
4141                               aren't coincided result solid between such sections will
4142                               be created using external boundaries of this shells.
4143                 theSeqSubBases - list of corresponding sub-shapes of section shapes.
4144                                  This list is used for searching correspondences between
4145                                  faces in the sections. Size of this list must be equal
4146                                  to size of list of base shapes.
4147                 theLocations - list of locations on the path corresponding
4148                                specified list of the Bases shapes. Number of locations
4149                                should be equal to number of bases. First and last
4150                                locations must be coincided with first and last vertexes
4151                                of path correspondingly.
4152                 thePath - Path shape to extrude the base shape along it.
4153                 theWithContact - the mode defining that the section is translated to be in
4154                                  contact with the spine (0/1)
4155                 theWithCorrection - defining that the section is rotated to be
4156                                     orthogonal to the spine tangent in the correspondent point (0/1)
4157                 IsGenerateGroups - flag that tells if it is necessary to
4158                                  create groups. It is equal to False by default.
4159                 theName Object name; when specified, this parameter is used
4160                         for result publication in the study. Otherwise, if automatic
4161                         publication is switched on, default value is used for result name.
4162
4163             Returns:
4164                 New GEOM.GEOM_Object, containing the created solids if 
4165                 IsGenerateGroups is not set. Otherwise it returns new
4166                 GEOM.ListOfGO. Its first element is the created solids, the
4167                 remaining ones are created groups.
4168             """
4169             aList = self.PrimOp.MakePipeWithShellSections(theSeqBases, theSeqSubBases,
4170                                                           theLocations, thePath,
4171                                                           theWithContact, theWithCorrection,
4172                                                           IsGenerateGroups)
4173             RaiseIfFailed("MakePipeWithShellSections", self.PrimOp)
4174
4175             if IsGenerateGroups:
4176               self._autoPublish(aList, theName, "pipe")
4177               return aList
4178
4179             self._autoPublish(aList[0], theName, "pipe")
4180             return aList[0]
4181
4182         ## Create a shape by extrusion of the profile shape along
4183         #  the path shape. This function is used only for debug pipe
4184         #  functionality - it is a version of function MakePipeWithShellSections()
4185         #  which give a possibility to receive information about
4186         #  creating pipe between each pair of sections step by step.
4187         @ManageTransactions("PrimOp")
4188         def MakePipeWithShellSectionsBySteps(self, theSeqBases, theSeqSubBases,
4189                                              theLocations, thePath,
4190                                              theWithContact, theWithCorrection,
4191                                              IsGenerateGroups=False, theName=None):
4192             """
4193             Create a shape by extrusion of the profile shape along
4194             the path shape. This function is used only for debug pipe
4195             functionality - it is a version of previous function
4196             geompy.MakePipeWithShellSections() which give a possibility to
4197             receive information about creating pipe between each pair of
4198             sections step by step.
4199             """
4200             res = []
4201             nbsect = len(theSeqBases)
4202             nbsubsect = len(theSeqSubBases)
4203             #print "nbsect = ",nbsect
4204             for i in range(1,nbsect):
4205                 #print "  i = ",i
4206                 tmpSeqBases = [ theSeqBases[i-1], theSeqBases[i] ]
4207                 tmpLocations = [ theLocations[i-1], theLocations[i] ]
4208                 tmpSeqSubBases = []
4209                 if nbsubsect>0: tmpSeqSubBases = [ theSeqSubBases[i-1], theSeqSubBases[i] ]
4210                 aList = self.PrimOp.MakePipeWithShellSections(tmpSeqBases, tmpSeqSubBases,
4211                                                               tmpLocations, thePath,
4212                                                               theWithContact, theWithCorrection,
4213                                                               IsGenerateGroups)
4214                 if self.PrimOp.IsDone() == 0:
4215                     print "Problems with pipe creation between ",i," and ",i+1," sections"
4216                     RaiseIfFailed("MakePipeWithShellSections", self.PrimOp)
4217                     break
4218                 else:
4219                     print "Pipe between ",i," and ",i+1," sections is OK"
4220                     res.append(aList[0])
4221                     pass
4222                 pass
4223
4224             resc = self.MakeCompound(res)
4225             #resc = self.MakeSewing(res, 0.001)
4226             #print "resc: ",resc
4227             self._autoPublish(resc, theName, "pipe")
4228             return resc
4229
4230         ## Create solids between given sections.
4231         #  It is possible to generate groups along with the result by means of
4232         #  setting the flag \a IsGenerateGroups. For detailed information on
4233         #  groups that can be created please see the method MakePipe().
4234         #  @param theSeqBases - list of sections (shell or face).
4235         #  @param theLocations - list of corresponding vertexes
4236         #  @param IsGenerateGroups - flag that tells if it is necessary to
4237         #         create groups. It is equal to False by default.
4238         #  @param theName Object name; when specified, this parameter is used
4239         #         for result publication in the study. Otherwise, if automatic
4240         #         publication is switched on, default value is used for result name.
4241         #
4242         #  @return New GEOM.GEOM_Object, containing the created solids if 
4243         #          \a IsGenerateGroups is not set. Otherwise it returns new
4244         #          GEOM.ListOfGO. Its first element is the created solids, the
4245         #          remaining ones are created groups.
4246         #
4247         #  @ref tui_creation_pipe_without_path "Example"
4248         @ManageTransactions("PrimOp")
4249         def MakePipeShellsWithoutPath(self, theSeqBases, theLocations,
4250                                       IsGenerateGroups=False, theName=None):
4251             """
4252             Create solids between given sections.
4253             It is possible to generate groups along with the result by means of
4254             setting the flag IsGenerateGroups. For detailed information on
4255             groups that can be created please see the method geompy.MakePipe().
4256
4257             Parameters:
4258                 theSeqBases - list of sections (shell or face).
4259                 theLocations - list of corresponding vertexes
4260                 IsGenerateGroups - flag that tells if it is necessary to
4261                                  create groups. It is equal to False by default.
4262                 theName Object name; when specified, this parameter is used
4263                         for result publication in the study. Otherwise, if automatic
4264                         publication is switched on, default value is used for result name.
4265
4266             Returns:
4267                 New GEOM.GEOM_Object, containing the created solids if 
4268                 IsGenerateGroups is not set. Otherwise it returns new
4269                 GEOM.ListOfGO. Its first element is the created solids, the
4270                 remaining ones are created groups.
4271             """
4272             aList = self.PrimOp.MakePipeShellsWithoutPath(theSeqBases, theLocations,
4273                                                           IsGenerateGroups)
4274             RaiseIfFailed("MakePipeShellsWithoutPath", self.PrimOp)
4275
4276             if IsGenerateGroups:
4277               self._autoPublish(aList, theName, "pipe")
4278               return aList
4279
4280             self._autoPublish(aList[0], theName, "pipe")
4281             return aList[0]
4282
4283         ## Create a shape by extrusion of the base shape along
4284         #  the path shape with constant bi-normal direction along the given vector.
4285         #  The path shape can be a wire or an edge.
4286         #  It is possible to generate groups along with the result by means of
4287         #  setting the flag \a IsGenerateGroups. For detailed information on
4288         #  groups that can be created please see the method MakePipe().
4289         #  @param theBase Base shape to be extruded.
4290         #  @param thePath Path shape to extrude the base shape along it.
4291         #  @param theVec Vector defines a constant binormal direction to keep the
4292         #                same angle between the direction and the sections
4293         #                along the sweep surface.
4294         #  @param IsGenerateGroups flag that tells if it is necessary to
4295         #         create groups. It is equal to False by default.
4296         #  @param theName Object name; when specified, this parameter is used
4297         #         for result publication in the study. Otherwise, if automatic
4298         #         publication is switched on, default value is used for result name.
4299         #
4300         #  @return New GEOM.GEOM_Object, containing the created pipe if 
4301         #          \a IsGenerateGroups is not set. Otherwise it returns new
4302         #          GEOM.ListOfGO. Its first element is the created pipe, the
4303         #          remaining ones are created groups.
4304         #
4305         #  @ref tui_creation_pipe "Example"
4306         @ManageTransactions("PrimOp")
4307         def MakePipeBiNormalAlongVector(self, theBase, thePath, theVec,
4308                                         IsGenerateGroups=False, theName=None):
4309             """
4310             Create a shape by extrusion of the base shape along
4311             the path shape with constant bi-normal direction along the given vector.
4312             The path shape can be a wire or an edge.
4313             It is possible to generate groups along with the result by means of
4314             setting the flag IsGenerateGroups. For detailed information on
4315             groups that can be created please see the method geompy.MakePipe().
4316
4317             Parameters:
4318                 theBase Base shape to be extruded.
4319                 thePath Path shape to extrude the base shape along it.
4320                 theVec Vector defines a constant binormal direction to keep the
4321                        same angle between the direction and the sections
4322                        along the sweep surface.
4323                 IsGenerateGroups flag that tells if it is necessary to
4324                                  create groups. It is equal to False by default.
4325                 theName Object name; when specified, this parameter is used
4326                         for result publication in the study. Otherwise, if automatic
4327                         publication is switched on, default value is used for result name.
4328
4329             Returns:
4330                 New GEOM.GEOM_Object, containing the created pipe if 
4331                 IsGenerateGroups is not set. Otherwise it returns new
4332                 GEOM.ListOfGO. Its first element is the created pipe, the
4333                 remaining ones are created groups.
4334             """
4335             # Example: see GEOM_TestAll.py
4336             aList = self.PrimOp.MakePipeBiNormalAlongVector(theBase, thePath,
4337                           theVec, IsGenerateGroups)
4338             RaiseIfFailed("MakePipeBiNormalAlongVector", self.PrimOp)
4339
4340             if IsGenerateGroups:
4341               self._autoPublish(aList, theName, "pipe")
4342               return aList
4343
4344             self._autoPublish(aList[0], theName, "pipe")
4345             return aList[0]
4346
4347         ## Makes a thick solid from a shape. If the input is a surface shape
4348         #  (face or shell) the result is a thick solid. If an input shape is
4349         #  a solid the result is a hollowed solid with removed faces.
4350         #  @param theShape Face or Shell to get thick solid or solid to get
4351         #         hollowed solid.
4352         #  @param theThickness Thickness of the resulting solid
4353         #  @param theFacesIDs the list of face IDs to be removed from the
4354         #         result. It is ignored if \a theShape is a face or a shell.
4355         #         It is empty by default. 
4356         #  @param theInside If true the thickness is applied towards inside
4357         #  @param theName Object name; when specified, this parameter is used
4358         #         for result publication in the study. Otherwise, if automatic
4359         #         publication is switched on, default value is used for result name.
4360         #
4361         #  @return New GEOM.GEOM_Object, containing the created solid
4362         #
4363         #  @ref tui_creation_thickness "Example"
4364         @ManageTransactions("PrimOp")
4365         def MakeThickSolid(self, theShape, theThickness,
4366                            theFacesIDs=[], theInside=False, theName=None):
4367             """
4368             Make a thick solid from a shape. If the input is a surface shape
4369             (face or shell) the result is a thick solid. If an input shape is
4370             a solid the result is a hollowed solid with removed faces.
4371
4372             Parameters:
4373                  theShape Face or Shell to get thick solid or solid to get
4374                           hollowed solid.
4375                  theThickness Thickness of the resulting solid
4376                  theFacesIDs the list of face IDs to be removed from the
4377                           result. It is ignored if theShape is a face or a
4378                           shell. It is empty by default. 
4379                  theInside If true the thickness is applied towards inside
4380                  theName Object name; when specified, this parameter is used
4381                          for result publication in the study. Otherwise, if automatic
4382                          publication is switched on, default value is used for result name.
4383
4384             Returns:
4385                 New GEOM.GEOM_Object, containing the created solid
4386             """
4387             # Example: see GEOM_TestAll.py
4388             theThickness,Parameters = ParseParameters(theThickness)
4389             anObj = self.PrimOp.MakeThickening(theShape, theFacesIDs,
4390                                                theThickness, True, theInside)
4391             RaiseIfFailed("MakeThickSolid", self.PrimOp)
4392             anObj.SetParameters(Parameters)
4393             self._autoPublish(anObj, theName, "thickSolid")
4394             return anObj
4395
4396
4397         ## Modifies a shape to make it a thick solid. If the input is a surface
4398         #  shape (face or shell) the result is a thick solid. If an input shape
4399         #  is a solid the result is a hollowed solid with removed faces.
4400         #  @param theShape Face or Shell to get thick solid or solid to get
4401         #         hollowed solid.
4402         #  @param theThickness Thickness of the resulting solid
4403         #  @param theFacesIDs the list of face IDs to be removed from the
4404         #         result. It is ignored if \a theShape is a face or a shell.
4405         #         It is empty by default. 
4406         #  @param theInside If true the thickness is applied towards inside
4407         #
4408         #  @return The modified shape
4409         #
4410         #  @ref tui_creation_thickness "Example"
4411         @ManageTransactions("PrimOp")
4412         def Thicken(self, theShape, theThickness, theFacesIDs=[], theInside=False):
4413             """
4414             Modifies a shape to make it a thick solid. If the input is a
4415             surface shape (face or shell) the result is a thick solid. If
4416             an input shape is a solid the result is a hollowed solid with
4417             removed faces.
4418
4419             Parameters:
4420                 theShape Face or Shell to get thick solid or solid to get
4421                          hollowed solid.
4422                 theThickness Thickness of the resulting solid
4423                 theFacesIDs the list of face IDs to be removed from the
4424                          result. It is ignored if \a theShape is a face or
4425                          a shell. It is empty by default. 
4426                 theInside If true the thickness is applied towards inside
4427
4428             Returns:
4429                 The modified shape
4430             """
4431             # Example: see GEOM_TestAll.py
4432             theThickness,Parameters = ParseParameters(theThickness)
4433             anObj = self.PrimOp.MakeThickening(theShape, theFacesIDs,
4434                                                theThickness, False, theInside)
4435             RaiseIfFailed("Thicken", self.PrimOp)
4436             anObj.SetParameters(Parameters)
4437             return anObj
4438
4439         ## Build a middle path of a pipe-like shape.
4440         #  The path shape can be a wire or an edge.
4441         #  @param theShape It can be closed or unclosed pipe-like shell
4442         #                  or a pipe-like solid.
4443         #  @param theBase1, theBase2 Two bases of the supposed pipe. This
4444         #                            should be wires or faces of theShape.
4445         #  @param theName Object name; when specified, this parameter is used
4446         #         for result publication in the study. Otherwise, if automatic
4447         #         publication is switched on, default value is used for result name.
4448         #
4449         #  @note It is not assumed that exact or approximate copy of theShape
4450         #        can be obtained by applying existing Pipe operation on the
4451         #        resulting "Path" wire taking theBase1 as the base - it is not
4452         #        always possible; though in some particular cases it might work
4453         #        it is not guaranteed. Thus, RestorePath function should not be
4454         #        considered as an exact reverse operation of the Pipe.
4455         #
4456         #  @return New GEOM.GEOM_Object, containing an edge or wire that represent
4457         #                                source pipe's "path".
4458         #
4459         #  @ref tui_creation_pipe_path "Example"
4460         @ManageTransactions("PrimOp")
4461         def RestorePath (self, theShape, theBase1, theBase2, theName=None):
4462             """
4463             Build a middle path of a pipe-like shape.
4464             The path shape can be a wire or an edge.
4465
4466             Parameters:
4467                 theShape It can be closed or unclosed pipe-like shell
4468                          or a pipe-like solid.
4469                 theBase1, theBase2 Two bases of the supposed pipe. This
4470                                    should be wires or faces of theShape.
4471                 theName Object name; when specified, this parameter is used
4472                         for result publication in the study. Otherwise, if automatic
4473                         publication is switched on, default value is used for result name.
4474
4475             Returns:
4476                 New GEOM_Object, containing an edge or wire that represent
4477                                  source pipe's path.
4478             """
4479             anObj = self.PrimOp.RestorePath(theShape, theBase1, theBase2)
4480             RaiseIfFailed("RestorePath", self.PrimOp)
4481             self._autoPublish(anObj, theName, "path")
4482             return anObj
4483
4484         ## Build a middle path of a pipe-like shape.
4485         #  The path shape can be a wire or an edge.
4486         #  @param theShape It can be closed or unclosed pipe-like shell
4487         #                  or a pipe-like solid.
4488         #  @param listEdges1, listEdges2 Two bases of the supposed pipe. This
4489         #                                should be lists of edges of theShape.
4490         #  @param theName Object name; when specified, this parameter is used
4491         #         for result publication in the study. Otherwise, if automatic
4492         #         publication is switched on, default value is used for result name.
4493         #
4494         #  @note It is not assumed that exact or approximate copy of theShape
4495         #        can be obtained by applying existing Pipe operation on the
4496         #        resulting "Path" wire taking theBase1 as the base - it is not
4497         #        always possible; though in some particular cases it might work
4498         #        it is not guaranteed. Thus, RestorePath function should not be
4499         #        considered as an exact reverse operation of the Pipe.
4500         #
4501         #  @return New GEOM.GEOM_Object, containing an edge or wire that represent
4502         #                                source pipe's "path".
4503         #
4504         #  @ref tui_creation_pipe_path "Example"
4505         @ManageTransactions("PrimOp")
4506         def RestorePathEdges (self, theShape, listEdges1, listEdges2, theName=None):
4507             """
4508             Build a middle path of a pipe-like shape.
4509             The path shape can be a wire or an edge.
4510
4511             Parameters:
4512                 theShape It can be closed or unclosed pipe-like shell
4513                          or a pipe-like solid.
4514                 listEdges1, listEdges2 Two bases of the supposed pipe. This
4515                                        should be lists of edges of theShape.
4516                 theName Object name; when specified, this parameter is used
4517                         for result publication in the study. Otherwise, if automatic
4518                         publication is switched on, default value is used for result name.
4519
4520             Returns:
4521                 New GEOM_Object, containing an edge or wire that represent
4522                                  source pipe's path.
4523             """
4524             anObj = self.PrimOp.RestorePathEdges(theShape, listEdges1, listEdges2)
4525             RaiseIfFailed("RestorePath", self.PrimOp)
4526             self._autoPublish(anObj, theName, "path")
4527             return anObj
4528
4529         # end of l3_complex
4530         ## @}
4531
4532         ## @addtogroup l3_basic_go
4533         ## @{
4534
4535         ## Create a linear edge with specified ends.
4536         #  @param thePnt1 Point for the first end of edge.
4537         #  @param thePnt2 Point for the second end of edge.
4538         #  @param theName Object name; when specified, this parameter is used
4539         #         for result publication in the study. Otherwise, if automatic
4540         #         publication is switched on, default value is used for result name.
4541         #
4542         #  @return New GEOM.GEOM_Object, containing the created edge.
4543         #
4544         #  @ref tui_creation_edge "Example"
4545         @ManageTransactions("ShapesOp")
4546         def MakeEdge(self, thePnt1, thePnt2, theName=None):
4547             """
4548             Create a linear edge with specified ends.
4549
4550             Parameters:
4551                 thePnt1 Point for the first end of edge.
4552                 thePnt2 Point for the second end of edge.
4553                 theName Object name; when specified, this parameter is used
4554                         for result publication in the study. Otherwise, if automatic
4555                         publication is switched on, default value is used for result name.
4556
4557             Returns:
4558                 New GEOM.GEOM_Object, containing the created edge.
4559             """
4560             # Example: see GEOM_TestAll.py
4561             anObj = self.ShapesOp.MakeEdge(thePnt1, thePnt2)
4562             RaiseIfFailed("MakeEdge", self.ShapesOp)
4563             self._autoPublish(anObj, theName, "edge")
4564             return anObj
4565
4566         ## Create a new edge, corresponding to the given length on the given curve.
4567         #  @param theRefCurve The referenced curve (edge).
4568         #  @param theLength Length on the referenced curve. It can be negative.
4569         #  @param theStartPoint Any point can be selected for it, the new edge will begin
4570         #                       at the end of \a theRefCurve, close to the selected point.
4571         #                       If None, start from the first point of \a theRefCurve.
4572         #  @param theName Object name; when specified, this parameter is used
4573         #         for result publication in the study. Otherwise, if automatic
4574         #         publication is switched on, default value is used for result name.
4575         #
4576         #  @return New GEOM.GEOM_Object, containing the created edge.
4577         #
4578         #  @ref tui_creation_edge "Example"
4579         @ManageTransactions("ShapesOp")
4580         def MakeEdgeOnCurveByLength(self, theRefCurve, theLength, theStartPoint = None, theName=None):
4581             """
4582             Create a new edge, corresponding to the given length on the given curve.
4583
4584             Parameters:
4585                 theRefCurve The referenced curve (edge).
4586                 theLength Length on the referenced curve. It can be negative.
4587                 theStartPoint Any point can be selected for it, the new edge will begin
4588                               at the end of theRefCurve, close to the selected point.
4589                               If None, start from the first point of theRefCurve.
4590                 theName Object name; when specified, this parameter is used
4591                         for result publication in the study. Otherwise, if automatic
4592                         publication is switched on, default value is used for result name.
4593
4594             Returns:
4595                 New GEOM.GEOM_Object, containing the created edge.
4596             """
4597             # Example: see GEOM_TestAll.py
4598             theLength, Parameters = ParseParameters(theLength)
4599             anObj = self.ShapesOp.MakeEdgeOnCurveByLength(theRefCurve, theLength, theStartPoint)
4600             RaiseIfFailed("MakeEdgeOnCurveByLength", self.ShapesOp)
4601             anObj.SetParameters(Parameters)
4602             self._autoPublish(anObj, theName, "edge")
4603             return anObj
4604
4605         ## Create an edge from specified wire.
4606         #  @param theWire source Wire
4607         #  @param theLinearTolerance linear tolerance value (default = 1e-07)
4608         #  @param theAngularTolerance angular tolerance value (default = 1e-12)
4609         #  @param theName Object name; when specified, this parameter is used
4610         #         for result publication in the study. Otherwise, if automatic
4611         #         publication is switched on, default value is used for result name.
4612         #
4613         #  @return New GEOM.GEOM_Object, containing the created edge.
4614         #
4615         #  @ref tui_creation_edge "Example"
4616         @ManageTransactions("ShapesOp")
4617         def MakeEdgeWire(self, theWire, theLinearTolerance = 1e-07, theAngularTolerance = 1e-12, theName=None):
4618             """
4619             Create an edge from specified wire.
4620
4621             Parameters:
4622                 theWire source Wire
4623                 theLinearTolerance linear tolerance value (default = 1e-07)
4624                 theAngularTolerance angular tolerance value (default = 1e-12)
4625                 theName Object name; when specified, this parameter is used
4626                         for result publication in the study. Otherwise, if automatic
4627                         publication is switched on, default value is used for result name.
4628
4629             Returns:
4630                 New GEOM.GEOM_Object, containing the created edge.
4631             """
4632             # Example: see GEOM_TestAll.py
4633             anObj = self.ShapesOp.MakeEdgeWire(theWire, theLinearTolerance, theAngularTolerance)
4634             RaiseIfFailed("MakeEdgeWire", self.ShapesOp)
4635             self._autoPublish(anObj, theName, "edge")
4636             return anObj
4637
4638         ## Create a wire from the set of edges and wires.
4639         #  @param theEdgesAndWires List of edges and/or wires.
4640         #  @param theTolerance Maximum distance between vertices, that will be merged.
4641         #                      Values less than 1e-07 are equivalent to 1e-07 (Precision::Confusion())
4642         #  @param theName Object name; when specified, this parameter is used
4643         #         for result publication in the study. Otherwise, if automatic
4644         #         publication is switched on, default value is used for result name.
4645         #
4646         #  @return New GEOM.GEOM_Object, containing the created wire.
4647         #
4648         #  @ref tui_creation_wire "Example"
4649         @ManageTransactions("ShapesOp")
4650         def MakeWire(self, theEdgesAndWires, theTolerance = 1e-07, theName=None):
4651             """
4652             Create a wire from the set of edges and wires.
4653
4654             Parameters:
4655                 theEdgesAndWires List of edges and/or wires.
4656                 theTolerance Maximum distance between vertices, that will be merged.
4657                              Values less than 1e-07 are equivalent to 1e-07 (Precision::Confusion()).
4658                 theName Object name; when specified, this parameter is used
4659                         for result publication in the study. Otherwise, if automatic
4660                         publication is switched on, default value is used for result name.
4661
4662             Returns:
4663                 New GEOM.GEOM_Object, containing the created wire.
4664             """
4665             # Example: see GEOM_TestAll.py
4666             anObj = self.ShapesOp.MakeWire(theEdgesAndWires, theTolerance)
4667             RaiseIfFailed("MakeWire", self.ShapesOp)
4668             self._autoPublish(anObj, theName, "wire")
4669             return anObj
4670
4671         ## Create a face on the given wire.
4672         #  @param theWire closed Wire or Edge to build the face on.
4673         #  @param isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4674         #                        If the tolerance of the obtained planar face is less
4675         #                        than 1e-06, this face will be returned, otherwise the
4676         #                        algorithm tries to build any suitable face on the given
4677         #                        wire and prints a warning message.
4678         #  @param theName Object name; when specified, this parameter is used
4679         #         for result publication in the study. Otherwise, if automatic
4680         #         publication is switched on, default value is used for result name.
4681         #
4682         #  @return New GEOM.GEOM_Object, containing the created face (compound of faces).
4683         #
4684         #  @ref tui_creation_face "Example"
4685         @ManageTransactions("ShapesOp")
4686         def MakeFace(self, theWire, isPlanarWanted, theName=None):
4687             """
4688             Create a face on the given wire.
4689
4690             Parameters:
4691                 theWire closed Wire or Edge to build the face on.
4692                 isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4693                                If the tolerance of the obtained planar face is less
4694                                than 1e-06, this face will be returned, otherwise the
4695                                algorithm tries to build any suitable face on the given
4696                                wire and prints a warning message.
4697                 theName Object name; when specified, this parameter is used
4698                         for result publication in the study. Otherwise, if automatic
4699                         publication is switched on, default value is used for result name.
4700
4701             Returns:
4702                 New GEOM.GEOM_Object, containing the created face (compound of faces).
4703             """
4704             # Example: see GEOM_TestAll.py
4705             anObj = self.ShapesOp.MakeFace(theWire, isPlanarWanted)
4706             if isPlanarWanted and anObj is not None and self.ShapesOp.GetErrorCode() == "MAKE_FACE_TOLERANCE_TOO_BIG":
4707                 print "WARNING: Cannot build a planar face: required tolerance is too big. Non-planar face is built."
4708             else:
4709                 RaiseIfFailed("MakeFace", self.ShapesOp)
4710             self._autoPublish(anObj, theName, "face")
4711             return anObj
4712
4713         ## Create a face on the given wires set.
4714         #  @param theWires List of closed wires or edges to build the face on.
4715         #  @param isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4716         #                        If the tolerance of the obtained planar face is less
4717         #                        than 1e-06, this face will be returned, otherwise the
4718         #                        algorithm tries to build any suitable face on the given
4719         #                        wire and prints a warning message.
4720         #  @param theName Object name; when specified, this parameter is used
4721         #         for result publication in the study. Otherwise, if automatic
4722         #         publication is switched on, default value is used for result name.
4723         #
4724         #  @return New GEOM.GEOM_Object, containing the created face (compound of faces).
4725         #
4726         #  @ref tui_creation_face "Example"
4727         @ManageTransactions("ShapesOp")
4728         def MakeFaceWires(self, theWires, isPlanarWanted, theName=None):
4729             """
4730             Create a face on the given wires set.
4731
4732             Parameters:
4733                 theWires List of closed wires or edges to build the face on.
4734                 isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4735                                If the tolerance of the obtained planar face is less
4736                                than 1e-06, this face will be returned, otherwise the
4737                                algorithm tries to build any suitable face on the given
4738                                wire and prints a warning message.
4739                 theName Object name; when specified, this parameter is used
4740                         for result publication in the study. Otherwise, if automatic
4741                         publication is switched on, default value is used for result name.
4742
4743             Returns:
4744                 New GEOM.GEOM_Object, containing the created face (compound of faces).
4745             """
4746             # Example: see GEOM_TestAll.py
4747             anObj = self.ShapesOp.MakeFaceWires(ToList(theWires), isPlanarWanted)
4748             if isPlanarWanted and anObj is not None and self.ShapesOp.GetErrorCode() == "MAKE_FACE_TOLERANCE_TOO_BIG":
4749                 print "WARNING: Cannot build a planar face: required tolerance is too big. Non-planar face is built."
4750             else:
4751                 RaiseIfFailed("MakeFaceWires", self.ShapesOp)
4752             self._autoPublish(anObj, theName, "face")
4753             return anObj
4754
4755         ## See MakeFaceWires() method for details.
4756         #
4757         #  @ref tui_creation_face "Example 1"
4758         #  \n @ref swig_MakeFaces  "Example 2"
4759         def MakeFaces(self, theWires, isPlanarWanted, theName=None):
4760             """
4761             See geompy.MakeFaceWires() method for details.
4762             """
4763             # Example: see GEOM_TestOthers.py
4764             # note: auto-publishing is done in self.MakeFaceWires()
4765             anObj = self.MakeFaceWires(theWires, isPlanarWanted, theName)
4766             return anObj
4767
4768         ## Create a face based on a surface from given face bounded
4769         #  by given wire.
4770         #  @param theFace the face whose surface is used to create a new face.
4771         #  @param theWire the wire that will bound a new face.
4772         #  @param theName Object name; when specified, this parameter is used
4773         #         for result publication in the study. Otherwise, if automatic
4774         #         publication is switched on, default value is used for result name.
4775         #
4776         #  @return New GEOM.GEOM_Object, containing the created face.
4777         #
4778         #  @ref tui_creation_face "Example"
4779         @ManageTransactions("ShapesOp")
4780         def MakeFaceFromSurface(self, theFace, theWire, theName=None):
4781             """
4782             Create a face based on a surface from given face bounded
4783             by given wire.
4784
4785             Parameters:
4786                 theFace the face whose surface is used to create a new face.
4787                 theWire the wire that will bound a new face.
4788                 theName Object name; when specified, this parameter is used
4789                         for result publication in the study. Otherwise, if automatic
4790                         publication is switched on, default value is used for result name.
4791
4792             Returns:
4793                 New GEOM.GEOM_Object, containing the created face.
4794             """
4795             # Example: see GEOM_TestAll.py
4796             anObj = self.ShapesOp.MakeFaceFromSurface(theFace, theWire)
4797             RaiseIfFailed("MakeFaceFromSurface", self.ShapesOp)
4798             self._autoPublish(anObj, theName, "face")
4799             return anObj
4800           
4801         ## Create a face from a set of edges with the given constraints.
4802         #  @param theConstraints List of edges and constraint faces (as a sequence of a Edge + Face couples):
4803         #         - edges should form a closed wire;
4804         #         - for each edge, constraint face is optional: if a constraint face is missing
4805         #           for some edge, this means that there no constraint associated with this edge.
4806         #  @param theName Object name; when specified, this parameter is used
4807         #         for result publication in the study. Otherwise, if automatic
4808         #         publication is switched on, default value is used for result name.
4809         # 
4810         # @return New GEOM.GEOM_Object, containing the created face.
4811         # 
4812         # @ref tui_creation_face "Example"
4813         @ManageTransactions("ShapesOp")
4814         def MakeFaceWithConstraints(self, theConstraints, theName=None):
4815             """
4816             Create a face from a set of edges with the given constraints.
4817
4818             Parameters:
4819                 theConstraints List of edges and constraint faces (as a sequence of a Edge + Face couples):
4820                         - edges should form a closed wire;
4821                         - for each edge, constraint face is optional: if a constraint face is missing
4822                           for some edge, this means that there no constraint associated with this edge.
4823                 theName Object name; when specified, this parameter is used
4824                         for result publication in the study. Otherwise, if automatic
4825                         publication is switched on, default value is used for result name.
4826
4827             Returns:
4828                 New GEOM.GEOM_Object, containing the created face.
4829             """
4830             # Example: see GEOM_TestAll.py
4831             anObj = self.ShapesOp.MakeFaceWithConstraints(theConstraints)
4832             if anObj is None:
4833                 RaiseIfFailed("MakeFaceWithConstraints", self.ShapesOp)
4834             self._autoPublish(anObj, theName, "face")
4835             return anObj
4836
4837         ## Create a shell from the set of faces, shells and/or compounds of faces.
4838         #  @param theFacesAndShells List of faces, shells and/or compounds of faces.
4839         #  @param theName Object name; when specified, this parameter is used
4840         #         for result publication in the study. Otherwise, if automatic
4841         #         publication is switched on, default value is used for result name.
4842         #
4843         #  @return New GEOM.GEOM_Object, containing the created shell (compound of shells).
4844         #
4845         #  @ref tui_creation_shell "Example"
4846         @ManageTransactions("ShapesOp")
4847         def MakeShell(self, theFacesAndShells, theName=None):
4848             """
4849             Create a shell from the set of faces and shells.
4850
4851             Parameters:
4852                 theFacesAndShells List of faces and/or shells.
4853                 theName Object name; when specified, this parameter is used
4854                         for result publication in the study. Otherwise, if automatic
4855                         publication is switched on, default value is used for result name.
4856
4857             Returns:
4858                 New GEOM.GEOM_Object, containing the created shell (compound of shells).
4859             """
4860             # Example: see GEOM_TestAll.py
4861             anObj = self.ShapesOp.MakeShell( ToList( theFacesAndShells ))
4862             RaiseIfFailed("MakeShell", self.ShapesOp)
4863             self._autoPublish(anObj, theName, "shell")
4864             return anObj
4865
4866         ## Create a solid, bounded by the given shells.
4867         #  @param theShells Sequence of bounding shells.
4868         #  @param theName Object name; when specified, this parameter is used
4869         #         for result publication in the study. Otherwise, if automatic
4870         #         publication is switched on, default value is used for result name.
4871         #
4872         #  @return New GEOM.GEOM_Object, containing the created solid.
4873         #
4874         #  @ref tui_creation_solid "Example"
4875         @ManageTransactions("ShapesOp")
4876         def MakeSolid(self, theShells, theName=None):
4877             """
4878             Create a solid, bounded by the given shells.
4879
4880             Parameters:
4881                 theShells Sequence of bounding shells.
4882                 theName Object name; when specified, this parameter is used
4883                         for result publication in the study. Otherwise, if automatic
4884                         publication is switched on, default value is used for result name.
4885
4886             Returns:
4887                 New GEOM.GEOM_Object, containing the created solid.
4888             """
4889             # Example: see GEOM_TestAll.py
4890             theShells = ToList(theShells)
4891             if len(theShells) == 1:
4892                 descr = self._IsGoodForSolid(theShells[0])
4893                 #if len(descr) > 0:
4894                 #    raise RuntimeError, "MakeSolidShells : " + descr
4895                 if descr == "WRN_SHAPE_UNCLOSED":
4896                     raise RuntimeError, "MakeSolidShells : Unable to create solid from unclosed shape"
4897             anObj = self.ShapesOp.MakeSolidShells(theShells)
4898             RaiseIfFailed("MakeSolidShells", self.ShapesOp)
4899             self._autoPublish(anObj, theName, "solid")
4900             return anObj
4901
4902         ## Create a compound of the given shapes.
4903         #  @param theShapes List of shapes to put in compound.
4904         #  @param theName Object name; when specified, this parameter is used
4905         #         for result publication in the study. Otherwise, if automatic
4906         #         publication is switched on, default value is used for result name.
4907         #
4908         #  @return New GEOM.GEOM_Object, containing the created compound.
4909         #
4910         #  @ref tui_creation_compound "Example"
4911         @ManageTransactions("ShapesOp")
4912         def MakeCompound(self, theShapes, theName=None):
4913             """
4914             Create a compound of the given shapes.
4915
4916             Parameters:
4917                 theShapes List of shapes to put in compound.
4918                 theName Object name; when specified, this parameter is used
4919                         for result publication in the study. Otherwise, if automatic
4920                         publication is switched on, default value is used for result name.
4921
4922             Returns:
4923                 New GEOM.GEOM_Object, containing the created compound.
4924             """
4925             # Example: see GEOM_TestAll.py
4926             anObj = self.ShapesOp.MakeCompound(ToList(theShapes))
4927             RaiseIfFailed("MakeCompound", self.ShapesOp)
4928             self._autoPublish(anObj, theName, "compound")
4929             return anObj
4930         
4931         ## Create a solid (or solids) from the set of faces and/or shells.
4932         #  @param theFacesOrShells List of faces and/or shells.
4933         #  @param isIntersect If TRUE, forces performing intersections
4934         #         between arguments; otherwise (default) intersection is not performed.
4935         #  @param theName Object name; when specified, this parameter is used
4936         #         for result publication in the study. Otherwise, if automatic
4937         #         publication is switched on, default value is used for result name.
4938         #
4939         #  @return New GEOM.GEOM_Object, containing the created solid (or compound of solids).
4940         #
4941         #  @ref tui_creation_solid_from_faces "Example"
4942         @ManageTransactions("ShapesOp")
4943         def MakeSolidFromConnectedFaces(self, theFacesOrShells, isIntersect = False, theName=None):
4944             """
4945             Create a solid (or solids) from the set of connected faces and/or shells.
4946
4947             Parameters:
4948                 theFacesOrShells List of faces and/or shells.
4949                 isIntersect If TRUE, forces performing intersections
4950                         between arguments; otherwise (default) intersection is not performed
4951                 theName Object name; when specified, this parameter is used.
4952                         for result publication in the study. Otherwise, if automatic
4953                         publication is switched on, default value is used for result name.
4954
4955             Returns:
4956                 New GEOM.GEOM_Object, containing the created solid (or compound of solids).
4957             """
4958             # Example: see GEOM_TestAll.py
4959             anObj = self.ShapesOp.MakeSolidFromConnectedFaces(theFacesOrShells, isIntersect)
4960             RaiseIfFailed("MakeSolidFromConnectedFaces", self.ShapesOp)
4961             self._autoPublish(anObj, theName, "solid")
4962             return anObj
4963
4964         # end of l3_basic_go
4965         ## @}
4966
4967         ## @addtogroup l2_measure
4968         ## @{
4969
4970         ## Gives quantity of faces in the given shape.
4971         #  @param theShape Shape to count faces of.
4972         #  @return Quantity of faces.
4973         #
4974         #  @ref swig_NumberOf "Example"
4975         @ManageTransactions("ShapesOp")
4976         def NumberOfFaces(self, theShape):
4977             """
4978             Gives quantity of faces in the given shape.
4979
4980             Parameters:
4981                 theShape Shape to count faces of.
4982
4983             Returns:
4984                 Quantity of faces.
4985             """
4986             # Example: see GEOM_TestOthers.py
4987             nb_faces = self.ShapesOp.NumberOfFaces(theShape)
4988             RaiseIfFailed("NumberOfFaces", self.ShapesOp)
4989             return nb_faces
4990
4991         ## Gives quantity of edges in the given shape.
4992         #  @param theShape Shape to count edges of.
4993         #  @return Quantity of edges.
4994         #
4995         #  @ref swig_NumberOf "Example"
4996         @ManageTransactions("ShapesOp")
4997         def NumberOfEdges(self, theShape):
4998             """
4999             Gives quantity of edges in the given shape.
5000
5001             Parameters:
5002                 theShape Shape to count edges of.
5003
5004             Returns:
5005                 Quantity of edges.
5006             """
5007             # Example: see GEOM_TestOthers.py
5008             nb_edges = self.ShapesOp.NumberOfEdges(theShape)
5009             RaiseIfFailed("NumberOfEdges", self.ShapesOp)
5010             return nb_edges
5011
5012         ## Gives quantity of sub-shapes of type theShapeType in the given shape.
5013         #  @param theShape Shape to count sub-shapes of.
5014         #  @param theShapeType Type of sub-shapes to count (see ShapeType())
5015         #  @return Quantity of sub-shapes of given type.
5016         #
5017         #  @ref swig_NumberOf "Example"
5018         @ManageTransactions("ShapesOp")
5019         def NumberOfSubShapes(self, theShape, theShapeType):
5020             """
5021             Gives quantity of sub-shapes of type theShapeType in the given shape.
5022
5023             Parameters:
5024                 theShape Shape to count sub-shapes of.
5025                 theShapeType Type of sub-shapes to count (see geompy.ShapeType)
5026
5027             Returns:
5028                 Quantity of sub-shapes of given type.
5029             """
5030             # Example: see GEOM_TestOthers.py
5031             nb_ss = self.ShapesOp.NumberOfSubShapes(theShape, theShapeType)
5032             RaiseIfFailed("NumberOfSubShapes", self.ShapesOp)
5033             return nb_ss
5034
5035         ## Gives quantity of solids in the given shape.
5036         #  @param theShape Shape to count solids in.
5037         #  @return Quantity of solids.
5038         #
5039         #  @ref swig_NumberOf "Example"
5040         @ManageTransactions("ShapesOp")
5041         def NumberOfSolids(self, theShape):
5042             """
5043             Gives quantity of solids in the given shape.
5044
5045             Parameters:
5046                 theShape Shape to count solids in.
5047
5048             Returns:
5049                 Quantity of solids.
5050             """
5051             # Example: see GEOM_TestOthers.py
5052             nb_solids = self.ShapesOp.NumberOfSubShapes(theShape, self.ShapeType["SOLID"])
5053             RaiseIfFailed("NumberOfSolids", self.ShapesOp)
5054             return nb_solids
5055
5056         # end of l2_measure
5057         ## @}
5058
5059         ## @addtogroup l3_healing
5060         ## @{
5061
5062         ## Reverses an orientation the given shape.
5063         #  @param theShape Shape to be reversed.
5064         #  @param theName Object name; when specified, this parameter is used
5065         #         for result publication in the study. Otherwise, if automatic
5066         #         publication is switched on, default value is used for result name.
5067         #
5068         #  @return The reversed copy of theShape.
5069         #
5070         #  @ref swig_ChangeOrientation "Example"
5071         @ManageTransactions("ShapesOp")
5072         def ChangeOrientation(self, theShape, theName=None):
5073             """
5074             Reverses an orientation the given shape.
5075
5076             Parameters:
5077                 theShape Shape to be reversed.
5078                 theName Object name; when specified, this parameter is used
5079                         for result publication in the study. Otherwise, if automatic
5080                         publication is switched on, default value is used for result name.
5081
5082             Returns:
5083                 The reversed copy of theShape.
5084             """
5085             # Example: see GEOM_TestAll.py
5086             anObj = self.ShapesOp.ChangeOrientation(theShape)
5087             RaiseIfFailed("ChangeOrientation", self.ShapesOp)
5088             self._autoPublish(anObj, theName, "reversed")
5089             return anObj
5090
5091         ## See ChangeOrientation() method for details.
5092         #
5093         #  @ref swig_OrientationChange "Example"
5094         def OrientationChange(self, theShape, theName=None):
5095             """
5096             See geompy.ChangeOrientation method for details.
5097             """
5098             # Example: see GEOM_TestOthers.py
5099             # note: auto-publishing is done in self.ChangeOrientation()
5100             anObj = self.ChangeOrientation(theShape, theName)
5101             return anObj
5102
5103         # end of l3_healing
5104         ## @}
5105
5106         ## @addtogroup l4_obtain
5107         ## @{
5108
5109         ## Retrieve all free faces from the given shape.
5110         #  Free face is a face, which is not shared between two shells of the shape.
5111         #  @param theShape Shape to find free faces in.
5112         #  @return List of IDs of all free faces, contained in theShape.
5113         #
5114         #  @ref tui_free_faces_page "Example"
5115         @ManageTransactions("ShapesOp")
5116         def GetFreeFacesIDs(self,theShape):
5117             """
5118             Retrieve all free faces from the given shape.
5119             Free face is a face, which is not shared between two shells of the shape.
5120
5121             Parameters:
5122                 theShape Shape to find free faces in.
5123
5124             Returns:
5125                 List of IDs of all free faces, contained in theShape.
5126             """
5127             # Example: see GEOM_TestOthers.py
5128             anIDs = self.ShapesOp.GetFreeFacesIDs(theShape)
5129             RaiseIfFailed("GetFreeFacesIDs", self.ShapesOp)
5130             return anIDs
5131
5132         ## Get all sub-shapes of theShape1 of the given type, shared with theShape2.
5133         #  @param theShape1 Shape to find sub-shapes in.
5134         #  @param theShape2 Shape to find shared sub-shapes with.
5135         #  @param theShapeType Type of sub-shapes to be retrieved.
5136         #  @param theName Object name; when specified, this parameter is used
5137         #         for result publication in the study. Otherwise, if automatic
5138         #         publication is switched on, default value is used for result name.
5139         #
5140         #  @return List of sub-shapes of theShape1, shared with theShape2.
5141         #
5142         #  @ref swig_GetSharedShapes "Example"
5143         @ManageTransactions("ShapesOp")
5144         def GetSharedShapes(self, theShape1, theShape2, theShapeType, theName=None):
5145             """
5146             Get all sub-shapes of theShape1 of the given type, shared with theShape2.
5147
5148             Parameters:
5149                 theShape1 Shape to find sub-shapes in.
5150                 theShape2 Shape to find shared sub-shapes with.
5151                 theShapeType Type of sub-shapes to be retrieved.
5152                 theName Object name; when specified, this parameter is used
5153                         for result publication in the study. Otherwise, if automatic
5154                         publication is switched on, default value is used for result name.
5155
5156             Returns:
5157                 List of sub-shapes of theShape1, shared with theShape2.
5158             """
5159             # Example: see GEOM_TestOthers.py
5160             aList = self.ShapesOp.GetSharedShapes(theShape1, theShape2, theShapeType)
5161             RaiseIfFailed("GetSharedShapes", self.ShapesOp)
5162             self._autoPublish(aList, theName, "shared")
5163             return aList
5164
5165         ## Get sub-shapes, shared by input shapes.
5166         #  @param theShapes Either a list or compound of shapes to find common sub-shapes of.
5167         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType()).
5168         #  @param theMultiShare Specifies what type of shares should be checked:
5169         #         - @c True (default): search sub-shapes from 1st input shape shared with all other input shapes;
5170         #         - @c False: causes to search sub-shapes shared between couples of input shapes.
5171         #  @param theName Object name; when specified, this parameter is used
5172         #         for result publication in the study. Otherwise, if automatic
5173         #         publication is switched on, default value is used for result name.
5174         #
5175         #  @note If @a theShapes contains single compound, the shares between all possible couples of 
5176         #        its top-level shapes are returned; otherwise, only shares between 1st input shape
5177         #        and all rest input shapes are returned.
5178         #
5179         #  @return List of all found sub-shapes.
5180         #
5181         #  Examples:
5182         #  - @ref tui_shared_shapes "Example 1"
5183         #  - @ref swig_GetSharedShapes "Example 2"
5184         @ManageTransactions("ShapesOp")
5185         def GetSharedShapesMulti(self, theShapes, theShapeType, theMultiShare=True, theName=None):
5186             """
5187             Get sub-shapes, shared by input shapes.
5188
5189             Parameters:
5190                 theShapes Either a list or compound of shapes to find common sub-shapes of.
5191                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType).
5192                 theMultiShare Specifies what type of shares should be checked:
5193                   - True (default): search sub-shapes from 1st input shape shared with all other input shapes;
5194                   - False: causes to search sub-shapes shared between couples of input shapes.
5195                 theName Object name; when specified, this parameter is used
5196                         for result publication in the study. Otherwise, if automatic
5197                         publication is switched on, default value is used for result name.
5198
5199             Note: if theShapes contains single compound, the shares between all possible couples of 
5200                   its top-level shapes are returned; otherwise, only shares between 1st input shape
5201                   and all rest input shapes are returned.
5202
5203             Returns:
5204                 List of all found sub-shapes.
5205             """
5206             # Example: see GEOM_TestOthers.py
5207             aList = self.ShapesOp.GetSharedShapesMulti(ToList(theShapes), theShapeType, theMultiShare)
5208             RaiseIfFailed("GetSharedShapesMulti", self.ShapesOp)
5209             self._autoPublish(aList, theName, "shared")
5210             return aList
5211
5212         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5213         #  situated relatively the specified plane by the certain way,
5214         #  defined through <VAR>theState</VAR> parameter.
5215         #  @param theShape Shape to find sub-shapes of.
5216         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5217         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5218         #                direction and location of the plane to find shapes on.
5219         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5220         #  @param theName Object name; when specified, this parameter is used
5221         #         for result publication in the study. Otherwise, if automatic
5222         #         publication is switched on, default value is used for result name.
5223         #
5224         #  @return List of all found sub-shapes.
5225         #
5226         #  @ref swig_GetShapesOnPlane "Example"
5227         @ManageTransactions("ShapesOp")
5228         def GetShapesOnPlane(self, theShape, theShapeType, theAx1, theState, theName=None):
5229             """
5230             Find in theShape all sub-shapes of type theShapeType,
5231             situated relatively the specified plane by the certain way,
5232             defined through theState parameter.
5233
5234             Parameters:
5235                 theShape Shape to find sub-shapes of.
5236                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5237                 theAx1 Vector (or line, or linear edge), specifying normal
5238                        direction and location of the plane to find shapes on.
5239                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5240                 theName Object name; when specified, this parameter is used
5241                         for result publication in the study. Otherwise, if automatic
5242                         publication is switched on, default value is used for result name.
5243
5244             Returns:
5245                 List of all found sub-shapes.
5246             """
5247             # Example: see GEOM_TestOthers.py
5248             aList = self.ShapesOp.GetShapesOnPlane(theShape, theShapeType, theAx1, theState)
5249             RaiseIfFailed("GetShapesOnPlane", self.ShapesOp)
5250             self._autoPublish(aList, theName, "shapeOnPlane")
5251             return aList
5252
5253         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5254         #  situated relatively the specified plane by the certain way,
5255         #  defined through <VAR>theState</VAR> parameter.
5256         #  @param theShape Shape to find sub-shapes of.
5257         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5258         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5259         #                direction and location of the plane to find shapes on.
5260         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5261         #
5262         #  @return List of all found sub-shapes indices.
5263         #
5264         #  @ref swig_GetShapesOnPlaneIDs "Example"
5265         @ManageTransactions("ShapesOp")
5266         def GetShapesOnPlaneIDs(self, theShape, theShapeType, theAx1, theState):
5267             """
5268             Find in theShape all sub-shapes of type theShapeType,
5269             situated relatively the specified plane by the certain way,
5270             defined through theState parameter.
5271
5272             Parameters:
5273                 theShape Shape to find sub-shapes of.
5274                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5275                 theAx1 Vector (or line, or linear edge), specifying normal
5276                        direction and location of the plane to find shapes on.
5277                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5278
5279             Returns:
5280                 List of all found sub-shapes indices.
5281             """
5282             # Example: see GEOM_TestOthers.py
5283             aList = self.ShapesOp.GetShapesOnPlaneIDs(theShape, theShapeType, theAx1, theState)
5284             RaiseIfFailed("GetShapesOnPlaneIDs", self.ShapesOp)
5285             return aList
5286
5287         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5288         #  situated relatively the specified plane by the certain way,
5289         #  defined through <VAR>theState</VAR> parameter.
5290         #  @param theShape Shape to find sub-shapes of.
5291         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5292         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5293         #                direction of the plane to find shapes on.
5294         #  @param thePnt Point specifying location of the plane to find shapes on.
5295         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5296         #  @param theName Object name; when specified, this parameter is used
5297         #         for result publication in the study. Otherwise, if automatic
5298         #         publication is switched on, default value is used for result name.
5299         #
5300         #  @return List of all found sub-shapes.
5301         #
5302         #  @ref swig_GetShapesOnPlaneWithLocation "Example"
5303         @ManageTransactions("ShapesOp")
5304         def GetShapesOnPlaneWithLocation(self, theShape, theShapeType, theAx1, thePnt, theState, theName=None):
5305             """
5306             Find in theShape all sub-shapes of type theShapeType,
5307             situated relatively the specified plane by the certain way,
5308             defined through theState parameter.
5309
5310             Parameters:
5311                 theShape Shape to find sub-shapes of.
5312                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5313                 theAx1 Vector (or line, or linear edge), specifying normal
5314                        direction and location of the plane to find shapes on.
5315                 thePnt Point specifying location of the plane to find shapes on.
5316                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5317                 theName Object name; when specified, this parameter is used
5318                         for result publication in the study. Otherwise, if automatic
5319                         publication is switched on, default value is used for result name.
5320
5321             Returns:
5322                 List of all found sub-shapes.
5323             """
5324             # Example: see GEOM_TestOthers.py
5325             aList = self.ShapesOp.GetShapesOnPlaneWithLocation(theShape, theShapeType,
5326                                                                theAx1, thePnt, theState)
5327             RaiseIfFailed("GetShapesOnPlaneWithLocation", self.ShapesOp)
5328             self._autoPublish(aList, theName, "shapeOnPlane")
5329             return aList
5330
5331         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5332         #  situated relatively the specified plane by the certain way,
5333         #  defined through <VAR>theState</VAR> parameter.
5334         #  @param theShape Shape to find sub-shapes of.
5335         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5336         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5337         #                direction of the plane to find shapes on.
5338         #  @param thePnt Point specifying location of the plane to find shapes on.
5339         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5340         #
5341         #  @return List of all found sub-shapes indices.
5342         #
5343         #  @ref swig_GetShapesOnPlaneWithLocationIDs "Example"
5344         @ManageTransactions("ShapesOp")
5345         def GetShapesOnPlaneWithLocationIDs(self, theShape, theShapeType, theAx1, thePnt, theState):
5346             """
5347             Find in theShape all sub-shapes of type theShapeType,
5348             situated relatively the specified plane by the certain way,
5349             defined through theState parameter.
5350
5351             Parameters:
5352                 theShape Shape to find sub-shapes of.
5353                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5354                 theAx1 Vector (or line, or linear edge), specifying normal
5355                        direction and location of the plane to find shapes on.
5356                 thePnt Point specifying location of the plane to find shapes on.
5357                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5358
5359             Returns:
5360                 List of all found sub-shapes indices.
5361             """
5362             # Example: see GEOM_TestOthers.py
5363             aList = self.ShapesOp.GetShapesOnPlaneWithLocationIDs(theShape, theShapeType,
5364                                                                   theAx1, thePnt, theState)
5365             RaiseIfFailed("GetShapesOnPlaneWithLocationIDs", self.ShapesOp)
5366             return aList
5367
5368         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5369         #  the specified cylinder by the certain way, defined through \a theState parameter.
5370         #  @param theShape Shape to find sub-shapes of.
5371         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5372         #  @param theAxis Vector (or line, or linear edge), specifying
5373         #                 axis of the cylinder to find shapes on.
5374         #  @param theRadius Radius of the cylinder to find shapes on.
5375         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5376         #  @param theName Object name; when specified, this parameter is used
5377         #         for result publication in the study. Otherwise, if automatic
5378         #         publication is switched on, default value is used for result name.
5379         #
5380         #  @return List of all found sub-shapes.
5381         #
5382         #  @ref swig_GetShapesOnCylinder "Example"
5383         @ManageTransactions("ShapesOp")
5384         def GetShapesOnCylinder(self, theShape, theShapeType, theAxis, theRadius, theState, theName=None):
5385             """
5386             Find in theShape all sub-shapes of type theShapeType, situated relatively
5387             the specified cylinder by the certain way, defined through theState parameter.
5388
5389             Parameters:
5390                 theShape Shape to find sub-shapes of.
5391                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5392                 theAxis Vector (or line, or linear edge), specifying
5393                         axis of the cylinder to find shapes on.
5394                 theRadius Radius of the cylinder to find shapes on.
5395                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5396                 theName Object name; when specified, this parameter is used
5397                         for result publication in the study. Otherwise, if automatic
5398                         publication is switched on, default value is used for result name.
5399
5400             Returns:
5401                 List of all found sub-shapes.
5402             """
5403             # Example: see GEOM_TestOthers.py
5404             aList = self.ShapesOp.GetShapesOnCylinder(theShape, theShapeType, theAxis, theRadius, theState)
5405             RaiseIfFailed("GetShapesOnCylinder", self.ShapesOp)
5406             self._autoPublish(aList, theName, "shapeOnCylinder")
5407             return aList
5408
5409         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5410         #  the specified cylinder by the certain way, defined through \a theState parameter.
5411         #  @param theShape Shape to find sub-shapes of.
5412         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5413         #  @param theAxis Vector (or line, or linear edge), specifying
5414         #                 axis of the cylinder to find shapes on.
5415         #  @param theRadius Radius of the cylinder to find shapes on.
5416         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5417         #
5418         #  @return List of all found sub-shapes indices.
5419         #
5420         #  @ref swig_GetShapesOnCylinderIDs "Example"
5421         @ManageTransactions("ShapesOp")
5422         def GetShapesOnCylinderIDs(self, theShape, theShapeType, theAxis, theRadius, theState):
5423             """
5424             Find in theShape all sub-shapes of type theShapeType, situated relatively
5425             the specified cylinder by the certain way, defined through theState parameter.
5426
5427             Parameters:
5428                 theShape Shape to find sub-shapes of.
5429                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5430                 theAxis Vector (or line, or linear edge), specifying
5431                         axis of the cylinder to find shapes on.
5432                 theRadius Radius of the cylinder to find shapes on.
5433                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5434
5435             Returns:
5436                 List of all found sub-shapes indices.
5437             """
5438             # Example: see GEOM_TestOthers.py
5439             aList = self.ShapesOp.GetShapesOnCylinderIDs(theShape, theShapeType, theAxis, theRadius, theState)
5440             RaiseIfFailed("GetShapesOnCylinderIDs", self.ShapesOp)
5441             return aList
5442
5443         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5444         #  the specified cylinder by the certain way, defined through \a theState parameter.
5445         #  @param theShape Shape to find sub-shapes of.
5446         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5447         #  @param theAxis Vector (or line, or linear edge), specifying
5448         #                 axis of the cylinder to find shapes on.
5449         #  @param thePnt Point specifying location of the bottom of the cylinder.
5450         #  @param theRadius Radius of the cylinder to find shapes on.
5451         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5452         #  @param theName Object name; when specified, this parameter is used
5453         #         for result publication in the study. Otherwise, if automatic
5454         #         publication is switched on, default value is used for result name.
5455         #
5456         #  @return List of all found sub-shapes.
5457         #
5458         #  @ref swig_GetShapesOnCylinderWithLocation "Example"
5459         @ManageTransactions("ShapesOp")
5460         def GetShapesOnCylinderWithLocation(self, theShape, theShapeType, theAxis, thePnt, theRadius, theState, theName=None):
5461             """
5462             Find in theShape all sub-shapes of type theShapeType, situated relatively
5463             the specified cylinder by the certain way, defined through theState parameter.
5464
5465             Parameters:
5466                 theShape Shape to find sub-shapes of.
5467                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5468                 theAxis Vector (or line, or linear edge), specifying
5469                         axis of the cylinder to find shapes on.
5470                 theRadius Radius of the cylinder to find shapes on.
5471                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5472                 theName Object name; when specified, this parameter is used
5473                         for result publication in the study. Otherwise, if automatic
5474                         publication is switched on, default value is used for result name.
5475
5476             Returns:
5477                 List of all found sub-shapes.
5478             """
5479             # Example: see GEOM_TestOthers.py
5480             aList = self.ShapesOp.GetShapesOnCylinderWithLocation(theShape, theShapeType, theAxis, thePnt, theRadius, theState)
5481             RaiseIfFailed("GetShapesOnCylinderWithLocation", self.ShapesOp)
5482             self._autoPublish(aList, theName, "shapeOnCylinder")
5483             return aList
5484
5485         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5486         #  the specified cylinder by the certain way, defined through \a theState parameter.
5487         #  @param theShape Shape to find sub-shapes of.
5488         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5489         #  @param theAxis Vector (or line, or linear edge), specifying
5490         #                 axis of the cylinder to find shapes on.
5491         #  @param thePnt Point specifying location of the bottom of the cylinder.
5492         #  @param theRadius Radius of the cylinder to find shapes on.
5493         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5494         #
5495         #  @return List of all found sub-shapes indices
5496         #
5497         #  @ref swig_GetShapesOnCylinderWithLocationIDs "Example"
5498         @ManageTransactions("ShapesOp")
5499         def GetShapesOnCylinderWithLocationIDs(self, theShape, theShapeType, theAxis, thePnt, theRadius, theState):
5500             """
5501             Find in theShape all sub-shapes of type theShapeType, situated relatively
5502             the specified cylinder by the certain way, defined through theState parameter.
5503
5504             Parameters:
5505                 theShape Shape to find sub-shapes of.
5506                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5507                 theAxis Vector (or line, or linear edge), specifying
5508                         axis of the cylinder to find shapes on.
5509                 theRadius Radius of the cylinder to find shapes on.
5510                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5511
5512             Returns:
5513                 List of all found sub-shapes indices.
5514             """
5515             # Example: see GEOM_TestOthers.py
5516             aList = self.ShapesOp.GetShapesOnCylinderWithLocationIDs(theShape, theShapeType, theAxis, thePnt, theRadius, theState)
5517             RaiseIfFailed("GetShapesOnCylinderWithLocationIDs", self.ShapesOp)
5518             return aList
5519
5520         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5521         #  the specified sphere by the certain way, defined through \a theState parameter.
5522         #  @param theShape Shape to find sub-shapes of.
5523         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5524         #  @param theCenter Point, specifying center of the sphere to find shapes on.
5525         #  @param theRadius Radius of the sphere to find shapes on.
5526         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5527         #  @param theName Object name; when specified, this parameter is used
5528         #         for result publication in the study. Otherwise, if automatic
5529         #         publication is switched on, default value is used for result name.
5530         #
5531         #  @return List of all found sub-shapes.
5532         #
5533         #  @ref swig_GetShapesOnSphere "Example"
5534         @ManageTransactions("ShapesOp")
5535         def GetShapesOnSphere(self, theShape, theShapeType, theCenter, theRadius, theState, theName=None):
5536             """
5537             Find in theShape all sub-shapes of type theShapeType, situated relatively
5538             the specified sphere by the certain way, defined through theState parameter.
5539
5540             Parameters:
5541                 theShape Shape to find sub-shapes of.
5542                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5543                 theCenter Point, specifying center of the sphere to find shapes on.
5544                 theRadius Radius of the sphere to find shapes on.
5545                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5546                 theName Object name; when specified, this parameter is used
5547                         for result publication in the study. Otherwise, if automatic
5548                         publication is switched on, default value is used for result name.
5549
5550             Returns:
5551                 List of all found sub-shapes.
5552             """
5553             # Example: see GEOM_TestOthers.py
5554             aList = self.ShapesOp.GetShapesOnSphere(theShape, theShapeType, theCenter, theRadius, theState)
5555             RaiseIfFailed("GetShapesOnSphere", self.ShapesOp)
5556             self._autoPublish(aList, theName, "shapeOnSphere")
5557             return aList
5558
5559         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5560         #  the specified sphere by the certain way, defined through \a theState parameter.
5561         #  @param theShape Shape to find sub-shapes of.
5562         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5563         #  @param theCenter Point, specifying center of the sphere to find shapes on.
5564         #  @param theRadius Radius of the sphere to find shapes on.
5565         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5566         #
5567         #  @return List of all found sub-shapes indices.
5568         #
5569         #  @ref swig_GetShapesOnSphereIDs "Example"
5570         @ManageTransactions("ShapesOp")
5571         def GetShapesOnSphereIDs(self, theShape, theShapeType, theCenter, theRadius, theState):
5572             """
5573             Find in theShape all sub-shapes of type theShapeType, situated relatively
5574             the specified sphere by the certain way, defined through theState parameter.
5575
5576             Parameters:
5577                 theShape Shape to find sub-shapes of.
5578                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5579                 theCenter Point, specifying center of the sphere to find shapes on.
5580                 theRadius Radius of the sphere to find shapes on.
5581                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5582
5583             Returns:
5584                 List of all found sub-shapes indices.
5585             """
5586             # Example: see GEOM_TestOthers.py
5587             aList = self.ShapesOp.GetShapesOnSphereIDs(theShape, theShapeType, theCenter, theRadius, theState)
5588             RaiseIfFailed("GetShapesOnSphereIDs", self.ShapesOp)
5589             return aList
5590
5591         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5592         #  the specified quadrangle by the certain way, defined through \a theState parameter.
5593         #  @param theShape Shape to find sub-shapes of.
5594         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5595         #  @param theTopLeftPoint Point, specifying top left corner of a quadrangle
5596         #  @param theTopRigthPoint Point, specifying top right corner of a quadrangle
5597         #  @param theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5598         #  @param theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5599         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5600         #  @param theName Object name; when specified, this parameter is used
5601         #         for result publication in the study. Otherwise, if automatic
5602         #         publication is switched on, default value is used for result name.
5603         #
5604         #  @return List of all found sub-shapes.
5605         #
5606         #  @ref swig_GetShapesOnQuadrangle "Example"
5607         @ManageTransactions("ShapesOp")
5608         def GetShapesOnQuadrangle(self, theShape, theShapeType,
5609                                   theTopLeftPoint, theTopRigthPoint,
5610                                   theBottomLeftPoint, theBottomRigthPoint, theState, theName=None):
5611             """
5612             Find in theShape all sub-shapes of type theShapeType, situated relatively
5613             the specified quadrangle by the certain way, defined through theState parameter.
5614
5615             Parameters:
5616                 theShape Shape to find sub-shapes of.
5617                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5618                 theTopLeftPoint Point, specifying top left corner of a quadrangle
5619                 theTopRigthPoint Point, specifying top right corner of a quadrangle
5620                 theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5621                 theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5622                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5623                 theName Object name; when specified, this parameter is used
5624                         for result publication in the study. Otherwise, if automatic
5625                         publication is switched on, default value is used for result name.
5626
5627             Returns:
5628                 List of all found sub-shapes.
5629             """
5630             # Example: see GEOM_TestOthers.py
5631             aList = self.ShapesOp.GetShapesOnQuadrangle(theShape, theShapeType,
5632                                                         theTopLeftPoint, theTopRigthPoint,
5633                                                         theBottomLeftPoint, theBottomRigthPoint, theState)
5634             RaiseIfFailed("GetShapesOnQuadrangle", self.ShapesOp)
5635             self._autoPublish(aList, theName, "shapeOnQuadrangle")
5636             return aList
5637
5638         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5639         #  the specified quadrangle by the certain way, defined through \a theState parameter.
5640         #  @param theShape Shape to find sub-shapes of.
5641         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5642         #  @param theTopLeftPoint Point, specifying top left corner of a quadrangle
5643         #  @param theTopRigthPoint Point, specifying top right corner of a quadrangle
5644         #  @param theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5645         #  @param theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5646         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5647         #
5648         #  @return List of all found sub-shapes indices.
5649         #
5650         #  @ref swig_GetShapesOnQuadrangleIDs "Example"
5651         @ManageTransactions("ShapesOp")
5652         def GetShapesOnQuadrangleIDs(self, theShape, theShapeType,
5653                                      theTopLeftPoint, theTopRigthPoint,
5654                                      theBottomLeftPoint, theBottomRigthPoint, theState):
5655             """
5656             Find in theShape all sub-shapes of type theShapeType, situated relatively
5657             the specified quadrangle by the certain way, defined through theState parameter.
5658
5659             Parameters:
5660                 theShape Shape to find sub-shapes of.
5661                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5662                 theTopLeftPoint Point, specifying top left corner of a quadrangle
5663                 theTopRigthPoint Point, specifying top right corner of a quadrangle
5664                 theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5665                 theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5666                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5667
5668             Returns:
5669                 List of all found sub-shapes indices.
5670             """
5671
5672             # Example: see GEOM_TestOthers.py
5673             aList = self.ShapesOp.GetShapesOnQuadrangleIDs(theShape, theShapeType,
5674                                                            theTopLeftPoint, theTopRigthPoint,
5675                                                            theBottomLeftPoint, theBottomRigthPoint, theState)
5676             RaiseIfFailed("GetShapesOnQuadrangleIDs", self.ShapesOp)
5677             return aList
5678
5679         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5680         #  the specified \a theBox by the certain way, defined through \a theState parameter.
5681         #  @param theBox Shape for relative comparing.
5682         #  @param theShape Shape to find sub-shapes of.
5683         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5684         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5685         #  @param theName Object name; when specified, this parameter is used
5686         #         for result publication in the study. Otherwise, if automatic
5687         #         publication is switched on, default value is used for result name.
5688         #
5689         #  @return List of all found sub-shapes.
5690         #
5691         #  @ref swig_GetShapesOnBox "Example"
5692         @ManageTransactions("ShapesOp")
5693         def GetShapesOnBox(self, theBox, theShape, theShapeType, theState, theName=None):
5694             """
5695             Find in theShape all sub-shapes of type theShapeType, situated relatively
5696             the specified theBox by the certain way, defined through theState parameter.
5697
5698             Parameters:
5699                 theBox Shape for relative comparing.
5700                 theShape Shape to find sub-shapes of.
5701                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5702                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5703                 theName Object name; when specified, this parameter is used
5704                         for result publication in the study. Otherwise, if automatic
5705                         publication is switched on, default value is used for result name.
5706
5707             Returns:
5708                 List of all found sub-shapes.
5709             """
5710             # Example: see GEOM_TestOthers.py
5711             aList = self.ShapesOp.GetShapesOnBox(theBox, theShape, theShapeType, theState)
5712             RaiseIfFailed("GetShapesOnBox", self.ShapesOp)
5713             self._autoPublish(aList, theName, "shapeOnBox")
5714             return aList
5715
5716         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5717         #  the specified \a theBox by the certain way, defined through \a theState parameter.
5718         #  @param theBox Shape for relative comparing.
5719         #  @param theShape Shape to find sub-shapes of.
5720         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5721         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5722         #
5723         #  @return List of all found sub-shapes indices.
5724         #
5725         #  @ref swig_GetShapesOnBoxIDs "Example"
5726         @ManageTransactions("ShapesOp")
5727         def GetShapesOnBoxIDs(self, theBox, theShape, theShapeType, theState):
5728             """
5729             Find in theShape all sub-shapes of type theShapeType, situated relatively
5730             the specified theBox by the certain way, defined through theState parameter.
5731
5732             Parameters:
5733                 theBox Shape for relative comparing.
5734                 theShape Shape to find sub-shapes of.
5735                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5736                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5737
5738             Returns:
5739                 List of all found sub-shapes indices.
5740             """
5741             # Example: see GEOM_TestOthers.py
5742             aList = self.ShapesOp.GetShapesOnBoxIDs(theBox, theShape, theShapeType, theState)
5743             RaiseIfFailed("GetShapesOnBoxIDs", self.ShapesOp)
5744             return aList
5745
5746         ## Find in \a theShape all sub-shapes of type \a theShapeType,
5747         #  situated relatively the specified \a theCheckShape by the
5748         #  certain way, defined through \a theState parameter.
5749         #  @param theCheckShape Shape for relative comparing. It must be a solid.
5750         #  @param theShape Shape to find sub-shapes of.
5751         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5752         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5753         #  @param theName Object name; when specified, this parameter is used
5754         #         for result publication in the study. Otherwise, if automatic
5755         #         publication is switched on, default value is used for result name.
5756         #
5757         #  @return List of all found sub-shapes.
5758         #
5759         #  @ref swig_GetShapesOnShape "Example"
5760         @ManageTransactions("ShapesOp")
5761         def GetShapesOnShape(self, theCheckShape, theShape, theShapeType, theState, theName=None):
5762             """
5763             Find in theShape all sub-shapes of type theShapeType,
5764             situated relatively the specified theCheckShape by the
5765             certain way, defined through theState parameter.
5766
5767             Parameters:
5768                 theCheckShape Shape for relative comparing. It must be a solid.
5769                 theShape Shape to find sub-shapes of.
5770                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5771                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5772                 theName Object name; when specified, this parameter is used
5773                         for result publication in the study. Otherwise, if automatic
5774                         publication is switched on, default value is used for result name.
5775
5776             Returns:
5777                 List of all found sub-shapes.
5778             """
5779             # Example: see GEOM_TestOthers.py
5780             aList = self.ShapesOp.GetShapesOnShape(theCheckShape, theShape,
5781                                                    theShapeType, theState)
5782             RaiseIfFailed("GetShapesOnShape", self.ShapesOp)
5783             self._autoPublish(aList, theName, "shapeOnShape")
5784             return aList
5785
5786         ## Find in \a theShape all sub-shapes of type \a theShapeType,
5787         #  situated relatively the specified \a theCheckShape by the
5788         #  certain way, defined through \a theState parameter.
5789         #  @param theCheckShape Shape for relative comparing. It must be a solid.
5790         #  @param theShape Shape to find sub-shapes of.
5791         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5792         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5793         #  @param theName Object name; when specified, this parameter is used
5794         #         for result publication in the study. Otherwise, if automatic
5795         #         publication is switched on, default value is used for result name.
5796         #
5797         #  @return All found sub-shapes as compound.
5798         #
5799         #  @ref swig_GetShapesOnShapeAsCompound "Example"
5800         @ManageTransactions("ShapesOp")
5801         def GetShapesOnShapeAsCompound(self, theCheckShape, theShape, theShapeType, theState, theName=None):
5802             """
5803             Find in theShape all sub-shapes of type theShapeType,
5804             situated relatively the specified theCheckShape by the
5805             certain way, defined through theState parameter.
5806
5807             Parameters:
5808                 theCheckShape Shape for relative comparing. It must be a solid.
5809                 theShape Shape to find sub-shapes of.
5810                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5811                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5812                 theName Object name; when specified, this parameter is used
5813                         for result publication in the study. Otherwise, if automatic
5814                         publication is switched on, default value is used for result name.
5815
5816             Returns:
5817                 All found sub-shapes as compound.
5818             """
5819             # Example: see GEOM_TestOthers.py
5820             anObj = self.ShapesOp.GetShapesOnShapeAsCompound(theCheckShape, theShape,
5821                                                              theShapeType, theState)
5822             RaiseIfFailed("GetShapesOnShapeAsCompound", self.ShapesOp)
5823             self._autoPublish(anObj, theName, "shapeOnShape")
5824             return anObj
5825
5826         ## Find in \a theShape all sub-shapes of type \a theShapeType,
5827         #  situated relatively the specified \a theCheckShape by the
5828         #  certain way, defined through \a theState parameter.
5829         #  @param theCheckShape Shape for relative comparing. It must be a solid.
5830         #  @param theShape Shape to find sub-shapes of.
5831         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5832         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5833         #
5834         #  @return List of all found sub-shapes indices.
5835         #
5836         #  @ref swig_GetShapesOnShapeIDs "Example"
5837         @ManageTransactions("ShapesOp")
5838         def GetShapesOnShapeIDs(self, theCheckShape, theShape, theShapeType, theState):
5839             """
5840             Find in theShape all sub-shapes of type theShapeType,
5841             situated relatively the specified theCheckShape by the
5842             certain way, defined through theState parameter.
5843
5844             Parameters:
5845                 theCheckShape Shape for relative comparing. It must be a solid.
5846                 theShape Shape to find sub-shapes of.
5847                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5848                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5849
5850             Returns:
5851                 List of all found sub-shapes indices.
5852             """
5853             # Example: see GEOM_TestOthers.py
5854             aList = self.ShapesOp.GetShapesOnShapeIDs(theCheckShape, theShape,
5855                                                       theShapeType, theState)
5856             RaiseIfFailed("GetShapesOnShapeIDs", self.ShapesOp)
5857             return aList
5858
5859         ## Get sub-shape(s) of theShapeWhere, which are
5860         #  coincident with \a theShapeWhat or could be a part of it.
5861         #  @param theShapeWhere Shape to find sub-shapes of.
5862         #  @param theShapeWhat Shape, specifying what to find.
5863         #  @param isNewImplementation implementation of GetInPlace functionality
5864         #             (default = False, old alghorithm based on shape properties)
5865         #  @param theName Object name; when specified, this parameter is used
5866         #         for result publication in the study. Otherwise, if automatic
5867         #         publication is switched on, default value is used for result name.
5868         #
5869         #  @return Compound which includes all found sub-shapes if they have different types; 
5870         #          or group of all found shapes of the equal type; or a single found sub-shape.
5871         #
5872         #  @note This function has a restriction on argument shapes.
5873         #        If \a theShapeWhere has curved parts with significantly
5874         #        outstanding centres (i.e. the mass centre of a part is closer to
5875         #        \a theShapeWhat than to the part), such parts will not be found.
5876         #        @image html get_in_place_lost_part.png
5877         #
5878         #  @ref swig_GetInPlace "Example"
5879         @ManageTransactions("ShapesOp")
5880         def GetInPlace(self, theShapeWhere, theShapeWhat, isNewImplementation = False, theName=None):
5881             """
5882             Get sub-shape(s) of theShapeWhere, which are
5883             coincident with  theShapeWhat or could be a part of it.
5884
5885             Parameters:
5886                 theShapeWhere Shape to find sub-shapes of.
5887                 theShapeWhat Shape, specifying what to find.
5888                 isNewImplementation Implementation of GetInPlace functionality
5889                                     (default = False, old alghorithm based on shape properties)
5890                 theName Object name; when specified, this parameter is used
5891                         for result publication in the study. Otherwise, if automatic
5892                         publication is switched on, default value is used for result name.
5893
5894             Returns:
5895                 Compound which includes all found sub-shapes if they have different types; 
5896                 or group of all found shapes of the equal type; or a single found sub-shape.
5897
5898
5899             Note:
5900                 This function has a restriction on argument shapes.
5901                 If theShapeWhere has curved parts with significantly
5902                 outstanding centres (i.e. the mass centre of a part is closer to
5903                 theShapeWhat than to the part), such parts will not be found.
5904             """
5905             # Example: see GEOM_TestOthers.py
5906             anObj = None
5907             if isNewImplementation:
5908                 anObj = self.ShapesOp.GetInPlace(theShapeWhere, theShapeWhat)
5909             else:
5910                 anObj = self.ShapesOp.GetInPlaceOld(theShapeWhere, theShapeWhat)
5911                 pass
5912             RaiseIfFailed("GetInPlace", self.ShapesOp)
5913             self._autoPublish(anObj, theName, "inplace")
5914             return anObj
5915
5916         ## Get sub-shape(s) of \a theShapeWhere, which are
5917         #  coincident with \a theShapeWhat or could be a part of it.
5918         #
5919         #  Implementation of this method is based on a saved history of an operation,
5920         #  produced \a theShapeWhere. The \a theShapeWhat must be among this operation's
5921         #  arguments (an argument shape or a sub-shape of an argument shape).
5922         #  The operation could be the Partition or one of boolean operations,
5923         #  performed on simple shapes (not on compounds).
5924         #
5925         #  @param theShapeWhere Shape to find sub-shapes of.
5926         #  @param theShapeWhat Shape, specifying what to find (must be in the
5927         #                      building history of the ShapeWhere).
5928         #  @param theName Object name; when specified, this parameter is used
5929         #         for result publication in the study. Otherwise, if automatic
5930         #         publication is switched on, default value is used for result name.
5931         #
5932         #  @return Compound which includes all found sub-shapes if they have different types; 
5933         #          or group of all found shapes of the equal type; or a single found sub-shape.
5934         #
5935         #  @ref swig_GetInPlace "Example"
5936         @ManageTransactions("ShapesOp")
5937         def GetInPlaceByHistory(self, theShapeWhere, theShapeWhat, theName=None):
5938             """
5939             Implementation of this method is based on a saved history of an operation,
5940             produced theShapeWhere. The theShapeWhat must be among this operation's
5941             arguments (an argument shape or a sub-shape of an argument shape).
5942             The operation could be the Partition or one of boolean operations,
5943             performed on simple shapes (not on compounds).
5944
5945             Parameters:
5946                 theShapeWhere Shape to find sub-shapes of.
5947                 theShapeWhat Shape, specifying what to find (must be in the
5948                                 building history of the ShapeWhere).
5949                 theName Object name; when specified, this parameter is used
5950                         for result publication in the study. Otherwise, if automatic
5951                         publication is switched on, default value is used for result name.
5952
5953             Returns:
5954                 Compound which includes all found sub-shapes if they have different types; 
5955                 or group of all found shapes of the equal type; or a single found sub-shape.
5956             """
5957             # Example: see GEOM_TestOthers.py
5958             anObj = self.ShapesOp.GetInPlaceByHistory(theShapeWhere, theShapeWhat)
5959             RaiseIfFailed("GetInPlaceByHistory", self.ShapesOp)
5960             self._autoPublish(anObj, theName, "inplace")
5961             return anObj
5962
5963         ## Get sub-shape of theShapeWhere, which is
5964         #  equal to \a theShapeWhat.
5965         #  @param theShapeWhere Shape to find sub-shape of.
5966         #  @param theShapeWhat Shape, specifying what to find.
5967         #  @param theName Object name; when specified, this parameter is used
5968         #         for result publication in the study. Otherwise, if automatic
5969         #         publication is switched on, default value is used for result name.
5970         #
5971         #  @return New GEOM.GEOM_Object for found sub-shape.
5972         #
5973         #  @ref swig_GetSame "Example"
5974         @ManageTransactions("ShapesOp")
5975         def GetSame(self, theShapeWhere, theShapeWhat, theName=None):
5976             """
5977             Get sub-shape of theShapeWhere, which is
5978             equal to theShapeWhat.
5979
5980             Parameters:
5981                 theShapeWhere Shape to find sub-shape of.
5982                 theShapeWhat Shape, specifying what to find.
5983                 theName Object name; when specified, this parameter is used
5984                         for result publication in the study. Otherwise, if automatic
5985                         publication is switched on, default value is used for result name.
5986
5987             Returns:
5988                 New GEOM.GEOM_Object for found sub-shape.
5989             """
5990             anObj = self.ShapesOp.GetSame(theShapeWhere, theShapeWhat)
5991             RaiseIfFailed("GetSame", self.ShapesOp)
5992             self._autoPublish(anObj, theName, "sameShape")
5993             return anObj
5994
5995
5996         ## Get sub-shape indices of theShapeWhere, which is
5997         #  equal to \a theShapeWhat.
5998         #  @param theShapeWhere Shape to find sub-shape of.
5999         #  @param theShapeWhat Shape, specifying what to find.
6000         #  @return List of all found sub-shapes indices.
6001         #
6002         #  @ref swig_GetSame "Example"
6003         @ManageTransactions("ShapesOp")
6004         def GetSameIDs(self, theShapeWhere, theShapeWhat):
6005             """
6006             Get sub-shape indices of theShapeWhere, which is
6007             equal to theShapeWhat.
6008
6009             Parameters:
6010                 theShapeWhere Shape to find sub-shape of.
6011                 theShapeWhat Shape, specifying what to find.
6012
6013             Returns:
6014                 List of all found sub-shapes indices.
6015             """
6016             anObj = self.ShapesOp.GetSameIDs(theShapeWhere, theShapeWhat)
6017             RaiseIfFailed("GetSameIDs", self.ShapesOp)
6018             return anObj
6019
6020         ## Resize the input edge with the new Min and Max parameters.
6021         #  The input edge parameters range is [0, 1]. If theMin parameter is
6022         #  negative, the input edge is extended, otherwise it is shrinked by
6023         #  theMin parameter. If theMax is greater than 1, the edge is extended,
6024         #  otherwise it is shrinked by theMax parameter.
6025         #  @param theEdge the input edge to be resized.
6026         #  @param theMin the minimal parameter value.
6027         #  @param theMax the maximal parameter value.
6028         #  @param theName Object name; when specified, this parameter is used
6029         #         for result publication in the study. Otherwise, if automatic
6030         #         publication is switched on, default value is used for result name.
6031         #  @return New GEOM.GEOM_Object, containing the created edge.
6032         #
6033         #  @ref tui_extend "Example"
6034         @ManageTransactions("ShapesOp")
6035         def ExtendEdge(self, theEdge, theMin, theMax, theName=None):
6036             """
6037             Resize the input edge with the new Min and Max parameters.
6038             The input edge parameters range is [0, 1]. If theMin parameter is
6039             negative, the input edge is extended, otherwise it is shrinked by
6040             theMin parameter. If theMax is greater than 1, the edge is extended,
6041             otherwise it is shrinked by theMax parameter.
6042
6043             Parameters:
6044                 theEdge the input edge to be resized.
6045                 theMin the minimal parameter value.
6046                 theMax the maximal parameter value.
6047                 theName Object name; when specified, this parameter is used
6048                         for result publication in the study. Otherwise, if automatic
6049                         publication is switched on, default value is used for result name.
6050
6051             Returns:
6052                 New GEOM.GEOM_Object, containing the created edge.
6053             """
6054             theMin, theMax, Parameters = ParseParameters(theMin, theMax)
6055             anObj = self.ShapesOp.ExtendEdge(theEdge, theMin, theMax)
6056             RaiseIfFailed("ExtendEdge", self.ShapesOp)
6057             anObj.SetParameters(Parameters)
6058             self._autoPublish(anObj, theName, "edge")
6059             return anObj
6060
6061         ## Resize the input face with the new UMin, UMax, VMin and VMax
6062         #  parameters. The input face U and V parameters range is [0, 1]. If
6063         #  theUMin parameter is negative, the input face is extended, otherwise
6064         #  it is shrinked along U direction by theUMin parameter. If theUMax is
6065         #  greater than 1, the face is extended, otherwise it is shrinked along
6066         #  U direction by theUMax parameter. So as for theVMin, theVMax and
6067         #  V direction of the input face.
6068         #  @param theFace the input face to be resized.
6069         #  @param theUMin the minimal U parameter value.
6070         #  @param theUMax the maximal U parameter value.
6071         #  @param theVMin the minimal V parameter value.
6072         #  @param theVMax the maximal V parameter value.
6073         #  @param theName Object name; when specified, this parameter is used
6074         #         for result publication in the study. Otherwise, if automatic
6075         #         publication is switched on, default value is used for result name.
6076         #  @return New GEOM.GEOM_Object, containing the created face.
6077         #
6078         #  @ref tui_extend "Example"
6079         @ManageTransactions("ShapesOp")
6080         def ExtendFace(self, theFace, theUMin, theUMax,
6081                        theVMin, theVMax, theName=None):
6082             """
6083             Resize the input face with the new UMin, UMax, VMin and VMax
6084             parameters. The input face U and V parameters range is [0, 1]. If
6085             theUMin parameter is negative, the input face is extended, otherwise
6086             it is shrinked along U direction by theUMin parameter. If theUMax is
6087             greater than 1, the face is extended, otherwise it is shrinked along
6088             U direction by theUMax parameter. So as for theVMin, theVMax and
6089             V direction of the input face.
6090
6091             Parameters:
6092                 theFace the input face to be resized.
6093                 theUMin the minimal U parameter value.
6094                 theUMax the maximal U parameter value.
6095                 theVMin the minimal V parameter value.
6096                 theVMax the maximal V parameter value.
6097                 theName Object name; when specified, this parameter is used
6098                         for result publication in the study. Otherwise, if automatic
6099                         publication is switched on, default value is used for result name.
6100
6101             Returns:
6102                 New GEOM.GEOM_Object, containing the created face.
6103             """
6104             theUMin, theUMax, theVMin, theVMax, Parameters = ParseParameters(theUMin, theUMax, theVMin, theVMax)
6105             anObj = self.ShapesOp.ExtendFace(theFace, theUMin, theUMax,
6106                                              theVMin, theVMax)
6107             RaiseIfFailed("ExtendFace", self.ShapesOp)
6108             anObj.SetParameters(Parameters)
6109             self._autoPublish(anObj, theName, "face")
6110             return anObj
6111
6112         ## This function takes some face as input parameter and creates new
6113         #  GEOM_Object, i.e. topological shape by extracting underlying surface
6114         #  of the source face and limiting it by the Umin, Umax, Vmin, Vmax
6115         #  parameters of the source face (in the parametrical space).
6116         #  @param theFace the input face.
6117         #  @param theName Object name; when specified, this parameter is used
6118         #         for result publication in the study. Otherwise, if automatic
6119         #         publication is switched on, default value is used for result name.
6120         #  @return New GEOM.GEOM_Object, containing the created face.
6121         #
6122         #  @ref tui_creation_surface "Example"
6123         @ManageTransactions("ShapesOp")
6124         def MakeSurfaceFromFace(self, theFace, theName=None):
6125             """
6126             This function takes some face as input parameter and creates new
6127             GEOM_Object, i.e. topological shape by extracting underlying surface
6128             of the source face and limiting it by the Umin, Umax, Vmin, Vmax
6129             parameters of the source face (in the parametrical space).
6130
6131             Parameters:
6132                 theFace the input face.
6133                 theName Object name; when specified, this parameter is used
6134                         for result publication in the study. Otherwise, if automatic
6135                         publication is switched on, default value is used for result name.
6136
6137             Returns:
6138                 New GEOM.GEOM_Object, containing the created face.
6139             """
6140             anObj = self.ShapesOp.MakeSurfaceFromFace(theFace)
6141             RaiseIfFailed("MakeSurfaceFromFace", self.ShapesOp)
6142             self._autoPublish(anObj, theName, "surface")
6143             return anObj
6144
6145         # end of l4_obtain
6146         ## @}
6147
6148         ## @addtogroup l4_access
6149         ## @{
6150
6151         ## Obtain a composite sub-shape of <VAR>aShape</VAR>, composed from sub-shapes
6152         #  of aShape, selected by their unique IDs inside <VAR>aShape</VAR>
6153         #  @param aShape Shape to get sub-shape of.
6154         #  @param ListOfID List of sub-shapes indices.
6155         #  @param theName Object name; when specified, this parameter is used
6156         #         for result publication in the study. Otherwise, if automatic
6157         #         publication is switched on, default value is used for result name.
6158         #
6159         #  @return Found sub-shape.
6160         #
6161         #  @ref swig_all_decompose "Example"
6162         def GetSubShape(self, aShape, ListOfID, theName=None):
6163             """
6164             Obtain a composite sub-shape of aShape, composed from sub-shapes
6165             of aShape, selected by their unique IDs inside aShape
6166
6167             Parameters:
6168                 aShape Shape to get sub-shape of.
6169                 ListOfID List of sub-shapes indices.
6170                 theName Object name; when specified, this parameter is used
6171                         for result publication in the study. Otherwise, if automatic
6172                         publication is switched on, default value is used for result name.
6173
6174             Returns:
6175                 Found sub-shape.
6176             """
6177             # Example: see GEOM_TestAll.py
6178             anObj = self.AddSubShape(aShape,ListOfID)
6179             self._autoPublish(anObj, theName, "subshape")
6180             return anObj
6181
6182         ## Obtain unique ID of sub-shape <VAR>aSubShape</VAR> inside <VAR>aShape</VAR>
6183         #  of aShape, selected by their unique IDs inside <VAR>aShape</VAR>
6184         #  @param aShape Shape to get sub-shape of.
6185         #  @param aSubShape Sub-shapes of aShape.
6186         #  @return ID of found sub-shape.
6187         #
6188         #  @ref swig_all_decompose "Example"
6189         @ManageTransactions("LocalOp")
6190         def GetSubShapeID(self, aShape, aSubShape):
6191             """
6192             Obtain unique ID of sub-shape aSubShape inside aShape
6193             of aShape, selected by their unique IDs inside aShape
6194
6195             Parameters:
6196                aShape Shape to get sub-shape of.
6197                aSubShape Sub-shapes of aShape.
6198
6199             Returns:
6200                ID of found sub-shape.
6201             """
6202             # Example: see GEOM_TestAll.py
6203             anID = self.LocalOp.GetSubShapeIndex(aShape, aSubShape)
6204             RaiseIfFailed("GetSubShapeIndex", self.LocalOp)
6205             return anID
6206
6207         ## Obtain unique IDs of sub-shapes <VAR>aSubShapes</VAR> inside <VAR>aShape</VAR>
6208         #  This function is provided for performance purpose. The complexity is O(n) with n
6209         #  the number of subobjects of aShape
6210         #  @param aShape Shape to get sub-shape of.
6211         #  @param aSubShapes Sub-shapes of aShape.
6212         #  @return list of IDs of found sub-shapes.
6213         #
6214         #  @ref swig_all_decompose "Example"
6215         @ManageTransactions("ShapesOp")
6216         def GetSubShapesIDs(self, aShape, aSubShapes):
6217             """
6218             Obtain a list of IDs of sub-shapes aSubShapes inside aShape
6219             This function is provided for performance purpose. The complexity is O(n) with n
6220             the number of subobjects of aShape
6221
6222             Parameters:
6223                aShape Shape to get sub-shape of.
6224                aSubShapes Sub-shapes of aShape.
6225
6226             Returns:
6227                List of IDs of found sub-shape.
6228             """
6229             # Example: see GEOM_TestAll.py
6230             anIDs = self.ShapesOp.GetSubShapesIndices(aShape, aSubShapes)
6231             RaiseIfFailed("GetSubShapesIndices", self.ShapesOp)
6232             return anIDs
6233
6234         # end of l4_access
6235         ## @}
6236
6237         ## @addtogroup l4_decompose
6238         ## @{
6239
6240         ## Get all sub-shapes and groups of \a theShape,
6241         #  that were created already by any other methods.
6242         #  @param theShape Any shape.
6243         #  @param theGroupsOnly If this parameter is TRUE, only groups will be
6244         #                       returned, else all found sub-shapes and groups.
6245         #  @return List of existing sub-objects of \a theShape.
6246         #
6247         #  @ref swig_all_decompose "Example"
6248         @ManageTransactions("ShapesOp")
6249         def GetExistingSubObjects(self, theShape, theGroupsOnly = False):
6250             """
6251             Get all sub-shapes and groups of theShape,
6252             that were created already by any other methods.
6253
6254             Parameters:
6255                 theShape Any shape.
6256                 theGroupsOnly If this parameter is TRUE, only groups will be
6257                                  returned, else all found sub-shapes and groups.
6258
6259             Returns:
6260                 List of existing sub-objects of theShape.
6261             """
6262             # Example: see GEOM_TestAll.py
6263             ListObj = self.ShapesOp.GetExistingSubObjects(theShape, theGroupsOnly)
6264             RaiseIfFailed("GetExistingSubObjects", self.ShapesOp)
6265             return ListObj
6266
6267         ## Get all groups of \a theShape,
6268         #  that were created already by any other methods.
6269         #  @param theShape Any shape.
6270         #  @return List of existing groups of \a theShape.
6271         #
6272         #  @ref swig_all_decompose "Example"
6273         @ManageTransactions("ShapesOp")
6274         def GetGroups(self, theShape):
6275             """
6276             Get all groups of theShape,
6277             that were created already by any other methods.
6278
6279             Parameters:
6280                 theShape Any shape.
6281
6282             Returns:
6283                 List of existing groups of theShape.
6284             """
6285             # Example: see GEOM_TestAll.py
6286             ListObj = self.ShapesOp.GetExistingSubObjects(theShape, True)
6287             RaiseIfFailed("GetExistingSubObjects", self.ShapesOp)
6288             return ListObj
6289
6290         ## Explode a shape on sub-shapes of a given type.
6291         #  If the shape itself matches the type, it is also returned.
6292         #  @param aShape Shape to be exploded.
6293         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6294         #  @param theName Object name; when specified, this parameter is used
6295         #         for result publication in the study. Otherwise, if automatic
6296         #         publication is switched on, default value is used for result name.
6297         #
6298         #  @return List of sub-shapes of type theShapeType, contained in theShape.
6299         #
6300         #  @ref swig_all_decompose "Example"
6301         @ManageTransactions("ShapesOp")
6302         def SubShapeAll(self, aShape, aType, theName=None):
6303             """
6304             Explode a shape on sub-shapes of a given type.
6305             If the shape itself matches the type, it is also returned.
6306
6307             Parameters:
6308                 aShape Shape to be exploded.
6309                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6310                 theName Object name; when specified, this parameter is used
6311                         for result publication in the study. Otherwise, if automatic
6312                         publication is switched on, default value is used for result name.
6313
6314             Returns:
6315                 List of sub-shapes of type theShapeType, contained in theShape.
6316             """
6317             # Example: see GEOM_TestAll.py
6318             ListObj = self.ShapesOp.MakeAllSubShapes(aShape, EnumToLong( aType ), False)
6319             RaiseIfFailed("SubShapeAll", self.ShapesOp)
6320             self._autoPublish(ListObj, theName, "subshape")
6321             return ListObj
6322
6323         ## Explode a shape on sub-shapes of a given type.
6324         #  @param aShape Shape to be exploded.
6325         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6326         #  @return List of IDs of sub-shapes.
6327         #
6328         #  @ref swig_all_decompose "Example"
6329         @ManageTransactions("ShapesOp")
6330         def SubShapeAllIDs(self, aShape, aType):
6331             """
6332             Explode a shape on sub-shapes of a given type.
6333
6334             Parameters:
6335                 aShape Shape to be exploded (see geompy.ShapeType)
6336                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6337
6338             Returns:
6339                 List of IDs of sub-shapes.
6340             """
6341             ListObj = self.ShapesOp.GetAllSubShapesIDs(aShape, EnumToLong( aType ), False)
6342             RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
6343             return ListObj
6344
6345         ## Obtain a compound of sub-shapes of <VAR>aShape</VAR>,
6346         #  selected by their indices in list of all sub-shapes of type <VAR>aType</VAR>.
6347         #  Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6348         #  @param aShape Shape to get sub-shape of.
6349         #  @param ListOfInd List of sub-shapes indices.
6350         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6351         #  @param theName Object name; when specified, this parameter is used
6352         #         for result publication in the study. Otherwise, if automatic
6353         #         publication is switched on, default value is used for result name.
6354         #
6355         #  @return A compound of sub-shapes of aShape.
6356         #
6357         #  @ref swig_all_decompose "Example"
6358         def SubShape(self, aShape, aType, ListOfInd, theName=None):
6359             """
6360             Obtain a compound of sub-shapes of aShape,
6361             selected by their indices in list of all sub-shapes of type aType.
6362             Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6363
6364             Parameters:
6365                 aShape Shape to get sub-shape of.
6366                 ListOfID List of sub-shapes indices.
6367                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6368                 theName Object name; when specified, this parameter is used
6369                         for result publication in the study. Otherwise, if automatic
6370                         publication is switched on, default value is used for result name.
6371
6372             Returns:
6373                 A compound of sub-shapes of aShape.
6374             """
6375             # Example: see GEOM_TestAll.py
6376             ListOfIDs = []
6377             AllShapeIDsList = self.SubShapeAllIDs(aShape, EnumToLong( aType ))
6378             for ind in ListOfInd:
6379                 ListOfIDs.append(AllShapeIDsList[ind - 1])
6380             # note: auto-publishing is done in self.GetSubShape()
6381             anObj = self.GetSubShape(aShape, ListOfIDs, theName)
6382             return anObj
6383
6384         ## Explode a shape on sub-shapes of a given type.
6385         #  Sub-shapes will be sorted taking into account their gravity centers,
6386         #  to provide stable order of sub-shapes. Please see
6387         #  @ref sorting_shapes_page "Description of Sorting Shapes Algorithm".
6388         #  If the shape itself matches the type, it is also returned.
6389         #  @param aShape Shape to be exploded.
6390         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6391         #  @param theName Object name; when specified, this parameter is used
6392         #         for result publication in the study. Otherwise, if automatic
6393         #         publication is switched on, default value is used for result name.
6394         #
6395         #  @return List of sub-shapes of type theShapeType, contained in theShape.
6396         #
6397         #  @ref swig_SubShapeAllSorted "Example"
6398         @ManageTransactions("ShapesOp")
6399         def SubShapeAllSortedCentres(self, aShape, aType, theName=None):
6400             """
6401             Explode a shape on sub-shapes of a given type.
6402             Sub-shapes will be sorted taking into account their gravity centers,
6403             to provide stable order of sub-shapes.
6404             If the shape itself matches the type, it is also returned.
6405
6406             Parameters:
6407                 aShape Shape to be exploded.
6408                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6409                 theName Object name; when specified, this parameter is used
6410                         for result publication in the study. Otherwise, if automatic
6411                         publication is switched on, default value is used for result name.
6412
6413             Returns:
6414                 List of sub-shapes of type theShapeType, contained in theShape.
6415             """
6416             # Example: see GEOM_TestAll.py
6417             ListObj = self.ShapesOp.MakeAllSubShapes(aShape, EnumToLong( aType ), True)
6418             RaiseIfFailed("SubShapeAllSortedCentres", self.ShapesOp)
6419             self._autoPublish(ListObj, theName, "subshape")
6420             return ListObj
6421
6422         ## Explode a shape on sub-shapes of a given type.
6423         #  Sub-shapes will be sorted taking into account their gravity centers,
6424         #  to provide stable order of sub-shapes. Please see
6425         #  @ref sorting_shapes_page "Description of Sorting Shapes Algorithm".
6426         #  @param aShape Shape to be exploded.
6427         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6428         #  @return List of IDs of sub-shapes.
6429         #
6430         #  @ref swig_all_decompose "Example"
6431         @ManageTransactions("ShapesOp")
6432         def SubShapeAllSortedCentresIDs(self, aShape, aType):
6433             """
6434             Explode a shape on sub-shapes of a given type.
6435             Sub-shapes will be sorted taking into account their gravity centers,
6436             to provide stable order of sub-shapes.
6437
6438             Parameters:
6439                 aShape Shape to be exploded.
6440                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6441
6442             Returns:
6443                 List of IDs of sub-shapes.
6444             """
6445             ListIDs = self.ShapesOp.GetAllSubShapesIDs(aShape, EnumToLong( aType ), True)
6446             RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
6447             return ListIDs
6448
6449         ## Obtain a compound of sub-shapes of <VAR>aShape</VAR>,
6450         #  selected by they indices in sorted list of all sub-shapes of type <VAR>aType</VAR>.
6451         #  Please see @ref sorting_shapes_page "Description of Sorting Shapes Algorithm".
6452         #  Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6453         #  @param aShape Shape to get sub-shape of.
6454         #  @param ListOfInd List of sub-shapes indices.
6455         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6456         #  @param theName Object name; when specified, this parameter is used
6457         #         for result publication in the study. Otherwise, if automatic
6458         #         publication is switched on, default value is used for result name.
6459         #
6460         #  @return A compound of sub-shapes of aShape.
6461         #
6462         #  @ref swig_all_decompose "Example"
6463         def SubShapeSortedCentres(self, aShape, aType, ListOfInd, theName=None):
6464             """
6465             Obtain a compound of sub-shapes of aShape,
6466             selected by they indices in sorted list of all sub-shapes of type aType.
6467             Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6468
6469             Parameters:
6470                 aShape Shape to get sub-shape of.
6471                 ListOfID List of sub-shapes indices.
6472                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6473                 theName Object name; when specified, this parameter is used
6474                         for result publication in the study. Otherwise, if automatic
6475                         publication is switched on, default value is used for result name.
6476
6477             Returns:
6478                 A compound of sub-shapes of aShape.
6479             """
6480             # Example: see GEOM_TestAll.py
6481             ListOfIDs = []
6482             AllShapeIDsList = self.SubShapeAllSortedCentresIDs(aShape, EnumToLong( aType ))
6483             for ind in ListOfInd:
6484                 ListOfIDs.append(AllShapeIDsList[ind - 1])
6485             # note: auto-publishing is done in self.GetSubShape()
6486             anObj = self.GetSubShape(aShape, ListOfIDs, theName)
6487             return anObj
6488
6489         ## Extract shapes (excluding the main shape) of given type.
6490         #  @param aShape The shape.
6491         #  @param aType  The shape type (see ShapeType())
6492         #  @param isSorted Boolean flag to switch sorting on/off. Please see
6493         #         @ref sorting_shapes_page "Description of Sorting Shapes Algorithm".
6494         #  @param theName Object name; when specified, this parameter is used
6495         #         for result publication in the study. Otherwise, if automatic
6496         #         publication is switched on, default value is used for result name.
6497         #
6498         #  @return List of sub-shapes of type aType, contained in aShape.
6499         #
6500         #  @ref swig_FilletChamfer "Example"
6501         @ManageTransactions("ShapesOp")
6502         def ExtractShapes(self, aShape, aType, isSorted = False, theName=None):
6503             """
6504             Extract shapes (excluding the main shape) of given type.
6505
6506             Parameters:
6507                 aShape The shape.
6508                 aType  The shape type (see geompy.ShapeType)
6509                 isSorted Boolean flag to switch sorting on/off.
6510                 theName Object name; when specified, this parameter is used
6511                         for result publication in the study. Otherwise, if automatic
6512                         publication is switched on, default value is used for result name.
6513
6514             Returns:
6515                 List of sub-shapes of type aType, contained in aShape.
6516             """
6517             # Example: see GEOM_TestAll.py
6518             ListObj = self.ShapesOp.ExtractSubShapes(aShape, EnumToLong( aType ), isSorted)
6519             RaiseIfFailed("ExtractSubShapes", self.ShapesOp)
6520             self._autoPublish(ListObj, theName, "subshape")
6521             return ListObj
6522
6523         ## Get a set of sub-shapes defined by their unique IDs inside <VAR>aShape</VAR>
6524         #  @param aShape Main shape.
6525         #  @param anIDs List of unique IDs of sub-shapes inside <VAR>aShape</VAR>.
6526         #  @param theName Object name; when specified, this parameter is used
6527         #         for result publication in the study. Otherwise, if automatic
6528         #         publication is switched on, default value is used for result name.
6529         #  @return List of GEOM.GEOM_Object, corresponding to found sub-shapes.
6530         #
6531         #  @ref swig_all_decompose "Example"
6532         @ManageTransactions("ShapesOp")
6533         def SubShapes(self, aShape, anIDs, theName=None):
6534             """
6535             Get a set of sub-shapes defined by their unique IDs inside theMainShape
6536
6537             Parameters:
6538                 aShape Main shape.
6539                 anIDs List of unique IDs of sub-shapes inside theMainShape.
6540                 theName Object name; when specified, this parameter is used
6541                         for result publication in the study. Otherwise, if automatic
6542                         publication is switched on, default value is used for result name.
6543
6544             Returns:
6545                 List of GEOM.GEOM_Object, corresponding to found sub-shapes.
6546             """
6547             # Example: see GEOM_TestAll.py
6548             ListObj = self.ShapesOp.MakeSubShapes(aShape, anIDs)
6549             RaiseIfFailed("SubShapes", self.ShapesOp)
6550             self._autoPublish(ListObj, theName, "subshape")
6551             return ListObj
6552
6553         ## Explode a shape into edges sorted in a row from a starting point.
6554         #  @param theShape the shape to be exploded on edges.
6555         #  @param theStartPoint the starting point.
6556         #  @param theName Object name; when specified, this parameter is used
6557         #         for result publication in the study. Otherwise, if automatic
6558         #         publication is switched on, default value is used for result name.
6559         #  @return List of GEOM.GEOM_Object that is actually an ordered list
6560         #          of edges sorted in a row from a starting point.
6561         #
6562         #  @ref swig_GetSubShapeEdgeSorted "Example"
6563         @ManageTransactions("ShapesOp")
6564         def GetSubShapeEdgeSorted(self, theShape, theStartPoint, theName=None):
6565             """
6566             Explode a shape into edges sorted in a row from a starting point.
6567
6568             Parameters:
6569                 theShape the shape to be exploded on edges.
6570                 theStartPoint the starting point.
6571                 theName Object name; when specified, this parameter is used
6572                         for result publication in the study. Otherwise, if automatic
6573                         publication is switched on, default value is used for result name.
6574
6575             Returns:
6576                 List of GEOM.GEOM_Object that is actually an ordered list
6577                 of edges sorted in a row from a starting point.
6578             """
6579             # Example: see GEOM_TestAll.py
6580             ListObj = self.ShapesOp.GetSubShapeEdgeSorted(theShape, theStartPoint)
6581             RaiseIfFailed("GetSubShapeEdgeSorted", self.ShapesOp)
6582             self._autoPublish(ListObj, theName, "SortedEdges")
6583             return ListObj
6584
6585         ##
6586         # Return the list of subshapes that satisfies a certain tolerance
6587         # criterion. The user defines the type of shapes to be returned, the
6588         # condition and the tolerance value. The operation is defined for
6589         # faces, edges and vertices only. E.g. for theShapeType FACE,
6590         # theCondition GEOM::CC_GT and theTolerance 1.e-7 this method returns
6591         # all faces of theShape that have tolerances greater then 1.e7.
6592         #
6593         #  @param theShape the shape to be exploded
6594         #  @param theShapeType the type of sub-shapes to be returned (see
6595         #         ShapeType()). Can have the values FACE, EDGE and VERTEX only.
6596         #  @param theCondition the condition type (see GEOM::comparison_condition).
6597         #  @param theTolerance the tolerance filter.
6598         #  @param theName Object name; when specified, this parameter is used
6599         #         for result publication in the study. Otherwise, if automatic
6600         #         publication is switched on, default value is used for result name.
6601         #  @return the list of shapes that satisfy the conditions.
6602         #
6603         #  @ref swig_GetSubShapesWithTolerance "Example"
6604         @ManageTransactions("ShapesOp")
6605         def GetSubShapesWithTolerance(self, theShape, theShapeType,
6606                                       theCondition, theTolerance, theName=None):
6607             """
6608             Return the list of subshapes that satisfies a certain tolerance
6609             criterion. The user defines the type of shapes to be returned, the
6610             condition and the tolerance value. The operation is defined for
6611             faces, edges and vertices only. E.g. for theShapeType FACE,
6612             theCondition GEOM::CC_GT and theTolerance 1.e-7 this method returns
6613             all faces of theShape that have tolerances greater then 1.e7.
6614             
6615             Parameters:
6616                 theShape the shape to be exploded
6617                 theShapeType the type of sub-shapes to be returned (see
6618                              ShapeType()). Can have the values FACE,
6619                              EDGE and VERTEX only.
6620                 theCondition the condition type (see GEOM::comparison_condition).
6621                 theTolerance the tolerance filter.
6622                 theName Object name; when specified, this parameter is used
6623                         for result publication in the study. Otherwise, if automatic
6624                         publication is switched on, default value is used for result name.
6625
6626             Returns:
6627                 The list of shapes that satisfy the conditions.
6628             """
6629             # Example: see GEOM_TestAll.py
6630             ListObj = self.ShapesOp.GetSubShapesWithTolerance(theShape, EnumToLong(theShapeType),
6631                                                               theCondition, theTolerance)
6632             RaiseIfFailed("GetSubShapesWithTolerance", self.ShapesOp)
6633             self._autoPublish(ListObj, theName, "SubShapeWithTolerance")
6634             return ListObj
6635
6636         ## Check if the object is a sub-object of another GEOM object.
6637         #  @param aSubObject Checked sub-object (or its parent object, in case if
6638         #         \a theSubObjectIndex is non-zero).
6639         #  @param anObject An object that is checked for ownership (or its parent object,
6640         #         in case if \a theObjectIndex is non-zero).
6641         #  @param aSubObjectIndex When non-zero, specifies a sub-shape index that
6642         #         identifies a sub-object within its parent specified via \a theSubObject.
6643         #  @param anObjectIndex When non-zero, specifies a sub-shape index that
6644         #         identifies an object within its parent specified via \a theObject.
6645         #  @return TRUE, if the given object contains sub-object.
6646         @ManageTransactions("ShapesOp")
6647         def IsSubShapeBelongsTo(self, aSubObject, anObject, aSubObjectIndex = 0, anObjectIndex = 0):
6648             """
6649             Check if the object is a sub-object of another GEOM object.
6650             
6651             Parameters:
6652                 aSubObject Checked sub-object (or its parent object, in case if
6653                     \a theSubObjectIndex is non-zero).
6654                 anObject An object that is checked for ownership (or its parent object,
6655                     in case if \a theObjectIndex is non-zero).
6656                 aSubObjectIndex When non-zero, specifies a sub-shape index that
6657                     identifies a sub-object within its parent specified via \a theSubObject.
6658                 anObjectIndex When non-zero, specifies a sub-shape index that
6659                     identifies an object within its parent specified via \a theObject.
6660
6661             Returns
6662                 TRUE, if the given object contains sub-object.
6663             """
6664             IsOk = self.ShapesOp.IsSubShapeBelongsTo(aSubObject, aSubObjectIndex, anObject, anObjectIndex)
6665             RaiseIfFailed("IsSubShapeBelongsTo", self.ShapesOp)
6666             return IsOk
6667
6668         ## Perform extraction of sub-shapes from the main shape.
6669         #
6670         #  @param theShape the main shape
6671         #  @param theListOfID the list of sub-shape IDs to be extracted from
6672         #         the main shape.
6673         #  @return New GEOM.GEOM_Object, containing the shape without
6674         #          extracted sub-shapes.
6675         #
6676         #  @ref swig_MakeExtraction "Example"
6677         @ManageTransactions("ShapesOp")
6678         def MakeExtraction(self, theShape, theListOfID, theName=None):
6679             """
6680             Perform extraction of sub-shapes from the main shape.
6681
6682             Parameters:
6683                 theShape the main shape
6684                 theListOfID the list of sub-shape IDs to be extracted from
6685                             the main shape.
6686
6687             Returns
6688                 New GEOM.GEOM_Object, containing the shape without
6689                 extracted sub-shapes.
6690             """
6691             # Example: see GEOM_TestAll.py
6692             (anObj, aStat) = self.ShapesOp.MakeExtraction(theShape, theListOfID)
6693             RaiseIfFailed("MakeExtraction", self.ShapesOp)
6694             self._autoPublish(anObj, theName, "Extraction")
6695             return anObj
6696
6697         # end of l4_decompose
6698         ## @}
6699
6700         ## @addtogroup l4_decompose_d
6701         ## @{
6702
6703         ## Deprecated method
6704         #  It works like SubShapeAllSortedCentres(), but wrongly
6705         #  defines centres of faces, shells and solids.
6706         @ManageTransactions("ShapesOp")
6707         def SubShapeAllSorted(self, aShape, aType, theName=None):
6708             """
6709             Deprecated method
6710             It works like geompy.SubShapeAllSortedCentres, but wrongly
6711             defines centres of faces, shells and solids.
6712             """
6713             ListObj = self.ShapesOp.MakeExplode(aShape, EnumToLong( aType ), True)
6714             RaiseIfFailed("MakeExplode", self.ShapesOp)
6715             self._autoPublish(ListObj, theName, "subshape")
6716             return ListObj
6717
6718         ## Deprecated method
6719         #  It works like SubShapeAllSortedCentresIDs(), but wrongly
6720         #  defines centres of faces, shells and solids.
6721         @ManageTransactions("ShapesOp")
6722         def SubShapeAllSortedIDs(self, aShape, aType):
6723             """
6724             Deprecated method
6725             It works like geompy.SubShapeAllSortedCentresIDs, but wrongly
6726             defines centres of faces, shells and solids.
6727             """
6728             ListIDs = self.ShapesOp.SubShapeAllIDs(aShape, EnumToLong( aType ), True)
6729             RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
6730             return ListIDs
6731
6732         ## Deprecated method
6733         #  It works like SubShapeSortedCentres(), but has a bug
6734         #  (wrongly defines centres of faces, shells and solids).
6735         def SubShapeSorted(self, aShape, aType, ListOfInd, theName=None):
6736             """
6737             Deprecated method
6738             It works like geompy.SubShapeSortedCentres, but has a bug
6739             (wrongly defines centres of faces, shells and solids).
6740             """
6741             ListOfIDs = []
6742             AllShapeIDsList = self.SubShapeAllSortedIDs(aShape, EnumToLong( aType ))
6743             for ind in ListOfInd:
6744                 ListOfIDs.append(AllShapeIDsList[ind - 1])
6745             # note: auto-publishing is done in self.GetSubShape()
6746             anObj = self.GetSubShape(aShape, ListOfIDs, theName)
6747             return anObj
6748
6749         # end of l4_decompose_d
6750         ## @}
6751
6752         ## @addtogroup l3_healing
6753         ## @{
6754
6755         ## Apply a sequence of Shape Healing operators to the given object.
6756         #  @param theShape Shape to be processed.
6757         #  @param theOperators List of names of operators ("FixShape", "SplitClosedFaces", etc.).
6758         #  @param theParameters List of names of parameters
6759         #                    ("FixShape.Tolerance3d", "SplitClosedFaces.NbSplitPoints", etc.).
6760         #  @param theValues List of values of parameters, in the same order
6761         #                    as parameters are listed in <VAR>theParameters</VAR> list.
6762         #  @param 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         #  <b> Operators and Parameters: </b> \n
6767         #
6768         #  * \b FixShape - corrects invalid shapes. \n
6769         #  - \b FixShape.Tolerance3d - work tolerance for detection of the problems and correction of them. \n
6770         #  - \b FixShape.MaxTolerance3d - maximal possible tolerance of the shape after correction. \n
6771         #
6772         #  * \b FixFaceSize - removes small faces, such as spots and strips.\n
6773         #  - \b FixFaceSize.Tolerance - defines minimum possible face size. \n
6774         #  - \b DropSmallEdges - removes edges, which merge with neighbouring edges. \n
6775         #  - \b DropSmallEdges.Tolerance3d - defines minimum possible distance between two parallel edges.\n
6776         #  - \b DropSmallSolids - either removes small solids or merges them with neighboring ones. \n
6777         #  - \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
6778         #  - \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
6779         #  - \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
6780         #
6781         #  * \b SplitAngle - splits faces based on conical surfaces, surfaces of revolution and cylindrical
6782         #    surfaces in segments using a certain angle. \n
6783         #  - \b SplitAngle.Angle - the central angle of the resulting segments (i.e. we obtain two segments
6784         #    if Angle=180, four if Angle=90, etc). \n
6785         #  - \b SplitAngle.MaxTolerance - maximum possible tolerance among the resulting segments.\n
6786         #
6787         #  * \b SplitClosedFaces - splits closed faces in segments.
6788         #    The number of segments depends on the number of splitting points.\n
6789         #  - \b SplitClosedFaces.NbSplitPoints - the number of splitting points.\n
6790         #
6791         #  * \b SplitContinuity - splits shapes to reduce continuities of curves and surfaces.\n
6792         #  - \b SplitContinuity.Tolerance3d - 3D tolerance for correction of geometry.\n
6793         #  - \b SplitContinuity.SurfaceContinuity - required continuity for surfaces.\n
6794         #  - \b SplitContinuity.CurveContinuity - required continuity for curves.\n
6795         #   This and the previous parameters can take the following values:\n
6796         #   \b Parametric \b Continuity \n
6797         #   \b C0 (Positional Continuity): curves are joined (the end positions of curves or surfaces
6798         #   are coincidental. The curves or surfaces may still meet at an angle, giving rise to a sharp corner or edge).\n
6799         #   \b C1 (Tangential Continuity): first derivatives are equal (the end vectors of curves or surfaces are parallel,
6800         #    ruling out sharp edges).\n
6801         #   \b C2 (Curvature Continuity): first and second derivatives are equal (the end vectors of curves or surfaces
6802         #       are of the same magnitude).\n
6803         #   \b CN N-th derivatives are equal (both the direction and the magnitude of the Nth derivatives of curves
6804         #    or surfaces (d/du C(u)) are the same at junction. \n
6805         #   \b Geometric \b Continuity \n
6806         #   \b G1: first derivatives are proportional at junction.\n
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).\n
6809         #   \b G2: first and second derivatives are proportional at junction.
6810         #   As the names imply, geometric continuity requires the geometry to be continuous, while parametric
6811         #    continuity requires that the underlying parameterization was continuous as well.
6812         #   Parametric continuity of order n implies geometric continuity of order n, but not vice-versa.\n
6813         #
6814         #  * \b BsplineRestriction - converts curves and surfaces to Bsplines and processes them with the following parameters:\n
6815         #  - \b BSplineRestriction.SurfaceMode - approximation of surfaces if restriction is necessary.\n
6816         #  - \b BSplineRestriction.Curve3dMode - conversion of any 3D curve to BSpline and approximation.\n
6817         #  - \b BSplineRestriction.Curve2dMode - conversion of any 2D curve to BSpline and approximation.\n
6818         #  - \b BSplineRestriction.Tolerance3d - defines the possibility of surfaces and 3D curves approximation
6819         #       with the specified parameters.\n
6820         #  - \b BSplineRestriction.Tolerance2d - defines the possibility of surfaces and 2D curves approximation
6821         #       with the specified parameters.\n
6822         #  - \b BSplineRestriction.RequiredDegree - required degree of the resulting BSplines.\n
6823         #  - \b BSplineRestriction.RequiredNbSegments - required maximum number of segments of resultant BSplines.\n
6824         #  - \b BSplineRestriction.Continuity3d - continuity of the resulting surfaces and 3D curves.\n
6825         #  - \b BSplineRestriction.Continuity2d - continuity of the resulting 2D curves.\n
6826         #
6827         #  * \b ToBezier - converts curves and surfaces of any type to Bezier curves and surfaces.\n
6828         #  - \b ToBezier.SurfaceMode - if checked in, allows conversion of surfaces.\n
6829         #  - \b ToBezier.Curve3dMode - if checked in, allows conversion of 3D curves.\n
6830         #  - \b ToBezier.Curve2dMode - if checked in, allows conversion of 2D curves.\n
6831         #  - \b ToBezier.MaxTolerance - defines tolerance for detection and correction of problems.\n
6832         #
6833         #  * \b SameParameter - fixes edges of 2D and 3D curves not having the same parameter.\n
6834         #  - \b SameParameter.Tolerance3d - defines tolerance for fixing of edges.\n
6835         #
6836         #
6837         #  @return New GEOM.GEOM_Object, containing processed shape.
6838         #
6839         #  \n @ref tui_shape_processing "Example"
6840         @ManageTransactions("HealOp")
6841         def ProcessShape(self, theShape, theOperators, theParameters, theValues, theName=None):
6842             """
6843             Apply a sequence of Shape Healing operators to the given object.
6844
6845             Parameters:
6846                 theShape Shape to be processed.
6847                 theValues List of values of parameters, in the same order
6848                           as parameters are listed in theParameters list.
6849                 theOperators List of names of operators ('FixShape', 'SplitClosedFaces', etc.).
6850                 theParameters List of names of parameters
6851                               ('FixShape.Tolerance3d', 'SplitClosedFaces.NbSplitPoints', etc.).
6852                 theName Object name; when specified, this parameter is used
6853                         for result publication in the study. Otherwise, if automatic
6854                         publication is switched on, default value is used for result name.
6855
6856                 Operators and Parameters:
6857
6858                  * FixShape - corrects invalid shapes.
6859                      * FixShape.Tolerance3d - work tolerance for detection of the problems and correction of them.
6860                      * FixShape.MaxTolerance3d - maximal possible tolerance of the shape after correction.
6861                  * FixFaceSize - removes small faces, such as spots and strips.
6862                      * FixFaceSize.Tolerance - defines minimum possible face size.
6863                  * DropSmallEdges - removes edges, which merge with neighbouring edges.
6864                      * DropSmallEdges.Tolerance3d - defines minimum possible distance between two parallel edges.
6865                  * DropSmallSolids - either removes small solids or merges them with neighboring ones.
6866                      * 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.
6867                      * 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.
6868                      * 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.
6869
6870                  * SplitAngle - splits faces based on conical surfaces, surfaces of revolution and cylindrical surfaces
6871                                 in segments using a certain angle.
6872                      * SplitAngle.Angle - the central angle of the resulting segments (i.e. we obtain two segments
6873                                           if Angle=180, four if Angle=90, etc).
6874                      * SplitAngle.MaxTolerance - maximum possible tolerance among the resulting segments.
6875                  * SplitClosedFaces - splits closed faces in segments. The number of segments depends on the number of
6876                                       splitting points.
6877                      * SplitClosedFaces.NbSplitPoints - the number of splitting points.
6878                  * SplitContinuity - splits shapes to reduce continuities of curves and surfaces.
6879                      * SplitContinuity.Tolerance3d - 3D tolerance for correction of geometry.
6880                      * SplitContinuity.SurfaceContinuity - required continuity for surfaces.
6881                      * SplitContinuity.CurveContinuity - required continuity for curves.
6882                        This and the previous parameters can take the following values:
6883
6884                        Parametric Continuity:
6885                        C0 (Positional Continuity): curves are joined (the end positions of curves or surfaces are
6886                                                    coincidental. The curves or surfaces may still meet at an angle,
6887                                                    giving rise to a sharp corner or edge).
6888                        C1 (Tangential Continuity): first derivatives are equal (the end vectors of curves or surfaces
6889                                                    are parallel, ruling out sharp edges).
6890                        C2 (Curvature Continuity): first and second derivatives are equal (the end vectors of curves
6891                                                   or surfaces are of the same magnitude).
6892                        CN N-th derivatives are equal (both the direction and the magnitude of the Nth derivatives of
6893                           curves or surfaces (d/du C(u)) are the same at junction.
6894
6895                        Geometric Continuity:
6896                        G1: first derivatives are proportional at junction.
6897                            The curve tangents thus have the same direction, but not necessarily the same magnitude.
6898                            i.e., C1'(1) = (a,b,c) and C2'(0) = (k*a, k*b, k*c).
6899                        G2: first and second derivatives are proportional at junction. As the names imply,
6900                            geometric continuity requires the geometry to be continuous, while parametric continuity requires
6901                            that the underlying parameterization was continuous as well. Parametric continuity of order n implies
6902                            geometric continuity of order n, but not vice-versa.
6903                  * BsplineRestriction - converts curves and surfaces to Bsplines and processes them with the following parameters:
6904                      * BSplineRestriction.SurfaceMode - approximation of surfaces if restriction is necessary.
6905                      * BSplineRestriction.Curve3dMode - conversion of any 3D curve to BSpline and approximation.
6906                      * BSplineRestriction.Curve2dMode - conversion of any 2D curve to BSpline and approximation.
6907                      * BSplineRestriction.Tolerance3d - defines the possibility of surfaces and 3D curves approximation with
6908                                                         the specified parameters.
6909                      * BSplineRestriction.Tolerance2d - defines the possibility of surfaces and 2D curves approximation with
6910                                                         the specified parameters.
6911                      * BSplineRestriction.RequiredDegree - required degree of the resulting BSplines.
6912                      * BSplineRestriction.RequiredNbSegments - required maximum number of segments of resultant BSplines.
6913                      * BSplineRestriction.Continuity3d - continuity of the resulting surfaces and 3D curves.
6914                      * BSplineRestriction.Continuity2d - continuity of the resulting 2D curves.
6915                  * ToBezier - converts curves and surfaces of any type to Bezier curves and surfaces.
6916                      * ToBezier.SurfaceMode - if checked in, allows conversion of surfaces.
6917                      * ToBezier.Curve3dMode - if checked in, allows conversion of 3D curves.
6918                      * ToBezier.Curve2dMode - if checked in, allows conversion of 2D curves.
6919                      * ToBezier.MaxTolerance - defines tolerance for detection and correction of problems.
6920                  * SameParameter - fixes edges of 2D and 3D curves not having the same parameter.
6921                      * SameParameter.Tolerance3d - defines tolerance for fixing of edges.
6922
6923             Returns:
6924                 New GEOM.GEOM_Object, containing processed shape.
6925
6926             Note: For more information look through SALOME Geometry User's Guide->
6927                   -> Introduction to Geometry-> Repairing Operations-> Shape Processing
6928             """
6929             # Example: see GEOM_TestHealing.py
6930             theValues,Parameters = ParseList(theValues)
6931             anObj = self.HealOp.ProcessShape(theShape, theOperators, theParameters, theValues)
6932             # To avoid script failure in case of good argument shape
6933             if self.HealOp.GetErrorCode() == "ShHealOper_NotError_msg":
6934                 return theShape
6935             RaiseIfFailed("ProcessShape", self.HealOp)
6936             for string in (theOperators + theParameters):
6937                 Parameters = ":" + Parameters
6938                 pass
6939             anObj.SetParameters(Parameters)
6940             self._autoPublish(anObj, theName, "healed")
6941             return anObj
6942
6943         ## Remove faces from the given object (shape).
6944         #  @param theObject Shape to be processed.
6945         #  @param theFaces Indices of faces to be removed, if EMPTY then the method
6946         #                  removes ALL faces of the given object.
6947         #  @param theName Object name; when specified, this parameter is used
6948         #         for result publication in the study. Otherwise, if automatic
6949         #         publication is switched on, default value is used for result name.
6950         #
6951         #  @return New GEOM.GEOM_Object, containing processed shape.
6952         #
6953         #  @ref tui_suppress_faces "Example"
6954         @ManageTransactions("HealOp")
6955         def SuppressFaces(self, theObject, theFaces, theName=None):
6956             """
6957             Remove faces from the given object (shape).
6958
6959             Parameters:
6960                 theObject Shape to be processed.
6961                 theFaces Indices of faces to be removed, if EMPTY then the method
6962                          removes ALL faces of the given object.
6963                 theName Object name; when specified, this parameter is used
6964                         for result publication in the study. Otherwise, if automatic
6965                         publication is switched on, default value is used for result name.
6966
6967             Returns:
6968                 New GEOM.GEOM_Object, containing processed shape.
6969             """
6970             # Example: see GEOM_TestHealing.py
6971             anObj = self.HealOp.SuppressFaces(theObject, theFaces)
6972             RaiseIfFailed("SuppressFaces", self.HealOp)
6973             self._autoPublish(anObj, theName, "suppressFaces")
6974             return anObj
6975
6976         ## Sewing of faces into a single shell.
6977         #  @param ListShape Shapes to be processed.
6978         #  @param theTolerance Required tolerance value.
6979         #  @param AllowNonManifold Flag that allows non-manifold sewing.
6980         #  @param theName Object name; when specified, this parameter is used
6981         #         for result publication in the study. Otherwise, if automatic
6982         #         publication is switched on, default value is used for result name.
6983         #
6984         #  @return New GEOM.GEOM_Object, containing a result shell.
6985         #
6986         #  @ref tui_sewing "Example"
6987         def MakeSewing(self, ListShape, theTolerance, AllowNonManifold=False, theName=None):
6988             """
6989             Sewing of faces into a single shell.
6990
6991             Parameters:
6992                 ListShape Shapes to be processed.
6993                 theTolerance Required tolerance value.
6994                 AllowNonManifold Flag that allows non-manifold sewing.
6995                 theName Object name; when specified, this parameter is used
6996                         for result publication in the study. Otherwise, if automatic
6997                         publication is switched on, default value is used for result name.
6998
6999             Returns:
7000                 New GEOM.GEOM_Object, containing containing a result shell.
7001             """
7002             # Example: see GEOM_TestHealing.py
7003             # note: auto-publishing is done in self.Sew()
7004             anObj = self.Sew(ListShape, theTolerance, AllowNonManifold, theName)
7005             return anObj
7006
7007         ## Sewing of faces into a single shell.
7008         #  @param ListShape Shapes to be processed.
7009         #  @param theTolerance Required tolerance value.
7010         #  @param AllowNonManifold Flag that allows non-manifold sewing.
7011         #  @param theName Object name; when specified, this parameter is used
7012         #         for result publication in the study. Otherwise, if automatic
7013         #         publication is switched on, default value is used for result name.
7014         #
7015         #  @return New GEOM.GEOM_Object, containing a result shell.
7016         @ManageTransactions("HealOp")
7017         def Sew(self, ListShape, theTolerance, AllowNonManifold=False, theName=None):
7018             """
7019             Sewing of faces into a single shell.
7020
7021             Parameters:
7022                 ListShape Shapes to be processed.
7023                 theTolerance Required tolerance value.
7024                 AllowNonManifold Flag that allows non-manifold sewing.
7025                 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             Returns:
7030                 New GEOM.GEOM_Object, containing a result shell.
7031             """
7032             # Example: see MakeSewing() above
7033             theTolerance,Parameters = ParseParameters(theTolerance)
7034             if AllowNonManifold:
7035                 anObj = self.HealOp.SewAllowNonManifold( ToList( ListShape ), theTolerance)
7036             else:
7037                 anObj = self.HealOp.Sew( ToList( ListShape ), theTolerance)
7038             # To avoid script failure in case of good argument shape
7039             # (Fix of test cases geom/bugs11/L7,L8)
7040             if self.HealOp.GetErrorCode() == "ShHealOper_NotError_msg":
7041                 return anObj
7042             RaiseIfFailed("Sew", self.HealOp)
7043             anObj.SetParameters(Parameters)
7044             self._autoPublish(anObj, theName, "sewed")
7045             return anObj
7046
7047         ## Rebuild the topology of theSolids by removing
7048         #  the faces that are shared by several solids.
7049         #  @param theSolids A compound or a list of solids to be processed.
7050         #  @param theName Object name; when specified, this parameter is used
7051         #         for result publication in the study. Otherwise, if automatic
7052         #         publication is switched on, default value is used for result name.
7053         #
7054         #  @return New GEOM.GEOM_Object, containing processed shape.
7055         #
7056         #  @ref tui_remove_webs "Example"
7057         @ManageTransactions("HealOp")
7058         def RemoveInternalFaces (self, theSolids, theName=None):
7059             """
7060             Rebuild the topology of theSolids by removing
7061             the faces that are shared by several solids.
7062
7063             Parameters:
7064                 theSolids A compound or a list of solids to be processed.
7065                 theName Object name; when specified, this parameter is used
7066                         for result publication in the study. Otherwise, if automatic
7067                         publication is switched on, default value is used for result name.
7068
7069             Returns:
7070                 New GEOM.GEOM_Object, containing processed shape.
7071             """
7072             # Example: see GEOM_TestHealing.py
7073             anObj = self.HealOp.RemoveInternalFaces(ToList(theSolids))
7074             RaiseIfFailed("RemoveInternalFaces", self.HealOp)
7075             self._autoPublish(anObj, theName, "removeWebs")
7076             return anObj
7077
7078         ## Remove internal wires and edges from the given object (face).
7079         #  @param theObject Shape to be processed.
7080         #  @param theWires Indices of wires to be removed, if EMPTY then the method
7081         #                  removes ALL internal wires of the given object.
7082         #  @param theName Object name; when specified, this parameter is used
7083         #         for result publication in the study. Otherwise, if automatic
7084         #         publication is switched on, default value is used for result name.
7085         #
7086         #  @return New GEOM.GEOM_Object, containing processed shape.
7087         #
7088         #  @ref tui_suppress_internal_wires "Example"
7089         @ManageTransactions("HealOp")
7090         def SuppressInternalWires(self, theObject, theWires, theName=None):
7091             """
7092             Remove internal wires and edges from the given object (face).
7093
7094             Parameters:
7095                 theObject Shape to be processed.
7096                 theWires Indices of wires to be removed, if EMPTY then the method
7097                          removes ALL internal wires of the given object.
7098                 theName Object name; when specified, this parameter is used
7099                         for result publication in the study. Otherwise, if automatic
7100                         publication is switched on, default value is used for result name.
7101
7102             Returns:
7103                 New GEOM.GEOM_Object, containing processed shape.
7104             """
7105             # Example: see GEOM_TestHealing.py
7106             anObj = self.HealOp.RemoveIntWires(theObject, theWires)
7107             RaiseIfFailed("RemoveIntWires", self.HealOp)
7108             self._autoPublish(anObj, theName, "suppressWires")
7109             return anObj
7110
7111         ## Remove internal closed contours (holes) from the given object.
7112         #  @param theObject Shape to be processed.
7113         #  @param theWires Indices of wires to be removed, if EMPTY then the method
7114         #                  removes ALL internal holes of the given object
7115         #  @param theName Object name; when specified, this parameter is used
7116         #         for result publication in the study. Otherwise, if automatic
7117         #         publication is switched on, default value is used for result name.
7118         #
7119         #  @return New GEOM.GEOM_Object, containing processed shape.
7120         #
7121         #  @ref tui_suppress_holes "Example"
7122         @ManageTransactions("HealOp")
7123         def SuppressHoles(self, theObject, theWires, theName=None):
7124             """
7125             Remove internal closed contours (holes) from the given object.
7126
7127             Parameters:
7128                 theObject Shape to be processed.
7129                 theWires Indices of wires to be removed, if EMPTY then the method
7130                          removes ALL internal holes of the given object
7131                 theName Object name; when specified, this parameter is used
7132                         for result publication in the study. Otherwise, if automatic
7133                         publication is switched on, default value is used for result name.
7134
7135             Returns:
7136                 New GEOM.GEOM_Object, containing processed shape.
7137             """
7138             # Example: see GEOM_TestHealing.py
7139             anObj = self.HealOp.FillHoles(theObject, theWires)
7140             RaiseIfFailed("FillHoles", self.HealOp)
7141             self._autoPublish(anObj, theName, "suppressHoles")
7142             return anObj
7143
7144         ## Close an open wire.
7145         #  @param theObject Shape to be processed.
7146         #  @param theWires Indexes of edge(s) and wire(s) to be closed within <VAR>theObject</VAR>'s shape,
7147         #                  if [ ], then <VAR>theObject</VAR> itself is a wire.
7148         #  @param isCommonVertex If True  : closure by creation of a common vertex,
7149         #                        If False : closure by creation of an edge between ends.
7150         #  @param theName Object name; when specified, this parameter is used
7151         #         for result publication in the study. Otherwise, if automatic
7152         #         publication is switched on, default value is used for result name.
7153         #
7154         #  @return New GEOM.GEOM_Object, containing processed shape.
7155         #
7156         #  @ref tui_close_contour "Example"
7157         @ManageTransactions("HealOp")
7158         def CloseContour(self,theObject, theWires, isCommonVertex, theName=None):
7159             """
7160             Close an open wire.
7161
7162             Parameters:
7163                 theObject Shape to be processed.
7164                 theWires Indexes of edge(s) and wire(s) to be closed within theObject's shape,
7165                          if [ ], then theObject itself is a wire.
7166                 isCommonVertex If True  : closure by creation of a common vertex,
7167                                If False : closure by creation of an edge between ends.
7168                 theName Object name; when specified, this parameter is used
7169                         for result publication in the study. Otherwise, if automatic
7170                         publication is switched on, default value is used for result name.
7171
7172             Returns:
7173                 New GEOM.GEOM_Object, containing processed shape.
7174             """
7175             # Example: see GEOM_TestHealing.py
7176             anObj = self.HealOp.CloseContour(theObject, theWires, isCommonVertex)
7177             RaiseIfFailed("CloseContour", self.HealOp)
7178             self._autoPublish(anObj, theName, "closeContour")
7179             return anObj
7180
7181         ## Addition of a point to a given edge object.
7182         #  @param theObject Shape to be processed.
7183         #  @param theEdgeIndex Index of edge to be divided within theObject's shape,
7184         #                      if -1, then theObject itself is the edge.
7185         #  @param theValue Value of parameter on edge or length parameter,
7186         #                  depending on \a isByParameter.
7187         #  @param isByParameter If TRUE : \a theValue is treated as a curve parameter [0..1], \n
7188         #                       if FALSE : \a theValue is treated as a length parameter [0..1]
7189         #  @param theName Object name; when specified, this parameter is used
7190         #         for result publication in the study. Otherwise, if automatic
7191         #         publication is switched on, default value is used for result name.
7192         #
7193         #  @return New GEOM.GEOM_Object, containing processed shape.
7194         #
7195         #  @ref tui_add_point_on_edge "Example"
7196         @ManageTransactions("HealOp")
7197         def DivideEdge(self, theObject, theEdgeIndex, theValue, isByParameter, theName=None):
7198             """
7199             Addition of a point to a given edge object.
7200
7201             Parameters:
7202                 theObject Shape to be processed.
7203                 theEdgeIndex Index of edge to be divided within theObject's shape,
7204                              if -1, then theObject itself is the edge.
7205                 theValue Value of parameter on edge or length parameter,
7206                          depending on isByParameter.
7207                 isByParameter If TRUE :  theValue is treated as a curve parameter [0..1],
7208                               if FALSE : theValue is treated as a length parameter [0..1]
7209                 theName Object name; when specified, this parameter is used
7210                         for result publication in the study. Otherwise, if automatic
7211                         publication is switched on, default value is used for result name.
7212
7213             Returns:
7214                 New GEOM.GEOM_Object, containing processed shape.
7215             """
7216             # Example: see GEOM_TestHealing.py
7217             theEdgeIndex,theValue,isByParameter,Parameters = ParseParameters(theEdgeIndex,theValue,isByParameter)
7218             anObj = self.HealOp.DivideEdge(theObject, theEdgeIndex, theValue, isByParameter)
7219             RaiseIfFailed("DivideEdge", self.HealOp)
7220             anObj.SetParameters(Parameters)
7221             self._autoPublish(anObj, theName, "divideEdge")
7222             return anObj
7223
7224         ## Addition of points to a given edge of \a theObject by projecting
7225         #  other points to the given edge.
7226         #  @param theObject Shape to be processed.
7227         #  @param theEdgeIndex Index of edge to be divided within theObject's shape,
7228         #                      if -1, then theObject itself is the edge.
7229         #  @param thePoints List of points to project to theEdgeIndex-th edge.
7230         #  @param theName Object name; when specified, this parameter is used
7231         #         for result publication in the study. Otherwise, if automatic
7232         #         publication is switched on, default value is used for result name.
7233         #
7234         #  @return New GEOM.GEOM_Object, containing processed shape.
7235         #
7236         #  @ref tui_add_point_on_edge "Example"
7237         @ManageTransactions("HealOp")
7238         def DivideEdgeByPoint(self, theObject, theEdgeIndex, thePoints, theName=None):
7239             """
7240             Addition of points to a given edge of \a theObject by projecting
7241             other points to the given edge.
7242
7243             Parameters:
7244                 theObject Shape to be processed.
7245                 theEdgeIndex The edge or its index to be divided within theObject's shape,
7246                              if -1, then theObject itself is the edge.
7247                 thePoints List of points to project to theEdgeIndex-th edge.
7248                 theName Object name; when specified, this parameter is used
7249                         for result publication in the study. Otherwise, if automatic
7250                         publication is switched on, default value is used for result name.
7251
7252             Returns:
7253                 New GEOM.GEOM_Object, containing processed shape.
7254             """
7255             # Example: see GEOM_TestHealing.py
7256             if isinstance( theEdgeIndex, GEOM._objref_GEOM_Object ):
7257                 theEdgeIndex = self.GetSubShapeID( theObject, theEdgeIndex )
7258             anObj = self.HealOp.DivideEdgeByPoint(theObject, theEdgeIndex, ToList( thePoints ))
7259             RaiseIfFailed("DivideEdgeByPoint", self.HealOp)
7260             self._autoPublish(anObj, theName, "divideEdge")
7261             return anObj
7262
7263         ## Suppress the vertices in the wire in case if adjacent edges are C1 continuous.
7264         #  @param theWire Wire to minimize the number of C1 continuous edges in.
7265         #  @param theVertices A list of vertices to suppress. If the list
7266         #                     is empty, all vertices in a wire will be assumed.
7267         #  @param theName Object name; when specified, this parameter is used
7268         #         for result publication in the study. Otherwise, if automatic
7269         #         publication is switched on, default value is used for result name.
7270         #
7271         #  @return New GEOM.GEOM_Object with modified wire.
7272         #
7273         #  @ref tui_fuse_collinear_edges "Example"
7274         @ManageTransactions("HealOp")
7275         def FuseCollinearEdgesWithinWire(self, theWire, theVertices = [], theName=None):
7276             """
7277             Suppress the vertices in the wire in case if adjacent edges are C1 continuous.
7278
7279             Parameters:
7280                 theWire Wire to minimize the number of C1 continuous edges in.
7281                 theVertices A list of vertices to suppress. If the list
7282                             is empty, all vertices in a wire will be assumed.
7283                 theName Object name; when specified, this parameter is used
7284                         for result publication in the study. Otherwise, if automatic
7285                         publication is switched on, default value is used for result name.
7286
7287             Returns:
7288                 New GEOM.GEOM_Object with modified wire.
7289             """
7290             anObj = self.HealOp.FuseCollinearEdgesWithinWire(theWire, theVertices)
7291             RaiseIfFailed("FuseCollinearEdgesWithinWire", self.HealOp)
7292             self._autoPublish(anObj, theName, "fuseEdges")
7293             return anObj
7294
7295         ## Change orientation of the given object. Updates given shape.
7296         #  @param theObject Shape to be processed.
7297         #  @return Updated <var>theObject</var>
7298         #
7299         #  @ref swig_todo "Example"
7300         @ManageTransactions("HealOp")
7301         def ChangeOrientationShell(self,theObject):
7302             """
7303             Change orientation of the given object. Updates given shape.
7304
7305             Parameters:
7306                 theObject Shape to be processed.
7307
7308             Returns:
7309                 Updated theObject
7310             """
7311             theObject = self.HealOp.ChangeOrientation(theObject)
7312             RaiseIfFailed("ChangeOrientation", self.HealOp)
7313             pass
7314
7315         ## Change orientation of the given object.
7316         #  @param theObject Shape to be processed.
7317         #  @param theName Object name; when specified, this parameter is used
7318         #         for result publication in the study. Otherwise, if automatic
7319         #         publication is switched on, default value is used for result name.
7320         #
7321         #  @return New GEOM.GEOM_Object, containing processed shape.
7322         #
7323         #  @ref swig_todo "Example"
7324         @ManageTransactions("HealOp")
7325         def ChangeOrientationShellCopy(self, theObject, theName=None):
7326             """
7327             Change orientation of the given object.
7328
7329             Parameters:
7330                 theObject Shape to be processed.
7331                 theName Object name; when specified, this parameter is used
7332                         for result publication in the study. Otherwise, if automatic
7333                         publication is switched on, default value is used for result name.
7334
7335             Returns:
7336                 New GEOM.GEOM_Object, containing processed shape.
7337             """
7338             anObj = self.HealOp.ChangeOrientationCopy(theObject)
7339             RaiseIfFailed("ChangeOrientationCopy", self.HealOp)
7340             self._autoPublish(anObj, theName, "reversed")
7341             return anObj
7342
7343         ## Try to limit tolerance of the given object by value \a theTolerance.
7344         #  @param theObject Shape to be processed.
7345         #  @param theTolerance Required tolerance value.
7346         #  @param theName Object name; when specified, this parameter is used
7347         #         for result publication in the study. Otherwise, if automatic
7348         #         publication is switched on, default value is used for result name.
7349         #
7350         #  @return New GEOM.GEOM_Object, containing processed shape.
7351         #
7352         #  @ref tui_limit_tolerance "Example"
7353         @ManageTransactions("HealOp")
7354         def LimitTolerance(self, theObject, theTolerance = 1e-07, theName=None):
7355             """
7356             Try to limit tolerance of the given object by value theTolerance.
7357
7358             Parameters:
7359                 theObject Shape to be processed.
7360                 theTolerance Required tolerance value.
7361                 theName Object name; when specified, this parameter is used
7362                         for result publication in the study. Otherwise, if automatic
7363                         publication is switched on, default value is used for result name.
7364
7365             Returns:
7366                 New GEOM.GEOM_Object, containing processed shape.
7367             """
7368             anObj = self.HealOp.LimitTolerance(theObject, theTolerance)
7369             RaiseIfFailed("LimitTolerance", self.HealOp)
7370             self._autoPublish(anObj, theName, "limitTolerance")
7371             return anObj
7372
7373         ## Get a list of wires (wrapped in GEOM.GEOM_Object-s),
7374         #  that constitute a free boundary of the given shape.
7375         #  @param theObject Shape to get free boundary of.
7376         #  @param theName Object name; when specified, this parameter is used
7377         #         for result publication in the study. Otherwise, if automatic
7378         #         publication is switched on, default value is used for result name.
7379         #
7380         #  @return [\a status, \a theClosedWires, \a theOpenWires]
7381         #  \n \a status: FALSE, if an error(s) occurred during the method execution.
7382         #  \n \a theClosedWires: Closed wires on the free boundary of the given shape.
7383         #  \n \a theOpenWires: Open wires on the free boundary of the given shape.
7384         #
7385         #  @ref tui_free_boundaries_page "Example"
7386         @ManageTransactions("HealOp")
7387         def GetFreeBoundary(self, theObject, theName=None):
7388             """
7389             Get a list of wires (wrapped in GEOM.GEOM_Object-s),
7390             that constitute a free boundary of the given shape.
7391
7392             Parameters:
7393                 theObject Shape to get free boundary of.
7394                 theName Object name; when specified, this parameter is used
7395                         for result publication in the study. Otherwise, if automatic
7396                         publication is switched on, default value is used for result name.
7397
7398             Returns:
7399                 [status, theClosedWires, theOpenWires]
7400                  status: FALSE, if an error(s) occurred during the method execution.
7401                  theClosedWires: Closed wires on the free boundary of the given shape.
7402                  theOpenWires: Open wires on the free boundary of the given shape.
7403             """
7404             # Example: see GEOM_TestHealing.py
7405             anObj = self.HealOp.GetFreeBoundary( ToList( theObject ))
7406             RaiseIfFailed("GetFreeBoundary", self.HealOp)
7407             self._autoPublish(anObj[1], theName, "closedWire")
7408             self._autoPublish(anObj[2], theName, "openWire")
7409             return anObj
7410
7411         ## Replace coincident faces in \a theShapes by one face.
7412         #  @param theShapes Initial shapes, either a list or compound of shapes.
7413         #  @param theTolerance Maximum distance between faces, which can be considered as coincident.
7414         #  @param doKeepNonSolids If FALSE, only solids will present in the result,
7415         #                         otherwise all initial shapes.
7416         #  @param theName Object name; when specified, this parameter is used
7417         #         for result publication in the study. Otherwise, if automatic
7418         #         publication is switched on, default value is used for result name.
7419         #
7420         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7421         #
7422         #  @ref tui_glue_faces "Example"
7423         @ManageTransactions("ShapesOp")
7424         def MakeGlueFaces(self, theShapes, theTolerance, doKeepNonSolids=True, theName=None):
7425             """
7426             Replace coincident faces in theShapes by one face.
7427
7428             Parameters:
7429                 theShapes Initial shapes, either a list or compound of shapes.
7430                 theTolerance Maximum distance between faces, which can be considered as coincident.
7431                 doKeepNonSolids If FALSE, only solids will present in the result,
7432                                 otherwise all initial shapes.
7433                 theName Object name; when specified, this parameter is used
7434                         for result publication in the study. Otherwise, if automatic
7435                         publication is switched on, default value is used for result name.
7436
7437             Returns:
7438                 New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7439             """
7440             # Example: see GEOM_Spanner.py
7441             theTolerance,Parameters = ParseParameters(theTolerance)
7442             anObj = self.ShapesOp.MakeGlueFaces(ToList(theShapes), theTolerance, doKeepNonSolids)
7443             if anObj is None:
7444                 raise RuntimeError, "MakeGlueFaces : " + self.ShapesOp.GetErrorCode()
7445             anObj.SetParameters(Parameters)
7446             self._autoPublish(anObj, theName, "glueFaces")
7447             return anObj
7448
7449         ## Find coincident faces in \a theShapes for possible gluing.
7450         #  @param theShapes Initial shapes, either a list or compound of shapes.
7451         #  @param theTolerance Maximum distance between faces,
7452         #                      which can be considered as coincident.
7453         #  @param theName Object name; when specified, this parameter is used
7454         #         for result publication in the study. Otherwise, if automatic
7455         #         publication is switched on, default value is used for result name.
7456         #
7457         #  @return GEOM.ListOfGO
7458         #
7459         #  @ref tui_glue_faces "Example"
7460         @ManageTransactions("ShapesOp")
7461         def GetGlueFaces(self, theShapes, theTolerance, theName=None):
7462             """
7463             Find coincident faces in theShapes for possible gluing.
7464
7465             Parameters:
7466                 theShapes Initial shapes, either a list or compound of shapes.
7467                 theTolerance Maximum distance between faces,
7468                              which can be considered as coincident.
7469                 theName Object name; when specified, this parameter is used
7470                         for result publication in the study. Otherwise, if automatic
7471                         publication is switched on, default value is used for result name.
7472
7473             Returns:
7474                 GEOM.ListOfGO
7475             """
7476             anObj = self.ShapesOp.GetGlueFaces(ToList(theShapes), theTolerance)
7477             RaiseIfFailed("GetGlueFaces", self.ShapesOp)
7478             self._autoPublish(anObj, theName, "facesToGlue")
7479             return anObj
7480
7481         ## Replace coincident faces in \a theShapes by one face
7482         #  in compliance with given list of faces
7483         #  @param theShapes Initial shapes, either a list or compound of shapes.
7484         #  @param theTolerance Maximum distance between faces,
7485         #                      which can be considered as coincident.
7486         #  @param theFaces List of faces for gluing.
7487         #  @param doKeepNonSolids If FALSE, only solids will present in the result,
7488         #                         otherwise all initial shapes.
7489         #  @param doGlueAllEdges If TRUE, all coincident edges of <VAR>theShape</VAR>
7490         #                        will be glued, otherwise only the edges,
7491         #                        belonging to <VAR>theFaces</VAR>.
7492         #  @param theName Object name; when specified, this parameter is used
7493         #         for result publication in the study. Otherwise, if automatic
7494         #         publication is switched on, default value is used for result name.
7495         #
7496         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7497         #
7498         #  @ref tui_glue_faces "Example"
7499         @ManageTransactions("ShapesOp")
7500         def MakeGlueFacesByList(self, theShapes, theTolerance, theFaces,
7501                                 doKeepNonSolids=True, doGlueAllEdges=True, theName=None):
7502             """
7503             Replace coincident faces in theShapes by one face
7504             in compliance with given list of faces
7505
7506             Parameters:
7507                 theShapes theShapes Initial shapes, either a list or compound of shapes.
7508                 theTolerance Maximum distance between faces,
7509                              which can be considered as coincident.
7510                 theFaces List of faces for gluing.
7511                 doKeepNonSolids If FALSE, only solids will present in the result,
7512                                 otherwise all initial shapes.
7513                 doGlueAllEdges If TRUE, all coincident edges of theShape
7514                                will be glued, otherwise only the edges,
7515                                belonging to theFaces.
7516                 theName Object name; when specified, this parameter is used
7517                         for result publication in the study. Otherwise, if automatic
7518                         publication is switched on, default value is used for result name.
7519
7520             Returns:
7521                 New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7522             """
7523             anObj = self.ShapesOp.MakeGlueFacesByList(ToList(theShapes), theTolerance, ToList(theFaces),
7524                                                       doKeepNonSolids, doGlueAllEdges)
7525             if anObj is None:
7526                 raise RuntimeError, "MakeGlueFacesByList : " + self.ShapesOp.GetErrorCode()
7527             self._autoPublish(anObj, theName, "glueFaces")
7528             return anObj
7529
7530         ## Replace coincident edges in \a theShapes by one edge.
7531         #  @param theShapes Initial shapes, either a list or compound of shapes.
7532         #  @param theTolerance Maximum distance between edges, which can be considered as coincident.
7533         #  @param theName Object name; when specified, this parameter is used
7534         #         for result publication in the study. Otherwise, if automatic
7535         #         publication is switched on, default value is used for result name.
7536         #
7537         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7538         #
7539         #  @ref tui_glue_edges "Example"
7540         @ManageTransactions("ShapesOp")
7541         def MakeGlueEdges(self, theShapes, theTolerance, theName=None):
7542             """
7543             Replace coincident edges in theShapes by one edge.
7544
7545             Parameters:
7546                 theShapes Initial shapes, either a list or compound of shapes.
7547                 theTolerance Maximum distance between edges, which can be considered as coincident.
7548                 theName Object name; when specified, this parameter is used
7549                         for result publication in the study. Otherwise, if automatic
7550                         publication is switched on, default value is used for result name.
7551
7552             Returns:
7553                 New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7554             """
7555             theTolerance,Parameters = ParseParameters(theTolerance)
7556             anObj = self.ShapesOp.MakeGlueEdges(ToList(theShapes), theTolerance)
7557             if anObj is None:
7558                 raise RuntimeError, "MakeGlueEdges : " + self.ShapesOp.GetErrorCode()
7559             anObj.SetParameters(Parameters)
7560             self._autoPublish(anObj, theName, "glueEdges")
7561             return anObj
7562
7563         ## Find coincident edges in \a theShapes for possible gluing.
7564         #  @param theShapes Initial shapes, either a list or compound of shapes.
7565         #  @param theTolerance Maximum distance between edges,
7566         #                      which can be considered as coincident.
7567         #  @param theName Object name; when specified, this parameter is used
7568         #         for result publication in the study. Otherwise, if automatic
7569         #         publication is switched on, default value is used for result name.
7570         #
7571         #  @return GEOM.ListOfGO
7572         #
7573         #  @ref tui_glue_edges "Example"
7574         @ManageTransactions("ShapesOp")
7575         def GetGlueEdges(self, theShapes, theTolerance, theName=None):
7576             """
7577             Find coincident edges in theShapes for possible gluing.
7578
7579             Parameters:
7580                 theShapes Initial shapes, either a list or compound of shapes.
7581                 theTolerance Maximum distance between edges,
7582                              which can be considered as coincident.
7583                 theName Object name; when specified, this parameter is used
7584                         for result publication in the study. Otherwise, if automatic
7585                         publication is switched on, default value is used for result name.
7586
7587             Returns:
7588                 GEOM.ListOfGO
7589             """
7590             anObj = self.ShapesOp.GetGlueEdges(ToList(theShapes), theTolerance)
7591             RaiseIfFailed("GetGlueEdges", self.ShapesOp)
7592             self._autoPublish(anObj, theName, "edgesToGlue")
7593             return anObj
7594
7595         ## Replace coincident edges in theShapes by one edge
7596         #  in compliance with given list of edges.
7597         #  @param theShapes Initial shapes, either a list or compound of shapes.
7598         #  @param theTolerance Maximum distance between edges,
7599         #                      which can be considered as coincident.
7600         #  @param theEdges List of edges for gluing.
7601         #  @param theName Object name; when specified, this parameter is used
7602         #         for result publication in the study. Otherwise, if automatic
7603         #         publication is switched on, default value is used for result name.
7604         #
7605         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7606         #
7607         #  @ref tui_glue_edges "Example"
7608         @ManageTransactions("ShapesOp")
7609         def MakeGlueEdgesByList(self, theShapes, theTolerance, theEdges, theName=None):
7610             """
7611             Replace coincident edges in theShapes by one edge
7612             in compliance with given list of edges.
7613
7614             Parameters:
7615                 theShapes Initial shapes, either a list or compound of shapes.
7616                 theTolerance Maximum distance between edges,
7617                              which can be considered as coincident.
7618                 theEdges List of edges for gluing.
7619                 theName Object name; when specified, this parameter is used
7620                         for result publication in the study. Otherwise, if automatic
7621                         publication is switched on, default value is used for result name.
7622
7623             Returns:
7624                 New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7625             """
7626             anObj = self.ShapesOp.MakeGlueEdgesByList(ToList(theShapes), theTolerance, theEdges)
7627             if anObj is None:
7628                 raise RuntimeError, "MakeGlueEdgesByList : " + self.ShapesOp.GetErrorCode()
7629             self._autoPublish(anObj, theName, "glueEdges")
7630             return anObj
7631
7632         # end of l3_healing
7633         ## @}
7634
7635         ## @addtogroup l3_boolean Boolean Operations
7636         ## @{
7637
7638         # -----------------------------------------------------------------------------
7639         # Boolean (Common, Cut, Fuse, Section)
7640         # -----------------------------------------------------------------------------
7641
7642         ## Perform one of boolean operations on two given shapes.
7643         #  @param theShape1 First argument for boolean operation.
7644         #  @param theShape2 Second argument for boolean operation.
7645         #  @param theOperation Indicates the operation to be done:\n
7646         #                      1 - Common, 2 - Cut, 3 - Fuse, 4 - Section.
7647         #  @param checkSelfInte The flag that tells if the arguments should
7648         #         be checked for self-intersection prior to the operation.
7649         #  @param theName Object name; when specified, this parameter is used
7650         #         for result publication in the study. Otherwise, if automatic
7651         #         publication is switched on, default value is used for result name.
7652         #
7653         #  @note This algorithm doesn't find all types of self-intersections.
7654         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7655         #        vertex/face and edge/face intersections. Face/face
7656         #        intersections detection is switched off as it is a
7657         #        time-consuming operation that gives an impact on performance.
7658         #        To find all self-intersections please use
7659         #        CheckSelfIntersections() method.
7660         #
7661         #  @return New GEOM.GEOM_Object, containing the result shape.
7662         #
7663         #  @ref tui_fuse "Example"
7664         @ManageTransactions("BoolOp")
7665         def MakeBoolean(self, theShape1, theShape2, theOperation, checkSelfInte=False, theName=None):
7666             """
7667             Perform one of boolean operations on two given shapes.
7668
7669             Parameters:
7670                 theShape1 First argument for boolean operation.
7671                 theShape2 Second argument for boolean operation.
7672                 theOperation Indicates the operation to be done:
7673                              1 - Common, 2 - Cut, 3 - Fuse, 4 - Section.
7674                 checkSelfInte The flag that tells if the arguments should
7675                               be checked for self-intersection prior to
7676                               the operation.
7677                 theName Object name; when specified, this parameter is used
7678                         for result publication in the study. Otherwise, if automatic
7679                         publication is switched on, default value is used for result name.
7680
7681             Note:
7682                     This algorithm doesn't find all types of self-intersections.
7683                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7684                     vertex/face and edge/face intersections. Face/face
7685                     intersections detection is switched off as it is a
7686                     time-consuming operation that gives an impact on performance.
7687                     To find all self-intersections please use
7688                     CheckSelfIntersections() method.
7689
7690             Returns:
7691                 New GEOM.GEOM_Object, containing the result shape.
7692             """
7693             # Example: see GEOM_TestAll.py
7694             anObj = self.BoolOp.MakeBoolean(theShape1, theShape2, theOperation, checkSelfInte)
7695             RaiseIfFailed("MakeBoolean", self.BoolOp)
7696             def_names = { 1: "common", 2: "cut", 3: "fuse", 4: "section" }
7697             self._autoPublish(anObj, theName, def_names[theOperation])
7698             return anObj
7699
7700         ## Perform Common boolean operation on two given shapes.
7701         #  @param theShape1 First argument for boolean operation.
7702         #  @param theShape2 Second argument for boolean operation.
7703         #  @param checkSelfInte The flag that tells if the arguments should
7704         #         be checked for self-intersection prior to the operation.
7705         #  @param theName Object name; when specified, this parameter is used
7706         #         for result publication in the study. Otherwise, if automatic
7707         #         publication is switched on, default value is used for result name.
7708         #
7709         #  @note This algorithm doesn't find all types of self-intersections.
7710         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7711         #        vertex/face and edge/face intersections. Face/face
7712         #        intersections detection is switched off as it is a
7713         #        time-consuming operation that gives an impact on performance.
7714         #        To find all self-intersections please use
7715         #        CheckSelfIntersections() method.
7716         #
7717         #  @return New GEOM.GEOM_Object, containing the result shape.
7718         #
7719         #  @ref tui_common "Example 1"
7720         #  \n @ref swig_MakeCommon "Example 2"
7721         def MakeCommon(self, theShape1, theShape2, checkSelfInte=False, theName=None):
7722             """
7723             Perform Common boolean operation on two given shapes.
7724
7725             Parameters:
7726                 theShape1 First argument for boolean operation.
7727                 theShape2 Second argument for boolean operation.
7728                 checkSelfInte The flag that tells if the arguments should
7729                               be checked for self-intersection prior to
7730                               the operation.
7731                 theName Object name; when specified, this parameter is used
7732                         for result publication in the study. Otherwise, if automatic
7733                         publication is switched on, default value is used for result name.
7734
7735             Note:
7736                     This algorithm doesn't find all types of self-intersections.
7737                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7738                     vertex/face and edge/face intersections. Face/face
7739                     intersections detection is switched off as it is a
7740                     time-consuming operation that gives an impact on performance.
7741                     To find all self-intersections please use
7742                     CheckSelfIntersections() method.
7743
7744             Returns:
7745                 New GEOM.GEOM_Object, containing the result shape.
7746             """
7747             # Example: see GEOM_TestOthers.py
7748             # note: auto-publishing is done in self.MakeBoolean()
7749             return self.MakeBoolean(theShape1, theShape2, 1, checkSelfInte, theName)
7750
7751         ## Perform Cut boolean operation on two given shapes.
7752         #  @param theShape1 First argument for boolean operation.
7753         #  @param theShape2 Second argument for boolean operation.
7754         #  @param checkSelfInte The flag that tells if the arguments should
7755         #         be checked for self-intersection prior to the operation.
7756         #  @param theName Object name; when specified, this parameter is used
7757         #         for result publication in the study. Otherwise, if automatic
7758         #         publication is switched on, default value is used for result name.
7759         #
7760         #  @note This algorithm doesn't find all types of self-intersections.
7761         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7762         #        vertex/face and edge/face intersections. Face/face
7763         #        intersections detection is switched off as it is a
7764         #        time-consuming operation that gives an impact on performance.
7765         #        To find all self-intersections please use
7766         #        CheckSelfIntersections() method.
7767         #
7768         #  @return New GEOM.GEOM_Object, containing the result shape.
7769         #
7770         #  @ref tui_cut "Example 1"
7771         #  \n @ref swig_MakeCommon "Example 2"
7772         def MakeCut(self, theShape1, theShape2, checkSelfInte=False, theName=None):
7773             """
7774             Perform Cut boolean operation on two given shapes.
7775
7776             Parameters:
7777                 theShape1 First argument for boolean operation.
7778                 theShape2 Second argument for boolean operation.
7779                 checkSelfInte The flag that tells if the arguments should
7780                               be checked for self-intersection prior to
7781                               the operation.
7782                 theName Object name; when specified, this parameter is used
7783                         for result publication in the study. Otherwise, if automatic
7784                         publication is switched on, default value is used for result name.
7785
7786             Note:
7787                     This algorithm doesn't find all types of self-intersections.
7788                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7789                     vertex/face and edge/face intersections. Face/face
7790                     intersections detection is switched off as it is a
7791                     time-consuming operation that gives an impact on performance.
7792                     To find all self-intersections please use
7793                     CheckSelfIntersections() method.
7794
7795             Returns:
7796                 New GEOM.GEOM_Object, containing the result shape.
7797
7798             """
7799             # Example: see GEOM_TestOthers.py
7800             # note: auto-publishing is done in self.MakeBoolean()
7801             return self.MakeBoolean(theShape1, theShape2, 2, checkSelfInte, theName)
7802
7803         ## Perform Fuse boolean operation on two given shapes.
7804         #  @param theShape1 First argument for boolean operation.
7805         #  @param theShape2 Second argument for boolean operation.
7806         #  @param checkSelfInte The flag that tells if the arguments should
7807         #         be checked for self-intersection prior to the operation.
7808         #  @param rmExtraEdges The flag that tells if Remove Extra Edges
7809         #         operation should be performed during the operation.
7810         #  @param theName Object name; when specified, this parameter is used
7811         #         for result publication in the study. Otherwise, if automatic
7812         #         publication is switched on, default value is used for result name.
7813         #
7814         #  @note This algorithm doesn't find all types of self-intersections.
7815         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7816         #        vertex/face and edge/face intersections. Face/face
7817         #        intersections detection is switched off as it is a
7818         #        time-consuming operation that gives an impact on performance.
7819         #        To find all self-intersections please use
7820         #        CheckSelfIntersections() method.
7821         #
7822         #  @return New GEOM.GEOM_Object, containing the result shape.
7823         #
7824         #  @ref tui_fuse "Example 1"
7825         #  \n @ref swig_MakeCommon "Example 2"
7826         @ManageTransactions("BoolOp")
7827         def MakeFuse(self, theShape1, theShape2, checkSelfInte=False,
7828                      rmExtraEdges=False, theName=None):
7829             """
7830             Perform Fuse boolean operation on two given shapes.
7831
7832             Parameters:
7833                 theShape1 First argument for boolean operation.
7834                 theShape2 Second argument for boolean operation.
7835                 checkSelfInte The flag that tells if the arguments should
7836                               be checked for self-intersection prior to
7837                               the operation.
7838                 rmExtraEdges The flag that tells if Remove Extra Edges
7839                              operation should be performed during the operation.
7840                 theName Object name; when specified, this parameter is used
7841                         for result publication in the study. Otherwise, if automatic
7842                         publication is switched on, default value is used for result name.
7843
7844             Note:
7845                     This algorithm doesn't find all types of self-intersections.
7846                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7847                     vertex/face and edge/face intersections. Face/face
7848                     intersections detection is switched off as it is a
7849                     time-consuming operation that gives an impact on performance.
7850                     To find all self-intersections please use
7851                     CheckSelfIntersections() method.
7852
7853             Returns:
7854                 New GEOM.GEOM_Object, containing the result shape.
7855
7856             """
7857             # Example: see GEOM_TestOthers.py
7858             anObj = self.BoolOp.MakeFuse(theShape1, theShape2,
7859                                          checkSelfInte, rmExtraEdges)
7860             RaiseIfFailed("MakeFuse", self.BoolOp)
7861             self._autoPublish(anObj, theName, "fuse")
7862             return anObj
7863
7864         ## Perform Section boolean operation on two given shapes.
7865         #  @param theShape1 First argument for boolean operation.
7866         #  @param theShape2 Second argument for boolean operation.
7867         #  @param checkSelfInte The flag that tells if the arguments should
7868         #         be checked for self-intersection prior to the operation.
7869         #         If a self-intersection detected the operation fails.
7870         #  @param theName Object name; when specified, this parameter is used
7871         #         for result publication in the study. Otherwise, if automatic
7872         #         publication is switched on, default value is used for result name.
7873         #  @return New GEOM.GEOM_Object, containing the result shape.
7874         #
7875         #  @ref tui_section "Example 1"
7876         #  \n @ref swig_MakeCommon "Example 2"
7877         def MakeSection(self, theShape1, theShape2, checkSelfInte=False, theName=None):
7878             """
7879             Perform Section boolean operation on two given shapes.
7880
7881             Parameters:
7882                 theShape1 First argument for boolean operation.
7883                 theShape2 Second argument for boolean operation.
7884                 checkSelfInte The flag that tells if the arguments should
7885                               be checked for self-intersection prior to the operation.
7886                               If a self-intersection detected the operation fails.
7887                 theName Object name; when specified, this parameter is used
7888                         for result publication in the study. Otherwise, if automatic
7889                         publication is switched on, default value is used for result name.
7890             Returns:
7891                 New GEOM.GEOM_Object, containing the result shape.
7892
7893             """
7894             # Example: see GEOM_TestOthers.py
7895             # note: auto-publishing is done in self.MakeBoolean()
7896             return self.MakeBoolean(theShape1, theShape2, 4, checkSelfInte, theName)
7897
7898         ## Perform Fuse boolean operation on the list of shapes.
7899         #  @param theShapesList Shapes to be fused.
7900         #  @param checkSelfInte The flag that tells if the arguments should
7901         #         be checked for self-intersection prior to the operation.
7902         #  @param rmExtraEdges The flag that tells if Remove Extra Edges
7903         #         operation should be performed during the operation.
7904         #  @param theName Object name; when specified, this parameter is used
7905         #         for result publication in the study. Otherwise, if automatic
7906         #         publication is switched on, default value is used for result name.
7907         #
7908         #  @note This algorithm doesn't find all types of self-intersections.
7909         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7910         #        vertex/face and edge/face intersections. Face/face
7911         #        intersections detection is switched off as it is a
7912         #        time-consuming operation that gives an impact on performance.
7913         #        To find all self-intersections please use
7914         #        CheckSelfIntersections() method.
7915         #
7916         #  @return New GEOM.GEOM_Object, containing the result shape.
7917         #
7918         #  @ref tui_fuse "Example 1"
7919         #  \n @ref swig_MakeCommon "Example 2"
7920         @ManageTransactions("BoolOp")
7921         def MakeFuseList(self, theShapesList, checkSelfInte=False,
7922                          rmExtraEdges=False, theName=None):
7923             """
7924             Perform Fuse boolean operation on the list of shapes.
7925
7926             Parameters:
7927                 theShapesList Shapes to be fused.
7928                 checkSelfInte The flag that tells if the arguments should
7929                               be checked for self-intersection prior to
7930                               the operation.
7931                 rmExtraEdges The flag that tells if Remove Extra Edges
7932                              operation should be performed during the operation.
7933                 theName Object name; when specified, this parameter is used
7934                         for result publication in the study. Otherwise, if automatic
7935                         publication is switched on, default value is used for result name.
7936
7937             Note:
7938                     This algorithm doesn't find all types of self-intersections.
7939                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7940                     vertex/face and edge/face intersections. Face/face
7941                     intersections detection is switched off as it is a
7942                     time-consuming operation that gives an impact on performance.
7943                     To find all self-intersections please use
7944                     CheckSelfIntersections() method.
7945
7946             Returns:
7947                 New GEOM.GEOM_Object, containing the result shape.
7948
7949             """
7950             # Example: see GEOM_TestOthers.py
7951             anObj = self.BoolOp.MakeFuseList(theShapesList, checkSelfInte,
7952                                              rmExtraEdges)
7953             RaiseIfFailed("MakeFuseList", self.BoolOp)
7954             self._autoPublish(anObj, theName, "fuse")
7955             return anObj
7956
7957         ## Perform Common boolean operation on the list of shapes.
7958         #  @param theShapesList Shapes for Common operation.
7959         #  @param checkSelfInte The flag that tells if the arguments should
7960         #         be checked for self-intersection prior to the operation.
7961         #  @param theName Object name; when specified, this parameter is used
7962         #         for result publication in the study. Otherwise, if automatic
7963         #         publication is switched on, default value is used for result name.
7964         #
7965         #  @note This algorithm doesn't find all types of self-intersections.
7966         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7967         #        vertex/face and edge/face intersections. Face/face
7968         #        intersections detection is switched off as it is a
7969         #        time-consuming operation that gives an impact on performance.
7970         #        To find all self-intersections please use
7971         #        CheckSelfIntersections() method.
7972         #
7973         #  @return New GEOM.GEOM_Object, containing the result shape.
7974         #
7975         #  @ref tui_common "Example 1"
7976         #  \n @ref swig_MakeCommon "Example 2"
7977         @ManageTransactions("BoolOp")
7978         def MakeCommonList(self, theShapesList, checkSelfInte=False, theName=None):
7979             """
7980             Perform Common boolean operation on the list of shapes.
7981
7982             Parameters:
7983                 theShapesList Shapes for Common operation.
7984                 checkSelfInte The flag that tells if the arguments should
7985                               be checked for self-intersection prior to
7986                               the operation.
7987                 theName Object name; when specified, this parameter is used
7988                         for result publication in the study. Otherwise, if automatic
7989                         publication is switched on, default value is used for result name.
7990
7991             Note:
7992                     This algorithm doesn't find all types of self-intersections.
7993                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7994                     vertex/face and edge/face intersections. Face/face
7995                     intersections detection is switched off as it is a
7996                     time-consuming operation that gives an impact on performance.
7997                     To find all self-intersections please use
7998                     CheckSelfIntersections() method.
7999
8000             Returns:
8001                 New GEOM.GEOM_Object, containing the result shape.
8002
8003             """
8004             # Example: see GEOM_TestOthers.py
8005             anObj = self.BoolOp.MakeCommonList(theShapesList, checkSelfInte)
8006             RaiseIfFailed("MakeCommonList", self.BoolOp)
8007             self._autoPublish(anObj, theName, "common")
8008             return anObj
8009
8010         ## Perform Cut boolean operation on one object and the list of tools.
8011         #  @param theMainShape The object of the operation.
8012         #  @param theShapesList The list of tools of the operation.
8013         #  @param checkSelfInte The flag that tells if the arguments should
8014         #         be checked for self-intersection prior to the operation.
8015         #  @param theName Object name; when specified, this parameter is used
8016         #         for result publication in the study. Otherwise, if automatic
8017         #         publication is switched on, default value is used for result name.
8018         #
8019         #  @note This algorithm doesn't find all types of self-intersections.
8020         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8021         #        vertex/face and edge/face intersections. Face/face
8022         #        intersections detection is switched off as it is a
8023         #        time-consuming operation that gives an impact on performance.
8024         #        To find all self-intersections please use
8025         #        CheckSelfIntersections() method.
8026         #
8027         #  @return New GEOM.GEOM_Object, containing the result shape.
8028         #
8029         #  @ref tui_cut "Example 1"
8030         #  \n @ref swig_MakeCommon "Example 2"
8031         @ManageTransactions("BoolOp")
8032         def MakeCutList(self, theMainShape, theShapesList, checkSelfInte=False, theName=None):
8033             """
8034             Perform Cut boolean operation on one object and the list of tools.
8035
8036             Parameters:
8037                 theMainShape The object of the operation.
8038                 theShapesList The list of tools of the operation.
8039                 checkSelfInte The flag that tells if the arguments should
8040                               be checked for self-intersection prior to
8041                               the operation.
8042                 theName Object name; when specified, this parameter is used
8043                         for result publication in the study. Otherwise, if automatic
8044                         publication is switched on, default value is used for result name.
8045
8046             Note:
8047                     This algorithm doesn't find all types of self-intersections.
8048                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8049                     vertex/face and edge/face intersections. Face/face
8050                     intersections detection is switched off as it is a
8051                     time-consuming operation that gives an impact on performance.
8052                     To find all self-intersections please use
8053                     CheckSelfIntersections() method.
8054
8055             Returns:
8056                 New GEOM.GEOM_Object, containing the result shape.
8057
8058             """
8059             # Example: see GEOM_TestOthers.py
8060             anObj = self.BoolOp.MakeCutList(theMainShape, theShapesList, checkSelfInte)
8061             RaiseIfFailed("MakeCutList", self.BoolOp)
8062             self._autoPublish(anObj, theName, "cut")
8063             return anObj
8064
8065         # end of l3_boolean
8066         ## @}
8067
8068         ## @addtogroup l3_basic_op
8069         ## @{
8070
8071         ## Perform partition operation.
8072         #  @param ListShapes Shapes to be intersected.
8073         #  @param ListTools Shapes to intersect theShapes.
8074         #  @param Limit Type of resulting shapes (see ShapeType()).\n
8075         #         If this parameter is set to -1 ("Auto"), most appropriate shape limit
8076         #         type will be detected automatically.
8077         #  @param KeepNonlimitShapes if this parameter == 0, then only shapes of
8078         #                             target type (equal to Limit) are kept in the result,
8079         #                             else standalone shapes of lower dimension
8080         #                             are kept also (if they exist).
8081         #
8082         #  @param theName Object name; when specified, this parameter is used
8083         #         for result publication in the study. Otherwise, if automatic
8084         #         publication is switched on, default value is used for result name.
8085         #
8086         #  @note Each compound from ListShapes and ListTools will be exploded
8087         #        in order to avoid possible intersection between shapes from this compound.
8088         #
8089         #  After implementation new version of PartitionAlgo (October 2006)
8090         #  other parameters are ignored by current functionality. They are kept
8091         #  in this function only for support old versions.
8092         #      @param ListKeepInside Shapes, outside which the results will be deleted.
8093         #         Each shape from theKeepInside must belong to theShapes also.
8094         #      @param ListRemoveInside Shapes, inside which the results will be deleted.
8095         #         Each shape from theRemoveInside must belong to theShapes also.
8096         #      @param RemoveWebs If TRUE, perform Glue 3D algorithm.
8097         #      @param ListMaterials Material indices for each shape. Make sense,
8098         #         only if theRemoveWebs is TRUE.
8099         #
8100         #  @return New GEOM.GEOM_Object, containing the result shapes.
8101         #
8102         #  @ref tui_partition "Example"
8103         @ManageTransactions("BoolOp")
8104         def MakePartition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
8105                           Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[],
8106                           KeepNonlimitShapes=0, theName=None):
8107             """
8108             Perform partition operation.
8109
8110             Parameters:
8111                 ListShapes Shapes to be intersected.
8112                 ListTools Shapes to intersect theShapes.
8113                 Limit Type of resulting shapes (see geompy.ShapeType)
8114                       If this parameter is set to -1 ("Auto"), most appropriate shape limit
8115                       type will be detected automatically.
8116                 KeepNonlimitShapes if this parameter == 0, then only shapes of
8117                                     target type (equal to Limit) are kept in the result,
8118                                     else standalone shapes of lower dimension
8119                                     are kept also (if they exist).
8120
8121                 theName Object name; when specified, this parameter is used
8122                         for result publication in the study. Otherwise, if automatic
8123                         publication is switched on, default value is used for result name.
8124             Note:
8125                     Each compound from ListShapes and ListTools will be exploded
8126                     in order to avoid possible intersection between shapes from
8127                     this compound.
8128
8129             After implementation new version of PartitionAlgo (October 2006) other
8130             parameters are ignored by current functionality. They are kept in this
8131             function only for support old versions.
8132
8133             Ignored parameters:
8134                 ListKeepInside Shapes, outside which the results will be deleted.
8135                                Each shape from theKeepInside must belong to theShapes also.
8136                 ListRemoveInside Shapes, inside which the results will be deleted.
8137                                  Each shape from theRemoveInside must belong to theShapes also.
8138                 RemoveWebs If TRUE, perform Glue 3D algorithm.
8139                 ListMaterials Material indices for each shape. Make sense, only if theRemoveWebs is TRUE.
8140
8141             Returns:
8142                 New GEOM.GEOM_Object, containing the result shapes.
8143             """
8144             # Example: see GEOM_TestAll.py
8145             if Limit == self.ShapeType["AUTO"]:
8146                 # automatic detection of the most appropriate shape limit type
8147                 lim = GEOM.SHAPE
8148                 for s in ListShapes: lim = min( lim, s.GetMaxShapeType() )
8149                 Limit = EnumToLong(lim)
8150                 pass
8151             anObj = self.BoolOp.MakePartition(ListShapes, ListTools,
8152                                               ListKeepInside, ListRemoveInside,
8153                                               Limit, RemoveWebs, ListMaterials,
8154                                               KeepNonlimitShapes);
8155             RaiseIfFailed("MakePartition", self.BoolOp)
8156             self._autoPublish(anObj, theName, "partition")
8157             return anObj
8158
8159         ## Perform partition operation.
8160         #  This method may be useful if it is needed to make a partition for
8161         #  compound contains nonintersected shapes. Performance will be better
8162         #  since intersection between shapes from compound is not performed.
8163         #
8164         #  Description of all parameters as in previous method MakePartition().
8165         #  One additional parameter is provided:
8166         #  @param checkSelfInte The flag that tells if the arguments should
8167         #         be checked for self-intersection prior to the operation.
8168         #
8169         #  @note This algorithm doesn't find all types of self-intersections.
8170         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8171         #        vertex/face and edge/face intersections. Face/face
8172         #        intersections detection is switched off as it is a
8173         #        time-consuming operation that gives an impact on performance.
8174         #        To find all self-intersections please use
8175         #        CheckSelfIntersections() method.
8176         #
8177         #  @note Passed compounds (via ListShapes or via ListTools)
8178         #           have to consist of nonintersecting shapes.
8179         #
8180         #  @return New GEOM.GEOM_Object, containing the result shapes.
8181         #
8182         #  @ref swig_todo "Example"
8183         @ManageTransactions("BoolOp")
8184         def MakePartitionNonSelfIntersectedShape(self, ListShapes, ListTools=[],
8185                                                  ListKeepInside=[], ListRemoveInside=[],
8186                                                  Limit=ShapeType["AUTO"], RemoveWebs=0,
8187                                                  ListMaterials=[], KeepNonlimitShapes=0,
8188                                                  checkSelfInte=False, theName=None):
8189             """
8190             Perform partition operation.
8191             This method may be useful if it is needed to make a partition for
8192             compound contains nonintersected shapes. Performance will be better
8193             since intersection between shapes from compound is not performed.
8194
8195             Parameters:
8196                 Description of all parameters as in method geompy.MakePartition.
8197                 One additional parameter is provided:
8198                 checkSelfInte The flag that tells if the arguments should
8199                               be checked for self-intersection prior to
8200                               the operation.
8201
8202             Note:
8203                     This algorithm doesn't find all types of self-intersections.
8204                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8205                     vertex/face and edge/face intersections. Face/face
8206                     intersections detection is switched off as it is a
8207                     time-consuming operation that gives an impact on performance.
8208                     To find all self-intersections please use
8209                     CheckSelfIntersections() method.
8210
8211             NOTE:
8212                 Passed compounds (via ListShapes or via ListTools)
8213                 have to consist of nonintersecting shapes.
8214
8215             Returns:
8216                 New GEOM.GEOM_Object, containing the result shapes.
8217             """
8218             if Limit == self.ShapeType["AUTO"]:
8219                 # automatic detection of the most appropriate shape limit type
8220                 lim = GEOM.SHAPE
8221                 for s in ListShapes: lim = min( lim, s.GetMaxShapeType() )
8222                 Limit = EnumToLong(lim)
8223                 pass
8224             anObj = self.BoolOp.MakePartitionNonSelfIntersectedShape(ListShapes, ListTools,
8225                                                                      ListKeepInside, ListRemoveInside,
8226                                                                      Limit, RemoveWebs, ListMaterials,
8227                                                                      KeepNonlimitShapes, checkSelfInte);
8228             RaiseIfFailed("MakePartitionNonSelfIntersectedShape", self.BoolOp)
8229             self._autoPublish(anObj, theName, "partition")
8230             return anObj
8231
8232         ## See method MakePartition() for more information.
8233         #
8234         #  @ref tui_partition "Example 1"
8235         #  \n @ref swig_Partition "Example 2"
8236         def Partition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
8237                       Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[],
8238                       KeepNonlimitShapes=0, theName=None):
8239             """
8240             See method geompy.MakePartition for more information.
8241             """
8242             # Example: see GEOM_TestOthers.py
8243             # note: auto-publishing is done in self.MakePartition()
8244             anObj = self.MakePartition(ListShapes, ListTools,
8245                                        ListKeepInside, ListRemoveInside,
8246                                        Limit, RemoveWebs, ListMaterials,
8247                                        KeepNonlimitShapes, theName);
8248             return anObj
8249
8250         ## Perform partition of the Shape with the Plane
8251         #  @param theShape Shape to be intersected.
8252         #  @param thePlane Tool shape, to intersect theShape.
8253         #  @param theName Object name; when specified, this parameter is used
8254         #         for result publication in the study. Otherwise, if automatic
8255         #         publication is switched on, default value is used for result name.
8256         #
8257         #  @return New GEOM.GEOM_Object, containing the result shape.
8258         #
8259         #  @note This operation is a shortcut to the more general @ref MakePartition
8260         #  operation, where @a theShape specifies single "object" (shape being partitioned)
8261         #  and @a thePlane specifies single "tool" (intersector shape). Other parameters of
8262         #  @ref MakePartition operation have default values:
8263         #  - @a Limit: GEOM::SHAPE (shape limit corresponds to the type of @a theShape)
8264         #  - @a KeepNonlimitShapes: 0
8265         #  - @a KeepInside, @a RemoveInside, @a RemoveWebs,
8266         #    @a Materials (obsolete parameters): empty
8267         #
8268         #  @note I.e. the following two operations are equivalent:
8269         #  @code
8270         #  Result = geompy.MakeHalfPartition(Object, Plane)
8271         #  Result = geompy.MakePartition([Object], [Plane])
8272         #  @endcode
8273         #
8274         #  @sa MakePartition, MakePartitionNonSelfIntersectedShape
8275         #
8276         #  @ref tui_partition "Example"
8277         @ManageTransactions("BoolOp")
8278         def MakeHalfPartition(self, theShape, thePlane, theName=None):
8279             """
8280             Perform partition of the Shape with the Plane
8281
8282             Parameters:
8283                 theShape Shape to be intersected.
8284                 thePlane Tool shape, to intersect theShape.
8285                 theName Object name; when specified, this parameter is used
8286                         for result publication in the study. Otherwise, if automatic
8287                         publication is switched on, default value is used for result name.
8288
8289             Returns:
8290                 New GEOM.GEOM_Object, containing the result shape.
8291          
8292             Note: This operation is a shortcut to the more general MakePartition
8293             operation, where theShape specifies single "object" (shape being partitioned)
8294             and thePlane specifies single "tool" (intersector shape). Other parameters of
8295             MakePartition operation have default values:
8296             - Limit: GEOM::SHAPE (shape limit corresponds to the type of theShape)
8297             - KeepNonlimitShapes: 0
8298             - KeepInside, RemoveInside, RemoveWebs, Materials (obsolete parameters): empty
8299          
8300             I.e. the following two operations are equivalent:
8301               Result = geompy.MakeHalfPartition(Object, Plane)
8302               Result = geompy.MakePartition([Object], [Plane])
8303             """
8304             # Example: see GEOM_TestAll.py
8305             anObj = self.BoolOp.MakeHalfPartition(theShape, thePlane)
8306             RaiseIfFailed("MakeHalfPartition", self.BoolOp)
8307             self._autoPublish(anObj, theName, "partition")
8308             return anObj
8309
8310         # end of l3_basic_op
8311         ## @}
8312
8313         ## @addtogroup l3_transform
8314         ## @{
8315
8316         ## Translate the given object along the vector, specified
8317         #  by its end points.
8318         #  @param theObject The object to be translated.
8319         #  @param thePoint1 Start point of translation vector.
8320         #  @param thePoint2 End point of translation vector.
8321         #  @param theCopy Flag used to translate object itself or create a copy.
8322         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8323         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8324         @ManageTransactions("TrsfOp")
8325         def TranslateTwoPoints(self, theObject, thePoint1, thePoint2, theCopy=False):
8326             """
8327             Translate the given object along the vector, specified by its end points.
8328
8329             Parameters:
8330                 theObject The object to be translated.
8331                 thePoint1 Start point of translation vector.
8332                 thePoint2 End point of translation vector.
8333                 theCopy Flag used to translate object itself or create a copy.
8334
8335             Returns:
8336                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8337                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8338             """
8339             if theCopy:
8340                 anObj = self.TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
8341             else:
8342                 anObj = self.TrsfOp.TranslateTwoPoints(theObject, thePoint1, thePoint2)
8343             RaiseIfFailed("TranslateTwoPoints", self.TrsfOp)
8344             return anObj
8345
8346         ## Translate the given object along the vector, specified
8347         #  by its end points, creating its copy before the translation.
8348         #  @param theObject The object to be translated.
8349         #  @param thePoint1 Start point of translation vector.
8350         #  @param thePoint2 End point of translation vector.
8351         #  @param theName Object name; when specified, this parameter is used
8352         #         for result publication in the study. Otherwise, if automatic
8353         #         publication is switched on, default value is used for result name.
8354         #
8355         #  @return New GEOM.GEOM_Object, containing the translated object.
8356         #
8357         #  @ref tui_translation "Example 1"
8358         #  \n @ref swig_MakeTranslationTwoPoints "Example 2"
8359         @ManageTransactions("TrsfOp")
8360         def MakeTranslationTwoPoints(self, theObject, thePoint1, thePoint2, theName=None):
8361             """
8362             Translate the given object along the vector, specified
8363             by its end points, creating its copy before the translation.
8364
8365             Parameters:
8366                 theObject The object to be translated.
8367                 thePoint1 Start point of translation vector.
8368                 thePoint2 End point of translation vector.
8369                 theName Object name; when specified, this parameter is used
8370                         for result publication in the study. Otherwise, if automatic
8371                         publication is switched on, default value is used for result name.
8372
8373             Returns:
8374                 New GEOM.GEOM_Object, containing the translated object.
8375             """
8376             # Example: see GEOM_TestAll.py
8377             anObj = self.TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
8378             RaiseIfFailed("TranslateTwoPointsCopy", self.TrsfOp)
8379             self._autoPublish(anObj, theName, "translated")
8380             return anObj
8381
8382         ## Translate the given object along the vector, specified by its components.
8383         #  @param theObject The object to be translated.
8384         #  @param theDX,theDY,theDZ Components of translation vector.
8385         #  @param theCopy Flag used to translate object itself or create a copy.
8386         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8387         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8388         #
8389         #  @ref tui_translation "Example"
8390         @ManageTransactions("TrsfOp")
8391         def TranslateDXDYDZ(self, theObject, theDX, theDY, theDZ, theCopy=False):
8392             """
8393             Translate the given object along the vector, specified by its components.
8394
8395             Parameters:
8396                 theObject The object to be translated.
8397                 theDX,theDY,theDZ Components of translation vector.
8398                 theCopy Flag used to translate object itself or create a copy.
8399
8400             Returns:
8401                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8402                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8403             """
8404             # Example: see GEOM_TestAll.py
8405             theDX, theDY, theDZ, Parameters = ParseParameters(theDX, theDY, theDZ)
8406             if theCopy:
8407                 anObj = self.TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
8408             else:
8409                 anObj = self.TrsfOp.TranslateDXDYDZ(theObject, theDX, theDY, theDZ)
8410             anObj.SetParameters(Parameters)
8411             RaiseIfFailed("TranslateDXDYDZ", self.TrsfOp)
8412             return anObj
8413
8414         ## Translate the given object along the vector, specified
8415         #  by its components, creating its copy before the translation.
8416         #  @param theObject The object to be translated.
8417         #  @param theDX,theDY,theDZ Components of translation vector.
8418         #  @param theName Object name; when specified, this parameter is used
8419         #         for result publication in the study. Otherwise, if automatic
8420         #         publication is switched on, default value is used for result name.
8421         #
8422         #  @return New GEOM.GEOM_Object, containing the translated object.
8423         #
8424         #  @ref tui_translation "Example"
8425         @ManageTransactions("TrsfOp")
8426         def MakeTranslation(self,theObject, theDX, theDY, theDZ, theName=None):
8427             """
8428             Translate the given object along the vector, specified
8429             by its components, creating its copy before the translation.
8430
8431             Parameters:
8432                 theObject The object to be translated.
8433                 theDX,theDY,theDZ Components of translation vector.
8434                 theName Object name; when specified, this parameter is used
8435                         for result publication in the study. Otherwise, if automatic
8436                         publication is switched on, default value is used for result name.
8437
8438             Returns:
8439                 New GEOM.GEOM_Object, containing the translated object.
8440             """
8441             # Example: see GEOM_TestAll.py
8442             theDX, theDY, theDZ, Parameters = ParseParameters(theDX, theDY, theDZ)
8443             anObj = self.TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
8444             anObj.SetParameters(Parameters)
8445             RaiseIfFailed("TranslateDXDYDZ", self.TrsfOp)
8446             self._autoPublish(anObj, theName, "translated")
8447             return anObj
8448
8449         ## Translate the given object along the given vector.
8450         #  @param theObject The object to be translated.
8451         #  @param theVector The translation vector.
8452         #  @param theCopy Flag used to translate object itself or create a copy.
8453         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8454         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8455         @ManageTransactions("TrsfOp")
8456         def TranslateVector(self, theObject, theVector, theCopy=False):
8457             """
8458             Translate the given object along the given vector.
8459
8460             Parameters:
8461                 theObject The object to be translated.
8462                 theVector The translation vector.
8463                 theCopy Flag used to translate object itself or create a copy.
8464
8465             Returns:
8466                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8467                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8468             """
8469             if theCopy:
8470                 anObj = self.TrsfOp.TranslateVectorCopy(theObject, theVector)
8471             else:
8472                 anObj = self.TrsfOp.TranslateVector(theObject, theVector)
8473             RaiseIfFailed("TranslateVector", self.TrsfOp)
8474             return anObj
8475
8476         ## Translate the given object along the given vector,
8477         #  creating its copy before the translation.
8478         #  @param theObject The object to be translated.
8479         #  @param theVector The translation vector.
8480         #  @param theName Object name; when specified, this parameter is used
8481         #         for result publication in the study. Otherwise, if automatic
8482         #         publication is switched on, default value is used for result name.
8483         #
8484         #  @return New GEOM.GEOM_Object, containing the translated object.
8485         #
8486         #  @ref tui_translation "Example"
8487         @ManageTransactions("TrsfOp")
8488         def MakeTranslationVector(self, theObject, theVector, theName=None):
8489             """
8490             Translate the given object along the given vector,
8491             creating its copy before the translation.
8492
8493             Parameters:
8494                 theObject The object to be translated.
8495                 theVector The translation vector.
8496                 theName Object name; when specified, this parameter is used
8497                         for result publication in the study. Otherwise, if automatic
8498                         publication is switched on, default value is used for result name.
8499
8500             Returns:
8501                 New GEOM.GEOM_Object, containing the translated object.
8502             """
8503             # Example: see GEOM_TestAll.py
8504             anObj = self.TrsfOp.TranslateVectorCopy(theObject, theVector)
8505             RaiseIfFailed("TranslateVectorCopy", self.TrsfOp)
8506             self._autoPublish(anObj, theName, "translated")
8507             return anObj
8508
8509         ## Translate the given object along the given vector on given distance.
8510         #  @param theObject The object to be translated.
8511         #  @param theVector The translation vector.
8512         #  @param theDistance The translation distance.
8513         #  @param theCopy Flag used to translate object itself or create a copy.
8514         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8515         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8516         #
8517         #  @ref tui_translation "Example"
8518         @ManageTransactions("TrsfOp")
8519         def TranslateVectorDistance(self, theObject, theVector, theDistance, theCopy=False):
8520             """
8521             Translate the given object along the given vector on given distance.
8522
8523             Parameters:
8524                 theObject The object to be translated.
8525                 theVector The translation vector.
8526                 theDistance The translation distance.
8527                 theCopy Flag used to translate object itself or create a copy.
8528
8529             Returns:
8530                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8531                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8532             """
8533             # Example: see GEOM_TestAll.py
8534             theDistance,Parameters = ParseParameters(theDistance)
8535             anObj = self.TrsfOp.TranslateVectorDistance(theObject, theVector, theDistance, theCopy)
8536             RaiseIfFailed("TranslateVectorDistance", self.TrsfOp)
8537             anObj.SetParameters(Parameters)
8538             return anObj
8539
8540         ## Translate the given object along the given vector on given distance,
8541         #  creating its copy before the translation.
8542         #  @param theObject The object to be translated.
8543         #  @param theVector The translation vector.
8544         #  @param theDistance The translation distance.
8545         #  @param theName Object name; when specified, this parameter is used
8546         #         for result publication in the study. Otherwise, if automatic
8547         #         publication is switched on, default value is used for result name.
8548         #
8549         #  @return New GEOM.GEOM_Object, containing the translated object.
8550         #
8551         #  @ref tui_translation "Example"
8552         @ManageTransactions("TrsfOp")
8553         def MakeTranslationVectorDistance(self, theObject, theVector, theDistance, theName=None):
8554             """
8555             Translate the given object along the given vector on given distance,
8556             creating its copy before the translation.
8557
8558             Parameters:
8559                 theObject The object to be translated.
8560                 theVector The translation vector.
8561                 theDistance The translation distance.
8562                 theName Object name; when specified, this parameter is used
8563                         for result publication in the study. Otherwise, if automatic
8564                         publication is switched on, default value is used for result name.
8565
8566             Returns:
8567                 New GEOM.GEOM_Object, containing the translated object.
8568             """
8569             # Example: see GEOM_TestAll.py
8570             theDistance,Parameters = ParseParameters(theDistance)
8571             anObj = self.TrsfOp.TranslateVectorDistance(theObject, theVector, theDistance, 1)
8572             RaiseIfFailed("TranslateVectorDistance", self.TrsfOp)
8573             anObj.SetParameters(Parameters)
8574             self._autoPublish(anObj, theName, "translated")
8575             return anObj
8576
8577         ## Rotate the given object around the given axis on the given angle.
8578         #  @param theObject The object to be rotated.
8579         #  @param theAxis Rotation axis.
8580         #  @param theAngle Rotation angle in radians.
8581         #  @param theCopy Flag used to rotate object itself or create a copy.
8582         #
8583         #  @return Rotated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8584         #  new GEOM.GEOM_Object, containing the rotated object if @a theCopy flag is @c True.
8585         #
8586         #  @ref tui_rotation "Example"
8587         @ManageTransactions("TrsfOp")
8588         def Rotate(self, theObject, theAxis, theAngle, theCopy=False):
8589             """
8590             Rotate the given object around the given axis on the given angle.
8591
8592             Parameters:
8593                 theObject The object to be rotated.
8594                 theAxis Rotation axis.
8595                 theAngle Rotation angle in radians.
8596                 theCopy Flag used to rotate object itself or create a copy.
8597
8598             Returns:
8599                 Rotated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8600                 new GEOM.GEOM_Object, containing the rotated object if theCopy flag is True.
8601             """
8602             # Example: see GEOM_TestAll.py
8603             flag = False
8604             if isinstance(theAngle,str):
8605                 flag = True
8606             theAngle, Parameters = ParseParameters(theAngle)
8607             if flag:
8608                 theAngle = theAngle*math.pi/180.0
8609             if theCopy:
8610                 anObj = self.TrsfOp.RotateCopy(theObject, theAxis, theAngle)
8611             else:
8612                 anObj = self.TrsfOp.Rotate(theObject, theAxis, theAngle)
8613             RaiseIfFailed("Rotate", self.TrsfOp)
8614             anObj.SetParameters(Parameters)
8615             return anObj
8616
8617         ## Rotate the given object around the given axis
8618         #  on the given angle, creating its copy before the rotation.
8619         #  @param theObject The object to be rotated.
8620         #  @param theAxis Rotation axis.
8621         #  @param theAngle Rotation angle in radians.
8622         #  @param theName Object name; when specified, this parameter is used
8623         #         for result publication in the study. Otherwise, if automatic
8624         #         publication is switched on, default value is used for result name.
8625         #
8626         #  @return New GEOM.GEOM_Object, containing the rotated object.
8627         #
8628         #  @ref tui_rotation "Example"
8629         @ManageTransactions("TrsfOp")
8630         def MakeRotation(self, theObject, theAxis, theAngle, theName=None):
8631             """
8632             Rotate the given object around the given axis
8633             on the given angle, creating its copy before the rotatation.
8634
8635             Parameters:
8636                 theObject The object to be rotated.
8637                 theAxis Rotation axis.
8638                 theAngle Rotation angle in radians.
8639                 theName Object name; when specified, this parameter is used
8640                         for result publication in the study. Otherwise, if automatic
8641                         publication is switched on, default value is used for result name.
8642
8643             Returns:
8644                 New GEOM.GEOM_Object, containing the rotated object.
8645             """
8646             # Example: see GEOM_TestAll.py
8647             flag = False
8648             if isinstance(theAngle,str):
8649                 flag = True
8650             theAngle, Parameters = ParseParameters(theAngle)
8651             if flag:
8652                 theAngle = theAngle*math.pi/180.0
8653             anObj = self.TrsfOp.RotateCopy(theObject, theAxis, theAngle)
8654             RaiseIfFailed("RotateCopy", self.TrsfOp)
8655             anObj.SetParameters(Parameters)
8656             self._autoPublish(anObj, theName, "rotated")
8657             return anObj
8658
8659         ## Rotate given object around vector perpendicular to plane
8660         #  containing three points.
8661         #  @param theObject The object to be rotated.
8662         #  @param theCentPoint central point the axis is the vector perpendicular to the plane
8663         #  containing the three points.
8664         #  @param thePoint1,thePoint2 points in a perpendicular plane of the axis.
8665         #  @param theCopy Flag used to rotate object itself or create a copy.
8666         #  @return Rotated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8667         #  new GEOM.GEOM_Object, containing the rotated object if @a theCopy flag is @c True.
8668         @ManageTransactions("TrsfOp")
8669         def RotateThreePoints(self, theObject, theCentPoint, thePoint1, thePoint2, theCopy=False):
8670             """
8671             Rotate given object around vector perpendicular to plane
8672             containing three points.
8673
8674             Parameters:
8675                 theObject The object to be rotated.
8676                 theCentPoint central point  the axis is the vector perpendicular to the plane
8677                              containing the three points.
8678                 thePoint1,thePoint2 points in a perpendicular plane of the axis.
8679                 theCopy Flag used to rotate object itself or create a copy.
8680
8681             Returns:
8682                 Rotated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8683                 new GEOM.GEOM_Object, containing the rotated object if theCopy flag is True.
8684             """
8685             if theCopy:
8686                 anObj = self.TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
8687             else:
8688                 anObj = self.TrsfOp.RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2)
8689             RaiseIfFailed("RotateThreePoints", self.TrsfOp)
8690             return anObj
8691
8692         ## Rotate given object around vector perpendicular to plane
8693         #  containing three points, creating its copy before the rotatation.
8694         #  @param theObject The object to be rotated.
8695         #  @param theCentPoint central point the axis is the vector perpendicular to the plane
8696         #  containing the three points.
8697         #  @param thePoint1,thePoint2 in a perpendicular plane of the axis.
8698         #  @param theName Object name; when specified, this parameter is used
8699         #         for result publication in the study. Otherwise, if automatic
8700         #         publication is switched on, default value is used for result name.
8701         #
8702         #  @return New GEOM.GEOM_Object, containing the rotated object.
8703         #
8704         #  @ref tui_rotation "Example"
8705         @ManageTransactions("TrsfOp")
8706         def MakeRotationThreePoints(self, theObject, theCentPoint, thePoint1, thePoint2, theName=None):
8707             """
8708             Rotate given object around vector perpendicular to plane
8709             containing three points, creating its copy before the rotatation.
8710
8711             Parameters:
8712                 theObject The object to be rotated.
8713                 theCentPoint central point  the axis is the vector perpendicular to the plane
8714                              containing the three points.
8715                 thePoint1,thePoint2  in a perpendicular plane of the axis.
8716                 theName Object name; when specified, this parameter is used
8717                         for result publication in the study. Otherwise, if automatic
8718                         publication is switched on, default value is used for result name.
8719
8720             Returns:
8721                 New GEOM.GEOM_Object, containing the rotated object.
8722             """
8723             # Example: see GEOM_TestAll.py
8724             anObj = self.TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
8725             RaiseIfFailed("RotateThreePointsCopy", self.TrsfOp)
8726             self._autoPublish(anObj, theName, "rotated")
8727             return anObj
8728
8729         ## Scale the given object by the specified factor.
8730         #  @param theObject The object to be scaled.
8731         #  @param thePoint Center point for scaling.
8732         #                  Passing None for it means scaling relatively the origin of global CS.
8733         #  @param theFactor Scaling factor value.
8734         #  @param theCopy Flag used to scale object itself or create a copy.
8735         #  @return Scaled @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8736         #  new GEOM.GEOM_Object, containing the scaled object if @a theCopy flag is @c True.
8737         @ManageTransactions("TrsfOp")
8738         def Scale(self, theObject, thePoint, theFactor, theCopy=False):
8739             """
8740             Scale the given object by the specified factor.
8741
8742             Parameters:
8743                 theObject The object to be scaled.
8744                 thePoint Center point for scaling.
8745                          Passing None for it means scaling relatively the origin of global CS.
8746                 theFactor Scaling factor value.
8747                 theCopy Flag used to scale object itself or create a copy.
8748
8749             Returns:
8750                 Scaled theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8751                 new GEOM.GEOM_Object, containing the scaled object if theCopy flag is True.
8752             """
8753             # Example: see GEOM_TestAll.py
8754             theFactor, Parameters = ParseParameters(theFactor)
8755             if theCopy:
8756                 anObj = self.TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
8757             else:
8758                 anObj = self.TrsfOp.ScaleShape(theObject, thePoint, theFactor)
8759             RaiseIfFailed("Scale", self.TrsfOp)
8760             anObj.SetParameters(Parameters)
8761             return anObj
8762
8763         ## Scale the given object by the factor, creating its copy before the scaling.
8764         #  @param theObject The object to be scaled.
8765         #  @param thePoint Center point for scaling.
8766         #                  Passing None for it means scaling relatively the origin of global CS.
8767         #  @param theFactor Scaling factor value.
8768         #  @param theName Object name; when specified, this parameter is used
8769         #         for result publication in the study. Otherwise, if automatic
8770         #         publication is switched on, default value is used for result name.
8771         #
8772         #  @return New GEOM.GEOM_Object, containing the scaled shape.
8773         #
8774         #  @ref tui_scale "Example"
8775         @ManageTransactions("TrsfOp")
8776         def MakeScaleTransform(self, theObject, thePoint, theFactor, theName=None):
8777             """
8778             Scale the given object by the factor, creating its copy before the scaling.
8779
8780             Parameters:
8781                 theObject The object to be scaled.
8782                 thePoint Center point for scaling.
8783                          Passing None for it means scaling relatively the origin of global CS.
8784                 theFactor Scaling factor value.
8785                 theName Object name; when specified, this parameter is used
8786                         for result publication in the study. Otherwise, if automatic
8787                         publication is switched on, default value is used for result name.
8788
8789             Returns:
8790                 New GEOM.GEOM_Object, containing the scaled shape.
8791             """
8792             # Example: see GEOM_TestAll.py
8793             theFactor, Parameters = ParseParameters(theFactor)
8794             anObj = self.TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
8795             RaiseIfFailed("ScaleShapeCopy", self.TrsfOp)
8796             anObj.SetParameters(Parameters)
8797             self._autoPublish(anObj, theName, "scaled")
8798             return anObj
8799
8800         ## Scale the given object by different factors along coordinate axes.
8801         #  @param theObject The object to be scaled.
8802         #  @param thePoint Center point for scaling.
8803         #                  Passing None for it means scaling relatively the origin of global CS.
8804         #  @param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8805         #  @param theCopy Flag used to scale object itself or create a copy.
8806         #  @return Scaled @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8807         #  new GEOM.GEOM_Object, containing the scaled object if @a theCopy flag is @c True.
8808         @ManageTransactions("TrsfOp")
8809         def ScaleAlongAxes(self, theObject, thePoint, theFactorX, theFactorY, theFactorZ, theCopy=False):
8810             """
8811             Scale the given object by different factors along coordinate axes.
8812
8813             Parameters:
8814                 theObject The object to be scaled.
8815                 thePoint Center point for scaling.
8816                             Passing None for it means scaling relatively the origin of global CS.
8817                 theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8818                 theCopy Flag used to scale object itself or create a copy.
8819
8820             Returns:
8821                 Scaled theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8822                 new GEOM.GEOM_Object, containing the scaled object if theCopy flag is True.
8823             """
8824             # Example: see GEOM_TestAll.py
8825             theFactorX, theFactorY, theFactorZ, Parameters = ParseParameters(theFactorX, theFactorY, theFactorZ)
8826             if theCopy:
8827                 anObj = self.TrsfOp.ScaleShapeAlongAxesCopy(theObject, thePoint,
8828                                                             theFactorX, theFactorY, theFactorZ)
8829             else:
8830                 anObj = self.TrsfOp.ScaleShapeAlongAxes(theObject, thePoint,
8831                                                         theFactorX, theFactorY, theFactorZ)
8832             RaiseIfFailed("ScaleAlongAxes", self.TrsfOp)
8833             anObj.SetParameters(Parameters)
8834             return anObj
8835
8836         ## Scale the given object by different factors along coordinate axes,
8837         #  creating its copy before the scaling.
8838         #  @param theObject The object to be scaled.
8839         #  @param thePoint Center point for scaling.
8840         #                  Passing None for it means scaling relatively the origin of global CS.
8841         #  @param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8842         #  @param theName Object name; when specified, this parameter is used
8843         #         for result publication in the study. Otherwise, if automatic
8844         #         publication is switched on, default value is used for result name.
8845         #
8846         #  @return New GEOM.GEOM_Object, containing the scaled shape.
8847         #
8848         #  @ref swig_scale "Example"
8849         @ManageTransactions("TrsfOp")
8850         def MakeScaleAlongAxes(self, theObject, thePoint, theFactorX, theFactorY, theFactorZ, theName=None):
8851             """
8852             Scale the given object by different factors along coordinate axes,
8853             creating its copy before the scaling.
8854
8855             Parameters:
8856                 theObject The object to be scaled.
8857                 thePoint Center point for scaling.
8858                             Passing None for it means scaling relatively the origin of global CS.
8859                 theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8860                 theName Object name; when specified, this parameter is used
8861                         for result publication in the study. Otherwise, if automatic
8862                         publication is switched on, default value is used for result name.
8863
8864             Returns:
8865                 New GEOM.GEOM_Object, containing the scaled shape.
8866             """
8867             # Example: see GEOM_TestAll.py
8868             theFactorX, theFactorY, theFactorZ, Parameters = ParseParameters(theFactorX, theFactorY, theFactorZ)
8869             anObj = self.TrsfOp.ScaleShapeAlongAxesCopy(theObject, thePoint,
8870                                                         theFactorX, theFactorY, theFactorZ)
8871             RaiseIfFailed("MakeScaleAlongAxes", self.TrsfOp)
8872             anObj.SetParameters(Parameters)
8873             self._autoPublish(anObj, theName, "scaled")
8874             return anObj
8875
8876         ## Mirror an object relatively the given plane.
8877         #  @param theObject The object to be mirrored.
8878         #  @param thePlane Plane of symmetry.
8879         #  @param theCopy Flag used to mirror object itself or create a copy.
8880         #  @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8881         #  new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
8882         @ManageTransactions("TrsfOp")
8883         def MirrorByPlane(self, theObject, thePlane, theCopy=False):
8884             """
8885             Mirror an object relatively the given plane.
8886
8887             Parameters:
8888                 theObject The object to be mirrored.
8889                 thePlane Plane of symmetry.
8890                 theCopy Flag used to mirror object itself or create a copy.
8891
8892             Returns:
8893                 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8894                 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
8895             """
8896             if theCopy:
8897                 anObj = self.TrsfOp.MirrorPlaneCopy(theObject, thePlane)
8898             else:
8899                 anObj = self.TrsfOp.MirrorPlane(theObject, thePlane)
8900             RaiseIfFailed("MirrorByPlane", self.TrsfOp)
8901             return anObj
8902
8903         ## Create an object, symmetrical
8904         #  to the given one relatively the given plane.
8905         #  @param theObject The object to be mirrored.
8906         #  @param thePlane Plane of symmetry.
8907         #  @param theName Object name; when specified, this parameter is used
8908         #         for result publication in the study. Otherwise, if automatic
8909         #         publication is switched on, default value is used for result name.
8910         #
8911         #  @return New GEOM.GEOM_Object, containing the mirrored shape.
8912         #
8913         #  @ref tui_mirror "Example"
8914         @ManageTransactions("TrsfOp")
8915         def MakeMirrorByPlane(self, theObject, thePlane, theName=None):
8916             """
8917             Create an object, symmetrical to the given one relatively the given plane.
8918
8919             Parameters:
8920                 theObject The object to be mirrored.
8921                 thePlane Plane of symmetry.
8922                 theName Object name; when specified, this parameter is used
8923                         for result publication in the study. Otherwise, if automatic
8924                         publication is switched on, default value is used for result name.
8925
8926             Returns:
8927                 New GEOM.GEOM_Object, containing the mirrored shape.
8928             """
8929             # Example: see GEOM_TestAll.py
8930             anObj = self.TrsfOp.MirrorPlaneCopy(theObject, thePlane)
8931             RaiseIfFailed("MirrorPlaneCopy", self.TrsfOp)
8932             self._autoPublish(anObj, theName, "mirrored")
8933             return anObj
8934
8935         ## Mirror an object relatively the given axis.
8936         #  @param theObject The object to be mirrored.
8937         #  @param theAxis Axis of symmetry.
8938         #  @param theCopy Flag used to mirror object itself or create a copy.
8939         #  @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8940         #  new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
8941         @ManageTransactions("TrsfOp")
8942         def MirrorByAxis(self, theObject, theAxis, theCopy=False):
8943             """
8944             Mirror an object relatively the given axis.
8945
8946             Parameters:
8947                 theObject The object to be mirrored.
8948                 theAxis Axis of symmetry.
8949                 theCopy Flag used to mirror object itself or create a copy.
8950
8951             Returns:
8952                 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8953                 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
8954             """
8955             if theCopy:
8956                 anObj = self.TrsfOp.MirrorAxisCopy(theObject, theAxis)
8957             else:
8958                 anObj = self.TrsfOp.MirrorAxis(theObject, theAxis)
8959             RaiseIfFailed("MirrorByAxis", self.TrsfOp)
8960             return anObj
8961
8962         ## Create an object, symmetrical
8963         #  to the given one relatively the given axis.
8964         #  @param theObject The object to be mirrored.
8965         #  @param theAxis Axis of symmetry.
8966         #  @param theName Object name; when specified, this parameter is used
8967         #         for result publication in the study. Otherwise, if automatic
8968         #         publication is switched on, default value is used for result name.
8969         #
8970         #  @return New GEOM.GEOM_Object, containing the mirrored shape.
8971         #
8972         #  @ref tui_mirror "Example"
8973         @ManageTransactions("TrsfOp")
8974         def MakeMirrorByAxis(self, theObject, theAxis, theName=None):
8975             """
8976             Create an object, symmetrical to the given one relatively the given axis.
8977
8978             Parameters:
8979                 theObject The object to be mirrored.
8980                 theAxis Axis of symmetry.
8981                 theName Object name; when specified, this parameter is used
8982                         for result publication in the study. Otherwise, if automatic
8983                         publication is switched on, default value is used for result name.
8984
8985             Returns:
8986                 New GEOM.GEOM_Object, containing the mirrored shape.
8987             """
8988             # Example: see GEOM_TestAll.py
8989             anObj = self.TrsfOp.MirrorAxisCopy(theObject, theAxis)
8990             RaiseIfFailed("MirrorAxisCopy", self.TrsfOp)
8991             self._autoPublish(anObj, theName, "mirrored")
8992             return anObj
8993
8994         ## Mirror an object relatively the given point.
8995         #  @param theObject The object to be mirrored.
8996         #  @param thePoint Point of symmetry.
8997         #  @param theCopy Flag used to mirror object itself or create a copy.
8998         #  @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8999         #  new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
9000         @ManageTransactions("TrsfOp")
9001         def MirrorByPoint(self, theObject, thePoint, theCopy=False):
9002             """
9003             Mirror an object relatively the given point.
9004
9005             Parameters:
9006                 theObject The object to be mirrored.
9007                 thePoint Point of symmetry.
9008                 theCopy Flag used to mirror object itself or create a copy.
9009
9010             Returns:
9011                 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9012                 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
9013             """
9014             # Example: see GEOM_TestAll.py
9015             if theCopy:
9016                 anObj = self.TrsfOp.MirrorPointCopy(theObject, thePoint)
9017             else:
9018                 anObj = self.TrsfOp.MirrorPoint(theObject, thePoint)
9019             RaiseIfFailed("MirrorByPoint", self.TrsfOp)
9020             return anObj
9021
9022         ## Create an object, symmetrical
9023         #  to the given one relatively the given point.
9024         #  @param theObject The object to be mirrored.
9025         #  @param thePoint Point of symmetry.
9026         #  @param theName Object name; when specified, this parameter is used
9027         #         for result publication in the study. Otherwise, if automatic
9028         #         publication is switched on, default value is used for result name.
9029         #
9030         #  @return New GEOM.GEOM_Object, containing the mirrored shape.
9031         #
9032         #  @ref tui_mirror "Example"
9033         @ManageTransactions("TrsfOp")
9034         def MakeMirrorByPoint(self, theObject, thePoint, theName=None):
9035             """
9036             Create an object, symmetrical
9037             to the given one relatively the given point.
9038
9039             Parameters:
9040                 theObject The object to be mirrored.
9041                 thePoint Point of symmetry.
9042                 theName Object name; when specified, this parameter is used
9043                         for result publication in the study. Otherwise, if automatic
9044                         publication is switched on, default value is used for result name.
9045
9046             Returns:
9047                 New GEOM.GEOM_Object, containing the mirrored shape.
9048             """
9049             # Example: see GEOM_TestAll.py
9050             anObj = self.TrsfOp.MirrorPointCopy(theObject, thePoint)
9051             RaiseIfFailed("MirrorPointCopy", self.TrsfOp)
9052             self._autoPublish(anObj, theName, "mirrored")
9053             return anObj
9054
9055         ## Modify the location of the given object.
9056         #  @param theObject The object to be displaced.
9057         #  @param theStartLCS Coordinate system to perform displacement from it.\n
9058         #                     If \a theStartLCS is NULL, displacement
9059         #                     will be performed from global CS.\n
9060         #                     If \a theObject itself is used as \a theStartLCS,
9061         #                     its location will be changed to \a theEndLCS.
9062         #  @param theEndLCS Coordinate system to perform displacement to it.
9063         #  @param theCopy Flag used to displace object itself or create a copy.
9064         #  @return Displaced @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9065         #  new GEOM.GEOM_Object, containing the displaced object if @a theCopy flag is @c True.
9066         @ManageTransactions("TrsfOp")
9067         def Position(self, theObject, theStartLCS, theEndLCS, theCopy=False):
9068             """
9069             Modify the Location of the given object by LCS, creating its copy before the setting.
9070
9071             Parameters:
9072                 theObject The object to be displaced.
9073                 theStartLCS Coordinate system to perform displacement from it.
9074                             If theStartLCS is NULL, displacement
9075                             will be performed from global CS.
9076                             If theObject itself is used as theStartLCS,
9077                             its location will be changed to theEndLCS.
9078                 theEndLCS Coordinate system to perform displacement to it.
9079                 theCopy Flag used to displace object itself or create a copy.
9080
9081             Returns:
9082                 Displaced theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9083                 new GEOM.GEOM_Object, containing the displaced object if theCopy flag is True.
9084             """
9085             # Example: see GEOM_TestAll.py
9086             if theCopy:
9087                 anObj = self.TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
9088             else:
9089                 anObj = self.TrsfOp.PositionShape(theObject, theStartLCS, theEndLCS)
9090             RaiseIfFailed("Displace", self.TrsfOp)
9091             return anObj
9092
9093         ## Modify the Location of the given object by LCS,
9094         #  creating its copy before the setting.
9095         #  @param theObject The object to be displaced.
9096         #  @param theStartLCS Coordinate system to perform displacement from it.\n
9097         #                     If \a theStartLCS is NULL, displacement
9098         #                     will be performed from global CS.\n
9099         #                     If \a theObject itself is used as \a theStartLCS,
9100         #                     its location will be changed to \a theEndLCS.
9101         #  @param theEndLCS Coordinate system to perform displacement to it.
9102         #  @param theName Object name; when specified, this parameter is used
9103         #         for result publication in the study. Otherwise, if automatic
9104         #         publication is switched on, default value is used for result name.
9105         #
9106         #  @return New GEOM.GEOM_Object, containing the displaced shape.
9107         #
9108         #  @ref tui_modify_location "Example"
9109         @ManageTransactions("TrsfOp")
9110         def MakePosition(self, theObject, theStartLCS, theEndLCS, theName=None):
9111             """
9112             Modify the Location of the given object by LCS, creating its copy before the setting.
9113
9114             Parameters:
9115                 theObject The object to be displaced.
9116                 theStartLCS Coordinate system to perform displacement from it.
9117                             If theStartLCS is NULL, displacement
9118                             will be performed from global CS.
9119                             If theObject itself is used as theStartLCS,
9120                             its location will be changed to theEndLCS.
9121                 theEndLCS Coordinate system to perform displacement to it.
9122                 theName Object name; when specified, this parameter is used
9123                         for result publication in the study. Otherwise, if automatic
9124                         publication is switched on, default value is used for result name.
9125
9126             Returns:
9127                 New GEOM.GEOM_Object, containing the displaced shape.
9128
9129             Example of usage:
9130                 # create local coordinate systems
9131                 cs1 = geompy.MakeMarker( 0, 0, 0, 1,0,0, 0,1,0)
9132                 cs2 = geompy.MakeMarker(30,40,40, 1,0,0, 0,1,0)
9133                 # modify the location of the given object
9134                 position = geompy.MakePosition(cylinder, cs1, cs2)
9135             """
9136             # Example: see GEOM_TestAll.py
9137             anObj = self.TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
9138             RaiseIfFailed("PositionShapeCopy", self.TrsfOp)
9139             self._autoPublish(anObj, theName, "displaced")
9140             return anObj
9141
9142         ## Modify the Location of the given object by Path.
9143         #  @param  theObject The object to be displaced.
9144         #  @param  thePath Wire or Edge along that the object will be translated.
9145         #  @param  theDistance progress of Path (0 = start location, 1 = end of path location).
9146         #  @param  theCopy is to create a copy objects if true.
9147         #  @param  theReverse  0 - for usual direction, 1 - to reverse path direction.
9148         #  @return Displaced @a theObject (GEOM.GEOM_Object) if @a theCopy is @c False or
9149         #          new GEOM.GEOM_Object, containing the displaced shape if @a theCopy is @c True.
9150         #
9151         #  @ref tui_modify_location "Example"
9152         @ManageTransactions("TrsfOp")
9153         def PositionAlongPath(self,theObject, thePath, theDistance, theCopy, theReverse):
9154             """
9155             Modify the Location of the given object by Path.
9156
9157             Parameters:
9158                  theObject The object to be displaced.
9159                  thePath Wire or Edge along that the object will be translated.
9160                  theDistance progress of Path (0 = start location, 1 = end of path location).
9161                  theCopy is to create a copy objects if true.
9162                  theReverse  0 - for usual direction, 1 - to reverse path direction.
9163
9164             Returns:
9165                  Displaced theObject (GEOM.GEOM_Object) if theCopy is False or
9166                  new GEOM.GEOM_Object, containing the displaced shape if theCopy is True.
9167
9168             Example of usage:
9169                 position = geompy.PositionAlongPath(cylinder, circle, 0.75, 1, 1)
9170             """
9171             # Example: see GEOM_TestAll.py
9172             anObj = self.TrsfOp.PositionAlongPath(theObject, thePath, theDistance, theCopy, theReverse)
9173             RaiseIfFailed("PositionAlongPath", self.TrsfOp)
9174             return anObj
9175
9176         ## Modify the Location of the given object by Path, creating its copy before the operation.
9177         #  @param theObject The object to be displaced.
9178         #  @param thePath Wire or Edge along that the object will be translated.
9179         #  @param theDistance progress of Path (0 = start location, 1 = end of path location).
9180         #  @param theReverse  0 - for usual direction, 1 - to reverse path direction.
9181         #  @param theName Object name; when specified, this parameter is used
9182         #         for result publication in the study. Otherwise, if automatic
9183         #         publication is switched on, default value is used for result name.
9184         #
9185         #  @return New GEOM.GEOM_Object, containing the displaced shape.
9186         @ManageTransactions("TrsfOp")
9187         def MakePositionAlongPath(self, theObject, thePath, theDistance, theReverse, theName=None):
9188             """
9189             Modify the Location of the given object by Path, creating its copy before the operation.
9190
9191             Parameters:
9192                  theObject The object to be displaced.
9193                  thePath Wire or Edge along that the object will be translated.
9194                  theDistance progress of Path (0 = start location, 1 = end of path location).
9195                  theReverse  0 - for usual direction, 1 - to reverse path direction.
9196                  theName Object name; when specified, this parameter is used
9197                          for result publication in the study. Otherwise, if automatic
9198                          publication is switched on, default value is used for result name.
9199
9200             Returns:
9201                 New GEOM.GEOM_Object, containing the displaced shape.
9202             """
9203             # Example: see GEOM_TestAll.py
9204             anObj = self.TrsfOp.PositionAlongPath(theObject, thePath, theDistance, 1, theReverse)
9205             RaiseIfFailed("PositionAlongPath", self.TrsfOp)
9206             self._autoPublish(anObj, theName, "displaced")
9207             return anObj
9208
9209         ## Offset given shape.
9210         #  @param theObject The base object for the offset.
9211         #  @param theOffset Offset value.
9212         #  @param theCopy Flag used to offset object itself or create a copy.
9213         #  @return Modified @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9214         #  new GEOM.GEOM_Object, containing the result of offset operation if @a theCopy flag is @c True.
9215         @ManageTransactions("TrsfOp")
9216         def Offset(self, theObject, theOffset, theCopy=False):
9217             """
9218             Offset given shape.
9219
9220             Parameters:
9221                 theObject The base object for the offset.
9222                 theOffset Offset value.
9223                 theCopy Flag used to offset object itself or create a copy.
9224
9225             Returns:
9226                 Modified theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9227                 new GEOM.GEOM_Object, containing the result of offset operation if theCopy flag is True.
9228             """
9229             theOffset, Parameters = ParseParameters(theOffset)
9230             if theCopy:
9231                 anObj = self.TrsfOp.OffsetShapeCopy(theObject, theOffset, True)
9232             else:
9233                 anObj = self.TrsfOp.OffsetShape(theObject, theOffset, True)
9234             RaiseIfFailed("Offset", self.TrsfOp)
9235             anObj.SetParameters(Parameters)
9236             return anObj
9237
9238         ## Create new object as offset of the given one. Gap between two adjacent
9239         #  offset surfaces is filled by a pipe.
9240         #  @param theObject The base object for the offset.
9241         #  @param theOffset Offset value.
9242         #  @param theName Object name; when specified, this parameter is used
9243         #         for result publication in the study. Otherwise, if automatic
9244         #         publication is switched on, default value is used for result name.
9245         #
9246         #  @return New GEOM.GEOM_Object, containing the offset object.
9247         #
9248         #  @sa MakeOffsetIntersectionJoin
9249         #  @ref tui_offset "Example"
9250         @ManageTransactions("TrsfOp")
9251         def MakeOffset(self, theObject, theOffset, theName=None):
9252             """
9253             Create new object as offset of the given one. Gap between adjacent
9254             offset surfaces is filled by a pipe.
9255
9256             Parameters:
9257                 theObject The base object for the offset.
9258                 theOffset Offset value.
9259                 theName Object name; when specified, this parameter is used
9260                         for result publication in the study. Otherwise, if automatic
9261                         publication is switched on, default value is used for result name.
9262
9263             Returns:
9264                 New GEOM.GEOM_Object, containing the offset object.
9265
9266             Example of usage:
9267                  box = geompy.MakeBox(20, 20, 20, 200, 200, 200)
9268                  # create a new object as offset of the given object
9269                  offset = geompy.MakeOffset(box, 70.)
9270             """
9271             # Example: see GEOM_TestAll.py
9272             theOffset, Parameters = ParseParameters(theOffset)
9273             anObj = self.TrsfOp.OffsetShapeCopy( theObject, theOffset, True )
9274             RaiseIfFailed("OffsetShapeCopy", self.TrsfOp)
9275             anObj.SetParameters(Parameters)
9276             self._autoPublish(anObj, theName, "offset")
9277             return anObj
9278
9279         ## Create new object as offset of the given one. Gap between adjacent
9280         #  offset surfaces is filled by extending and intersecting them.
9281         #  @param theObject The base object for the offset.
9282         #  @param theOffset Offset value.
9283         #  @param theName Object name; when specified, this parameter is used
9284         #         for result publication in the study. Otherwise, if automatic
9285         #         publication is switched on, default value is used for result name.
9286         #
9287         #  @return New GEOM.GEOM_Object, containing the offset object.
9288         #
9289         #  @sa MakeOffset
9290         #  @ref tui_offset "Example"
9291         @ManageTransactions("TrsfOp")
9292         def MakeOffsetIntersectionJoin(self, theObject, theOffset, theName=None):
9293             """
9294             Create new object as offset of the given one. Gap between adjacent
9295             offset surfaces is filled by extending and intersecting them.
9296
9297             Parameters:
9298                 theObject The base object for the offset.
9299                 theOffset Offset value.
9300                 theName Object name; when specified, this parameter is used
9301                         for result publication in the study. Otherwise, if automatic
9302                         publication is switched on, default value is used for result name.
9303
9304             Returns:
9305                 New GEOM.GEOM_Object, containing the offset object.
9306
9307             Example of usage:
9308                  box = geompy.MakeBox(20, 20, 20, 200, 200, 200)
9309                  # create a new box extended by 70
9310                  offset = geompy.MakeOffsetIntersectionJoin(box, 70.)
9311             """
9312             # Example: see GEOM_TestAll.py
9313             theOffset, Parameters = ParseParameters( theOffset )
9314             anObj = self.TrsfOp.OffsetShapeCopy( theObject, theOffset, False )
9315             RaiseIfFailed("OffsetShapeCopy", self.TrsfOp)
9316             anObj.SetParameters(Parameters)
9317             self._autoPublish(anObj, theName, "offset")
9318             return anObj
9319
9320         ## Create new object as projection of the given one on another.
9321         #  @param theSource The source object for the projection. It can be a point, edge or wire.
9322         #         Edge and wire are acceptable if @a theTarget is a face.
9323         #  @param theTarget The target object. It can be planar or cylindrical face, edge or wire.
9324         #  @param theName Object name; when specified, this parameter is used
9325         #         for result publication in the study. Otherwise, if automatic
9326         #         publication is switched on, default value is used for result name.
9327         #
9328         #  @return New GEOM.GEOM_Object, containing the projection.
9329         #
9330         #  @ref tui_projection "Example"
9331         @ManageTransactions("TrsfOp")
9332         def MakeProjection(self, theSource, theTarget, theName=None):
9333             """
9334             Create new object as projection of the given one on another.
9335
9336             Parameters:
9337                 theSource The source object for the projection. It can be a point, edge or wire.
9338                           Edge and wire are acceptable if theTarget is a face.
9339                 theTarget The target object. It can be planar or cylindrical face, edge or wire.
9340                 theName Object name; when specified, this parameter is used
9341                         for result publication in the study. Otherwise, if automatic
9342                         publication is switched on, default value is used for result name.
9343
9344             Returns:
9345                 New GEOM.GEOM_Object, containing the projection.
9346             """
9347             # Example: see GEOM_TestAll.py
9348             anObj = self.TrsfOp.ProjectShapeCopy(theSource, theTarget)
9349             RaiseIfFailed("ProjectShapeCopy", self.TrsfOp)
9350             self._autoPublish(anObj, theName, "projection")
9351             return anObj
9352
9353         ## Create a projection of the given point on a wire or an edge.
9354         #  If there are no solutions or there are 2 or more solutions It throws an
9355         #  exception.
9356         #  @param thePoint the point to be projected.
9357         #  @param theWire the wire. The edge is accepted as well.
9358         #  @param theName Object name; when specified, this parameter is used
9359         #         for result publication in the study. Otherwise, if automatic
9360         #         publication is switched on, default value is used for result name.
9361         #
9362         #  @return [\a u, \a PointOnEdge, \a EdgeInWireIndex]
9363         #  \n \a u: The parameter of projection point on edge.
9364         #  \n \a PointOnEdge: The projection point.
9365         #  \n \a EdgeInWireIndex: The index of an edge in a wire.
9366         #
9367         #  @ref tui_projection "Example"
9368         @ManageTransactions("TrsfOp")
9369         def MakeProjectionOnWire(self, thePoint, theWire, theName=None):
9370             """
9371             Create a projection of the given point on a wire or an edge.
9372             If there are no solutions or there are 2 or more solutions It throws an
9373             exception.
9374
9375             Parameters:
9376                 thePoint the point to be projected.
9377                 theWire the wire. The edge is accepted as well.
9378                 theName Object name; when specified, this parameter is used
9379                         for result publication in the study. Otherwise, if automatic
9380                         publication is switched on, default value is used for result name.
9381
9382             Returns:
9383                 [u, PointOnEdge, EdgeInWireIndex]
9384                  u: The parameter of projection point on edge.
9385                  PointOnEdge: The projection point.
9386                  EdgeInWireIndex: The index of an edge in a wire.
9387             """
9388             # Example: see GEOM_TestAll.py
9389             anObj = self.TrsfOp.ProjectPointOnWire(thePoint, theWire)
9390             RaiseIfFailed("ProjectPointOnWire", self.TrsfOp)
9391             self._autoPublish(anObj[1], theName, "projection")
9392             return anObj
9393
9394         # -----------------------------------------------------------------------------
9395         # Patterns
9396         # -----------------------------------------------------------------------------
9397
9398         ## Translate the given object along the given vector a given number times
9399         #  @param theObject The object to be translated.
9400         #  @param theVector Direction of the translation. DX if None.
9401         #  @param theStep Distance to translate on.
9402         #  @param theNbTimes Quantity of translations to be done.
9403         #  @param theName Object name; when specified, this parameter is used
9404         #         for result publication in the study. Otherwise, if automatic
9405         #         publication is switched on, default value is used for result name.
9406         #
9407         #  @return New GEOM.GEOM_Object, containing compound of all
9408         #          the shapes, obtained after each translation.
9409         #
9410         #  @ref tui_multi_translation "Example"
9411         @ManageTransactions("TrsfOp")
9412         def MakeMultiTranslation1D(self, theObject, theVector, theStep, theNbTimes, theName=None):
9413             """
9414             Translate the given object along the given vector a given number times
9415
9416             Parameters:
9417                 theObject The object to be translated.
9418                 theVector Direction of the translation. DX if None.
9419                 theStep Distance to translate on.
9420                 theNbTimes Quantity of translations to be done.
9421                 theName Object name; when specified, this parameter is used
9422                         for result publication in the study. Otherwise, if automatic
9423                         publication is switched on, default value is used for result name.
9424
9425             Returns:
9426                 New GEOM.GEOM_Object, containing compound of all
9427                 the shapes, obtained after each translation.
9428
9429             Example of usage:
9430                 r1d = geompy.MakeMultiTranslation1D(prism, vect, 20, 4)
9431             """
9432             # Example: see GEOM_TestAll.py
9433             theStep, theNbTimes, Parameters = ParseParameters(theStep, theNbTimes)
9434             anObj = self.TrsfOp.MultiTranslate1D(theObject, theVector, theStep, theNbTimes)
9435             RaiseIfFailed("MultiTranslate1D", self.TrsfOp)
9436             anObj.SetParameters(Parameters)
9437             self._autoPublish(anObj, theName, "multitranslation")
9438             return anObj
9439
9440         ## Conseqently apply two specified translations to theObject specified number of times.
9441         #  @param theObject The object to be translated.
9442         #  @param theVector1 Direction of the first translation. DX if None.
9443         #  @param theStep1 Step of the first translation.
9444         #  @param theNbTimes1 Quantity of translations to be done along theVector1.
9445         #  @param theVector2 Direction of the second translation. DY if None.
9446         #  @param theStep2 Step of the second translation.
9447         #  @param theNbTimes2 Quantity of translations to be done along theVector2.
9448         #  @param theName Object name; when specified, this parameter is used
9449         #         for result publication in the study. Otherwise, if automatic
9450         #         publication is switched on, default value is used for result name.
9451         #
9452         #  @return New GEOM.GEOM_Object, containing compound of all
9453         #          the shapes, obtained after each translation.
9454         #
9455         #  @ref tui_multi_translation "Example"
9456         @ManageTransactions("TrsfOp")
9457         def MakeMultiTranslation2D(self, theObject, theVector1, theStep1, theNbTimes1,
9458                                    theVector2, theStep2, theNbTimes2, theName=None):
9459             """
9460             Conseqently apply two specified translations to theObject specified number of times.
9461
9462             Parameters:
9463                 theObject The object to be translated.
9464                 theVector1 Direction of the first translation. DX if None.
9465                 theStep1 Step of the first translation.
9466                 theNbTimes1 Quantity of translations to be done along theVector1.
9467                 theVector2 Direction of the second translation. DY if None.
9468                 theStep2 Step of the second translation.
9469                 theNbTimes2 Quantity of translations to be done along theVector2.
9470                 theName Object name; when specified, this parameter is used
9471                         for result publication in the study. Otherwise, if automatic
9472                         publication is switched on, default value is used for result name.
9473
9474             Returns:
9475                 New GEOM.GEOM_Object, containing compound of all
9476                 the shapes, obtained after each translation.
9477
9478             Example of usage:
9479                 tr2d = geompy.MakeMultiTranslation2D(prism, vect1, 20, 4, vect2, 80, 3)
9480             """
9481             # Example: see GEOM_TestAll.py
9482             theStep1,theNbTimes1,theStep2,theNbTimes2, Parameters = ParseParameters(theStep1,theNbTimes1,theStep2,theNbTimes2)
9483             anObj = self.TrsfOp.MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
9484                                                  theVector2, theStep2, theNbTimes2)
9485             RaiseIfFailed("MultiTranslate2D", self.TrsfOp)
9486             anObj.SetParameters(Parameters)
9487             self._autoPublish(anObj, theName, "multitranslation")
9488             return anObj
9489
9490         ## Rotate the given object around the given axis a given number times.
9491         #  Rotation angle will be 2*PI/theNbTimes.
9492         #  @param theObject The object to be rotated.
9493         #  @param theAxis The rotation axis. DZ if None.
9494         #  @param theNbTimes Quantity of rotations to be done.
9495         #  @param theName Object name; when specified, this parameter is used
9496         #         for result publication in the study. Otherwise, if automatic
9497         #         publication is switched on, default value is used for result name.
9498         #
9499         #  @return New GEOM.GEOM_Object, containing compound of all the
9500         #          shapes, obtained after each rotation.
9501         #
9502         #  @ref tui_multi_rotation "Example"
9503         @ManageTransactions("TrsfOp")
9504         def MultiRotate1DNbTimes (self, theObject, theAxis, theNbTimes, theName=None):
9505             """
9506             Rotate the given object around the given axis a given number times.
9507             Rotation angle will be 2*PI/theNbTimes.
9508
9509             Parameters:
9510                 theObject The object to be rotated.
9511                 theAxis The rotation axis. DZ if None.
9512                 theNbTimes Quantity of rotations to be done.
9513                 theName Object name; when specified, this parameter is used
9514                         for result publication in the study. Otherwise, if automatic
9515                         publication is switched on, default value is used for result name.
9516
9517             Returns:
9518                 New GEOM.GEOM_Object, containing compound of all the
9519                 shapes, obtained after each rotation.
9520
9521             Example of usage:
9522                 rot1d = geompy.MultiRotate1DNbTimes(prism, vect, 4)
9523             """
9524             # Example: see GEOM_TestAll.py
9525             theNbTimes, Parameters = ParseParameters(theNbTimes)
9526             anObj = self.TrsfOp.MultiRotate1D(theObject, theAxis, theNbTimes)
9527             RaiseIfFailed("MultiRotate1DNbTimes", self.TrsfOp)
9528             anObj.SetParameters(Parameters)
9529             self._autoPublish(anObj, theName, "multirotation")
9530             return anObj
9531
9532         ## Rotate the given object around the given axis
9533         #  a given number times on the given angle.
9534         #  @param theObject The object to be rotated.
9535         #  @param theAxis The rotation axis. DZ if None.
9536         #  @param theAngleStep Rotation angle in radians.
9537         #  @param theNbTimes Quantity of rotations to be done.
9538         #  @param theName Object name; when specified, this parameter is used
9539         #         for result publication in the study. Otherwise, if automatic
9540         #         publication is switched on, default value is used for result name.
9541         #
9542         #  @return New GEOM.GEOM_Object, containing compound of all the
9543         #          shapes, obtained after each rotation.
9544         #
9545         #  @ref tui_multi_rotation "Example"
9546         @ManageTransactions("TrsfOp")
9547         def MultiRotate1DByStep(self, theObject, theAxis, theAngleStep, theNbTimes, theName=None):
9548             """
9549             Rotate the given object around the given axis
9550             a given number times on the given angle.
9551
9552             Parameters:
9553                 theObject The object to be rotated.
9554                 theAxis The rotation axis. DZ if None.
9555                 theAngleStep Rotation angle in radians.
9556                 theNbTimes Quantity of rotations to be done.
9557                 theName Object name; when specified, this parameter is used
9558                         for result publication in the study. Otherwise, if automatic
9559                         publication is switched on, default value is used for result name.
9560
9561             Returns:
9562                 New GEOM.GEOM_Object, containing compound of all the
9563                 shapes, obtained after each rotation.
9564
9565             Example of usage:
9566                 rot1d = geompy.MultiRotate1DByStep(prism, vect, math.pi/4, 4)
9567             """
9568             # Example: see GEOM_TestAll.py
9569             theAngleStep, theNbTimes, Parameters = ParseParameters(theAngleStep, theNbTimes)
9570             anObj = self.TrsfOp.MultiRotate1DByStep(theObject, theAxis, theAngleStep, theNbTimes)
9571             RaiseIfFailed("MultiRotate1DByStep", self.TrsfOp)
9572             anObj.SetParameters(Parameters)
9573             self._autoPublish(anObj, theName, "multirotation")
9574             return anObj
9575
9576         ## Rotate the given object around the given axis a given
9577         #  number times and multi-translate each rotation result.
9578         #  Rotation angle will be 2*PI/theNbTimes1.
9579         #  Translation direction passes through center of gravity
9580         #  of rotated shape and its projection on the rotation axis.
9581         #  @param theObject The object to be rotated.
9582         #  @param theAxis Rotation axis. DZ if None.
9583         #  @param theNbTimes1 Quantity of rotations to be done.
9584         #  @param theRadialStep Translation distance.
9585         #  @param theNbTimes2 Quantity of translations to be done.
9586         #  @param theName Object name; when specified, this parameter is used
9587         #         for result publication in the study. Otherwise, if automatic
9588         #         publication is switched on, default value is used for result name.
9589         #
9590         #  @return New GEOM.GEOM_Object, containing compound of all the
9591         #          shapes, obtained after each transformation.
9592         #
9593         #  @ref tui_multi_rotation "Example"
9594         @ManageTransactions("TrsfOp")
9595         def MultiRotate2DNbTimes(self, theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
9596             """
9597             Rotate the given object around the
9598             given axis on the given angle a given number
9599             times and multi-translate each rotation result.
9600             Translation direction passes through center of gravity
9601             of rotated shape and its projection on the rotation axis.
9602
9603             Parameters:
9604                 theObject The object to be rotated.
9605                 theAxis Rotation axis. DZ if None.
9606                 theNbTimes1 Quantity of rotations to be done.
9607                 theRadialStep Translation distance.
9608                 theNbTimes2 Quantity of translations to be done.
9609                 theName Object name; when specified, this parameter is used
9610                         for result publication in the study. Otherwise, if automatic
9611                         publication is switched on, default value is used for result name.
9612
9613             Returns:
9614                 New GEOM.GEOM_Object, containing compound of all the
9615                 shapes, obtained after each transformation.
9616
9617             Example of usage:
9618                 rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
9619             """
9620             # Example: see GEOM_TestAll.py
9621             theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theNbTimes1, theRadialStep, theNbTimes2)
9622             anObj = self.TrsfOp.MultiRotate2DNbTimes(theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2)
9623             RaiseIfFailed("MultiRotate2DNbTimes", self.TrsfOp)
9624             anObj.SetParameters(Parameters)
9625             self._autoPublish(anObj, theName, "multirotation")
9626             return anObj
9627
9628         ## Rotate the given object around the
9629         #  given axis on the given angle a given number
9630         #  times and multi-translate each rotation result.
9631         #  Translation direction passes through center of gravity
9632         #  of rotated shape and its projection on the rotation axis.
9633         #  @param theObject The object to be rotated.
9634         #  @param theAxis Rotation axis. DZ if None.
9635         #  @param theAngleStep Rotation angle in radians.
9636         #  @param theNbTimes1 Quantity of rotations to be done.
9637         #  @param theRadialStep Translation distance.
9638         #  @param theNbTimes2 Quantity of translations to be done.
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 compound of all the
9644         #          shapes, obtained after each transformation.
9645         #
9646         #  @ref tui_multi_rotation "Example"
9647         @ManageTransactions("TrsfOp")
9648         def MultiRotate2DByStep (self, theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
9649             """
9650             Rotate the given object around the
9651             given axis on the given angle a given number
9652             times and multi-translate each rotation result.
9653             Translation direction passes through center of gravity
9654             of rotated shape and its projection on the rotation axis.
9655
9656             Parameters:
9657                 theObject The object to be rotated.
9658                 theAxis Rotation axis. DZ if None.
9659                 theAngleStep Rotation angle in radians.
9660                 theNbTimes1 Quantity of rotations to be done.
9661                 theRadialStep Translation distance.
9662                 theNbTimes2 Quantity of translations to be done.
9663                 theName Object name; when specified, this parameter is used
9664                         for result publication in the study. Otherwise, if automatic
9665                         publication is switched on, default value is used for result name.
9666
9667             Returns:
9668                 New GEOM.GEOM_Object, containing compound of all the
9669                 shapes, obtained after each transformation.
9670
9671             Example of usage:
9672                 rot2d = geompy.MultiRotate2D(prism, vect, math.pi/3, 4, 50, 5)
9673             """
9674             # Example: see GEOM_TestAll.py
9675             theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
9676             anObj = self.TrsfOp.MultiRotate2DByStep(theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
9677             RaiseIfFailed("MultiRotate2DByStep", self.TrsfOp)
9678             anObj.SetParameters(Parameters)
9679             self._autoPublish(anObj, theName, "multirotation")
9680             return anObj
9681
9682         ## The same, as MultiRotate1DNbTimes(), but axis is given by direction and point
9683         #
9684         #  @ref swig_MakeMultiRotation "Example"
9685         def MakeMultiRotation1DNbTimes(self, aShape, aDir, aPoint, aNbTimes, theName=None):
9686             """
9687             The same, as geompy.MultiRotate1DNbTimes, but axis is given by direction and point
9688
9689             Example of usage:
9690                 pz = geompy.MakeVertex(0, 0, 100)
9691                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9692                 MultiRot1D = geompy.MakeMultiRotation1DNbTimes(prism, vy, pz, 6)
9693             """
9694             # Example: see GEOM_TestOthers.py
9695             aVec = self.MakeLine(aPoint,aDir)
9696             # note: auto-publishing is done in self.MultiRotate1D()
9697             anObj = self.MultiRotate1DNbTimes(aShape, aVec, aNbTimes, theName)
9698             return anObj
9699
9700         ## The same, as MultiRotate1DByStep(), but axis is given by direction and point
9701         #
9702         #  @ref swig_MakeMultiRotation "Example"
9703         def MakeMultiRotation1DByStep(self, aShape, aDir, aPoint, anAngle, aNbTimes, theName=None):
9704             """
9705             The same, as geompy.MultiRotate1D, but axis is given by direction and point
9706
9707             Example of usage:
9708                 pz = geompy.MakeVertex(0, 0, 100)
9709                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9710                 MultiRot1D = geompy.MakeMultiRotation1DByStep(prism, vy, pz, math.pi/3, 6)
9711             """
9712             # Example: see GEOM_TestOthers.py
9713             aVec = self.MakeLine(aPoint,aDir)
9714             # note: auto-publishing is done in self.MultiRotate1D()
9715             anObj = self.MultiRotate1DByStep(aShape, aVec, anAngle, aNbTimes, theName)
9716             return anObj
9717
9718         ## The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
9719         #
9720         #  @ref swig_MakeMultiRotation "Example"
9721         def MakeMultiRotation2DNbTimes(self, aShape, aDir, aPoint, nbtimes1, aStep, nbtimes2, theName=None):
9722             """
9723             The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
9724
9725             Example of usage:
9726                 pz = geompy.MakeVertex(0, 0, 100)
9727                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9728                 MultiRot2D = geompy.MakeMultiRotation2DNbTimes(f12, vy, pz, 6, 30, 3)
9729             """
9730             # Example: see GEOM_TestOthers.py
9731             aVec = self.MakeLine(aPoint,aDir)
9732             # note: auto-publishing is done in self.MultiRotate2DNbTimes()
9733             anObj = self.MultiRotate2DNbTimes(aShape, aVec, nbtimes1, aStep, nbtimes2, theName)
9734             return anObj
9735
9736         ## The same, as MultiRotate2DByStep(), but axis is given by direction and point
9737         #
9738         #  @ref swig_MakeMultiRotation "Example"
9739         def MakeMultiRotation2DByStep(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
9740             """
9741             The same, as MultiRotate2DByStep(), but axis is given by direction and point
9742
9743             Example of usage:
9744                 pz = geompy.MakeVertex(0, 0, 100)
9745                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9746                 MultiRot2D = geompy.MakeMultiRotation2DByStep(f12, vy, pz, math.pi/4, 6, 30, 3)
9747             """
9748             # Example: see GEOM_TestOthers.py
9749             aVec = self.MakeLine(aPoint,aDir)
9750             # note: auto-publishing is done in self.MultiRotate2D()
9751             anObj = self.MultiRotate2DByStep(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
9752             return anObj
9753
9754         ##
9755         #  Compute a wire or a face that represents a projection of the source
9756         #  shape onto cylinder. The cylinder's coordinate system is the same
9757         #  as the global coordinate system.
9758         #
9759         #  @param theObject The object to be projected. It can be either
9760         #         a planar wire or a face.
9761         #  @param theRadius The radius of the cylinder.
9762         #  @param theStartAngle The starting angle in radians from
9763         #         the cylinder's X axis around Z axis. The angle from which
9764         #         the projection is started.
9765         #  @param theAngleLength The projection length angle in radians.
9766         #         The angle in which to project the total length of the wire.
9767         #         If it is negative the projection is not scaled and natural
9768         #         wire length is kept for the projection.
9769         #  @param theAngleRotation The desired angle in radians between
9770         #         the tangent vector to the first curve at the first point of
9771         #         the theObject's projection in 2D space and U-direction of
9772         #         cylinder's 2D space.
9773         #  @param theName Object name; when specified, this parameter is used
9774         #         for result publication in the study. Otherwise, if automatic
9775         #         publication is switched on, default value is used for result name.
9776         #
9777         #  @return New GEOM.GEOM_Object, containing the result shape. The result
9778         #         represents a wire or a face that represents a projection of
9779         #         the source shape onto a cylinder.
9780         #
9781         #  @ref tui_projection "Example"
9782         def MakeProjectionOnCylinder (self, theObject, theRadius,
9783                                       theStartAngle=0.0, theAngleLength=-1.0,
9784                                       theAngleRotation=0.0,
9785                                       theName=None):
9786             """
9787             Compute a wire or a face that represents a projection of the source
9788             shape onto cylinder. The cylinder's coordinate system is the same
9789             as the global coordinate system.
9790
9791             Parameters:
9792                 theObject The object to be projected. It can be either
9793                         a planar wire or a face.
9794                 theRadius The radius of the cylinder.
9795                 theStartAngle The starting angle in radians from the cylinder's X axis
9796                         around Z axis. The angle from which the projection is started.
9797                 theAngleLength The projection length angle in radians. The angle in which
9798                         to project the total length of the wire. If it is negative the
9799                         projection is not scaled and natural wire length is kept for
9800                         the projection.
9801                 theAngleRotation The desired angle in radians between
9802                         the tangent vector to the first curve at the first
9803                         point of the theObject's projection in 2D space and
9804                         U-direction of cylinder's 2D space.
9805                 theName Object name; when specified, this parameter is used
9806                         for result publication in the study. Otherwise, if automatic
9807                         publication is switched on, default value is used for result name.
9808
9809             Returns:
9810                 New GEOM.GEOM_Object, containing the result shape. The result
9811                 represents a wire or a face that represents a projection of
9812                 the source shape onto a cylinder.
9813             """
9814             # Example: see GEOM_TestAll.py
9815             flagStartAngle = False
9816             if isinstance(theStartAngle,str):
9817                 flagStartAngle = True
9818             flagAngleLength = False
9819             if isinstance(theAngleLength,str):
9820                 flagAngleLength = True
9821             flagAngleRotation = False
9822             if isinstance(theAngleRotation,str):
9823                 flagAngleRotation = True
9824             theRadius, theStartAngle, theAngleLength, theAngleRotation, Parameters = ParseParameters(
9825               theRadius, theStartAngle, theAngleLength, theAngleRotation)
9826             if flagStartAngle:
9827                 theStartAngle = theStartAngle*math.pi/180.
9828             if flagAngleLength:
9829                 theAngleLength = theAngleLength*math.pi/180.
9830             if flagAngleRotation:
9831                 theAngleRotation = theAngleRotation*math.pi/180.
9832             anObj = self.TrsfOp.MakeProjectionOnCylinder(theObject, theRadius,
9833                 theStartAngle, theAngleLength, theAngleRotation)
9834             RaiseIfFailed("MakeProjectionOnCylinder", self.TrsfOp)
9835             anObj.SetParameters(Parameters)
9836             self._autoPublish(anObj, theName, "projection")
9837             return anObj
9838
9839         # end of l3_transform
9840         ## @}
9841
9842         ## @addtogroup l3_transform_d
9843         ## @{
9844
9845         ## Deprecated method. Use MultiRotate1DNbTimes instead.
9846         def MultiRotate1D(self, theObject, theAxis, theNbTimes, theName=None):
9847             """
9848             Deprecated method. Use MultiRotate1DNbTimes instead.
9849             """
9850             print "The method MultiRotate1D is DEPRECATED. Use MultiRotate1DNbTimes instead."
9851             return self.MultiRotate1DNbTimes(theObject, theAxis, theNbTimes, theName)
9852
9853         ## The same, as MultiRotate2DByStep(), but theAngle is in degrees.
9854         #  This method is DEPRECATED. Use MultiRotate2DByStep() instead.
9855         @ManageTransactions("TrsfOp")
9856         def MultiRotate2D(self, theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2, theName=None):
9857             """
9858             The same, as MultiRotate2DByStep(), but theAngle is in degrees.
9859             This method is DEPRECATED. Use MultiRotate2DByStep() instead.
9860
9861             Example of usage:
9862                 rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
9863             """
9864             print "The method MultiRotate2D is DEPRECATED. Use MultiRotate2DByStep instead."
9865             theAngle, theNbTimes1, theStep, theNbTimes2, Parameters = ParseParameters(theAngle, theNbTimes1, theStep, theNbTimes2)
9866             anObj = self.TrsfOp.MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2)
9867             RaiseIfFailed("MultiRotate2D", self.TrsfOp)
9868             anObj.SetParameters(Parameters)
9869             self._autoPublish(anObj, theName, "multirotation")
9870             return anObj
9871
9872         ## The same, as MultiRotate1D(), but axis is given by direction and point
9873         #  This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
9874         def MakeMultiRotation1D(self, aShape, aDir, aPoint, aNbTimes, theName=None):
9875             """
9876             The same, as geompy.MultiRotate1D, but axis is given by direction and point.
9877             This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
9878
9879             Example of usage:
9880                 pz = geompy.MakeVertex(0, 0, 100)
9881                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9882                 MultiRot1D = geompy.MakeMultiRotation1D(prism, vy, pz, 6)
9883             """
9884             print "The method MakeMultiRotation1D is DEPRECATED. Use MakeMultiRotation1DNbTimes instead."
9885             aVec = self.MakeLine(aPoint,aDir)
9886             # note: auto-publishing is done in self.MultiRotate1D()
9887             anObj = self.MultiRotate1D(aShape, aVec, aNbTimes, theName)
9888             return anObj
9889
9890         ## The same, as MultiRotate2D(), but axis is given by direction and point
9891         #  This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
9892         def MakeMultiRotation2D(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
9893             """
9894             The same, as MultiRotate2D(), but axis is given by direction and point
9895             This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
9896
9897             Example of usage:
9898                 pz = geompy.MakeVertex(0, 0, 100)
9899                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9900                 MultiRot2D = geompy.MakeMultiRotation2D(f12, vy, pz, 45, 6, 30, 3)
9901             """
9902             print "The method MakeMultiRotation2D is DEPRECATED. Use MakeMultiRotation2DByStep instead."
9903             aVec = self.MakeLine(aPoint,aDir)
9904             # note: auto-publishing is done in self.MultiRotate2D()
9905             anObj = self.MultiRotate2D(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
9906             return anObj
9907
9908         # end of l3_transform_d
9909         ## @}
9910
9911         ## @addtogroup l3_local
9912         ## @{
9913
9914         ## Perform a fillet on all edges of the given shape.
9915         #  @param theShape Shape, to perform fillet on.
9916         #  @param theR Fillet radius.
9917         #  @param theName Object name; when specified, this parameter is used
9918         #         for result publication in the study. Otherwise, if automatic
9919         #         publication is switched on, default value is used for result name.
9920         #
9921         #  @return New GEOM.GEOM_Object, containing the result shape.
9922         #
9923         #  @ref tui_fillet "Example 1"
9924         #  \n @ref swig_MakeFilletAll "Example 2"
9925         @ManageTransactions("LocalOp")
9926         def MakeFilletAll(self, theShape, theR, theName=None):
9927             """
9928             Perform a fillet on all edges of the given shape.
9929
9930             Parameters:
9931                 theShape Shape, to perform fillet on.
9932                 theR Fillet radius.
9933                 theName Object name; when specified, this parameter is used
9934                         for result publication in the study. Otherwise, if automatic
9935                         publication is switched on, default value is used for result name.
9936
9937             Returns:
9938                 New GEOM.GEOM_Object, containing the result shape.
9939
9940             Example of usage:
9941                filletall = geompy.MakeFilletAll(prism, 10.)
9942             """
9943             # Example: see GEOM_TestOthers.py
9944             theR,Parameters = ParseParameters(theR)
9945             anObj = self.LocalOp.MakeFilletAll(theShape, theR)
9946             RaiseIfFailed("MakeFilletAll", self.LocalOp)
9947             anObj.SetParameters(Parameters)
9948             self._autoPublish(anObj, theName, "fillet")
9949             return anObj
9950
9951         ## Perform a fillet on the specified edges/faces of the given shape
9952         #  @param theShape Shape, to perform fillet on.
9953         #  @param theR Fillet radius.
9954         #  @param theShapeType Type of shapes in <VAR>theListShapes</VAR> (see ShapeType())
9955         #  @param theListShapes Global indices of edges/faces to perform fillet on.
9956         #  @param theName Object name; when specified, this parameter is used
9957         #         for result publication in the study. Otherwise, if automatic
9958         #         publication is switched on, default value is used for result name.
9959         #
9960         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
9961         #
9962         #  @return New GEOM.GEOM_Object, containing the result shape.
9963         #
9964         #  @ref tui_fillet "Example"
9965         @ManageTransactions("LocalOp")
9966         def MakeFillet(self, theShape, theR, theShapeType, theListShapes, theName=None):
9967             """
9968             Perform a fillet on the specified edges/faces of the given shape
9969
9970             Parameters:
9971                 theShape Shape, to perform fillet on.
9972                 theR Fillet radius.
9973                 theShapeType Type of shapes in theListShapes (see geompy.ShapeTypes)
9974                 theListShapes Global indices of edges/faces to perform fillet on.
9975                 theName Object name; when specified, this parameter is used
9976                         for result publication in the study. Otherwise, if automatic
9977                         publication is switched on, default value is used for result name.
9978
9979             Note:
9980                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
9981
9982             Returns:
9983                 New GEOM.GEOM_Object, containing the result shape.
9984
9985             Example of usage:
9986                 # get the list of IDs (IDList) for the fillet
9987                 prism_edges = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["EDGE"])
9988                 IDlist_e = []
9989                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[0]))
9990                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[1]))
9991                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[2]))
9992                 # make a fillet on the specified edges of the given shape
9993                 fillet = geompy.MakeFillet(prism, 10., geompy.ShapeType["EDGE"], IDlist_e)
9994             """
9995             # Example: see GEOM_TestAll.py
9996             theR,Parameters = ParseParameters(theR)
9997             anObj = None
9998             if theShapeType == self.ShapeType["EDGE"]:
9999                 anObj = self.LocalOp.MakeFilletEdges(theShape, theR, theListShapes)
10000                 RaiseIfFailed("MakeFilletEdges", self.LocalOp)
10001             else:
10002                 anObj = self.LocalOp.MakeFilletFaces(theShape, theR, theListShapes)
10003                 RaiseIfFailed("MakeFilletFaces", self.LocalOp)
10004             anObj.SetParameters(Parameters)
10005             self._autoPublish(anObj, theName, "fillet")
10006             return anObj
10007
10008         ## The same that MakeFillet() but with two Fillet Radius R1 and R2
10009         @ManageTransactions("LocalOp")
10010         def MakeFilletR1R2(self, theShape, theR1, theR2, theShapeType, theListShapes, theName=None):
10011             """
10012             The same that geompy.MakeFillet but with two Fillet Radius R1 and R2
10013
10014             Example of usage:
10015                 # get the list of IDs (IDList) for the fillet
10016                 prism_edges = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["EDGE"])
10017                 IDlist_e = []
10018                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[0]))
10019                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[1]))
10020                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[2]))
10021                 # make a fillet on the specified edges of the given shape
10022                 fillet = geompy.MakeFillet(prism, 10., 15., geompy.ShapeType["EDGE"], IDlist_e)
10023             """
10024             theR1,theR2,Parameters = ParseParameters(theR1,theR2)
10025             anObj = None
10026             if theShapeType == self.ShapeType["EDGE"]:
10027                 anObj = self.LocalOp.MakeFilletEdgesR1R2(theShape, theR1, theR2, theListShapes)
10028                 RaiseIfFailed("MakeFilletEdgesR1R2", self.LocalOp)
10029             else:
10030                 anObj = self.LocalOp.MakeFilletFacesR1R2(theShape, theR1, theR2, theListShapes)
10031                 RaiseIfFailed("MakeFilletFacesR1R2", self.LocalOp)
10032             anObj.SetParameters(Parameters)
10033             self._autoPublish(anObj, theName, "fillet")
10034             return anObj
10035
10036         ## Perform a fillet on the specified edges of the given shape
10037         #  @param theShape  Wire Shape to perform fillet on.
10038         #  @param theR  Fillet radius.
10039         #  @param theListOfVertexes Global indices of vertexes to perform fillet on.
10040         #    \note Global index of sub-shape can be obtained, using method GetSubShapeID()
10041         #    \note The list of vertices could be empty,
10042         #          in this case fillet will done done at all vertices in wire
10043         #  @param doIgnoreSecantVertices If FALSE, fillet radius is always limited
10044         #         by the length of the edges, nearest to the fillet vertex.
10045         #         But sometimes the next edge is C1 continuous with the one, nearest to
10046         #         the fillet point, and such two (or more) edges can be united to allow
10047         #         bigger radius. Set this flag to TRUE to allow collinear edges union,
10048         #         thus ignoring the secant vertex (vertices).
10049         #  @param theName Object name; when specified, this parameter is used
10050         #         for result publication in the study. Otherwise, if automatic
10051         #         publication is switched on, default value is used for result name.
10052         #
10053         #  @return New GEOM.GEOM_Object, containing the result shape.
10054         #
10055         #  @ref tui_fillet2d "Example"
10056         @ManageTransactions("LocalOp")
10057         def MakeFillet1D(self, theShape, theR, theListOfVertexes, doIgnoreSecantVertices = True, theName=None):
10058             """
10059             Perform a fillet on the specified edges of the given shape
10060
10061             Parameters:
10062                 theShape  Wire Shape to perform fillet on.
10063                 theR  Fillet radius.
10064                 theListOfVertexes Global indices of vertexes to perform fillet on.
10065                 doIgnoreSecantVertices If FALSE, fillet radius is always limited
10066                     by the length of the edges, nearest to the fillet vertex.
10067                     But sometimes the next edge is C1 continuous with the one, nearest to
10068                     the fillet point, and such two (or more) edges can be united to allow
10069                     bigger radius. Set this flag to TRUE to allow collinear edges union,
10070                     thus ignoring the secant vertex (vertices).
10071                 theName Object name; when specified, this parameter is used
10072                         for result publication in the study. Otherwise, if automatic
10073                         publication is switched on, default value is used for result name.
10074             Note:
10075                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10076
10077                 The list of vertices could be empty,in this case fillet will done done at all vertices in wire
10078
10079             Returns:
10080                 New GEOM.GEOM_Object, containing the result shape.
10081
10082             Example of usage:
10083                 # create wire
10084                 Wire_1 = geompy.MakeWire([Edge_12, Edge_7, Edge_11, Edge_6, Edge_1,Edge_4])
10085                 # make fillet at given wire vertices with giver radius
10086                 Fillet_1D_1 = geompy.MakeFillet1D(Wire_1, 55, [3, 4, 6, 8, 10])
10087             """
10088             # Example: see GEOM_TestAll.py
10089             theR,doIgnoreSecantVertices,Parameters = ParseParameters(theR,doIgnoreSecantVertices)
10090             anObj = self.LocalOp.MakeFillet1D(theShape, theR, theListOfVertexes, doIgnoreSecantVertices)
10091             RaiseIfFailed("MakeFillet1D", self.LocalOp)
10092             anObj.SetParameters(Parameters)
10093             self._autoPublish(anObj, theName, "fillet")
10094             return anObj
10095
10096         ## Perform a fillet at the specified vertices of the given face/shell.
10097         #  @param theShape Face or Shell shape to perform fillet on.
10098         #  @param theR Fillet radius.
10099         #  @param theListOfVertexes Global indices of vertexes to perform fillet on.
10100         #  @param theName Object name; when specified, this parameter is used
10101         #         for result publication in the study. Otherwise, if automatic
10102         #         publication is switched on, default value is used for result name.
10103         #
10104         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10105         #
10106         #  @return New GEOM.GEOM_Object, containing the result shape.
10107         #
10108         #  @ref tui_fillet2d "Example"
10109         @ManageTransactions("LocalOp")
10110         def MakeFillet2D(self, theShape, theR, theListOfVertexes, theName=None):
10111             """
10112             Perform a fillet at the specified vertices of the given face/shell.
10113
10114             Parameters:
10115                 theShape  Face or Shell shape to perform fillet on.
10116                 theR  Fillet radius.
10117                 theListOfVertexes Global indices of vertexes to perform fillet on.
10118                 theName Object name; when specified, this parameter is used
10119                         for result publication in the study. Otherwise, if automatic
10120                         publication is switched on, default value is used for result name.
10121             Note:
10122                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10123
10124             Returns:
10125                 New GEOM.GEOM_Object, containing the result shape.
10126
10127             Example of usage:
10128                 face = geompy.MakeFaceHW(100, 100, 1)
10129                 fillet2d = geompy.MakeFillet2D(face, 30, [7, 9])
10130             """
10131             # Example: see GEOM_TestAll.py
10132             theR,Parameters = ParseParameters(theR)
10133             anObj = self.LocalOp.MakeFillet2D(theShape, theR, theListOfVertexes)
10134             RaiseIfFailed("MakeFillet2D", self.LocalOp)
10135             anObj.SetParameters(Parameters)
10136             self._autoPublish(anObj, theName, "fillet")
10137             return anObj
10138
10139         ## Perform a symmetric chamfer on all edges of the given shape.
10140         #  @param theShape Shape, to perform chamfer on.
10141         #  @param theD Chamfer size along each face.
10142         #  @param theName Object name; when specified, this parameter is used
10143         #         for result publication in the study. Otherwise, if automatic
10144         #         publication is switched on, default value is used for result name.
10145         #
10146         #  @return New GEOM.GEOM_Object, containing the result shape.
10147         #
10148         #  @ref tui_chamfer "Example 1"
10149         #  \n @ref swig_MakeChamferAll "Example 2"
10150         @ManageTransactions("LocalOp")
10151         def MakeChamferAll(self, theShape, theD, theName=None):
10152             """
10153             Perform a symmetric chamfer on all edges of the given shape.
10154
10155             Parameters:
10156                 theShape Shape, to perform chamfer on.
10157                 theD Chamfer size along each face.
10158                 theName Object name; when specified, this parameter is used
10159                         for result publication in the study. Otherwise, if automatic
10160                         publication is switched on, default value is used for result name.
10161
10162             Returns:
10163                 New GEOM.GEOM_Object, containing the result shape.
10164
10165             Example of usage:
10166                 chamfer_all = geompy.MakeChamferAll(prism, 10.)
10167             """
10168             # Example: see GEOM_TestOthers.py
10169             theD,Parameters = ParseParameters(theD)
10170             anObj = self.LocalOp.MakeChamferAll(theShape, theD)
10171             RaiseIfFailed("MakeChamferAll", self.LocalOp)
10172             anObj.SetParameters(Parameters)
10173             self._autoPublish(anObj, theName, "chamfer")
10174             return anObj
10175
10176         ## Perform a chamfer on edges, common to the specified faces,
10177         #  with distance D1 on the Face1
10178         #  @param theShape Shape, to perform chamfer on.
10179         #  @param theD1 Chamfer size along \a theFace1.
10180         #  @param theD2 Chamfer size along \a theFace2.
10181         #  @param theFace1,theFace2 Global indices of two faces of \a theShape.
10182         #  @param theName Object name; when specified, this parameter is used
10183         #         for result publication in the study. Otherwise, if automatic
10184         #         publication is switched on, default value is used for result name.
10185         #
10186         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10187         #
10188         #  @return New GEOM.GEOM_Object, containing the result shape.
10189         #
10190         #  @ref tui_chamfer "Example"
10191         @ManageTransactions("LocalOp")
10192         def MakeChamferEdge(self, theShape, theD1, theD2, theFace1, theFace2, theName=None):
10193             """
10194             Perform a chamfer on edges, common to the specified faces,
10195             with distance D1 on the Face1
10196
10197             Parameters:
10198                 theShape Shape, to perform chamfer on.
10199                 theD1 Chamfer size along theFace1.
10200                 theD2 Chamfer size along theFace2.
10201                 theFace1,theFace2 Global indices of two faces of theShape.
10202                 theName Object name; when specified, this parameter is used
10203                         for result publication in the study. Otherwise, if automatic
10204                         publication is switched on, default value is used for result name.
10205
10206             Note:
10207                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10208
10209             Returns:
10210                 New GEOM.GEOM_Object, containing the result shape.
10211
10212             Example of usage:
10213                 prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"])
10214                 f_ind_1 = geompy.GetSubShapeID(prism, prism_faces[0])
10215                 f_ind_2 = geompy.GetSubShapeID(prism, prism_faces[1])
10216                 chamfer_e = geompy.MakeChamferEdge(prism, 10., 10., f_ind_1, f_ind_2)
10217             """
10218             # Example: see GEOM_TestAll.py
10219             theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10220             anObj = self.LocalOp.MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2)
10221             RaiseIfFailed("MakeChamferEdge", self.LocalOp)
10222             anObj.SetParameters(Parameters)
10223             self._autoPublish(anObj, theName, "chamfer")
10224             return anObj
10225
10226         ## Perform a chamfer on edges
10227         #  @param theShape Shape, to perform chamfer on.
10228         #  @param theD Chamfer length
10229         #  @param theAngle Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10230         #  @param theFace1,theFace2 Global indices of two faces of \a theShape.
10231         #  @param theName Object name; when specified, this parameter is used
10232         #         for result publication in the study. Otherwise, if automatic
10233         #         publication is switched on, default value is used for result name.
10234         #
10235         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10236         #
10237         #  @return New GEOM.GEOM_Object, containing the result shape.
10238         @ManageTransactions("LocalOp")
10239         def MakeChamferEdgeAD(self, theShape, theD, theAngle, theFace1, theFace2, theName=None):
10240             """
10241             Perform a chamfer on edges
10242
10243             Parameters:
10244                 theShape Shape, to perform chamfer on.
10245                 theD1 Chamfer size along theFace1.
10246                 theAngle Angle of chamfer (angle in radians or a name of variable which defines angle in degrees).
10247                 theFace1,theFace2 Global indices of two faces of theShape.
10248                 theName Object name; when specified, this parameter is used
10249                         for result publication in the study. Otherwise, if automatic
10250                         publication is switched on, default value is used for result name.
10251
10252             Note:
10253                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10254
10255             Returns:
10256                 New GEOM.GEOM_Object, containing the result shape.
10257
10258             Example of usage:
10259                 prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"])
10260                 f_ind_1 = geompy.GetSubShapeID(prism, prism_faces[0])
10261                 f_ind_2 = geompy.GetSubShapeID(prism, prism_faces[1])
10262                 ang = 30
10263                 chamfer_e = geompy.MakeChamferEdge(prism, 10., ang, f_ind_1, f_ind_2)
10264             """
10265             flag = False
10266             if isinstance(theAngle,str):
10267                 flag = True
10268             theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10269             if flag:
10270                 theAngle = theAngle*math.pi/180.0
10271             anObj = self.LocalOp.MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2)
10272             RaiseIfFailed("MakeChamferEdgeAD", self.LocalOp)
10273             anObj.SetParameters(Parameters)
10274             self._autoPublish(anObj, theName, "chamfer")
10275             return anObj
10276
10277         ## Perform a chamfer on all edges of the specified faces,
10278         #  with distance D1 on the first specified face (if several for one edge)
10279         #  @param theShape Shape, to perform chamfer on.
10280         #  @param theD1 Chamfer size along face from \a theFaces. If both faces,
10281         #               connected to the edge, are in \a theFaces, \a theD1
10282         #               will be get along face, which is nearer to \a theFaces beginning.
10283         #  @param theD2 Chamfer size along another of two faces, connected to the edge.
10284         #  @param theFaces Sequence of global indices of faces of \a theShape.
10285         #  @param theName Object name; when specified, this parameter is used
10286         #         for result publication in the study. Otherwise, if automatic
10287         #         publication is switched on, default value is used for result name.
10288         #
10289         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10290         #
10291         #  @return New GEOM.GEOM_Object, containing the result shape.
10292         #
10293         #  @ref tui_chamfer "Example"
10294         @ManageTransactions("LocalOp")
10295         def MakeChamferFaces(self, theShape, theD1, theD2, theFaces, theName=None):
10296             """
10297             Perform a chamfer on all edges of the specified faces,
10298             with distance D1 on the first specified face (if several for one edge)
10299
10300             Parameters:
10301                 theShape Shape, to perform chamfer on.
10302                 theD1 Chamfer size along face from  theFaces. If both faces,
10303                       connected to the edge, are in theFaces, theD1
10304                       will be get along face, which is nearer to theFaces beginning.
10305                 theD2 Chamfer size along another of two faces, connected to the edge.
10306                 theFaces Sequence of global indices of faces of theShape.
10307                 theName Object name; when specified, this parameter is used
10308                         for result publication in the study. Otherwise, if automatic
10309                         publication is switched on, default value is used for result name.
10310
10311             Note: Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
10312
10313             Returns:
10314                 New GEOM.GEOM_Object, containing the result shape.
10315             """
10316             # Example: see GEOM_TestAll.py
10317             theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10318             anObj = self.LocalOp.MakeChamferFaces(theShape, theD1, theD2, theFaces)
10319             RaiseIfFailed("MakeChamferFaces", self.LocalOp)
10320             anObj.SetParameters(Parameters)
10321             self._autoPublish(anObj, theName, "chamfer")
10322             return anObj
10323
10324         ## The Same that MakeChamferFaces() but with params theD is chamfer length and
10325         #  theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10326         #
10327         #  @ref swig_FilletChamfer "Example"
10328         @ManageTransactions("LocalOp")
10329         def MakeChamferFacesAD(self, theShape, theD, theAngle, theFaces, theName=None):
10330             """
10331             The Same that geompy.MakeChamferFaces but with params theD is chamfer length and
10332             theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10333             """
10334             flag = False
10335             if isinstance(theAngle,str):
10336                 flag = True
10337             theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10338             if flag:
10339                 theAngle = theAngle*math.pi/180.0
10340             anObj = self.LocalOp.MakeChamferFacesAD(theShape, theD, theAngle, theFaces)
10341             RaiseIfFailed("MakeChamferFacesAD", self.LocalOp)
10342             anObj.SetParameters(Parameters)
10343             self._autoPublish(anObj, theName, "chamfer")
10344             return anObj
10345
10346         ## Perform a chamfer on edges,
10347         #  with distance D1 on the first specified face (if several for one edge)
10348         #  @param theShape Shape, to perform chamfer on.
10349         #  @param theD1,theD2 Chamfer size
10350         #  @param theEdges Sequence of edges of \a theShape.
10351         #  @param theName Object name; when specified, this parameter is used
10352         #         for result publication in the study. Otherwise, if automatic
10353         #         publication is switched on, default value is used for result name.
10354         #
10355         #  @return New GEOM.GEOM_Object, containing the result shape.
10356         #
10357         #  @ref swig_FilletChamfer "Example"
10358         @ManageTransactions("LocalOp")
10359         def MakeChamferEdges(self, theShape, theD1, theD2, theEdges, theName=None):
10360             """
10361             Perform a chamfer on edges,
10362             with distance D1 on the first specified face (if several for one edge)
10363
10364             Parameters:
10365                 theShape Shape, to perform chamfer on.
10366                 theD1,theD2 Chamfer size
10367                 theEdges Sequence of edges of theShape.
10368                 theName Object name; when specified, this parameter is used
10369                         for result publication in the study. Otherwise, if automatic
10370                         publication is switched on, default value is used for result name.
10371
10372             Returns:
10373                 New GEOM.GEOM_Object, containing the result shape.
10374             """
10375             theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10376             anObj = self.LocalOp.MakeChamferEdges(theShape, theD1, theD2, theEdges)
10377             RaiseIfFailed("MakeChamferEdges", self.LocalOp)
10378             anObj.SetParameters(Parameters)
10379             self._autoPublish(anObj, theName, "chamfer")
10380             return anObj
10381
10382         ## The Same that MakeChamferEdges() but with params theD is chamfer length and
10383         #  theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10384         @ManageTransactions("LocalOp")
10385         def MakeChamferEdgesAD(self, theShape, theD, theAngle, theEdges, theName=None):
10386             """
10387             The Same that geompy.MakeChamferEdges but with params theD is chamfer length and
10388             theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10389             """
10390             flag = False
10391             if isinstance(theAngle,str):
10392                 flag = True
10393             theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10394             if flag:
10395                 theAngle = theAngle*math.pi/180.0
10396             anObj = self.LocalOp.MakeChamferEdgesAD(theShape, theD, theAngle, theEdges)
10397             RaiseIfFailed("MakeChamferEdgesAD", self.LocalOp)
10398             anObj.SetParameters(Parameters)
10399             self._autoPublish(anObj, theName, "chamfer")
10400             return anObj
10401
10402         ## @sa MakeChamferEdge(), MakeChamferFaces()
10403         #
10404         #  @ref swig_MakeChamfer "Example"
10405         def MakeChamfer(self, aShape, d1, d2, aShapeType, ListShape, theName=None):
10406             """
10407             See geompy.MakeChamferEdge() and geompy.MakeChamferFaces() functions for more information.
10408             """
10409             # Example: see GEOM_TestOthers.py
10410             anObj = None
10411             # note: auto-publishing is done in self.MakeChamferEdge() or self.MakeChamferFaces()
10412             if aShapeType == self.ShapeType["EDGE"]:
10413                 anObj = self.MakeChamferEdge(aShape,d1,d2,ListShape[0],ListShape[1],theName)
10414             else:
10415                 anObj = self.MakeChamferFaces(aShape,d1,d2,ListShape,theName)
10416             return anObj
10417
10418         ## Remove material from a solid by extrusion of the base shape on the given distance.
10419         #  @param theInit Shape to remove material from. It must be a solid or
10420         #  a compound made of a single solid.
10421         #  @param theBase Closed edge or wire defining the base shape to be extruded.
10422         #  @param theH Prism dimension along the normal to theBase
10423         #  @param theAngle Draft angle in degrees.
10424         #  @param theInvert If true material changes the direction
10425         #  @param theName Object name; when specified, this parameter is used
10426         #         for result publication in the study. Otherwise, if automatic
10427         #         publication is switched on, default value is used for result name.
10428         #
10429         #  @return New GEOM.GEOM_Object, containing the initial shape with removed material
10430         #
10431         #  @ref tui_creation_prism "Example"
10432         @ManageTransactions("PrimOp")
10433         def MakeExtrudedCut(self, theInit, theBase, theH, theAngle, theInvert=False, theName=None):
10434             """
10435             Add material to a solid by extrusion of the base shape on the given distance.
10436
10437             Parameters:
10438                 theInit Shape to remove material from. It must be a solid or a compound made of a single solid.
10439                 theBase Closed edge or wire defining the base shape to be extruded.
10440                 theH Prism dimension along the normal  to theBase
10441                 theAngle Draft angle in degrees.
10442                 theInvert If true material changes the direction.
10443                 theName Object name; when specified, this parameter is used
10444                         for result publication in the study. Otherwise, if automatic
10445                         publication is switched on, default value is used for result name.
10446
10447             Returns:
10448                 New GEOM.GEOM_Object,  containing the initial shape with removed material.
10449             """
10450             # Example: see GEOM_TestAll.py
10451             theH,theAngle,Parameters = ParseParameters(theH,theAngle)
10452             anObj = self.PrimOp.MakeDraftPrism(theInit, theBase, theH, theAngle, False, theInvert)
10453             RaiseIfFailed("MakeExtrudedBoss", self.PrimOp)
10454             anObj.SetParameters(Parameters)
10455             self._autoPublish(anObj, theName, "extrudedCut")
10456             return anObj
10457
10458         ## Add material to a solid by extrusion of the base shape on the given distance.
10459         #  @param theInit Shape to add material to. It must be a solid or
10460         #  a compound made of a single solid.
10461         #  @param theBase Closed edge or wire defining the base shape to be extruded.
10462         #  @param theH Prism dimension along the normal to theBase
10463         #  @param theAngle Draft angle in degrees.
10464         #  @param theInvert If true material changes the direction
10465         #  @param theName Object name; when specified, this parameter is used
10466         #         for result publication in the study. Otherwise, if automatic
10467         #         publication is switched on, default value is used for result name.
10468         #
10469         #  @return New GEOM.GEOM_Object, containing the initial shape with added material
10470         #
10471         #  @ref tui_creation_prism "Example"
10472         @ManageTransactions("PrimOp")
10473         def MakeExtrudedBoss(self, theInit, theBase, theH, theAngle, theInvert=False, theName=None):
10474             """
10475             Add material to a solid by extrusion of the base shape on the given distance.
10476
10477             Parameters:
10478                 theInit Shape to add material to. It must be a solid or a compound made of a single solid.
10479                 theBase Closed edge or wire defining the base shape to be extruded.
10480                 theH Prism dimension along the normal  to theBase
10481                 theAngle Draft angle in degrees.
10482                 theInvert If true material changes the direction.
10483                 theName Object name; when specified, this parameter is used
10484                         for result publication in the study. Otherwise, if automatic
10485                         publication is switched on, default value is used for result name.
10486
10487             Returns:
10488                 New GEOM.GEOM_Object,  containing the initial shape with added material.
10489             """
10490             # Example: see GEOM_TestAll.py
10491             theH,theAngle,Parameters = ParseParameters(theH,theAngle)
10492             anObj = self.PrimOp.MakeDraftPrism(theInit, theBase, theH, theAngle, True, theInvert)
10493             RaiseIfFailed("MakeExtrudedBoss", self.PrimOp)
10494             anObj.SetParameters(Parameters)
10495             self._autoPublish(anObj, theName, "extrudedBoss")
10496             return anObj
10497
10498         # end of l3_local
10499         ## @}
10500
10501         ## @addtogroup l3_basic_op
10502         ## @{
10503
10504         ## Perform an Archimde operation on the given shape with given parameters.
10505         #  The object presenting the resulting face is returned.
10506         #  @param theShape Shape to be put in water.
10507         #  @param theWeight Weight of the shape.
10508         #  @param theWaterDensity Density of the water.
10509         #  @param theMeshDeflection Deflection of the mesh, using to compute the section.
10510         #  @param theName Object name; when specified, this parameter is used
10511         #         for result publication in the study. Otherwise, if automatic
10512         #         publication is switched on, default value is used for result name.
10513         #
10514         #  @return New GEOM.GEOM_Object, containing a section of \a theShape
10515         #          by a plane, corresponding to water level.
10516         #
10517         #  @ref tui_archimede "Example"
10518         @ManageTransactions("LocalOp")
10519         def Archimede(self, theShape, theWeight, theWaterDensity, theMeshDeflection, theName=None):
10520             """
10521             Perform an Archimde operation on the given shape with given parameters.
10522             The object presenting the resulting face is returned.
10523
10524             Parameters:
10525                 theShape Shape to be put in water.
10526                 theWeight Weight of the shape.
10527                 theWaterDensity Density of the water.
10528                 theMeshDeflection Deflection of the mesh, using to compute the section.
10529                 theName Object name; when specified, this parameter is used
10530                         for result publication in the study. Otherwise, if automatic
10531                         publication is switched on, default value is used for result name.
10532
10533             Returns:
10534                 New GEOM.GEOM_Object, containing a section of theShape
10535                 by a plane, corresponding to water level.
10536             """
10537             # Example: see GEOM_TestAll.py
10538             theWeight,theWaterDensity,theMeshDeflection,Parameters = ParseParameters(
10539               theWeight,theWaterDensity,theMeshDeflection)
10540             anObj = self.LocalOp.MakeArchimede(theShape, theWeight, theWaterDensity, theMeshDeflection)
10541             RaiseIfFailed("MakeArchimede", self.LocalOp)
10542             anObj.SetParameters(Parameters)
10543             self._autoPublish(anObj, theName, "archimede")
10544             return anObj
10545
10546         # end of l3_basic_op
10547         ## @}
10548
10549         ## @addtogroup l2_measure
10550         ## @{
10551
10552         ## Get point coordinates
10553         #  @return [x, y, z]
10554         #
10555         #  @ref tui_point_coordinates_page "Example"
10556         @ManageTransactions("MeasuOp")
10557         def PointCoordinates(self,Point):
10558             """
10559             Get point coordinates
10560
10561             Returns:
10562                 [x, y, z]
10563             """
10564             # Example: see GEOM_TestMeasures.py
10565             aTuple = self.MeasuOp.PointCoordinates(Point)
10566             RaiseIfFailed("PointCoordinates", self.MeasuOp)
10567             return aTuple
10568
10569         ## Get vector coordinates
10570         #  @return [x, y, z]
10571         #
10572         #  @ref tui_measurement_tools_page "Example"
10573         def VectorCoordinates(self,Vector):
10574             """
10575             Get vector coordinates
10576
10577             Returns:
10578                 [x, y, z]
10579             """
10580
10581             p1=self.GetFirstVertex(Vector)
10582             p2=self.GetLastVertex(Vector)
10583
10584             X1=self.PointCoordinates(p1)
10585             X2=self.PointCoordinates(p2)
10586
10587             return (X2[0]-X1[0],X2[1]-X1[1],X2[2]-X1[2])
10588
10589
10590         ## Compute cross product
10591         #  @return vector w=u^v
10592         #
10593         #  @ref tui_measurement_tools_page "Example"
10594         def CrossProduct(self, Vector1, Vector2):
10595             """
10596             Compute cross product
10597
10598             Returns: vector w=u^v
10599             """
10600             u=self.VectorCoordinates(Vector1)
10601             v=self.VectorCoordinates(Vector2)
10602             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])
10603
10604             return w
10605
10606         ## Compute cross product
10607         #  @return dot product  p=u.v
10608         #
10609         #  @ref tui_measurement_tools_page "Example"
10610         def DotProduct(self, Vector1, Vector2):
10611             """
10612             Compute cross product
10613
10614             Returns: dot product  p=u.v
10615             """
10616             u=self.VectorCoordinates(Vector1)
10617             v=self.VectorCoordinates(Vector2)
10618             p=u[0]*v[0]+u[1]*v[1]+u[2]*v[2]
10619
10620             return p
10621
10622
10623         ## Get summarized length of all wires,
10624         #  area of surface and volume of the given shape.
10625         #  @param theShape Shape to define properties of.
10626         #  @param theTolerance maximal relative error of area
10627         #         and volume computation.
10628         #  @return [theLength, theSurfArea, theVolume]\n
10629         #  theLength:   Summarized length of all wires of the given shape.\n
10630         #  theSurfArea: Area of surface of the given shape.\n
10631         #  theVolume:   Volume of the given shape.
10632         #
10633         #  @ref tui_basic_properties_page "Example"
10634         @ManageTransactions("MeasuOp")
10635         def BasicProperties(self,theShape, theTolerance=1.e-6):
10636             """
10637             Get summarized length of all wires,
10638             area of surface and volume of the given shape.
10639
10640             Parameters:
10641                 theShape Shape to define properties of.
10642                 theTolerance maximal relative error of area
10643                              and volume computation.
10644
10645             Returns:
10646                 [theLength, theSurfArea, theVolume]
10647                  theLength:   Summarized length of all wires of the given shape.
10648                  theSurfArea: Area of surface of the given shape.
10649                  theVolume:   Volume of the given shape.
10650             """
10651             # Example: see GEOM_TestMeasures.py
10652             aTuple = self.MeasuOp.GetBasicProperties(theShape, theTolerance)
10653             RaiseIfFailed("GetBasicProperties", self.MeasuOp)
10654             return aTuple
10655
10656         ## Get parameters of bounding box of the given shape
10657         #  @param theShape Shape to obtain bounding box of.
10658         #  @param precise TRUE for precise computation; FALSE for fast one.
10659         #  @return [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
10660         #  Xmin,Xmax: Limits of shape along OX axis.
10661         #  Ymin,Ymax: Limits of shape along OY axis.
10662         #  Zmin,Zmax: Limits of shape along OZ axis.
10663         #
10664         #  @ref tui_bounding_box_page "Example"
10665         @ManageTransactions("MeasuOp")
10666         def BoundingBox (self, theShape, precise=False):
10667             """
10668             Get parameters of bounding box of the given shape
10669
10670             Parameters:
10671                 theShape Shape to obtain bounding box of.
10672                 precise TRUE for precise computation; FALSE for fast one.
10673
10674             Returns:
10675                 [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
10676                  Xmin,Xmax: Limits of shape along OX axis.
10677                  Ymin,Ymax: Limits of shape along OY axis.
10678                  Zmin,Zmax: Limits of shape along OZ axis.
10679             """
10680             # Example: see GEOM_TestMeasures.py
10681             aTuple = self.MeasuOp.GetBoundingBox(theShape, precise)
10682             RaiseIfFailed("GetBoundingBox", self.MeasuOp)
10683             return aTuple
10684
10685         ## Get bounding box of the given shape
10686         #  @param theShape Shape to obtain bounding box of.
10687         #  @param precise TRUE for precise computation; FALSE for fast one.
10688         #  @param theName Object name; when specified, this parameter is used
10689         #         for result publication in the study. Otherwise, if automatic
10690         #         publication is switched on, default value is used for result name.
10691         #
10692         #  @return New GEOM.GEOM_Object, containing the created box.
10693         #
10694         #  @ref tui_bounding_box_page "Example"
10695         @ManageTransactions("MeasuOp")
10696         def MakeBoundingBox (self, theShape, precise=False, theName=None):
10697             """
10698             Get bounding box of the given shape
10699
10700             Parameters:
10701                 theShape Shape to obtain bounding box of.
10702                 precise TRUE for precise computation; FALSE for fast one.
10703                 theName Object name; when specified, this parameter is used
10704                         for result publication in the study. Otherwise, if automatic
10705                         publication is switched on, default value is used for result name.
10706
10707             Returns:
10708                 New GEOM.GEOM_Object, containing the created box.
10709             """
10710             # Example: see GEOM_TestMeasures.py
10711             anObj = self.MeasuOp.MakeBoundingBox(theShape, precise)
10712             RaiseIfFailed("MakeBoundingBox", self.MeasuOp)
10713             self._autoPublish(anObj, theName, "bndbox")
10714             return anObj
10715
10716         ## Get inertia matrix and moments of inertia of theShape.
10717         #  @param theShape Shape to calculate inertia of.
10718         #  @return [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
10719         #  I(1-3)(1-3): Components of the inertia matrix of the given shape.
10720         #  Ix,Iy,Iz:    Moments of inertia of the given shape.
10721         #
10722         #  @ref tui_inertia_page "Example"
10723         @ManageTransactions("MeasuOp")
10724         def Inertia(self,theShape):
10725             """
10726             Get inertia matrix and moments of inertia of theShape.
10727
10728             Parameters:
10729                 theShape Shape to calculate inertia of.
10730
10731             Returns:
10732                 [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
10733                  I(1-3)(1-3): Components of the inertia matrix of the given shape.
10734                  Ix,Iy,Iz:    Moments of inertia of the given shape.
10735             """
10736             # Example: see GEOM_TestMeasures.py
10737             aTuple = self.MeasuOp.GetInertia(theShape)
10738             RaiseIfFailed("GetInertia", self.MeasuOp)
10739             return aTuple
10740
10741         ## Get if coords are included in the shape (ST_IN or ST_ON)
10742         #  @param theShape Shape
10743         #  @param coords list of points coordinates [x1, y1, z1, x2, y2, z2, ...]
10744         #  @param tolerance to be used (default is 1.0e-7)
10745         #  @return list_of_boolean = [res1, res2, ...]
10746         @ManageTransactions("MeasuOp")
10747         def AreCoordsInside(self, theShape, coords, tolerance=1.e-7):
10748             """
10749             Get if coords are included in the shape (ST_IN or ST_ON)
10750
10751             Parameters:
10752                 theShape Shape
10753                 coords list of points coordinates [x1, y1, z1, x2, y2, z2, ...]
10754                 tolerance to be used (default is 1.0e-7)
10755
10756             Returns:
10757                 list_of_boolean = [res1, res2, ...]
10758             """
10759             return self.MeasuOp.AreCoordsInside(theShape, coords, tolerance)
10760
10761         ## Get minimal distance between the given shapes.
10762         #  @param theShape1,theShape2 Shapes to find minimal distance between.
10763         #  @return Value of the minimal distance between the given shapes.
10764         #
10765         #  @ref tui_min_distance_page "Example"
10766         @ManageTransactions("MeasuOp")
10767         def MinDistance(self, theShape1, theShape2):
10768             """
10769             Get minimal distance between the given shapes.
10770
10771             Parameters:
10772                 theShape1,theShape2 Shapes to find minimal distance between.
10773
10774             Returns:
10775                 Value of the minimal distance between the given shapes.
10776             """
10777             # Example: see GEOM_TestMeasures.py
10778             aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
10779             RaiseIfFailed("GetMinDistance", self.MeasuOp)
10780             return aTuple[0]
10781
10782         ## Get minimal distance between the given shapes.
10783         #  @param theShape1,theShape2 Shapes to find minimal distance between.
10784         #  @return Value of the minimal distance between the given shapes, in form of list
10785         #          [Distance, DX, DY, DZ].
10786         #
10787         #  @ref tui_min_distance_page "Example"
10788         @ManageTransactions("MeasuOp")
10789         def MinDistanceComponents(self, theShape1, theShape2):
10790             """
10791             Get minimal distance between the given shapes.
10792
10793             Parameters:
10794                 theShape1,theShape2 Shapes to find minimal distance between.
10795
10796             Returns:
10797                 Value of the minimal distance between the given shapes, in form of list
10798                 [Distance, DX, DY, DZ]
10799             """
10800             # Example: see GEOM_TestMeasures.py
10801             aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
10802             RaiseIfFailed("GetMinDistance", self.MeasuOp)
10803             aRes = [aTuple[0], aTuple[4] - aTuple[1], aTuple[5] - aTuple[2], aTuple[6] - aTuple[3]]
10804             return aRes
10805
10806         ## Get closest points of the given shapes.
10807         #  @param theShape1,theShape2 Shapes to find closest points of.
10808         #  @return The number of found solutions (-1 in case of infinite number of
10809         #          solutions) and a list of (X, Y, Z) coordinates for all couples of points.
10810         #
10811         #  @ref tui_min_distance_page "Example"
10812         @ManageTransactions("MeasuOp")
10813         def ClosestPoints (self, theShape1, theShape2):
10814             """
10815             Get closest points of the given shapes.
10816
10817             Parameters:
10818                 theShape1,theShape2 Shapes to find closest points of.
10819
10820             Returns:
10821                 The number of found solutions (-1 in case of infinite number of
10822                 solutions) and a list of (X, Y, Z) coordinates for all couples of points.
10823             """
10824             # Example: see GEOM_TestMeasures.py
10825             aTuple = self.MeasuOp.ClosestPoints(theShape1, theShape2)
10826             RaiseIfFailed("ClosestPoints", self.MeasuOp)
10827             return aTuple
10828
10829         ## Get angle between the given shapes in degrees.
10830         #  @param theShape1,theShape2 Lines or linear edges to find angle between.
10831         #  @note If both arguments are vectors, the angle is computed in accordance
10832         #        with their orientations, otherwise the minimum angle is computed.
10833         #  @return Value of the angle between the given shapes in degrees.
10834         #
10835         #  @ref tui_angle_page "Example"
10836         @ManageTransactions("MeasuOp")
10837         def GetAngle(self, theShape1, theShape2):
10838             """
10839             Get angle between the given shapes in degrees.
10840
10841             Parameters:
10842                 theShape1,theShape2 Lines or linear edges to find angle between.
10843
10844             Note:
10845                 If both arguments are vectors, the angle is computed in accordance
10846                 with their orientations, otherwise the minimum angle is computed.
10847
10848             Returns:
10849                 Value of the angle between the given shapes in degrees.
10850             """
10851             # Example: see GEOM_TestMeasures.py
10852             anAngle = self.MeasuOp.GetAngle(theShape1, theShape2)
10853             RaiseIfFailed("GetAngle", self.MeasuOp)
10854             return anAngle
10855
10856         ## Get angle between the given shapes in radians.
10857         #  @param theShape1,theShape2 Lines or linear edges to find angle between.
10858         #  @note If both arguments are vectors, the angle is computed in accordance
10859         #        with their orientations, otherwise the minimum angle is computed.
10860         #  @return Value of the angle between the given shapes in radians.
10861         #
10862         #  @ref tui_angle_page "Example"
10863         @ManageTransactions("MeasuOp")
10864         def GetAngleRadians(self, theShape1, theShape2):
10865             """
10866             Get angle between the given shapes in radians.
10867
10868             Parameters:
10869                 theShape1,theShape2 Lines or linear edges to find angle between.
10870
10871
10872             Note:
10873                 If both arguments are vectors, the angle is computed in accordance
10874                 with their orientations, otherwise the minimum angle is computed.
10875
10876             Returns:
10877                 Value of the angle between the given shapes in radians.
10878             """
10879             # Example: see GEOM_TestMeasures.py
10880             anAngle = self.MeasuOp.GetAngle(theShape1, theShape2)*math.pi/180.
10881             RaiseIfFailed("GetAngle", self.MeasuOp)
10882             return anAngle
10883
10884         ## Get angle between the given vectors in degrees.
10885         #  @param theShape1,theShape2 Vectors to find angle between.
10886         #  @param theFlag If True, the normal vector is defined by the two vectors cross,
10887         #                 if False, the opposite vector to the normal vector is used.
10888         #  @return Value of the angle between the given vectors in degrees.
10889         #
10890         #  @ref tui_angle_page "Example"
10891         @ManageTransactions("MeasuOp")
10892         def GetAngleVectors(self, theShape1, theShape2, theFlag = True):
10893             """
10894             Get angle between the given vectors in degrees.
10895
10896             Parameters:
10897                 theShape1,theShape2 Vectors to find angle between.
10898                 theFlag If True, the normal vector is defined by the two vectors cross,
10899                         if False, the opposite vector to the normal vector is used.
10900
10901             Returns:
10902                 Value of the angle between the given vectors in degrees.
10903             """
10904             anAngle = self.MeasuOp.GetAngleBtwVectors(theShape1, theShape2)
10905             if not theFlag:
10906                 anAngle = 360. - anAngle
10907             RaiseIfFailed("GetAngleVectors", self.MeasuOp)
10908             return anAngle
10909
10910         ## The same as GetAngleVectors, but the result is in radians.
10911         def GetAngleRadiansVectors(self, theShape1, theShape2, theFlag = True):
10912             """
10913             Get angle between the given vectors in radians.
10914
10915             Parameters:
10916                 theShape1,theShape2 Vectors to find angle between.
10917                 theFlag If True, the normal vector is defined by the two vectors cross,
10918                         if False, the opposite vector to the normal vector is used.
10919
10920             Returns:
10921                 Value of the angle between the given vectors in radians.
10922             """
10923             anAngle = self.GetAngleVectors(theShape1, theShape2, theFlag)*math.pi/180.
10924             return anAngle
10925
10926         ## @name Curve Curvature Measurement
10927         #  Methods for receiving radius of curvature of curves
10928         #  in the given point
10929         ## @{
10930
10931         ## Measure curvature of a curve at a point, set by parameter.
10932         #  @param theCurve a curve.
10933         #  @param theParam parameter.
10934         #  @return radius of curvature of \a theCurve.
10935         #
10936         #  @ref swig_todo "Example"
10937         @ManageTransactions("MeasuOp")
10938         def CurveCurvatureByParam(self, theCurve, theParam):
10939             """
10940             Measure curvature of a curve at a point, set by parameter.
10941
10942             Parameters:
10943                 theCurve a curve.
10944                 theParam parameter.
10945
10946             Returns:
10947                 radius of curvature of theCurve.
10948             """
10949             # Example: see GEOM_TestMeasures.py
10950             aCurv = self.MeasuOp.CurveCurvatureByParam(theCurve,theParam)
10951             RaiseIfFailed("CurveCurvatureByParam", self.MeasuOp)
10952             return aCurv
10953
10954         ## Measure curvature of a curve at a point.
10955         #  @param theCurve a curve.
10956         #  @param thePoint given point.
10957         #  @return radius of curvature of \a theCurve.
10958         #
10959         #  @ref swig_todo "Example"
10960         @ManageTransactions("MeasuOp")
10961         def CurveCurvatureByPoint(self, theCurve, thePoint):
10962             """
10963             Measure curvature of a curve at a point.
10964
10965             Parameters:
10966                 theCurve a curve.
10967                 thePoint given point.
10968
10969             Returns:
10970                 radius of curvature of theCurve.
10971             """
10972             aCurv = self.MeasuOp.CurveCurvatureByPoint(theCurve,thePoint)
10973             RaiseIfFailed("CurveCurvatureByPoint", self.MeasuOp)
10974             return aCurv
10975         ## @}
10976
10977         ## @name Surface Curvature Measurement
10978         #  Methods for receiving max and min radius of curvature of surfaces
10979         #  in the given point
10980         ## @{
10981
10982         ## Measure max radius of curvature of surface.
10983         #  @param theSurf the given surface.
10984         #  @param theUParam Value of U-parameter on the referenced surface.
10985         #  @param theVParam Value of V-parameter on the referenced surface.
10986         #  @return max radius of curvature of theSurf.
10987         #
10988         ## @ref swig_todo "Example"
10989         @ManageTransactions("MeasuOp")
10990         def MaxSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
10991             """
10992             Measure max radius of curvature of surface.
10993
10994             Parameters:
10995                 theSurf the given surface.
10996                 theUParam Value of U-parameter on the referenced surface.
10997                 theVParam Value of V-parameter on the referenced surface.
10998
10999             Returns:
11000                 max radius of curvature of theSurf.
11001             """
11002             # Example: see GEOM_TestMeasures.py
11003             aSurf = self.MeasuOp.MaxSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
11004             RaiseIfFailed("MaxSurfaceCurvatureByParam", self.MeasuOp)
11005             return aSurf
11006
11007         ## Measure max radius of curvature of surface in the given point
11008         #  @param theSurf the given surface.
11009         #  @param thePoint given point.
11010         #  @return max radius of curvature of theSurf.
11011         #
11012         ## @ref swig_todo "Example"
11013         @ManageTransactions("MeasuOp")
11014         def MaxSurfaceCurvatureByPoint(self, theSurf, thePoint):
11015             """
11016             Measure max radius of curvature of surface in the given point.
11017
11018             Parameters:
11019                 theSurf the given surface.
11020                 thePoint given point.
11021
11022             Returns:
11023                 max radius of curvature of theSurf.
11024             """
11025             aSurf = self.MeasuOp.MaxSurfaceCurvatureByPoint(theSurf,thePoint)
11026             RaiseIfFailed("MaxSurfaceCurvatureByPoint", self.MeasuOp)
11027             return aSurf
11028
11029         ## Measure min radius of curvature of surface.
11030         #  @param theSurf the given surface.
11031         #  @param theUParam Value of U-parameter on the referenced surface.
11032         #  @param theVParam Value of V-parameter on the referenced surface.
11033         #  @return min radius of curvature of theSurf.
11034         #
11035         ## @ref swig_todo "Example"
11036         @ManageTransactions("MeasuOp")
11037         def MinSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
11038             """
11039             Measure min radius of curvature of surface.
11040
11041             Parameters:
11042                 theSurf the given surface.
11043                 theUParam Value of U-parameter on the referenced surface.
11044                 theVParam Value of V-parameter on the referenced surface.
11045
11046             Returns:
11047                 Min radius of curvature of theSurf.
11048             """
11049             aSurf = self.MeasuOp.MinSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
11050             RaiseIfFailed("MinSurfaceCurvatureByParam", self.MeasuOp)
11051             return aSurf
11052
11053         ## Measure min radius of curvature of surface in the given point
11054         #  @param theSurf the given surface.
11055         #  @param thePoint given point.
11056         #  @return min radius of curvature of theSurf.
11057         #
11058         ## @ref swig_todo "Example"
11059         @ManageTransactions("MeasuOp")
11060         def MinSurfaceCurvatureByPoint(self, theSurf, thePoint):
11061             """
11062             Measure min radius of curvature of surface in the given point.
11063
11064             Parameters:
11065                 theSurf the given surface.
11066                 thePoint given point.
11067
11068             Returns:
11069                 Min radius of curvature of theSurf.
11070             """
11071             aSurf = self.MeasuOp.MinSurfaceCurvatureByPoint(theSurf,thePoint)
11072             RaiseIfFailed("MinSurfaceCurvatureByPoint", self.MeasuOp)
11073             return aSurf
11074         ## @}
11075
11076         ## Get min and max tolerances of sub-shapes of theShape
11077         #  @param theShape Shape, to get tolerances of.
11078         #  @return [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]\n
11079         #  FaceMin,FaceMax: Min and max tolerances of the faces.\n
11080         #  EdgeMin,EdgeMax: Min and max tolerances of the edges.\n
11081         #  VertMin,VertMax: Min and max tolerances of the vertices.
11082         #
11083         #  @ref tui_tolerance_page "Example"
11084         @ManageTransactions("MeasuOp")
11085         def Tolerance(self,theShape):
11086             """
11087             Get min and max tolerances of sub-shapes of theShape
11088
11089             Parameters:
11090                 theShape Shape, to get tolerances of.
11091
11092             Returns:
11093                 [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]
11094                  FaceMin,FaceMax: Min and max tolerances of the faces.
11095                  EdgeMin,EdgeMax: Min and max tolerances of the edges.
11096                  VertMin,VertMax: Min and max tolerances of the vertices.
11097             """
11098             # Example: see GEOM_TestMeasures.py
11099             aTuple = self.MeasuOp.GetTolerance(theShape)
11100             RaiseIfFailed("GetTolerance", self.MeasuOp)
11101             return aTuple
11102
11103         ## Obtain description of the given shape (number of sub-shapes of each type)
11104         #  @param theShape Shape to be described.
11105         #  @return Description of the given shape.
11106         #
11107         #  @ref tui_whatis_page "Example"
11108         @ManageTransactions("MeasuOp")
11109         def WhatIs(self,theShape):
11110             """
11111             Obtain description of the given shape (number of sub-shapes of each type)
11112
11113             Parameters:
11114                 theShape Shape to be described.
11115
11116             Returns:
11117                 Description of the given shape.
11118             """
11119             # Example: see GEOM_TestMeasures.py
11120             aDescr = self.MeasuOp.WhatIs(theShape)
11121             RaiseIfFailed("WhatIs", self.MeasuOp)
11122             return aDescr
11123
11124         ## Obtain quantity of shapes of the given type in \a theShape.
11125         #  If \a theShape is of type \a theType, it is also counted.
11126         #  @param theShape Shape to be described.
11127         #  @param theType the given ShapeType().
11128         #  @return Quantity of shapes of type \a theType in \a theShape.
11129         #
11130         #  @ref tui_measurement_tools_page "Example"
11131         def NbShapes (self, theShape, theType):
11132             """
11133             Obtain quantity of shapes of the given type in theShape.
11134             If theShape is of type theType, it is also counted.
11135
11136             Parameters:
11137                 theShape Shape to be described.
11138                 theType the given geompy.ShapeType
11139
11140             Returns:
11141                 Quantity of shapes of type theType in theShape.
11142             """
11143             # Example: see GEOM_TestMeasures.py
11144             listSh = self.SubShapeAllIDs(theShape, theType)
11145             Nb = len(listSh)
11146             return Nb
11147
11148         ## Obtain quantity of shapes of each type in \a theShape.
11149         #  The \a theShape is also counted.
11150         #  @param theShape Shape to be described.
11151         #  @return Dictionary of ShapeType() with bound quantities of shapes.
11152         #
11153         #  @ref tui_measurement_tools_page "Example"
11154         def ShapeInfo (self, theShape):
11155             """
11156             Obtain quantity of shapes of each type in theShape.
11157             The theShape is also counted.
11158
11159             Parameters:
11160                 theShape Shape to be described.
11161
11162             Returns:
11163                 Dictionary of geompy.ShapeType with bound quantities of shapes.
11164             """
11165             # Example: see GEOM_TestMeasures.py
11166             aDict = {}
11167             for typeSh in self.ShapeType:
11168                 if typeSh in ( "AUTO", "SHAPE" ): continue
11169                 listSh = self.SubShapeAllIDs(theShape, self.ShapeType[typeSh])
11170                 Nb = len(listSh)
11171                 aDict[typeSh] = Nb
11172                 pass
11173             return aDict
11174
11175         def GetCreationInformation(self, theShape):
11176             res = ''
11177             infos = theShape.GetCreationInformation()
11178             for info in infos:
11179                 # operationName
11180                 opName = info.operationName
11181                 if not opName: opName = "no info available"
11182                 if res: res += "\n"
11183                 res += "Operation: " + opName
11184                 # parameters
11185                 for parVal in info.params:
11186                     res += "\n \t%s = %s" % ( parVal.name, parVal.value )
11187             return res
11188
11189         ## Get a point, situated at the centre of mass of theShape.
11190         #  @param theShape Shape to define centre of mass of.
11191         #  @param theName Object name; when specified, this parameter is used
11192         #         for result publication in the study. Otherwise, if automatic
11193         #         publication is switched on, default value is used for result name.
11194         #
11195         #  @return New GEOM.GEOM_Object, containing the created point.
11196         #
11197         #  @ref tui_center_of_mass_page "Example"
11198         @ManageTransactions("MeasuOp")
11199         def MakeCDG(self, theShape, theName=None):
11200             """
11201             Get a point, situated at the centre of mass of theShape.
11202
11203             Parameters:
11204                 theShape Shape to define centre of mass of.
11205                 theName Object name; when specified, this parameter is used
11206                         for result publication in the study. Otherwise, if automatic
11207                         publication is switched on, default value is used for result name.
11208
11209             Returns:
11210                 New GEOM.GEOM_Object, containing the created point.
11211             """
11212             # Example: see GEOM_TestMeasures.py
11213             anObj = self.MeasuOp.GetCentreOfMass(theShape)
11214             RaiseIfFailed("GetCentreOfMass", self.MeasuOp)
11215             self._autoPublish(anObj, theName, "centerOfMass")
11216             return anObj
11217
11218         ## Get a vertex sub-shape by index depended with orientation.
11219         #  @param theShape Shape to find sub-shape.
11220         #  @param theIndex Index to find vertex by this index (starting from zero)
11221         #  @param theName Object name; when specified, this parameter is used
11222         #         for result publication in the study. Otherwise, if automatic
11223         #         publication is switched on, default value is used for result name.
11224         #
11225         #  @return New GEOM.GEOM_Object, containing the created vertex.
11226         #
11227         #  @ref tui_measurement_tools_page "Example"
11228         @ManageTransactions("MeasuOp")
11229         def GetVertexByIndex(self, theShape, theIndex, theName=None):
11230             """
11231             Get a vertex sub-shape by index depended with orientation.
11232
11233             Parameters:
11234                 theShape Shape to find sub-shape.
11235                 theIndex Index to find vertex by this index (starting from zero)
11236                 theName Object name; when specified, this parameter is used
11237                         for result publication in the study. Otherwise, if automatic
11238                         publication is switched on, default value is used for result name.
11239
11240             Returns:
11241                 New GEOM.GEOM_Object, containing the created vertex.
11242             """
11243             # Example: see GEOM_TestMeasures.py
11244             anObj = self.MeasuOp.GetVertexByIndex(theShape, theIndex)
11245             RaiseIfFailed("GetVertexByIndex", self.MeasuOp)
11246             self._autoPublish(anObj, theName, "vertex")
11247             return anObj
11248
11249         ## Get the first vertex of wire/edge depended orientation.
11250         #  @param theShape Shape to find first vertex.
11251         #  @param theName Object name; when specified, this parameter is used
11252         #         for result publication in the study. Otherwise, if automatic
11253         #         publication is switched on, default value is used for result name.
11254         #
11255         #  @return New GEOM.GEOM_Object, containing the created vertex.
11256         #
11257         #  @ref tui_measurement_tools_page "Example"
11258         def GetFirstVertex(self, theShape, theName=None):
11259             """
11260             Get the first vertex of wire/edge depended orientation.
11261
11262             Parameters:
11263                 theShape Shape to find first vertex.
11264                 theName Object name; when specified, this parameter is used
11265                         for result publication in the study. Otherwise, if automatic
11266                         publication is switched on, default value is used for result name.
11267
11268             Returns:
11269                 New GEOM.GEOM_Object, containing the created vertex.
11270             """
11271             # Example: see GEOM_TestMeasures.py
11272             # note: auto-publishing is done in self.GetVertexByIndex()
11273             return self.GetVertexByIndex(theShape, 0, theName)
11274
11275         ## Get the last vertex of wire/edge depended orientation.
11276         #  @param theShape Shape to find last vertex.
11277         #  @param theName Object name; when specified, this parameter is used
11278         #         for result publication in the study. Otherwise, if automatic
11279         #         publication is switched on, default value is used for result name.
11280         #
11281         #  @return New GEOM.GEOM_Object, containing the created vertex.
11282         #
11283         #  @ref tui_measurement_tools_page "Example"
11284         def GetLastVertex(self, theShape, theName=None):
11285             """
11286             Get the last vertex of wire/edge depended orientation.
11287
11288             Parameters:
11289                 theShape Shape to find last vertex.
11290                 theName Object name; when specified, this parameter is used
11291                         for result publication in the study. Otherwise, if automatic
11292                         publication is switched on, default value is used for result name.
11293
11294             Returns:
11295                 New GEOM.GEOM_Object, containing the created vertex.
11296             """
11297             # Example: see GEOM_TestMeasures.py
11298             nb_vert =  self.NumberOfSubShapes(theShape, self.ShapeType["VERTEX"])
11299             # note: auto-publishing is done in self.GetVertexByIndex()
11300             return self.GetVertexByIndex(theShape, (nb_vert-1), theName)
11301
11302         ## Get a normale to the given face. If the point is not given,
11303         #  the normale is calculated at the center of mass.
11304         #  @param theFace Face to define normale of.
11305         #  @param theOptionalPoint Point to compute the normale at.
11306         #  @param theName Object name; when specified, this parameter is used
11307         #         for result publication in the study. Otherwise, if automatic
11308         #         publication is switched on, default value is used for result name.
11309         #
11310         #  @return New GEOM.GEOM_Object, containing the created vector.
11311         #
11312         #  @ref swig_todo "Example"
11313         @ManageTransactions("MeasuOp")
11314         def GetNormal(self, theFace, theOptionalPoint = None, theName=None):
11315             """
11316             Get a normale to the given face. If the point is not given,
11317             the normale is calculated at the center of mass.
11318
11319             Parameters:
11320                 theFace Face to define normale of.
11321                 theOptionalPoint Point to compute the normale at.
11322                 theName Object name; when specified, this parameter is used
11323                         for result publication in the study. Otherwise, if automatic
11324                         publication is switched on, default value is used for result name.
11325
11326             Returns:
11327                 New GEOM.GEOM_Object, containing the created vector.
11328             """
11329             # Example: see GEOM_TestMeasures.py
11330             anObj = self.MeasuOp.GetNormal(theFace, theOptionalPoint)
11331             RaiseIfFailed("GetNormal", self.MeasuOp)
11332             self._autoPublish(anObj, theName, "normal")
11333             return anObj
11334
11335         ## Print shape errors obtained from CheckShape.
11336         #  @param theShape Shape that was checked.
11337         #  @param theShapeErrors the shape errors obtained by CheckShape.
11338         #  @param theReturnStatus If 0 the description of problem is printed.
11339         #                         If 1 the description of problem is returned.
11340         #  @return If theReturnStatus is equal to 1 the description is returned.
11341         #          Otherwise doesn't return anything.
11342         #
11343         #  @ref tui_check_shape_page "Example"
11344         @ManageTransactions("MeasuOp")
11345         def PrintShapeErrors(self, theShape, theShapeErrors, theReturnStatus = 0):
11346             """
11347             Print shape errors obtained from CheckShape.
11348
11349             Parameters:
11350                 theShape Shape that was checked.
11351                 theShapeErrors the shape errors obtained by CheckShape.
11352                 theReturnStatus If 0 the description of problem is printed.
11353                                 If 1 the description of problem is returned.
11354
11355             Returns:
11356                 If theReturnStatus is equal to 1 the description is returned.
11357                   Otherwise doesn't return anything.
11358             """
11359             # Example: see GEOM_TestMeasures.py
11360             Descr = self.MeasuOp.PrintShapeErrors(theShape, theShapeErrors)
11361             if theReturnStatus == 1:
11362                 return Descr
11363             print Descr
11364             pass
11365
11366         ## Check a topology of the given shape.
11367         #  @param theShape Shape to check validity of.
11368         #  @param theIsCheckGeom If FALSE, only the shape's topology will be checked, \n
11369         #                        if TRUE, the shape's geometry will be checked also.
11370         #  @param theReturnStatus If 0 and if theShape is invalid, a description
11371         #                         of problem is printed.
11372         #                         If 1 isValid flag and the description of
11373         #                         problem is returned.
11374         #                         If 2 isValid flag and the list of error data
11375         #                         is returned.
11376         #  @return TRUE, if the shape "seems to be valid".
11377         #          If theShape is invalid, prints a description of problem.
11378         #          If theReturnStatus is equal to 1 the description is returned
11379         #          along with IsValid flag.
11380         #          If theReturnStatus is equal to 2 the list of error data is
11381         #          returned along with IsValid flag.
11382         #
11383         #  @ref tui_check_shape_page "Example"
11384         @ManageTransactions("MeasuOp")
11385         def CheckShape(self,theShape, theIsCheckGeom = 0, theReturnStatus = 0):
11386             """
11387             Check a topology of the given shape.
11388
11389             Parameters:
11390                 theShape Shape to check validity of.
11391                 theIsCheckGeom If FALSE, only the shape's topology will be checked,
11392                                if TRUE, the shape's geometry will be checked also.
11393                 theReturnStatus If 0 and if theShape is invalid, a description
11394                                 of problem is printed.
11395                                 If 1 IsValid flag and the description of
11396                                 problem is returned.
11397                                 If 2 IsValid flag and the list of error data
11398                                 is returned.
11399
11400             Returns:
11401                 TRUE, if the shape "seems to be valid".
11402                 If theShape is invalid, prints a description of problem.
11403                 If theReturnStatus is equal to 1 the description is returned
11404                 along with IsValid flag.
11405                 If theReturnStatus is equal to 2 the list of error data is
11406                 returned along with IsValid flag.
11407             """
11408             # Example: see GEOM_TestMeasures.py
11409             if theIsCheckGeom:
11410                 (IsValid, ShapeErrors) = self.MeasuOp.CheckShapeWithGeometry(theShape)
11411                 RaiseIfFailed("CheckShapeWithGeometry", self.MeasuOp)
11412             else:
11413                 (IsValid, ShapeErrors) = self.MeasuOp.CheckShape(theShape)
11414                 RaiseIfFailed("CheckShape", self.MeasuOp)
11415             if IsValid == 0:
11416                 if theReturnStatus == 0:
11417                     Descr = self.MeasuOp.PrintShapeErrors(theShape, ShapeErrors)
11418                     print Descr
11419             if theReturnStatus == 1:
11420               Descr = self.MeasuOp.PrintShapeErrors(theShape, ShapeErrors)
11421               return (IsValid, Descr)
11422             elif theReturnStatus == 2:
11423               return (IsValid, ShapeErrors)
11424             return IsValid
11425
11426         ## Detect self-intersections in the given shape.
11427         #  @param theShape Shape to check.
11428         #  @param theCheckLevel is the level of self-intersection check.
11429         #         Possible input values are:
11430         #         - GEOM.SI_V_V(0) - only V/V interferences
11431         #         - GEOM.SI_V_E(1) - V/V and V/E interferences
11432         #         - GEOM.SI_E_E(2) - V/V, V/E and E/E interferences
11433         #         - GEOM.SI_V_F(3) - V/V, V/E, E/E and V/F interferences
11434         #         - GEOM.SI_E_F(4) - V/V, V/E, E/E, V/F and E/F interferences
11435         #         - GEOM.SI_ALL(5) - all interferences.
11436         #  @return TRUE, if the shape contains no self-intersections.
11437         #
11438         #  @ref tui_check_self_intersections_page "Example"
11439         @ManageTransactions("MeasuOp")
11440         def CheckSelfIntersections(self, theShape, theCheckLevel = GEOM.SI_ALL):
11441             """
11442             Detect self-intersections in the given shape.
11443
11444             Parameters:
11445                 theShape Shape to check.
11446                 theCheckLevel is the level of self-intersection check.
11447                   Possible input values are:
11448                    - GEOM.SI_V_V(0) - only V/V interferences
11449                    - GEOM.SI_V_E(1) - V/V and V/E interferences
11450                    - GEOM.SI_E_E(2) - V/V, V/E and E/E interferences
11451                    - GEOM.SI_V_F(3) - V/V, V/E, E/E and V/F interferences
11452                    - GEOM.SI_E_F(4) - V/V, V/E, E/E, V/F and E/F interferences
11453                    - GEOM.SI_ALL(5) - all interferences.
11454  
11455             Returns:
11456                 TRUE, if the shape contains no self-intersections.
11457             """
11458             # Example: see GEOM_TestMeasures.py
11459             (IsValid, Pairs) = self.MeasuOp.CheckSelfIntersections(theShape, EnumToLong(theCheckLevel))
11460             RaiseIfFailed("CheckSelfIntersections", self.MeasuOp)
11461             return IsValid
11462
11463         ## Detect self-intersections of the given shape with algorithm based on mesh intersections.
11464         #  @param theShape Shape to check.
11465         #  @param theDeflection Linear deflection coefficient that specifies quality of tessellation:
11466         #         - if \a theDeflection <= 0, default deflection 0.001 is used
11467         #  @param theTolerance Specifies a distance between sub-shapes used for detecting gaps:
11468         #         - if \a theTolerance <= 0, algorithm detects intersections (default behavior)
11469         #         - if \a theTolerance > 0, algorithm detects gaps
11470         #  @return TRUE, if the shape contains no self-intersections.
11471         #
11472         #  @ref tui_check_self_intersections_fast_page "Example"
11473         @ManageTransactions("MeasuOp")
11474         def CheckSelfIntersectionsFast(self, theShape, theDeflection = 0.001, theTolerance = 0.0):
11475             """
11476             Detect self-intersections of the given shape with algorithm based on mesh intersections.
11477
11478             Parameters:
11479                 theShape Shape to check.
11480                 theDeflection Linear deflection coefficient that specifies quality of tessellation:
11481                     - if theDeflection <= 0, default deflection 0.001 is used
11482                 theTolerance Specifies a distance between shapes used for detecting gaps:
11483                     - if theTolerance <= 0, algorithm detects intersections (default behavior)
11484                     - if theTolerance > 0, algorithm detects gaps
11485  
11486             Returns:
11487                 TRUE, if the shape contains no self-intersections.
11488             """
11489             # Example: see GEOM_TestMeasures.py
11490             (IsValid, Pairs) = self.MeasuOp.CheckSelfIntersectionsFast(theShape, theDeflection, theTolerance)
11491             RaiseIfFailed("CheckSelfIntersectionsFast", self.MeasuOp)
11492             return IsValid
11493
11494         ## Check boolean and partition operations arguments.
11495         #  @param theShape the argument of an operation to be checked
11496         #  @return TRUE if the argument is valid for a boolean or partition
11497         #          operation; FALSE otherwise.
11498         @ManageTransactions("MeasuOp")
11499         def CheckBOPArguments(self, theShape):
11500             """
11501             Check boolean and partition operations arguments.
11502
11503             Parameters:
11504                 theShape the argument of an operation to be checked
11505
11506             Returns:
11507                 TRUE if the argument is valid for a boolean or partition
11508                 operation; FALSE otherwise.
11509             """
11510             return self.MeasuOp.CheckBOPArguments(theShape)
11511
11512         ## Detect intersections of the given shapes with algorithm based on mesh intersections.
11513         #  @param theShape1 First source object
11514         #  @param theShape2 Second source object
11515         #  @param theTolerance Specifies a distance between shapes used for detecting gaps:
11516         #         - if \a theTolerance <= 0, algorithm detects intersections (default behavior)
11517         #         - if \a theTolerance > 0, algorithm detects gaps
11518         #  @param theDeflection Linear deflection coefficient that specifies quality of tessellation:
11519         #         - if \a theDeflection <= 0, default deflection 0.001 is used
11520         #  @return TRUE, if there are intersections (gaps) between source shapes
11521         #  @return List of sub-shapes IDs from 1st shape that localize intersection.
11522         #  @return List of sub-shapes IDs from 2nd shape that localize intersection.
11523         #
11524         #  @ref tui_fast_intersection_page "Example"
11525         @ManageTransactions("MeasuOp")
11526         def FastIntersect(self, theShape1, theShape2, theTolerance = 0.0, theDeflection = 0.001):
11527             """
11528             Detect intersections of the given shapes with algorithm based on mesh intersections.
11529
11530             Parameters:
11531                 theShape1 First source object
11532                 theShape2 Second source object
11533                 theTolerance Specifies a distance between shapes used for detecting gaps:
11534                     - if theTolerance <= 0, algorithm detects intersections (default behavior)
11535                     - if theTolerance > 0, algorithm detects gaps
11536                 theDeflection Linear deflection coefficient that specifies quality of tessellation:
11537                     - if theDeflection <= 0, default deflection 0.001 is used
11538  
11539             Returns:
11540                 TRUE, if there are intersections (gaps) between source shapes
11541                 List of sub-shapes IDs from 1st shape that localize intersection.
11542                 List of sub-shapes IDs from 2nd shape that localize intersection.
11543             """
11544             # Example: see GEOM_TestMeasures.py
11545             IsOk, Res1, Res2 = self.MeasuOp.FastIntersect(theShape1, theShape2, theTolerance, theDeflection)
11546             RaiseIfFailed("FastIntersect", self.MeasuOp)
11547             return IsOk, Res1, Res2
11548
11549         ## Get position (LCS) of theShape.
11550         #
11551         #  Origin of the LCS is situated at the shape's center of mass.
11552         #  Axes of the LCS are obtained from shape's location or,
11553         #  if the shape is a planar face, from position of its plane.
11554         #
11555         #  @param theShape Shape to calculate position of.
11556         #  @return [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
11557         #          Ox,Oy,Oz: Coordinates of shape's LCS origin.
11558         #          Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
11559         #          Xx,Xy,Xz: Coordinates of shape's LCS X direction.
11560         #
11561         #  @ref swig_todo "Example"
11562         @ManageTransactions("MeasuOp")
11563         def GetPosition(self,theShape):
11564             """
11565             Get position (LCS) of theShape.
11566             Origin of the LCS is situated at the shape's center of mass.
11567             Axes of the LCS are obtained from shape's location or,
11568             if the shape is a planar face, from position of its plane.
11569
11570             Parameters:
11571                 theShape Shape to calculate position of.
11572
11573             Returns:
11574                 [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
11575                  Ox,Oy,Oz: Coordinates of shape's LCS origin.
11576                  Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
11577                  Xx,Xy,Xz: Coordinates of shape's LCS X direction.
11578             """
11579             # Example: see GEOM_TestMeasures.py
11580             aTuple = self.MeasuOp.GetPosition(theShape)
11581             RaiseIfFailed("GetPosition", self.MeasuOp)
11582             return aTuple
11583
11584         ## Get kind of theShape.
11585         #
11586         #  @param theShape Shape to get a kind of.
11587         #  @return Returns a kind of shape in terms of <VAR>GEOM.GEOM_IKindOfShape.shape_kind</VAR> enumeration
11588         #          and a list of parameters, describing the shape.
11589         #  @note  Concrete meaning of each value, returned via \a theIntegers
11590         #         or \a theDoubles list depends on the kind() of the shape.
11591         #
11592         #  @ref swig_todo "Example"
11593         @ManageTransactions("MeasuOp")
11594         def KindOfShape(self,theShape):
11595             """
11596             Get kind of theShape.
11597
11598             Parameters:
11599                 theShape Shape to get a kind of.
11600
11601             Returns:
11602                 a kind of shape in terms of GEOM_IKindOfShape.shape_kind enumeration
11603                     and a list of parameters, describing the shape.
11604             Note:
11605                 Concrete meaning of each value, returned via theIntegers
11606                 or theDoubles list depends on the geompy.kind of the shape
11607             """
11608             # Example: see GEOM_TestMeasures.py
11609             aRoughTuple = self.MeasuOp.KindOfShape(theShape)
11610             RaiseIfFailed("KindOfShape", self.MeasuOp)
11611
11612             aKind  = aRoughTuple[0]
11613             anInts = aRoughTuple[1]
11614             aDbls  = aRoughTuple[2]
11615
11616             # Now there is no exception from this rule:
11617             aKindTuple = [aKind] + aDbls + anInts
11618
11619             # If they are we will regroup parameters for such kind of shape.
11620             # For example:
11621             #if aKind == kind.SOME_KIND:
11622             #    #  SOME_KIND     int int double int double double
11623             #    aKindTuple = [aKind, anInts[0], anInts[1], aDbls[0], anInts[2], aDbls[1], aDbls[2]]
11624
11625             return aKindTuple
11626
11627         ## Returns the string that describes if the shell is good for solid.
11628         #  This is a support method for MakeSolid.
11629         #
11630         #  @param theShell the shell to be checked.
11631         #  @return Returns a string that describes the shell validity for
11632         #          solid construction.
11633         @ManageTransactions("MeasuOp")
11634         def _IsGoodForSolid(self, theShell):
11635             """
11636             Returns the string that describes if the shell is good for solid.
11637             This is a support method for MakeSolid.
11638
11639             Parameter:
11640                 theShell the shell to be checked.
11641
11642             Returns:
11643                 Returns a string that describes the shell validity for
11644                 solid construction.
11645             """
11646             aDescr = self.MeasuOp.IsGoodForSolid(theShell)
11647             return aDescr
11648
11649         # end of l2_measure
11650         ## @}
11651
11652         ## @addtogroup l2_import_export
11653         ## @{
11654
11655         ## Import a shape from the BREP, IGES, STEP or other file
11656         #  (depends on given format) with given name.
11657         #
11658         #  Note: this function is deprecated, it is kept for backward compatibility only
11659         #  Use Import<FormatName> instead, where <FormatName> is a name of desirable format to import.
11660         #
11661         #  @param theFileName The file, containing the shape.
11662         #  @param theFormatName Specify format for the file reading.
11663         #         Available formats can be obtained with InsertOp.ImportTranslators() method.
11664         #         If format 'IGES_SCALE' is used instead of 'IGES' or
11665         #            format 'STEP_SCALE' is used instead of 'STEP',
11666         #            length unit will be set to 'meter' and result model will be scaled.
11667         #  @param theName Object name; when specified, this parameter is used
11668         #         for result publication in the study. Otherwise, if automatic
11669         #         publication is switched on, default value is used for result name.
11670         #
11671         #  @return New GEOM.GEOM_Object, containing the imported shape.
11672         #          If material names are imported it returns the list of
11673         #          objects. The first one is the imported object followed by
11674         #          material groups.
11675         #  @note Auto publishing is allowed for the shape itself. Imported
11676         #        material groups are not automatically published.
11677         #
11678         #  @ref swig_Import_Export "Example"
11679         @ManageTransactions("InsertOp")
11680         def ImportFile(self, theFileName, theFormatName, theName=None):
11681             """
11682             Import a shape from the BREP, IGES, STEP or other file
11683             (depends on given format) with given name.
11684
11685             Note: this function is deprecated, it is kept for backward compatibility only
11686             Use Import<FormatName> instead, where <FormatName> is a name of desirable format to import.
11687
11688             Parameters: 
11689                 theFileName The file, containing the shape.
11690                 theFormatName Specify format for the file reading.
11691                     Available formats can be obtained with geompy.InsertOp.ImportTranslators() method.
11692                     If format 'IGES_SCALE' is used instead of 'IGES' or
11693                        format 'STEP_SCALE' is used instead of 'STEP',
11694                        length unit will be set to 'meter' and result model will be scaled.
11695                 theName Object name; when specified, this parameter is used
11696                         for result publication in the study. Otherwise, if automatic
11697                         publication is switched on, default value is used for result name.
11698
11699             Returns:
11700                 New GEOM.GEOM_Object, containing the imported shape.
11701                 If material names are imported it returns the list of
11702                 objects. The first one is the imported object followed by
11703                 material groups.
11704             Note:
11705                 Auto publishing is allowed for the shape itself. Imported
11706                 material groups are not automatically published.
11707             """
11708             # Example: see GEOM_TestOthers.py
11709             print """
11710             WARNING: Function ImportFile is deprecated, use Import<FormatName> instead,
11711             where <FormatName> is a name of desirable format for importing.
11712             """
11713             aListObj = self.InsertOp.ImportFile(theFileName, theFormatName)
11714             RaiseIfFailed("ImportFile", self.InsertOp)
11715             aNbObj = len(aListObj)
11716             if aNbObj > 0:
11717                 self._autoPublish(aListObj[0], theName, "imported")
11718             if aNbObj == 1:
11719                 return aListObj[0]
11720             return aListObj
11721
11722         ## Deprecated analog of ImportFile()
11723         def Import(self, theFileName, theFormatName, theName=None):
11724             """
11725             Deprecated analog of geompy.ImportFile, kept for backward compatibility only.
11726             """
11727             # note: auto-publishing is done in self.ImportFile()
11728             return self.ImportFile(theFileName, theFormatName, theName)
11729
11730         ## Read a shape from the binary stream, containing its bounding representation (BRep).
11731         #
11732         #  @note As the byte-stream representing the shape data can be quite large, this method
11733         #  is not automatically dumped to the Python script with the DumpStudy functionality;
11734         #  so please use this method carefully, only for strong reasons.
11735         #  
11736         #  @note GEOM.GEOM_Object.GetShapeStream() method can be used to obtain the shape's
11737         #  data stream.
11738         #
11739         #  @param theStream The BRep binary stream.
11740         #  @param theName Object name; when specified, this parameter is used
11741         #         for result publication in the study. Otherwise, if automatic
11742         #         publication is switched on, default value is used for result name.
11743         #
11744         #  @return New GEOM_Object, containing the shape, read from theStream.
11745         #
11746         #  @ref swig_Import_Export "Example"
11747         @ManageTransactions("InsertOp")
11748         def RestoreShape (self, theStream, theName=None):
11749             """
11750             Read a shape from the binary stream, containing its bounding representation (BRep).
11751
11752             Note:
11753                 shape.GetShapeStream() method can be used to obtain the shape's BRep stream.
11754
11755             Parameters:
11756                 theStream The BRep binary stream.
11757                 theName Object name; when specified, this parameter is used
11758                         for result publication in the study. Otherwise, if automatic
11759                         publication is switched on, default value is used for result name.
11760
11761             Returns:
11762                 New GEOM_Object, containing the shape, read from theStream.
11763             """
11764             # Example: see GEOM_TestOthers.py
11765             if not theStream:
11766                 # this is the workaround to ignore invalid case when data stream is empty
11767                 if int(os.getenv("GEOM_IGNORE_RESTORE_SHAPE", "0")) > 0:
11768                     print "WARNING: Result of RestoreShape is a NULL shape!"
11769                     return None
11770             anObj = self.InsertOp.RestoreShape(theStream)
11771             RaiseIfFailed("RestoreShape", self.InsertOp)
11772             self._autoPublish(anObj, theName, "restored")
11773             return anObj
11774
11775         ## Export the given shape into a file with given name.
11776         #
11777         #  Note: this function is deprecated, it is kept for backward compatibility only
11778         #  Use Export<FormatName> instead, where <FormatName> is a name of desirable format to export.
11779         #
11780         #  @param theObject Shape to be stored in the file.
11781         #  @param theFileName Name of the file to store the given shape in.
11782         #  @param theFormatName Specify format for the shape storage.
11783         #         Available formats can be obtained with
11784         #         geompy.InsertOp.ExportTranslators()[0] method.
11785         #
11786         #  @ref swig_Import_Export "Example"
11787         @ManageTransactions("InsertOp")
11788         def Export(self, theObject, theFileName, theFormatName):
11789             """
11790             Export the given shape into a file with given name.
11791
11792             Note: this function is deprecated, it is kept for backward compatibility only
11793             Use Export<FormatName> instead, where <FormatName> is a name of desirable format to export.
11794             
11795             Parameters: 
11796                 theObject Shape to be stored in the file.
11797                 theFileName Name of the file to store the given shape in.
11798                 theFormatName Specify format for the shape storage.
11799                               Available formats can be obtained with
11800                               geompy.InsertOp.ExportTranslators()[0] method.
11801             """
11802             # Example: see GEOM_TestOthers.py
11803             print """
11804             WARNING: Function Export is deprecated, use Export<FormatName> instead,
11805             where <FormatName> is a name of desirable format for exporting.
11806             """
11807             self.InsertOp.Export(theObject, theFileName, theFormatName)
11808             if self.InsertOp.IsDone() == 0:
11809                 raise RuntimeError,  "Export : " + self.InsertOp.GetErrorCode()
11810                 pass
11811             pass
11812
11813         # end of l2_import_export
11814         ## @}
11815
11816         ## @addtogroup l3_blocks
11817         ## @{
11818
11819         ## Create a quadrangle face from four edges. Order of Edges is not
11820         #  important. It is  not necessary that edges share the same vertex.
11821         #  @param E1,E2,E3,E4 Edges for the face bound.
11822         #  @param theName Object name; when specified, this parameter is used
11823         #         for result publication in the study. Otherwise, if automatic
11824         #         publication is switched on, default value is used for result name.
11825         #
11826         #  @return New GEOM.GEOM_Object, containing the created face.
11827         #
11828         #  @ref tui_building_by_blocks_page "Example"
11829         @ManageTransactions("BlocksOp")
11830         def MakeQuad(self, E1, E2, E3, E4, theName=None):
11831             """
11832             Create a quadrangle face from four edges. Order of Edges is not
11833             important. It is  not necessary that edges share the same vertex.
11834
11835             Parameters:
11836                 E1,E2,E3,E4 Edges for the face bound.
11837                 theName Object name; when specified, this parameter is used
11838                         for result publication in the study. Otherwise, if automatic
11839                         publication is switched on, default value is used for result name.
11840
11841             Returns:
11842                 New GEOM.GEOM_Object, containing the created face.
11843
11844             Example of usage:
11845                 qface1 = geompy.MakeQuad(edge1, edge2, edge3, edge4)
11846             """
11847             # Example: see GEOM_Spanner.py
11848             anObj = self.BlocksOp.MakeQuad(E1, E2, E3, E4)
11849             RaiseIfFailed("MakeQuad", self.BlocksOp)
11850             self._autoPublish(anObj, theName, "quad")
11851             return anObj
11852
11853         ## Create a quadrangle face on two edges.
11854         #  The missing edges will be built by creating the shortest ones.
11855         #  @param E1,E2 Two opposite edges for the face.
11856         #  @param theName Object name; when specified, this parameter is used
11857         #         for result publication in the study. Otherwise, if automatic
11858         #         publication is switched on, default value is used for result name.
11859         #
11860         #  @return New GEOM.GEOM_Object, containing the created face.
11861         #
11862         #  @ref tui_building_by_blocks_page "Example"
11863         @ManageTransactions("BlocksOp")
11864         def MakeQuad2Edges(self, E1, E2, theName=None):
11865             """
11866             Create a quadrangle face on two edges.
11867             The missing edges will be built by creating the shortest ones.
11868
11869             Parameters:
11870                 E1,E2 Two opposite edges for the face.
11871                 theName Object name; when specified, this parameter is used
11872                         for result publication in the study. Otherwise, if automatic
11873                         publication is switched on, default value is used for result name.
11874
11875             Returns:
11876                 New GEOM.GEOM_Object, containing the created face.
11877
11878             Example of usage:
11879                 # create vertices
11880                 p1 = geompy.MakeVertex(  0.,   0.,   0.)
11881                 p2 = geompy.MakeVertex(150.,  30.,   0.)
11882                 p3 = geompy.MakeVertex(  0., 120.,  50.)
11883                 p4 = geompy.MakeVertex(  0.,  40.,  70.)
11884                 # create edges
11885                 edge1 = geompy.MakeEdge(p1, p2)
11886                 edge2 = geompy.MakeEdge(p3, p4)
11887                 # create a quadrangle face from two edges
11888                 qface2 = geompy.MakeQuad2Edges(edge1, edge2)
11889             """
11890             # Example: see GEOM_Spanner.py
11891             anObj = self.BlocksOp.MakeQuad2Edges(E1, E2)
11892             RaiseIfFailed("MakeQuad2Edges", self.BlocksOp)
11893             self._autoPublish(anObj, theName, "quad")
11894             return anObj
11895
11896         ## Create a quadrangle face with specified corners.
11897         #  The missing edges will be built by creating the shortest ones.
11898         #  @param V1,V2,V3,V4 Corner vertices for the face.
11899         #  @param theName Object name; when specified, this parameter is used
11900         #         for result publication in the study. Otherwise, if automatic
11901         #         publication is switched on, default value is used for result name.
11902         #
11903         #  @return New GEOM.GEOM_Object, containing the created face.
11904         #
11905         #  @ref tui_building_by_blocks_page "Example 1"
11906         #  \n @ref swig_MakeQuad4Vertices "Example 2"
11907         @ManageTransactions("BlocksOp")
11908         def MakeQuad4Vertices(self, V1, V2, V3, V4, theName=None):
11909             """
11910             Create a quadrangle face with specified corners.
11911             The missing edges will be built by creating the shortest ones.
11912
11913             Parameters:
11914                 V1,V2,V3,V4 Corner vertices for the face.
11915                 theName Object name; when specified, this parameter is used
11916                         for result publication in the study. Otherwise, if automatic
11917                         publication is switched on, default value is used for result name.
11918
11919             Returns:
11920                 New GEOM.GEOM_Object, containing the created face.
11921
11922             Example of usage:
11923                 # create vertices
11924                 p1 = geompy.MakeVertex(  0.,   0.,   0.)
11925                 p2 = geompy.MakeVertex(150.,  30.,   0.)
11926                 p3 = geompy.MakeVertex(  0., 120.,  50.)
11927                 p4 = geompy.MakeVertex(  0.,  40.,  70.)
11928                 # create a quadrangle from four points in its corners
11929                 qface3 = geompy.MakeQuad4Vertices(p1, p2, p3, p4)
11930             """
11931             # Example: see GEOM_Spanner.py
11932             anObj = self.BlocksOp.MakeQuad4Vertices(V1, V2, V3, V4)
11933             RaiseIfFailed("MakeQuad4Vertices", self.BlocksOp)
11934             self._autoPublish(anObj, theName, "quad")
11935             return anObj
11936
11937         ## Create a hexahedral solid, bounded by the six given faces. Order of
11938         #  faces is not important. It is  not necessary that Faces share the same edge.
11939         #  @param F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
11940         #  @param theName Object name; when specified, this parameter is used
11941         #         for result publication in the study. Otherwise, if automatic
11942         #         publication is switched on, default value is used for result name.
11943         #
11944         #  @return New GEOM.GEOM_Object, containing the created solid.
11945         #
11946         #  @ref tui_building_by_blocks_page "Example 1"
11947         #  \n @ref swig_MakeHexa "Example 2"
11948         @ManageTransactions("BlocksOp")
11949         def MakeHexa(self, F1, F2, F3, F4, F5, F6, theName=None):
11950             """
11951             Create a hexahedral solid, bounded by the six given faces. Order of
11952             faces is not important. It is  not necessary that Faces share the same edge.
11953
11954             Parameters:
11955                 F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
11956                 theName Object name; when specified, this parameter is used
11957                         for result publication in the study. Otherwise, if automatic
11958                         publication is switched on, default value is used for result name.
11959
11960             Returns:
11961                 New GEOM.GEOM_Object, containing the created solid.
11962
11963             Example of usage:
11964                 solid = geompy.MakeHexa(qface1, qface2, qface3, qface4, qface5, qface6)
11965             """
11966             # Example: see GEOM_Spanner.py
11967             anObj = self.BlocksOp.MakeHexa(F1, F2, F3, F4, F5, F6)
11968             RaiseIfFailed("MakeHexa", self.BlocksOp)
11969             self._autoPublish(anObj, theName, "hexa")
11970             return anObj
11971
11972         ## Create a hexahedral solid between two given faces.
11973         #  The missing faces will be built by creating the smallest ones.
11974         #  @param F1,F2 Two opposite faces for the hexahedral solid.
11975         #  @param theName Object name; when specified, this parameter is used
11976         #         for result publication in the study. Otherwise, if automatic
11977         #         publication is switched on, default value is used for result name.
11978         #
11979         #  @return New GEOM.GEOM_Object, containing the created solid.
11980         #
11981         #  @ref tui_building_by_blocks_page "Example 1"
11982         #  \n @ref swig_MakeHexa2Faces "Example 2"
11983         @ManageTransactions("BlocksOp")
11984         def MakeHexa2Faces(self, F1, F2, theName=None):
11985             """
11986             Create a hexahedral solid between two given faces.
11987             The missing faces will be built by creating the smallest ones.
11988
11989             Parameters:
11990                 F1,F2 Two opposite faces for the hexahedral solid.
11991                 theName Object name; when specified, this parameter is used
11992                         for result publication in the study. Otherwise, if automatic
11993                         publication is switched on, default value is used for result name.
11994
11995             Returns:
11996                 New GEOM.GEOM_Object, containing the created solid.
11997
11998             Example of usage:
11999                 solid1 = geompy.MakeHexa2Faces(qface1, qface2)
12000             """
12001             # Example: see GEOM_Spanner.py
12002             anObj = self.BlocksOp.MakeHexa2Faces(F1, F2)
12003             RaiseIfFailed("MakeHexa2Faces", self.BlocksOp)
12004             self._autoPublish(anObj, theName, "hexa")
12005             return anObj
12006
12007         # end of l3_blocks
12008         ## @}
12009
12010         ## @addtogroup l3_blocks_op
12011         ## @{
12012
12013         ## Get a vertex, found in the given shape by its coordinates.
12014         #  @param theShape Block or a compound of blocks.
12015         #  @param theX,theY,theZ Coordinates of the sought vertex.
12016         #  @param theEpsilon Maximum allowed distance between the resulting
12017         #                    vertex and point with the given coordinates.
12018         #  @param theName Object name; when specified, this parameter is used
12019         #         for result publication in the study. Otherwise, if automatic
12020         #         publication is switched on, default value is used for result name.
12021         #
12022         #  @return New GEOM.GEOM_Object, containing the found vertex.
12023         #
12024         #  @ref swig_GetPoint "Example"
12025         @ManageTransactions("BlocksOp")
12026         def GetPoint(self, theShape, theX, theY, theZ, theEpsilon, theName=None):
12027             """
12028             Get a vertex, found in the given shape by its coordinates.
12029
12030             Parameters:
12031                 theShape Block or a compound of blocks.
12032                 theX,theY,theZ Coordinates of the sought vertex.
12033                 theEpsilon Maximum allowed distance between the resulting
12034                            vertex and point with the given coordinates.
12035                 theName Object name; when specified, this parameter is used
12036                         for result publication in the study. Otherwise, if automatic
12037                         publication is switched on, default value is used for result name.
12038
12039             Returns:
12040                 New GEOM.GEOM_Object, containing the found vertex.
12041
12042             Example of usage:
12043                 pnt = geompy.GetPoint(shape, -50,  50,  50, 0.01)
12044             """
12045             # Example: see GEOM_TestOthers.py
12046             anObj = self.BlocksOp.GetPoint(theShape, theX, theY, theZ, theEpsilon)
12047             RaiseIfFailed("GetPoint", self.BlocksOp)
12048             self._autoPublish(anObj, theName, "vertex")
12049             return anObj
12050
12051         ## Find a vertex of the given shape, which has minimal distance to the given point.
12052         #  @param theShape Any shape.
12053         #  @param thePoint Point, close to the desired vertex.
12054         #  @param theName Object name; when specified, this parameter is used
12055         #         for result publication in the study. Otherwise, if automatic
12056         #         publication is switched on, default value is used for result name.
12057         #
12058         #  @return New GEOM.GEOM_Object, containing the found vertex.
12059         #
12060         #  @ref swig_GetVertexNearPoint "Example"
12061         @ManageTransactions("BlocksOp")
12062         def GetVertexNearPoint(self, theShape, thePoint, theName=None):
12063             """
12064             Find a vertex of the given shape, which has minimal distance to the given point.
12065
12066             Parameters:
12067                 theShape Any shape.
12068                 thePoint Point, close to the desired vertex.
12069                 theName Object name; when specified, this parameter is used
12070                         for result publication in the study. Otherwise, if automatic
12071                         publication is switched on, default value is used for result name.
12072
12073             Returns:
12074                 New GEOM.GEOM_Object, containing the found vertex.
12075
12076             Example of usage:
12077                 pmidle = geompy.MakeVertex(50, 0, 50)
12078                 edge1 = geompy.GetEdgeNearPoint(blocksComp, pmidle)
12079             """
12080             # Example: see GEOM_TestOthers.py
12081             anObj = self.BlocksOp.GetVertexNearPoint(theShape, thePoint)
12082             RaiseIfFailed("GetVertexNearPoint", self.BlocksOp)
12083             self._autoPublish(anObj, theName, "vertex")
12084             return anObj
12085
12086         ## Get an edge, found in the given shape by two given vertices.
12087         #  @param theShape Block or a compound of blocks.
12088         #  @param thePoint1,thePoint2 Points, close to the ends of the desired edge.
12089         #  @param theName Object name; when specified, this parameter is used
12090         #         for result publication in the study. Otherwise, if automatic
12091         #         publication is switched on, default value is used for result name.
12092         #
12093         #  @return New GEOM.GEOM_Object, containing the found edge.
12094         #
12095         #  @ref swig_GetEdge "Example"
12096         @ManageTransactions("BlocksOp")
12097         def GetEdge(self, theShape, thePoint1, thePoint2, theName=None):
12098             """
12099             Get an edge, found in the given shape by two given vertices.
12100
12101             Parameters:
12102                 theShape Block or a compound of blocks.
12103                 thePoint1,thePoint2 Points, close to the ends of the desired edge.
12104                 theName Object name; when specified, this parameter is used
12105                         for result publication in the study. Otherwise, if automatic
12106                         publication is switched on, default value is used for result name.
12107
12108             Returns:
12109                 New GEOM.GEOM_Object, containing the found edge.
12110             """
12111             # Example: see GEOM_Spanner.py
12112             anObj = self.BlocksOp.GetEdge(theShape, thePoint1, thePoint2)
12113             RaiseIfFailed("GetEdge", self.BlocksOp)
12114             self._autoPublish(anObj, theName, "edge")
12115             return anObj
12116
12117         ## Find an edge of the given shape, which has minimal distance to the given point.
12118         #  @param theShape Block or a compound of blocks.
12119         #  @param thePoint Point, close to the desired edge.
12120         #  @param theName Object name; when specified, this parameter is used
12121         #         for result publication in the study. Otherwise, if automatic
12122         #         publication is switched on, default value is used for result name.
12123         #
12124         #  @return New GEOM.GEOM_Object, containing the found edge.
12125         #
12126         #  @ref swig_GetEdgeNearPoint "Example"
12127         @ManageTransactions("BlocksOp")
12128         def GetEdgeNearPoint(self, theShape, thePoint, theName=None):
12129             """
12130             Find an edge of the given shape, which has minimal distance to the given point.
12131
12132             Parameters:
12133                 theShape Block or a compound of blocks.
12134                 thePoint Point, close to the desired edge.
12135                 theName Object name; when specified, this parameter is used
12136                         for result publication in the study. Otherwise, if automatic
12137                         publication is switched on, default value is used for result name.
12138
12139             Returns:
12140                 New GEOM.GEOM_Object, containing the found edge.
12141             """
12142             # Example: see GEOM_TestOthers.py
12143             anObj = self.BlocksOp.GetEdgeNearPoint(theShape, thePoint)
12144             RaiseIfFailed("GetEdgeNearPoint", self.BlocksOp)
12145             self._autoPublish(anObj, theName, "edge")
12146             return anObj
12147
12148         ## Returns a face, found in the given shape by four given corner vertices.
12149         #  @param theShape Block or a compound of blocks.
12150         #  @param thePoint1,thePoint2,thePoint3,thePoint4 Points, close to the corners of the desired face.
12151         #  @param theName Object name; when specified, this parameter is used
12152         #         for result publication in the study. Otherwise, if automatic
12153         #         publication is switched on, default value is used for result name.
12154         #
12155         #  @return New GEOM.GEOM_Object, containing the found face.
12156         #
12157         #  @ref swig_todo "Example"
12158         @ManageTransactions("BlocksOp")
12159         def GetFaceByPoints(self, theShape, thePoint1, thePoint2, thePoint3, thePoint4, theName=None):
12160             """
12161             Returns a face, found in the given shape by four given corner vertices.
12162
12163             Parameters:
12164                 theShape Block or a compound of blocks.
12165                 thePoint1,thePoint2,thePoint3,thePoint4 Points, close to the corners of the desired face.
12166                 theName Object name; when specified, this parameter is used
12167                         for result publication in the study. Otherwise, if automatic
12168                         publication is switched on, default value is used for result name.
12169
12170             Returns:
12171                 New GEOM.GEOM_Object, containing the found face.
12172             """
12173             # Example: see GEOM_Spanner.py
12174             anObj = self.BlocksOp.GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4)
12175             RaiseIfFailed("GetFaceByPoints", self.BlocksOp)
12176             self._autoPublish(anObj, theName, "face")
12177             return anObj
12178
12179         ## Get a face of block, found in the given shape by two given edges.
12180         #  @param theShape Block or a compound of blocks.
12181         #  @param theEdge1,theEdge2 Edges, close to the edges of the desired face.
12182         #  @param theName Object name; when specified, this parameter is used
12183         #         for result publication in the study. Otherwise, if automatic
12184         #         publication is switched on, default value is used for result name.
12185         #
12186         #  @return New GEOM.GEOM_Object, containing the found face.
12187         #
12188         #  @ref swig_todo "Example"
12189         @ManageTransactions("BlocksOp")
12190         def GetFaceByEdges(self, theShape, theEdge1, theEdge2, theName=None):
12191             """
12192             Get a face of block, found in the given shape by two given edges.
12193
12194             Parameters:
12195                 theShape Block or a compound of blocks.
12196                 theEdge1,theEdge2 Edges, close to the edges of the desired face.
12197                 theName Object name; when specified, this parameter is used
12198                         for result publication in the study. Otherwise, if automatic
12199                         publication is switched on, default value is used for result name.
12200
12201             Returns:
12202                 New GEOM.GEOM_Object, containing the found face.
12203             """
12204             # Example: see GEOM_Spanner.py
12205             anObj = self.BlocksOp.GetFaceByEdges(theShape, theEdge1, theEdge2)
12206             RaiseIfFailed("GetFaceByEdges", self.BlocksOp)
12207             self._autoPublish(anObj, theName, "face")
12208             return anObj
12209
12210         ## Find a face, opposite to the given one in the given block.
12211         #  @param theBlock Must be a hexahedral solid.
12212         #  @param theFace Face of \a theBlock, opposite to the desired face.
12213         #  @param theName Object name; when specified, this parameter is used
12214         #         for result publication in the study. Otherwise, if automatic
12215         #         publication is switched on, default value is used for result name.
12216         #
12217         #  @return New GEOM.GEOM_Object, containing the found face.
12218         #
12219         #  @ref swig_GetOppositeFace "Example"
12220         @ManageTransactions("BlocksOp")
12221         def GetOppositeFace(self, theBlock, theFace, theName=None):
12222             """
12223             Find a face, opposite to the given one in the given block.
12224
12225             Parameters:
12226                 theBlock Must be a hexahedral solid.
12227                 theFace Face of theBlock, opposite to the desired face.
12228                 theName Object name; when specified, this parameter is used
12229                         for result publication in the study. Otherwise, if automatic
12230                         publication is switched on, default value is used for result name.
12231
12232             Returns:
12233                 New GEOM.GEOM_Object, containing the found face.
12234             """
12235             # Example: see GEOM_Spanner.py
12236             anObj = self.BlocksOp.GetOppositeFace(theBlock, theFace)
12237             RaiseIfFailed("GetOppositeFace", self.BlocksOp)
12238             self._autoPublish(anObj, theName, "face")
12239             return anObj
12240
12241         ## Find a face of the given shape, which has minimal distance to the given point.
12242         #  @param theShape Block or a compound of blocks.
12243         #  @param thePoint Point, close to the desired face.
12244         #  @param theName Object name; when specified, this parameter is used
12245         #         for result publication in the study. Otherwise, if automatic
12246         #         publication is switched on, default value is used for result name.
12247         #
12248         #  @return New GEOM.GEOM_Object, containing the found face.
12249         #
12250         #  @ref swig_GetFaceNearPoint "Example"
12251         @ManageTransactions("BlocksOp")
12252         def GetFaceNearPoint(self, theShape, thePoint, theName=None):
12253             """
12254             Find a face of the given shape, which has minimal distance to the given point.
12255
12256             Parameters:
12257                 theShape Block or a compound of blocks.
12258                 thePoint Point, close to the desired face.
12259                 theName Object name; when specified, this parameter is used
12260                         for result publication in the study. Otherwise, if automatic
12261                         publication is switched on, default value is used for result name.
12262
12263             Returns:
12264                 New GEOM.GEOM_Object, containing the found face.
12265             """
12266             # Example: see GEOM_Spanner.py
12267             anObj = self.BlocksOp.GetFaceNearPoint(theShape, thePoint)
12268             RaiseIfFailed("GetFaceNearPoint", self.BlocksOp)
12269             self._autoPublish(anObj, theName, "face")
12270             return anObj
12271
12272         ## Find a face of block, whose outside normale has minimal angle with the given vector.
12273         #  @param theBlock Block or a compound of blocks.
12274         #  @param theVector Vector, close to the normale of the desired face.
12275         #  @param theName Object name; when specified, this parameter is used
12276         #         for result publication in the study. Otherwise, if automatic
12277         #         publication is switched on, default value is used for result name.
12278         #
12279         #  @return New GEOM.GEOM_Object, containing the found face.
12280         #
12281         #  @ref swig_todo "Example"
12282         @ManageTransactions("BlocksOp")
12283         def GetFaceByNormale(self, theBlock, theVector, theName=None):
12284             """
12285             Find a face of block, whose outside normale has minimal angle with the given vector.
12286
12287             Parameters:
12288                 theBlock Block or a compound of blocks.
12289                 theVector Vector, close to the normale of the desired face.
12290                 theName Object name; when specified, this parameter is used
12291                         for result publication in the study. Otherwise, if automatic
12292                         publication is switched on, default value is used for result name.
12293
12294             Returns:
12295                 New GEOM.GEOM_Object, containing the found face.
12296             """
12297             # Example: see GEOM_Spanner.py
12298             anObj = self.BlocksOp.GetFaceByNormale(theBlock, theVector)
12299             RaiseIfFailed("GetFaceByNormale", self.BlocksOp)
12300             self._autoPublish(anObj, theName, "face")
12301             return anObj
12302
12303         ## Find all sub-shapes of type \a theShapeType of the given shape,
12304         #  which have minimal distance to the given point.
12305         #  @param theShape Any shape.
12306         #  @param thePoint Point, close to the desired shape.
12307         #  @param theShapeType Defines what kind of sub-shapes is searched GEOM::shape_type
12308         #  @param theTolerance The tolerance for distances comparison. All shapes
12309         #                      with distances to the given point in interval
12310         #                      [minimal_distance, minimal_distance + theTolerance] will be gathered.
12311         #  @param theName Object name; when specified, this parameter is used
12312         #         for result publication in the study. Otherwise, if automatic
12313         #         publication is switched on, default value is used for result name.
12314         #
12315         #  @return New GEOM_Object, containing a group of all found shapes.
12316         #
12317         #  @ref swig_GetShapesNearPoint "Example"
12318         @ManageTransactions("BlocksOp")
12319         def GetShapesNearPoint(self, theShape, thePoint, theShapeType, theTolerance = 1e-07, theName=None):
12320             """
12321             Find all sub-shapes of type theShapeType of the given shape,
12322             which have minimal distance to the given point.
12323
12324             Parameters:
12325                 theShape Any shape.
12326                 thePoint Point, close to the desired shape.
12327                 theShapeType Defines what kind of sub-shapes is searched (see GEOM::shape_type)
12328                 theTolerance The tolerance for distances comparison. All shapes
12329                                 with distances to the given point in interval
12330                                 [minimal_distance, minimal_distance + theTolerance] will be gathered.
12331                 theName Object name; when specified, this parameter is used
12332                         for result publication in the study. Otherwise, if automatic
12333                         publication is switched on, default value is used for result name.
12334
12335             Returns:
12336                 New GEOM_Object, containing a group of all found shapes.
12337             """
12338             # Example: see GEOM_TestOthers.py
12339             anObj = self.BlocksOp.GetShapesNearPoint(theShape, thePoint, theShapeType, theTolerance)
12340             RaiseIfFailed("GetShapesNearPoint", self.BlocksOp)
12341             self._autoPublish(anObj, theName, "group")
12342             return anObj
12343
12344         # end of l3_blocks_op
12345         ## @}
12346
12347         ## @addtogroup l4_blocks_measure
12348         ## @{
12349
12350         ## Check, if the compound of blocks is given.
12351         #  To be considered as a compound of blocks, the
12352         #  given shape must satisfy the following conditions:
12353         #  - Each element of the compound should be a Block (6 faces).
12354         #  - Each face should be a quadrangle, i.e. it should have only 1 wire
12355         #       with 4 edges. If <VAR>theIsUseC1</VAR> is set to True and
12356         #       there are more than 4 edges in the only wire of a face,
12357         #       this face is considered to be quadrangle if it has 4 bounds
12358         #       (1 or more edge) of C1 continuity.
12359         #  - A connection between two Blocks should be an entire quadrangle face or an entire edge.
12360         #  - The compound should be connexe.
12361         #  - The glue between two quadrangle faces should be applied.
12362         #  @param theCompound The compound to check.
12363         #  @param theIsUseC1 Flag to check if there are 4 bounds on a face
12364         #         taking into account C1 continuity.
12365         #  @param theAngTolerance the angular tolerance to check if two neighbor
12366         #         edges are codirectional in the common vertex with this
12367         #         tolerance. This parameter is used only if
12368         #         <VAR>theIsUseC1</VAR> is set to True.
12369         #  @return TRUE, if the given shape is a compound of blocks.
12370         #  If theCompound is not valid, prints all discovered errors.
12371         #
12372         #  @ref tui_check_compound_of_blocks_page "Example 1"
12373         #  \n @ref swig_CheckCompoundOfBlocks "Example 2"
12374         @ManageTransactions("BlocksOp")
12375         def CheckCompoundOfBlocks(self,theCompound, theIsUseC1 = False,
12376                                   theAngTolerance = 1.e-12):
12377             """
12378             Check, if the compound of blocks is given.
12379             To be considered as a compound of blocks, the
12380             given shape must satisfy the following conditions:
12381             - Each element of the compound should be a Block (6 faces).
12382             - Each face should be a quadrangle, i.e. it should have only 1 wire
12383                  with 4 edges. If theIsUseC1 is set to True and
12384                  there are more than 4 edges in the only wire of a face,
12385                  this face is considered to be quadrangle if it has 4 bounds
12386                  (1 or more edge) of C1 continuity.
12387             - A connection between two Blocks should be an entire quadrangle face or an entire edge.
12388             - The compound should be connexe.
12389             - The glue between two quadrangle faces should be applied.
12390
12391             Parameters:
12392                 theCompound The compound to check.
12393                 theIsUseC1 Flag to check if there are 4 bounds on a face
12394                            taking into account C1 continuity.
12395                 theAngTolerance the angular tolerance to check if two neighbor
12396                            edges are codirectional in the common vertex with this
12397                            tolerance. This parameter is used only if
12398                            theIsUseC1 is set to True.
12399
12400             Returns:
12401                 TRUE, if the given shape is a compound of blocks.
12402                 If theCompound is not valid, prints all discovered errors.
12403             """
12404             # Example: see GEOM_Spanner.py
12405             aTolerance = -1.0
12406             if theIsUseC1:
12407                 aTolerance = theAngTolerance
12408             (IsValid, BCErrors) = self.BlocksOp.CheckCompoundOfBlocks(theCompound, aTolerance)
12409             RaiseIfFailed("CheckCompoundOfBlocks", self.BlocksOp)
12410             if IsValid == 0:
12411                 Descr = self.BlocksOp.PrintBCErrors(theCompound, BCErrors)
12412                 print Descr
12413             return IsValid
12414
12415         ## Retrieve all non blocks solids and faces from \a theShape.
12416         #  @param theShape The shape to explore.
12417         #  @param theIsUseC1 Flag to check if there are 4 bounds on a face
12418         #         taking into account C1 continuity.
12419         #  @param theAngTolerance the angular tolerance to check if two neighbor
12420         #         edges are codirectional in the common vertex with this
12421         #         tolerance. This parameter is used only if
12422         #         <VAR>theIsUseC1</VAR> is set to True.
12423         #  @param theName Object name; when specified, this parameter is used
12424         #         for result publication in the study. Otherwise, if automatic
12425         #         publication is switched on, default value is used for result name.
12426         #
12427         #  @return A tuple of two GEOM_Objects. The first object is a group of all
12428         #          non block solids (= not 6 faces, or with 6 faces, but with the
12429         #          presence of non-quadrangular faces). The second object is a
12430         #          group of all non quadrangular faces (= faces with more then
12431         #          1 wire or, if <VAR>theIsUseC1</VAR> is set to True, faces
12432         #          with 1 wire with not 4 edges that do not form 4 bounds of
12433         #          C1 continuity).
12434         #
12435         #  @ref tui_get_non_blocks_page "Example 1"
12436         #  \n @ref swig_GetNonBlocks "Example 2"
12437         @ManageTransactions("BlocksOp")
12438         def GetNonBlocks (self, theShape, theIsUseC1 = False,
12439                           theAngTolerance = 1.e-12, theName=None):
12440             """
12441             Retrieve all non blocks solids and faces from theShape.
12442
12443             Parameters:
12444                 theShape The shape to explore.
12445                 theIsUseC1 Flag to check if there are 4 bounds on a face
12446                            taking into account C1 continuity.
12447                 theAngTolerance the angular tolerance to check if two neighbor
12448                            edges are codirectional in the common vertex with this
12449                            tolerance. This parameter is used only if
12450                            theIsUseC1 is set to True.
12451                 theName Object name; when specified, this parameter is used
12452                         for result publication in the study. Otherwise, if automatic
12453                         publication is switched on, default value is used for result name.
12454
12455             Returns:
12456                 A tuple of two GEOM_Objects. The first object is a group of all
12457                 non block solids (= not 6 faces, or with 6 faces, but with the
12458                 presence of non-quadrangular faces). The second object is a
12459                 group of all non quadrangular faces (= faces with more then
12460                 1 wire or, if <VAR>theIsUseC1</VAR> is set to True, faces
12461                 with 1 wire with not 4 edges that do not form 4 bounds of
12462                 C1 continuity).
12463
12464             Usage:
12465                 (res_sols, res_faces) = geompy.GetNonBlocks(myShape1)
12466             """
12467             # Example: see GEOM_Spanner.py
12468             aTolerance = -1.0
12469             if theIsUseC1:
12470                 aTolerance = theAngTolerance
12471             aTuple = self.BlocksOp.GetNonBlocks(theShape, aTolerance)
12472             RaiseIfFailed("GetNonBlocks", self.BlocksOp)
12473             self._autoPublish(aTuple, theName, ("groupNonHexas", "groupNonQuads"))
12474             return aTuple
12475
12476         ## Remove all seam and degenerated edges from \a theShape.
12477         #  Unite faces and edges, sharing one surface. It means that
12478         #  this faces must have references to one C++ surface object (handle).
12479         #  @param theShape The compound or single solid to remove irregular edges from.
12480         #  @param doUnionFaces If True, then unite faces. If False (the default value),
12481         #         do not unite faces.
12482         #  @param theName Object name; when specified, this parameter is used
12483         #         for result publication in the study. Otherwise, if automatic
12484         #         publication is switched on, default value is used for result name.
12485         #
12486         #  @return Improved shape.
12487         #
12488         #  @ref swig_RemoveExtraEdges "Example"
12489         @ManageTransactions("BlocksOp")
12490         def RemoveExtraEdges(self, theShape, doUnionFaces=False, theName=None):
12491             """
12492             Remove all seam and degenerated edges from theShape.
12493             Unite faces and edges, sharing one surface. It means that
12494             this faces must have references to one C++ surface object (handle).
12495
12496             Parameters:
12497                 theShape The compound or single solid to remove irregular edges from.
12498                 doUnionFaces If True, then unite faces. If False (the default value),
12499                              do not unite faces.
12500                 theName Object name; when specified, this parameter is used
12501                         for result publication in the study. Otherwise, if automatic
12502                         publication is switched on, default value is used for result name.
12503
12504             Returns:
12505                 Improved shape.
12506             """
12507             # Example: see GEOM_TestOthers.py
12508             nbFacesOptimum = -1 # -1 means do not unite faces
12509             if doUnionFaces is True: nbFacesOptimum = 0 # 0 means unite faces
12510             anObj = self.BlocksOp.RemoveExtraEdges(theShape, nbFacesOptimum)
12511             RaiseIfFailed("RemoveExtraEdges", self.BlocksOp)
12512             self._autoPublish(anObj, theName, "removeExtraEdges")
12513             return anObj
12514
12515         ## Performs union faces of \a theShape
12516         #  Unite faces sharing one surface. It means that
12517         #  these faces must have references to one C++ surface object (handle).
12518         #  @param theShape The compound or single solid that contains faces
12519         #         to perform union.
12520         #  @param theName Object name; when specified, this parameter is used
12521         #         for result publication in the study. Otherwise, if automatic
12522         #         publication is switched on, default value is used for result name.
12523         #
12524         #  @return Improved shape.
12525         #
12526         #  @ref swig_UnionFaces "Example"
12527         @ManageTransactions("BlocksOp")
12528         def UnionFaces(self, theShape, theName=None):
12529             """
12530             Performs union faces of theShape.
12531             Unite faces sharing one surface. It means that
12532             these faces must have references to one C++ surface object (handle).
12533
12534             Parameters:
12535                 theShape The compound or single solid that contains faces
12536                          to perform union.
12537                 theName Object name; when specified, this parameter is used
12538                         for result publication in the study. Otherwise, if automatic
12539                         publication is switched on, default value is used for result name.
12540
12541             Returns:
12542                 Improved shape.
12543             """
12544             # Example: see GEOM_TestOthers.py
12545             anObj = self.BlocksOp.UnionFaces(theShape)
12546             RaiseIfFailed("UnionFaces", self.BlocksOp)
12547             self._autoPublish(anObj, theName, "unionFaces")
12548             return anObj
12549
12550         ## Check, if the given shape is a blocks compound.
12551         #  Fix all detected errors.
12552         #    \note Single block can be also fixed by this method.
12553         #  @param theShape The compound to check and improve.
12554         #  @param theName Object name; when specified, this parameter is used
12555         #         for result publication in the study. Otherwise, if automatic
12556         #         publication is switched on, default value is used for result name.
12557         #
12558         #  @return Improved compound.
12559         #
12560         #  @ref swig_CheckAndImprove "Example"
12561         @ManageTransactions("BlocksOp")
12562         def CheckAndImprove(self, theShape, theName=None):
12563             """
12564             Check, if the given shape is a blocks compound.
12565             Fix all detected errors.
12566
12567             Note:
12568                 Single block can be also fixed by this method.
12569
12570             Parameters:
12571                 theShape The compound to check and improve.
12572                 theName Object name; when specified, this parameter is used
12573                         for result publication in the study. Otherwise, if automatic
12574                         publication is switched on, default value is used for result name.
12575
12576             Returns:
12577                 Improved compound.
12578             """
12579             # Example: see GEOM_TestOthers.py
12580             anObj = self.BlocksOp.CheckAndImprove(theShape)
12581             RaiseIfFailed("CheckAndImprove", self.BlocksOp)
12582             self._autoPublish(anObj, theName, "improved")
12583             return anObj
12584
12585         # end of l4_blocks_measure
12586         ## @}
12587
12588         ## @addtogroup l3_blocks_op
12589         ## @{
12590
12591         ## Get all the blocks, contained in the given compound.
12592         #  @param theCompound The compound to explode.
12593         #  @param theMinNbFaces If solid has lower number of faces, it is not a block.
12594         #  @param theMaxNbFaces If solid has higher number of faces, it is not a block.
12595         #  @param theName Object name; when specified, this parameter is used
12596         #         for result publication in the study. Otherwise, if automatic
12597         #         publication is switched on, default value is used for result name.
12598         #
12599         #  @note If theMaxNbFaces = 0, the maximum number of faces is not restricted.
12600         #
12601         #  @return List of GEOM.GEOM_Object, containing the retrieved blocks.
12602         #
12603         #  @ref tui_explode_on_blocks "Example 1"
12604         #  \n @ref swig_MakeBlockExplode "Example 2"
12605         @ManageTransactions("BlocksOp")
12606         def MakeBlockExplode(self, theCompound, theMinNbFaces, theMaxNbFaces, theName=None):
12607             """
12608             Get all the blocks, contained in the given compound.
12609
12610             Parameters:
12611                 theCompound The compound to explode.
12612                 theMinNbFaces If solid has lower number of faces, it is not a block.
12613                 theMaxNbFaces If solid has higher number of faces, it is not a block.
12614                 theName Object name; when specified, this parameter is used
12615                         for result publication in the study. Otherwise, if automatic
12616                         publication is switched on, default value is used for result name.
12617
12618             Note:
12619                 If theMaxNbFaces = 0, the maximum number of faces is not restricted.
12620
12621             Returns:
12622                 List of GEOM.GEOM_Object, containing the retrieved blocks.
12623             """
12624             # Example: see GEOM_TestOthers.py
12625             theMinNbFaces,theMaxNbFaces,Parameters = ParseParameters(theMinNbFaces,theMaxNbFaces)
12626             aList = self.BlocksOp.ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces)
12627             RaiseIfFailed("ExplodeCompoundOfBlocks", self.BlocksOp)
12628             for anObj in aList:
12629                 anObj.SetParameters(Parameters)
12630                 pass
12631             self._autoPublish(aList, theName, "block")
12632             return aList
12633
12634         ## Find block, containing the given point inside its volume or on boundary.
12635         #  @param theCompound Compound, to find block in.
12636         #  @param thePoint Point, close to the desired block. If the point lays on
12637         #         boundary between some blocks, we return block with nearest center.
12638         #  @param theName Object name; when specified, this parameter is used
12639         #         for result publication in the study. Otherwise, if automatic
12640         #         publication is switched on, default value is used for result name.
12641         #
12642         #  @return New GEOM.GEOM_Object, containing the found block.
12643         #
12644         #  @ref swig_todo "Example"
12645         @ManageTransactions("BlocksOp")
12646         def GetBlockNearPoint(self, theCompound, thePoint, theName=None):
12647             """
12648             Find block, containing the given point inside its volume or on boundary.
12649
12650             Parameters:
12651                 theCompound Compound, to find block in.
12652                 thePoint Point, close to the desired block. If the point lays on
12653                          boundary between some blocks, we return block with nearest center.
12654                 theName Object name; when specified, this parameter is used
12655                         for result publication in the study. Otherwise, if automatic
12656                         publication is switched on, default value is used for result name.
12657
12658             Returns:
12659                 New GEOM.GEOM_Object, containing the found block.
12660             """
12661             # Example: see GEOM_Spanner.py
12662             anObj = self.BlocksOp.GetBlockNearPoint(theCompound, thePoint)
12663             RaiseIfFailed("GetBlockNearPoint", self.BlocksOp)
12664             self._autoPublish(anObj, theName, "block")
12665             return anObj
12666
12667         ## Find block, containing all the elements, passed as the parts, or maximum quantity of them.
12668         #  @param theCompound Compound, to find block in.
12669         #  @param theParts List of faces and/or edges and/or vertices to be parts of the found block.
12670         #  @param theName Object name; when specified, this parameter is used
12671         #         for result publication in the study. Otherwise, if automatic
12672         #         publication is switched on, default value is used for result name.
12673         #
12674         #  @return New GEOM.GEOM_Object, containing the found block.
12675         #
12676         #  @ref swig_GetBlockByParts "Example"
12677         @ManageTransactions("BlocksOp")
12678         def GetBlockByParts(self, theCompound, theParts, theName=None):
12679             """
12680              Find block, containing all the elements, passed as the parts, or maximum quantity of them.
12681
12682              Parameters:
12683                 theCompound Compound, to find block in.
12684                 theParts List of faces and/or edges and/or vertices to be parts of the found block.
12685                 theName Object name; when specified, this parameter is used
12686                         for result publication in the study. Otherwise, if automatic
12687                         publication is switched on, default value is used for result name.
12688
12689             Returns:
12690                 New GEOM_Object, containing the found block.
12691             """
12692             # Example: see GEOM_TestOthers.py
12693             anObj = self.BlocksOp.GetBlockByParts(theCompound, theParts)
12694             RaiseIfFailed("GetBlockByParts", self.BlocksOp)
12695             self._autoPublish(anObj, theName, "block")
12696             return anObj
12697
12698         ## Return all blocks, containing all the elements, passed as the parts.
12699         #  @param theCompound Compound, to find blocks in.
12700         #  @param theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
12701         #  @param theName Object name; when specified, this parameter is used
12702         #         for result publication in the study. Otherwise, if automatic
12703         #         publication is switched on, default value is used for result name.
12704         #
12705         #  @return List of GEOM.GEOM_Object, containing the found blocks.
12706         #
12707         #  @ref swig_todo "Example"
12708         @ManageTransactions("BlocksOp")
12709         def GetBlocksByParts(self, theCompound, theParts, theName=None):
12710             """
12711             Return all blocks, containing all the elements, passed as the parts.
12712
12713             Parameters:
12714                 theCompound Compound, to find blocks in.
12715                 theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
12716                 theName Object name; when specified, this parameter is used
12717                         for result publication in the study. Otherwise, if automatic
12718                         publication is switched on, default value is used for result name.
12719
12720             Returns:
12721                 List of GEOM.GEOM_Object, containing the found blocks.
12722             """
12723             # Example: see GEOM_Spanner.py
12724             aList = self.BlocksOp.GetBlocksByParts(theCompound, theParts)
12725             RaiseIfFailed("GetBlocksByParts", self.BlocksOp)
12726             self._autoPublish(aList, theName, "block")
12727             return aList
12728
12729         ## Multi-transformate block and glue the result.
12730         #  Transformation is defined so, as to superpose direction faces.
12731         #  @param Block Hexahedral solid to be multi-transformed.
12732         #  @param DirFace1 ID of First direction face.
12733         #  @param DirFace2 ID of Second direction face.
12734         #  @param NbTimes Quantity of transformations to be done.
12735         #  @param theName Object name; when specified, this parameter is used
12736         #         for result publication in the study. Otherwise, if automatic
12737         #         publication is switched on, default value is used for result name.
12738         #
12739         #  @note Unique ID of sub-shape can be obtained, using method GetSubShapeID().
12740         #
12741         #  @return New GEOM.GEOM_Object, containing the result shape.
12742         #
12743         #  @ref tui_multi_transformation "Example"
12744         @ManageTransactions("BlocksOp")
12745         def MakeMultiTransformation1D(self, Block, DirFace1, DirFace2, NbTimes, theName=None):
12746             """
12747             Multi-transformate block and glue the result.
12748             Transformation is defined so, as to superpose direction faces.
12749
12750             Parameters:
12751                 Block Hexahedral solid to be multi-transformed.
12752                 DirFace1 ID of First direction face.
12753                 DirFace2 ID of Second direction face.
12754                 NbTimes Quantity of transformations to be done.
12755                 theName Object name; when specified, this parameter is used
12756                         for result publication in the study. Otherwise, if automatic
12757                         publication is switched on, default value is used for result name.
12758
12759             Note:
12760                 Unique ID of sub-shape can be obtained, using method GetSubShapeID().
12761
12762             Returns:
12763                 New GEOM.GEOM_Object, containing the result shape.
12764             """
12765             # Example: see GEOM_Spanner.py
12766             DirFace1,DirFace2,NbTimes,Parameters = ParseParameters(DirFace1,DirFace2,NbTimes)
12767             anObj = self.BlocksOp.MakeMultiTransformation1D(Block, DirFace1, DirFace2, NbTimes)
12768             RaiseIfFailed("MakeMultiTransformation1D", self.BlocksOp)
12769             anObj.SetParameters(Parameters)
12770             self._autoPublish(anObj, theName, "transformed")
12771             return anObj
12772
12773         ## Multi-transformate block and glue the result.
12774         #  @param Block Hexahedral solid to be multi-transformed.
12775         #  @param DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
12776         #  @param DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
12777         #  @param NbTimesU,NbTimesV Quantity of transformations to be done.
12778         #  @param theName Object name; when specified, this parameter is used
12779         #         for result publication in the study. Otherwise, if automatic
12780         #         publication is switched on, default value is used for result name.
12781         #
12782         #  @return New GEOM.GEOM_Object, containing the result shape.
12783         #
12784         #  @ref tui_multi_transformation "Example"
12785         @ManageTransactions("BlocksOp")
12786         def MakeMultiTransformation2D(self, Block, DirFace1U, DirFace2U, NbTimesU,
12787                                       DirFace1V, DirFace2V, NbTimesV, theName=None):
12788             """
12789             Multi-transformate block and glue the result.
12790
12791             Parameters:
12792                 Block Hexahedral solid to be multi-transformed.
12793                 DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
12794                 DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
12795                 NbTimesU,NbTimesV Quantity of transformations to be done.
12796                 theName Object name; when specified, this parameter is used
12797                         for result publication in the study. Otherwise, if automatic
12798                         publication is switched on, default value is used for result name.
12799
12800             Returns:
12801                 New GEOM.GEOM_Object, containing the result shape.
12802             """
12803             # Example: see GEOM_Spanner.py
12804             DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV,Parameters = ParseParameters(
12805               DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV)
12806             anObj = self.BlocksOp.MakeMultiTransformation2D(Block, DirFace1U, DirFace2U, NbTimesU,
12807                                                             DirFace1V, DirFace2V, NbTimesV)
12808             RaiseIfFailed("MakeMultiTransformation2D", self.BlocksOp)
12809             anObj.SetParameters(Parameters)
12810             self._autoPublish(anObj, theName, "transformed")
12811             return anObj
12812
12813         ## Build all possible propagation groups.
12814         #  Propagation group is a set of all edges, opposite to one (main)
12815         #  edge of this group directly or through other opposite edges.
12816         #  Notion of Opposite Edge make sense only on quadrangle face.
12817         #  @param theShape Shape to build propagation groups on.
12818         #  @param theName Object name; when specified, this parameter is used
12819         #         for result publication in the study. Otherwise, if automatic
12820         #         publication is switched on, default value is used for result name.
12821         #
12822         #  @return List of GEOM.GEOM_Object, each of them is a propagation group.
12823         #
12824         #  @ref swig_Propagate "Example"
12825         @ManageTransactions("BlocksOp")
12826         def Propagate(self, theShape, theName=None):
12827             """
12828             Build all possible propagation groups.
12829             Propagation group is a set of all edges, opposite to one (main)
12830             edge of this group directly or through other opposite edges.
12831             Notion of Opposite Edge make sense only on quadrangle face.
12832
12833             Parameters:
12834                 theShape Shape to build propagation groups on.
12835                 theName Object name; when specified, this parameter is used
12836                         for result publication in the study. Otherwise, if automatic
12837                         publication is switched on, default value is used for result name.
12838
12839             Returns:
12840                 List of GEOM.GEOM_Object, each of them is a propagation group.
12841             """
12842             # Example: see GEOM_TestOthers.py
12843             listChains = self.BlocksOp.Propagate(theShape)
12844             RaiseIfFailed("Propagate", self.BlocksOp)
12845             self._autoPublish(listChains, theName, "propagate")
12846             return listChains
12847
12848         # end of l3_blocks_op
12849         ## @}
12850
12851         ## @addtogroup l3_groups
12852         ## @{
12853
12854         ## Creates a new group which will store sub-shapes of theMainShape
12855         #  @param theMainShape is a GEOM object on which the group is selected
12856         #  @param theShapeType defines a shape type of the group (see GEOM::shape_type)
12857         #  @param theName Object name; when specified, this parameter is used
12858         #         for result publication in the study. Otherwise, if automatic
12859         #         publication is switched on, default value is used for result name.
12860         #
12861         #  @return a newly created GEOM group (GEOM.GEOM_Object)
12862         #
12863         #  @ref tui_working_with_groups_page "Example 1"
12864         #  \n @ref swig_CreateGroup "Example 2"
12865         @ManageTransactions("GroupOp")
12866         def CreateGroup(self, theMainShape, theShapeType, theName=None):
12867             """
12868             Creates a new group which will store sub-shapes of theMainShape
12869
12870             Parameters:
12871                theMainShape is a GEOM object on which the group is selected
12872                theShapeType defines a shape type of the group:"COMPOUND", "COMPSOLID",
12873                             "SOLID", "SHELL", "FACE", "WIRE", "EDGE", "VERTEX", "SHAPE".
12874                 theName Object name; when specified, this parameter is used
12875                         for result publication in the study. Otherwise, if automatic
12876                         publication is switched on, default value is used for result name.
12877
12878             Returns:
12879                a newly created GEOM group
12880
12881             Example of usage:
12882                 group = geompy.CreateGroup(Box, geompy.ShapeType["FACE"])
12883
12884             """
12885             # Example: see GEOM_TestOthers.py
12886             anObj = self.GroupOp.CreateGroup(theMainShape, theShapeType)
12887             RaiseIfFailed("CreateGroup", self.GroupOp)
12888             self._autoPublish(anObj, theName, "group")
12889             return anObj
12890
12891         ## Adds a sub-object with ID theSubShapeId to the group
12892         #  @param theGroup is a GEOM group to which the new sub-shape is added
12893         #  @param theSubShapeID is a sub-shape ID in the main object.
12894         #  \note Use method GetSubShapeID() to get an unique ID of the sub-shape
12895         #
12896         #  @ref tui_working_with_groups_page "Example"
12897         @ManageTransactions("GroupOp")
12898         def AddObject(self,theGroup, theSubShapeID):
12899             """
12900             Adds a sub-object with ID theSubShapeId to the group
12901
12902             Parameters:
12903                 theGroup       is a GEOM group to which the new sub-shape is added
12904                 theSubShapeID  is a sub-shape ID in the main object.
12905
12906             Note:
12907                 Use method GetSubShapeID() to get an unique ID of the sub-shape
12908             """
12909             # Example: see GEOM_TestOthers.py
12910             self.GroupOp.AddObject(theGroup, theSubShapeID)
12911             if self.GroupOp.GetErrorCode() != "PAL_ELEMENT_ALREADY_PRESENT":
12912                 RaiseIfFailed("AddObject", self.GroupOp)
12913                 pass
12914             pass
12915
12916         ## Removes a sub-object with ID \a theSubShapeId from the group
12917         #  @param theGroup is a GEOM group from which the new sub-shape is removed
12918         #  @param theSubShapeID is a sub-shape ID in the main object.
12919         #  \note Use method GetSubShapeID() to get an unique ID of the sub-shape
12920         #
12921         #  @ref tui_working_with_groups_page "Example"
12922         @ManageTransactions("GroupOp")
12923         def RemoveObject(self,theGroup, theSubShapeID):
12924             """
12925             Removes a sub-object with ID theSubShapeId from the group
12926
12927             Parameters:
12928                 theGroup is a GEOM group from which the new sub-shape is removed
12929                 theSubShapeID is a sub-shape ID in the main object.
12930
12931             Note:
12932                 Use method GetSubShapeID() to get an unique ID of the sub-shape
12933             """
12934             # Example: see GEOM_TestOthers.py
12935             self.GroupOp.RemoveObject(theGroup, theSubShapeID)
12936             RaiseIfFailed("RemoveObject", self.GroupOp)
12937             pass
12938
12939         ## Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12940         #  @param theGroup is a GEOM group to which the new sub-shapes are added.
12941         #  @param theSubShapes is a list of sub-shapes to be added.
12942         #
12943         #  @ref tui_working_with_groups_page "Example"
12944         @ManageTransactions("GroupOp")
12945         def UnionList (self,theGroup, theSubShapes):
12946             """
12947             Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12948
12949             Parameters:
12950                 theGroup is a GEOM group to which the new sub-shapes are added.
12951                 theSubShapes is a list of sub-shapes to be added.
12952             """
12953             # Example: see GEOM_TestOthers.py
12954             self.GroupOp.UnionList(theGroup, theSubShapes)
12955             RaiseIfFailed("UnionList", self.GroupOp)
12956             pass
12957
12958         ## Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12959         #  @param theGroup is a GEOM group to which the new sub-shapes are added.
12960         #  @param theSubShapes is a list of indices of sub-shapes to be added.
12961         #
12962         #  @ref swig_UnionIDs "Example"
12963         @ManageTransactions("GroupOp")
12964         def UnionIDs(self,theGroup, theSubShapes):
12965             """
12966             Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12967
12968             Parameters:
12969                 theGroup is a GEOM group to which the new sub-shapes are added.
12970                 theSubShapes is a list of indices of sub-shapes to be added.
12971             """
12972             # Example: see GEOM_TestOthers.py
12973             self.GroupOp.UnionIDs(theGroup, theSubShapes)
12974             RaiseIfFailed("UnionIDs", self.GroupOp)
12975             pass
12976
12977         ## Removes from the group all the given shapes. No errors, if some shapes are not included.
12978         #  @param theGroup is a GEOM group from which the sub-shapes are removed.
12979         #  @param theSubShapes is a list of sub-shapes to be removed.
12980         #
12981         #  @ref tui_working_with_groups_page "Example"
12982         @ManageTransactions("GroupOp")
12983         def DifferenceList (self,theGroup, theSubShapes):
12984             """
12985             Removes from the group all the given shapes. No errors, if some shapes are not included.
12986
12987             Parameters:
12988                 theGroup is a GEOM group from which the sub-shapes are removed.
12989                 theSubShapes is a list of sub-shapes to be removed.
12990             """
12991             # Example: see GEOM_TestOthers.py
12992             self.GroupOp.DifferenceList(theGroup, theSubShapes)
12993             RaiseIfFailed("DifferenceList", self.GroupOp)
12994             pass
12995
12996         ## Removes from the group all the given shapes. No errors, if some shapes are not included.
12997         #  @param theGroup is a GEOM group from which the sub-shapes are removed.
12998         #  @param theSubShapes is a list of indices of sub-shapes to be removed.
12999         #
13000         #  @ref swig_DifferenceIDs "Example"
13001         @ManageTransactions("GroupOp")
13002         def DifferenceIDs(self,theGroup, theSubShapes):
13003             """
13004             Removes from the group all the given shapes. No errors, if some shapes are not included.
13005
13006             Parameters:
13007                 theGroup is a GEOM group from which the sub-shapes are removed.
13008                 theSubShapes is a list of indices of sub-shapes to be removed.
13009             """
13010             # Example: see GEOM_TestOthers.py
13011             self.GroupOp.DifferenceIDs(theGroup, theSubShapes)
13012             RaiseIfFailed("DifferenceIDs", self.GroupOp)
13013             pass
13014
13015         ## Union of two groups.
13016         #  New group is created. It will contain all entities
13017         #  which are present in groups theGroup1 and theGroup2.
13018         #  @param theGroup1, theGroup2 are the initial GEOM groups
13019         #                              to create the united group from.
13020         #  @param theName Object name; when specified, this parameter is used
13021         #         for result publication in the study. Otherwise, if automatic
13022         #         publication is switched on, default value is used for result name.
13023         #
13024         #  @return a newly created GEOM group.
13025         #
13026         #  @ref tui_union_groups_anchor "Example"
13027         @ManageTransactions("GroupOp")
13028         def UnionGroups (self, theGroup1, theGroup2, theName=None):
13029             """
13030             Union of two groups.
13031             New group is created. It will contain all entities
13032             which are present in groups theGroup1 and theGroup2.
13033
13034             Parameters:
13035                 theGroup1, theGroup2 are the initial GEOM groups
13036                                      to create the united group from.
13037                 theName Object name; when specified, this parameter is used
13038                         for result publication in the study. Otherwise, if automatic
13039                         publication is switched on, default value is used for result name.
13040
13041             Returns:
13042                 a newly created GEOM group.
13043             """
13044             # Example: see GEOM_TestOthers.py
13045             aGroup = self.GroupOp.UnionGroups(theGroup1, theGroup2)
13046             RaiseIfFailed("UnionGroups", self.GroupOp)
13047             self._autoPublish(aGroup, theName, "group")
13048             return aGroup
13049
13050         ## Intersection of two groups.
13051         #  New group is created. It will contain only those entities
13052         #  which are present in both groups theGroup1 and theGroup2.
13053         #  @param theGroup1, theGroup2 are the initial GEOM groups to get common part of.
13054         #  @param theName Object name; when specified, this parameter is used
13055         #         for result publication in the study. Otherwise, if automatic
13056         #         publication is switched on, default value is used for result name.
13057         #
13058         #  @return a newly created GEOM group.
13059         #
13060         #  @ref tui_intersect_groups_anchor "Example"
13061         @ManageTransactions("GroupOp")
13062         def IntersectGroups (self, theGroup1, theGroup2, theName=None):
13063             """
13064             Intersection of two groups.
13065             New group is created. It will contain only those entities
13066             which are present in both groups theGroup1 and theGroup2.
13067
13068             Parameters:
13069                 theGroup1, theGroup2 are the initial GEOM groups to get common part of.
13070                 theName Object name; when specified, this parameter is used
13071                         for result publication in the study. Otherwise, if automatic
13072                         publication is switched on, default value is used for result name.
13073
13074             Returns:
13075                 a newly created GEOM group.
13076             """
13077             # Example: see GEOM_TestOthers.py
13078             aGroup = self.GroupOp.IntersectGroups(theGroup1, theGroup2)
13079             RaiseIfFailed("IntersectGroups", self.GroupOp)
13080             self._autoPublish(aGroup, theName, "group")
13081             return aGroup
13082
13083         ## Cut of two groups.
13084         #  New group is created. It will contain entities which are
13085         #  present in group theGroup1 but are not present in group theGroup2.
13086         #  @param theGroup1 is a GEOM group to include elements of.
13087         #  @param theGroup2 is a GEOM group to exclude elements of.
13088         #  @param theName Object name; when specified, this parameter is used
13089         #         for result publication in the study. Otherwise, if automatic
13090         #         publication is switched on, default value is used for result name.
13091         #
13092         #  @return a newly created GEOM group.
13093         #
13094         #  @ref tui_cut_groups_anchor "Example"
13095         @ManageTransactions("GroupOp")
13096         def CutGroups (self, theGroup1, theGroup2, theName=None):
13097             """
13098             Cut of two groups.
13099             New group is created. It will contain entities which are
13100             present in group theGroup1 but are not present in group theGroup2.
13101
13102             Parameters:
13103                 theGroup1 is a GEOM group to include elements of.
13104                 theGroup2 is a GEOM group to exclude elements of.
13105                 theName Object name; when specified, this parameter is used
13106                         for result publication in the study. Otherwise, if automatic
13107                         publication is switched on, default value is used for result name.
13108
13109             Returns:
13110                 a newly created GEOM group.
13111             """
13112             # Example: see GEOM_TestOthers.py
13113             aGroup = self.GroupOp.CutGroups(theGroup1, theGroup2)
13114             RaiseIfFailed("CutGroups", self.GroupOp)
13115             self._autoPublish(aGroup, theName, "group")
13116             return aGroup
13117
13118         ## Union of list of groups.
13119         #  New group is created. It will contain all entities that are
13120         #  present in groups listed in theGList.
13121         #  @param theGList is a list of GEOM groups to create the united group from.
13122         #  @param theName Object name; when specified, this parameter is used
13123         #         for result publication in the study. Otherwise, if automatic
13124         #         publication is switched on, default value is used for result name.
13125         #
13126         #  @return a newly created GEOM group.
13127         #
13128         #  @ref tui_union_groups_anchor "Example"
13129         @ManageTransactions("GroupOp")
13130         def UnionListOfGroups (self, theGList, theName=None):
13131             """
13132             Union of list of groups.
13133             New group is created. It will contain all entities that are
13134             present in groups listed in theGList.
13135
13136             Parameters:
13137                 theGList is a list of GEOM groups to create the united group from.
13138                 theName Object name; when specified, this parameter is used
13139                         for result publication in the study. Otherwise, if automatic
13140                         publication is switched on, default value is used for result name.
13141
13142             Returns:
13143                 a newly created GEOM group.
13144             """
13145             # Example: see GEOM_TestOthers.py
13146             aGroup = self.GroupOp.UnionListOfGroups(theGList)
13147             RaiseIfFailed("UnionListOfGroups", self.GroupOp)
13148             self._autoPublish(aGroup, theName, "group")
13149             return aGroup
13150
13151         ## Cut of lists of groups.
13152         #  New group is created. It will contain only entities
13153         #  which are present in groups listed in theGList.
13154         #  @param theGList is a list of GEOM groups to include elements of.
13155         #  @param theName Object name; when specified, this parameter is used
13156         #         for result publication in the study. Otherwise, if automatic
13157         #         publication is switched on, default value is used for result name.
13158         #
13159         #  @return a newly created GEOM group.
13160         #
13161         #  @ref tui_intersect_groups_anchor "Example"
13162         @ManageTransactions("GroupOp")
13163         def IntersectListOfGroups (self, theGList, theName=None):
13164             """
13165             Cut of lists of groups.
13166             New group is created. It will contain only entities
13167             which are present in groups listed in theGList.
13168
13169             Parameters:
13170                 theGList is a list of GEOM groups to include elements of.
13171                 theName Object name; when specified, this parameter is used
13172                         for result publication in the study. Otherwise, if automatic
13173                         publication is switched on, default value is used for result name.
13174
13175             Returns:
13176                 a newly created GEOM group.
13177             """
13178             # Example: see GEOM_TestOthers.py
13179             aGroup = self.GroupOp.IntersectListOfGroups(theGList)
13180             RaiseIfFailed("IntersectListOfGroups", self.GroupOp)
13181             self._autoPublish(aGroup, theName, "group")
13182             return aGroup
13183
13184         ## Cut of lists of groups.
13185         #  New group is created. It will contain only entities
13186         #  which are present in groups listed in theGList1 but
13187         #  are not present in groups from theGList2.
13188         #  @param theGList1 is a list of GEOM groups to include elements of.
13189         #  @param theGList2 is a list of GEOM groups to exclude elements of.
13190         #  @param theName Object name; when specified, this parameter is used
13191         #         for result publication in the study. Otherwise, if automatic
13192         #         publication is switched on, default value is used for result name.
13193         #
13194         #  @return a newly created GEOM group.
13195         #
13196         #  @ref tui_cut_groups_anchor "Example"
13197         @ManageTransactions("GroupOp")
13198         def CutListOfGroups (self, theGList1, theGList2, theName=None):
13199             """
13200             Cut of lists of groups.
13201             New group is created. It will contain only entities
13202             which are present in groups listed in theGList1 but
13203             are not present in groups from theGList2.
13204
13205             Parameters:
13206                 theGList1 is a list of GEOM groups to include elements of.
13207                 theGList2 is a list of GEOM groups to exclude elements of.
13208                 theName Object name; when specified, this parameter is used
13209                         for result publication in the study. Otherwise, if automatic
13210                         publication is switched on, default value is used for result name.
13211
13212             Returns:
13213                 a newly created GEOM group.
13214             """
13215             # Example: see GEOM_TestOthers.py
13216             aGroup = self.GroupOp.CutListOfGroups(theGList1, theGList2)
13217             RaiseIfFailed("CutListOfGroups", self.GroupOp)
13218             self._autoPublish(aGroup, theName, "group")
13219             return aGroup
13220
13221         ## Returns a list of sub-objects ID stored in the group
13222         #  @param theGroup is a GEOM group for which a list of IDs is requested
13223         #
13224         #  @ref swig_GetObjectIDs "Example"
13225         @ManageTransactions("GroupOp")
13226         def GetObjectIDs(self,theGroup):
13227             """
13228             Returns a list of sub-objects ID stored in the group
13229
13230             Parameters:
13231                 theGroup is a GEOM group for which a list of IDs is requested
13232             """
13233             # Example: see GEOM_TestOthers.py
13234             ListIDs = self.GroupOp.GetObjects(theGroup)
13235             RaiseIfFailed("GetObjects", self.GroupOp)
13236             return ListIDs
13237
13238         ## Returns a type of sub-objects stored in the group
13239         #  @param theGroup is a GEOM group which type is returned.
13240         #
13241         #  @ref swig_GetType "Example"
13242         @ManageTransactions("GroupOp")
13243         def GetType(self,theGroup):
13244             """
13245             Returns a type of sub-objects stored in the group
13246
13247             Parameters:
13248                 theGroup is a GEOM group which type is returned.
13249             """
13250             # Example: see GEOM_TestOthers.py
13251             aType = self.GroupOp.GetType(theGroup)
13252             RaiseIfFailed("GetType", self.GroupOp)
13253             return aType
13254
13255         ## Convert a type of geom object from id to string value
13256         #  @param theId is a GEOM object type id.
13257         #  @return type of geom object (POINT, VECTOR, PLANE, LINE, TORUS, ... )
13258         #  @ref swig_GetType "Example"
13259         def ShapeIdToType(self, theId):
13260             """
13261             Convert a type of geom object from id to string value
13262
13263             Parameters:
13264                 theId is a GEOM object type id.
13265
13266             Returns:
13267                 type of geom object (POINT, VECTOR, PLANE, LINE, TORUS, ... )
13268             """
13269             if theId == 0:
13270                 return "COPY"
13271             if theId == 1:
13272                 return "IMPORT"
13273             if theId == 2:
13274                 return "POINT"
13275             if theId == 3:
13276                 return "VECTOR"
13277             if theId == 4:
13278                 return "PLANE"
13279             if theId == 5:
13280                 return "LINE"
13281             if theId == 6:
13282                 return "TORUS"
13283             if theId == 7:
13284                 return "BOX"
13285             if theId == 8:
13286                 return "CYLINDER"
13287             if theId == 9:
13288                 return "CONE"
13289             if theId == 10:
13290                 return "SPHERE"
13291             if theId == 11:
13292                 return "PRISM"
13293             if theId == 12:
13294                 return "REVOLUTION"
13295             if theId == 13:
13296                 return "BOOLEAN"
13297             if theId == 14:
13298                 return "PARTITION"
13299             if theId == 15:
13300                 return "POLYLINE"
13301             if theId == 16:
13302                 return "CIRCLE"
13303             if theId == 17:
13304                 return "SPLINE"
13305             if theId == 18:
13306                 return "ELLIPSE"
13307             if theId == 19:
13308                 return "CIRC_ARC"
13309             if theId == 20:
13310                 return "FILLET"
13311             if theId == 21:
13312                 return "CHAMFER"
13313             if theId == 22:
13314                 return "EDGE"
13315             if theId == 23:
13316                 return "WIRE"
13317             if theId == 24:
13318                 return "FACE"
13319             if theId == 25:
13320                 return "SHELL"
13321             if theId == 26:
13322                 return "SOLID"
13323             if theId == 27:
13324                 return "COMPOUND"
13325             if theId == 28:
13326                 return "SUBSHAPE"
13327             if theId == 29:
13328                 return "PIPE"
13329             if theId == 30:
13330                 return "ARCHIMEDE"
13331             if theId == 31:
13332                 return "FILLING"
13333             if theId == 32:
13334                 return "EXPLODE"
13335             if theId == 33:
13336                 return "GLUED"
13337             if theId == 34:
13338                 return "SKETCHER"
13339             if theId == 35:
13340                 return "CDG"
13341             if theId == 36:
13342                 return "FREE_BOUNDS"
13343             if theId == 37:
13344                 return "GROUP"
13345             if theId == 38:
13346                 return "BLOCK"
13347             if theId == 39:
13348                 return "MARKER"
13349             if theId == 40:
13350                 return "THRUSECTIONS"
13351             if theId == 41:
13352                 return "COMPOUNDFILTER"
13353             if theId == 42:
13354                 return "SHAPES_ON_SHAPE"
13355             if theId == 43:
13356                 return "ELLIPSE_ARC"
13357             if theId == 44:
13358                 return "3DSKETCHER"
13359             if theId == 45:
13360                 return "FILLET_2D"
13361             if theId == 46:
13362                 return "FILLET_1D"
13363             if theId == 201:
13364                 return "PIPETSHAPE"
13365             return "Shape Id not exist."
13366
13367         ## Returns a main shape associated with the group
13368         #  @param theGroup is a GEOM group for which a main shape object is requested
13369         #  @return a GEOM object which is a main shape for theGroup
13370         #
13371         #  @ref swig_GetMainShape "Example"
13372         @ManageTransactions("GroupOp")
13373         def GetMainShape(self,theGroup):
13374             """
13375             Returns a main shape associated with the group
13376
13377             Parameters:
13378                 theGroup is a GEOM group for which a main shape object is requested
13379
13380             Returns:
13381                 a GEOM object which is a main shape for theGroup
13382
13383             Example of usage: BoxCopy = geompy.GetMainShape(CreateGroup)
13384             """
13385             # Example: see GEOM_TestOthers.py
13386             anObj = self.GroupOp.GetMainShape(theGroup)
13387             RaiseIfFailed("GetMainShape", self.GroupOp)
13388             return anObj
13389
13390         ## Create group of edges of theShape, whose length is in range [min_length, max_length].
13391         #  If include_min/max == 0, edges with length == min/max_length will not be included in result.
13392         #  @param theShape given shape (see GEOM.GEOM_Object)
13393         #  @param min_length minimum length of edges of theShape
13394         #  @param max_length maximum length of edges of theShape
13395         #  @param include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13396         #  @param include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13397         #  @param theName Object name; when specified, this parameter is used
13398         #         for result publication in the study. Otherwise, if automatic
13399         #         publication is switched on, default value is used for result name.
13400         #
13401         #  @return a newly created GEOM group of edges
13402         #
13403         #  @@ref swig_todo "Example"
13404         def GetEdgesByLength (self, theShape, min_length, max_length, include_min = 1, include_max = 1, theName=None):
13405             """
13406             Create group of edges of theShape, whose length is in range [min_length, max_length].
13407             If include_min/max == 0, edges with length == min/max_length will not be included in result.
13408
13409             Parameters:
13410                 theShape given shape
13411                 min_length minimum length of edges of theShape
13412                 max_length maximum length of edges of theShape
13413                 include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13414                 include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13415                 theName Object name; when specified, this parameter is used
13416                         for result publication in the study. Otherwise, if automatic
13417                         publication is switched on, default value is used for result name.
13418
13419              Returns:
13420                 a newly created GEOM group of edges.
13421             """
13422             edges = self.SubShapeAll(theShape, self.ShapeType["EDGE"])
13423             edges_in_range = []
13424             for edge in edges:
13425                 Props = self.BasicProperties(edge)
13426                 if min_length <= Props[0] and Props[0] <= max_length:
13427                     if (not include_min) and (min_length == Props[0]):
13428                         skip = 1
13429                     else:
13430                         if (not include_max) and (Props[0] == max_length):
13431                             skip = 1
13432                         else:
13433                             edges_in_range.append(edge)
13434
13435             if len(edges_in_range) <= 0:
13436                 print "No edges found by given criteria"
13437                 return None
13438
13439             # note: auto-publishing is done in self.CreateGroup()
13440             group_edges = self.CreateGroup(theShape, self.ShapeType["EDGE"], theName)
13441             self.UnionList(group_edges, edges_in_range)
13442
13443             return group_edges
13444
13445         ## Create group of edges of selected shape, whose length is in range [min_length, max_length].
13446         #  If include_min/max == 0, edges with length == min/max_length will not be included in result.
13447         #  @param min_length minimum length of edges of selected shape
13448         #  @param max_length maximum length of edges of selected shape
13449         #  @param include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13450         #  @param include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13451         #  @return a newly created GEOM group of edges
13452         #  @ref swig_todo "Example"
13453         def SelectEdges (self, min_length, max_length, include_min = 1, include_max = 1):
13454             """
13455             Create group of edges of selected shape, whose length is in range [min_length, max_length].
13456             If include_min/max == 0, edges with length == min/max_length will not be included in result.
13457
13458             Parameters:
13459                 min_length minimum length of edges of selected shape
13460                 max_length maximum length of edges of selected shape
13461                 include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13462                 include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13463
13464              Returns:
13465                 a newly created GEOM group of edges.
13466             """
13467             nb_selected = sg.SelectedCount()
13468             if nb_selected < 1:
13469                 print "Select a shape before calling this function, please."
13470                 return 0
13471             if nb_selected > 1:
13472                 print "Only one shape must be selected"
13473                 return 0
13474
13475             id_shape = sg.getSelected(0)
13476             shape = IDToObject( id_shape )
13477
13478             group_edges = self.GetEdgesByLength(shape, min_length, max_length, include_min, include_max)
13479
13480             left_str  = " < "
13481             right_str = " < "
13482             if include_min: left_str  = " <= "
13483             if include_max: right_str  = " <= "
13484
13485             self.addToStudyInFather(shape, group_edges, "Group of edges with " + `min_length`
13486                                     + left_str + "length" + right_str + `max_length`)
13487
13488             sg.updateObjBrowser(True)
13489
13490             return group_edges
13491
13492         # end of l3_groups
13493         ## @}
13494
13495         #@@ insert new functions before this line @@ do not remove this line @@#
13496
13497         ## Create a copy of the given object
13498         #
13499         #  @param theOriginal geometry object for copy
13500         #  @param theName Object name; when specified, this parameter is used
13501         #         for result publication in the study. Otherwise, if automatic
13502         #         publication is switched on, default value is used for result name.
13503         #
13504         #  @return New GEOM_Object, containing the copied shape.
13505         #
13506         #  @ingroup l1_geomBuilder_auxiliary
13507         #  @ref swig_MakeCopy "Example"
13508         @ManageTransactions("InsertOp")
13509         def MakeCopy(self, theOriginal, theName=None):
13510             """
13511             Create a copy of the given object
13512
13513             Parameters:
13514                 theOriginal geometry object for copy
13515                 theName Object name; when specified, this parameter is used
13516                         for result publication in the study. Otherwise, if automatic
13517                         publication is switched on, default value is used for result name.
13518
13519             Returns:
13520                 New GEOM_Object, containing the copied shape.
13521
13522             Example of usage: Copy = geompy.MakeCopy(Box)
13523             """
13524             # Example: see GEOM_TestAll.py
13525             anObj = self.InsertOp.MakeCopy(theOriginal)
13526             RaiseIfFailed("MakeCopy", self.InsertOp)
13527             self._autoPublish(anObj, theName, "copy")
13528             return anObj
13529
13530         ## Add Path to load python scripts from
13531         #  @param Path a path to load python scripts from
13532         #  @ingroup l1_geomBuilder_auxiliary
13533         def addPath(self,Path):
13534             """
13535             Add Path to load python scripts from
13536
13537             Parameters:
13538                 Path a path to load python scripts from
13539             """
13540             if (sys.path.count(Path) < 1):
13541                 sys.path.append(Path)
13542                 pass
13543             pass
13544
13545         ## Load marker texture from the file
13546         #  @param Path a path to the texture file
13547         #  @return unique texture identifier
13548         #  @ingroup l1_geomBuilder_auxiliary
13549         @ManageTransactions("InsertOp")
13550         def LoadTexture(self, Path):
13551             """
13552             Load marker texture from the file
13553
13554             Parameters:
13555                 Path a path to the texture file
13556
13557             Returns:
13558                 unique texture identifier
13559             """
13560             # Example: see GEOM_TestAll.py
13561             ID = self.InsertOp.LoadTexture(Path)
13562             RaiseIfFailed("LoadTexture", self.InsertOp)
13563             return ID
13564
13565         ## Get internal name of the object based on its study entry
13566         #  @note This method does not provide an unique identifier of the geometry object.
13567         #  @note This is internal function of GEOM component, though it can be used outside it for
13568         #  appropriate reason (e.g. for identification of geometry object).
13569         #  @param obj geometry object
13570         #  @return unique object identifier
13571         #  @ingroup l1_geomBuilder_auxiliary
13572         def getObjectID(self, obj):
13573             """
13574             Get internal name of the object based on its study entry.
13575             Note: this method does not provide an unique identifier of the geometry object.
13576             It is an internal function of GEOM component, though it can be used outside GEOM for
13577             appropriate reason (e.g. for identification of geometry object).
13578
13579             Parameters:
13580                 obj geometry object
13581
13582             Returns:
13583                 unique object identifier
13584             """
13585             ID = ""
13586             entry = salome.ObjectToID(obj)
13587             if entry is not None:
13588                 lst = entry.split(":")
13589                 if len(lst) > 0:
13590                     ID = lst[-1] # -1 means last item in the list
13591                     return "GEOM_" + ID
13592             return ID
13593
13594
13595
13596         ## Add marker texture. @a Width and @a Height parameters
13597         #  specify width and height of the texture in pixels.
13598         #  If @a RowData is @c True, @a Texture parameter should represent texture data
13599         #  packed into the byte array. If @a RowData is @c False (default), @a Texture
13600         #  parameter should be unpacked string, in which '1' symbols represent opaque
13601         #  pixels and '0' represent transparent pixels of the texture bitmap.
13602         #
13603         #  @param Width texture width in pixels
13604         #  @param Height texture height in pixels
13605         #  @param Texture texture data
13606         #  @param RowData if @c True, @a Texture data are packed in the byte stream
13607         #  @return unique texture identifier
13608         #  @ingroup l1_geomBuilder_auxiliary
13609         @ManageTransactions("InsertOp")
13610         def AddTexture(self, Width, Height, Texture, RowData=False):
13611             """
13612             Add marker texture. Width and Height parameters
13613             specify width and height of the texture in pixels.
13614             If RowData is True, Texture parameter should represent texture data
13615             packed into the byte array. If RowData is False (default), Texture
13616             parameter should be unpacked string, in which '1' symbols represent opaque
13617             pixels and '0' represent transparent pixels of the texture bitmap.
13618
13619             Parameters:
13620                 Width texture width in pixels
13621                 Height texture height in pixels
13622                 Texture texture data
13623                 RowData if True, Texture data are packed in the byte stream
13624
13625             Returns:
13626                 return unique texture identifier
13627             """
13628             if not RowData: Texture = PackData(Texture)
13629             ID = self.InsertOp.AddTexture(Width, Height, Texture)
13630             RaiseIfFailed("AddTexture", self.InsertOp)
13631             return ID
13632
13633         ## Transfer not topological data from one GEOM object to another.
13634         #
13635         #  @param theObjectFrom the source object of non-topological data
13636         #  @param theObjectTo the destination object of non-topological data
13637         #  @param theFindMethod method to search sub-shapes of theObjectFrom
13638         #         in shape theObjectTo. Possible values are: GEOM.FSM_GetInPlace,
13639         #         GEOM.FSM_GetInPlaceByHistory and GEOM.FSM_GetInPlace_Old.
13640         #         Other values of GEOM.find_shape_method are not supported.
13641         #
13642         #  @return True in case of success; False otherwise.
13643         #
13644         #  @ingroup l1_geomBuilder_auxiliary
13645         #
13646         #  @ref swig_TransferData "Example"
13647         @ManageTransactions("InsertOp")
13648         def TransferData(self, theObjectFrom, theObjectTo,
13649                          theFindMethod=GEOM.FSM_GetInPlace):
13650             """
13651             Transfer not topological data from one GEOM object to another.
13652
13653             Parameters:
13654                 theObjectFrom the source object of non-topological data
13655                 theObjectTo the destination object of non-topological data
13656                 theFindMethod method to search sub-shapes of theObjectFrom
13657                               in shape theObjectTo. Possible values are:
13658                               GEOM.FSM_GetInPlace, GEOM.FSM_GetInPlaceByHistory
13659                               and GEOM.FSM_GetInPlace_Old. Other values of
13660                               GEOM.find_shape_method are not supported.
13661
13662             Returns:
13663                 True in case of success; False otherwise.
13664
13665             # Example: see GEOM_TestOthers.py
13666             """
13667             # Example: see GEOM_TestAll.py
13668             isOk = self.InsertOp.TransferData(theObjectFrom,
13669                                                theObjectTo, theFindMethod)
13670             RaiseIfFailed("TransferData", self.InsertOp)
13671             return isOk
13672
13673         ## Creates a new folder object. It is a container for any GEOM objects.
13674         #  @param Name name of the container
13675         #  @param Father parent object. If None,
13676         #         folder under 'Geometry' root object will be created.
13677         #  @return a new created folder
13678         #  @ingroup l1_publish_data
13679         def NewFolder(self, Name, Father=None):
13680             """
13681             Create a new folder object. It is an auxiliary container for any GEOM objects.
13682
13683             Parameters:
13684                 Name name of the container
13685                 Father parent object. If None,
13686                 folder under 'Geometry' root object will be created.
13687
13688             Returns:
13689                 a new created folder
13690             """
13691             if not Father: Father = self.father
13692             return self.CreateFolder(Name, Father)
13693
13694         ## Move object to the specified folder
13695         #  @param Object object to move
13696         #  @param Folder target folder
13697         #  @ingroup l1_publish_data
13698         def PutToFolder(self, Object, Folder):
13699             """
13700             Move object to the specified folder
13701
13702             Parameters:
13703                 Object object to move
13704                 Folder target folder
13705             """
13706             self.MoveToFolder(Object, Folder)
13707             pass
13708
13709         ## Move list of objects to the specified folder
13710         #  @param ListOfSO list of objects to move
13711         #  @param Folder target folder
13712         #  @ingroup l1_publish_data
13713         def PutListToFolder(self, ListOfSO, Folder):
13714             """
13715             Move list of objects to the specified folder
13716
13717             Parameters:
13718                 ListOfSO list of objects to move
13719                 Folder target folder
13720             """
13721             self.MoveListToFolder(ListOfSO, Folder)
13722             pass
13723
13724         ## @addtogroup l2_field
13725         ## @{
13726
13727         ## Creates a field
13728         #  @param shape the shape the field lies on
13729         #  @param name the field name
13730         #  @param type type of field data: 0 - bool, 1 - int, 2 - double, 3 - string
13731         #  @param dimension dimension of the shape the field lies on
13732         #         0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
13733         #  @param componentNames names of components
13734         #  @return a created field
13735         @ManageTransactions("FieldOp")
13736         def CreateField(self, shape, name, type, dimension, componentNames):
13737             """
13738             Creates a field
13739
13740             Parameters:
13741                 shape the shape the field lies on
13742                 name  the field name
13743                 type  type of field data
13744                 dimension dimension of the shape the field lies on
13745                           0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
13746                 componentNames names of components
13747
13748             Returns:
13749                 a created field
13750             """
13751             if isinstance( type, int ):
13752                 if type < 0 or type > 3:
13753                     raise RuntimeError, "CreateField : Error: data type must be within [0-3] range"
13754                 type = [GEOM.FDT_Bool,GEOM.FDT_Int,GEOM.FDT_Double,GEOM.FDT_String][type]
13755
13756             f = self.FieldOp.CreateField( shape, name, type, dimension, componentNames)
13757             RaiseIfFailed("CreateField", self.FieldOp)
13758             global geom
13759             geom._autoPublish( f, "", name)
13760             return f
13761
13762         ## Removes a field from the GEOM component
13763         #  @param field the field to remove
13764         def RemoveField(self, field):
13765             "Removes a field from the GEOM component"
13766             global geom
13767             if isinstance( field, GEOM._objref_GEOM_Field ):
13768                 geom.RemoveObject( field )
13769             elif isinstance( field, geomField ):
13770                 geom.RemoveObject( field.field )
13771             else:
13772                 raise RuntimeError, "RemoveField() : the object is not a field"
13773             return
13774
13775         ## Returns number of fields on a shape
13776         @ManageTransactions("FieldOp")
13777         def CountFields(self, shape):
13778             "Returns number of fields on a shape"
13779             nb = self.FieldOp.CountFields( shape )
13780             RaiseIfFailed("CountFields", self.FieldOp)
13781             return nb
13782
13783         ## Returns all fields on a shape
13784         @ManageTransactions("FieldOp")
13785         def GetFields(self, shape):
13786             "Returns all fields on a shape"
13787             ff = self.FieldOp.GetFields( shape )
13788             RaiseIfFailed("GetFields", self.FieldOp)
13789             return ff
13790
13791         ## Returns a field on a shape by its name
13792         @ManageTransactions("FieldOp")
13793         def GetField(self, shape, name):
13794             "Returns a field on a shape by its name"
13795             f = self.FieldOp.GetField( shape, name )
13796             RaiseIfFailed("GetField", self.FieldOp)
13797             return f
13798
13799         # end of l2_field
13800         ## @}
13801
13802
13803 import omniORB
13804 # Register the new proxy for GEOM_Gen
13805 omniORB.registerObjref(GEOM._objref_GEOM_Gen._NP_RepositoryId, geomBuilder)
13806
13807
13808 ## Field on Geometry
13809 #  @ingroup l2_field
13810 class geomField( GEOM._objref_GEOM_Field ):
13811
13812     def __init__(self):
13813         GEOM._objref_GEOM_Field.__init__(self)
13814         self.field = GEOM._objref_GEOM_Field
13815         return
13816
13817     ## Returns the shape the field lies on
13818     def getShape(self):
13819         "Returns the shape the field lies on"
13820         return self.field.GetShape(self)
13821
13822     ## Returns the field name
13823     def getName(self):
13824         "Returns the field name"
13825         return self.field.GetName(self)
13826
13827     ## Returns type of field data as integer [0-3]
13828     def getType(self):
13829         "Returns type of field data"
13830         return self.field.GetDataType(self)._v
13831
13832     ## Returns type of field data:
13833     #  one of GEOM.FDT_Bool, GEOM.FDT_Int, GEOM.FDT_Double, GEOM.FDT_String
13834     def getTypeEnum(self):
13835         "Returns type of field data"
13836         return self.field.GetDataType(self)
13837
13838     ## Returns dimension of the shape the field lies on:
13839     #  0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
13840     def getDimension(self):
13841         """Returns dimension of the shape the field lies on:
13842         0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape"""
13843         return self.field.GetDimension(self)
13844
13845     ## Returns names of components
13846     def getComponents(self):
13847         "Returns names of components"
13848         return self.field.GetComponents(self)
13849
13850     ## Adds a time step to the field
13851     #  @param step the time step number further used as the step identifier
13852     #  @param stamp the time step time
13853     #  @param values the values of the time step
13854     def addStep(self, step, stamp, values):
13855         "Adds a time step to the field"
13856         stp = self.field.AddStep( self, step, stamp )
13857         if not stp:
13858             raise RuntimeError, \
13859                   "Field.addStep() : Error: step %s already exists in this field"%step
13860         global geom
13861         geom._autoPublish( stp, "", "Step %s, %s"%(step,stamp))
13862         self.setValues( step, values )
13863         return stp
13864
13865     ## Remove a time step from the field
13866     def removeStep(self,step):
13867         "Remove a time step from the field"
13868         stepSO = None
13869         try:
13870             stepObj = self.field.GetStep( self, step )
13871             if stepObj:
13872                 stepSO = geom.myStudy.FindObjectID( stepObj.GetStudyEntry() )
13873         except:
13874             #import traceback
13875             #traceback.print_exc()
13876             pass
13877         self.field.RemoveStep( self, step )
13878         if stepSO:
13879             geom.myBuilder.RemoveObjectWithChildren( stepSO )
13880         return
13881
13882     ## Returns number of time steps in the field
13883     def countSteps(self):
13884         "Returns number of time steps in the field"
13885         return self.field.CountSteps(self)
13886
13887     ## Returns a list of time step IDs in the field
13888     def getSteps(self):
13889         "Returns a list of time step IDs in the field"
13890         return self.field.GetSteps(self)
13891
13892     ## Returns a time step by its ID
13893     def getStep(self,step):
13894         "Returns a time step by its ID"
13895         stp = self.field.GetStep(self, step)
13896         if not stp:
13897             raise RuntimeError, "Step %s is missing from this field"%step
13898         return stp
13899
13900     ## Returns the time of the field step
13901     def getStamp(self,step):
13902         "Returns the time of the field step"
13903         return self.getStep(step).GetStamp()
13904
13905     ## Changes the time of the field step
13906     def setStamp(self, step, stamp):
13907         "Changes the time of the field step"
13908         return self.getStep(step).SetStamp(stamp)
13909
13910     ## Returns values of the field step
13911     def getValues(self, step):
13912         "Returns values of the field step"
13913         return self.getStep(step).GetValues()
13914
13915     ## Changes values of the field step
13916     def setValues(self, step, values):
13917         "Changes values of the field step"
13918         stp = self.getStep(step)
13919         errBeg = "Field.setValues(values) : Error: "
13920         try:
13921             ok = stp.SetValues( values )
13922         except Exception, e:
13923             excStr = str(e)
13924             if excStr.find("WrongPythonType") > 0:
13925                 raise RuntimeError, errBeg +\
13926                       "wrong type of values, %s values are expected"%str(self.getTypeEnum())[4:]
13927             raise RuntimeError, errBeg + str(e)
13928         if not ok:
13929             nbOK = self.field.GetArraySize(self)
13930             nbKO = len(values)
13931             if nbOK != nbKO:
13932                 raise RuntimeError, errBeg + "len(values) must be %s but not %s"%(nbOK,nbKO)
13933             else:
13934                 raise RuntimeError, errBeg + "failed"
13935         return
13936
13937     pass # end of class geomField
13938
13939 # Register the new proxy for GEOM_Field
13940 omniORB.registerObjref(GEOM._objref_GEOM_Field._NP_RepositoryId, geomField)
13941
13942
13943 ## Create a new geomBuilder instance.The geomBuilder class provides the Python
13944 #  interface to GEOM operations.
13945 #
13946 #  Typical use is:
13947 #  \code
13948 #    import salome
13949 #    salome.salome_init()
13950 #    from salome.geom import geomBuilder
13951 #    geompy = geomBuilder.New(salome.myStudy)
13952 #  \endcode
13953 #  @param  study     SALOME study, generally obtained by salome.myStudy.
13954 #  @param  instance  CORBA proxy of GEOM Engine. If None, the default Engine is used.
13955 #  @return geomBuilder instance
13956 def New( study, instance=None):
13957     """
13958     Create a new geomBuilder instance.The geomBuilder class provides the Python
13959     interface to GEOM operations.
13960
13961     Typical use is:
13962         import salome
13963         salome.salome_init()
13964         from salome.geom import geomBuilder
13965         geompy = geomBuilder.New(salome.myStudy)
13966
13967     Parameters:
13968         study     SALOME study, generally obtained by salome.myStudy.
13969         instance  CORBA proxy of GEOM Engine. If None, the default Engine is used.
13970     Returns:
13971         geomBuilder instance
13972     """
13973     #print "New geomBuilder ", study, instance
13974     global engine
13975     global geom
13976     global doLcc
13977     engine = instance
13978     if engine is None:
13979       doLcc = True
13980     geom = geomBuilder()
13981     assert isinstance(geom,geomBuilder), "Geom engine class is %s but should be geomBuilder.geomBuilder. Import geomBuilder before creating the instance."%geom.__class__
13982     geom.init_geom(study)
13983     return geom
13984
13985
13986 # Register methods from the plug-ins in the geomBuilder class 
13987 plugins_var = os.environ.get( "GEOM_PluginsList" )
13988
13989 plugins = None
13990 if plugins_var is not None:
13991     plugins = plugins_var.split( ":" )
13992     plugins=filter(lambda x: len(x)>0, plugins)
13993 if plugins is not None:
13994     for pluginName in plugins:
13995         pluginBuilderName = pluginName + "Builder"
13996         try:
13997             exec( "from salome.%s.%s import *" % (pluginName, pluginBuilderName))
13998         except Exception, e:
13999             from salome_utils import verbose
14000             print "Exception while loading %s: %s" % ( pluginBuilderName, e )
14001             continue
14002         exec( "from salome.%s import %s" % (pluginName, pluginBuilderName))
14003         plugin = eval( pluginBuilderName )
14004         
14005         # add methods from plugin module to the geomBuilder class
14006         for k in dir( plugin ):
14007             if k[0] == '_': continue
14008             method = getattr( plugin, k )
14009             if type( method ).__name__ == 'function':
14010                 if not hasattr( geomBuilder, k ):
14011                     setattr( geomBuilder, k, method )
14012                 pass
14013             pass
14014         del pluginName
14015         pass
14016     pass