Salome HOME
0022869: EDF 7482 GEOM: Automatically create groups with the generation operations
[modules/geom.git] / src / GEOM_SWIG / geomBuilder.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20
21 #  GEOM GEOM_SWIG : binding of C++ implementation with Python
22 #  File   : geomBuilder.py
23 #  Author : Paul RASCLE, EDF
24 #  Module : GEOM
25
26 """
27     \namespace geomBuilder
28     \brief Module geomBuilder
29 """
30
31 ##
32 ## @defgroup geomBuilder geomBuilder Python module
33 ## @{
34 ##
35 ## @details
36 ##
37 ## By default, all functions of geomBuilder Python module do not publish
38 ## resulting geometrical objects. This can be done in the Python script
39 ## by means of \ref geomBuilder.geomBuilder.addToStudy() "addToStudy()"
40 ## or \ref geomBuilder.geomBuilder.addToStudyInFather() "addToStudyInFather()"
41 ## functions.
42 ##
43 ## However, it is possible to publish result data in the study
44 ## automatically. For this, almost each function of
45 ## \ref geomBuilder.geomBuilder "geomBuilder" class has
46 ## an additional @a theName parameter (@c None by default).
47 ## As soon as non-empty string value is passed to this parameter,
48 ## the result object is published in the study automatically.
49 ##
50 ## For example, consider the following Python script:
51 ##
52 ## @code
53 ## import salome
54 ## from salome.geom import geomBuilder
55 ## geompy = geomBuilder.New(salome.myStudy)
56 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100) # box is not published in the study yet
57 ## geompy.addToStudy(box, "box")             # explicit publishing
58 ## @endcode
59 ##
60 ## Last two lines can be replaced by one-line instruction:
61 ##
62 ## @code
63 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100, theName="box") # box is published in the study with "box" name
64 ## @endcode
65 ##
66 ## ... or simply
67 ##
68 ## @code
69 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100, "box") # box is published in the study with "box" name
70 ## @endcode
71 ##
72 ## Note, that some functions produce more than one geometrical objects. For example,
73 ## \ref geomBuilder.geomBuilder.GetNonBlocks() "GetNonBlocks()" function returns two objects:
74 ## group of all non-hexa solids and group of all non-quad faces.
75 ## For such functions it is possible to specify separate names for results.
76 ##
77 ## For example
78 ##
79 ## @code
80 ## # create and publish cylinder
81 ## cyl = geompy.MakeCylinderRH(100, 100, "cylinder")
82 ## # get non blocks from cylinder
83 ## g1, g2 = geompy.GetNonBlocks(cyl, theName="nonblock")
84 ## @endcode
85 ##
86 ## Above example will publish both result compounds (first with non-hexa solids and
87 ## second with non-quad faces) as two items, both named "nonblock".
88 ## However, if second command is invoked as
89 ##
90 ## @code
91 ## g1, g2 = geompy.GetNonBlocks(cyl, theName=("nonhexa", "nonquad"))
92 ## @endcode
93 ##
94 ## ... the first compound will be published with "nonhexa" name, and second will be named "nonquad".
95 ##
96 ## Automatic publication of all results can be also enabled/disabled by means of the function
97 ## \ref geomBuilder.geomBuilder.addToStudyAuto() "addToStudyAuto()". The automatic publishing
98 ## is managed by the numeric parameter passed to this function:
99 ## - if @a maxNbSubShapes = 0, automatic publishing is disabled.
100 ## - if @a maxNbSubShapes = -1 (default), automatic publishing is enabled and
101 ##   maximum number of sub-shapes allowed for publishing is unlimited; any negative
102 ##   value passed as parameter has the same effect.
103 ## - if @a maxNbSubShapes is any positive value, automatic publishing is enabled and
104 ##   maximum number of sub-shapes allowed for publishing is set to specified value.
105 ##
106 ## When automatic publishing is enabled, you even do not need to pass @a theName parameter
107 ## to the functions creating objects, instead default names will be used. However, you
108 ## can always change the behavior, by passing explicit name to the @a theName parameter
109 ## and it will be used instead default one.
110 ## The publishing of the collections of objects will be done according to the above
111 ## mentioned rules (maximum allowed number of sub-shapes).
112 ##
113 ## For example:
114 ##
115 ## @code
116 ## import salome
117 ## from salome.geom import geomBuilder
118 ## geompy = geomBuilder.New(salome.myStudy)
119 ## geompy.addToStudyAuto() # enable automatic publication
120 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100)
121 ## # the box is created and published in the study with default name
122 ## geompy.addToStudyAuto(5) # set max allowed number of sub-shapes to 5
123 ## vertices = geompy.SubShapeAll(box, geomBuilder.ShapeType['VERTEX'])
124 ## # only 5 first vertices will be published, with default names
125 ## print len(vertices)
126 ## # note, that result value still containes all 8 vertices
127 ## geompy.addToStudyAuto(-1) # disable automatic publication
128 ## @endcode
129 ##
130 ## This feature can be used, for example, for debugging purposes.
131 ##
132 ## @note
133 ## - Use automatic publication feature with caution. When it is enabled, any function of
134 ##   \ref geomBuilder.geomBuilder "geomBuilder" class publishes the results in the study,
135 ##   that can lead to the huge size of the study data tree.
136 ##   For example, repeating call of \ref geomBuilder.geomBuilder.SubShapeAll() "SubShapeAll()"
137 ##   command on the same main shape each time will publish all child objects, that will lead
138 ##   to a lot of duplicated items in the study.
139 ## - Sub-shapes are automatically published as child items of the parent main shape in the study if main
140 ##   shape was also published before. Otherwise, sub-shapes are published as top-level objects.
141 ## - Some functions of \ref geomBuilder.geomBuilder "geomBuilder" class do not have
142 ##   \a theName parameter (and, thus, do not support automatic publication).
143 ##   For example, some transformation operations like
144 ##   \ref geomBuilder.geomBuilder.TranslateDXDYDZ() "TranslateDXDYDZ()".
145 ##   Refer to the documentation to check if some function has such possibility.
146 ##
147 ## It is possible to customize the representation of the geometrical
148 ## data in the data tree; this can be done by using folders. A folder can
149 ## be created in the study tree using function
150 ## \ref geomBuilder.geomBuilder.NewFolder() "NewFolder()"
151 ## (by default it is created under the "Geometry" root object).
152 ## As soon as folder is created, any published geometry object
153 ## can be moved into it.
154 ##
155 ## For example:
156 ##
157 ## @code
158 ## import salome
159 ## from salome.geom import geomBuilder
160 ## geompy = geomBuilder.New(salome.myStudy)
161 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100, "Box")
162 ## # the box was created and published in the study
163 ## folder = geompy.NewFolder("Primitives")
164 ## # an empty "Primitives" folder was created under default "Geometry" root object
165 ## geompy.PutToFolder(box, folder)
166 ## # the box was moved into "Primitives" folder
167 ## @endcode
168 ##
169 ## Subfolders are also can be created by specifying another folder as a parent:
170 ##
171 ## @code
172 ## subfolder = geompy.NewFolder("3D", folder)
173 ## # "3D" folder was created under "Primitives" folder
174 ## @endcode
175 ##
176 ## @note
177 ## - Folder container is just a representation layer object that
178 ## deals with already published objects only. So, any geometry object
179 ## should be published in the study (for example, with
180 ## \ref geomBuilder.geomBuilder.PutToFolder() "addToStudy()" function)
181 ## BEFORE moving it into any existing folder.
182 ## - \ref geomBuilder.geomBuilder.PutToFolder() "PutToFolder()" function
183 ## does not change physical position of geometry object in the study tree,
184 ## it only affects on the representation of the data tree.
185 ## - It is impossible to publish geometry object using any folder as father.
186 ##
187 ##  \defgroup l1_publish_data
188 ##  \defgroup l1_geomBuilder_auxiliary
189 ##  \defgroup l1_geomBuilder_purpose
190 ## @}
191
192 ## @defgroup l1_publish_data Publishing results in SALOME study
193
194 ## @defgroup l1_geomBuilder_auxiliary Auxiliary data structures and methods
195
196 ## @defgroup l1_geomBuilder_purpose   All package methods, grouped by their purpose
197 ## @{
198 ##   @defgroup l2_import_export Importing/exporting geometrical objects
199 ##   @defgroup l2_creating      Creating geometrical objects
200 ##   @{
201 ##     @defgroup l3_basic_go      Creating Basic Geometric Objects
202 ##     @{
203 ##       @defgroup l4_curves        Creating Curves
204
205 ##     @}
206 ##     @defgroup l3_3d_primitives Creating 3D Primitives
207 ##     @defgroup l3_complex       Creating Complex Objects
208 ##     @defgroup l3_groups        Working with groups
209 ##     @defgroup l3_blocks        Building by blocks
210 ##     @{
211 ##       @defgroup l4_blocks_measure Check and Improve
212
213 ##     @}
214 ##     @defgroup l3_sketcher      Sketcher
215 ##     @defgroup l3_advanced      Creating Advanced Geometrical Objects
216 ##     @{
217 ##       @defgroup l4_decompose     Decompose objects
218 ##       @defgroup l4_decompose_d   Decompose objects deprecated methods
219 ##       @defgroup l4_access        Access to sub-shapes by their unique IDs inside the main shape
220 ##       @defgroup l4_obtain        Access to sub-shapes by a criteria
221 ##       @defgroup l4_advanced      Advanced objects creation functions
222
223 ##     @}
224
225 ##   @}
226 ##   @defgroup l2_transforming  Transforming geometrical objects
227 ##   @{
228 ##     @defgroup l3_basic_op      Basic Operations
229 ##     @defgroup l3_boolean       Boolean Operations
230 ##     @defgroup l3_transform     Transformation Operations
231 ##     @defgroup l3_transform_d   Transformation Operations deprecated methods
232 ##     @defgroup l3_local         Local Operations (Fillet, Chamfer and other Features)
233 ##     @defgroup l3_blocks_op     Blocks Operations
234 ##     @defgroup l3_healing       Repairing Operations
235 ##     @defgroup l3_restore_ss    Restore presentation parameters and a tree of sub-shapes
236
237 ##   @}
238 ##   @defgroup l2_measure       Using measurement tools
239 ##   @defgroup l2_field         Field on Geometry
240
241 ## @}
242
243 # initialize SALOME session in try/except block
244 # to avoid problems in some cases, e.g. when generating documentation
245 try:
246     import salome
247     salome.salome_init()
248     from salome import *
249 except:
250     pass
251
252 from salome_notebook import *
253
254 import GEOM
255 import math
256 import os
257 import functools
258
259 from salome.geom.gsketcher import Sketcher3D, Sketcher2D, Polyline2D
260
261 # service function
262 def _toListOfNames(_names, _size=-1):
263     l = []
264     import types
265     if type(_names) in [types.ListType, types.TupleType]:
266         for i in _names: l.append(i)
267     elif _names:
268         l.append(_names)
269     if l and len(l) < _size:
270         for i in range(len(l), _size): l.append("%s_%d"%(l[0],i))
271     return l
272
273 # Decorator function to manage transactions for all geometric operations.
274 def ManageTransactions(theOpeName):
275     def MTDecorator(theFunction):
276         # To keep the original function name an documentation.
277         @functools.wraps(theFunction)
278         def OpenCallClose(self, *args, **kwargs):
279             # Open transaction
280             anOperation = getattr(self, theOpeName)
281             anOperation.StartOperation()
282             try:
283                 # Call the function
284                 res = theFunction(self, *args, **kwargs)
285                 # Commit transaction
286                 anOperation.FinishOperation()
287                 return res
288             except:
289                 # Abort transaction
290                 anOperation.AbortOperation()
291                 raise
292         return OpenCallClose
293     return MTDecorator
294
295 ## Raise an Error, containing the Method_name, if Operation is Failed
296 ## @ingroup l1_geomBuilder_auxiliary
297 def RaiseIfFailed (Method_name, Operation):
298     if Operation.IsDone() == 0 and Operation.GetErrorCode() != "NOT_FOUND_ANY":
299         raise RuntimeError, Method_name + " : " + Operation.GetErrorCode()
300
301 ## Return list of variables value from salome notebook
302 ## @ingroup l1_geomBuilder_auxiliary
303 def ParseParameters(*parameters):
304     Result = []
305     StringResult = []
306     for parameter in parameters:
307         if isinstance(parameter, list):
308             lResults = ParseParameters(*parameter)
309             if len(lResults) > 0:
310                 Result.append(lResults[:-1])
311                 StringResult += lResults[-1].split(":")
312                 pass
313             pass
314         else:
315             if isinstance(parameter,str):
316                 if notebook.isVariable(parameter):
317                     Result.append(notebook.get(parameter))
318                 else:
319                     raise RuntimeError, "Variable with name '" + parameter + "' doesn't exist!!!"
320                 pass
321             else:
322                 Result.append(parameter)
323                 pass
324             StringResult.append(str(parameter))
325             pass
326         pass
327     if Result:
328         Result.append(":".join(StringResult))
329     else:
330         Result = ":".join(StringResult)
331     return Result
332
333 ## Return list of variables value from salome notebook
334 ## @ingroup l1_geomBuilder_auxiliary
335 def ParseList(list):
336     Result = []
337     StringResult = ""
338     for parameter in list:
339         if isinstance(parameter,str) and notebook.isVariable(parameter):
340             Result.append(str(notebook.get(parameter)))
341             pass
342         else:
343             Result.append(str(parameter))
344             pass
345
346         StringResult = StringResult + str(parameter)
347         StringResult = StringResult + ":"
348         pass
349     StringResult = StringResult[:len(StringResult)-1]
350     return Result, StringResult
351
352 ## Return list of variables value from salome notebook
353 ## @ingroup l1_geomBuilder_auxiliary
354 def ParseSketcherCommand(command):
355     Result = ""
356     StringResult = ""
357     sections = command.split(":")
358     for section in sections:
359         parameters = section.split(" ")
360         paramIndex = 1
361         for parameter in parameters:
362             if paramIndex > 1 and parameter.find("'") != -1:
363                 parameter = parameter.replace("'","")
364                 if notebook.isVariable(parameter):
365                     Result = Result + str(notebook.get(parameter)) + " "
366                     pass
367                 else:
368                     raise RuntimeError, "Variable with name '" + parameter + "' doesn't exist!!!"
369                     pass
370                 pass
371             else:
372                 Result = Result + str(parameter) + " "
373                 pass
374             if paramIndex > 1:
375                 StringResult = StringResult + parameter
376                 StringResult = StringResult + ":"
377                 pass
378             paramIndex = paramIndex + 1
379             pass
380         Result = Result[:len(Result)-1] + ":"
381         pass
382     Result = Result[:len(Result)-1]
383     return Result, StringResult
384
385 ## Helper function which can be used to pack the passed string to the byte data.
386 ## Only '1' an '0' symbols are valid for the string. The missing bits are replaced by zeroes.
387 ## If the string contains invalid symbol (neither '1' nor '0'), the function raises an exception.
388 ## For example,
389 ## \code
390 ## val = PackData("10001110") # val = 0xAE
391 ## val = PackData("1")        # val = 0x80
392 ## \endcode
393 ## @param data unpacked data - a string containing '1' and '0' symbols
394 ## @return data packed to the byte stream
395 ## @ingroup l1_geomBuilder_auxiliary
396 def PackData(data):
397     """
398     Helper function which can be used to pack the passed string to the byte data.
399     Only '1' an '0' symbols are valid for the string. The missing bits are replaced by zeroes.
400     If the string contains invalid symbol (neither '1' nor '0'), the function raises an exception.
401
402     Parameters:
403         data unpacked data - a string containing '1' and '0' symbols
404
405     Returns:
406         data packed to the byte stream
407
408     Example of usage:
409         val = PackData("10001110") # val = 0xAE
410         val = PackData("1")        # val = 0x80
411     """
412     bytes = len(data)/8
413     if len(data)%8: bytes += 1
414     res = ""
415     for b in range(bytes):
416         d = data[b*8:(b+1)*8]
417         val = 0
418         for i in range(8):
419             val *= 2
420             if i < len(d):
421                 if d[i] == "1": val += 1
422                 elif d[i] != "0":
423                     raise "Invalid symbol %s" % d[i]
424                 pass
425             pass
426         res += chr(val)
427         pass
428     return res
429
430 ## Read bitmap texture from the text file.
431 ## In that file, any non-zero symbol represents '1' opaque pixel of the bitmap.
432 ## A zero symbol ('0') represents transparent pixel of the texture bitmap.
433 ## The function returns width and height of the pixmap in pixels and byte stream representing
434 ## texture bitmap itself.
435 ##
436 ## This function can be used to read the texture to the byte stream in order to pass it to
437 ## the AddTexture() function of geomBuilder class.
438 ## For example,
439 ## \code
440 ## from salome.geom import geomBuilder
441 ## geompy = geomBuilder.New(salome.myStudy)
442 ## texture = geompy.readtexture('mytexture.dat')
443 ## texture = geompy.AddTexture(*texture)
444 ## obj.SetMarkerTexture(texture)
445 ## \endcode
446 ## @param fname texture file name
447 ## @return sequence of tree values: texture's width, height in pixels and its byte stream
448 ## @ingroup l1_geomBuilder_auxiliary
449 def ReadTexture(fname):
450     """
451     Read bitmap texture from the text file.
452     In that file, any non-zero symbol represents '1' opaque pixel of the bitmap.
453     A zero symbol ('0') represents transparent pixel of the texture bitmap.
454     The function returns width and height of the pixmap in pixels and byte stream representing
455     texture bitmap itself.
456     This function can be used to read the texture to the byte stream in order to pass it to
457     the AddTexture() function of geomBuilder class.
458
459     Parameters:
460         fname texture file name
461
462     Returns:
463         sequence of tree values: texture's width, height in pixels and its byte stream
464
465     Example of usage:
466         from salome.geom import geomBuilder
467         geompy = geomBuilder.New(salome.myStudy)
468         texture = geompy.readtexture('mytexture.dat')
469         texture = geompy.AddTexture(*texture)
470         obj.SetMarkerTexture(texture)
471     """
472     try:
473         f = open(fname)
474         lines = [ l.strip() for l in f.readlines()]
475         f.close()
476         maxlen = 0
477         if lines: maxlen = max([len(x) for x in lines])
478         lenbytes = maxlen/8
479         if maxlen%8: lenbytes += 1
480         bytedata=""
481         for line in lines:
482             if len(line)%8:
483                 lenline = (len(line)/8+1)*8
484                 pass
485             else:
486                 lenline = (len(line)/8)*8
487                 pass
488             for i in range(lenline/8):
489                 byte=""
490                 for j in range(8):
491                     if i*8+j < len(line) and line[i*8+j] != "0": byte += "1"
492                     else: byte += "0"
493                     pass
494                 bytedata += PackData(byte)
495                 pass
496             for i in range(lenline/8, lenbytes):
497                 bytedata += PackData("0")
498             pass
499         return lenbytes*8, len(lines), bytedata
500     except:
501         pass
502     return 0, 0, ""
503
504 ## Returns a long value from enumeration type
505 #  Can be used for CORBA enumerator types like GEOM.shape_type
506 #  @param theItem enumeration type
507 #  @ingroup l1_geomBuilder_auxiliary
508 def EnumToLong(theItem):
509     """
510     Returns a long value from enumeration type
511     Can be used for CORBA enumerator types like geomBuilder.ShapeType
512
513     Parameters:
514         theItem enumeration type
515     """
516     ret = theItem
517     if hasattr(theItem, "_v"): ret = theItem._v
518     return ret
519
520 ## Pack an argument into a list
521 def ToList( arg ):
522     if isinstance( arg, list ):
523         return arg
524     if hasattr( arg, "__getitem__" ):
525         return list( arg )
526     return [ arg ]
527
528 ## Information about closed/unclosed state of shell or wire
529 #  @ingroup l1_geomBuilder_auxiliary
530 class info:
531     """
532     Information about closed/unclosed state of shell or wire
533     """
534     UNKNOWN  = 0
535     CLOSED   = 1
536     UNCLOSED = 2
537
538 ## Private class used to bind calls of plugin operations to geomBuilder
539 class PluginOperation:
540   def __init__(self, operation, function):
541     self.operation = operation
542     self.function = function
543     pass
544
545   @ManageTransactions("operation")
546   def __call__(self, *args):
547     res = self.function(self.operation, *args)
548     RaiseIfFailed(self.function.__name__, self.operation)
549     return res
550
551 # Warning: geom is a singleton
552 geom = None
553 engine = None
554 doLcc = False
555 created = False
556
557 class geomBuilder(object, GEOM._objref_GEOM_Gen):
558
559         ## Enumeration ShapeType as a dictionary. \n
560         ## Topological types of shapes (like Open Cascade types). See GEOM::shape_type for details.
561         #  @ingroup l1_geomBuilder_auxiliary
562         ShapeType = {"AUTO":-1, "COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8, "FLAT":9}
563
564         ## Kinds of shape in terms of <VAR>GEOM.GEOM_IKindOfShape.shape_kind</VAR> enumeration
565         #  and a list of parameters, describing the shape.
566         #  List of parameters, describing the shape:
567         #  - COMPOUND:            [nb_solids  nb_faces  nb_edges  nb_vertices]
568         #  - COMPSOLID:           [nb_solids  nb_faces  nb_edges  nb_vertices]
569         #
570         #  - SHELL:       [info.CLOSED / info.UNCLOSED  nb_faces  nb_edges  nb_vertices]
571         #
572         #  - WIRE:        [info.CLOSED / info.UNCLOSED nb_edges  nb_vertices]
573         #
574         #  - SPHERE:       [xc yc zc            R]
575         #  - CYLINDER:     [xb yb zb  dx dy dz  R         H]
576         #  - BOX:          [xc yc zc                      ax ay az]
577         #  - ROTATED_BOX:  [xc yc zc  zx zy zz  xx xy xz  ax ay az]
578         #  - TORUS:        [xc yc zc  dx dy dz  R_1  R_2]
579         #  - CONE:         [xb yb zb  dx dy dz  R_1  R_2  H]
580         #  - POLYHEDRON:                       [nb_faces  nb_edges  nb_vertices]
581         #  - SOLID:                            [nb_faces  nb_edges  nb_vertices]
582         #
583         #  - SPHERE2D:     [xc yc zc            R]
584         #  - CYLINDER2D:   [xb yb zb  dx dy dz  R         H]
585         #  - TORUS2D:      [xc yc zc  dx dy dz  R_1  R_2]
586         #  - CONE2D:       [xc yc zc  dx dy dz  R_1  R_2  H]
587         #  - DISK_CIRCLE:  [xc yc zc  dx dy dz  R]
588         #  - DISK_ELLIPSE: [xc yc zc  dx dy dz  R_1  R_2]
589         #  - POLYGON:      [xo yo zo  dx dy dz            nb_edges  nb_vertices]
590         #  - PLANE:        [xo yo zo  dx dy dz]
591         #  - PLANAR:       [xo yo zo  dx dy dz            nb_edges  nb_vertices]
592         #  - FACE:                                       [nb_edges  nb_vertices]
593         #
594         #  - CIRCLE:       [xc yc zc  dx dy dz  R]
595         #  - ARC_CIRCLE:   [xc yc zc  dx dy dz  R         x1 y1 z1  x2 y2 z2]
596         #  - ELLIPSE:      [xc yc zc  dx dy dz  R_1  R_2]
597         #  - ARC_ELLIPSE:  [xc yc zc  dx dy dz  R_1  R_2  x1 y1 z1  x2 y2 z2]
598         #  - LINE:         [xo yo zo  dx dy dz]
599         #  - SEGMENT:      [x1 y1 z1  x2 y2 z2]
600         #  - EDGE:                                                 [nb_vertices]
601         #
602         #  - VERTEX:       [x  y  z]
603         #  @ingroup l1_geomBuilder_auxiliary
604         kind = GEOM.GEOM_IKindOfShape
605
606         def __new__(cls):
607             global engine
608             global geom
609             global doLcc
610             global created
611             #print "==== __new__ ", engine, geom, doLcc, created
612             if geom is None:
613                 # geom engine is either retrieved from engine, or created
614                 geom = engine
615                 # Following test avoids a recursive loop
616                 if doLcc:
617                     if geom is not None:
618                         # geom engine not created: existing engine found
619                         doLcc = False
620                     if doLcc and not created:
621                         doLcc = False
622                         # FindOrLoadComponent called:
623                         # 1. CORBA resolution of server
624                         # 2. the __new__ method is called again
625                         #print "==== FindOrLoadComponent ", engine, geom, doLcc, created
626                         geom = lcc.FindOrLoadComponent( "FactoryServer", "GEOM" )
627                         #print "====1 ",geom
628                 else:
629                     # FindOrLoadComponent not called
630                     if geom is None:
631                         # geomBuilder instance is created from lcc.FindOrLoadComponent
632                         #print "==== super ", engine, geom, doLcc, created
633                         geom = super(geomBuilder,cls).__new__(cls)
634                         #print "====2 ",geom
635                     else:
636                         # geom engine not created: existing engine found
637                         #print "==== existing ", engine, geom, doLcc, created
638                         pass
639                 #print "return geom 1 ", geom
640                 return geom
641
642             #print "return geom 2 ", geom
643             return geom
644
645         def __init__(self):
646             global created
647             #print "-------- geomBuilder __init__ --- ", created, self
648             if not created:
649               created = True
650               GEOM._objref_GEOM_Gen.__init__(self)
651               self.myMaxNbSubShapesAllowed = 0 # auto-publishing is disabled by default
652               self.myBuilder = None
653               self.myStudyId = 0
654               self.father    = None
655
656               self.BasicOp  = None
657               self.CurvesOp = None
658               self.PrimOp   = None
659               self.ShapesOp = None
660               self.HealOp   = None
661               self.InsertOp = None
662               self.BoolOp   = None
663               self.TrsfOp   = None
664               self.LocalOp  = None
665               self.MeasuOp  = None
666               self.BlocksOp = None
667               self.GroupOp  = None
668               self.FieldOp  = None
669             pass
670
671         ## Process object publication in the study, as follows:
672         #  - if @a theName is specified (not None), the object is published in the study
673         #    with this name, not taking into account "auto-publishing" option;
674         #  - if @a theName is NOT specified, the object is published in the study
675         #    (using default name, which can be customized using @a theDefaultName parameter)
676         #    only if auto-publishing is switched on.
677         #
678         #  @param theObj  object, a subject for publishing
679         #  @param theName object name for study
680         #  @param theDefaultName default name for the auto-publishing
681         #
682         #  @sa addToStudyAuto()
683         def _autoPublish(self, theObj, theName, theDefaultName="noname"):
684             # ---
685             def _item_name(_names, _defname, _idx=-1):
686                 if not _names: _names = _defname
687                 if type(_names) in [types.ListType, types.TupleType]:
688                     if _idx >= 0:
689                         if _idx >= len(_names) or not _names[_idx]:
690                             if type(_defname) not in [types.ListType, types.TupleType]:
691                                 _name = "%s_%d"%(_defname, _idx+1)
692                             elif len(_defname) > 0 and _idx >= 0 and _idx < len(_defname):
693                                 _name = _defname[_idx]
694                             else:
695                                 _name = "%noname_%d"%(dn, _idx+1)
696                             pass
697                         else:
698                             _name = _names[_idx]
699                         pass
700                     else:
701                         # must be wrong  usage
702                         _name = _names[0]
703                     pass
704                 else:
705                     if _idx >= 0:
706                         _name = "%s_%d"%(_names, _idx+1)
707                     else:
708                         _name = _names
709                     pass
710                 return _name
711             # ---
712             def _publish( _name, _obj ):
713                 fatherObj = None
714                 if isinstance( _obj, GEOM._objref_GEOM_Field ):
715                     fatherObj = _obj.GetShape()
716                 elif isinstance( _obj, GEOM._objref_GEOM_FieldStep ):
717                     fatherObj = _obj.GetField()
718                 elif not _obj.IsMainShape():
719                     fatherObj = _obj.GetMainShape()
720                     pass
721                 if fatherObj and fatherObj.GetStudyEntry():
722                     self.addToStudyInFather(fatherObj, _obj, _name)
723                 else:
724                     self.addToStudy(_obj, _name)
725                     pass
726                 return
727             # ---
728             if not theObj:
729                 return # null object
730             if not theName and not self.myMaxNbSubShapesAllowed:
731                 return # nothing to do: auto-publishing is disabled
732             if not theName and not theDefaultName:
733                 return # neither theName nor theDefaultName is given
734             import types
735             if type(theObj) in [types.ListType, types.TupleType]:
736                 # list of objects is being published
737                 idx = 0
738                 for obj in theObj:
739                     if not obj: continue # bad object
740                     name = _item_name(theName, theDefaultName, idx)
741                     _publish( name, obj )
742                     idx = idx+1
743                     if not theName and idx == self.myMaxNbSubShapesAllowed: break
744                     pass
745                 pass
746             else:
747                 # single object is published
748                 name = _item_name(theName, theDefaultName)
749                 _publish( name, theObj )
750             pass
751
752         ## @addtogroup l1_geomBuilder_auxiliary
753         ## @{
754         def init_geom(self,theStudy):
755             self.myStudy = theStudy
756             self.myStudyId = self.myStudy._get_StudyId()
757             self.myBuilder = self.myStudy.NewBuilder()
758             self.father = self.myStudy.FindComponent("GEOM")
759             notebook.myStudy = theStudy
760             if self.father is None:
761                 self.father = self.myBuilder.NewComponent("GEOM")
762                 A1 = self.myBuilder.FindOrCreateAttribute(self.father, "AttributeName")
763                 FName = A1._narrow(SALOMEDS.AttributeName)
764                 FName.SetValue("Geometry")
765                 A2 = self.myBuilder.FindOrCreateAttribute(self.father, "AttributePixMap")
766                 aPixmap = A2._narrow(SALOMEDS.AttributePixMap)
767                 aPixmap.SetPixMap("ICON_OBJBROWSER_Geometry")
768                 self.myBuilder.DefineComponentInstance(self.father,self)
769                 pass
770             self.BasicOp  = self.GetIBasicOperations    (self.myStudyId)
771             self.CurvesOp = self.GetICurvesOperations   (self.myStudyId)
772             self.PrimOp   = self.GetI3DPrimOperations   (self.myStudyId)
773             self.ShapesOp = self.GetIShapesOperations   (self.myStudyId)
774             self.HealOp   = self.GetIHealingOperations  (self.myStudyId)
775             self.InsertOp = self.GetIInsertOperations   (self.myStudyId)
776             self.BoolOp   = self.GetIBooleanOperations  (self.myStudyId)
777             self.TrsfOp   = self.GetITransformOperations(self.myStudyId)
778             self.LocalOp  = self.GetILocalOperations    (self.myStudyId)
779             self.MeasuOp  = self.GetIMeasureOperations  (self.myStudyId)
780             self.BlocksOp = self.GetIBlocksOperations   (self.myStudyId)
781             self.GroupOp  = self.GetIGroupOperations    (self.myStudyId)
782             self.FieldOp  = self.GetIFieldOperations    (self.myStudyId)
783
784             # set GEOM as root in the use case tree
785             self.myUseCaseBuilder = self.myStudy.GetUseCaseBuilder()
786             self.myUseCaseBuilder.SetRootCurrent()
787             self.myUseCaseBuilder.Append(self.father)
788
789             # load data from the study file, if necessary
790             self.myBuilder.LoadWith(self.father, self)
791             pass
792
793         def GetPluginOperations(self, studyID, libraryName):
794             op = GEOM._objref_GEOM_Gen.GetPluginOperations(self, studyID, libraryName)
795             return op
796
797         ## Enable / disable results auto-publishing
798         #
799         #  The automatic publishing is managed in the following way:
800         #  - if @a maxNbSubShapes = 0, automatic publishing is disabled.
801         #  - if @a maxNbSubShapes = -1 (default), automatic publishing is enabled and
802         #  maximum number of sub-shapes allowed for publishing is unlimited; any negative
803         #  value passed as parameter has the same effect.
804         #  - if @a maxNbSubShapes is any positive value, automatic publishing is enabled and
805         #  maximum number of sub-shapes allowed for publishing is set to specified value.
806         #
807         #  @param maxNbSubShapes maximum number of sub-shapes allowed for publishing.
808         #  @ingroup l1_publish_data
809         def addToStudyAuto(self, maxNbSubShapes=-1):
810             """
811             Enable / disable results auto-publishing
812
813             The automatic publishing is managed in the following way:
814             - if @a maxNbSubShapes = 0, automatic publishing is disabled;
815             - if @a maxNbSubShapes = -1 (default), automatic publishing is enabled and
816             maximum number of sub-shapes allowed for publishing is unlimited; any negative
817             value passed as parameter has the same effect.
818             - if @a maxNbSubShapes is any positive value, automatic publishing is enabled and
819             maximum number of sub-shapes allowed for publishing is set to this value.
820
821             Parameters:
822                 maxNbSubShapes maximum number of sub-shapes allowed for publishing.
823
824             Example of usage:
825                 geompy.addToStudyAuto()   # enable auto-publishing
826                 geompy.MakeBoxDXDYDZ(100) # box is created and published with default name
827                 geompy.addToStudyAuto(0)  # disable auto-publishing
828             """
829             self.myMaxNbSubShapesAllowed = max(-1, maxNbSubShapes)
830             pass
831
832         ## Dump component to the Python script
833         #  This method overrides IDL function to allow default values for the parameters.
834         def DumpPython(self, theStudy, theIsPublished=True, theIsMultiFile=True):
835             """
836             Dump component to the Python script
837             This method overrides IDL function to allow default values for the parameters.
838             """
839             return GEOM._objref_GEOM_Gen.DumpPython(self, theStudy, theIsPublished, theIsMultiFile)
840
841         ## Get name for sub-shape aSubObj of shape aMainObj
842         #
843         # @ref swig_SubShapeName "Example"
844         @ManageTransactions("ShapesOp")
845         def SubShapeName(self,aSubObj, aMainObj):
846             """
847             Get name for sub-shape aSubObj of shape aMainObj
848             """
849             # Example: see GEOM_TestAll.py
850
851             #aSubId  = orb.object_to_string(aSubObj)
852             #aMainId = orb.object_to_string(aMainObj)
853             #index = gg.getIndexTopology(aSubId, aMainId)
854             #name = gg.getShapeTypeString(aSubId) + "_%d"%(index)
855             index = self.ShapesOp.GetTopologyIndex(aMainObj, aSubObj)
856             name = self.ShapesOp.GetShapeTypeString(aSubObj) + "_%d"%(index)
857             return name
858
859         ## Publish in study aShape with name aName
860         #
861         #  \param aShape the shape to be published
862         #  \param aName  the name for the shape
863         #  \param doRestoreSubShapes if True, finds and publishes also
864         #         sub-shapes of <VAR>aShape</VAR>, corresponding to its arguments
865         #         and published sub-shapes of arguments
866         #  \param theArgs,theFindMethod,theInheritFirstArg see RestoreSubShapes() for
867         #                                                  these arguments description
868         #  \return study entry of the published shape in form of string
869         #
870         #  @ingroup l1_publish_data
871         #  @ref swig_all_addtostudy "Example"
872         def addToStudy(self, aShape, aName, doRestoreSubShapes=False,
873                        theArgs=[], theFindMethod=GEOM.FSM_GetInPlace, theInheritFirstArg=False):
874             """
875             Publish in study aShape with name aName
876
877             Parameters:
878                 aShape the shape to be published
879                 aName  the name for the shape
880                 doRestoreSubShapes if True, finds and publishes also
881                                    sub-shapes of aShape, corresponding to its arguments
882                                    and published sub-shapes of arguments
883                 theArgs,theFindMethod,theInheritFirstArg see geompy.RestoreSubShapes() for
884                                                          these arguments description
885
886             Returns:
887                 study entry of the published shape in form of string
888
889             Example of usage:
890                 id_block1 = geompy.addToStudy(Block1, "Block 1")
891             """
892             # Example: see GEOM_TestAll.py
893             try:
894                 aSObject = self.AddInStudy(self.myStudy, aShape, aName, None)
895                 if aSObject and aName: aSObject.SetAttrString("AttributeName", aName)
896                 if doRestoreSubShapes:
897                     self.RestoreSubShapesSO(self.myStudy, aSObject, theArgs,
898                                             theFindMethod, theInheritFirstArg, True )
899             except:
900                 print "addToStudy() failed"
901                 return ""
902             return aShape.GetStudyEntry()
903
904         ## Publish in study aShape with name aName as sub-object of previously published aFather
905         #  \param aFather previously published object
906         #  \param aShape the shape to be published as sub-object of <VAR>aFather</VAR>
907         #  \param aName  the name for the shape
908         #
909         #  \return study entry of the published shape in form of string
910         #
911         #  @ingroup l1_publish_data
912         #  @ref swig_all_addtostudyInFather "Example"
913         def addToStudyInFather(self, aFather, aShape, aName):
914             """
915             Publish in study aShape with name aName as sub-object of previously published aFather
916
917             Parameters:
918                 aFather previously published object
919                 aShape the shape to be published as sub-object of aFather
920                 aName  the name for the shape
921
922             Returns:
923                 study entry of the published shape in form of string
924             """
925             # Example: see GEOM_TestAll.py
926             try:
927                 aSObject = self.AddInStudy(self.myStudy, aShape, aName, aFather)
928                 if aSObject and aName: aSObject.SetAttrString("AttributeName", aName)
929             except:
930                 print "addToStudyInFather() failed"
931                 return ""
932             return aShape.GetStudyEntry()
933
934         ## Unpublish object in study
935         #
936         #  \param obj the object to be unpublished
937         def hideInStudy(self, obj):
938             """
939             Unpublish object in study
940
941             Parameters:
942                 obj the object to be unpublished
943             """
944             ior = salome.orb.object_to_string(obj)
945             aSObject = self.myStudy.FindObjectIOR(ior)
946             if aSObject is not None:
947                 genericAttribute = self.myBuilder.FindOrCreateAttribute(aSObject, "AttributeDrawable")
948                 drwAttribute = genericAttribute._narrow(SALOMEDS.AttributeDrawable)
949                 drwAttribute.SetDrawable(False)
950                 # hide references if any
951                 vso = self.myStudy.FindDependances(aSObject);
952                 for refObj in vso :
953                     genericAttribute = self.myBuilder.FindOrCreateAttribute(refObj, "AttributeDrawable")
954                     drwAttribute = genericAttribute._narrow(SALOMEDS.AttributeDrawable)
955                     drwAttribute.SetDrawable(False)
956                     pass
957                 pass
958
959         # end of l1_geomBuilder_auxiliary
960         ## @}
961
962         ## @addtogroup l3_restore_ss
963         ## @{
964
965         ## Publish sub-shapes, standing for arguments and sub-shapes of arguments
966         #  To be used from python scripts out of addToStudy() (non-default usage)
967         #  \param theObject published GEOM.GEOM_Object, arguments of which will be published
968         #  \param theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
969         #                   If this list is empty, all operation arguments will be published
970         #  \param theFindMethod method to search sub-shapes, corresponding to arguments and
971         #                       their sub-shapes. Value from enumeration GEOM.find_shape_method.
972         #  \param theInheritFirstArg set properties of the first argument for <VAR>theObject</VAR>.
973         #                            Do not publish sub-shapes in place of arguments, but only
974         #                            in place of sub-shapes of the first argument,
975         #                            because the whole shape corresponds to the first argument.
976         #                            Mainly to be used after transformations, but it also can be
977         #                            usefull after partition with one object shape, and some other
978         #                            operations, where only the first argument has to be considered.
979         #                            If theObject has only one argument shape, this flag is automatically
980         #                            considered as True, not regarding really passed value.
981         #  \param theAddPrefix add prefix "from_" to names of restored sub-shapes,
982         #                      and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
983         #  \return list of published sub-shapes
984         #
985         #  @ref tui_restore_prs_params "Example"
986         def RestoreSubShapes (self, theObject, theArgs=[], theFindMethod=GEOM.FSM_GetInPlace,
987                               theInheritFirstArg=False, theAddPrefix=True):
988             """
989             Publish sub-shapes, standing for arguments and sub-shapes of arguments
990             To be used from python scripts out of geompy.addToStudy (non-default usage)
991
992             Parameters:
993                 theObject published GEOM.GEOM_Object, arguments of which will be published
994                 theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
995                           If this list is empty, all operation arguments will be published
996                 theFindMethod method to search sub-shapes, corresponding to arguments and
997                               their sub-shapes. Value from enumeration GEOM.find_shape_method.
998                 theInheritFirstArg set properties of the first argument for theObject.
999                                    Do not publish sub-shapes in place of arguments, but only
1000                                    in place of sub-shapes of the first argument,
1001                                    because the whole shape corresponds to the first argument.
1002                                    Mainly to be used after transformations, but it also can be
1003                                    usefull after partition with one object shape, and some other
1004                                    operations, where only the first argument has to be considered.
1005                                    If theObject has only one argument shape, this flag is automatically
1006                                    considered as True, not regarding really passed value.
1007                 theAddPrefix add prefix "from_" to names of restored sub-shapes,
1008                              and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1009             Returns:
1010                 list of published sub-shapes
1011             """
1012             # Example: see GEOM_TestAll.py
1013             return self.RestoreSubShapesO(self.myStudy, theObject, theArgs,
1014                                           theFindMethod, theInheritFirstArg, theAddPrefix)
1015
1016         ## Publish sub-shapes, standing for arguments and sub-shapes of arguments
1017         #  To be used from python scripts out of addToStudy() (non-default usage)
1018         #  \param theObject published GEOM.GEOM_Object, arguments of which will be published
1019         #  \param theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
1020         #                   If this list is empty, all operation arguments will be published
1021         #  \param theFindMethod method to search sub-shapes, corresponding to arguments and
1022         #                       their sub-shapes. Value from enumeration GEOM::find_shape_method.
1023         #  \param theInheritFirstArg set properties of the first argument for <VAR>theObject</VAR>.
1024         #                            Do not publish sub-shapes in place of arguments, but only
1025         #                            in place of sub-shapes of the first argument,
1026         #                            because the whole shape corresponds to the first argument.
1027         #                            Mainly to be used after transformations, but it also can be
1028         #                            usefull after partition with one object shape, and some other
1029         #                            operations, where only the first argument has to be considered.
1030         #                            If theObject has only one argument shape, this flag is automatically
1031         #                            considered as True, not regarding really passed value.
1032         #  \param theAddPrefix add prefix "from_" to names of restored sub-shapes,
1033         #                      and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1034         #  \return list of published sub-shapes
1035         #
1036         #  @ref tui_restore_prs_params "Example"
1037         def RestoreGivenSubShapes (self, theObject, theArgs=[], theFindMethod=GEOM.FSM_GetInPlace,
1038                                    theInheritFirstArg=False, theAddPrefix=True):
1039             """
1040             Publish sub-shapes, standing for arguments and sub-shapes of arguments
1041             To be used from python scripts out of geompy.addToStudy() (non-default usage)
1042
1043             Parameters:
1044                 theObject published GEOM.GEOM_Object, arguments of which will be published
1045                 theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
1046                           If this list is empty, all operation arguments will be published
1047                 theFindMethod method to search sub-shapes, corresponding to arguments and
1048                               their sub-shapes. Value from enumeration GEOM::find_shape_method.
1049                 theInheritFirstArg set properties of the first argument for theObject.
1050                                    Do not publish sub-shapes in place of arguments, but only
1051                                    in place of sub-shapes of the first argument,
1052                                    because the whole shape corresponds to the first argument.
1053                                    Mainly to be used after transformations, but it also can be
1054                                    usefull after partition with one object shape, and some other
1055                                    operations, where only the first argument has to be considered.
1056                                    If theObject has only one argument shape, this flag is automatically
1057                                    considered as True, not regarding really passed value.
1058                 theAddPrefix add prefix "from_" to names of restored sub-shapes,
1059                              and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1060
1061             Returns:
1062                 list of published sub-shapes
1063             """
1064             # Example: see GEOM_TestAll.py
1065             return self.RestoreGivenSubShapesO(self.myStudy, theObject, theArgs,
1066                                                theFindMethod, theInheritFirstArg, theAddPrefix)
1067
1068         # end of l3_restore_ss
1069         ## @}
1070
1071         ## @addtogroup l3_basic_go
1072         ## @{
1073
1074         ## Create point by three coordinates.
1075         #  @param theX The X coordinate of the point.
1076         #  @param theY The Y coordinate of the point.
1077         #  @param theZ The Z coordinate of the point.
1078         #  @param theName Object name; when specified, this parameter is used
1079         #         for result publication in the study. Otherwise, if automatic
1080         #         publication is switched on, default value is used for result name.
1081         #
1082         #  @return New GEOM.GEOM_Object, containing the created point.
1083         #
1084         #  @ref tui_creation_point "Example"
1085         @ManageTransactions("BasicOp")
1086         def MakeVertex(self, theX, theY, theZ, theName=None):
1087             """
1088             Create point by three coordinates.
1089
1090             Parameters:
1091                 theX The X coordinate of the point.
1092                 theY The Y coordinate of the point.
1093                 theZ The Z coordinate of the point.
1094                 theName Object name; when specified, this parameter is used
1095                         for result publication in the study. Otherwise, if automatic
1096                         publication is switched on, default value is used for result name.
1097
1098             Returns:
1099                 New GEOM.GEOM_Object, containing the created point.
1100             """
1101             # Example: see GEOM_TestAll.py
1102             theX,theY,theZ,Parameters = ParseParameters(theX, theY, theZ)
1103             anObj = self.BasicOp.MakePointXYZ(theX, theY, theZ)
1104             RaiseIfFailed("MakePointXYZ", self.BasicOp)
1105             anObj.SetParameters(Parameters)
1106             self._autoPublish(anObj, theName, "vertex")
1107             return anObj
1108
1109         ## Create a point, distant from the referenced point
1110         #  on the given distances along the coordinate axes.
1111         #  @param theReference The referenced point.
1112         #  @param theX Displacement from the referenced point along OX axis.
1113         #  @param theY Displacement from the referenced point along OY axis.
1114         #  @param theZ Displacement from the referenced point along OZ axis.
1115         #  @param theName Object name; when specified, this parameter is used
1116         #         for result publication in the study. Otherwise, if automatic
1117         #         publication is switched on, default value is used for result name.
1118         #
1119         #  @return New GEOM.GEOM_Object, containing the created point.
1120         #
1121         #  @ref tui_creation_point "Example"
1122         @ManageTransactions("BasicOp")
1123         def MakeVertexWithRef(self, theReference, theX, theY, theZ, theName=None):
1124             """
1125             Create a point, distant from the referenced point
1126             on the given distances along the coordinate axes.
1127
1128             Parameters:
1129                 theReference The referenced point.
1130                 theX Displacement from the referenced point along OX axis.
1131                 theY Displacement from the referenced point along OY axis.
1132                 theZ Displacement from the referenced point along OZ axis.
1133                 theName Object name; when specified, this parameter is used
1134                         for result publication in the study. Otherwise, if automatic
1135                         publication is switched on, default value is used for result name.
1136
1137             Returns:
1138                 New GEOM.GEOM_Object, containing the created point.
1139             """
1140             # Example: see GEOM_TestAll.py
1141             theX,theY,theZ,Parameters = ParseParameters(theX, theY, theZ)
1142             anObj = self.BasicOp.MakePointWithReference(theReference, theX, theY, theZ)
1143             RaiseIfFailed("MakePointWithReference", self.BasicOp)
1144             anObj.SetParameters(Parameters)
1145             self._autoPublish(anObj, theName, "vertex")
1146             return anObj
1147
1148         ## Create a point, corresponding to the given parameter on the given curve.
1149         #  @param theRefCurve The referenced curve.
1150         #  @param theParameter Value of parameter on the referenced curve.
1151         #  @param theName Object name; when specified, this parameter is used
1152         #         for result publication in the study. Otherwise, if automatic
1153         #         publication is switched on, default value is used for result name.
1154         #
1155         #  @return New GEOM.GEOM_Object, containing the created point.
1156         #
1157         #  @ref tui_creation_point "Example"
1158         @ManageTransactions("BasicOp")
1159         def MakeVertexOnCurve(self, theRefCurve, theParameter, theName=None):
1160             """
1161             Create a point, corresponding to the given parameter on the given curve.
1162
1163             Parameters:
1164                 theRefCurve The referenced curve.
1165                 theParameter Value of parameter on the referenced curve.
1166                 theName Object name; when specified, this parameter is used
1167                         for result publication in the study. Otherwise, if automatic
1168                         publication is switched on, default value is used for result name.
1169
1170             Returns:
1171                 New GEOM.GEOM_Object, containing the created point.
1172
1173             Example of usage:
1174                 p_on_arc = geompy.MakeVertexOnCurve(Arc, 0.25)
1175             """
1176             # Example: see GEOM_TestAll.py
1177             theParameter, Parameters = ParseParameters(theParameter)
1178             anObj = self.BasicOp.MakePointOnCurve(theRefCurve, theParameter)
1179             RaiseIfFailed("MakePointOnCurve", self.BasicOp)
1180             anObj.SetParameters(Parameters)
1181             self._autoPublish(anObj, theName, "vertex")
1182             return anObj
1183
1184         ## Create a point by projection give coordinates on the given curve
1185         #  @param theRefCurve The referenced curve.
1186         #  @param theX X-coordinate in 3D space
1187         #  @param theY Y-coordinate in 3D space
1188         #  @param theZ Z-coordinate in 3D space
1189         #  @param theName Object name; when specified, this parameter is used
1190         #         for result publication in the study. Otherwise, if automatic
1191         #         publication is switched on, default value is used for result name.
1192         #
1193         #  @return New GEOM.GEOM_Object, containing the created point.
1194         #
1195         #  @ref tui_creation_point "Example"
1196         @ManageTransactions("BasicOp")
1197         def MakeVertexOnCurveByCoord(self, theRefCurve, theX, theY, theZ, theName=None):
1198             """
1199             Create a point by projection give coordinates on the given curve
1200
1201             Parameters:
1202                 theRefCurve The referenced curve.
1203                 theX X-coordinate in 3D space
1204                 theY Y-coordinate in 3D space
1205                 theZ Z-coordinate in 3D space
1206                 theName Object name; when specified, this parameter is used
1207                         for result publication in the study. Otherwise, if automatic
1208                         publication is switched on, default value is used for result name.
1209
1210             Returns:
1211                 New GEOM.GEOM_Object, containing the created point.
1212
1213             Example of usage:
1214                 p_on_arc3 = geompy.MakeVertexOnCurveByCoord(Arc, 100, -10, 10)
1215             """
1216             # Example: see GEOM_TestAll.py
1217             theX, theY, theZ, Parameters = ParseParameters(theX, theY, theZ)
1218             anObj = self.BasicOp.MakePointOnCurveByCoord(theRefCurve, theX, theY, theZ)
1219             RaiseIfFailed("MakeVertexOnCurveByCoord", self.BasicOp)
1220             anObj.SetParameters(Parameters)
1221             self._autoPublish(anObj, theName, "vertex")
1222             return anObj
1223
1224         ## Create a point, corresponding to the given length on the given curve.
1225         #  @param theRefCurve The referenced curve.
1226         #  @param theLength Length on the referenced curve. It can be negative.
1227         #  @param theStartPoint Point allowing to choose the direction for the calculation
1228         #                       of the length. If None, start from the first point of theRefCurve.
1229         #  @param theName Object name; when specified, this parameter is used
1230         #         for result publication in the study. Otherwise, if automatic
1231         #         publication is switched on, default value is used for result name.
1232         #
1233         #  @return New GEOM.GEOM_Object, containing the created point.
1234         #
1235         #  @ref tui_creation_point "Example"
1236         @ManageTransactions("BasicOp")
1237         def MakeVertexOnCurveByLength(self, theRefCurve, theLength, theStartPoint = None, theName=None):
1238             """
1239             Create a point, corresponding to the given length on the given curve.
1240
1241             Parameters:
1242                 theRefCurve The referenced curve.
1243                 theLength Length on the referenced curve. It can be negative.
1244                 theStartPoint Point allowing to choose the direction for the calculation
1245                               of the length. If None, start from the first point of theRefCurve.
1246                 theName Object name; when specified, this parameter is used
1247                         for result publication in the study. Otherwise, if automatic
1248                         publication is switched on, default value is used for result name.
1249
1250             Returns:
1251                 New GEOM.GEOM_Object, containing the created point.
1252             """
1253             # Example: see GEOM_TestAll.py
1254             theLength, Parameters = ParseParameters(theLength)
1255             anObj = self.BasicOp.MakePointOnCurveByLength(theRefCurve, theLength, theStartPoint)
1256             RaiseIfFailed("MakePointOnCurveByLength", self.BasicOp)
1257             anObj.SetParameters(Parameters)
1258             self._autoPublish(anObj, theName, "vertex")
1259             return anObj
1260
1261         ## Create a point, corresponding to the given parameters on the
1262         #    given surface.
1263         #  @param theRefSurf The referenced surface.
1264         #  @param theUParameter Value of U-parameter on the referenced surface.
1265         #  @param theVParameter Value of V-parameter on the referenced surface.
1266         #  @param theName Object name; when specified, this parameter is used
1267         #         for result publication in the study. Otherwise, if automatic
1268         #         publication is switched on, default value is used for result name.
1269         #
1270         #  @return New GEOM.GEOM_Object, containing the created point.
1271         #
1272         #  @ref swig_MakeVertexOnSurface "Example"
1273         @ManageTransactions("BasicOp")
1274         def MakeVertexOnSurface(self, theRefSurf, theUParameter, theVParameter, theName=None):
1275             """
1276             Create a point, corresponding to the given parameters on the
1277             given surface.
1278
1279             Parameters:
1280                 theRefSurf The referenced surface.
1281                 theUParameter Value of U-parameter on the referenced surface.
1282                 theVParameter Value of V-parameter on the referenced surface.
1283                 theName Object name; when specified, this parameter is used
1284                         for result publication in the study. Otherwise, if automatic
1285                         publication is switched on, default value is used for result name.
1286
1287             Returns:
1288                 New GEOM.GEOM_Object, containing the created point.
1289
1290             Example of usage:
1291                 p_on_face = geompy.MakeVertexOnSurface(Face, 0.1, 0.8)
1292             """
1293             theUParameter, theVParameter, Parameters = ParseParameters(theUParameter, theVParameter)
1294             # Example: see GEOM_TestAll.py
1295             anObj = self.BasicOp.MakePointOnSurface(theRefSurf, theUParameter, theVParameter)
1296             RaiseIfFailed("MakePointOnSurface", self.BasicOp)
1297             anObj.SetParameters(Parameters);
1298             self._autoPublish(anObj, theName, "vertex")
1299             return anObj
1300
1301         ## Create a point by projection give coordinates on the given surface
1302         #  @param theRefSurf The referenced surface.
1303         #  @param theX X-coordinate in 3D space
1304         #  @param theY Y-coordinate in 3D space
1305         #  @param theZ Z-coordinate in 3D space
1306         #  @param theName Object name; when specified, this parameter is used
1307         #         for result publication in the study. Otherwise, if automatic
1308         #         publication is switched on, default value is used for result name.
1309         #
1310         #  @return New GEOM.GEOM_Object, containing the created point.
1311         #
1312         #  @ref swig_MakeVertexOnSurfaceByCoord "Example"
1313         @ManageTransactions("BasicOp")
1314         def MakeVertexOnSurfaceByCoord(self, theRefSurf, theX, theY, theZ, theName=None):
1315             """
1316             Create a point by projection give coordinates on the given surface
1317
1318             Parameters:
1319                 theRefSurf The referenced surface.
1320                 theX X-coordinate in 3D space
1321                 theY Y-coordinate in 3D space
1322                 theZ Z-coordinate in 3D space
1323                 theName Object name; when specified, this parameter is used
1324                         for result publication in the study. Otherwise, if automatic
1325                         publication is switched on, default value is used for result name.
1326
1327             Returns:
1328                 New GEOM.GEOM_Object, containing the created point.
1329
1330             Example of usage:
1331                 p_on_face2 = geompy.MakeVertexOnSurfaceByCoord(Face, 0., 0., 0.)
1332             """
1333             theX, theY, theZ, Parameters = ParseParameters(theX, theY, theZ)
1334             # Example: see GEOM_TestAll.py
1335             anObj = self.BasicOp.MakePointOnSurfaceByCoord(theRefSurf, theX, theY, theZ)
1336             RaiseIfFailed("MakeVertexOnSurfaceByCoord", self.BasicOp)
1337             anObj.SetParameters(Parameters);
1338             self._autoPublish(anObj, theName, "vertex")
1339             return anObj
1340
1341         ## Create a point, which lays on the given face.
1342         #  The point will lay in arbitrary place of the face.
1343         #  The only condition on it is a non-zero distance to the face boundary.
1344         #  Such point can be used to uniquely identify the face inside any
1345         #  shape in case, when the shape does not contain overlapped faces.
1346         #  @param theFace The referenced face.
1347         #  @param theName Object name; when specified, this parameter is used
1348         #         for result publication in the study. Otherwise, if automatic
1349         #         publication is switched on, default value is used for result name.
1350         #
1351         #  @return New GEOM.GEOM_Object, containing the created point.
1352         #
1353         #  @ref swig_MakeVertexInsideFace "Example"
1354         @ManageTransactions("BasicOp")
1355         def MakeVertexInsideFace (self, theFace, theName=None):
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
1363             Parameters:
1364                 theFace The referenced face.
1365                 theName Object name; when specified, this parameter is used
1366                         for result publication in the study. Otherwise, if automatic
1367                         publication is switched on, default value is used for result name.
1368
1369             Returns:
1370                 New GEOM.GEOM_Object, containing the created point.
1371
1372             Example of usage:
1373                 p_on_face = geompy.MakeVertexInsideFace(Face)
1374             """
1375             # Example: see GEOM_TestAll.py
1376             anObj = self.BasicOp.MakePointOnFace(theFace)
1377             RaiseIfFailed("MakeVertexInsideFace", self.BasicOp)
1378             self._autoPublish(anObj, theName, "vertex")
1379             return anObj
1380
1381         ## Create a point on intersection of two lines.
1382         #  @param theRefLine1, theRefLine2 The referenced lines.
1383         #  @param theName Object name; when specified, this parameter is used
1384         #         for result publication in the study. Otherwise, if automatic
1385         #         publication is switched on, default value is used for result name.
1386         #
1387         #  @return New GEOM.GEOM_Object, containing the created point.
1388         #
1389         #  @ref swig_MakeVertexOnLinesIntersection "Example"
1390         @ManageTransactions("BasicOp")
1391         def MakeVertexOnLinesIntersection(self, theRefLine1, theRefLine2, theName=None):
1392             """
1393             Create a point on intersection of two lines.
1394
1395             Parameters:
1396                 theRefLine1, theRefLine2 The referenced lines.
1397                 theName Object name; when specified, this parameter is used
1398                         for result publication in the study. Otherwise, if automatic
1399                         publication is switched on, default value is used for result name.
1400
1401             Returns:
1402                 New GEOM.GEOM_Object, containing the created point.
1403             """
1404             # Example: see GEOM_TestAll.py
1405             anObj = self.BasicOp.MakePointOnLinesIntersection(theRefLine1, theRefLine2)
1406             RaiseIfFailed("MakePointOnLinesIntersection", self.BasicOp)
1407             self._autoPublish(anObj, theName, "vertex")
1408             return anObj
1409
1410         ## Create a tangent, corresponding to the given parameter on the given curve.
1411         #  @param theRefCurve The referenced curve.
1412         #  @param theParameter Value of parameter on the referenced curve.
1413         #  @param 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         #  @return New GEOM.GEOM_Object, containing the created tangent.
1418         #
1419         #  @ref swig_MakeTangentOnCurve "Example"
1420         @ManageTransactions("BasicOp")
1421         def MakeTangentOnCurve(self, theRefCurve, theParameter, theName=None):
1422             """
1423             Create a tangent, corresponding to the given parameter on the given curve.
1424
1425             Parameters:
1426                 theRefCurve The referenced curve.
1427                 theParameter Value of parameter on the referenced curve.
1428                 theName Object name; when specified, this parameter is used
1429                         for result publication in the study. Otherwise, if automatic
1430                         publication is switched on, default value is used for result name.
1431
1432             Returns:
1433                 New GEOM.GEOM_Object, containing the created tangent.
1434
1435             Example of usage:
1436                 tan_on_arc = geompy.MakeTangentOnCurve(Arc, 0.7)
1437             """
1438             anObj = self.BasicOp.MakeTangentOnCurve(theRefCurve, theParameter)
1439             RaiseIfFailed("MakeTangentOnCurve", self.BasicOp)
1440             self._autoPublish(anObj, theName, "tangent")
1441             return anObj
1442
1443         ## Create a tangent plane, corresponding to the given parameter on the given face.
1444         #  @param theFace The face for which tangent plane should be built.
1445         #  @param theParameterV vertical value of the center point (0.0 - 1.0).
1446         #  @param theParameterU horisontal value of the center point (0.0 - 1.0).
1447         #  @param theTrimSize the size of plane.
1448         #  @param theName Object name; when specified, this parameter is used
1449         #         for result publication in the study. Otherwise, if automatic
1450         #         publication is switched on, default value is used for result name.
1451         #
1452         #  @return New GEOM.GEOM_Object, containing the created tangent.
1453         #
1454         #  @ref swig_MakeTangentPlaneOnFace "Example"
1455         @ManageTransactions("BasicOp")
1456         def MakeTangentPlaneOnFace(self, theFace, theParameterU, theParameterV, theTrimSize, theName=None):
1457             """
1458             Create a tangent plane, corresponding to the given parameter on the given face.
1459
1460             Parameters:
1461                 theFace The face for which tangent plane should be built.
1462                 theParameterV vertical value of the center point (0.0 - 1.0).
1463                 theParameterU horisontal value of the center point (0.0 - 1.0).
1464                 theTrimSize the size of plane.
1465                 theName Object name; when specified, this parameter is used
1466                         for result publication in the study. Otherwise, if automatic
1467                         publication is switched on, default value is used for result name.
1468
1469            Returns:
1470                 New GEOM.GEOM_Object, containing the created tangent.
1471
1472            Example of usage:
1473                 an_on_face = geompy.MakeTangentPlaneOnFace(tan_extrusion, 0.7, 0.5, 150)
1474             """
1475             anObj = self.BasicOp.MakeTangentPlaneOnFace(theFace, theParameterU, theParameterV, theTrimSize)
1476             RaiseIfFailed("MakeTangentPlaneOnFace", self.BasicOp)
1477             self._autoPublish(anObj, theName, "tangent")
1478             return anObj
1479
1480         ## Create a vector with the given components.
1481         #  @param theDX X component of the vector.
1482         #  @param theDY Y component of the vector.
1483         #  @param theDZ Z component of the vector.
1484         #  @param theName Object name; when specified, this parameter is used
1485         #         for result publication in the study. Otherwise, if automatic
1486         #         publication is switched on, default value is used for result name.
1487         #
1488         #  @return New GEOM.GEOM_Object, containing the created vector.
1489         #
1490         #  @ref tui_creation_vector "Example"
1491         @ManageTransactions("BasicOp")
1492         def MakeVectorDXDYDZ(self, theDX, theDY, theDZ, theName=None):
1493             """
1494             Create a vector with the given components.
1495
1496             Parameters:
1497                 theDX X component of the vector.
1498                 theDY Y component of the vector.
1499                 theDZ Z component of the vector.
1500                 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             Returns:
1505                 New GEOM.GEOM_Object, containing the created vector.
1506             """
1507             # Example: see GEOM_TestAll.py
1508             theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
1509             anObj = self.BasicOp.MakeVectorDXDYDZ(theDX, theDY, theDZ)
1510             RaiseIfFailed("MakeVectorDXDYDZ", self.BasicOp)
1511             anObj.SetParameters(Parameters)
1512             self._autoPublish(anObj, theName, "vector")
1513             return anObj
1514
1515         ## Create a vector between two points.
1516         #  @param thePnt1 Start point for the vector.
1517         #  @param thePnt2 End point for the vector.
1518         #  @param theName Object name; when specified, this parameter is used
1519         #         for result publication in the study. Otherwise, if automatic
1520         #         publication is switched on, default value is used for result name.
1521         #
1522         #  @return New GEOM.GEOM_Object, containing the created vector.
1523         #
1524         #  @ref tui_creation_vector "Example"
1525         @ManageTransactions("BasicOp")
1526         def MakeVector(self, thePnt1, thePnt2, theName=None):
1527             """
1528             Create a vector between two points.
1529
1530             Parameters:
1531                 thePnt1 Start point for the vector.
1532                 thePnt2 End point for the vector.
1533                 theName Object name; when specified, this parameter is used
1534                         for result publication in the study. Otherwise, if automatic
1535                         publication is switched on, default value is used for result name.
1536
1537             Returns:
1538                 New GEOM.GEOM_Object, containing the created vector.
1539             """
1540             # Example: see GEOM_TestAll.py
1541             anObj = self.BasicOp.MakeVectorTwoPnt(thePnt1, thePnt2)
1542             RaiseIfFailed("MakeVectorTwoPnt", self.BasicOp)
1543             self._autoPublish(anObj, theName, "vector")
1544             return anObj
1545
1546         ## Create a line, passing through the given point
1547         #  and parrallel to the given direction
1548         #  @param thePnt Point. The resulting line will pass through it.
1549         #  @param theDir Direction. The resulting line will be parallel to it.
1550         #  @param theName Object name; when specified, this parameter is used
1551         #         for result publication in the study. Otherwise, if automatic
1552         #         publication is switched on, default value is used for result name.
1553         #
1554         #  @return New GEOM.GEOM_Object, containing the created line.
1555         #
1556         #  @ref tui_creation_line "Example"
1557         @ManageTransactions("BasicOp")
1558         def MakeLine(self, thePnt, theDir, theName=None):
1559             """
1560             Create a line, passing through the given point
1561             and parrallel to the given direction
1562
1563             Parameters:
1564                 thePnt Point. The resulting line will pass through it.
1565                 theDir Direction. The resulting line will be parallel to it.
1566                 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             Returns:
1571                 New GEOM.GEOM_Object, containing the created line.
1572             """
1573             # Example: see GEOM_TestAll.py
1574             anObj = self.BasicOp.MakeLine(thePnt, theDir)
1575             RaiseIfFailed("MakeLine", self.BasicOp)
1576             self._autoPublish(anObj, theName, "line")
1577             return anObj
1578
1579         ## Create a line, passing through the given points
1580         #  @param thePnt1 First of two points, defining the line.
1581         #  @param thePnt2 Second of two points, defining the line.
1582         #  @param 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         #  @return New GEOM.GEOM_Object, containing the created line.
1587         #
1588         #  @ref tui_creation_line "Example"
1589         @ManageTransactions("BasicOp")
1590         def MakeLineTwoPnt(self, thePnt1, thePnt2, theName=None):
1591             """
1592             Create a line, passing through the given points
1593
1594             Parameters:
1595                 thePnt1 First of two points, defining the line.
1596                 thePnt2 Second of two points, defining the line.
1597                 theName Object name; when specified, this parameter is used
1598                         for result publication in the study. Otherwise, if automatic
1599                         publication is switched on, default value is used for result name.
1600
1601             Returns:
1602                 New GEOM.GEOM_Object, containing the created line.
1603             """
1604             # Example: see GEOM_TestAll.py
1605             anObj = self.BasicOp.MakeLineTwoPnt(thePnt1, thePnt2)
1606             RaiseIfFailed("MakeLineTwoPnt", self.BasicOp)
1607             self._autoPublish(anObj, theName, "line")
1608             return anObj
1609
1610         ## Create a line on two faces intersection.
1611         #  @param theFace1 First of two faces, defining the line.
1612         #  @param theFace2 Second of two faces, defining the line.
1613         #  @param 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         #  @return New GEOM.GEOM_Object, containing the created line.
1618         #
1619         #  @ref swig_MakeLineTwoFaces "Example"
1620         @ManageTransactions("BasicOp")
1621         def MakeLineTwoFaces(self, theFace1, theFace2, theName=None):
1622             """
1623             Create a line on two faces intersection.
1624
1625             Parameters:
1626                 theFace1 First of two faces, defining the line.
1627                 theFace2 Second of two faces, defining the line.
1628                 theName Object name; when specified, this parameter is used
1629                         for result publication in the study. Otherwise, if automatic
1630                         publication is switched on, default value is used for result name.
1631
1632             Returns:
1633                 New GEOM.GEOM_Object, containing the created line.
1634             """
1635             # Example: see GEOM_TestAll.py
1636             anObj = self.BasicOp.MakeLineTwoFaces(theFace1, theFace2)
1637             RaiseIfFailed("MakeLineTwoFaces", self.BasicOp)
1638             self._autoPublish(anObj, theName, "line")
1639             return anObj
1640
1641         ## Create a plane, passing through the given point
1642         #  and normal to the given vector.
1643         #  @param thePnt Point, the plane has to pass through.
1644         #  @param theVec Vector, defining the plane normal direction.
1645         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1646         #  @param theName Object name; when specified, this parameter is used
1647         #         for result publication in the study. Otherwise, if automatic
1648         #         publication is switched on, default value is used for result name.
1649         #
1650         #  @return New GEOM.GEOM_Object, containing the created plane.
1651         #
1652         #  @ref tui_creation_plane "Example"
1653         @ManageTransactions("BasicOp")
1654         def MakePlane(self, thePnt, theVec, theTrimSize, theName=None):
1655             """
1656             Create a plane, passing through the given point
1657             and normal to the given vector.
1658
1659             Parameters:
1660                 thePnt Point, the plane has to pass through.
1661                 theVec Vector, defining the plane normal direction.
1662                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1663                 theName Object name; when specified, this parameter is used
1664                         for result publication in the study. Otherwise, if automatic
1665                         publication is switched on, default value is used for result name.
1666
1667             Returns:
1668                 New GEOM.GEOM_Object, containing the created plane.
1669             """
1670             # Example: see GEOM_TestAll.py
1671             theTrimSize, Parameters = ParseParameters(theTrimSize);
1672             anObj = self.BasicOp.MakePlanePntVec(thePnt, theVec, theTrimSize)
1673             RaiseIfFailed("MakePlanePntVec", self.BasicOp)
1674             anObj.SetParameters(Parameters)
1675             self._autoPublish(anObj, theName, "plane")
1676             return anObj
1677
1678         ## Create a plane, passing through the three given points
1679         #  @param thePnt1 First of three points, defining the plane.
1680         #  @param thePnt2 Second of three points, defining the plane.
1681         #  @param thePnt3 Fird of three points, defining the plane.
1682         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1683         #  @param theName Object name; when specified, this parameter is used
1684         #         for result publication in the study. Otherwise, if automatic
1685         #         publication is switched on, default value is used for result name.
1686         #
1687         #  @return New GEOM.GEOM_Object, containing the created plane.
1688         #
1689         #  @ref tui_creation_plane "Example"
1690         @ManageTransactions("BasicOp")
1691         def MakePlaneThreePnt(self, thePnt1, thePnt2, thePnt3, theTrimSize, theName=None):
1692             """
1693             Create a plane, passing through the three given points
1694
1695             Parameters:
1696                 thePnt1 First of three points, defining the plane.
1697                 thePnt2 Second of three points, defining the plane.
1698                 thePnt3 Fird of three points, defining the plane.
1699                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1700                 theName Object name; when specified, this parameter is used
1701                         for result publication in the study. Otherwise, if automatic
1702                         publication is switched on, default value is used for result name.
1703
1704             Returns:
1705                 New GEOM.GEOM_Object, containing the created plane.
1706             """
1707             # Example: see GEOM_TestAll.py
1708             theTrimSize, Parameters = ParseParameters(theTrimSize);
1709             anObj = self.BasicOp.MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize)
1710             RaiseIfFailed("MakePlaneThreePnt", self.BasicOp)
1711             anObj.SetParameters(Parameters)
1712             self._autoPublish(anObj, theName, "plane")
1713             return anObj
1714
1715         ## Create a plane, similar to the existing one, but with another size of representing face.
1716         #  @param theFace Referenced plane or LCS(Marker).
1717         #  @param theTrimSize New half size of a side of quadrangle face, representing the plane.
1718         #  @param theName Object name; when specified, this parameter is used
1719         #         for result publication in the study. Otherwise, if automatic
1720         #         publication is switched on, default value is used for result name.
1721         #
1722         #  @return New GEOM.GEOM_Object, containing the created plane.
1723         #
1724         #  @ref tui_creation_plane "Example"
1725         @ManageTransactions("BasicOp")
1726         def MakePlaneFace(self, theFace, theTrimSize, theName=None):
1727             """
1728             Create a plane, similar to the existing one, but with another size of representing face.
1729
1730             Parameters:
1731                 theFace Referenced plane or LCS(Marker).
1732                 theTrimSize New half size of a side of quadrangle face, representing the plane.
1733                 theName Object name; when specified, this parameter is used
1734                         for result publication in the study. Otherwise, if automatic
1735                         publication is switched on, default value is used for result name.
1736
1737             Returns:
1738                 New GEOM.GEOM_Object, containing the created plane.
1739             """
1740             # Example: see GEOM_TestAll.py
1741             theTrimSize, Parameters = ParseParameters(theTrimSize);
1742             anObj = self.BasicOp.MakePlaneFace(theFace, theTrimSize)
1743             RaiseIfFailed("MakePlaneFace", self.BasicOp)
1744             anObj.SetParameters(Parameters)
1745             self._autoPublish(anObj, theName, "plane")
1746             return anObj
1747
1748         ## Create a plane, passing through the 2 vectors
1749         #  with center in a start point of the first vector.
1750         #  @param theVec1 Vector, defining center point and plane direction.
1751         #  @param theVec2 Vector, defining the plane normal direction.
1752         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1753         #  @param theName Object name; when specified, this parameter is used
1754         #         for result publication in the study. Otherwise, if automatic
1755         #         publication is switched on, default value is used for result name.
1756         #
1757         #  @return New GEOM.GEOM_Object, containing the created plane.
1758         #
1759         #  @ref tui_creation_plane "Example"
1760         @ManageTransactions("BasicOp")
1761         def MakePlane2Vec(self, theVec1, theVec2, theTrimSize, theName=None):
1762             """
1763             Create a plane, passing through the 2 vectors
1764             with center in a start point of the first vector.
1765
1766             Parameters:
1767                 theVec1 Vector, defining center point and plane direction.
1768                 theVec2 Vector, defining the plane normal direction.
1769                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1770                 theName Object name; when specified, this parameter is used
1771                         for result publication in the study. Otherwise, if automatic
1772                         publication is switched on, default value is used for result name.
1773
1774             Returns:
1775                 New GEOM.GEOM_Object, containing the created plane.
1776             """
1777             # Example: see GEOM_TestAll.py
1778             theTrimSize, Parameters = ParseParameters(theTrimSize);
1779             anObj = self.BasicOp.MakePlane2Vec(theVec1, theVec2, theTrimSize)
1780             RaiseIfFailed("MakePlane2Vec", self.BasicOp)
1781             anObj.SetParameters(Parameters)
1782             self._autoPublish(anObj, theName, "plane")
1783             return anObj
1784
1785         ## Create a plane, based on a Local coordinate system.
1786         #  @param theLCS  coordinate system, defining plane.
1787         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1788         #  @param theOrientation OXY, OYZ or OZX orientation - (1, 2 or 3)
1789         #  @param theName Object name; when specified, this parameter is used
1790         #         for result publication in the study. Otherwise, if automatic
1791         #         publication is switched on, default value is used for result name.
1792         #
1793         #  @return New GEOM.GEOM_Object, containing the created plane.
1794         #
1795         #  @ref tui_creation_plane "Example"
1796         @ManageTransactions("BasicOp")
1797         def MakePlaneLCS(self, theLCS, theTrimSize, theOrientation, theName=None):
1798             """
1799             Create a plane, based on a Local coordinate system.
1800
1801            Parameters:
1802                 theLCS  coordinate system, defining plane.
1803                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1804                 theOrientation OXY, OYZ or OZX orientation - (1, 2 or 3)
1805                 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             Returns:
1810                 New GEOM.GEOM_Object, containing the created plane.
1811             """
1812             # Example: see GEOM_TestAll.py
1813             theTrimSize, Parameters = ParseParameters(theTrimSize);
1814             anObj = self.BasicOp.MakePlaneLCS(theLCS, theTrimSize, theOrientation)
1815             RaiseIfFailed("MakePlaneLCS", self.BasicOp)
1816             anObj.SetParameters(Parameters)
1817             self._autoPublish(anObj, theName, "plane")
1818             return anObj
1819
1820         ## Create a local coordinate system.
1821         #  @param OX,OY,OZ Three coordinates of coordinate system origin.
1822         #  @param XDX,XDY,XDZ Three components of OX direction
1823         #  @param YDX,YDY,YDZ Three components of OY direction
1824         #  @param theName Object name; when specified, this parameter is used
1825         #         for result publication in the study. Otherwise, if automatic
1826         #         publication is switched on, default value is used for result name.
1827         #
1828         #  @return New GEOM.GEOM_Object, containing the created coordinate system.
1829         #
1830         #  @ref swig_MakeMarker "Example"
1831         @ManageTransactions("BasicOp")
1832         def MakeMarker(self, OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ, theName=None):
1833             """
1834             Create a local coordinate system.
1835
1836             Parameters:
1837                 OX,OY,OZ Three coordinates of coordinate system origin.
1838                 XDX,XDY,XDZ Three components of OX direction
1839                 YDX,YDY,YDZ Three components of OY direction
1840                 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             Returns:
1845                 New GEOM.GEOM_Object, containing the created coordinate system.
1846             """
1847             # Example: see GEOM_TestAll.py
1848             OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ, Parameters = ParseParameters(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ);
1849             anObj = self.BasicOp.MakeMarker(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ)
1850             RaiseIfFailed("MakeMarker", self.BasicOp)
1851             anObj.SetParameters(Parameters)
1852             self._autoPublish(anObj, theName, "lcs")
1853             return anObj
1854
1855         ## Create a local coordinate system from shape.
1856         #  @param theShape The initial shape to detect the coordinate system.
1857         #  @param theName Object name; when specified, this parameter is used
1858         #         for result publication in the study. Otherwise, if automatic
1859         #         publication is switched on, default value is used for result name.
1860         #
1861         #  @return New GEOM.GEOM_Object, containing the created coordinate system.
1862         #
1863         #  @ref tui_creation_lcs "Example"
1864         @ManageTransactions("BasicOp")
1865         def MakeMarkerFromShape(self, theShape, theName=None):
1866             """
1867             Create a local coordinate system from shape.
1868
1869             Parameters:
1870                 theShape The initial shape to detect the coordinate system.
1871                 theName Object name; when specified, this parameter is used
1872                         for result publication in the study. Otherwise, if automatic
1873                         publication is switched on, default value is used for result name.
1874
1875             Returns:
1876                 New GEOM.GEOM_Object, containing the created coordinate system.
1877             """
1878             anObj = self.BasicOp.MakeMarkerFromShape(theShape)
1879             RaiseIfFailed("MakeMarkerFromShape", self.BasicOp)
1880             self._autoPublish(anObj, theName, "lcs")
1881             return anObj
1882
1883         ## Create a local coordinate system from point and two vectors.
1884         #  @param theOrigin Point of coordinate system origin.
1885         #  @param theXVec Vector of X direction
1886         #  @param theYVec Vector of Y direction
1887         #  @param 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         #  @return New GEOM.GEOM_Object, containing the created coordinate system.
1892         #
1893         #  @ref tui_creation_lcs "Example"
1894         @ManageTransactions("BasicOp")
1895         def MakeMarkerPntTwoVec(self, theOrigin, theXVec, theYVec, theName=None):
1896             """
1897             Create a local coordinate system from point and two vectors.
1898
1899             Parameters:
1900                 theOrigin Point of coordinate system origin.
1901                 theXVec Vector of X direction
1902                 theYVec Vector of Y direction
1903                 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             Returns:
1908                 New GEOM.GEOM_Object, containing the created coordinate system.
1909
1910             """
1911             anObj = self.BasicOp.MakeMarkerPntTwoVec(theOrigin, theXVec, theYVec)
1912             RaiseIfFailed("MakeMarkerPntTwoVec", self.BasicOp)
1913             self._autoPublish(anObj, theName, "lcs")
1914             return anObj
1915
1916         # end of l3_basic_go
1917         ## @}
1918
1919         ## @addtogroup l4_curves
1920         ## @{
1921
1922         ##  Create an arc of circle, passing through three given points.
1923         #  @param thePnt1 Start point of the arc.
1924         #  @param thePnt2 Middle point of the arc.
1925         #  @param thePnt3 End point of the arc.
1926         #  @param theName Object name; when specified, this parameter is used
1927         #         for result publication in the study. Otherwise, if automatic
1928         #         publication is switched on, default value is used for result name.
1929         #
1930         #  @return New GEOM.GEOM_Object, containing the created arc.
1931         #
1932         #  @ref swig_MakeArc "Example"
1933         @ManageTransactions("CurvesOp")
1934         def MakeArc(self, thePnt1, thePnt2, thePnt3, theName=None):
1935             """
1936             Create an arc of circle, passing through three given points.
1937
1938             Parameters:
1939                 thePnt1 Start point of the arc.
1940                 thePnt2 Middle point of the arc.
1941                 thePnt3 End point of the arc.
1942                 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             Returns:
1947                 New GEOM.GEOM_Object, containing the created arc.
1948             """
1949             # Example: see GEOM_TestAll.py
1950             anObj = self.CurvesOp.MakeArc(thePnt1, thePnt2, thePnt3)
1951             RaiseIfFailed("MakeArc", self.CurvesOp)
1952             self._autoPublish(anObj, theName, "arc")
1953             return anObj
1954
1955         ##  Create an arc of circle from a center and 2 points.
1956         #  @param thePnt1 Center of the arc
1957         #  @param thePnt2 Start point of the arc. (Gives also the radius of the arc)
1958         #  @param thePnt3 End point of the arc (Gives also a direction)
1959         #  @param theSense Orientation of the arc
1960         #  @param theName Object name; when specified, this parameter is used
1961         #         for result publication in the study. Otherwise, if automatic
1962         #         publication is switched on, default value is used for result name.
1963         #
1964         #  @return New GEOM.GEOM_Object, containing the created arc.
1965         #
1966         #  @ref swig_MakeArc "Example"
1967         @ManageTransactions("CurvesOp")
1968         def MakeArcCenter(self, thePnt1, thePnt2, thePnt3, theSense=False, theName=None):
1969             """
1970             Create an arc of circle from a center and 2 points.
1971
1972             Parameters:
1973                 thePnt1 Center of the arc
1974                 thePnt2 Start point of the arc. (Gives also the radius of the arc)
1975                 thePnt3 End point of the arc (Gives also a direction)
1976                 theSense Orientation of the arc
1977                 theName Object name; when specified, this parameter is used
1978                         for result publication in the study. Otherwise, if automatic
1979                         publication is switched on, default value is used for result name.
1980
1981             Returns:
1982                 New GEOM.GEOM_Object, containing the created arc.
1983             """
1984             # Example: see GEOM_TestAll.py
1985             anObj = self.CurvesOp.MakeArcCenter(thePnt1, thePnt2, thePnt3, theSense)
1986             RaiseIfFailed("MakeArcCenter", self.CurvesOp)
1987             self._autoPublish(anObj, theName, "arc")
1988             return anObj
1989
1990         ##  Create an arc of ellipse, of center and two points.
1991         #  @param theCenter Center of the arc.
1992         #  @param thePnt1 defines major radius of the arc by distance from Pnt1 to Pnt2.
1993         #  @param thePnt2 defines plane of ellipse and minor radius as distance from Pnt3 to line from Pnt1 to Pnt2.
1994         #  @param theName Object name; when specified, this parameter is used
1995         #         for result publication in the study. Otherwise, if automatic
1996         #         publication is switched on, default value is used for result name.
1997         #
1998         #  @return New GEOM.GEOM_Object, containing the created arc.
1999         #
2000         #  @ref swig_MakeArc "Example"
2001         @ManageTransactions("CurvesOp")
2002         def MakeArcOfEllipse(self, theCenter, thePnt1, thePnt2, theName=None):
2003             """
2004             Create an arc of ellipse, of center and two points.
2005
2006             Parameters:
2007                 theCenter Center of the arc.
2008                 thePnt1 defines major radius of the arc by distance from Pnt1 to Pnt2.
2009                 thePnt2 defines plane of ellipse and minor radius as distance from Pnt3 to line from Pnt1 to Pnt2.
2010                 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             Returns:
2015                 New GEOM.GEOM_Object, containing the created arc.
2016             """
2017             # Example: see GEOM_TestAll.py
2018             anObj = self.CurvesOp.MakeArcOfEllipse(theCenter, thePnt1, thePnt2)
2019             RaiseIfFailed("MakeArcOfEllipse", self.CurvesOp)
2020             self._autoPublish(anObj, theName, "arc")
2021             return anObj
2022
2023         ## Create a circle with given center, normal vector and radius.
2024         #  @param thePnt Circle center.
2025         #  @param theVec Vector, normal to the plane of the circle.
2026         #  @param theR Circle radius.
2027         #  @param theName Object name; when specified, this parameter is used
2028         #         for result publication in the study. Otherwise, if automatic
2029         #         publication is switched on, default value is used for result name.
2030         #
2031         #  @return New GEOM.GEOM_Object, containing the created circle.
2032         #
2033         #  @ref tui_creation_circle "Example"
2034         @ManageTransactions("CurvesOp")
2035         def MakeCircle(self, thePnt, theVec, theR, theName=None):
2036             """
2037             Create a circle with given center, normal vector and radius.
2038
2039             Parameters:
2040                 thePnt Circle center.
2041                 theVec Vector, normal to the plane of the circle.
2042                 theR Circle radius.
2043                 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             Returns:
2048                 New GEOM.GEOM_Object, containing the created circle.
2049             """
2050             # Example: see GEOM_TestAll.py
2051             theR, Parameters = ParseParameters(theR)
2052             anObj = self.CurvesOp.MakeCirclePntVecR(thePnt, theVec, theR)
2053             RaiseIfFailed("MakeCirclePntVecR", self.CurvesOp)
2054             anObj.SetParameters(Parameters)
2055             self._autoPublish(anObj, theName, "circle")
2056             return anObj
2057
2058         ## Create a circle with given radius.
2059         #  Center of the circle will be in the origin of global
2060         #  coordinate system and normal vector will be codirected with Z axis
2061         #  @param theR Circle radius.
2062         #  @param theName Object name; when specified, this parameter is used
2063         #         for result publication in the study. Otherwise, if automatic
2064         #         publication is switched on, default value is used for result name.
2065         #
2066         #  @return New GEOM.GEOM_Object, containing the created circle.
2067         @ManageTransactions("CurvesOp")
2068         def MakeCircleR(self, theR, theName=None):
2069             """
2070             Create a circle with given radius.
2071             Center of the circle will be in the origin of global
2072             coordinate system and normal vector will be codirected with Z axis
2073
2074             Parameters:
2075                 theR Circle radius.
2076                 theName Object name; when specified, this parameter is used
2077                         for result publication in the study. Otherwise, if automatic
2078                         publication is switched on, default value is used for result name.
2079
2080             Returns:
2081                 New GEOM.GEOM_Object, containing the created circle.
2082             """
2083             anObj = self.CurvesOp.MakeCirclePntVecR(None, None, theR)
2084             RaiseIfFailed("MakeCirclePntVecR", self.CurvesOp)
2085             self._autoPublish(anObj, theName, "circle")
2086             return anObj
2087
2088         ## Create a circle, passing through three given points
2089         #  @param thePnt1,thePnt2,thePnt3 Points, defining the circle.
2090         #  @param theName Object name; when specified, this parameter is used
2091         #         for result publication in the study. Otherwise, if automatic
2092         #         publication is switched on, default value is used for result name.
2093         #
2094         #  @return New GEOM.GEOM_Object, containing the created circle.
2095         #
2096         #  @ref tui_creation_circle "Example"
2097         @ManageTransactions("CurvesOp")
2098         def MakeCircleThreePnt(self, thePnt1, thePnt2, thePnt3, theName=None):
2099             """
2100             Create a circle, passing through three given points
2101
2102             Parameters:
2103                 thePnt1,thePnt2,thePnt3 Points, defining the circle.
2104                 theName Object name; when specified, this parameter is used
2105                         for result publication in the study. Otherwise, if automatic
2106                         publication is switched on, default value is used for result name.
2107
2108             Returns:
2109                 New GEOM.GEOM_Object, containing the created circle.
2110             """
2111             # Example: see GEOM_TestAll.py
2112             anObj = self.CurvesOp.MakeCircleThreePnt(thePnt1, thePnt2, thePnt3)
2113             RaiseIfFailed("MakeCircleThreePnt", self.CurvesOp)
2114             self._autoPublish(anObj, theName, "circle")
2115             return anObj
2116
2117         ## Create a circle, with given point1 as center,
2118         #  passing through the point2 as radius and laying in the plane,
2119         #  defined by all three given points.
2120         #  @param thePnt1,thePnt2,thePnt3 Points, defining the circle.
2121         #  @param theName Object name; when specified, this parameter is used
2122         #         for result publication in the study. Otherwise, if automatic
2123         #         publication is switched on, default value is used for result name.
2124         #
2125         #  @return New GEOM.GEOM_Object, containing the created circle.
2126         #
2127         #  @ref swig_MakeCircle "Example"
2128         @ManageTransactions("CurvesOp")
2129         def MakeCircleCenter2Pnt(self, thePnt1, thePnt2, thePnt3, theName=None):
2130             """
2131             Create a circle, with given point1 as center,
2132             passing through the point2 as radius and laying in the plane,
2133             defined by all three given points.
2134
2135             Parameters:
2136                 thePnt1,thePnt2,thePnt3 Points, defining the circle.
2137                 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             Returns:
2142                 New GEOM.GEOM_Object, containing the created circle.
2143             """
2144             # Example: see GEOM_example6.py
2145             anObj = self.CurvesOp.MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3)
2146             RaiseIfFailed("MakeCircleCenter2Pnt", self.CurvesOp)
2147             self._autoPublish(anObj, theName, "circle")
2148             return anObj
2149
2150         ## Create an ellipse with given center, normal vector and radiuses.
2151         #  @param thePnt Ellipse center.
2152         #  @param theVec Vector, normal to the plane of the ellipse.
2153         #  @param theRMajor Major ellipse radius.
2154         #  @param theRMinor Minor ellipse radius.
2155         #  @param theVecMaj Vector, direction of the ellipse's main axis.
2156         #  @param theName Object name; when specified, this parameter is used
2157         #         for result publication in the study. Otherwise, if automatic
2158         #         publication is switched on, default value is used for result name.
2159         #
2160         #  @return New GEOM.GEOM_Object, containing the created ellipse.
2161         #
2162         #  @ref tui_creation_ellipse "Example"
2163         @ManageTransactions("CurvesOp")
2164         def MakeEllipse(self, thePnt, theVec, theRMajor, theRMinor, theVecMaj=None, theName=None):
2165             """
2166             Create an ellipse with given center, normal vector and radiuses.
2167
2168             Parameters:
2169                 thePnt Ellipse center.
2170                 theVec Vector, normal to the plane of the ellipse.
2171                 theRMajor Major ellipse radius.
2172                 theRMinor Minor ellipse radius.
2173                 theVecMaj Vector, direction of the ellipse's main axis.
2174                 theName Object name; when specified, this parameter is used
2175                         for result publication in the study. Otherwise, if automatic
2176                         publication is switched on, default value is used for result name.
2177
2178             Returns:
2179                 New GEOM.GEOM_Object, containing the created ellipse.
2180             """
2181             # Example: see GEOM_TestAll.py
2182             theRMajor, theRMinor, Parameters = ParseParameters(theRMajor, theRMinor)
2183             if theVecMaj is not None:
2184                 anObj = self.CurvesOp.MakeEllipseVec(thePnt, theVec, theRMajor, theRMinor, theVecMaj)
2185             else:
2186                 anObj = self.CurvesOp.MakeEllipse(thePnt, theVec, theRMajor, theRMinor)
2187                 pass
2188             RaiseIfFailed("MakeEllipse", self.CurvesOp)
2189             anObj.SetParameters(Parameters)
2190             self._autoPublish(anObj, theName, "ellipse")
2191             return anObj
2192
2193         ## Create an ellipse with given radiuses.
2194         #  Center of the ellipse will be in the origin of global
2195         #  coordinate system and normal vector will be codirected with Z axis
2196         #  @param theRMajor Major ellipse radius.
2197         #  @param theRMinor Minor ellipse radius.
2198         #  @param theName Object name; when specified, this parameter is used
2199         #         for result publication in the study. Otherwise, if automatic
2200         #         publication is switched on, default value is used for result name.
2201         #
2202         #  @return New GEOM.GEOM_Object, containing the created ellipse.
2203         @ManageTransactions("CurvesOp")
2204         def MakeEllipseRR(self, theRMajor, theRMinor, theName=None):
2205             """
2206             Create an ellipse with given radiuses.
2207             Center of the ellipse will be in the origin of global
2208             coordinate system and normal vector will be codirected with Z axis
2209
2210             Parameters:
2211                 theRMajor Major ellipse radius.
2212                 theRMinor Minor ellipse radius.
2213                 theName Object name; when specified, this parameter is used
2214                         for result publication in the study. Otherwise, if automatic
2215                         publication is switched on, default value is used for result name.
2216
2217             Returns:
2218             New GEOM.GEOM_Object, containing the created ellipse.
2219             """
2220             anObj = self.CurvesOp.MakeEllipse(None, None, theRMajor, theRMinor)
2221             RaiseIfFailed("MakeEllipse", self.CurvesOp)
2222             self._autoPublish(anObj, theName, "ellipse")
2223             return anObj
2224
2225         ## Create a polyline on the set of points.
2226         #  @param thePoints Sequence of points for the polyline.
2227         #  @param theIsClosed If True, build a closed wire.
2228         #  @param theName Object name; when specified, this parameter is used
2229         #         for result publication in the study. Otherwise, if automatic
2230         #         publication is switched on, default value is used for result name.
2231         #
2232         #  @return New GEOM.GEOM_Object, containing the created polyline.
2233         #
2234         #  @ref tui_creation_curve "Example"
2235         @ManageTransactions("CurvesOp")
2236         def MakePolyline(self, thePoints, theIsClosed=False, theName=None):
2237             """
2238             Create a polyline on the set of points.
2239
2240             Parameters:
2241                 thePoints Sequence of points for the polyline.
2242                 theIsClosed If True, build a closed wire.
2243                 theName Object name; when specified, this parameter is used
2244                         for result publication in the study. Otherwise, if automatic
2245                         publication is switched on, default value is used for result name.
2246
2247             Returns:
2248                 New GEOM.GEOM_Object, containing the created polyline.
2249             """
2250             # Example: see GEOM_TestAll.py
2251             anObj = self.CurvesOp.MakePolyline(thePoints, theIsClosed)
2252             RaiseIfFailed("MakePolyline", self.CurvesOp)
2253             self._autoPublish(anObj, theName, "polyline")
2254             return anObj
2255
2256         ## Create bezier curve on the set of points.
2257         #  @param thePoints Sequence of points for the bezier curve.
2258         #  @param theIsClosed If True, build a closed curve.
2259         #  @param 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         #  @return New GEOM.GEOM_Object, containing the created bezier curve.
2264         #
2265         #  @ref tui_creation_curve "Example"
2266         @ManageTransactions("CurvesOp")
2267         def MakeBezier(self, thePoints, theIsClosed=False, theName=None):
2268             """
2269             Create bezier curve on the set of points.
2270
2271             Parameters:
2272                 thePoints Sequence of points for the bezier curve.
2273                 theIsClosed If True, build a closed curve.
2274                 theName Object name; when specified, this parameter is used
2275                         for result publication in the study. Otherwise, if automatic
2276                         publication is switched on, default value is used for result name.
2277
2278             Returns:
2279                 New GEOM.GEOM_Object, containing the created bezier curve.
2280             """
2281             # Example: see GEOM_TestAll.py
2282             anObj = self.CurvesOp.MakeSplineBezier(thePoints, theIsClosed)
2283             RaiseIfFailed("MakeSplineBezier", self.CurvesOp)
2284             self._autoPublish(anObj, theName, "bezier")
2285             return anObj
2286
2287         ## Create B-Spline curve on the set of points.
2288         #  @param thePoints Sequence of points for the B-Spline curve.
2289         #  @param theIsClosed If True, build a closed curve.
2290         #  @param theDoReordering If TRUE, the algo does not follow the order of
2291         #                         \a thePoints but searches for the closest vertex.
2292         #  @param theName Object name; when specified, this parameter is used
2293         #         for result publication in the study. Otherwise, if automatic
2294         #         publication is switched on, default value is used for result name.
2295         #
2296         #  @return New GEOM.GEOM_Object, containing the created B-Spline curve.
2297         #
2298         #  @ref tui_creation_curve "Example"
2299         @ManageTransactions("CurvesOp")
2300         def MakeInterpol(self, thePoints, theIsClosed=False, theDoReordering=False, theName=None):
2301             """
2302             Create B-Spline curve on the set of points.
2303
2304             Parameters:
2305                 thePoints Sequence of points for the B-Spline curve.
2306                 theIsClosed If True, build a closed curve.
2307                 theDoReordering If True, the algo does not follow the order of
2308                                 thePoints but searches for the closest vertex.
2309                 theName Object name; when specified, this parameter is used
2310                         for result publication in the study. Otherwise, if automatic
2311                         publication is switched on, default value is used for result name.
2312
2313             Returns:
2314                 New GEOM.GEOM_Object, containing the created B-Spline curve.
2315             """
2316             # Example: see GEOM_TestAll.py
2317             anObj = self.CurvesOp.MakeSplineInterpolation(thePoints, theIsClosed, theDoReordering)
2318             RaiseIfFailed("MakeInterpol", self.CurvesOp)
2319             self._autoPublish(anObj, theName, "bspline")
2320             return anObj
2321
2322         ## Create B-Spline curve on the set of points.
2323         #  @param thePoints Sequence of points for the B-Spline curve.
2324         #  @param theFirstVec Vector object, defining the curve direction at its first point.
2325         #  @param theLastVec Vector object, defining the curve direction at its last point.
2326         #  @param theName Object name; when specified, this parameter is used
2327         #         for result publication in the study. Otherwise, if automatic
2328         #         publication is switched on, default value is used for result name.
2329         #
2330         #  @return New GEOM.GEOM_Object, containing the created B-Spline curve.
2331         #
2332         #  @ref tui_creation_curve "Example"
2333         @ManageTransactions("CurvesOp")
2334         def MakeInterpolWithTangents(self, thePoints, theFirstVec, theLastVec, theName=None):
2335             """
2336             Create B-Spline curve on the set of points.
2337
2338             Parameters:
2339                 thePoints Sequence of points for the B-Spline curve.
2340                 theFirstVec Vector object, defining the curve direction at its first point.
2341                 theLastVec Vector object, defining the curve direction at its last point.
2342                 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             Returns:
2347                 New GEOM.GEOM_Object, containing the created B-Spline curve.
2348             """
2349             # Example: see GEOM_TestAll.py
2350             anObj = self.CurvesOp.MakeSplineInterpolWithTangents(thePoints, theFirstVec, theLastVec)
2351             RaiseIfFailed("MakeInterpolWithTangents", self.CurvesOp)
2352             self._autoPublish(anObj, theName, "bspline")
2353             return anObj
2354
2355         ## Creates a curve using the parametric definition of the basic points.
2356         #  @param thexExpr parametric equation of the coordinates X.
2357         #  @param theyExpr parametric equation of the coordinates Y.
2358         #  @param thezExpr parametric equation of the coordinates Z.
2359         #  @param theParamMin the minimal value of the parameter.
2360         #  @param theParamMax the maximum value of the parameter.
2361         #  @param theParamStep the number of steps if theNewMethod = True, else step value of the parameter.
2362         #  @param theCurveType the type of the curve,
2363         #         one of GEOM.Polyline, GEOM.Bezier, GEOM.Interpolation.
2364         #  @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.
2365         #  @param theName Object name; when specified, this parameter is used
2366         #         for result publication in the study. Otherwise, if automatic
2367         #         publication is switched on, default value is used for result name.
2368         #
2369         #  @return New GEOM.GEOM_Object, containing the created curve.
2370         #
2371         #  @ref tui_creation_curve "Example"
2372         @ManageTransactions("CurvesOp")
2373         def MakeCurveParametric(self, thexExpr, theyExpr, thezExpr,
2374                                 theParamMin, theParamMax, theParamStep, theCurveType, theNewMethod=False, theName=None ):
2375             """
2376             Creates a curve using the parametric definition of the basic points.
2377
2378             Parameters:
2379                 thexExpr parametric equation of the coordinates X.
2380                 theyExpr parametric equation of the coordinates Y.
2381                 thezExpr parametric equation of the coordinates Z.
2382                 theParamMin the minimal value of the parameter.
2383                 theParamMax the maximum value of the parameter.
2384                 theParamStep the number of steps if theNewMethod = True, else step value of the parameter.
2385                 theCurveType the type of the curve,
2386                              one of GEOM.Polyline, GEOM.Bezier, GEOM.Interpolation.
2387                 theNewMethod flag for switching to the new method if the flag is set to false a deprecated
2388                              method is used which can lead to a bug.
2389                 theName Object name; when specified, this parameter is used
2390                         for result publication in the study. Otherwise, if automatic
2391                         publication is switched on, default value is used for result name.
2392
2393             Returns:
2394                 New GEOM.GEOM_Object, containing the created curve.
2395             """
2396             theParamMin,theParamMax,theParamStep,Parameters = ParseParameters(theParamMin,theParamMax,theParamStep)
2397             if theNewMethod:
2398               anObj = self.CurvesOp.MakeCurveParametricNew(thexExpr,theyExpr,thezExpr,theParamMin,theParamMax,theParamStep,theCurveType)
2399             else:
2400               anObj = self.CurvesOp.MakeCurveParametric(thexExpr,theyExpr,thezExpr,theParamMin,theParamMax,theParamStep,theCurveType)
2401             RaiseIfFailed("MakeSplineInterpolation", self.CurvesOp)
2402             anObj.SetParameters(Parameters)
2403             self._autoPublish(anObj, theName, "curve")
2404             return anObj
2405
2406         ## Create an isoline curve on a face.
2407         #  @param theFace the face for which an isoline is created.
2408         #  @param IsUIsoline True for U-isoline creation; False for V-isoline
2409         #         creation.
2410         #  @param theParameter the U parameter for U-isoline or V parameter
2411         #         for V-isoline.
2412         #  @param theName Object name; when specified, this parameter is used
2413         #         for result publication in the study. Otherwise, if automatic
2414         #         publication is switched on, default value is used for result name.
2415         #
2416         #  @return New GEOM.GEOM_Object, containing the created isoline edge or
2417         #          a compound of edges.
2418         #
2419         #  @ref tui_creation_curve "Example"
2420         @ManageTransactions("CurvesOp")
2421         def MakeIsoline(self, theFace, IsUIsoline, theParameter, theName=None):
2422             """
2423             Create an isoline curve on a face.
2424
2425             Parameters:
2426                 theFace the face for which an isoline is created.
2427                 IsUIsoline True for U-isoline creation; False for V-isoline
2428                            creation.
2429                 theParameter the U parameter for U-isoline or V parameter
2430                              for V-isoline.
2431                 theName Object name; when specified, this parameter is used
2432                         for result publication in the study. Otherwise, if automatic
2433                         publication is switched on, default value is used for result name.
2434
2435             Returns:
2436                 New GEOM.GEOM_Object, containing the created isoline edge or a
2437                 compound of edges.
2438             """
2439             # Example: see GEOM_TestAll.py
2440             anObj = self.CurvesOp.MakeIsoline(theFace, IsUIsoline, theParameter)
2441             RaiseIfFailed("MakeIsoline", self.CurvesOp)
2442             if IsUIsoline:
2443                 self._autoPublish(anObj, theName, "U-Isoline")
2444             else:
2445                 self._autoPublish(anObj, theName, "V-Isoline")
2446             return anObj
2447
2448         # end of l4_curves
2449         ## @}
2450
2451         ## @addtogroup l3_sketcher
2452         ## @{
2453
2454         ## Create a sketcher (wire or face), following the textual description,
2455         #  passed through <VAR>theCommand</VAR> argument. \n
2456         #  Edges of the resulting wire or face will be arcs of circles and/or linear segments. \n
2457         #  Format of the description string have to be the following:
2458         #
2459         #  "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"
2460         #
2461         #  Where:
2462         #  - x1, y1 are coordinates of the first sketcher point (zero by default),
2463         #  - CMD is one of
2464         #     - "R angle" : Set the direction by angle
2465         #     - "D dx dy" : Set the direction by DX & DY
2466         #     .
2467         #       \n
2468         #     - "TT x y" : Create segment by point at X & Y
2469         #     - "T dx dy" : Create segment by point with DX & DY
2470         #     - "L length" : Create segment by direction & Length
2471         #     - "IX x" : Create segment by direction & Intersect. X
2472         #     - "IY y" : Create segment by direction & Intersect. Y
2473         #     .
2474         #       \n
2475         #     - "C radius length" : Create arc by direction, radius and length(in degree)
2476         #     - "AA x y": Create arc by point at X & Y
2477         #     - "A dx dy" : Create arc by point with DX & DY
2478         #     - "UU x y radius flag1": Create arc by point at X & Y with given radiUs
2479         #     - "U dx dy radius flag1" : Create arc by point with DX & DY with given radiUs
2480         #     - "EE x y xc yc flag1 flag2": Create arc by point at X & Y with given cEnter coordinates
2481         #     - "E dx dy dxc dyc radius flag1 flag2" : Create arc by point with DX & DY with given cEnter coordinates
2482         #     .
2483         #       \n
2484         #     - "WW" : Close Wire (to finish)
2485         #     - "WF" : Close Wire and build face (to finish)
2486         #     .
2487         #        \n
2488         #  - Flag1 (= reverse) is 0 or 2 ...
2489         #     - if 0 the drawn arc is the one of lower angle (< Pi)
2490         #     - if 2 the drawn arc ius the one of greater angle (> Pi)
2491         #     .
2492         #        \n
2493         #  - Flag2 (= control tolerance) is 0 or 1 ...
2494         #     - if 0 the specified end point can be at a distance of the arc greater than the tolerance (10^-7)
2495         #     - if 1 the wire is built only if the end point is on the arc
2496         #       with a tolerance of 10^-7 on the distance else the creation fails
2497         #
2498         #  @param theCommand String, defining the sketcher in local
2499         #                    coordinates of the working plane.
2500         #  @param theWorkingPlane Nine double values, defining origin,
2501         #                         OZ and OX directions of the working plane.
2502         #  @param theName Object name; when specified, this parameter is used
2503         #         for result publication in the study. Otherwise, if automatic
2504         #         publication is switched on, default value is used for result name.
2505         #
2506         #  @return New GEOM.GEOM_Object, containing the created wire.
2507         #
2508         #  @ref tui_sketcher_page "Example"
2509         @ManageTransactions("CurvesOp")
2510         def MakeSketcher(self, theCommand, theWorkingPlane = [0,0,0, 0,0,1, 1,0,0], theName=None):
2511             """
2512             Create a sketcher (wire or face), following the textual description, passed
2513             through theCommand argument.
2514             Edges of the resulting wire or face will be arcs of circles and/or linear segments.
2515             Format of the description string have to be the following:
2516                 "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"
2517             Where:
2518             - x1, y1 are coordinates of the first sketcher point (zero by default),
2519             - CMD is one of
2520                - "R angle" : Set the direction by angle
2521                - "D dx dy" : Set the direction by DX & DY
2522
2523                - "TT x y" : Create segment by point at X & Y
2524                - "T dx dy" : Create segment by point with DX & DY
2525                - "L length" : Create segment by direction & Length
2526                - "IX x" : Create segment by direction & Intersect. X
2527                - "IY y" : Create segment by direction & Intersect. Y
2528
2529                - "C radius length" : Create arc by direction, radius and length(in degree)
2530                - "AA x y": Create arc by point at X & Y
2531                - "A dx dy" : Create arc by point with DX & DY
2532                - "UU x y radius flag1": Create arc by point at X & Y with given radiUs
2533                - "U dx dy radius flag1" : Create arc by point with DX & DY with given radiUs
2534                - "EE x y xc yc flag1 flag2": Create arc by point at X & Y with given cEnter coordinates
2535                - "E dx dy dxc dyc radius flag1 flag2" : Create arc by point with DX & DY with given cEnter coordinates
2536
2537                - "WW" : Close Wire (to finish)
2538                - "WF" : Close Wire and build face (to finish)
2539
2540             - Flag1 (= reverse) is 0 or 2 ...
2541                - if 0 the drawn arc is the one of lower angle (< Pi)
2542                - if 2 the drawn arc ius the one of greater angle (> Pi)
2543
2544             - Flag2 (= control tolerance) is 0 or 1 ...
2545                - if 0 the specified end point can be at a distance of the arc greater than the tolerance (10^-7)
2546                - if 1 the wire is built only if the end point is on the arc
2547                  with a tolerance of 10^-7 on the distance else the creation fails
2548
2549             Parameters:
2550                 theCommand String, defining the sketcher in local
2551                            coordinates of the working plane.
2552                 theWorkingPlane Nine double values, defining origin,
2553                                 OZ and OX directions of the working plane.
2554                 theName Object name; when specified, this parameter is used
2555                         for result publication in the study. Otherwise, if automatic
2556                         publication is switched on, default value is used for result name.
2557
2558             Returns:
2559                 New GEOM.GEOM_Object, containing the created wire.
2560             """
2561             # Example: see GEOM_TestAll.py
2562             theCommand,Parameters = ParseSketcherCommand(theCommand)
2563             anObj = self.CurvesOp.MakeSketcher(theCommand, theWorkingPlane)
2564             RaiseIfFailed("MakeSketcher", self.CurvesOp)
2565             anObj.SetParameters(Parameters)
2566             self._autoPublish(anObj, theName, "wire")
2567             return anObj
2568
2569         ## Create a sketcher (wire or face), following the textual description,
2570         #  passed through <VAR>theCommand</VAR> argument. \n
2571         #  For format of the description string see MakeSketcher() method.\n
2572         #  @param theCommand String, defining the sketcher in local
2573         #                    coordinates of the working plane.
2574         #  @param theWorkingPlane Planar Face or LCS(Marker) of the working plane.
2575         #  @param theName Object name; when specified, this parameter is used
2576         #         for result publication in the study. Otherwise, if automatic
2577         #         publication is switched on, default value is used for result name.
2578         #
2579         #  @return New GEOM.GEOM_Object, containing the created wire.
2580         #
2581         #  @ref tui_sketcher_page "Example"
2582         @ManageTransactions("CurvesOp")
2583         def MakeSketcherOnPlane(self, theCommand, theWorkingPlane, theName=None):
2584             """
2585             Create a sketcher (wire or face), following the textual description,
2586             passed through theCommand argument.
2587             For format of the description string see geompy.MakeSketcher() method.
2588
2589             Parameters:
2590                 theCommand String, defining the sketcher in local
2591                            coordinates of the working plane.
2592                 theWorkingPlane Planar Face or LCS(Marker) of the working plane.
2593                 theName Object name; when specified, this parameter is used
2594                         for result publication in the study. Otherwise, if automatic
2595                         publication is switched on, default value is used for result name.
2596
2597             Returns:
2598                 New GEOM.GEOM_Object, containing the created wire.
2599             """
2600             theCommand,Parameters = ParseSketcherCommand(theCommand)
2601             anObj = self.CurvesOp.MakeSketcherOnPlane(theCommand, theWorkingPlane)
2602             RaiseIfFailed("MakeSketcherOnPlane", self.CurvesOp)
2603             anObj.SetParameters(Parameters)
2604             self._autoPublish(anObj, theName, "wire")
2605             return anObj
2606
2607         ## Obtain a 2D sketcher interface
2608         #  @return An instance of @ref gsketcher.Sketcher2D "Sketcher2D" interface
2609         def Sketcher2D (self):
2610             """
2611             Obtain a 2D sketcher interface.
2612
2613             Example of usage:
2614                sk = geompy.Sketcher2D()
2615                sk.addPoint(20, 20)
2616                sk.addSegmentRelative(15, 70)
2617                sk.addSegmentPerpY(50)
2618                sk.addArcRadiusRelative(25, 15, 14.5, 0)
2619                sk.addArcCenterAbsolute(1, 1, 50, 50, 0, 0)
2620                sk.addArcDirectionRadiusLength(20, 20, 101, 162.13)
2621                sk.close()
2622                Sketch_1 = sk.wire(geomObj_1)
2623             """
2624             sk = Sketcher2D (self)
2625             return sk
2626
2627         ## Create a sketcher wire, following the numerical description,
2628         #  passed through <VAR>theCoordinates</VAR> argument. \n
2629         #  @param theCoordinates double values, defining points to create a wire,
2630         #                                                      passing from it.
2631         #  @param theName Object name; when specified, this parameter is used
2632         #         for result publication in the study. Otherwise, if automatic
2633         #         publication is switched on, default value is used for result name.
2634         #
2635         #  @return New GEOM.GEOM_Object, containing the created wire.
2636         #
2637         #  @ref tui_3dsketcher_page "Example"
2638         @ManageTransactions("CurvesOp")
2639         def Make3DSketcher(self, theCoordinates, theName=None):
2640             """
2641             Create a sketcher wire, following the numerical description,
2642             passed through theCoordinates argument.
2643
2644             Parameters:
2645                 theCoordinates double values, defining points to create a wire,
2646                                passing from it.
2647                 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             Returns:
2652                 New GEOM_Object, containing the created wire.
2653             """
2654             theCoordinates,Parameters = ParseParameters(theCoordinates)
2655             anObj = self.CurvesOp.Make3DSketcher(theCoordinates)
2656             RaiseIfFailed("Make3DSketcher", self.CurvesOp)
2657             anObj.SetParameters(Parameters)
2658             self._autoPublish(anObj, theName, "wire")
2659             return anObj
2660
2661         ## Obtain a 3D sketcher interface
2662         #  @return An instance of @ref gsketcher.Sketcher3D "Sketcher3D" interface
2663         #
2664         #  @ref tui_3dsketcher_page "Example"
2665         def Sketcher3D (self):
2666             """
2667             Obtain a 3D sketcher interface.
2668
2669             Example of usage:
2670                 sk = geompy.Sketcher3D()
2671                 sk.addPointsAbsolute(0,0,0, 70,0,0)
2672                 sk.addPointsRelative(0, 0, 130)
2673                 sk.addPointAnglesLength("OXY", 50, 0, 100)
2674                 sk.addPointAnglesLength("OXZ", 30, 80, 130)
2675                 sk.close()
2676                 a3D_Sketcher_1 = sk.wire()
2677             """
2678             sk = Sketcher3D (self)
2679             return sk
2680
2681         ## Obtain a 2D polyline creation interface
2682         #  @return An instance of @ref gsketcher.Polyline2D "Polyline2D" interface
2683         #
2684         #  @ref tui_3dsketcher_page "Example"
2685         def Polyline2D (self):
2686             """
2687             Obtain a 2D polyline creation interface.
2688
2689             Example of usage:
2690                 pl = geompy.Polyline2D()
2691                 pl.addSection("section 1", GEOM.Polyline, True)
2692                 pl.addPoints(0, 0, 10, 0, 10, 10)
2693                 pl.addSection("section 2", GEOM.Interpolation, False)
2694                 pl.addPoints(20, 0, 30, 0, 30, 10)
2695                 resultObj = pl.result(WorkingPlane)
2696             """
2697             pl = Polyline2D (self)
2698             return pl
2699
2700         # end of l3_sketcher
2701         ## @}
2702
2703         ## @addtogroup l3_3d_primitives
2704         ## @{
2705
2706         ## Create a box by coordinates of two opposite vertices.
2707         #
2708         #  @param x1,y1,z1 double values, defining first point it.
2709         #  @param x2,y2,z2 double values, defining first point it.
2710         #  @param theName Object name; when specified, this parameter is used
2711         #         for result publication in the study. Otherwise, if automatic
2712         #         publication is switched on, default value is used for result name.
2713         #
2714         #  @return New GEOM.GEOM_Object, containing the created box.
2715         #
2716         #  @ref tui_creation_box "Example"
2717         def MakeBox(self, x1, y1, z1, x2, y2, z2, theName=None):
2718             """
2719             Create a box by coordinates of two opposite vertices.
2720
2721             Parameters:
2722                 x1,y1,z1 double values, defining first point.
2723                 x2,y2,z2 double values, defining second point.
2724                 theName Object name; when specified, this parameter is used
2725                         for result publication in the study. Otherwise, if automatic
2726                         publication is switched on, default value is used for result name.
2727
2728             Returns:
2729                 New GEOM.GEOM_Object, containing the created box.
2730             """
2731             # Example: see GEOM_TestAll.py
2732             pnt1 = self.MakeVertex(x1,y1,z1)
2733             pnt2 = self.MakeVertex(x2,y2,z2)
2734             # note: auto-publishing is done in self.MakeBoxTwoPnt()
2735             return self.MakeBoxTwoPnt(pnt1, pnt2, theName)
2736
2737         ## Create a box with specified dimensions along the coordinate axes
2738         #  and with edges, parallel to the coordinate axes.
2739         #  Center of the box will be at point (DX/2, DY/2, DZ/2).
2740         #  @param theDX Length of Box edges, parallel to OX axis.
2741         #  @param theDY Length of Box edges, parallel to OY axis.
2742         #  @param theDZ Length of Box edges, parallel to OZ axis.
2743         #  @param theName Object name; when specified, this parameter is used
2744         #         for result publication in the study. Otherwise, if automatic
2745         #         publication is switched on, default value is used for result name.
2746         #
2747         #  @return New GEOM.GEOM_Object, containing the created box.
2748         #
2749         #  @ref tui_creation_box "Example"
2750         @ManageTransactions("PrimOp")
2751         def MakeBoxDXDYDZ(self, theDX, theDY, theDZ, theName=None):
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
2757             Parameters:
2758                 theDX Length of Box edges, parallel to OX axis.
2759                 theDY Length of Box edges, parallel to OY axis.
2760                 theDZ Length of Box edges, parallel to OZ axis.
2761                 theName Object name; when specified, this parameter is used
2762                         for result publication in the study. Otherwise, if automatic
2763                         publication is switched on, default value is used for result name.
2764
2765             Returns:
2766                 New GEOM.GEOM_Object, containing the created box.
2767             """
2768             # Example: see GEOM_TestAll.py
2769             theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
2770             anObj = self.PrimOp.MakeBoxDXDYDZ(theDX, theDY, theDZ)
2771             RaiseIfFailed("MakeBoxDXDYDZ", self.PrimOp)
2772             anObj.SetParameters(Parameters)
2773             self._autoPublish(anObj, theName, "box")
2774             return anObj
2775
2776         ## Create a box with two specified opposite vertices,
2777         #  and with edges, parallel to the coordinate axes
2778         #  @param thePnt1 First of two opposite vertices.
2779         #  @param thePnt2 Second of two opposite vertices.
2780         #  @param theName Object name; when specified, this parameter is used
2781         #         for result publication in the study. Otherwise, if automatic
2782         #         publication is switched on, default value is used for result name.
2783         #
2784         #  @return New GEOM.GEOM_Object, containing the created box.
2785         #
2786         #  @ref tui_creation_box "Example"
2787         @ManageTransactions("PrimOp")
2788         def MakeBoxTwoPnt(self, thePnt1, thePnt2, theName=None):
2789             """
2790             Create a box with two specified opposite vertices,
2791             and with edges, parallel to the coordinate axes
2792
2793             Parameters:
2794                 thePnt1 First of two opposite vertices.
2795                 thePnt2 Second of two opposite vertices.
2796                 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             Returns:
2801                 New GEOM.GEOM_Object, containing the created box.
2802             """
2803             # Example: see GEOM_TestAll.py
2804             anObj = self.PrimOp.MakeBoxTwoPnt(thePnt1, thePnt2)
2805             RaiseIfFailed("MakeBoxTwoPnt", self.PrimOp)
2806             self._autoPublish(anObj, theName, "box")
2807             return anObj
2808
2809         ## Create a face with specified dimensions with edges parallel to coordinate axes.
2810         #  @param theH height of Face.
2811         #  @param theW width of Face.
2812         #  @param theOrientation face orientation: 1-OXY, 2-OYZ, 3-OZX
2813         #  @param theName Object name; when specified, this parameter is used
2814         #         for result publication in the study. Otherwise, if automatic
2815         #         publication is switched on, default value is used for result name.
2816         #
2817         #  @return New GEOM.GEOM_Object, containing the created face.
2818         #
2819         #  @ref tui_creation_face "Example"
2820         @ManageTransactions("PrimOp")
2821         def MakeFaceHW(self, theH, theW, theOrientation, theName=None):
2822             """
2823             Create a face with specified dimensions with edges parallel to coordinate axes.
2824
2825             Parameters:
2826                 theH height of Face.
2827                 theW width of Face.
2828                 theOrientation face orientation: 1-OXY, 2-OYZ, 3-OZX
2829                 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             Returns:
2834                 New GEOM.GEOM_Object, containing the created face.
2835             """
2836             # Example: see GEOM_TestAll.py
2837             theH,theW,Parameters = ParseParameters(theH, theW)
2838             anObj = self.PrimOp.MakeFaceHW(theH, theW, theOrientation)
2839             RaiseIfFailed("MakeFaceHW", self.PrimOp)
2840             anObj.SetParameters(Parameters)
2841             self._autoPublish(anObj, theName, "rectangle")
2842             return anObj
2843
2844         ## Create a face from another plane and two sizes,
2845         #  vertical size and horisontal size.
2846         #  @param theObj   Normale vector to the creating face or
2847         #  the face object.
2848         #  @param theH     Height (vertical size).
2849         #  @param theW     Width (horisontal size).
2850         #  @param theName Object name; when specified, this parameter is used
2851         #         for result publication in the study. Otherwise, if automatic
2852         #         publication is switched on, default value is used for result name.
2853         #
2854         #  @return New GEOM.GEOM_Object, containing the created face.
2855         #
2856         #  @ref tui_creation_face "Example"
2857         @ManageTransactions("PrimOp")
2858         def MakeFaceObjHW(self, theObj, theH, theW, theName=None):
2859             """
2860             Create a face from another plane and two sizes,
2861             vertical size and horisontal size.
2862
2863             Parameters:
2864                 theObj   Normale vector to the creating face or
2865                          the face object.
2866                 theH     Height (vertical size).
2867                 theW     Width (horisontal size).
2868                 theName Object name; when specified, this parameter is used
2869                         for result publication in the study. Otherwise, if automatic
2870                         publication is switched on, default value is used for result name.
2871
2872             Returns:
2873                 New GEOM_Object, containing the created face.
2874             """
2875             # Example: see GEOM_TestAll.py
2876             theH,theW,Parameters = ParseParameters(theH, theW)
2877             anObj = self.PrimOp.MakeFaceObjHW(theObj, theH, theW)
2878             RaiseIfFailed("MakeFaceObjHW", self.PrimOp)
2879             anObj.SetParameters(Parameters)
2880             self._autoPublish(anObj, theName, "rectangle")
2881             return anObj
2882
2883         ## Create a disk with given center, normal vector and radius.
2884         #  @param thePnt Disk center.
2885         #  @param theVec Vector, normal to the plane of the disk.
2886         #  @param theR Disk radius.
2887         #  @param theName Object name; when specified, this parameter is used
2888         #         for result publication in the study. Otherwise, if automatic
2889         #         publication is switched on, default value is used for result name.
2890         #
2891         #  @return New GEOM.GEOM_Object, containing the created disk.
2892         #
2893         #  @ref tui_creation_disk "Example"
2894         @ManageTransactions("PrimOp")
2895         def MakeDiskPntVecR(self, thePnt, theVec, theR, theName=None):
2896             """
2897             Create a disk with given center, normal vector and radius.
2898
2899             Parameters:
2900                 thePnt Disk center.
2901                 theVec Vector, normal to the plane of the disk.
2902                 theR Disk radius.
2903                 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             Returns:
2908                 New GEOM.GEOM_Object, containing the created disk.
2909             """
2910             # Example: see GEOM_TestAll.py
2911             theR,Parameters = ParseParameters(theR)
2912             anObj = self.PrimOp.MakeDiskPntVecR(thePnt, theVec, theR)
2913             RaiseIfFailed("MakeDiskPntVecR", self.PrimOp)
2914             anObj.SetParameters(Parameters)
2915             self._autoPublish(anObj, theName, "disk")
2916             return anObj
2917
2918         ## Create a disk, passing through three given points
2919         #  @param thePnt1,thePnt2,thePnt3 Points, defining the disk.
2920         #  @param theName Object name; when specified, this parameter is used
2921         #         for result publication in the study. Otherwise, if automatic
2922         #         publication is switched on, default value is used for result name.
2923         #
2924         #  @return New GEOM.GEOM_Object, containing the created disk.
2925         #
2926         #  @ref tui_creation_disk "Example"
2927         @ManageTransactions("PrimOp")
2928         def MakeDiskThreePnt(self, thePnt1, thePnt2, thePnt3, theName=None):
2929             """
2930             Create a disk, passing through three given points
2931
2932             Parameters:
2933                 thePnt1,thePnt2,thePnt3 Points, defining the disk.
2934                 theName Object name; when specified, this parameter is used
2935                         for result publication in the study. Otherwise, if automatic
2936                         publication is switched on, default value is used for result name.
2937
2938             Returns:
2939                 New GEOM.GEOM_Object, containing the created disk.
2940             """
2941             # Example: see GEOM_TestAll.py
2942             anObj = self.PrimOp.MakeDiskThreePnt(thePnt1, thePnt2, thePnt3)
2943             RaiseIfFailed("MakeDiskThreePnt", self.PrimOp)
2944             self._autoPublish(anObj, theName, "disk")
2945             return anObj
2946
2947         ## Create a disk with specified dimensions along OX-OY coordinate axes.
2948         #  @param theR Radius of Face.
2949         #  @param theOrientation set the orientation belong axis OXY or OYZ or OZX
2950         #  @param 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         #  @return New GEOM.GEOM_Object, containing the created disk.
2955         #
2956         #  @ref tui_creation_face "Example"
2957         @ManageTransactions("PrimOp")
2958         def MakeDiskR(self, theR, theOrientation, theName=None):
2959             """
2960             Create a disk with specified dimensions along OX-OY coordinate axes.
2961
2962             Parameters:
2963                 theR Radius of Face.
2964                 theOrientation set the orientation belong axis OXY or OYZ or OZX
2965                 theName Object name; when specified, this parameter is used
2966                         for result publication in the study. Otherwise, if automatic
2967                         publication is switched on, default value is used for result name.
2968
2969             Returns:
2970                 New GEOM.GEOM_Object, containing the created disk.
2971
2972             Example of usage:
2973                 Disk3 = geompy.MakeDiskR(100., 1)
2974             """
2975             # Example: see GEOM_TestAll.py
2976             theR,Parameters = ParseParameters(theR)
2977             anObj = self.PrimOp.MakeDiskR(theR, theOrientation)
2978             RaiseIfFailed("MakeDiskR", self.PrimOp)
2979             anObj.SetParameters(Parameters)
2980             self._autoPublish(anObj, theName, "disk")
2981             return anObj
2982
2983         ## Create a cylinder with given base point, axis, radius and height.
2984         #  @param thePnt Central point of cylinder base.
2985         #  @param theAxis Cylinder axis.
2986         #  @param theR Cylinder radius.
2987         #  @param theH Cylinder height.
2988         #  @param theName Object name; when specified, this parameter is used
2989         #         for result publication in the study. Otherwise, if automatic
2990         #         publication is switched on, default value is used for result name.
2991         #
2992         #  @return New GEOM.GEOM_Object, containing the created cylinder.
2993         #
2994         #  @ref tui_creation_cylinder "Example"
2995         @ManageTransactions("PrimOp")
2996         def MakeCylinder(self, thePnt, theAxis, theR, theH, theName=None):
2997             """
2998             Create a cylinder with given base point, axis, radius and height.
2999
3000             Parameters:
3001                 thePnt Central point of cylinder base.
3002                 theAxis Cylinder axis.
3003                 theR Cylinder radius.
3004                 theH Cylinder height.
3005                 theName Object name; when specified, this parameter is used
3006                         for result publication in the study. Otherwise, if automatic
3007                         publication is switched on, default value is used for result name.
3008
3009             Returns:
3010                 New GEOM.GEOM_Object, containing the created cylinder.
3011             """
3012             # Example: see GEOM_TestAll.py
3013             theR,theH,Parameters = ParseParameters(theR, theH)
3014             anObj = self.PrimOp.MakeCylinderPntVecRH(thePnt, theAxis, theR, theH)
3015             RaiseIfFailed("MakeCylinderPntVecRH", self.PrimOp)
3016             anObj.SetParameters(Parameters)
3017             self._autoPublish(anObj, theName, "cylinder")
3018             return anObj
3019             
3020         ## Create a portion of cylinder with given base point, axis, radius, height and angle.
3021         #  @param thePnt Central point of cylinder base.
3022         #  @param theAxis Cylinder axis.
3023         #  @param theR Cylinder radius.
3024         #  @param theH Cylinder height.
3025         #  @param theA Cylinder angle in radians.
3026         #  @param theName Object name; when specified, this parameter is used
3027         #         for result publication in the study. Otherwise, if automatic
3028         #         publication is switched on, default value is used for result name.
3029         #
3030         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3031         #
3032         #  @ref tui_creation_cylinder "Example"
3033         @ManageTransactions("PrimOp")
3034         def MakeCylinderA(self, thePnt, theAxis, theR, theH, theA, theName=None):
3035             """
3036             Create a portion of cylinder with given base point, axis, radius, height and angle.
3037
3038             Parameters:
3039                 thePnt Central point of cylinder base.
3040                 theAxis Cylinder axis.
3041                 theR Cylinder radius.
3042                 theH Cylinder height.
3043                 theA Cylinder angle in radians.
3044                 theName Object name; when specified, this parameter is used
3045                         for result publication in the study. Otherwise, if automatic
3046                         publication is switched on, default value is used for result name.
3047
3048             Returns:
3049                 New GEOM.GEOM_Object, containing the created cylinder.
3050             """
3051             # Example: see GEOM_TestAll.py
3052             flag = False
3053             if isinstance(theA,str):
3054                 flag = True
3055             theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
3056             if flag:
3057                 theA = theA*math.pi/180.
3058             anObj = self.PrimOp.MakeCylinderPntVecRHA(thePnt, theAxis, theR, theH, theA)
3059             RaiseIfFailed("MakeCylinderPntVecRHA", self.PrimOp)
3060             anObj.SetParameters(Parameters)
3061             self._autoPublish(anObj, theName, "cylinder")
3062             return anObj
3063
3064         ## Create a cylinder with given radius and height at
3065         #  the origin of coordinate system. Axis of the cylinder
3066         #  will be collinear to the OZ axis of the coordinate system.
3067         #  @param theR Cylinder radius.
3068         #  @param theH Cylinder height.
3069         #  @param theName Object name; when specified, this parameter is used
3070         #         for result publication in the study. Otherwise, if automatic
3071         #         publication is switched on, default value is used for result name.
3072         #
3073         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3074         #
3075         #  @ref tui_creation_cylinder "Example"
3076         @ManageTransactions("PrimOp")
3077         def MakeCylinderRH(self, theR, theH, theName=None):
3078             """
3079             Create a cylinder with given radius and height at
3080             the origin of coordinate system. Axis of the cylinder
3081             will be collinear to the OZ axis of the coordinate system.
3082
3083             Parameters:
3084                 theR Cylinder radius.
3085                 theH Cylinder height.
3086                 theName Object name; when specified, this parameter is used
3087                         for result publication in the study. Otherwise, if automatic
3088                         publication is switched on, default value is used for result name.
3089
3090             Returns:
3091                 New GEOM.GEOM_Object, containing the created cylinder.
3092             """
3093             # Example: see GEOM_TestAll.py
3094             theR,theH,Parameters = ParseParameters(theR, theH)
3095             anObj = self.PrimOp.MakeCylinderRH(theR, theH)
3096             RaiseIfFailed("MakeCylinderRH", self.PrimOp)
3097             anObj.SetParameters(Parameters)
3098             self._autoPublish(anObj, theName, "cylinder")
3099             return anObj
3100             
3101         ## Create a portion of cylinder with given radius, height and angle at
3102         #  the origin of coordinate system. Axis of the cylinder
3103         #  will be collinear to the OZ axis of the coordinate system.
3104         #  @param theR Cylinder radius.
3105         #  @param theH Cylinder height.
3106         #  @param theA Cylinder angle in radians.
3107         #  @param theName Object name; when specified, this parameter is used
3108         #         for result publication in the study. Otherwise, if automatic
3109         #         publication is switched on, default value is used for result name.
3110         #
3111         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3112         #
3113         #  @ref tui_creation_cylinder "Example"
3114         @ManageTransactions("PrimOp")
3115         def MakeCylinderRHA(self, theR, theH, theA, theName=None):
3116             """
3117             Create a portion of cylinder with given radius, height and angle at
3118             the origin of coordinate system. Axis of the cylinder
3119             will be collinear to the OZ axis of the coordinate system.
3120
3121             Parameters:
3122                 theR Cylinder radius.
3123                 theH Cylinder height.
3124                 theA Cylinder angle in radians.
3125                 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             Returns:
3130                 New GEOM.GEOM_Object, containing the created cylinder.
3131             """
3132             # Example: see GEOM_TestAll.py
3133             flag = False
3134             if isinstance(theA,str):
3135                 flag = True
3136             theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
3137             if flag:
3138                 theA = theA*math.pi/180.
3139             anObj = self.PrimOp.MakeCylinderRHA(theR, theH, theA)
3140             RaiseIfFailed("MakeCylinderRHA", self.PrimOp)
3141             anObj.SetParameters(Parameters)
3142             self._autoPublish(anObj, theName, "cylinder")
3143             return anObj
3144
3145         ## Create a sphere with given center and radius.
3146         #  @param thePnt Sphere center.
3147         #  @param theR Sphere radius.
3148         #  @param theName Object name; when specified, this parameter is used
3149         #         for result publication in the study. Otherwise, if automatic
3150         #         publication is switched on, default value is used for result name.
3151         #
3152         #  @return New GEOM.GEOM_Object, containing the created sphere.
3153         #
3154         #  @ref tui_creation_sphere "Example"
3155         @ManageTransactions("PrimOp")
3156         def MakeSpherePntR(self, thePnt, theR, theName=None):
3157             """
3158             Create a sphere with given center and radius.
3159
3160             Parameters:
3161                 thePnt Sphere center.
3162                 theR Sphere radius.
3163                 theName Object name; when specified, this parameter is used
3164                         for result publication in the study. Otherwise, if automatic
3165                         publication is switched on, default value is used for result name.
3166
3167             Returns:
3168                 New GEOM.GEOM_Object, containing the created sphere.
3169             """
3170             # Example: see GEOM_TestAll.py
3171             theR,Parameters = ParseParameters(theR)
3172             anObj = self.PrimOp.MakeSpherePntR(thePnt, theR)
3173             RaiseIfFailed("MakeSpherePntR", self.PrimOp)
3174             anObj.SetParameters(Parameters)
3175             self._autoPublish(anObj, theName, "sphere")
3176             return anObj
3177
3178         ## Create a sphere with given center and radius.
3179         #  @param x,y,z Coordinates of sphere center.
3180         #  @param theR Sphere radius.
3181         #  @param theName Object name; when specified, this parameter is used
3182         #         for result publication in the study. Otherwise, if automatic
3183         #         publication is switched on, default value is used for result name.
3184         #
3185         #  @return New GEOM.GEOM_Object, containing the created sphere.
3186         #
3187         #  @ref tui_creation_sphere "Example"
3188         def MakeSphere(self, x, y, z, theR, theName=None):
3189             """
3190             Create a sphere with given center and radius.
3191
3192             Parameters:
3193                 x,y,z Coordinates of sphere center.
3194                 theR Sphere radius.
3195                 theName Object name; when specified, this parameter is used
3196                         for result publication in the study. Otherwise, if automatic
3197                         publication is switched on, default value is used for result name.
3198
3199             Returns:
3200                 New GEOM.GEOM_Object, containing the created sphere.
3201             """
3202             # Example: see GEOM_TestAll.py
3203             point = self.MakeVertex(x, y, z)
3204             # note: auto-publishing is done in self.MakeSpherePntR()
3205             anObj = self.MakeSpherePntR(point, theR, theName)
3206             return anObj
3207
3208         ## Create a sphere with given radius at the origin of coordinate system.
3209         #  @param theR Sphere radius.
3210         #  @param theName Object name; when specified, this parameter is used
3211         #         for result publication in the study. Otherwise, if automatic
3212         #         publication is switched on, default value is used for result name.
3213         #
3214         #  @return New GEOM.GEOM_Object, containing the created sphere.
3215         #
3216         #  @ref tui_creation_sphere "Example"
3217         @ManageTransactions("PrimOp")
3218         def MakeSphereR(self, theR, theName=None):
3219             """
3220             Create a sphere with given radius at the origin of coordinate system.
3221
3222             Parameters:
3223                 theR Sphere radius.
3224                 theName Object name; when specified, this parameter is used
3225                         for result publication in the study. Otherwise, if automatic
3226                         publication is switched on, default value is used for result name.
3227
3228             Returns:
3229                 New GEOM.GEOM_Object, containing the created sphere.
3230             """
3231             # Example: see GEOM_TestAll.py
3232             theR,Parameters = ParseParameters(theR)
3233             anObj = self.PrimOp.MakeSphereR(theR)
3234             RaiseIfFailed("MakeSphereR", self.PrimOp)
3235             anObj.SetParameters(Parameters)
3236             self._autoPublish(anObj, theName, "sphere")
3237             return anObj
3238
3239         ## Create a cone with given base point, axis, height and radiuses.
3240         #  @param thePnt Central point of the first cone base.
3241         #  @param theAxis Cone axis.
3242         #  @param theR1 Radius of the first cone base.
3243         #  @param theR2 Radius of the second cone base.
3244         #    \note If both radiuses are non-zero, the cone will be truncated.
3245         #    \note If the radiuses are equal, a cylinder will be created instead.
3246         #  @param theH Cone height.
3247         #  @param theName Object name; when specified, this parameter is used
3248         #         for result publication in the study. Otherwise, if automatic
3249         #         publication is switched on, default value is used for result name.
3250         #
3251         #  @return New GEOM.GEOM_Object, containing the created cone.
3252         #
3253         #  @ref tui_creation_cone "Example"
3254         @ManageTransactions("PrimOp")
3255         def MakeCone(self, thePnt, theAxis, theR1, theR2, theH, theName=None):
3256             """
3257             Create a cone with given base point, axis, height and radiuses.
3258
3259             Parameters:
3260                 thePnt Central point of the first cone base.
3261                 theAxis Cone axis.
3262                 theR1 Radius of the first cone base.
3263                 theR2 Radius of the second cone base.
3264                 theH Cone height.
3265                 theName Object name; when specified, this parameter is used
3266                         for result publication in the study. Otherwise, if automatic
3267                         publication is switched on, default value is used for result name.
3268
3269             Note:
3270                 If both radiuses are non-zero, the cone will be truncated.
3271                 If the radiuses are equal, a cylinder will be created instead.
3272
3273             Returns:
3274                 New GEOM.GEOM_Object, containing the created cone.
3275             """
3276             # Example: see GEOM_TestAll.py
3277             theR1,theR2,theH,Parameters = ParseParameters(theR1,theR2,theH)
3278             anObj = self.PrimOp.MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theH)
3279             RaiseIfFailed("MakeConePntVecR1R2H", self.PrimOp)
3280             anObj.SetParameters(Parameters)
3281             self._autoPublish(anObj, theName, "cone")
3282             return anObj
3283
3284         ## Create a cone with given height and radiuses at
3285         #  the origin of coordinate system. Axis of the cone will
3286         #  be collinear to the OZ axis of the coordinate system.
3287         #  @param theR1 Radius of the first cone base.
3288         #  @param theR2 Radius of the second cone base.
3289         #    \note If both radiuses are non-zero, the cone will be truncated.
3290         #    \note If the radiuses are equal, a cylinder will be created instead.
3291         #  @param theH Cone height.
3292         #  @param theName Object name; when specified, this parameter is used
3293         #         for result publication in the study. Otherwise, if automatic
3294         #         publication is switched on, default value is used for result name.
3295         #
3296         #  @return New GEOM.GEOM_Object, containing the created cone.
3297         #
3298         #  @ref tui_creation_cone "Example"
3299         @ManageTransactions("PrimOp")
3300         def MakeConeR1R2H(self, theR1, theR2, theH, theName=None):
3301             """
3302             Create a cone with given height and radiuses at
3303             the origin of coordinate system. Axis of the cone will
3304             be collinear to the OZ axis of the coordinate system.
3305
3306             Parameters:
3307                 theR1 Radius of the first cone base.
3308                 theR2 Radius of the second cone base.
3309                 theH Cone height.
3310                 theName Object name; when specified, this parameter is used
3311                         for result publication in the study. Otherwise, if automatic
3312                         publication is switched on, default value is used for result name.
3313
3314             Note:
3315                 If both radiuses are non-zero, the cone will be truncated.
3316                 If the radiuses are equal, a cylinder will be created instead.
3317
3318             Returns:
3319                 New GEOM.GEOM_Object, containing the created cone.
3320             """
3321             # Example: see GEOM_TestAll.py
3322             theR1,theR2,theH,Parameters = ParseParameters(theR1,theR2,theH)
3323             anObj = self.PrimOp.MakeConeR1R2H(theR1, theR2, theH)
3324             RaiseIfFailed("MakeConeR1R2H", self.PrimOp)
3325             anObj.SetParameters(Parameters)
3326             self._autoPublish(anObj, theName, "cone")
3327             return anObj
3328
3329         ## Create a torus with given center, normal vector and radiuses.
3330         #  @param thePnt Torus central point.
3331         #  @param theVec Torus axis of symmetry.
3332         #  @param theRMajor Torus major radius.
3333         #  @param theRMinor Torus minor radius.
3334         #  @param theName Object name; when specified, this parameter is used
3335         #         for result publication in the study. Otherwise, if automatic
3336         #         publication is switched on, default value is used for result name.
3337         #
3338         #  @return New GEOM.GEOM_Object, containing the created torus.
3339         #
3340         #  @ref tui_creation_torus "Example"
3341         @ManageTransactions("PrimOp")
3342         def MakeTorus(self, thePnt, theVec, theRMajor, theRMinor, theName=None):
3343             """
3344             Create a torus with given center, normal vector and radiuses.
3345
3346             Parameters:
3347                 thePnt Torus central point.
3348                 theVec Torus axis of symmetry.
3349                 theRMajor Torus major radius.
3350                 theRMinor Torus minor radius.
3351                 theName Object name; when specified, this parameter is used
3352                         for result publication in the study. Otherwise, if automatic
3353                         publication is switched on, default value is used for result name.
3354
3355            Returns:
3356                 New GEOM.GEOM_Object, containing the created torus.
3357             """
3358             # Example: see GEOM_TestAll.py
3359             theRMajor,theRMinor,Parameters = ParseParameters(theRMajor,theRMinor)
3360             anObj = self.PrimOp.MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor)
3361             RaiseIfFailed("MakeTorusPntVecRR", self.PrimOp)
3362             anObj.SetParameters(Parameters)
3363             self._autoPublish(anObj, theName, "torus")
3364             return anObj
3365
3366         ## Create a torus with given radiuses at the origin of coordinate system.
3367         #  @param theRMajor Torus major radius.
3368         #  @param theRMinor Torus minor radius.
3369         #  @param theName Object name; when specified, this parameter is used
3370         #         for result publication in the study. Otherwise, if automatic
3371         #         publication is switched on, default value is used for result name.
3372         #
3373         #  @return New GEOM.GEOM_Object, containing the created torus.
3374         #
3375         #  @ref tui_creation_torus "Example"
3376         @ManageTransactions("PrimOp")
3377         def MakeTorusRR(self, theRMajor, theRMinor, theName=None):
3378             """
3379            Create a torus with given radiuses at the origin of coordinate system.
3380
3381            Parameters:
3382                 theRMajor Torus major radius.
3383                 theRMinor Torus minor radius.
3384                 theName Object name; when specified, this parameter is used
3385                         for result publication in the study. Otherwise, if automatic
3386                         publication is switched on, default value is used for result name.
3387
3388            Returns:
3389                 New GEOM.GEOM_Object, containing the created torus.
3390             """
3391             # Example: see GEOM_TestAll.py
3392             theRMajor,theRMinor,Parameters = ParseParameters(theRMajor,theRMinor)
3393             anObj = self.PrimOp.MakeTorusRR(theRMajor, theRMinor)
3394             RaiseIfFailed("MakeTorusRR", self.PrimOp)
3395             anObj.SetParameters(Parameters)
3396             self._autoPublish(anObj, theName, "torus")
3397             return anObj
3398
3399         # end of l3_3d_primitives
3400         ## @}
3401
3402         ## @addtogroup l3_complex
3403         ## @{
3404
3405         ## Create a shape by extrusion of the base shape along a vector, defined by two points.
3406         #  @param theBase Base shape to be extruded.
3407         #  @param thePoint1 First end of extrusion vector.
3408         #  @param thePoint2 Second end of extrusion vector.
3409         #  @param theScaleFactor Use it to make prism with scaled second base.
3410         #                        Nagative value means not scaled second base.
3411         #  @param theName Object name; when specified, this parameter is used
3412         #         for result publication in the study. Otherwise, if automatic
3413         #         publication is switched on, default value is used for result name.
3414         #
3415         #  @return New GEOM.GEOM_Object, containing the created prism.
3416         #
3417         #  @ref tui_creation_prism "Example"
3418         @ManageTransactions("PrimOp")
3419         def MakePrism(self, theBase, thePoint1, thePoint2, theScaleFactor = -1.0, theName=None):
3420             """
3421             Create a shape by extrusion of the base shape along a vector, defined by two points.
3422
3423             Parameters:
3424                 theBase Base shape to be extruded.
3425                 thePoint1 First end of extrusion vector.
3426                 thePoint2 Second end of extrusion vector.
3427                 theScaleFactor Use it to make prism with scaled second base.
3428                                Nagative value means not scaled second base.
3429                 theName Object name; when specified, this parameter is used
3430                         for result publication in the study. Otherwise, if automatic
3431                         publication is switched on, default value is used for result name.
3432
3433             Returns:
3434                 New GEOM.GEOM_Object, containing the created prism.
3435             """
3436             # Example: see GEOM_TestAll.py
3437             anObj = None
3438             Parameters = ""
3439             if theScaleFactor > 0:
3440                 theScaleFactor,Parameters = ParseParameters(theScaleFactor)
3441                 anObj = self.PrimOp.MakePrismTwoPntWithScaling(theBase, thePoint1, thePoint2, theScaleFactor)
3442             else:
3443                 anObj = self.PrimOp.MakePrismTwoPnt(theBase, thePoint1, thePoint2)
3444             RaiseIfFailed("MakePrismTwoPnt", self.PrimOp)
3445             anObj.SetParameters(Parameters)
3446             self._autoPublish(anObj, theName, "prism")
3447             return anObj
3448
3449         ## Create a shape by extrusion of the base shape along a
3450         #  vector, defined by two points, in 2 Ways (forward/backward).
3451         #  @param theBase Base shape to be extruded.
3452         #  @param thePoint1 First end of extrusion vector.
3453         #  @param thePoint2 Second end of extrusion vector.
3454         #  @param theName Object name; when specified, this parameter is used
3455         #         for result publication in the study. Otherwise, if automatic
3456         #         publication is switched on, default value is used for result name.
3457         #
3458         #  @return New GEOM.GEOM_Object, containing the created prism.
3459         #
3460         #  @ref tui_creation_prism "Example"
3461         @ManageTransactions("PrimOp")
3462         def MakePrism2Ways(self, theBase, thePoint1, thePoint2, theName=None):
3463             """
3464             Create a shape by extrusion of the base shape along a
3465             vector, defined by two points, in 2 Ways (forward/backward).
3466
3467             Parameters:
3468                 theBase Base shape to be extruded.
3469                 thePoint1 First end of extrusion vector.
3470                 thePoint2 Second end of extrusion vector.
3471                 theName Object name; when specified, this parameter is used
3472                         for result publication in the study. Otherwise, if automatic
3473                         publication is switched on, default value is used for result name.
3474
3475             Returns:
3476                 New GEOM.GEOM_Object, containing the created prism.
3477             """
3478             # Example: see GEOM_TestAll.py
3479             anObj = self.PrimOp.MakePrismTwoPnt2Ways(theBase, thePoint1, thePoint2)
3480             RaiseIfFailed("MakePrismTwoPnt", self.PrimOp)
3481             self._autoPublish(anObj, theName, "prism")
3482             return anObj
3483
3484         ## Create a shape by extrusion of the base shape along the vector,
3485         #  i.e. all the space, transfixed by the base shape during its translation
3486         #  along the vector on the given distance.
3487         #  @param theBase Base shape to be extruded.
3488         #  @param theVec Direction of extrusion.
3489         #  @param theH Prism dimension along theVec.
3490         #  @param theScaleFactor Use it to make prism with scaled second base.
3491         #                        Negative value means not scaled second base.
3492         #  @param theName Object name; when specified, this parameter is used
3493         #         for result publication in the study. Otherwise, if automatic
3494         #         publication is switched on, default value is used for result name.
3495         #
3496         #  @return New GEOM.GEOM_Object, containing the created prism.
3497         #
3498         #  @ref tui_creation_prism "Example"
3499         @ManageTransactions("PrimOp")
3500         def MakePrismVecH(self, theBase, theVec, theH, theScaleFactor = -1.0, theName=None):
3501             """
3502             Create a shape by extrusion of the base shape along the vector,
3503             i.e. all the space, transfixed by the base shape during its translation
3504             along the vector on the given distance.
3505
3506             Parameters:
3507                 theBase Base shape to be extruded.
3508                 theVec Direction of extrusion.
3509                 theH Prism dimension along theVec.
3510                 theScaleFactor Use it to make prism with scaled second base.
3511                                Negative value means not scaled second base.
3512                 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             Returns:
3517                 New GEOM.GEOM_Object, containing the created prism.
3518             """
3519             # Example: see GEOM_TestAll.py
3520             anObj = None
3521             Parameters = ""
3522             if theScaleFactor > 0:
3523                 theH,theScaleFactor,Parameters = ParseParameters(theH,theScaleFactor)
3524                 anObj = self.PrimOp.MakePrismVecHWithScaling(theBase, theVec, theH, theScaleFactor)
3525             else:
3526                 theH,Parameters = ParseParameters(theH)
3527                 anObj = self.PrimOp.MakePrismVecH(theBase, theVec, theH)
3528             RaiseIfFailed("MakePrismVecH", self.PrimOp)
3529             anObj.SetParameters(Parameters)
3530             self._autoPublish(anObj, theName, "prism")
3531             return anObj
3532
3533         ## Create a shape by extrusion of the base shape along the vector,
3534         #  i.e. all the space, transfixed by the base shape during its translation
3535         #  along the vector on the given distance in 2 Ways (forward/backward).
3536         #  @param theBase Base shape to be extruded.
3537         #  @param theVec Direction of extrusion.
3538         #  @param theH Prism dimension along theVec in forward direction.
3539         #  @param theName Object name; when specified, this parameter is used
3540         #         for result publication in the study. Otherwise, if automatic
3541         #         publication is switched on, default value is used for result name.
3542         #
3543         #  @return New GEOM.GEOM_Object, containing the created prism.
3544         #
3545         #  @ref tui_creation_prism "Example"
3546         @ManageTransactions("PrimOp")
3547         def MakePrismVecH2Ways(self, theBase, theVec, theH, theName=None):
3548             """
3549             Create a shape by extrusion of the base shape along the vector,
3550             i.e. all the space, transfixed by the base shape during its translation
3551             along the vector on the given distance in 2 Ways (forward/backward).
3552
3553             Parameters:
3554                 theBase Base shape to be extruded.
3555                 theVec Direction of extrusion.
3556                 theH Prism dimension along theVec in forward direction.
3557                 theName Object name; when specified, this parameter is used
3558                         for result publication in the study. Otherwise, if automatic
3559                         publication is switched on, default value is used for result name.
3560
3561             Returns:
3562                 New GEOM.GEOM_Object, containing the created prism.
3563             """
3564             # Example: see GEOM_TestAll.py
3565             theH,Parameters = ParseParameters(theH)
3566             anObj = self.PrimOp.MakePrismVecH2Ways(theBase, theVec, theH)
3567             RaiseIfFailed("MakePrismVecH2Ways", self.PrimOp)
3568             anObj.SetParameters(Parameters)
3569             self._autoPublish(anObj, theName, "prism")
3570             return anObj
3571
3572         ## Create a shape by extrusion of the base shape along the dx, dy, dz direction
3573         #  @param theBase Base shape to be extruded.
3574         #  @param theDX, theDY, theDZ Directions of extrusion.
3575         #  @param theScaleFactor Use it to make prism with scaled second base.
3576         #                        Nagative value means not scaled second base.
3577         #  @param 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         #  @return New GEOM.GEOM_Object, containing the created prism.
3582         #
3583         #  @ref tui_creation_prism "Example"
3584         @ManageTransactions("PrimOp")
3585         def MakePrismDXDYDZ(self, theBase, theDX, theDY, theDZ, theScaleFactor = -1.0, theName=None):
3586             """
3587             Create a shape by extrusion of the base shape along the dx, dy, dz direction
3588
3589             Parameters:
3590                 theBase Base shape to be extruded.
3591                 theDX, theDY, theDZ Directions of extrusion.
3592                 theScaleFactor Use it to make prism with scaled second base.
3593                                Nagative value means not scaled second base.
3594                 theName Object name; when specified, this parameter is used
3595                         for result publication in the study. Otherwise, if automatic
3596                         publication is switched on, default value is used for result name.
3597
3598             Returns:
3599                 New GEOM.GEOM_Object, containing the created prism.
3600             """
3601             # Example: see GEOM_TestAll.py
3602             anObj = None
3603             Parameters = ""
3604             if theScaleFactor > 0:
3605                 theDX,theDY,theDZ,theScaleFactor,Parameters = ParseParameters(theDX, theDY, theDZ, theScaleFactor)
3606                 anObj = self.PrimOp.MakePrismDXDYDZWithScaling(theBase, theDX, theDY, theDZ, theScaleFactor)
3607             else:
3608                 theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
3609                 anObj = self.PrimOp.MakePrismDXDYDZ(theBase, theDX, theDY, theDZ)
3610             RaiseIfFailed("MakePrismDXDYDZ", self.PrimOp)
3611             anObj.SetParameters(Parameters)
3612             self._autoPublish(anObj, theName, "prism")
3613             return anObj
3614
3615         ## Create a shape by extrusion of the base shape along the dx, dy, dz direction
3616         #  i.e. all the space, transfixed by the base shape during its translation
3617         #  along the vector on the given distance in 2 Ways (forward/backward).
3618         #  @param theBase Base shape to be extruded.
3619         #  @param theDX, theDY, theDZ Directions of extrusion.
3620         #  @param theName Object name; when specified, this parameter is used
3621         #         for result publication in the study. Otherwise, if automatic
3622         #         publication is switched on, default value is used for result name.
3623         #
3624         #  @return New GEOM.GEOM_Object, containing the created prism.
3625         #
3626         #  @ref tui_creation_prism "Example"
3627         @ManageTransactions("PrimOp")
3628         def MakePrismDXDYDZ2Ways(self, theBase, theDX, theDY, theDZ, theName=None):
3629             """
3630             Create a shape by extrusion of the base shape along the dx, dy, dz direction
3631             i.e. all the space, transfixed by the base shape during its translation
3632             along the vector on the given distance in 2 Ways (forward/backward).
3633
3634             Parameters:
3635                 theBase Base shape to be extruded.
3636                 theDX, theDY, theDZ Directions of extrusion.
3637                 theName Object name; when specified, this parameter is used
3638                         for result publication in the study. Otherwise, if automatic
3639                         publication is switched on, default value is used for result name.
3640
3641             Returns:
3642                 New GEOM.GEOM_Object, containing the created prism.
3643             """
3644             # Example: see GEOM_TestAll.py
3645             theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
3646             anObj = self.PrimOp.MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ)
3647             RaiseIfFailed("MakePrismDXDYDZ2Ways", self.PrimOp)
3648             anObj.SetParameters(Parameters)
3649             self._autoPublish(anObj, theName, "prism")
3650             return anObj
3651
3652         ## Create a shape by revolution of the base shape around the axis
3653         #  on the given angle, i.e. all the space, transfixed by the base
3654         #  shape during its rotation around the axis on the given angle.
3655         #  @param theBase Base shape to be rotated.
3656         #  @param theAxis Rotation axis.
3657         #  @param theAngle Rotation angle in radians.
3658         #  @param theName Object name; when specified, this parameter is used
3659         #         for result publication in the study. Otherwise, if automatic
3660         #         publication is switched on, default value is used for result name.
3661         #
3662         #  @return New GEOM.GEOM_Object, containing the created revolution.
3663         #
3664         #  @ref tui_creation_revolution "Example"
3665         @ManageTransactions("PrimOp")
3666         def MakeRevolution(self, theBase, theAxis, theAngle, theName=None):
3667             """
3668             Create a shape by revolution of the base shape around the axis
3669             on the given angle, i.e. all the space, transfixed by the base
3670             shape during its rotation around the axis on the given angle.
3671
3672             Parameters:
3673                 theBase Base shape to be rotated.
3674                 theAxis Rotation axis.
3675                 theAngle Rotation angle in radians.
3676                 theName Object name; when specified, this parameter is used
3677                         for result publication in the study. Otherwise, if automatic
3678                         publication is switched on, default value is used for result name.
3679
3680             Returns:
3681                 New GEOM.GEOM_Object, containing the created revolution.
3682             """
3683             # Example: see GEOM_TestAll.py
3684             theAngle,Parameters = ParseParameters(theAngle)
3685             anObj = self.PrimOp.MakeRevolutionAxisAngle(theBase, theAxis, theAngle)
3686             RaiseIfFailed("MakeRevolutionAxisAngle", self.PrimOp)
3687             anObj.SetParameters(Parameters)
3688             self._autoPublish(anObj, theName, "revolution")
3689             return anObj
3690
3691         ## Create a shape by revolution of the base shape around the axis
3692         #  on the given angle, i.e. all the space, transfixed by the base
3693         #  shape during its rotation around the axis on the given angle in
3694         #  both directions (forward/backward)
3695         #  @param theBase Base shape to be rotated.
3696         #  @param theAxis Rotation axis.
3697         #  @param theAngle Rotation angle in radians.
3698         #  @param theName Object name; when specified, this parameter is used
3699         #         for result publication in the study. Otherwise, if automatic
3700         #         publication is switched on, default value is used for result name.
3701         #
3702         #  @return New GEOM.GEOM_Object, containing the created revolution.
3703         #
3704         #  @ref tui_creation_revolution "Example"
3705         @ManageTransactions("PrimOp")
3706         def MakeRevolution2Ways(self, theBase, theAxis, theAngle, theName=None):
3707             """
3708             Create a shape by revolution of the base shape around the axis
3709             on the given angle, i.e. all the space, transfixed by the base
3710             shape during its rotation around the axis on the given angle in
3711             both directions (forward/backward).
3712
3713             Parameters:
3714                 theBase Base shape to be rotated.
3715                 theAxis Rotation axis.
3716                 theAngle Rotation angle in radians.
3717                 theName Object name; when specified, this parameter is used
3718                         for result publication in the study. Otherwise, if automatic
3719                         publication is switched on, default value is used for result name.
3720
3721             Returns:
3722                 New GEOM.GEOM_Object, containing the created revolution.
3723             """
3724             theAngle,Parameters = ParseParameters(theAngle)
3725             anObj = self.PrimOp.MakeRevolutionAxisAngle2Ways(theBase, theAxis, theAngle)
3726             RaiseIfFailed("MakeRevolutionAxisAngle2Ways", self.PrimOp)
3727             anObj.SetParameters(Parameters)
3728             self._autoPublish(anObj, theName, "revolution")
3729             return anObj
3730
3731         ## Create a face from a given set of contours.
3732         #  @param theContours either a list or a compound of edges/wires.
3733         #  @param theMinDeg a minimal degree of BSpline surface to create.
3734         #  @param theMaxDeg a maximal degree of BSpline surface to create.
3735         #  @param theTol2D a 2d tolerance to be reached.
3736         #  @param theTol3D a 3d tolerance to be reached.
3737         #  @param theNbIter a number of iteration of approximation algorithm.
3738         #  @param theMethod Kind of method to perform filling operation
3739         #         (see GEOM.filling_oper_method enum).
3740         #  @param isApprox if True, BSpline curves are generated in the process
3741         #                  of surface construction. By default it is False, that means
3742         #                  the surface is created using given curves. The usage of
3743         #                  Approximation makes the algorithm work slower, but allows
3744         #                  building the surface for rather complex cases.
3745         #  @param theName Object name; when specified, this parameter is used
3746         #         for result publication in the study. Otherwise, if automatic
3747         #         publication is switched on, default value is used for result name.
3748         #
3749         #  @return New GEOM.GEOM_Object (face), containing the created filling surface.
3750         #
3751         #  @ref tui_creation_filling "Example"
3752         @ManageTransactions("PrimOp")
3753         def MakeFilling(self, theContours, theMinDeg=2, theMaxDeg=5, theTol2D=0.0001,
3754                         theTol3D=0.0001, theNbIter=0, theMethod=GEOM.FOM_Default, isApprox=0, theName=None):
3755             """
3756             Create a face from a given set of contours.
3757
3758             Parameters:
3759                 theContours either a list or a compound of edges/wires.
3760                 theMinDeg a minimal degree of BSpline surface to create.
3761                 theMaxDeg a maximal degree of BSpline surface to create.
3762                 theTol2D a 2d tolerance to be reached.
3763                 theTol3D a 3d tolerance to be reached.
3764                 theNbIter a number of iteration of approximation algorithm.
3765                 theMethod Kind of method to perform filling operation
3766                           (see GEOM.filling_oper_method enum).
3767                 isApprox if True, BSpline curves are generated in the process
3768                          of surface construction. By default it is False, that means
3769                          the surface is created using given curves. The usage of
3770                          Approximation makes the algorithm work slower, but allows
3771                          building the surface for rather complex cases.
3772                 theName Object name; when specified, this parameter is used
3773                         for result publication in the study. Otherwise, if automatic
3774                         publication is switched on, default value is used for result name.
3775
3776             Returns:
3777                 New GEOM.GEOM_Object (face), containing the created filling surface.
3778
3779             Example of usage:
3780                 filling = geompy.MakeFilling(compound, 2, 5, 0.0001, 0.0001, 5)
3781             """
3782             # Example: see GEOM_TestAll.py
3783             theMinDeg,theMaxDeg,theTol2D,theTol3D,theNbIter,Parameters = ParseParameters(theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter)
3784             anObj = self.PrimOp.MakeFilling(ToList(theContours), theMinDeg, theMaxDeg,
3785                                             theTol2D, theTol3D, theNbIter,
3786                                             theMethod, isApprox)
3787             RaiseIfFailed("MakeFilling", self.PrimOp)
3788             anObj.SetParameters(Parameters)
3789             self._autoPublish(anObj, theName, "filling")
3790             return anObj
3791
3792
3793         ## Create a face from a given set of contours.
3794         #  This method corresponds to MakeFilling() with isApprox=True.
3795         #  @param theContours either a list or a compound of edges/wires.
3796         #  @param theMinDeg a minimal degree of BSpline surface to create.
3797         #  @param theMaxDeg a maximal degree of BSpline surface to create.
3798         #  @param theTol3D a 3d tolerance to be reached.
3799         #  @param theName Object name; when specified, this parameter is used
3800         #         for result publication in the study. Otherwise, if automatic
3801         #         publication is switched on, default value is used for result name.
3802         #
3803         #  @return New GEOM.GEOM_Object (face), containing the created filling surface.
3804         #
3805         #  @ref tui_creation_filling "Example"
3806         @ManageTransactions("PrimOp")
3807         def MakeFillingNew(self, theContours, theMinDeg=2, theMaxDeg=5, theTol3D=0.0001, theName=None):
3808             """
3809             Create a filling from the given compound of contours.
3810             This method corresponds to MakeFilling() with isApprox=True.
3811
3812             Parameters:
3813                 theContours either a list or a compound of edges/wires.
3814                 theMinDeg a minimal degree of BSpline surface to create.
3815                 theMaxDeg a maximal degree of BSpline surface to create.
3816                 theTol3D a 3d tolerance to be reached.
3817                 theName Object name; when specified, this parameter is used
3818                         for result publication in the study. Otherwise, if automatic
3819                         publication is switched on, default value is used for result name.
3820
3821             Returns:
3822                 New GEOM.GEOM_Object (face), containing the created filling surface.
3823
3824             Example of usage:
3825                 filling = geompy.MakeFillingNew(compound, 2, 5, 0.0001)
3826             """
3827             # Example: see GEOM_TestAll.py
3828             theMinDeg,theMaxDeg,theTol3D,Parameters = ParseParameters(theMinDeg, theMaxDeg, theTol3D)
3829             anObj = self.PrimOp.MakeFilling(ToList(theContours), theMinDeg, theMaxDeg,
3830                                             0, theTol3D, 0, GEOM.FOM_Default, True)
3831             RaiseIfFailed("MakeFillingNew", self.PrimOp)
3832             anObj.SetParameters(Parameters)
3833             self._autoPublish(anObj, theName, "filling")
3834             return anObj
3835
3836         ## Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
3837         #  @param theSeqSections - set of specified sections.
3838         #  @param theModeSolid - mode defining building solid or shell
3839         #  @param thePreci - precision 3D used for smoothing
3840         #  @param theRuled - mode defining type of the result surfaces (ruled or smoothed).
3841         #  @param theName Object name; when specified, this parameter is used
3842         #         for result publication in the study. Otherwise, if automatic
3843         #         publication is switched on, default value is used for result name.
3844         #
3845         #  @return New GEOM.GEOM_Object, containing the created shell or solid.
3846         #
3847         #  @ref swig_todo "Example"
3848         @ManageTransactions("PrimOp")
3849         def MakeThruSections(self, theSeqSections, theModeSolid, thePreci, theRuled, theName=None):
3850             """
3851             Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
3852
3853             Parameters:
3854                 theSeqSections - set of specified sections.
3855                 theModeSolid - mode defining building solid or shell
3856                 thePreci - precision 3D used for smoothing
3857                 theRuled - mode defining type of the result surfaces (ruled or smoothed).
3858                 theName Object name; when specified, this parameter is used
3859                         for result publication in the study. Otherwise, if automatic
3860                         publication is switched on, default value is used for result name.
3861
3862             Returns:
3863                 New GEOM.GEOM_Object, containing the created shell or solid.
3864             """
3865             # Example: see GEOM_TestAll.py
3866             anObj = self.PrimOp.MakeThruSections(theSeqSections,theModeSolid,thePreci,theRuled)
3867             RaiseIfFailed("MakeThruSections", self.PrimOp)
3868             self._autoPublish(anObj, theName, "filling")
3869             return anObj
3870
3871         ## Create a shape by extrusion of the base shape along
3872         #  the path shape. The path shape can be a wire or an edge. It is
3873         #  possible to generate groups along with the result by means of
3874         #  setting the flag \a IsGenerateGroups.<BR>
3875         #  If \a thePath is a closed edge or wire and \a IsGenerateGroups is
3876         #  set, an error is occured. If \a thePath is not closed edge/wire,
3877         #  the following groups are returned:
3878         #  - If \a theBase is unclosed edge or wire: "Down", "Up", "Side1",
3879         #    "Side2";
3880         #  - If \a theBase is closed edge or wire, face or shell: "Down", "Up",
3881         #    "Other".
3882         #  .
3883         #  "Down" and "Up" groups contain:
3884         #  - Edges if \a theBase is edge or wire;
3885         #  - Faces if \a theBase is face or shell.<BR>
3886         #  .
3887         #  "Side1" and "Side2" groups contain edges generated from the first
3888         #  and last vertices of \a theBase. The first and last vertices are
3889         #  determined taking into account edge/wire orientation.<BR>
3890         #  "Other" group represents faces generated from the bounding edges of
3891         #  \a theBase.
3892         #
3893         #  @param theBase Base shape to be extruded.
3894         #  @param thePath Path shape to extrude the base shape along it.
3895         #  @param IsGenerateGroups flag that tells if it is necessary to
3896         #         create groups. It is equal to False by default.
3897         #  @param theName Object name; when specified, this parameter is used
3898         #         for result publication in the study. Otherwise, if automatic
3899         #         publication is switched on, default value is used for result name.
3900         #
3901         #  @return New GEOM.GEOM_Object, containing the created pipe if 
3902         #          \a IsGenerateGroups is not set. Otherwise it returns new
3903         #          GEOM.ListOfGO. Its first element is the created pipe, the
3904         #          remaining ones are created groups.
3905         #
3906         #  @ref tui_creation_pipe "Example"
3907         @ManageTransactions("PrimOp")
3908         def MakePipe(self, theBase, thePath,
3909                      IsGenerateGroups=False, theName=None):
3910             """
3911             Create a shape by extrusion of the base shape along
3912             the path shape. The path shape can be a wire or an edge. It is
3913             possible to generate groups along with the result by means of
3914             setting the flag IsGenerateGroups.
3915             If thePath is a closed edge or wire and IsGenerateGroups is
3916             set, an error is occured. If thePath is not closed edge/wire,
3917             the following groups are returned:
3918             - If theBase is unclosed edge or wire: "Down", "Up", "Side1",
3919               "Side2";
3920             - If theBase is closed edge or wire, face or shell: "Down", "Up",
3921               "Other".
3922             "Down" and "Up" groups contain:
3923             - Edges if theBase is edge or wire;
3924             - Faces if theBase is face or shell.
3925             "Side1" and "Side2" groups contain edges generated from the first
3926             and last vertices of theBase. The first and last vertices are
3927             determined taking into account edge/wire orientation.
3928             "Other" group represents faces generated from the bounding edges of
3929             theBase.
3930
3931             Parameters:
3932                 theBase Base shape to be extruded.
3933                 thePath Path shape to extrude the base shape along it.
3934                 IsGenerateGroups flag that tells if it is necessary to
3935                         create groups. It is equal to False by default.
3936                 theName Object name; when specified, this parameter is used
3937                         for result publication in the study. Otherwise, if automatic
3938                         publication is switched on, default value is used for result name.
3939
3940             Returns:
3941                 New GEOM.GEOM_Object, containing the created pipe if 
3942                 IsGenerateGroups is not set. Otherwise it returns new
3943                 GEOM.ListOfGO. Its first element is the created pipe, the
3944                 remaining ones are created groups.
3945             """
3946             # Example: see GEOM_TestAll.py
3947             aList = self.PrimOp.MakePipe(theBase, thePath, IsGenerateGroups)
3948             RaiseIfFailed("MakePipe", self.PrimOp)
3949
3950             if IsGenerateGroups:
3951               self._autoPublish(aList, theName, "pipe")
3952               return aList
3953
3954             self._autoPublish(aList[0], theName, "pipe")
3955             return aList[0]
3956
3957         ## Create a shape by extrusion of the profile shape along
3958         #  the path shape. The path shape can be a wire or an edge.
3959         #  the several profiles can be specified in the several locations of path.
3960         #  It is possible to generate groups along with the result by means of
3961         #  setting the flag \a IsGenerateGroups. For detailed information on
3962         #  groups that can be created please see the method MakePipe().
3963         #  @param theSeqBases - list of  Bases shape to be extruded.
3964         #  @param theLocations - list of locations on the path corresponding
3965         #                        specified list of the Bases shapes. Number of locations
3966         #                        should be equal to number of bases or list of locations can be empty.
3967         #  @param thePath - Path shape to extrude the base shape along it.
3968         #  @param theWithContact - the mode defining that the section is translated to be in
3969         #                          contact with the spine.
3970         #  @param theWithCorrection - defining that the section is rotated to be
3971         #                             orthogonal to the spine tangent in the correspondent point
3972         #  @param IsGenerateGroups - flag that tells if it is necessary to
3973         #                          create groups. It is equal to False by default.
3974         #  @param theName Object name; when specified, this parameter is used
3975         #         for result publication in the study. Otherwise, if automatic
3976         #         publication is switched on, default value is used for result name.
3977         #
3978         #  @return New GEOM.GEOM_Object, containing the created pipe if 
3979         #          \a IsGenerateGroups is not set. Otherwise it returns new
3980         #          GEOM.ListOfGO. Its first element is the created pipe, the
3981         #          remaining ones are created groups.
3982         #
3983         #  @ref tui_creation_pipe_with_diff_sec "Example"
3984         @ManageTransactions("PrimOp")
3985         def MakePipeWithDifferentSections(self, theSeqBases,
3986                                           theLocations, thePath,
3987                                           theWithContact, theWithCorrection,
3988                                           IsGenerateGroups=False, theName=None):
3989             """
3990             Create a shape by extrusion of the profile shape along
3991             the path shape. The path shape can be a wire or an edge.
3992             the several profiles can be specified in the several locations of path.
3993             It is possible to generate groups along with the result by means of
3994             setting the flag IsGenerateGroups. For detailed information on
3995             groups that can be created please see the method geompy.MakePipe().
3996
3997             Parameters:
3998                 theSeqBases - list of  Bases shape to be extruded.
3999                 theLocations - list of locations on the path corresponding
4000                                specified list of the Bases shapes. Number of locations
4001                                should be equal to number of bases or list of locations can be empty.
4002                 thePath - Path shape to extrude the base shape along it.
4003                 theWithContact - the mode defining that the section is translated to be in
4004                                  contact with the spine(0/1)
4005                 theWithCorrection - defining that the section is rotated to be
4006                                     orthogonal to the spine tangent in the correspondent point (0/1)
4007                 IsGenerateGroups - flag that tells if it is necessary to
4008                                  create groups. It is equal to False by default.
4009                 theName Object name; when specified, this parameter is used
4010                         for result publication in the study. Otherwise, if automatic
4011                         publication is switched on, default value is used for result name.
4012
4013             Returns:
4014                 New GEOM.GEOM_Object, containing the created pipe if 
4015                 IsGenerateGroups is not set. Otherwise it returns new
4016                 GEOM.ListOfGO. Its first element is the created pipe, the
4017                 remaining ones are created groups.
4018             """
4019             aList = self.PrimOp.MakePipeWithDifferentSections(theSeqBases,
4020                                                               theLocations, thePath,
4021                                                               theWithContact, theWithCorrection,
4022                                                               IsGenerateGroups)
4023             RaiseIfFailed("MakePipeWithDifferentSections", self.PrimOp)
4024
4025             if IsGenerateGroups:
4026               self._autoPublish(aList, theName, "pipe")
4027               return aList
4028
4029             self._autoPublish(aList[0], theName, "pipe")
4030             return aList[0]
4031
4032         ## Create a shape by extrusion of the profile shape along
4033         #  the path shape. The path shape can be a wire or an edge.
4034         #  the several profiles can be specified in the several locations of path.
4035         #  It is possible to generate groups along with the result by means of
4036         #  setting the flag \a IsGenerateGroups. For detailed information on
4037         #  groups that can be created please see the method MakePipe().
4038         #  @param theSeqBases - list of  Bases shape to be extruded. Base shape must be
4039         #                       shell or face. If number of faces in neighbour sections
4040         #                       aren't coincided result solid between such sections will
4041         #                       be created using external boundaries of this shells.
4042         #  @param theSeqSubBases - list of corresponding sub-shapes of section shapes.
4043         #                          This list is used for searching correspondences between
4044         #                          faces in the sections. Size of this list must be equal
4045         #                          to size of list of base shapes.
4046         #  @param theLocations - list of locations on the path corresponding
4047         #                        specified list of the Bases shapes. Number of locations
4048         #                        should be equal to number of bases. First and last
4049         #                        locations must be coincided with first and last vertexes
4050         #                        of path correspondingly.
4051         #  @param thePath - Path shape to extrude the base shape along it.
4052         #  @param theWithContact - the mode defining that the section is translated to be in
4053         #                          contact with the spine.
4054         #  @param theWithCorrection - defining that the section is rotated to be
4055         #                             orthogonal to the spine tangent in the correspondent point
4056         #  @param IsGenerateGroups - flag that tells if it is necessary to
4057         #                          create groups. It is equal to False by default.
4058         #  @param theName Object name; when specified, this parameter is used
4059         #         for result publication in the study. Otherwise, if automatic
4060         #         publication is switched on, default value is used for result name.
4061         #
4062         #  @return New GEOM.GEOM_Object, containing the created solids if 
4063         #          \a IsGenerateGroups is not set. Otherwise it returns new
4064         #          GEOM.ListOfGO. Its first element is the created solids, the
4065         #          remaining ones are created groups.
4066         #
4067         #  @ref tui_creation_pipe_with_shell_sec "Example"
4068         @ManageTransactions("PrimOp")
4069         def MakePipeWithShellSections(self, theSeqBases, theSeqSubBases,
4070                                       theLocations, thePath,
4071                                       theWithContact, theWithCorrection,
4072                                       IsGenerateGroups=False, theName=None):
4073             """
4074             Create a shape by extrusion of the profile shape along
4075             the path shape. The path shape can be a wire or an edge.
4076             the several profiles can be specified in the several locations of path.
4077             It is possible to generate groups along with the result by means of
4078             setting the flag IsGenerateGroups. For detailed information on
4079             groups that can be created please see the method geompy.MakePipe().
4080
4081             Parameters:
4082                 theSeqBases - list of  Bases shape to be extruded. Base shape must be
4083                               shell or face. If number of faces in neighbour sections
4084                               aren't coincided result solid between such sections will
4085                               be created using external boundaries of this shells.
4086                 theSeqSubBases - list of corresponding sub-shapes of section shapes.
4087                                  This list is used for searching correspondences between
4088                                  faces in the sections. Size of this list must be equal
4089                                  to size of list of base shapes.
4090                 theLocations - list of locations on the path corresponding
4091                                specified list of the Bases shapes. Number of locations
4092                                should be equal to number of bases. First and last
4093                                locations must be coincided with first and last vertexes
4094                                of path correspondingly.
4095                 thePath - Path shape to extrude the base shape along it.
4096                 theWithContact - the mode defining that the section is translated to be in
4097                                  contact with the spine (0/1)
4098                 theWithCorrection - defining that the section is rotated to be
4099                                     orthogonal to the spine tangent in the correspondent point (0/1)
4100                 IsGenerateGroups - flag that tells if it is necessary to
4101                                  create groups. It is equal to False by default.
4102                 theName Object name; when specified, this parameter is used
4103                         for result publication in the study. Otherwise, if automatic
4104                         publication is switched on, default value is used for result name.
4105
4106             Returns:
4107                 New GEOM.GEOM_Object, containing the created solids if 
4108                 IsGenerateGroups is not set. Otherwise it returns new
4109                 GEOM.ListOfGO. Its first element is the created solids, the
4110                 remaining ones are created groups.
4111             """
4112             aList = self.PrimOp.MakePipeWithShellSections(theSeqBases, theSeqSubBases,
4113                                                           theLocations, thePath,
4114                                                           theWithContact, theWithCorrection,
4115                                                           IsGenerateGroups)
4116             RaiseIfFailed("MakePipeWithShellSections", self.PrimOp)
4117
4118             if IsGenerateGroups:
4119               self._autoPublish(aList, theName, "pipe")
4120               return aList
4121
4122             self._autoPublish(aList[0], theName, "pipe")
4123             return aList[0]
4124
4125         ## Create a shape by extrusion of the profile shape along
4126         #  the path shape. This function is used only for debug pipe
4127         #  functionality - it is a version of function MakePipeWithShellSections()
4128         #  which give a possibility to recieve information about
4129         #  creating pipe between each pair of sections step by step.
4130         @ManageTransactions("PrimOp")
4131         def MakePipeWithShellSectionsBySteps(self, theSeqBases, theSeqSubBases,
4132                                              theLocations, thePath,
4133                                              theWithContact, theWithCorrection,
4134                                              IsGenerateGroups=False, theName=None):
4135             """
4136             Create a shape by extrusion of the profile shape along
4137             the path shape. This function is used only for debug pipe
4138             functionality - it is a version of previous function
4139             geompy.MakePipeWithShellSections() which give a possibility to
4140             recieve information about creating pipe between each pair of
4141             sections step by step.
4142             """
4143             res = []
4144             nbsect = len(theSeqBases)
4145             nbsubsect = len(theSeqSubBases)
4146             #print "nbsect = ",nbsect
4147             for i in range(1,nbsect):
4148                 #print "  i = ",i
4149                 tmpSeqBases = [ theSeqBases[i-1], theSeqBases[i] ]
4150                 tmpLocations = [ theLocations[i-1], theLocations[i] ]
4151                 tmpSeqSubBases = []
4152                 if nbsubsect>0: tmpSeqSubBases = [ theSeqSubBases[i-1], theSeqSubBases[i] ]
4153                 aList = self.PrimOp.MakePipeWithShellSections(tmpSeqBases, tmpSeqSubBases,
4154                                                               tmpLocations, thePath,
4155                                                               theWithContact, theWithCorrection,
4156                                                               IsGenerateGroups)
4157                 if self.PrimOp.IsDone() == 0:
4158                     print "Problems with pipe creation between ",i," and ",i+1," sections"
4159                     RaiseIfFailed("MakePipeWithShellSections", self.PrimOp)
4160                     break
4161                 else:
4162                     print "Pipe between ",i," and ",i+1," sections is OK"
4163                     res.append(aList[0])
4164                     pass
4165                 pass
4166
4167             resc = self.MakeCompound(res)
4168             #resc = self.MakeSewing(res, 0.001)
4169             #print "resc: ",resc
4170             self._autoPublish(resc, theName, "pipe")
4171             return resc
4172
4173         ## Create solids between given sections.
4174         #  It is possible to generate groups along with the result by means of
4175         #  setting the flag \a IsGenerateGroups. For detailed information on
4176         #  groups that can be created please see the method MakePipe().
4177         #  @param theSeqBases - list of sections (shell or face).
4178         #  @param theLocations - list of corresponding vertexes
4179         #  @param IsGenerateGroups - flag that tells if it is necessary to
4180         #         create groups. It is equal to False by default.
4181         #  @param theName Object name; when specified, this parameter is used
4182         #         for result publication in the study. Otherwise, if automatic
4183         #         publication is switched on, default value is used for result name.
4184         #
4185         #  @return New GEOM.GEOM_Object, containing the created solids if 
4186         #          \a IsGenerateGroups is not set. Otherwise it returns new
4187         #          GEOM.ListOfGO. Its first element is the created solids, the
4188         #          remaining ones are created groups.
4189         #
4190         #  @ref tui_creation_pipe_without_path "Example"
4191         @ManageTransactions("PrimOp")
4192         def MakePipeShellsWithoutPath(self, theSeqBases, theLocations,
4193                                       IsGenerateGroups=False, theName=None):
4194             """
4195             Create solids between given sections.
4196             It is possible to generate groups along with the result by means of
4197             setting the flag IsGenerateGroups. For detailed information on
4198             groups that can be created please see the method geompy.MakePipe().
4199
4200             Parameters:
4201                 theSeqBases - list of sections (shell or face).
4202                 theLocations - list of corresponding vertexes
4203                 IsGenerateGroups - flag that tells if it is necessary to
4204                                  create groups. It is equal to False by default.
4205                 theName Object name; when specified, this parameter is used
4206                         for result publication in the study. Otherwise, if automatic
4207                         publication is switched on, default value is used for result name.
4208
4209             Returns:
4210                 New GEOM.GEOM_Object, containing the created solids if 
4211                 IsGenerateGroups is not set. Otherwise it returns new
4212                 GEOM.ListOfGO. Its first element is the created solids, the
4213                 remaining ones are created groups.
4214             """
4215             aList = self.PrimOp.MakePipeShellsWithoutPath(theSeqBases, theLocations,
4216                                                           IsGenerateGroups)
4217             RaiseIfFailed("MakePipeShellsWithoutPath", self.PrimOp)
4218
4219             if IsGenerateGroups:
4220               self._autoPublish(aList, theName, "pipe")
4221               return aList
4222
4223             self._autoPublish(aList[0], theName, "pipe")
4224             return aList[0]
4225
4226         ## Create a shape by extrusion of the base shape along
4227         #  the path shape with constant bi-normal direction along the given vector.
4228         #  The path shape can be a wire or an edge.
4229         #  It is possible to generate groups along with the result by means of
4230         #  setting the flag \a IsGenerateGroups. For detailed information on
4231         #  groups that can be created please see the method MakePipe().
4232         #  @param theBase Base shape to be extruded.
4233         #  @param thePath Path shape to extrude the base shape along it.
4234         #  @param theVec Vector defines a constant binormal direction to keep the
4235         #                same angle beetween the direction and the sections
4236         #                along the sweep surface.
4237         #  @param IsGenerateGroups flag that tells if it is necessary to
4238         #         create groups. It is equal to False by default.
4239         #  @param theName Object name; when specified, this parameter is used
4240         #         for result publication in the study. Otherwise, if automatic
4241         #         publication is switched on, default value is used for result name.
4242         #
4243         #  @return New GEOM.GEOM_Object, containing the created pipe if 
4244         #          \a IsGenerateGroups is not set. Otherwise it returns new
4245         #          GEOM.ListOfGO. Its first element is the created pipe, the
4246         #          remaining ones are created groups.
4247         #
4248         #  @ref tui_creation_pipe "Example"
4249         @ManageTransactions("PrimOp")
4250         def MakePipeBiNormalAlongVector(self, theBase, thePath, theVec,
4251                                         IsGenerateGroups=False, theName=None):
4252             """
4253             Create a shape by extrusion of the base shape along
4254             the path shape with constant bi-normal direction along the given vector.
4255             The path shape can be a wire or an edge.
4256             It is possible to generate groups along with the result by means of
4257             setting the flag IsGenerateGroups. For detailed information on
4258             groups that can be created please see the method geompy.MakePipe().
4259
4260             Parameters:
4261                 theBase Base shape to be extruded.
4262                 thePath Path shape to extrude the base shape along it.
4263                 theVec Vector defines a constant binormal direction to keep the
4264                        same angle beetween the direction and the sections
4265                        along the sweep surface.
4266                 IsGenerateGroups flag that tells if it is necessary to
4267                                  create groups. It is equal to False by default.
4268                 theName Object name; when specified, this parameter is used
4269                         for result publication in the study. Otherwise, if automatic
4270                         publication is switched on, default value is used for result name.
4271
4272             Returns:
4273                 New GEOM.GEOM_Object, containing the created pipe if 
4274                 IsGenerateGroups is not set. Otherwise it returns new
4275                 GEOM.ListOfGO. Its first element is the created pipe, the
4276                 remaining ones are created groups.
4277             """
4278             # Example: see GEOM_TestAll.py
4279             aList = self.PrimOp.MakePipeBiNormalAlongVector(theBase, thePath,
4280                           theVec, IsGenerateGroups)
4281             RaiseIfFailed("MakePipeBiNormalAlongVector", self.PrimOp)
4282
4283             if IsGenerateGroups:
4284               self._autoPublish(aList, theName, "pipe")
4285               return aList
4286
4287             self._autoPublish(aList[0], theName, "pipe")
4288             return aList[0]
4289
4290         ## Makes a thick solid from a shape. If the input is a surface shape
4291         #  (face or shell) the result is a thick solid. If an input shape is
4292         #  a solid the result is a hollowed solid with removed faces.
4293         #  @param theShape Face or Shell to get thick solid or solid to get
4294         #         hollowed solid.
4295         #  @param theThickness Thickness of the resulting solid
4296         #  @param theFacesIDs the list of face IDs to be removed from the
4297         #         result. It is ignored if \a theShape is a face or a shell.
4298         #         It is empty by default. 
4299         #  @param theInside If true the thickness is applied towards inside
4300         #  @param theName Object name; when specified, this parameter is used
4301         #         for result publication in the study. Otherwise, if automatic
4302         #         publication is switched on, default value is used for result name.
4303         #
4304         #  @return New GEOM.GEOM_Object, containing the created solid
4305         #
4306         #  @ref tui_creation_thickness "Example"
4307         @ManageTransactions("PrimOp")
4308         def MakeThickSolid(self, theShape, theThickness,
4309                            theFacesIDs=[], theInside=False, theName=None):
4310             """
4311             Make a thick solid from a shape. If the input is a surface shape
4312             (face or shell) the result is a thick solid. If an input shape is
4313             a solid the result is a hollowed solid with removed faces.
4314
4315             Parameters:
4316                  theShape Face or Shell to get thick solid or solid to get
4317                           hollowed solid.
4318                  theThickness Thickness of the resulting solid
4319                  theFacesIDs the list of face IDs to be removed from the
4320                           result. It is ignored if theShape is a face or a
4321                           shell. It is empty by default. 
4322                  theInside If true the thickness is applied towards inside
4323                  theName Object name; when specified, this parameter is used
4324                          for result publication in the study. Otherwise, if automatic
4325                          publication is switched on, default value is used for result name.
4326
4327             Returns:
4328                 New GEOM.GEOM_Object, containing the created solid
4329             """
4330             # Example: see GEOM_TestAll.py
4331             theThickness,Parameters = ParseParameters(theThickness)
4332             anObj = self.PrimOp.MakeThickening(theShape, theFacesIDs,
4333                                                theThickness, True, theInside)
4334             RaiseIfFailed("MakeThickSolid", self.PrimOp)
4335             anObj.SetParameters(Parameters)
4336             self._autoPublish(anObj, theName, "thickSolid")
4337             return anObj
4338
4339
4340         ## Modifies a shape to make it a thick solid. If the input is a surface
4341         #  shape (face or shell) the result is a thick solid. If an input shape
4342         #  is a solid the result is a hollowed solid with removed faces.
4343         #  @param theShape Face or Shell to get thick solid or solid to get
4344         #         hollowed solid.
4345         #  @param theThickness Thickness of the resulting solid
4346         #  @param theFacesIDs the list of face IDs to be removed from the
4347         #         result. It is ignored if \a theShape is a face or a shell.
4348         #         It is empty by default. 
4349         #  @param theInside If true the thickness is applied towards inside
4350         #
4351         #  @return The modified shape
4352         #
4353         #  @ref tui_creation_thickness "Example"
4354         @ManageTransactions("PrimOp")
4355         def Thicken(self, theShape, theThickness, theFacesIDs=[], theInside=False):
4356             """
4357             Modifies a shape to make it a thick solid. If the input is a
4358             surface shape (face or shell) the result is a thick solid. If
4359             an input shape is a solid the result is a hollowed solid with
4360             removed faces.
4361
4362             Parameters:
4363                 theShape Face or Shell to get thick solid or solid to get
4364                          hollowed solid.
4365                 theThickness Thickness of the resulting solid
4366                 theFacesIDs the list of face IDs to be removed from the
4367                          result. It is ignored if \a theShape is a face or
4368                          a shell. It is empty by default. 
4369                 theInside If true the thickness is applied towards inside
4370
4371             Returns:
4372                 The modified shape
4373             """
4374             # Example: see GEOM_TestAll.py
4375             theThickness,Parameters = ParseParameters(theThickness)
4376             anObj = self.PrimOp.MakeThickening(theShape, theFacesIDs,
4377                                                theThickness, False, theInside)
4378             RaiseIfFailed("Thicken", self.PrimOp)
4379             anObj.SetParameters(Parameters)
4380             return anObj
4381
4382         ## Build a middle path of a pipe-like shape.
4383         #  The path shape can be a wire or an edge.
4384         #  @param theShape It can be closed or unclosed pipe-like shell
4385         #                  or a pipe-like solid.
4386         #  @param theBase1, theBase2 Two bases of the supposed pipe. This
4387         #                            should be wires or faces of theShape.
4388         #  @param theName Object name; when specified, this parameter is used
4389         #         for result publication in the study. Otherwise, if automatic
4390         #         publication is switched on, default value is used for result name.
4391         #
4392         #  @note It is not assumed that exact or approximate copy of theShape
4393         #        can be obtained by applying existing Pipe operation on the
4394         #        resulting "Path" wire taking theBase1 as the base - it is not
4395         #        always possible; though in some particular cases it might work
4396         #        it is not guaranteed. Thus, RestorePath function should not be
4397         #        considered as an exact reverse operation of the Pipe.
4398         #
4399         #  @return New GEOM.GEOM_Object, containing an edge or wire that represent
4400         #                                source pipe's "path".
4401         #
4402         #  @ref tui_creation_pipe_path "Example"
4403         @ManageTransactions("PrimOp")
4404         def RestorePath (self, theShape, theBase1, theBase2, theName=None):
4405             """
4406             Build a middle path of a pipe-like shape.
4407             The path shape can be a wire or an edge.
4408
4409             Parameters:
4410                 theShape It can be closed or unclosed pipe-like shell
4411                          or a pipe-like solid.
4412                 theBase1, theBase2 Two bases of the supposed pipe. This
4413                                    should be wires or faces of theShape.
4414                 theName Object name; when specified, this parameter is used
4415                         for result publication in the study. Otherwise, if automatic
4416                         publication is switched on, default value is used for result name.
4417
4418             Returns:
4419                 New GEOM_Object, containing an edge or wire that represent
4420                                  source pipe's path.
4421             """
4422             anObj = self.PrimOp.RestorePath(theShape, theBase1, theBase2)
4423             RaiseIfFailed("RestorePath", self.PrimOp)
4424             self._autoPublish(anObj, theName, "path")
4425             return anObj
4426
4427         ## Build a middle path of a pipe-like shape.
4428         #  The path shape can be a wire or an edge.
4429         #  @param theShape It can be closed or unclosed pipe-like shell
4430         #                  or a pipe-like solid.
4431         #  @param listEdges1, listEdges2 Two bases of the supposed pipe. This
4432         #                                should be lists of edges of theShape.
4433         #  @param theName Object name; when specified, this parameter is used
4434         #         for result publication in the study. Otherwise, if automatic
4435         #         publication is switched on, default value is used for result name.
4436         #
4437         #  @note It is not assumed that exact or approximate copy of theShape
4438         #        can be obtained by applying existing Pipe operation on the
4439         #        resulting "Path" wire taking theBase1 as the base - it is not
4440         #        always possible; though in some particular cases it might work
4441         #        it is not guaranteed. Thus, RestorePath function should not be
4442         #        considered as an exact reverse operation of the Pipe.
4443         #
4444         #  @return New GEOM.GEOM_Object, containing an edge or wire that represent
4445         #                                source pipe's "path".
4446         #
4447         #  @ref tui_creation_pipe_path "Example"
4448         @ManageTransactions("PrimOp")
4449         def RestorePathEdges (self, theShape, listEdges1, listEdges2, theName=None):
4450             """
4451             Build a middle path of a pipe-like shape.
4452             The path shape can be a wire or an edge.
4453
4454             Parameters:
4455                 theShape It can be closed or unclosed pipe-like shell
4456                          or a pipe-like solid.
4457                 listEdges1, listEdges2 Two bases of the supposed pipe. This
4458                                        should be lists of edges of theShape.
4459                 theName Object name; when specified, this parameter is used
4460                         for result publication in the study. Otherwise, if automatic
4461                         publication is switched on, default value is used for result name.
4462
4463             Returns:
4464                 New GEOM_Object, containing an edge or wire that represent
4465                                  source pipe's path.
4466             """
4467             anObj = self.PrimOp.RestorePathEdges(theShape, listEdges1, listEdges2)
4468             RaiseIfFailed("RestorePath", self.PrimOp)
4469             self._autoPublish(anObj, theName, "path")
4470             return anObj
4471
4472         # end of l3_complex
4473         ## @}
4474
4475         ## @addtogroup l3_advanced
4476         ## @{
4477
4478         ## Create a linear edge with specified ends.
4479         #  @param thePnt1 Point for the first end of edge.
4480         #  @param thePnt2 Point for the second end of edge.
4481         #  @param theName Object name; when specified, this parameter is used
4482         #         for result publication in the study. Otherwise, if automatic
4483         #         publication is switched on, default value is used for result name.
4484         #
4485         #  @return New GEOM.GEOM_Object, containing the created edge.
4486         #
4487         #  @ref tui_creation_edge "Example"
4488         @ManageTransactions("ShapesOp")
4489         def MakeEdge(self, thePnt1, thePnt2, theName=None):
4490             """
4491             Create a linear edge with specified ends.
4492
4493             Parameters:
4494                 thePnt1 Point for the first end of edge.
4495                 thePnt2 Point for the second end of edge.
4496                 theName Object name; when specified, this parameter is used
4497                         for result publication in the study. Otherwise, if automatic
4498                         publication is switched on, default value is used for result name.
4499
4500             Returns:
4501                 New GEOM.GEOM_Object, containing the created edge.
4502             """
4503             # Example: see GEOM_TestAll.py
4504             anObj = self.ShapesOp.MakeEdge(thePnt1, thePnt2)
4505             RaiseIfFailed("MakeEdge", self.ShapesOp)
4506             self._autoPublish(anObj, theName, "edge")
4507             return anObj
4508
4509         ## Create a new edge, corresponding to the given length on the given curve.
4510         #  @param theRefCurve The referenced curve (edge).
4511         #  @param theLength Length on the referenced curve. It can be negative.
4512         #  @param theStartPoint Any point can be selected for it, the new edge will begin
4513         #                       at the end of \a theRefCurve, close to the selected point.
4514         #                       If None, start from the first point of \a theRefCurve.
4515         #  @param theName Object name; when specified, this parameter is used
4516         #         for result publication in the study. Otherwise, if automatic
4517         #         publication is switched on, default value is used for result name.
4518         #
4519         #  @return New GEOM.GEOM_Object, containing the created edge.
4520         #
4521         #  @ref tui_creation_edge "Example"
4522         @ManageTransactions("ShapesOp")
4523         def MakeEdgeOnCurveByLength(self, theRefCurve, theLength, theStartPoint = None, theName=None):
4524             """
4525             Create a new edge, corresponding to the given length on the given curve.
4526
4527             Parameters:
4528                 theRefCurve The referenced curve (edge).
4529                 theLength Length on the referenced curve. It can be negative.
4530                 theStartPoint Any point can be selected for it, the new edge will begin
4531                               at the end of theRefCurve, close to the selected point.
4532                               If None, start from the first point of theRefCurve.
4533                 theName Object name; when specified, this parameter is used
4534                         for result publication in the study. Otherwise, if automatic
4535                         publication is switched on, default value is used for result name.
4536
4537             Returns:
4538                 New GEOM.GEOM_Object, containing the created edge.
4539             """
4540             # Example: see GEOM_TestAll.py
4541             theLength, Parameters = ParseParameters(theLength)
4542             anObj = self.ShapesOp.MakeEdgeOnCurveByLength(theRefCurve, theLength, theStartPoint)
4543             RaiseIfFailed("MakeEdgeOnCurveByLength", self.ShapesOp)
4544             anObj.SetParameters(Parameters)
4545             self._autoPublish(anObj, theName, "edge")
4546             return anObj
4547
4548         ## Create an edge from specified wire.
4549         #  @param theWire source Wire
4550         #  @param theLinearTolerance linear tolerance value (default = 1e-07)
4551         #  @param theAngularTolerance angular tolerance value (default = 1e-12)
4552         #  @param theName Object name; when specified, this parameter is used
4553         #         for result publication in the study. Otherwise, if automatic
4554         #         publication is switched on, default value is used for result name.
4555         #
4556         #  @return New GEOM.GEOM_Object, containing the created edge.
4557         #
4558         #  @ref tui_creation_edge "Example"
4559         @ManageTransactions("ShapesOp")
4560         def MakeEdgeWire(self, theWire, theLinearTolerance = 1e-07, theAngularTolerance = 1e-12, theName=None):
4561             """
4562             Create an edge from specified wire.
4563
4564             Parameters:
4565                 theWire source Wire
4566                 theLinearTolerance linear tolerance value (default = 1e-07)
4567                 theAngularTolerance angular tolerance value (default = 1e-12)
4568                 theName Object name; when specified, this parameter is used
4569                         for result publication in the study. Otherwise, if automatic
4570                         publication is switched on, default value is used for result name.
4571
4572             Returns:
4573                 New GEOM.GEOM_Object, containing the created edge.
4574             """
4575             # Example: see GEOM_TestAll.py
4576             anObj = self.ShapesOp.MakeEdgeWire(theWire, theLinearTolerance, theAngularTolerance)
4577             RaiseIfFailed("MakeEdgeWire", self.ShapesOp)
4578             self._autoPublish(anObj, theName, "edge")
4579             return anObj
4580
4581         ## Create a wire from the set of edges and wires.
4582         #  @param theEdgesAndWires List of edges and/or wires.
4583         #  @param theTolerance Maximum distance between vertices, that will be merged.
4584         #                      Values less than 1e-07 are equivalent to 1e-07 (Precision::Confusion())
4585         #  @param theName Object name; when specified, this parameter is used
4586         #         for result publication in the study. Otherwise, if automatic
4587         #         publication is switched on, default value is used for result name.
4588         #
4589         #  @return New GEOM.GEOM_Object, containing the created wire.
4590         #
4591         #  @ref tui_creation_wire "Example"
4592         @ManageTransactions("ShapesOp")
4593         def MakeWire(self, theEdgesAndWires, theTolerance = 1e-07, theName=None):
4594             """
4595             Create a wire from the set of edges and wires.
4596
4597             Parameters:
4598                 theEdgesAndWires List of edges and/or wires.
4599                 theTolerance Maximum distance between vertices, that will be merged.
4600                              Values less than 1e-07 are equivalent to 1e-07 (Precision::Confusion()).
4601                 theName Object name; when specified, this parameter is used
4602                         for result publication in the study. Otherwise, if automatic
4603                         publication is switched on, default value is used for result name.
4604
4605             Returns:
4606                 New GEOM.GEOM_Object, containing the created wire.
4607             """
4608             # Example: see GEOM_TestAll.py
4609             anObj = self.ShapesOp.MakeWire(theEdgesAndWires, theTolerance)
4610             RaiseIfFailed("MakeWire", self.ShapesOp)
4611             self._autoPublish(anObj, theName, "wire")
4612             return anObj
4613
4614         ## Create a face on the given wire.
4615         #  @param theWire closed Wire or Edge to build the face on.
4616         #  @param isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4617         #                        If the tolerance of the obtained planar face is less
4618         #                        than 1e-06, this face will be returned, otherwise the
4619         #                        algorithm tries to build any suitable face on the given
4620         #                        wire and prints a warning message.
4621         #  @param theName Object name; when specified, this parameter is used
4622         #         for result publication in the study. Otherwise, if automatic
4623         #         publication is switched on, default value is used for result name.
4624         #
4625         #  @return New GEOM.GEOM_Object, containing the created face.
4626         #
4627         #  @ref tui_creation_face "Example"
4628         @ManageTransactions("ShapesOp")
4629         def MakeFace(self, theWire, isPlanarWanted, theName=None):
4630             """
4631             Create a face on the given wire.
4632
4633             Parameters:
4634                 theWire closed Wire or Edge to build the face on.
4635                 isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4636                                If the tolerance of the obtained planar face is less
4637                                than 1e-06, this face will be returned, otherwise the
4638                                algorithm tries to build any suitable face on the given
4639                                wire and prints a warning message.
4640                 theName Object name; when specified, this parameter is used
4641                         for result publication in the study. Otherwise, if automatic
4642                         publication is switched on, default value is used for result name.
4643
4644             Returns:
4645                 New GEOM.GEOM_Object, containing the created face.
4646             """
4647             # Example: see GEOM_TestAll.py
4648             anObj = self.ShapesOp.MakeFace(theWire, isPlanarWanted)
4649             if isPlanarWanted and anObj is not None and self.ShapesOp.GetErrorCode() == "MAKE_FACE_TOLERANCE_TOO_BIG":
4650                 print "WARNING: Cannot build a planar face: required tolerance is too big. Non-planar face is built."
4651             else:
4652                 RaiseIfFailed("MakeFace", self.ShapesOp)
4653             self._autoPublish(anObj, theName, "face")
4654             return anObj
4655
4656         ## Create a face on the given wires set.
4657         #  @param theWires List of closed wires or edges to build the face on.
4658         #  @param isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4659         #                        If the tolerance of the obtained planar face is less
4660         #                        than 1e-06, this face will be returned, otherwise the
4661         #                        algorithm tries to build any suitable face on the given
4662         #                        wire and prints a warning message.
4663         #  @param theName Object name; when specified, this parameter is used
4664         #         for result publication in the study. Otherwise, if automatic
4665         #         publication is switched on, default value is used for result name.
4666         #
4667         #  @return New GEOM.GEOM_Object, containing the created face.
4668         #
4669         #  @ref tui_creation_face "Example"
4670         @ManageTransactions("ShapesOp")
4671         def MakeFaceWires(self, theWires, isPlanarWanted, theName=None):
4672             """
4673             Create a face on the given wires set.
4674
4675             Parameters:
4676                 theWires List of closed wires or edges to build the face on.
4677                 isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4678                                If the tolerance of the obtained planar face is less
4679                                than 1e-06, this face will be returned, otherwise the
4680                                algorithm tries to build any suitable face on the given
4681                                wire and prints a warning message.
4682                 theName Object name; when specified, this parameter is used
4683                         for result publication in the study. Otherwise, if automatic
4684                         publication is switched on, default value is used for result name.
4685
4686             Returns:
4687                 New GEOM.GEOM_Object, containing the created face.
4688             """
4689             # Example: see GEOM_TestAll.py
4690             anObj = self.ShapesOp.MakeFaceWires(ToList(theWires), isPlanarWanted)
4691             if isPlanarWanted and anObj is not None and self.ShapesOp.GetErrorCode() == "MAKE_FACE_TOLERANCE_TOO_BIG":
4692                 print "WARNING: Cannot build a planar face: required tolerance is too big. Non-planar face is built."
4693             else:
4694                 RaiseIfFailed("MakeFaceWires", self.ShapesOp)
4695             self._autoPublish(anObj, theName, "face")
4696             return anObj
4697
4698         ## See MakeFaceWires() method for details.
4699         #
4700         #  @ref tui_creation_face "Example 1"
4701         #  \n @ref swig_MakeFaces  "Example 2"
4702         def MakeFaces(self, theWires, isPlanarWanted, theName=None):
4703             """
4704             See geompy.MakeFaceWires() method for details.
4705             """
4706             # Example: see GEOM_TestOthers.py
4707             # note: auto-publishing is done in self.MakeFaceWires()
4708             anObj = self.MakeFaceWires(theWires, isPlanarWanted, theName)
4709             return anObj
4710
4711         ## Create a face based on a surface from given face bounded
4712         #  by given wire.
4713         #  @param theFace the face whose surface is used to create a new face.
4714         #  @param theWire the wire that will bound a new face.
4715         #  @param theName Object name; when specified, this parameter is used
4716         #         for result publication in the study. Otherwise, if automatic
4717         #         publication is switched on, default value is used for result name.
4718         #
4719         #  @return New GEOM.GEOM_Object, containing the created face.
4720         #
4721         #  @ref tui_creation_face "Example"
4722         @ManageTransactions("ShapesOp")
4723         def MakeFaceFromSurface(self, theFace, theWire, theName=None):
4724             """
4725             Create a face based on a surface from given face bounded
4726             by given wire.
4727
4728             Parameters:
4729                 theFace the face whose surface is used to create a new face.
4730                 theWire the wire that will bound a new face.
4731                 theName Object name; when specified, this parameter is used
4732                         for result publication in the study. Otherwise, if automatic
4733                         publication is switched on, default value is used for result name.
4734
4735             Returns:
4736                 New GEOM.GEOM_Object, containing the created face.
4737             """
4738             # Example: see GEOM_TestAll.py
4739             anObj = self.ShapesOp.MakeFaceFromSurface(theFace, theWire)
4740             RaiseIfFailed("MakeFaceFromSurface", self.ShapesOp)
4741             self._autoPublish(anObj, theName, "face")
4742             return anObj
4743           
4744         ## Create a face from a set of edges with the given constraints.
4745         #  @param theConstraints List of edges and constraint faces (as a sequence of a Edge + Face couples):
4746         #         - edges should form a closed wire;
4747         #         - for each edge, constraint face is optional: if a constraint face is missing
4748         #           for some edge, this means that there no constraint associated with this edge.
4749         #  @param theName Object name; when specified, this parameter is used
4750         #         for result publication in the study. Otherwise, if automatic
4751         #         publication is switched on, default value is used for result name.
4752         # 
4753         # @return New GEOM.GEOM_Object, containing the created face.
4754         # 
4755         # @ref tui_creation_face "Example"
4756         @ManageTransactions("ShapesOp")
4757         def MakeFaceWithConstraints(self, theConstraints, theName=None):
4758             """
4759             Create a face from a set of edges with the given constraints.
4760
4761             Parameters:
4762                 theConstraints List of edges and constraint faces (as a sequence of a Edge + Face couples):
4763                         - edges should form a closed wire;
4764                         - for each edge, constraint face is optional: if a constraint face is missing
4765                           for some edge, this means that there no constraint associated with this edge.
4766                 theName Object name; when specified, this parameter is used
4767                         for result publication in the study. Otherwise, if automatic
4768                         publication is switched on, default value is used for result name.
4769
4770             Returns:
4771                 New GEOM.GEOM_Object, containing the created face.
4772             """
4773             # Example: see GEOM_TestAll.py
4774             anObj = self.ShapesOp.MakeFaceWithConstraints(theConstraints)
4775             if anObj is None:
4776                 RaiseIfFailed("MakeFaceWithConstraints", self.ShapesOp)
4777             self._autoPublish(anObj, theName, "face")
4778             return anObj
4779
4780         ## Create a shell from the set of faces and shells.
4781         #  @param theFacesAndShells List of faces and/or shells.
4782         #  @param theName Object name; when specified, this parameter is used
4783         #         for result publication in the study. Otherwise, if automatic
4784         #         publication is switched on, default value is used for result name.
4785         #
4786         #  @return New GEOM.GEOM_Object, containing the created shell.
4787         #
4788         #  @ref tui_creation_shell "Example"
4789         @ManageTransactions("ShapesOp")
4790         def MakeShell(self, theFacesAndShells, theName=None):
4791             """
4792             Create a shell from the set of faces and shells.
4793
4794             Parameters:
4795                 theFacesAndShells List of faces and/or shells.
4796                 theName Object name; when specified, this parameter is used
4797                         for result publication in the study. Otherwise, if automatic
4798                         publication is switched on, default value is used for result name.
4799
4800             Returns:
4801                 New GEOM.GEOM_Object, containing the created shell.
4802             """
4803             # Example: see GEOM_TestAll.py
4804             anObj = self.ShapesOp.MakeShell( ToList( theFacesAndShells ))
4805             RaiseIfFailed("MakeShell", self.ShapesOp)
4806             self._autoPublish(anObj, theName, "shell")
4807             return anObj
4808
4809         ## Create a solid, bounded by the given shells.
4810         #  @param theShells Sequence of bounding shells.
4811         #  @param theName Object name; when specified, this parameter is used
4812         #         for result publication in the study. Otherwise, if automatic
4813         #         publication is switched on, default value is used for result name.
4814         #
4815         #  @return New GEOM.GEOM_Object, containing the created solid.
4816         #
4817         #  @ref tui_creation_solid "Example"
4818         @ManageTransactions("ShapesOp")
4819         def MakeSolid(self, theShells, theName=None):
4820             """
4821             Create a solid, bounded by the given shells.
4822
4823             Parameters:
4824                 theShells Sequence of bounding shells.
4825                 theName Object name; when specified, this parameter is used
4826                         for result publication in the study. Otherwise, if automatic
4827                         publication is switched on, default value is used for result name.
4828
4829             Returns:
4830                 New GEOM.GEOM_Object, containing the created solid.
4831             """
4832             # Example: see GEOM_TestAll.py
4833             theShells = ToList(theShells)
4834             if len(theShells) == 1:
4835                 descr = self._IsGoodForSolid(theShells[0])
4836                 #if len(descr) > 0:
4837                 #    raise RuntimeError, "MakeSolidShells : " + descr
4838                 if descr == "WRN_SHAPE_UNCLOSED":
4839                     raise RuntimeError, "MakeSolidShells : Unable to create solid from unclosed shape"
4840             anObj = self.ShapesOp.MakeSolidShells(theShells)
4841             RaiseIfFailed("MakeSolidShells", self.ShapesOp)
4842             self._autoPublish(anObj, theName, "solid")
4843             return anObj
4844
4845         ## Create a compound of the given shapes.
4846         #  @param theShapes List of shapes to put in compound.
4847         #  @param theName Object name; when specified, this parameter is used
4848         #         for result publication in the study. Otherwise, if automatic
4849         #         publication is switched on, default value is used for result name.
4850         #
4851         #  @return New GEOM.GEOM_Object, containing the created compound.
4852         #
4853         #  @ref tui_creation_compound "Example"
4854         @ManageTransactions("ShapesOp")
4855         def MakeCompound(self, theShapes, theName=None):
4856             """
4857             Create a compound of the given shapes.
4858
4859             Parameters:
4860                 theShapes List of shapes to put in compound.
4861                 theName Object name; when specified, this parameter is used
4862                         for result publication in the study. Otherwise, if automatic
4863                         publication is switched on, default value is used for result name.
4864
4865             Returns:
4866                 New GEOM.GEOM_Object, containing the created compound.
4867             """
4868             # Example: see GEOM_TestAll.py
4869             anObj = self.ShapesOp.MakeCompound(ToList(theShapes))
4870             RaiseIfFailed("MakeCompound", self.ShapesOp)
4871             self._autoPublish(anObj, theName, "compound")
4872             return anObj
4873         
4874         ## Create a solid (or solids) from the set of faces and/or shells.
4875         #  @param theFacesOrShells List of faces and/or shells.
4876         #  @param isIntersect If TRUE, forces performing intersections
4877         #         between arguments; otherwise (default) intersection is not performed.
4878         #  @param theName Object name; when specified, this parameter is used
4879         #         for result publication in the study. Otherwise, if automatic
4880         #         publication is switched on, default value is used for result name.
4881         #
4882         #  @return New GEOM.GEOM_Object, containing the created solid (or compound of solids).
4883         #
4884         #  @ref tui_creation_solid_from_faces "Example"
4885         @ManageTransactions("ShapesOp")
4886         def MakeSolidFromConnectedFaces(self, theFacesOrShells, isIntersect = False, theName=None):
4887             """
4888             Create a solid (or solids) from the set of connected faces and/or shells.
4889
4890             Parameters:
4891                 theFacesOrShells List of faces and/or shells.
4892                 isIntersect If TRUE, forces performing intersections
4893                         between arguments; otherwise (default) intersection is not performed
4894                 theName Object name; when specified, this parameter is used.
4895                         for result publication in the study. Otherwise, if automatic
4896                         publication is switched on, default value is used for result name.
4897
4898             Returns:
4899                 New GEOM.GEOM_Object, containing the created solid (or compound of solids).
4900             """
4901             # Example: see GEOM_TestAll.py
4902             anObj = self.ShapesOp.MakeSolidFromConnectedFaces(theFacesOrShells, isIntersect)
4903             RaiseIfFailed("MakeSolidFromConnectedFaces", self.ShapesOp)
4904             self._autoPublish(anObj, theName, "solid")
4905             return anObj
4906
4907         # end of l3_advanced
4908         ## @}
4909
4910         ## @addtogroup l2_measure
4911         ## @{
4912
4913         ## Gives quantity of faces in the given shape.
4914         #  @param theShape Shape to count faces of.
4915         #  @return Quantity of faces.
4916         #
4917         #  @ref swig_NumberOf "Example"
4918         @ManageTransactions("ShapesOp")
4919         def NumberOfFaces(self, theShape):
4920             """
4921             Gives quantity of faces in the given shape.
4922
4923             Parameters:
4924                 theShape Shape to count faces of.
4925
4926             Returns:
4927                 Quantity of faces.
4928             """
4929             # Example: see GEOM_TestOthers.py
4930             nb_faces = self.ShapesOp.NumberOfFaces(theShape)
4931             RaiseIfFailed("NumberOfFaces", self.ShapesOp)
4932             return nb_faces
4933
4934         ## Gives quantity of edges in the given shape.
4935         #  @param theShape Shape to count edges of.
4936         #  @return Quantity of edges.
4937         #
4938         #  @ref swig_NumberOf "Example"
4939         @ManageTransactions("ShapesOp")
4940         def NumberOfEdges(self, theShape):
4941             """
4942             Gives quantity of edges in the given shape.
4943
4944             Parameters:
4945                 theShape Shape to count edges of.
4946
4947             Returns:
4948                 Quantity of edges.
4949             """
4950             # Example: see GEOM_TestOthers.py
4951             nb_edges = self.ShapesOp.NumberOfEdges(theShape)
4952             RaiseIfFailed("NumberOfEdges", self.ShapesOp)
4953             return nb_edges
4954
4955         ## Gives quantity of sub-shapes of type theShapeType in the given shape.
4956         #  @param theShape Shape to count sub-shapes of.
4957         #  @param theShapeType Type of sub-shapes to count (see ShapeType())
4958         #  @return Quantity of sub-shapes of given type.
4959         #
4960         #  @ref swig_NumberOf "Example"
4961         @ManageTransactions("ShapesOp")
4962         def NumberOfSubShapes(self, theShape, theShapeType):
4963             """
4964             Gives quantity of sub-shapes of type theShapeType in the given shape.
4965
4966             Parameters:
4967                 theShape Shape to count sub-shapes of.
4968                 theShapeType Type of sub-shapes to count (see geompy.ShapeType)
4969
4970             Returns:
4971                 Quantity of sub-shapes of given type.
4972             """
4973             # Example: see GEOM_TestOthers.py
4974             nb_ss = self.ShapesOp.NumberOfSubShapes(theShape, theShapeType)
4975             RaiseIfFailed("NumberOfSubShapes", self.ShapesOp)
4976             return nb_ss
4977
4978         ## Gives quantity of solids in the given shape.
4979         #  @param theShape Shape to count solids in.
4980         #  @return Quantity of solids.
4981         #
4982         #  @ref swig_NumberOf "Example"
4983         @ManageTransactions("ShapesOp")
4984         def NumberOfSolids(self, theShape):
4985             """
4986             Gives quantity of solids in the given shape.
4987
4988             Parameters:
4989                 theShape Shape to count solids in.
4990
4991             Returns:
4992                 Quantity of solids.
4993             """
4994             # Example: see GEOM_TestOthers.py
4995             nb_solids = self.ShapesOp.NumberOfSubShapes(theShape, self.ShapeType["SOLID"])
4996             RaiseIfFailed("NumberOfSolids", self.ShapesOp)
4997             return nb_solids
4998
4999         # end of l2_measure
5000         ## @}
5001
5002         ## @addtogroup l3_healing
5003         ## @{
5004
5005         ## Reverses an orientation the given shape.
5006         #  @param theShape Shape to be reversed.
5007         #  @param theName Object name; when specified, this parameter is used
5008         #         for result publication in the study. Otherwise, if automatic
5009         #         publication is switched on, default value is used for result name.
5010         #
5011         #  @return The reversed copy of theShape.
5012         #
5013         #  @ref swig_ChangeOrientation "Example"
5014         @ManageTransactions("ShapesOp")
5015         def ChangeOrientation(self, theShape, theName=None):
5016             """
5017             Reverses an orientation the given shape.
5018
5019             Parameters:
5020                 theShape Shape to be reversed.
5021                 theName Object name; when specified, this parameter is used
5022                         for result publication in the study. Otherwise, if automatic
5023                         publication is switched on, default value is used for result name.
5024
5025             Returns:
5026                 The reversed copy of theShape.
5027             """
5028             # Example: see GEOM_TestAll.py
5029             anObj = self.ShapesOp.ChangeOrientation(theShape)
5030             RaiseIfFailed("ChangeOrientation", self.ShapesOp)
5031             self._autoPublish(anObj, theName, "reversed")
5032             return anObj
5033
5034         ## See ChangeOrientation() method for details.
5035         #
5036         #  @ref swig_OrientationChange "Example"
5037         def OrientationChange(self, theShape, theName=None):
5038             """
5039             See geompy.ChangeOrientation method for details.
5040             """
5041             # Example: see GEOM_TestOthers.py
5042             # note: auto-publishing is done in self.ChangeOrientation()
5043             anObj = self.ChangeOrientation(theShape, theName)
5044             return anObj
5045
5046         # end of l3_healing
5047         ## @}
5048
5049         ## @addtogroup l4_obtain
5050         ## @{
5051
5052         ## Retrieve all free faces from the given shape.
5053         #  Free face is a face, which is not shared between two shells of the shape.
5054         #  @param theShape Shape to find free faces in.
5055         #  @return List of IDs of all free faces, contained in theShape.
5056         #
5057         #  @ref tui_free_faces_page "Example"
5058         @ManageTransactions("ShapesOp")
5059         def GetFreeFacesIDs(self,theShape):
5060             """
5061             Retrieve all free faces from the given shape.
5062             Free face is a face, which is not shared between two shells of the shape.
5063
5064             Parameters:
5065                 theShape Shape to find free faces in.
5066
5067             Returns:
5068                 List of IDs of all free faces, contained in theShape.
5069             """
5070             # Example: see GEOM_TestOthers.py
5071             anIDs = self.ShapesOp.GetFreeFacesIDs(theShape)
5072             RaiseIfFailed("GetFreeFacesIDs", self.ShapesOp)
5073             return anIDs
5074
5075         ## Get all sub-shapes of theShape1 of the given type, shared with theShape2.
5076         #  @param theShape1 Shape to find sub-shapes in.
5077         #  @param theShape2 Shape to find shared sub-shapes with.
5078         #  @param theShapeType Type of sub-shapes to be retrieved.
5079         #  @param theName Object name; when specified, this parameter is used
5080         #         for result publication in the study. Otherwise, if automatic
5081         #         publication is switched on, default value is used for result name.
5082         #
5083         #  @return List of sub-shapes of theShape1, shared with theShape2.
5084         #
5085         #  @ref swig_GetSharedShapes "Example"
5086         @ManageTransactions("ShapesOp")
5087         def GetSharedShapes(self, theShape1, theShape2, theShapeType, theName=None):
5088             """
5089             Get all sub-shapes of theShape1 of the given type, shared with theShape2.
5090
5091             Parameters:
5092                 theShape1 Shape to find sub-shapes in.
5093                 theShape2 Shape to find shared sub-shapes with.
5094                 theShapeType Type of sub-shapes to be retrieved.
5095                 theName Object name; when specified, this parameter is used
5096                         for result publication in the study. Otherwise, if automatic
5097                         publication is switched on, default value is used for result name.
5098
5099             Returns:
5100                 List of sub-shapes of theShape1, shared with theShape2.
5101             """
5102             # Example: see GEOM_TestOthers.py
5103             aList = self.ShapesOp.GetSharedShapes(theShape1, theShape2, theShapeType)
5104             RaiseIfFailed("GetSharedShapes", self.ShapesOp)
5105             self._autoPublish(aList, theName, "shared")
5106             return aList
5107
5108         ## Get sub-shapes, shared by input shapes.
5109         #  @param theShapes Either a list or compound of shapes to find common sub-shapes of.
5110         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType()).
5111         #  @param theMultiShare Specifies what type of shares should be checked:
5112         #         - @c True (default): search sub-shapes from 1st input shape shared with all other input shapes;
5113         #         - @c False: causes to search sub-shapes shared between couples of input shapes.
5114         #  @param theName Object name; when specified, this parameter is used
5115         #         for result publication in the study. Otherwise, if automatic
5116         #         publication is switched on, default value is used for result name.
5117         #
5118         #  @note If @a theShapes contains single compound, the shares between all possible couples of 
5119         #        its top-level shapes are returned; otherwise, only shares between 1st input shape
5120         #        and all rest input shapes are returned.
5121         #
5122         #  @return List of all found sub-shapes.
5123         #
5124         #  Examples:
5125         #  - @ref tui_shared_shapes "Example 1"
5126         #  - @ref swig_GetSharedShapes "Example 2"
5127         @ManageTransactions("ShapesOp")
5128         def GetSharedShapesMulti(self, theShapes, theShapeType, theMultiShare=True, theName=None):
5129             """
5130             Get sub-shapes, shared by input shapes.
5131
5132             Parameters:
5133                 theShapes Either a list or compound of shapes to find common sub-shapes of.
5134                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType).
5135                 theMultiShare Specifies what type of shares should be checked:
5136                   - True (default): search sub-shapes from 1st input shape shared with all other input shapes;
5137                   - False: causes to search sub-shapes shared between couples of input shapes.
5138                 theName Object name; when specified, this parameter is used
5139                         for result publication in the study. Otherwise, if automatic
5140                         publication is switched on, default value is used for result name.
5141
5142             Note: if theShapes contains single compound, the shares between all possible couples of 
5143                   its top-level shapes are returned; otherwise, only shares between 1st input shape
5144                   and all rest input shapes are returned.
5145
5146             Returns:
5147                 List of all found sub-shapes.
5148             """
5149             # Example: see GEOM_TestOthers.py
5150             aList = self.ShapesOp.GetSharedShapesMulti(ToList(theShapes), theShapeType, theMultiShare)
5151             RaiseIfFailed("GetSharedShapesMulti", self.ShapesOp)
5152             self._autoPublish(aList, theName, "shared")
5153             return aList
5154
5155         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5156         #  situated relatively the specified plane by the certain way,
5157         #  defined through <VAR>theState</VAR> parameter.
5158         #  @param theShape Shape to find sub-shapes of.
5159         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5160         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5161         #                direction and location of the plane to find shapes on.
5162         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5163         #  @param theName Object name; when specified, this parameter is used
5164         #         for result publication in the study. Otherwise, if automatic
5165         #         publication is switched on, default value is used for result name.
5166         #
5167         #  @return List of all found sub-shapes.
5168         #
5169         #  @ref swig_GetShapesOnPlane "Example"
5170         @ManageTransactions("ShapesOp")
5171         def GetShapesOnPlane(self, theShape, theShapeType, theAx1, theState, theName=None):
5172             """
5173             Find in theShape all sub-shapes of type theShapeType,
5174             situated relatively the specified plane by the certain way,
5175             defined through theState parameter.
5176
5177             Parameters:
5178                 theShape Shape to find sub-shapes of.
5179                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5180                 theAx1 Vector (or line, or linear edge), specifying normal
5181                        direction and location of the plane to find shapes on.
5182                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5183                 theName Object name; when specified, this parameter is used
5184                         for result publication in the study. Otherwise, if automatic
5185                         publication is switched on, default value is used for result name.
5186
5187             Returns:
5188                 List of all found sub-shapes.
5189             """
5190             # Example: see GEOM_TestOthers.py
5191             aList = self.ShapesOp.GetShapesOnPlane(theShape, theShapeType, theAx1, theState)
5192             RaiseIfFailed("GetShapesOnPlane", self.ShapesOp)
5193             self._autoPublish(aList, theName, "shapeOnPlane")
5194             return aList
5195
5196         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5197         #  situated relatively the specified plane by the certain way,
5198         #  defined through <VAR>theState</VAR> parameter.
5199         #  @param theShape Shape to find sub-shapes of.
5200         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5201         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5202         #                direction and location of the plane to find shapes on.
5203         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5204         #
5205         #  @return List of all found sub-shapes indices.
5206         #
5207         #  @ref swig_GetShapesOnPlaneIDs "Example"
5208         @ManageTransactions("ShapesOp")
5209         def GetShapesOnPlaneIDs(self, theShape, theShapeType, theAx1, theState):
5210             """
5211             Find in theShape all sub-shapes of type theShapeType,
5212             situated relatively the specified plane by the certain way,
5213             defined through theState parameter.
5214
5215             Parameters:
5216                 theShape Shape to find sub-shapes of.
5217                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5218                 theAx1 Vector (or line, or linear edge), specifying normal
5219                        direction and location of the plane to find shapes on.
5220                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5221
5222             Returns:
5223                 List of all found sub-shapes indices.
5224             """
5225             # Example: see GEOM_TestOthers.py
5226             aList = self.ShapesOp.GetShapesOnPlaneIDs(theShape, theShapeType, theAx1, theState)
5227             RaiseIfFailed("GetShapesOnPlaneIDs", self.ShapesOp)
5228             return aList
5229
5230         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5231         #  situated relatively the specified plane by the certain way,
5232         #  defined through <VAR>theState</VAR> parameter.
5233         #  @param theShape Shape to find sub-shapes of.
5234         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5235         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5236         #                direction of the plane to find shapes on.
5237         #  @param thePnt Point specifying location of the plane to find shapes on.
5238         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5239         #  @param theName Object name; when specified, this parameter is used
5240         #         for result publication in the study. Otherwise, if automatic
5241         #         publication is switched on, default value is used for result name.
5242         #
5243         #  @return List of all found sub-shapes.
5244         #
5245         #  @ref swig_GetShapesOnPlaneWithLocation "Example"
5246         @ManageTransactions("ShapesOp")
5247         def GetShapesOnPlaneWithLocation(self, theShape, theShapeType, theAx1, thePnt, theState, theName=None):
5248             """
5249             Find in theShape all sub-shapes of type theShapeType,
5250             situated relatively the specified plane by the certain way,
5251             defined through theState parameter.
5252
5253             Parameters:
5254                 theShape Shape to find sub-shapes of.
5255                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5256                 theAx1 Vector (or line, or linear edge), specifying normal
5257                        direction and location of the plane to find shapes on.
5258                 thePnt Point specifying location of the plane to find shapes on.
5259                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5260                 theName Object name; when specified, this parameter is used
5261                         for result publication in the study. Otherwise, if automatic
5262                         publication is switched on, default value is used for result name.
5263
5264             Returns:
5265                 List of all found sub-shapes.
5266             """
5267             # Example: see GEOM_TestOthers.py
5268             aList = self.ShapesOp.GetShapesOnPlaneWithLocation(theShape, theShapeType,
5269                                                                theAx1, thePnt, theState)
5270             RaiseIfFailed("GetShapesOnPlaneWithLocation", self.ShapesOp)
5271             self._autoPublish(aList, theName, "shapeOnPlane")
5272             return aList
5273
5274         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5275         #  situated relatively the specified plane by the certain way,
5276         #  defined through <VAR>theState</VAR> parameter.
5277         #  @param theShape Shape to find sub-shapes of.
5278         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5279         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5280         #                direction of the plane to find shapes on.
5281         #  @param thePnt Point specifying location of the plane to find shapes on.
5282         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5283         #
5284         #  @return List of all found sub-shapes indices.
5285         #
5286         #  @ref swig_GetShapesOnPlaneWithLocationIDs "Example"
5287         @ManageTransactions("ShapesOp")
5288         def GetShapesOnPlaneWithLocationIDs(self, theShape, theShapeType, theAx1, thePnt, theState):
5289             """
5290             Find in theShape all sub-shapes of type theShapeType,
5291             situated relatively the specified plane by the certain way,
5292             defined through theState parameter.
5293
5294             Parameters:
5295                 theShape Shape to find sub-shapes of.
5296                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5297                 theAx1 Vector (or line, or linear edge), specifying normal
5298                        direction and location of the plane to find shapes on.
5299                 thePnt Point specifying location of the plane to find shapes on.
5300                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5301
5302             Returns:
5303                 List of all found sub-shapes indices.
5304             """
5305             # Example: see GEOM_TestOthers.py
5306             aList = self.ShapesOp.GetShapesOnPlaneWithLocationIDs(theShape, theShapeType,
5307                                                                   theAx1, thePnt, theState)
5308             RaiseIfFailed("GetShapesOnPlaneWithLocationIDs", self.ShapesOp)
5309             return aList
5310
5311         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5312         #  the specified cylinder by the certain way, defined through \a theState parameter.
5313         #  @param theShape Shape to find sub-shapes of.
5314         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5315         #  @param theAxis Vector (or line, or linear edge), specifying
5316         #                 axis of the cylinder to find shapes on.
5317         #  @param theRadius Radius of the cylinder to find shapes on.
5318         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5319         #  @param theName Object name; when specified, this parameter is used
5320         #         for result publication in the study. Otherwise, if automatic
5321         #         publication is switched on, default value is used for result name.
5322         #
5323         #  @return List of all found sub-shapes.
5324         #
5325         #  @ref swig_GetShapesOnCylinder "Example"
5326         @ManageTransactions("ShapesOp")
5327         def GetShapesOnCylinder(self, theShape, theShapeType, theAxis, theRadius, theState, theName=None):
5328             """
5329             Find in theShape all sub-shapes of type theShapeType, situated relatively
5330             the specified cylinder by the certain way, defined through theState parameter.
5331
5332             Parameters:
5333                 theShape Shape to find sub-shapes of.
5334                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5335                 theAxis Vector (or line, or linear edge), specifying
5336                         axis of the cylinder to find shapes on.
5337                 theRadius Radius of the cylinder to find shapes on.
5338                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5339                 theName Object name; when specified, this parameter is used
5340                         for result publication in the study. Otherwise, if automatic
5341                         publication is switched on, default value is used for result name.
5342
5343             Returns:
5344                 List of all found sub-shapes.
5345             """
5346             # Example: see GEOM_TestOthers.py
5347             aList = self.ShapesOp.GetShapesOnCylinder(theShape, theShapeType, theAxis, theRadius, theState)
5348             RaiseIfFailed("GetShapesOnCylinder", self.ShapesOp)
5349             self._autoPublish(aList, theName, "shapeOnCylinder")
5350             return aList
5351
5352         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5353         #  the specified cylinder by the certain way, defined through \a theState parameter.
5354         #  @param theShape Shape to find sub-shapes of.
5355         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5356         #  @param theAxis Vector (or line, or linear edge), specifying
5357         #                 axis of the cylinder to find shapes on.
5358         #  @param theRadius Radius of the cylinder to find shapes on.
5359         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5360         #
5361         #  @return List of all found sub-shapes indices.
5362         #
5363         #  @ref swig_GetShapesOnCylinderIDs "Example"
5364         @ManageTransactions("ShapesOp")
5365         def GetShapesOnCylinderIDs(self, theShape, theShapeType, theAxis, theRadius, theState):
5366             """
5367             Find in theShape all sub-shapes of type theShapeType, situated relatively
5368             the specified cylinder by the certain way, defined through theState parameter.
5369
5370             Parameters:
5371                 theShape Shape to find sub-shapes of.
5372                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5373                 theAxis Vector (or line, or linear edge), specifying
5374                         axis of the cylinder to find shapes on.
5375                 theRadius Radius of the cylinder to find shapes on.
5376                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5377
5378             Returns:
5379                 List of all found sub-shapes indices.
5380             """
5381             # Example: see GEOM_TestOthers.py
5382             aList = self.ShapesOp.GetShapesOnCylinderIDs(theShape, theShapeType, theAxis, theRadius, theState)
5383             RaiseIfFailed("GetShapesOnCylinderIDs", self.ShapesOp)
5384             return aList
5385
5386         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5387         #  the specified cylinder by the certain way, defined through \a theState parameter.
5388         #  @param theShape Shape to find sub-shapes of.
5389         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5390         #  @param theAxis Vector (or line, or linear edge), specifying
5391         #                 axis of the cylinder to find shapes on.
5392         #  @param thePnt Point specifying location of the bottom of the cylinder.
5393         #  @param theRadius Radius of the cylinder to find shapes on.
5394         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5395         #  @param theName Object name; when specified, this parameter is used
5396         #         for result publication in the study. Otherwise, if automatic
5397         #         publication is switched on, default value is used for result name.
5398         #
5399         #  @return List of all found sub-shapes.
5400         #
5401         #  @ref swig_GetShapesOnCylinderWithLocation "Example"
5402         @ManageTransactions("ShapesOp")
5403         def GetShapesOnCylinderWithLocation(self, theShape, theShapeType, theAxis, thePnt, theRadius, theState, theName=None):
5404             """
5405             Find in theShape all sub-shapes of type theShapeType, situated relatively
5406             the specified cylinder by the certain way, defined through theState parameter.
5407
5408             Parameters:
5409                 theShape Shape to find sub-shapes of.
5410                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5411                 theAxis Vector (or line, or linear edge), specifying
5412                         axis of the cylinder to find shapes on.
5413                 theRadius Radius of the cylinder to find shapes on.
5414                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5415                 theName Object name; when specified, this parameter is used
5416                         for result publication in the study. Otherwise, if automatic
5417                         publication is switched on, default value is used for result name.
5418
5419             Returns:
5420                 List of all found sub-shapes.
5421             """
5422             # Example: see GEOM_TestOthers.py
5423             aList = self.ShapesOp.GetShapesOnCylinderWithLocation(theShape, theShapeType, theAxis, thePnt, theRadius, theState)
5424             RaiseIfFailed("GetShapesOnCylinderWithLocation", self.ShapesOp)
5425             self._autoPublish(aList, theName, "shapeOnCylinder")
5426             return aList
5427
5428         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5429         #  the specified cylinder by the certain way, defined through \a theState parameter.
5430         #  @param theShape Shape to find sub-shapes of.
5431         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5432         #  @param theAxis Vector (or line, or linear edge), specifying
5433         #                 axis of the cylinder to find shapes on.
5434         #  @param thePnt Point specifying location of the bottom of the cylinder.
5435         #  @param theRadius Radius of the cylinder to find shapes on.
5436         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5437         #
5438         #  @return List of all found sub-shapes indices
5439         #
5440         #  @ref swig_GetShapesOnCylinderWithLocationIDs "Example"
5441         @ManageTransactions("ShapesOp")
5442         def GetShapesOnCylinderWithLocationIDs(self, theShape, theShapeType, theAxis, thePnt, theRadius, theState):
5443             """
5444             Find in theShape all sub-shapes of type theShapeType, situated relatively
5445             the specified cylinder by the certain way, defined through theState parameter.
5446
5447             Parameters:
5448                 theShape Shape to find sub-shapes of.
5449                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5450                 theAxis Vector (or line, or linear edge), specifying
5451                         axis of the cylinder to find shapes on.
5452                 theRadius Radius of the cylinder to find shapes on.
5453                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5454
5455             Returns:
5456                 List of all found sub-shapes indices.
5457             """
5458             # Example: see GEOM_TestOthers.py
5459             aList = self.ShapesOp.GetShapesOnCylinderWithLocationIDs(theShape, theShapeType, theAxis, thePnt, theRadius, theState)
5460             RaiseIfFailed("GetShapesOnCylinderWithLocationIDs", self.ShapesOp)
5461             return aList
5462
5463         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5464         #  the specified sphere by the certain way, defined through \a theState parameter.
5465         #  @param theShape Shape to find sub-shapes of.
5466         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5467         #  @param theCenter Point, specifying center of the sphere to find shapes on.
5468         #  @param theRadius Radius of the sphere to find shapes on.
5469         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5470         #  @param theName Object name; when specified, this parameter is used
5471         #         for result publication in the study. Otherwise, if automatic
5472         #         publication is switched on, default value is used for result name.
5473         #
5474         #  @return List of all found sub-shapes.
5475         #
5476         #  @ref swig_GetShapesOnSphere "Example"
5477         @ManageTransactions("ShapesOp")
5478         def GetShapesOnSphere(self, theShape, theShapeType, theCenter, theRadius, theState, theName=None):
5479             """
5480             Find in theShape all sub-shapes of type theShapeType, situated relatively
5481             the specified sphere by the certain way, defined through theState parameter.
5482
5483             Parameters:
5484                 theShape Shape to find sub-shapes of.
5485                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5486                 theCenter Point, specifying center of the sphere to find shapes on.
5487                 theRadius Radius of the sphere to find shapes on.
5488                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5489                 theName Object name; when specified, this parameter is used
5490                         for result publication in the study. Otherwise, if automatic
5491                         publication is switched on, default value is used for result name.
5492
5493             Returns:
5494                 List of all found sub-shapes.
5495             """
5496             # Example: see GEOM_TestOthers.py
5497             aList = self.ShapesOp.GetShapesOnSphere(theShape, theShapeType, theCenter, theRadius, theState)
5498             RaiseIfFailed("GetShapesOnSphere", self.ShapesOp)
5499             self._autoPublish(aList, theName, "shapeOnSphere")
5500             return aList
5501
5502         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5503         #  the specified sphere by the certain way, defined through \a theState parameter.
5504         #  @param theShape Shape to find sub-shapes of.
5505         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5506         #  @param theCenter Point, specifying center of the sphere to find shapes on.
5507         #  @param theRadius Radius of the sphere to find shapes on.
5508         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5509         #
5510         #  @return List of all found sub-shapes indices.
5511         #
5512         #  @ref swig_GetShapesOnSphereIDs "Example"
5513         @ManageTransactions("ShapesOp")
5514         def GetShapesOnSphereIDs(self, theShape, theShapeType, theCenter, theRadius, theState):
5515             """
5516             Find in theShape all sub-shapes of type theShapeType, situated relatively
5517             the specified sphere by the certain way, defined through theState parameter.
5518
5519             Parameters:
5520                 theShape Shape to find sub-shapes of.
5521                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5522                 theCenter Point, specifying center of the sphere to find shapes on.
5523                 theRadius Radius of the sphere to find shapes on.
5524                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5525
5526             Returns:
5527                 List of all found sub-shapes indices.
5528             """
5529             # Example: see GEOM_TestOthers.py
5530             aList = self.ShapesOp.GetShapesOnSphereIDs(theShape, theShapeType, theCenter, theRadius, theState)
5531             RaiseIfFailed("GetShapesOnSphereIDs", self.ShapesOp)
5532             return aList
5533
5534         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5535         #  the specified quadrangle by the certain way, defined through \a theState parameter.
5536         #  @param theShape Shape to find sub-shapes of.
5537         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5538         #  @param theTopLeftPoint Point, specifying top left corner of a quadrangle
5539         #  @param theTopRigthPoint Point, specifying top right corner of a quadrangle
5540         #  @param theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5541         #  @param theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5542         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5543         #  @param theName Object name; when specified, this parameter is used
5544         #         for result publication in the study. Otherwise, if automatic
5545         #         publication is switched on, default value is used for result name.
5546         #
5547         #  @return List of all found sub-shapes.
5548         #
5549         #  @ref swig_GetShapesOnQuadrangle "Example"
5550         @ManageTransactions("ShapesOp")
5551         def GetShapesOnQuadrangle(self, theShape, theShapeType,
5552                                   theTopLeftPoint, theTopRigthPoint,
5553                                   theBottomLeftPoint, theBottomRigthPoint, theState, theName=None):
5554             """
5555             Find in theShape all sub-shapes of type theShapeType, situated relatively
5556             the specified quadrangle by the certain way, defined through theState parameter.
5557
5558             Parameters:
5559                 theShape Shape to find sub-shapes of.
5560                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5561                 theTopLeftPoint Point, specifying top left corner of a quadrangle
5562                 theTopRigthPoint Point, specifying top right corner of a quadrangle
5563                 theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5564                 theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5565                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5566                 theName Object name; when specified, this parameter is used
5567                         for result publication in the study. Otherwise, if automatic
5568                         publication is switched on, default value is used for result name.
5569
5570             Returns:
5571                 List of all found sub-shapes.
5572             """
5573             # Example: see GEOM_TestOthers.py
5574             aList = self.ShapesOp.GetShapesOnQuadrangle(theShape, theShapeType,
5575                                                         theTopLeftPoint, theTopRigthPoint,
5576                                                         theBottomLeftPoint, theBottomRigthPoint, theState)
5577             RaiseIfFailed("GetShapesOnQuadrangle", self.ShapesOp)
5578             self._autoPublish(aList, theName, "shapeOnQuadrangle")
5579             return aList
5580
5581         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5582         #  the specified quadrangle by the certain way, defined through \a theState parameter.
5583         #  @param theShape Shape to find sub-shapes of.
5584         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5585         #  @param theTopLeftPoint Point, specifying top left corner of a quadrangle
5586         #  @param theTopRigthPoint Point, specifying top right corner of a quadrangle
5587         #  @param theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5588         #  @param theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5589         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5590         #
5591         #  @return List of all found sub-shapes indices.
5592         #
5593         #  @ref swig_GetShapesOnQuadrangleIDs "Example"
5594         @ManageTransactions("ShapesOp")
5595         def GetShapesOnQuadrangleIDs(self, theShape, theShapeType,
5596                                      theTopLeftPoint, theTopRigthPoint,
5597                                      theBottomLeftPoint, theBottomRigthPoint, theState):
5598             """
5599             Find in theShape all sub-shapes of type theShapeType, situated relatively
5600             the specified quadrangle by the certain way, defined through theState parameter.
5601
5602             Parameters:
5603                 theShape Shape to find sub-shapes of.
5604                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5605                 theTopLeftPoint Point, specifying top left corner of a quadrangle
5606                 theTopRigthPoint Point, specifying top right corner of a quadrangle
5607                 theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5608                 theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5609                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5610
5611             Returns:
5612                 List of all found sub-shapes indices.
5613             """
5614
5615             # Example: see GEOM_TestOthers.py
5616             aList = self.ShapesOp.GetShapesOnQuadrangleIDs(theShape, theShapeType,
5617                                                            theTopLeftPoint, theTopRigthPoint,
5618                                                            theBottomLeftPoint, theBottomRigthPoint, theState)
5619             RaiseIfFailed("GetShapesOnQuadrangleIDs", self.ShapesOp)
5620             return aList
5621
5622         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5623         #  the specified \a theBox by the certain way, defined through \a theState parameter.
5624         #  @param theBox Shape for relative comparing.
5625         #  @param theShape Shape to find sub-shapes of.
5626         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5627         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5628         #  @param theName Object name; when specified, this parameter is used
5629         #         for result publication in the study. Otherwise, if automatic
5630         #         publication is switched on, default value is used for result name.
5631         #
5632         #  @return List of all found sub-shapes.
5633         #
5634         #  @ref swig_GetShapesOnBox "Example"
5635         @ManageTransactions("ShapesOp")
5636         def GetShapesOnBox(self, theBox, theShape, theShapeType, theState, theName=None):
5637             """
5638             Find in theShape all sub-shapes of type theShapeType, situated relatively
5639             the specified theBox by the certain way, defined through theState parameter.
5640
5641             Parameters:
5642                 theBox Shape for relative comparing.
5643                 theShape Shape to find sub-shapes of.
5644                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5645                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5646                 theName Object name; when specified, this parameter is used
5647                         for result publication in the study. Otherwise, if automatic
5648                         publication is switched on, default value is used for result name.
5649
5650             Returns:
5651                 List of all found sub-shapes.
5652             """
5653             # Example: see GEOM_TestOthers.py
5654             aList = self.ShapesOp.GetShapesOnBox(theBox, theShape, theShapeType, theState)
5655             RaiseIfFailed("GetShapesOnBox", self.ShapesOp)
5656             self._autoPublish(aList, theName, "shapeOnBox")
5657             return aList
5658
5659         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5660         #  the specified \a theBox by the certain way, defined through \a theState parameter.
5661         #  @param theBox Shape for relative comparing.
5662         #  @param theShape Shape to find sub-shapes of.
5663         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5664         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5665         #
5666         #  @return List of all found sub-shapes indices.
5667         #
5668         #  @ref swig_GetShapesOnBoxIDs "Example"
5669         @ManageTransactions("ShapesOp")
5670         def GetShapesOnBoxIDs(self, theBox, theShape, theShapeType, theState):
5671             """
5672             Find in theShape all sub-shapes of type theShapeType, situated relatively
5673             the specified theBox by the certain way, defined through theState parameter.
5674
5675             Parameters:
5676                 theBox Shape for relative comparing.
5677                 theShape Shape to find sub-shapes of.
5678                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5679                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5680
5681             Returns:
5682                 List of all found sub-shapes indices.
5683             """
5684             # Example: see GEOM_TestOthers.py
5685             aList = self.ShapesOp.GetShapesOnBoxIDs(theBox, theShape, theShapeType, theState)
5686             RaiseIfFailed("GetShapesOnBoxIDs", self.ShapesOp)
5687             return aList
5688
5689         ## Find in \a theShape all sub-shapes of type \a theShapeType,
5690         #  situated relatively the specified \a theCheckShape by the
5691         #  certain way, defined through \a theState parameter.
5692         #  @param theCheckShape Shape for relative comparing. It must be a solid.
5693         #  @param theShape Shape to find sub-shapes of.
5694         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5695         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5696         #  @param theName Object name; when specified, this parameter is used
5697         #         for result publication in the study. Otherwise, if automatic
5698         #         publication is switched on, default value is used for result name.
5699         #
5700         #  @return List of all found sub-shapes.
5701         #
5702         #  @ref swig_GetShapesOnShape "Example"
5703         @ManageTransactions("ShapesOp")
5704         def GetShapesOnShape(self, theCheckShape, theShape, theShapeType, theState, theName=None):
5705             """
5706             Find in theShape all sub-shapes of type theShapeType,
5707             situated relatively the specified theCheckShape by the
5708             certain way, defined through theState parameter.
5709
5710             Parameters:
5711                 theCheckShape Shape for relative comparing. It must be a solid.
5712                 theShape Shape to find sub-shapes of.
5713                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5714                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5715                 theName Object name; when specified, this parameter is used
5716                         for result publication in the study. Otherwise, if automatic
5717                         publication is switched on, default value is used for result name.
5718
5719             Returns:
5720                 List of all found sub-shapes.
5721             """
5722             # Example: see GEOM_TestOthers.py
5723             aList = self.ShapesOp.GetShapesOnShape(theCheckShape, theShape,
5724                                                    theShapeType, theState)
5725             RaiseIfFailed("GetShapesOnShape", self.ShapesOp)
5726             self._autoPublish(aList, theName, "shapeOnShape")
5727             return aList
5728
5729         ## Find in \a theShape all sub-shapes of type \a theShapeType,
5730         #  situated relatively the specified \a theCheckShape by the
5731         #  certain way, defined through \a theState parameter.
5732         #  @param theCheckShape Shape for relative comparing. It must be a solid.
5733         #  @param theShape Shape to find sub-shapes of.
5734         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5735         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5736         #  @param theName Object name; when specified, this parameter is used
5737         #         for result publication in the study. Otherwise, if automatic
5738         #         publication is switched on, default value is used for result name.
5739         #
5740         #  @return All found sub-shapes as compound.
5741         #
5742         #  @ref swig_GetShapesOnShapeAsCompound "Example"
5743         @ManageTransactions("ShapesOp")
5744         def GetShapesOnShapeAsCompound(self, theCheckShape, theShape, theShapeType, theState, theName=None):
5745             """
5746             Find in theShape all sub-shapes of type theShapeType,
5747             situated relatively the specified theCheckShape by the
5748             certain way, defined through theState parameter.
5749
5750             Parameters:
5751                 theCheckShape Shape for relative comparing. It must be a solid.
5752                 theShape Shape to find sub-shapes of.
5753                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5754                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5755                 theName Object name; when specified, this parameter is used
5756                         for result publication in the study. Otherwise, if automatic
5757                         publication is switched on, default value is used for result name.
5758
5759             Returns:
5760                 All found sub-shapes as compound.
5761             """
5762             # Example: see GEOM_TestOthers.py
5763             anObj = self.ShapesOp.GetShapesOnShapeAsCompound(theCheckShape, theShape,
5764                                                              theShapeType, theState)
5765             RaiseIfFailed("GetShapesOnShapeAsCompound", self.ShapesOp)
5766             self._autoPublish(anObj, theName, "shapeOnShape")
5767             return anObj
5768
5769         ## Find in \a theShape all sub-shapes of type \a theShapeType,
5770         #  situated relatively the specified \a theCheckShape by the
5771         #  certain way, defined through \a theState parameter.
5772         #  @param theCheckShape Shape for relative comparing. It must be a solid.
5773         #  @param theShape Shape to find sub-shapes of.
5774         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5775         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5776         #
5777         #  @return List of all found sub-shapes indices.
5778         #
5779         #  @ref swig_GetShapesOnShapeIDs "Example"
5780         @ManageTransactions("ShapesOp")
5781         def GetShapesOnShapeIDs(self, theCheckShape, theShape, theShapeType, theState):
5782             """
5783             Find in theShape all sub-shapes of type theShapeType,
5784             situated relatively the specified theCheckShape by the
5785             certain way, defined through theState parameter.
5786
5787             Parameters:
5788                 theCheckShape Shape for relative comparing. It must be a solid.
5789                 theShape Shape to find sub-shapes of.
5790                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5791                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5792
5793             Returns:
5794                 List of all found sub-shapes indices.
5795             """
5796             # Example: see GEOM_TestOthers.py
5797             aList = self.ShapesOp.GetShapesOnShapeIDs(theCheckShape, theShape,
5798                                                       theShapeType, theState)
5799             RaiseIfFailed("GetShapesOnShapeIDs", self.ShapesOp)
5800             return aList
5801
5802         ## Get sub-shape(s) of theShapeWhere, which are
5803         #  coincident with \a theShapeWhat or could be a part of it.
5804         #  @param theShapeWhere Shape to find sub-shapes of.
5805         #  @param theShapeWhat Shape, specifying what to find.
5806         #  @param isNewImplementation implementation of GetInPlace functionality
5807         #             (default = False, old alghorithm based on shape properties)
5808         #  @param theName Object name; when specified, this parameter is used
5809         #         for result publication in the study. Otherwise, if automatic
5810         #         publication is switched on, default value is used for result name.
5811         #
5812         #  @return Group of all found sub-shapes or a single found sub-shape.
5813         #
5814         #  @note This function has a restriction on argument shapes.
5815         #        If \a theShapeWhere has curved parts with significantly
5816         #        outstanding centres (i.e. the mass centre of a part is closer to
5817         #        \a theShapeWhat than to the part), such parts will not be found.
5818         #        @image html get_in_place_lost_part.png
5819         #
5820         #  @ref swig_GetInPlace "Example"
5821         @ManageTransactions("ShapesOp")
5822         def GetInPlace(self, theShapeWhere, theShapeWhat, isNewImplementation = False, theName=None):
5823             """
5824             Get sub-shape(s) of theShapeWhere, which are
5825             coincident with  theShapeWhat or could be a part of it.
5826
5827             Parameters:
5828                 theShapeWhere Shape to find sub-shapes of.
5829                 theShapeWhat Shape, specifying what to find.
5830                 isNewImplementation Implementation of GetInPlace functionality
5831                                     (default = False, old alghorithm based on shape properties)
5832                 theName Object name; when specified, this parameter is used
5833                         for result publication in the study. Otherwise, if automatic
5834                         publication is switched on, default value is used for result name.
5835
5836             Returns:
5837                 Group of all found sub-shapes or a single found sub-shape.
5838
5839
5840             Note:
5841                 This function has a restriction on argument shapes.
5842                 If theShapeWhere has curved parts with significantly
5843                 outstanding centres (i.e. the mass centre of a part is closer to
5844                 theShapeWhat than to the part), such parts will not be found.
5845             """
5846             # Example: see GEOM_TestOthers.py
5847             anObj = None
5848             if isNewImplementation:
5849                 anObj = self.ShapesOp.GetInPlace(theShapeWhere, theShapeWhat)
5850             else:
5851                 anObj = self.ShapesOp.GetInPlaceOld(theShapeWhere, theShapeWhat)
5852                 pass
5853             RaiseIfFailed("GetInPlace", self.ShapesOp)
5854             self._autoPublish(anObj, theName, "inplace")
5855             return anObj
5856
5857         ## Get sub-shape(s) of \a theShapeWhere, which are
5858         #  coincident with \a theShapeWhat or could be a part of it.
5859         #
5860         #  Implementation of this method is based on a saved history of an operation,
5861         #  produced \a theShapeWhere. The \a theShapeWhat must be among this operation's
5862         #  arguments (an argument shape or a sub-shape of an argument shape).
5863         #  The operation could be the Partition or one of boolean operations,
5864         #  performed on simple shapes (not on compounds).
5865         #
5866         #  @param theShapeWhere Shape to find sub-shapes of.
5867         #  @param theShapeWhat Shape, specifying what to find (must be in the
5868         #                      building history of the ShapeWhere).
5869         #  @param theName Object name; when specified, this parameter is used
5870         #         for result publication in the study. Otherwise, if automatic
5871         #         publication is switched on, default value is used for result name.
5872         #
5873         #  @return Group of all found sub-shapes or a single found sub-shape.
5874         #
5875         #  @ref swig_GetInPlace "Example"
5876         @ManageTransactions("ShapesOp")
5877         def GetInPlaceByHistory(self, theShapeWhere, theShapeWhat, theName=None):
5878             """
5879             Implementation of this method is based on a saved history of an operation,
5880             produced theShapeWhere. The theShapeWhat must be among this operation's
5881             arguments (an argument shape or a sub-shape of an argument shape).
5882             The operation could be the Partition or one of boolean operations,
5883             performed on simple shapes (not on compounds).
5884
5885             Parameters:
5886                 theShapeWhere Shape to find sub-shapes of.
5887                 theShapeWhat Shape, specifying what to find (must be in the
5888                                 building history of the ShapeWhere).
5889                 theName Object name; when specified, this parameter is used
5890                         for result publication in the study. Otherwise, if automatic
5891                         publication is switched on, default value is used for result name.
5892
5893             Returns:
5894                 Group of all found sub-shapes or a single found sub-shape.
5895             """
5896             # Example: see GEOM_TestOthers.py
5897             anObj = self.ShapesOp.GetInPlaceByHistory(theShapeWhere, theShapeWhat)
5898             RaiseIfFailed("GetInPlaceByHistory", self.ShapesOp)
5899             self._autoPublish(anObj, theName, "inplace")
5900             return anObj
5901
5902         ## Get sub-shape of theShapeWhere, which is
5903         #  equal to \a theShapeWhat.
5904         #  @param theShapeWhere Shape to find sub-shape of.
5905         #  @param theShapeWhat Shape, specifying what to find.
5906         #  @param theName Object name; when specified, this parameter is used
5907         #         for result publication in the study. Otherwise, if automatic
5908         #         publication is switched on, default value is used for result name.
5909         #
5910         #  @return New GEOM.GEOM_Object for found sub-shape.
5911         #
5912         #  @ref swig_GetSame "Example"
5913         @ManageTransactions("ShapesOp")
5914         def GetSame(self, theShapeWhere, theShapeWhat, theName=None):
5915             """
5916             Get sub-shape of theShapeWhere, which is
5917             equal to theShapeWhat.
5918
5919             Parameters:
5920                 theShapeWhere Shape to find sub-shape of.
5921                 theShapeWhat Shape, specifying what to find.
5922                 theName Object name; when specified, this parameter is used
5923                         for result publication in the study. Otherwise, if automatic
5924                         publication is switched on, default value is used for result name.
5925
5926             Returns:
5927                 New GEOM.GEOM_Object for found sub-shape.
5928             """
5929             anObj = self.ShapesOp.GetSame(theShapeWhere, theShapeWhat)
5930             RaiseIfFailed("GetSame", self.ShapesOp)
5931             self._autoPublish(anObj, theName, "sameShape")
5932             return anObj
5933
5934
5935         ## Get sub-shape indices of theShapeWhere, which is
5936         #  equal to \a theShapeWhat.
5937         #  @param theShapeWhere Shape to find sub-shape of.
5938         #  @param theShapeWhat Shape, specifying what to find.
5939         #  @return List of all found sub-shapes indices.
5940         #
5941         #  @ref swig_GetSame "Example"
5942         @ManageTransactions("ShapesOp")
5943         def GetSameIDs(self, theShapeWhere, theShapeWhat):
5944             """
5945             Get sub-shape indices of theShapeWhere, which is
5946             equal to theShapeWhat.
5947
5948             Parameters:
5949                 theShapeWhere Shape to find sub-shape of.
5950                 theShapeWhat Shape, specifying what to find.
5951
5952             Returns:
5953                 List of all found sub-shapes indices.
5954             """
5955             anObj = self.ShapesOp.GetSameIDs(theShapeWhere, theShapeWhat)
5956             RaiseIfFailed("GetSameIDs", self.ShapesOp)
5957             return anObj
5958
5959         ## Resize the input edge with the new Min and Max parameters.
5960         #  The input edge parameters range is [0, 1]. If theMin parameter is
5961         #  negative, the input edge is extended, otherwise it is shrinked by
5962         #  theMin parameter. If theMax is greater than 1, the edge is extended,
5963         #  otherwise it is shrinked by theMax parameter.
5964         #  @param theEdge the input edge to be resized.
5965         #  @param theMin the minimal parameter value.
5966         #  @param theMax the maximal parameter value.
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         #  @return New GEOM.GEOM_Object, containing the created edge.
5971         #
5972         #  @ref tui_extend "Example"
5973         @ManageTransactions("ShapesOp")
5974         def ExtendEdge(self, theEdge, theMin, theMax, theName=None):
5975             """
5976             Resize the input edge with the new Min and Max parameters.
5977             The input edge parameters range is [0, 1]. If theMin parameter is
5978             negative, the input edge is extended, otherwise it is shrinked by
5979             theMin parameter. If theMax is greater than 1, the edge is extended,
5980             otherwise it is shrinked by theMax parameter.
5981
5982             Parameters:
5983                 theEdge the input edge to be resized.
5984                 theMin the minimal parameter value.
5985                 theMax the maximal parameter value.
5986                 theName Object name; when specified, this parameter is used
5987                         for result publication in the study. Otherwise, if automatic
5988                         publication is switched on, default value is used for result name.
5989
5990             Returns:
5991                 New GEOM.GEOM_Object, containing the created edge.
5992             """
5993             theMin, theMax, Parameters = ParseParameters(theMin, theMax)
5994             anObj = self.ShapesOp.ExtendEdge(theEdge, theMin, theMax)
5995             RaiseIfFailed("ExtendEdge", self.ShapesOp)
5996             anObj.SetParameters(Parameters)
5997             self._autoPublish(anObj, theName, "edge")
5998             return anObj
5999
6000         ## Resize the input face with the new UMin, UMax, VMin and VMax
6001         #  parameters. The input face U and V parameters range is [0, 1]. If
6002         #  theUMin parameter is negative, the input face is extended, otherwise
6003         #  it is shrinked along U direction by theUMin parameter. If theUMax is
6004         #  greater than 1, the face is extended, otherwise it is shrinked along
6005         #  U direction by theUMax parameter. So as for theVMin, theVMax and
6006         #  V direction of the input face.
6007         #  @param theFace the input face to be resized.
6008         #  @param theUMin the minimal U parameter value.
6009         #  @param theUMax the maximal U parameter value.
6010         #  @param theVMin the minimal V parameter value.
6011         #  @param theVMax the maximal V parameter value.
6012         #  @param theName Object name; when specified, this parameter is used
6013         #         for result publication in the study. Otherwise, if automatic
6014         #         publication is switched on, default value is used for result name.
6015         #  @return New GEOM.GEOM_Object, containing the created face.
6016         #
6017         #  @ref tui_extend "Example"
6018         @ManageTransactions("ShapesOp")
6019         def ExtendFace(self, theFace, theUMin, theUMax,
6020                        theVMin, theVMax, theName=None):
6021             """
6022             Resize the input face with the new UMin, UMax, VMin and VMax
6023             parameters. The input face U and V parameters range is [0, 1]. If
6024             theUMin parameter is negative, the input face is extended, otherwise
6025             it is shrinked along U direction by theUMin parameter. If theUMax is
6026             greater than 1, the face is extended, otherwise it is shrinked along
6027             U direction by theUMax parameter. So as for theVMin, theVMax and
6028             V direction of the input face.
6029
6030             Parameters:
6031                 theFace the input face to be resized.
6032                 theUMin the minimal U parameter value.
6033                 theUMax the maximal U parameter value.
6034                 theVMin the minimal V parameter value.
6035                 theVMax the maximal V parameter value.
6036                 theName Object name; when specified, this parameter is used
6037                         for result publication in the study. Otherwise, if automatic
6038                         publication is switched on, default value is used for result name.
6039
6040             Returns:
6041                 New GEOM.GEOM_Object, containing the created face.
6042             """
6043             theUMin, theUMax, theVMin, theVMax, Parameters = ParseParameters(theUMin, theUMax, theVMin, theVMax)
6044             anObj = self.ShapesOp.ExtendFace(theFace, theUMin, theUMax,
6045                                              theVMin, theVMax)
6046             RaiseIfFailed("ExtendFace", self.ShapesOp)
6047             anObj.SetParameters(Parameters)
6048             self._autoPublish(anObj, theName, "face")
6049             return anObj
6050
6051         ## This function takes some face as input parameter and creates new
6052         #  GEOM_Object, i.e. topological shape by extracting underlying surface
6053         #  of the source face and limiting it by the Umin, Umax, Vmin, Vmax
6054         #  parameters of the source face (in the parametrical space).
6055         #  @param theFace the input face.
6056         #  @param theName Object name; when specified, this parameter is used
6057         #         for result publication in the study. Otherwise, if automatic
6058         #         publication is switched on, default value is used for result name.
6059         #  @return New GEOM.GEOM_Object, containing the created face.
6060         #
6061         #  @ref tui_creation_surface "Example"
6062         @ManageTransactions("ShapesOp")
6063         def MakeSurfaceFromFace(self, theFace, theName=None):
6064             """
6065             This function takes some face as input parameter and creates new
6066             GEOM_Object, i.e. topological shape by extracting underlying surface
6067             of the source face and limiting it by the Umin, Umax, Vmin, Vmax
6068             parameters of the source face (in the parametrical space).
6069
6070             Parameters:
6071                 theFace the input face.
6072                 theName Object name; when specified, this parameter is used
6073                         for result publication in the study. Otherwise, if automatic
6074                         publication is switched on, default value is used for result name.
6075
6076             Returns:
6077                 New GEOM.GEOM_Object, containing the created face.
6078             """
6079             anObj = self.ShapesOp.MakeSurfaceFromFace(theFace)
6080             RaiseIfFailed("MakeSurfaceFromFace", self.ShapesOp)
6081             self._autoPublish(anObj, theName, "surface")
6082             return anObj
6083
6084         # end of l4_obtain
6085         ## @}
6086
6087         ## @addtogroup l4_access
6088         ## @{
6089
6090         ## Obtain a composite sub-shape of <VAR>aShape</VAR>, composed from sub-shapes
6091         #  of aShape, selected by their unique IDs inside <VAR>aShape</VAR>
6092         #  @param aShape Shape to get sub-shape of.
6093         #  @param ListOfID List of sub-shapes indices.
6094         #  @param theName Object name; when specified, this parameter is used
6095         #         for result publication in the study. Otherwise, if automatic
6096         #         publication is switched on, default value is used for result name.
6097         #
6098         #  @return Found sub-shape.
6099         #
6100         #  @ref swig_all_decompose "Example"
6101         def GetSubShape(self, aShape, ListOfID, theName=None):
6102             """
6103             Obtain a composite sub-shape of aShape, composed from sub-shapes
6104             of aShape, selected by their unique IDs inside aShape
6105
6106             Parameters:
6107                 aShape Shape to get sub-shape of.
6108                 ListOfID List of sub-shapes indices.
6109                 theName Object name; when specified, this parameter is used
6110                         for result publication in the study. Otherwise, if automatic
6111                         publication is switched on, default value is used for result name.
6112
6113             Returns:
6114                 Found sub-shape.
6115             """
6116             # Example: see GEOM_TestAll.py
6117             anObj = self.AddSubShape(aShape,ListOfID)
6118             self._autoPublish(anObj, theName, "subshape")
6119             return anObj
6120
6121         ## Obtain unique ID of sub-shape <VAR>aSubShape</VAR> inside <VAR>aShape</VAR>
6122         #  of aShape, selected by their unique IDs inside <VAR>aShape</VAR>
6123         #  @param aShape Shape to get sub-shape of.
6124         #  @param aSubShape Sub-shapes of aShape.
6125         #  @return ID of found sub-shape.
6126         #
6127         #  @ref swig_all_decompose "Example"
6128         @ManageTransactions("LocalOp")
6129         def GetSubShapeID(self, aShape, aSubShape):
6130             """
6131             Obtain unique ID of sub-shape aSubShape inside aShape
6132             of aShape, selected by their unique IDs inside aShape
6133
6134             Parameters:
6135                aShape Shape to get sub-shape of.
6136                aSubShape Sub-shapes of aShape.
6137
6138             Returns:
6139                ID of found sub-shape.
6140             """
6141             # Example: see GEOM_TestAll.py
6142             anID = self.LocalOp.GetSubShapeIndex(aShape, aSubShape)
6143             RaiseIfFailed("GetSubShapeIndex", self.LocalOp)
6144             return anID
6145
6146         ## Obtain unique IDs of sub-shapes <VAR>aSubShapes</VAR> inside <VAR>aShape</VAR>
6147         #  This function is provided for performance purpose. The complexity is O(n) with n
6148         #  the number of subobjects of aShape
6149         #  @param aShape Shape to get sub-shape of.
6150         #  @param aSubShapes Sub-shapes of aShape.
6151         #  @return list of IDs of found sub-shapes.
6152         #
6153         #  @ref swig_all_decompose "Example"
6154         @ManageTransactions("ShapesOp")
6155         def GetSubShapesIDs(self, aShape, aSubShapes):
6156             """
6157             Obtain a list of IDs of sub-shapes aSubShapes inside aShape
6158             This function is provided for performance purpose. The complexity is O(n) with n
6159             the number of subobjects of aShape
6160
6161             Parameters:
6162                aShape Shape to get sub-shape of.
6163                aSubShapes Sub-shapes of aShape.
6164
6165             Returns:
6166                List of IDs of found sub-shape.
6167             """
6168             # Example: see GEOM_TestAll.py
6169             anIDs = self.ShapesOp.GetSubShapesIndices(aShape, aSubShapes)
6170             RaiseIfFailed("GetSubShapesIndices", self.ShapesOp)
6171             return anIDs
6172
6173         # end of l4_access
6174         ## @}
6175
6176         ## @addtogroup l4_decompose
6177         ## @{
6178
6179         ## Get all sub-shapes and groups of \a theShape,
6180         #  that were created already by any other methods.
6181         #  @param theShape Any shape.
6182         #  @param theGroupsOnly If this parameter is TRUE, only groups will be
6183         #                       returned, else all found sub-shapes and groups.
6184         #  @return List of existing sub-objects of \a theShape.
6185         #
6186         #  @ref swig_all_decompose "Example"
6187         @ManageTransactions("ShapesOp")
6188         def GetExistingSubObjects(self, theShape, theGroupsOnly = False):
6189             """
6190             Get all sub-shapes and groups of theShape,
6191             that were created already by any other methods.
6192
6193             Parameters:
6194                 theShape Any shape.
6195                 theGroupsOnly If this parameter is TRUE, only groups will be
6196                                  returned, else all found sub-shapes and groups.
6197
6198             Returns:
6199                 List of existing sub-objects of theShape.
6200             """
6201             # Example: see GEOM_TestAll.py
6202             ListObj = self.ShapesOp.GetExistingSubObjects(theShape, theGroupsOnly)
6203             RaiseIfFailed("GetExistingSubObjects", self.ShapesOp)
6204             return ListObj
6205
6206         ## Get all groups of \a theShape,
6207         #  that were created already by any other methods.
6208         #  @param theShape Any shape.
6209         #  @return List of existing groups of \a theShape.
6210         #
6211         #  @ref swig_all_decompose "Example"
6212         @ManageTransactions("ShapesOp")
6213         def GetGroups(self, theShape):
6214             """
6215             Get all groups of theShape,
6216             that were created already by any other methods.
6217
6218             Parameters:
6219                 theShape Any shape.
6220
6221             Returns:
6222                 List of existing groups of theShape.
6223             """
6224             # Example: see GEOM_TestAll.py
6225             ListObj = self.ShapesOp.GetExistingSubObjects(theShape, True)
6226             RaiseIfFailed("GetExistingSubObjects", self.ShapesOp)
6227             return ListObj
6228
6229         ## Explode a shape on sub-shapes of a given type.
6230         #  If the shape itself matches the type, it is also returned.
6231         #  @param aShape Shape to be exploded.
6232         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6233         #  @param theName Object name; when specified, this parameter is used
6234         #         for result publication in the study. Otherwise, if automatic
6235         #         publication is switched on, default value is used for result name.
6236         #
6237         #  @return List of sub-shapes of type theShapeType, contained in theShape.
6238         #
6239         #  @ref swig_all_decompose "Example"
6240         @ManageTransactions("ShapesOp")
6241         def SubShapeAll(self, aShape, aType, theName=None):
6242             """
6243             Explode a shape on sub-shapes of a given type.
6244             If the shape itself matches the type, it is also returned.
6245
6246             Parameters:
6247                 aShape Shape to be exploded.
6248                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6249                 theName Object name; when specified, this parameter is used
6250                         for result publication in the study. Otherwise, if automatic
6251                         publication is switched on, default value is used for result name.
6252
6253             Returns:
6254                 List of sub-shapes of type theShapeType, contained in theShape.
6255             """
6256             # Example: see GEOM_TestAll.py
6257             ListObj = self.ShapesOp.MakeAllSubShapes(aShape, EnumToLong( aType ), False)
6258             RaiseIfFailed("SubShapeAll", self.ShapesOp)
6259             self._autoPublish(ListObj, theName, "subshape")
6260             return ListObj
6261
6262         ## Explode a shape on sub-shapes of a given type.
6263         #  @param aShape Shape to be exploded.
6264         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6265         #  @return List of IDs of sub-shapes.
6266         #
6267         #  @ref swig_all_decompose "Example"
6268         @ManageTransactions("ShapesOp")
6269         def SubShapeAllIDs(self, aShape, aType):
6270             """
6271             Explode a shape on sub-shapes of a given type.
6272
6273             Parameters:
6274                 aShape Shape to be exploded (see geompy.ShapeType)
6275                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6276
6277             Returns:
6278                 List of IDs of sub-shapes.
6279             """
6280             ListObj = self.ShapesOp.GetAllSubShapesIDs(aShape, EnumToLong( aType ), False)
6281             RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
6282             return ListObj
6283
6284         ## Obtain a compound of sub-shapes of <VAR>aShape</VAR>,
6285         #  selected by their indices in list of all sub-shapes of type <VAR>aType</VAR>.
6286         #  Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6287         #  @param aShape Shape to get sub-shape of.
6288         #  @param ListOfInd List of sub-shapes indices.
6289         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6290         #  @param theName Object name; when specified, this parameter is used
6291         #         for result publication in the study. Otherwise, if automatic
6292         #         publication is switched on, default value is used for result name.
6293         #
6294         #  @return A compound of sub-shapes of aShape.
6295         #
6296         #  @ref swig_all_decompose "Example"
6297         def SubShape(self, aShape, aType, ListOfInd, theName=None):
6298             """
6299             Obtain a compound of sub-shapes of aShape,
6300             selected by their indices in list of all sub-shapes of type aType.
6301             Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6302
6303             Parameters:
6304                 aShape Shape to get sub-shape of.
6305                 ListOfID List of sub-shapes indices.
6306                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6307                 theName Object name; when specified, this parameter is used
6308                         for result publication in the study. Otherwise, if automatic
6309                         publication is switched on, default value is used for result name.
6310
6311             Returns:
6312                 A compound of sub-shapes of aShape.
6313             """
6314             # Example: see GEOM_TestAll.py
6315             ListOfIDs = []
6316             AllShapeIDsList = self.SubShapeAllIDs(aShape, EnumToLong( aType ))
6317             for ind in ListOfInd:
6318                 ListOfIDs.append(AllShapeIDsList[ind - 1])
6319             # note: auto-publishing is done in self.GetSubShape()
6320             anObj = self.GetSubShape(aShape, ListOfIDs, theName)
6321             return anObj
6322
6323         ## Explode a shape on sub-shapes of a given type.
6324         #  Sub-shapes will be sorted taking into account their gravity centers,
6325         #  to provide stable order of sub-shapes.
6326         #  If the shape itself matches the type, it is also returned.
6327         #  @param aShape Shape to be exploded.
6328         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6329         #  @param theName Object name; when specified, this parameter is used
6330         #         for result publication in the study. Otherwise, if automatic
6331         #         publication is switched on, default value is used for result name.
6332         #
6333         #  @return List of sub-shapes of type theShapeType, contained in theShape.
6334         #
6335         #  @ref swig_SubShapeAllSorted "Example"
6336         @ManageTransactions("ShapesOp")
6337         def SubShapeAllSortedCentres(self, aShape, aType, theName=None):
6338             """
6339             Explode a shape on sub-shapes of a given type.
6340             Sub-shapes will be sorted taking into account their gravity centers,
6341             to provide stable order of sub-shapes.
6342             If the shape itself matches the type, it is also returned.
6343
6344             Parameters:
6345                 aShape Shape to be exploded.
6346                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6347                 theName Object name; when specified, this parameter is used
6348                         for result publication in the study. Otherwise, if automatic
6349                         publication is switched on, default value is used for result name.
6350
6351             Returns:
6352                 List of sub-shapes of type theShapeType, contained in theShape.
6353             """
6354             # Example: see GEOM_TestAll.py
6355             ListObj = self.ShapesOp.MakeAllSubShapes(aShape, EnumToLong( aType ), True)
6356             RaiseIfFailed("SubShapeAllSortedCentres", self.ShapesOp)
6357             self._autoPublish(ListObj, theName, "subshape")
6358             return ListObj
6359
6360         ## Explode a shape on sub-shapes of a given type.
6361         #  Sub-shapes will be sorted taking into account their gravity centers,
6362         #  to provide stable order of sub-shapes.
6363         #  @param aShape Shape to be exploded.
6364         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6365         #  @return List of IDs of sub-shapes.
6366         #
6367         #  @ref swig_all_decompose "Example"
6368         @ManageTransactions("ShapesOp")
6369         def SubShapeAllSortedCentresIDs(self, aShape, aType):
6370             """
6371             Explode a shape on sub-shapes of a given type.
6372             Sub-shapes will be sorted taking into account their gravity centers,
6373             to provide stable order of sub-shapes.
6374
6375             Parameters:
6376                 aShape Shape to be exploded.
6377                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6378
6379             Returns:
6380                 List of IDs of sub-shapes.
6381             """
6382             ListIDs = self.ShapesOp.GetAllSubShapesIDs(aShape, EnumToLong( aType ), True)
6383             RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
6384             return ListIDs
6385
6386         ## Obtain a compound of sub-shapes of <VAR>aShape</VAR>,
6387         #  selected by they indices in sorted list of all sub-shapes of type <VAR>aType</VAR>.
6388         #  Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6389         #  @param aShape Shape to get sub-shape of.
6390         #  @param ListOfInd List of sub-shapes indices.
6391         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6392         #  @param theName Object name; when specified, this parameter is used
6393         #         for result publication in the study. Otherwise, if automatic
6394         #         publication is switched on, default value is used for result name.
6395         #
6396         #  @return A compound of sub-shapes of aShape.
6397         #
6398         #  @ref swig_all_decompose "Example"
6399         def SubShapeSortedCentres(self, aShape, aType, ListOfInd, theName=None):
6400             """
6401             Obtain a compound of sub-shapes of aShape,
6402             selected by they indices in sorted list of all sub-shapes of type aType.
6403             Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6404
6405             Parameters:
6406                 aShape Shape to get sub-shape of.
6407                 ListOfID List of sub-shapes indices.
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                 A compound of sub-shapes of aShape.
6415             """
6416             # Example: see GEOM_TestAll.py
6417             ListOfIDs = []
6418             AllShapeIDsList = self.SubShapeAllSortedCentresIDs(aShape, EnumToLong( aType ))
6419             for ind in ListOfInd:
6420                 ListOfIDs.append(AllShapeIDsList[ind - 1])
6421             # note: auto-publishing is done in self.GetSubShape()
6422             anObj = self.GetSubShape(aShape, ListOfIDs, theName)
6423             return anObj
6424
6425         ## Extract shapes (excluding the main shape) of given type.
6426         #  @param aShape The shape.
6427         #  @param aType  The shape type (see ShapeType())
6428         #  @param isSorted Boolean flag to switch sorting on/off.
6429         #  @param theName Object name; when specified, this parameter is used
6430         #         for result publication in the study. Otherwise, if automatic
6431         #         publication is switched on, default value is used for result name.
6432         #
6433         #  @return List of sub-shapes of type aType, contained in aShape.
6434         #
6435         #  @ref swig_FilletChamfer "Example"
6436         @ManageTransactions("ShapesOp")
6437         def ExtractShapes(self, aShape, aType, isSorted = False, theName=None):
6438             """
6439             Extract shapes (excluding the main shape) of given type.
6440
6441             Parameters:
6442                 aShape The shape.
6443                 aType  The shape type (see geompy.ShapeType)
6444                 isSorted Boolean flag to switch sorting on/off.
6445                 theName Object name; when specified, this parameter is used
6446                         for result publication in the study. Otherwise, if automatic
6447                         publication is switched on, default value is used for result name.
6448
6449             Returns:
6450                 List of sub-shapes of type aType, contained in aShape.
6451             """
6452             # Example: see GEOM_TestAll.py
6453             ListObj = self.ShapesOp.ExtractSubShapes(aShape, EnumToLong( aType ), isSorted)
6454             RaiseIfFailed("ExtractSubShapes", self.ShapesOp)
6455             self._autoPublish(ListObj, theName, "subshape")
6456             return ListObj
6457
6458         ## Get a set of sub-shapes defined by their unique IDs inside <VAR>aShape</VAR>
6459         #  @param aShape Main shape.
6460         #  @param anIDs List of unique IDs of sub-shapes inside <VAR>aShape</VAR>.
6461         #  @param theName Object name; when specified, this parameter is used
6462         #         for result publication in the study. Otherwise, if automatic
6463         #         publication is switched on, default value is used for result name.
6464         #  @return List of GEOM.GEOM_Object, corresponding to found sub-shapes.
6465         #
6466         #  @ref swig_all_decompose "Example"
6467         @ManageTransactions("ShapesOp")
6468         def SubShapes(self, aShape, anIDs, theName=None):
6469             """
6470             Get a set of sub-shapes defined by their unique IDs inside theMainShape
6471
6472             Parameters:
6473                 aShape Main shape.
6474                 anIDs List of unique IDs of sub-shapes inside theMainShape.
6475                 theName Object name; when specified, this parameter is used
6476                         for result publication in the study. Otherwise, if automatic
6477                         publication is switched on, default value is used for result name.
6478
6479             Returns:
6480                 List of GEOM.GEOM_Object, corresponding to found sub-shapes.
6481             """
6482             # Example: see GEOM_TestAll.py
6483             ListObj = self.ShapesOp.MakeSubShapes(aShape, anIDs)
6484             RaiseIfFailed("SubShapes", self.ShapesOp)
6485             self._autoPublish(ListObj, theName, "subshape")
6486             return ListObj
6487
6488         ## Explode a shape into edges sorted in a row from a starting point.
6489         #  @param theShape the shape to be exploded on edges.
6490         #  @param theStartPoint the starting point.
6491         #  @param theName Object name; when specified, this parameter is used
6492         #         for result publication in the study. Otherwise, if automatic
6493         #         publication is switched on, default value is used for result name.
6494         #  @return List of GEOM.GEOM_Object that is actually an ordered list
6495         #          of edges sorted in a row from a starting point.
6496         #
6497         #  @ref swig_GetSubShapeEdgeSorted "Example"
6498         @ManageTransactions("ShapesOp")
6499         def GetSubShapeEdgeSorted(self, theShape, theStartPoint, theName=None):
6500             """
6501             Explode a shape into edges sorted in a row from a starting point.
6502
6503             Parameters:
6504                 theShape the shape to be exploded on edges.
6505                 theStartPoint the starting point.
6506                 theName Object name; when specified, this parameter is used
6507                         for result publication in the study. Otherwise, if automatic
6508                         publication is switched on, default value is used for result name.
6509
6510             Returns:
6511                 List of GEOM.GEOM_Object that is actually an ordered list
6512                 of edges sorted in a row from a starting point.
6513             """
6514             # Example: see GEOM_TestAll.py
6515             ListObj = self.ShapesOp.GetSubShapeEdgeSorted(theShape, theStartPoint)
6516             RaiseIfFailed("GetSubShapeEdgeSorted", self.ShapesOp)
6517             self._autoPublish(ListObj, theName, "SortedEdges")
6518             return ListObj
6519
6520         ## Check if the object is a sub-object of another GEOM object.
6521         #  @param aSubObject Checked sub-object (or its parent object, in case if
6522         #         \a theSubObjectIndex is non-zero).
6523         #  @param anObject An object that is checked for ownership (or its parent object,
6524         #         in case if \a theObjectIndex is non-zero).
6525         #  @param aSubObjectIndex When non-zero, specifies a sub-shape index that
6526         #         identifies a sub-object within its parent specified via \a theSubObject.
6527         #  @param anObjectIndex When non-zero, specifies a sub-shape index that
6528         #         identifies an object within its parent specified via \a theObject.
6529         #  @return TRUE, if the given object contains sub-object.
6530         @ManageTransactions("ShapesOp")
6531         def IsSubShapeBelongsTo(self, aSubObject, anObject, aSubObjectIndex = 0, anObjectIndex = 0):
6532             """
6533             Check if the object is a sub-object of another GEOM object.
6534             
6535             Parameters:
6536                 aSubObject Checked sub-object (or its parent object, in case if
6537                     \a theSubObjectIndex is non-zero).
6538                 anObject An object that is checked for ownership (or its parent object,
6539                     in case if \a theObjectIndex is non-zero).
6540                 aSubObjectIndex When non-zero, specifies a sub-shape index that
6541                     identifies a sub-object within its parent specified via \a theSubObject.
6542                 anObjectIndex When non-zero, specifies a sub-shape index that
6543                     identifies an object within its parent specified via \a theObject.
6544
6545             Returns
6546                 TRUE, if the given object contains sub-object.
6547             """
6548             IsOk = self.ShapesOp.IsSubShapeBelongsTo(aSubObject, aSubObjectIndex, anObject, anObjectIndex)
6549             RaiseIfFailed("IsSubShapeBelongsTo", self.ShapesOp)
6550             return IsOk
6551
6552         # end of l4_decompose
6553         ## @}
6554
6555         ## @addtogroup l4_decompose_d
6556         ## @{
6557
6558         ## Deprecated method
6559         #  It works like SubShapeAllSortedCentres(), but wrongly
6560         #  defines centres of faces, shells and solids.
6561         @ManageTransactions("ShapesOp")
6562         def SubShapeAllSorted(self, aShape, aType, theName=None):
6563             """
6564             Deprecated method
6565             It works like geompy.SubShapeAllSortedCentres, but wrongly
6566             defines centres of faces, shells and solids.
6567             """
6568             ListObj = self.ShapesOp.MakeExplode(aShape, EnumToLong( aType ), True)
6569             RaiseIfFailed("MakeExplode", self.ShapesOp)
6570             self._autoPublish(ListObj, theName, "subshape")
6571             return ListObj
6572
6573         ## Deprecated method
6574         #  It works like SubShapeAllSortedCentresIDs(), but wrongly
6575         #  defines centres of faces, shells and solids.
6576         @ManageTransactions("ShapesOp")
6577         def SubShapeAllSortedIDs(self, aShape, aType):
6578             """
6579             Deprecated method
6580             It works like geompy.SubShapeAllSortedCentresIDs, but wrongly
6581             defines centres of faces, shells and solids.
6582             """
6583             ListIDs = self.ShapesOp.SubShapeAllIDs(aShape, EnumToLong( aType ), True)
6584             RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
6585             return ListIDs
6586
6587         ## Deprecated method
6588         #  It works like SubShapeSortedCentres(), but has a bug
6589         #  (wrongly defines centres of faces, shells and solids).
6590         def SubShapeSorted(self, aShape, aType, ListOfInd, theName=None):
6591             """
6592             Deprecated method
6593             It works like geompy.SubShapeSortedCentres, but has a bug
6594             (wrongly defines centres of faces, shells and solids).
6595             """
6596             ListOfIDs = []
6597             AllShapeIDsList = self.SubShapeAllSortedIDs(aShape, EnumToLong( aType ))
6598             for ind in ListOfInd:
6599                 ListOfIDs.append(AllShapeIDsList[ind - 1])
6600             # note: auto-publishing is done in self.GetSubShape()
6601             anObj = self.GetSubShape(aShape, ListOfIDs, theName)
6602             return anObj
6603
6604         # end of l4_decompose_d
6605         ## @}
6606
6607         ## @addtogroup l3_healing
6608         ## @{
6609
6610         ## Apply a sequence of Shape Healing operators to the given object.
6611         #  @param theShape Shape to be processed.
6612         #  @param theOperators List of names of operators ("FixShape", "SplitClosedFaces", etc.).
6613         #  @param theParameters List of names of parameters
6614         #                    ("FixShape.Tolerance3d", "SplitClosedFaces.NbSplitPoints", etc.).
6615         #  @param theValues List of values of parameters, in the same order
6616         #                    as parameters are listed in <VAR>theParameters</VAR> list.
6617         #  @param theName Object name; when specified, this parameter is used
6618         #         for result publication in the study. Otherwise, if automatic
6619         #         publication is switched on, default value is used for result name.
6620         #
6621         #  <b> Operators and Parameters: </b> \n
6622         #
6623         #  * \b FixShape - corrects invalid shapes. \n
6624         #  - \b FixShape.Tolerance3d - work tolerance for detection of the problems and correction of them. \n
6625         #  - \b FixShape.MaxTolerance3d - maximal possible tolerance of the shape after correction. \n
6626         #
6627         #  * \b FixFaceSize - removes small faces, such as spots and strips.\n
6628         #  - \b FixFaceSize.Tolerance - defines minimum possible face size. \n
6629         #  - \b DropSmallEdges - removes edges, which merge with neighbouring edges. \n
6630         #  - \b DropSmallEdges.Tolerance3d - defines minimum possible distance between two parallel edges.\n
6631         #  - \b DropSmallSolids - either removes small solids or merges them with neighboring ones. \n
6632         #  - \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
6633         #  - \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
6634         #  - \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
6635         #
6636         #  * \b SplitAngle - splits faces based on conical surfaces, surfaces of revolution and cylindrical
6637         #    surfaces in segments using a certain angle. \n
6638         #  - \b SplitAngle.Angle - the central angle of the resulting segments (i.e. we obtain two segments
6639         #    if Angle=180, four if Angle=90, etc). \n
6640         #  - \b SplitAngle.MaxTolerance - maximum possible tolerance among the resulting segments.\n
6641         #
6642         #  * \b SplitClosedFaces - splits closed faces in segments.
6643         #    The number of segments depends on the number of splitting points.\n
6644         #  - \b SplitClosedFaces.NbSplitPoints - the number of splitting points.\n
6645         #
6646         #  * \b SplitContinuity - splits shapes to reduce continuities of curves and surfaces.\n
6647         #  - \b SplitContinuity.Tolerance3d - 3D tolerance for correction of geometry.\n
6648         #  - \b SplitContinuity.SurfaceContinuity - required continuity for surfaces.\n
6649         #  - \b SplitContinuity.CurveContinuity - required continuity for curves.\n
6650         #   This and the previous parameters can take the following values:\n
6651         #   \b Parametric \b Continuity \n
6652         #   \b C0 (Positional Continuity): curves are joined (the end positions of curves or surfaces
6653         #   are coincidental. The curves or surfaces may still meet at an angle, giving rise to a sharp corner or edge).\n
6654         #   \b C1 (Tangential Continuity): first derivatives are equal (the end vectors of curves or surfaces are parallel,
6655         #    ruling out sharp edges).\n
6656         #   \b C2 (Curvature Continuity): first and second derivatives are equal (the end vectors of curves or surfaces
6657         #       are of the same magnitude).\n
6658         #   \b CN N-th derivatives are equal (both the direction and the magnitude of the Nth derivatives of curves
6659         #    or surfaces (d/du C(u)) are the same at junction. \n
6660         #   \b Geometric \b Continuity \n
6661         #   \b G1: first derivatives are proportional at junction.\n
6662         #   The curve tangents thus have the same direction, but not necessarily the same magnitude.
6663         #      i.e., C1'(1) = (a,b,c) and C2'(0) = (k*a, k*b, k*c).\n
6664         #   \b G2: first and second derivatives are proportional at junction.
6665         #   As the names imply, geometric continuity requires the geometry to be continuous, while parametric
6666         #    continuity requires that the underlying parameterization was continuous as well.
6667         #   Parametric continuity of order n implies geometric continuity of order n, but not vice-versa.\n
6668         #
6669         #  * \b BsplineRestriction - converts curves and surfaces to Bsplines and processes them with the following parameters:\n
6670         #  - \b BSplineRestriction.SurfaceMode - approximation of surfaces if restriction is necessary.\n
6671         #  - \b BSplineRestriction.Curve3dMode - conversion of any 3D curve to BSpline and approximation.\n
6672         #  - \b BSplineRestriction.Curve2dMode - conversion of any 2D curve to BSpline and approximation.\n
6673         #  - \b BSplineRestriction.Tolerance3d - defines the possibility of surfaces and 3D curves approximation
6674         #       with the specified parameters.\n
6675         #  - \b BSplineRestriction.Tolerance2d - defines the possibility of surfaces and 2D curves approximation
6676         #       with the specified parameters.\n
6677         #  - \b BSplineRestriction.RequiredDegree - required degree of the resulting BSplines.\n
6678         #  - \b BSplineRestriction.RequiredNbSegments - required maximum number of segments of resultant BSplines.\n
6679         #  - \b BSplineRestriction.Continuity3d - continuity of the resulting surfaces and 3D curves.\n
6680         #  - \b BSplineRestriction.Continuity2d - continuity of the resulting 2D curves.\n
6681         #
6682         #  * \b ToBezier - converts curves and surfaces of any type to Bezier curves and surfaces.\n
6683         #  - \b ToBezier.SurfaceMode - if checked in, allows conversion of surfaces.\n
6684         #  - \b ToBezier.Curve3dMode - if checked in, allows conversion of 3D curves.\n
6685         #  - \b ToBezier.Curve2dMode - if checked in, allows conversion of 2D curves.\n
6686         #  - \b ToBezier.MaxTolerance - defines tolerance for detection and correction of problems.\n
6687         #
6688         #  * \b SameParameter - fixes edges of 2D and 3D curves not having the same parameter.\n
6689         #  - \b SameParameter.Tolerance3d - defines tolerance for fixing of edges.\n
6690         #
6691         #
6692         #  @return New GEOM.GEOM_Object, containing processed shape.
6693         #
6694         #  \n @ref tui_shape_processing "Example"
6695         @ManageTransactions("HealOp")
6696         def ProcessShape(self, theShape, theOperators, theParameters, theValues, theName=None):
6697             """
6698             Apply a sequence of Shape Healing operators to the given object.
6699
6700             Parameters:
6701                 theShape Shape to be processed.
6702                 theValues List of values of parameters, in the same order
6703                           as parameters are listed in theParameters list.
6704                 theOperators List of names of operators ('FixShape', 'SplitClosedFaces', etc.).
6705                 theParameters List of names of parameters
6706                               ('FixShape.Tolerance3d', 'SplitClosedFaces.NbSplitPoints', etc.).
6707                 theName Object name; when specified, this parameter is used
6708                         for result publication in the study. Otherwise, if automatic
6709                         publication is switched on, default value is used for result name.
6710
6711                 Operators and Parameters:
6712
6713                  * FixShape - corrects invalid shapes.
6714                      * FixShape.Tolerance3d - work tolerance for detection of the problems and correction of them.
6715                      * FixShape.MaxTolerance3d - maximal possible tolerance of the shape after correction.
6716                  * FixFaceSize - removes small faces, such as spots and strips.
6717                      * FixFaceSize.Tolerance - defines minimum possible face size.
6718                  * DropSmallEdges - removes edges, which merge with neighbouring edges.
6719                      * DropSmallEdges.Tolerance3d - defines minimum possible distance between two parallel edges.
6720                  * DropSmallSolids - either removes small solids or merges them with neighboring ones.
6721                      * 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.
6722                      * 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.
6723                      * 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.
6724
6725                  * SplitAngle - splits faces based on conical surfaces, surfaces of revolution and cylindrical surfaces
6726                                 in segments using a certain angle.
6727                      * SplitAngle.Angle - the central angle of the resulting segments (i.e. we obtain two segments
6728                                           if Angle=180, four if Angle=90, etc).
6729                      * SplitAngle.MaxTolerance - maximum possible tolerance among the resulting segments.
6730                  * SplitClosedFaces - splits closed faces in segments. The number of segments depends on the number of
6731                                       splitting points.
6732                      * SplitClosedFaces.NbSplitPoints - the number of splitting points.
6733                  * SplitContinuity - splits shapes to reduce continuities of curves and surfaces.
6734                      * SplitContinuity.Tolerance3d - 3D tolerance for correction of geometry.
6735                      * SplitContinuity.SurfaceContinuity - required continuity for surfaces.
6736                      * SplitContinuity.CurveContinuity - required continuity for curves.
6737                        This and the previous parameters can take the following values:
6738
6739                        Parametric Continuity:
6740                        C0 (Positional Continuity): curves are joined (the end positions of curves or surfaces are
6741                                                    coincidental. The curves or surfaces may still meet at an angle,
6742                                                    giving rise to a sharp corner or edge).
6743                        C1 (Tangential Continuity): first derivatives are equal (the end vectors of curves or surfaces
6744                                                    are parallel, ruling out sharp edges).
6745                        C2 (Curvature Continuity): first and second derivatives are equal (the end vectors of curves
6746                                                   or surfaces are of the same magnitude).
6747                        CN N-th derivatives are equal (both the direction and the magnitude of the Nth derivatives of
6748                           curves or surfaces (d/du C(u)) are the same at junction.
6749
6750                        Geometric Continuity:
6751                        G1: first derivatives are proportional at junction.
6752                            The curve tangents thus have the same direction, but not necessarily the same magnitude.
6753                            i.e., C1'(1) = (a,b,c) and C2'(0) = (k*a, k*b, k*c).
6754                        G2: first and second derivatives are proportional at junction. As the names imply,
6755                            geometric continuity requires the geometry to be continuous, while parametric continuity requires
6756                            that the underlying parameterization was continuous as well. Parametric continuity of order n implies
6757                            geometric continuity of order n, but not vice-versa.
6758                  * BsplineRestriction - converts curves and surfaces to Bsplines and processes them with the following parameters:
6759                      * BSplineRestriction.SurfaceMode - approximation of surfaces if restriction is necessary.
6760                      * BSplineRestriction.Curve3dMode - conversion of any 3D curve to BSpline and approximation.
6761                      * BSplineRestriction.Curve2dMode - conversion of any 2D curve to BSpline and approximation.
6762                      * BSplineRestriction.Tolerance3d - defines the possibility of surfaces and 3D curves approximation with
6763                                                         the specified parameters.
6764                      * BSplineRestriction.Tolerance2d - defines the possibility of surfaces and 2D curves approximation with
6765                                                         the specified parameters.
6766                      * BSplineRestriction.RequiredDegree - required degree of the resulting BSplines.
6767                      * BSplineRestriction.RequiredNbSegments - required maximum number of segments of resultant BSplines.
6768                      * BSplineRestriction.Continuity3d - continuity of the resulting surfaces and 3D curves.
6769                      * BSplineRestriction.Continuity2d - continuity of the resulting 2D curves.
6770                  * ToBezier - converts curves and surfaces of any type to Bezier curves and surfaces.
6771                      * ToBezier.SurfaceMode - if checked in, allows conversion of surfaces.
6772                      * ToBezier.Curve3dMode - if checked in, allows conversion of 3D curves.
6773                      * ToBezier.Curve2dMode - if checked in, allows conversion of 2D curves.
6774                      * ToBezier.MaxTolerance - defines tolerance for detection and correction of problems.
6775                  * SameParameter - fixes edges of 2D and 3D curves not having the same parameter.
6776                      * SameParameter.Tolerance3d - defines tolerance for fixing of edges.
6777
6778             Returns:
6779                 New GEOM.GEOM_Object, containing processed shape.
6780
6781             Note: For more information look through SALOME Geometry User's Guide->
6782                   -> Introduction to Geometry-> Repairing Operations-> Shape Processing
6783             """
6784             # Example: see GEOM_TestHealing.py
6785             theValues,Parameters = ParseList(theValues)
6786             anObj = self.HealOp.ProcessShape(theShape, theOperators, theParameters, theValues)
6787             # To avoid script failure in case of good argument shape
6788             if self.HealOp.GetErrorCode() == "ShHealOper_NotError_msg":
6789                 return theShape
6790             RaiseIfFailed("ProcessShape", self.HealOp)
6791             for string in (theOperators + theParameters):
6792                 Parameters = ":" + Parameters
6793                 pass
6794             anObj.SetParameters(Parameters)
6795             self._autoPublish(anObj, theName, "healed")
6796             return anObj
6797
6798         ## Remove faces from the given object (shape).
6799         #  @param theObject Shape to be processed.
6800         #  @param theFaces Indices of faces to be removed, if EMPTY then the method
6801         #                  removes ALL faces of the given object.
6802         #  @param theName Object name; when specified, this parameter is used
6803         #         for result publication in the study. Otherwise, if automatic
6804         #         publication is switched on, default value is used for result name.
6805         #
6806         #  @return New GEOM.GEOM_Object, containing processed shape.
6807         #
6808         #  @ref tui_suppress_faces "Example"
6809         @ManageTransactions("HealOp")
6810         def SuppressFaces(self, theObject, theFaces, theName=None):
6811             """
6812             Remove faces from the given object (shape).
6813
6814             Parameters:
6815                 theObject Shape to be processed.
6816                 theFaces Indices of faces to be removed, if EMPTY then the method
6817                          removes ALL faces of the given object.
6818                 theName Object name; when specified, this parameter is used
6819                         for result publication in the study. Otherwise, if automatic
6820                         publication is switched on, default value is used for result name.
6821
6822             Returns:
6823                 New GEOM.GEOM_Object, containing processed shape.
6824             """
6825             # Example: see GEOM_TestHealing.py
6826             anObj = self.HealOp.SuppressFaces(theObject, theFaces)
6827             RaiseIfFailed("SuppressFaces", self.HealOp)
6828             self._autoPublish(anObj, theName, "suppressFaces")
6829             return anObj
6830
6831         ## Sewing of faces into a single shell.
6832         #  @param ListShape Shapes to be processed.
6833         #  @param theTolerance Required tolerance value.
6834         #  @param AllowNonManifold Flag that allows non-manifold sewing.
6835         #  @param theName Object name; when specified, this parameter is used
6836         #         for result publication in the study. Otherwise, if automatic
6837         #         publication is switched on, default value is used for result name.
6838         #
6839         #  @return New GEOM.GEOM_Object, containing a result shell.
6840         #
6841         #  @ref tui_sewing "Example"
6842         def MakeSewing(self, ListShape, theTolerance, AllowNonManifold=False, theName=None):
6843             """
6844             Sewing of faces into a single shell.
6845
6846             Parameters:
6847                 ListShape Shapes to be processed.
6848                 theTolerance Required tolerance value.
6849                 AllowNonManifold Flag that allows non-manifold sewing.
6850                 theName Object name; when specified, this parameter is used
6851                         for result publication in the study. Otherwise, if automatic
6852                         publication is switched on, default value is used for result name.
6853
6854             Returns:
6855                 New GEOM.GEOM_Object, containing containing a result shell.
6856             """
6857             # Example: see GEOM_TestHealing.py
6858             # note: auto-publishing is done in self.Sew()
6859             anObj = self.Sew(ListShape, theTolerance, AllowNonManifold, theName)
6860             return anObj
6861
6862         ## Sewing of faces into a single shell.
6863         #  @param ListShape Shapes to be processed.
6864         #  @param theTolerance Required tolerance value.
6865         #  @param AllowNonManifold Flag that allows non-manifold sewing.
6866         #  @param theName Object name; when specified, this parameter is used
6867         #         for result publication in the study. Otherwise, if automatic
6868         #         publication is switched on, default value is used for result name.
6869         #
6870         #  @return New GEOM.GEOM_Object, containing a result shell.
6871         @ManageTransactions("HealOp")
6872         def Sew(self, ListShape, theTolerance, AllowNonManifold=False, theName=None):
6873             """
6874             Sewing of faces into a single shell.
6875
6876             Parameters:
6877                 ListShape Shapes to be processed.
6878                 theTolerance Required tolerance value.
6879                 AllowNonManifold Flag that allows non-manifold sewing.
6880                 theName Object name; when specified, this parameter is used
6881                         for result publication in the study. Otherwise, if automatic
6882                         publication is switched on, default value is used for result name.
6883
6884             Returns:
6885                 New GEOM.GEOM_Object, containing a result shell.
6886             """
6887             # Example: see MakeSewing() above
6888             theTolerance,Parameters = ParseParameters(theTolerance)
6889             if AllowNonManifold:
6890                 anObj = self.HealOp.SewAllowNonManifold( ToList( ListShape ), theTolerance)
6891             else:
6892                 anObj = self.HealOp.Sew( ToList( ListShape ), theTolerance)
6893             # To avoid script failure in case of good argument shape
6894             # (Fix of test cases geom/bugs11/L7,L8)
6895             if self.HealOp.GetErrorCode() == "ShHealOper_NotError_msg":
6896                 return anObj
6897             RaiseIfFailed("Sew", self.HealOp)
6898             anObj.SetParameters(Parameters)
6899             self._autoPublish(anObj, theName, "sewed")
6900             return anObj
6901
6902         ## Rebuild the topology of theSolids by removing
6903         #  the faces that are shared by several solids.
6904         #  @param theSolids A compound or a list of solids to be processed.
6905         #  @param theName Object name; when specified, this parameter is used
6906         #         for result publication in the study. Otherwise, if automatic
6907         #         publication is switched on, default value is used for result name.
6908         #
6909         #  @return New GEOM.GEOM_Object, containing processed shape.
6910         #
6911         #  @ref tui_remove_webs "Example"
6912         @ManageTransactions("HealOp")
6913         def RemoveInternalFaces (self, theSolids, theName=None):
6914             """
6915             Rebuild the topology of theSolids by removing
6916             the faces that are shared by several solids.
6917
6918             Parameters:
6919                 theSolids A compound or a list of solids to be processed.
6920                 theName Object name; when specified, this parameter is used
6921                         for result publication in the study. Otherwise, if automatic
6922                         publication is switched on, default value is used for result name.
6923
6924             Returns:
6925                 New GEOM.GEOM_Object, containing processed shape.
6926             """
6927             # Example: see GEOM_TestHealing.py
6928             anObj = self.HealOp.RemoveInternalFaces(ToList(theSolids))
6929             RaiseIfFailed("RemoveInternalFaces", self.HealOp)
6930             self._autoPublish(anObj, theName, "removeWebs")
6931             return anObj
6932
6933         ## Remove internal wires and edges from the given object (face).
6934         #  @param theObject Shape to be processed.
6935         #  @param theWires Indices of wires to be removed, if EMPTY then the method
6936         #                  removes ALL internal wires of the given object.
6937         #  @param theName Object name; when specified, this parameter is used
6938         #         for result publication in the study. Otherwise, if automatic
6939         #         publication is switched on, default value is used for result name.
6940         #
6941         #  @return New GEOM.GEOM_Object, containing processed shape.
6942         #
6943         #  @ref tui_suppress_internal_wires "Example"
6944         @ManageTransactions("HealOp")
6945         def SuppressInternalWires(self, theObject, theWires, theName=None):
6946             """
6947             Remove internal wires and edges from the given object (face).
6948
6949             Parameters:
6950                 theObject Shape to be processed.
6951                 theWires Indices of wires to be removed, if EMPTY then the method
6952                          removes ALL internal wires of the given object.
6953                 theName Object name; when specified, this parameter is used
6954                         for result publication in the study. Otherwise, if automatic
6955                         publication is switched on, default value is used for result name.
6956
6957             Returns:
6958                 New GEOM.GEOM_Object, containing processed shape.
6959             """
6960             # Example: see GEOM_TestHealing.py
6961             anObj = self.HealOp.RemoveIntWires(theObject, theWires)
6962             RaiseIfFailed("RemoveIntWires", self.HealOp)
6963             self._autoPublish(anObj, theName, "suppressWires")
6964             return anObj
6965
6966         ## Remove internal closed contours (holes) from the given object.
6967         #  @param theObject Shape to be processed.
6968         #  @param theWires Indices of wires to be removed, if EMPTY then the method
6969         #                  removes ALL internal holes of the given object
6970         #  @param theName Object name; when specified, this parameter is used
6971         #         for result publication in the study. Otherwise, if automatic
6972         #         publication is switched on, default value is used for result name.
6973         #
6974         #  @return New GEOM.GEOM_Object, containing processed shape.
6975         #
6976         #  @ref tui_suppress_holes "Example"
6977         @ManageTransactions("HealOp")
6978         def SuppressHoles(self, theObject, theWires, theName=None):
6979             """
6980             Remove internal closed contours (holes) from the given object.
6981
6982             Parameters:
6983                 theObject Shape to be processed.
6984                 theWires Indices of wires to be removed, if EMPTY then the method
6985                          removes ALL internal holes of the given object
6986                 theName Object name; when specified, this parameter is used
6987                         for result publication in the study. Otherwise, if automatic
6988                         publication is switched on, default value is used for result name.
6989
6990             Returns:
6991                 New GEOM.GEOM_Object, containing processed shape.
6992             """
6993             # Example: see GEOM_TestHealing.py
6994             anObj = self.HealOp.FillHoles(theObject, theWires)
6995             RaiseIfFailed("FillHoles", self.HealOp)
6996             self._autoPublish(anObj, theName, "suppressHoles")
6997             return anObj
6998
6999         ## Close an open wire.
7000         #  @param theObject Shape to be processed.
7001         #  @param theWires Indexes of edge(s) and wire(s) to be closed within <VAR>theObject</VAR>'s shape,
7002         #                  if [ ], then <VAR>theObject</VAR> itself is a wire.
7003         #  @param isCommonVertex If True  : closure by creation of a common vertex,
7004         #                        If False : closure by creation of an edge between ends.
7005         #  @param theName Object name; when specified, this parameter is used
7006         #         for result publication in the study. Otherwise, if automatic
7007         #         publication is switched on, default value is used for result name.
7008         #
7009         #  @return New GEOM.GEOM_Object, containing processed shape.
7010         #
7011         #  @ref tui_close_contour "Example"
7012         @ManageTransactions("HealOp")
7013         def CloseContour(self,theObject, theWires, isCommonVertex, theName=None):
7014             """
7015             Close an open wire.
7016
7017             Parameters:
7018                 theObject Shape to be processed.
7019                 theWires Indexes of edge(s) and wire(s) to be closed within theObject's shape,
7020                          if [ ], then theObject itself is a wire.
7021                 isCommonVertex If True  : closure by creation of a common vertex,
7022                                If False : closure by creation of an edge between ends.
7023                 theName Object name; when specified, this parameter is used
7024                         for result publication in the study. Otherwise, if automatic
7025                         publication is switched on, default value is used for result name.
7026
7027             Returns:
7028                 New GEOM.GEOM_Object, containing processed shape.
7029             """
7030             # Example: see GEOM_TestHealing.py
7031             anObj = self.HealOp.CloseContour(theObject, theWires, isCommonVertex)
7032             RaiseIfFailed("CloseContour", self.HealOp)
7033             self._autoPublish(anObj, theName, "closeContour")
7034             return anObj
7035
7036         ## Addition of a point to a given edge object.
7037         #  @param theObject Shape to be processed.
7038         #  @param theEdgeIndex Index of edge to be divided within theObject's shape,
7039         #                      if -1, then theObject itself is the edge.
7040         #  @param theValue Value of parameter on edge or length parameter,
7041         #                  depending on \a isByParameter.
7042         #  @param isByParameter If TRUE : \a theValue is treated as a curve parameter [0..1], \n
7043         #                       if FALSE : \a theValue is treated as a length parameter [0..1]
7044         #  @param theName Object name; when specified, this parameter is used
7045         #         for result publication in the study. Otherwise, if automatic
7046         #         publication is switched on, default value is used for result name.
7047         #
7048         #  @return New GEOM.GEOM_Object, containing processed shape.
7049         #
7050         #  @ref tui_add_point_on_edge "Example"
7051         @ManageTransactions("HealOp")
7052         def DivideEdge(self, theObject, theEdgeIndex, theValue, isByParameter, theName=None):
7053             """
7054             Addition of a point to a given edge object.
7055
7056             Parameters:
7057                 theObject Shape to be processed.
7058                 theEdgeIndex Index of edge to be divided within theObject's shape,
7059                              if -1, then theObject itself is the edge.
7060                 theValue Value of parameter on edge or length parameter,
7061                          depending on isByParameter.
7062                 isByParameter If TRUE :  theValue is treated as a curve parameter [0..1],
7063                               if FALSE : theValue is treated as a length parameter [0..1]
7064                 theName Object name; when specified, this parameter is used
7065                         for result publication in the study. Otherwise, if automatic
7066                         publication is switched on, default value is used for result name.
7067
7068             Returns:
7069                 New GEOM.GEOM_Object, containing processed shape.
7070             """
7071             # Example: see GEOM_TestHealing.py
7072             theEdgeIndex,theValue,isByParameter,Parameters = ParseParameters(theEdgeIndex,theValue,isByParameter)
7073             anObj = self.HealOp.DivideEdge(theObject, theEdgeIndex, theValue, isByParameter)
7074             RaiseIfFailed("DivideEdge", self.HealOp)
7075             anObj.SetParameters(Parameters)
7076             self._autoPublish(anObj, theName, "divideEdge")
7077             return anObj
7078
7079         ## Addition of points to a given edge of \a theObject by projecting
7080         #  other points to the given edge.
7081         #  @param theObject Shape to be processed.
7082         #  @param theEdgeIndex Index of edge to be divided within theObject's shape,
7083         #                      if -1, then theObject itself is the edge.
7084         #  @param thePoints List of points to project to theEdgeIndex-th edge.
7085         #  @param theName Object name; when specified, this parameter is used
7086         #         for result publication in the study. Otherwise, if automatic
7087         #         publication is switched on, default value is used for result name.
7088         #
7089         #  @return New GEOM.GEOM_Object, containing processed shape.
7090         #
7091         #  @ref tui_add_point_on_edge "Example"
7092         @ManageTransactions("HealOp")
7093         def DivideEdgeByPoint(self, theObject, theEdgeIndex, thePoints, theName=None):
7094             """
7095             Addition of points to a given edge of \a theObject by projecting
7096             other points to the given edge.
7097
7098             Parameters:
7099                 theObject Shape to be processed.
7100                 theEdgeIndex The edge or its index to be divided within theObject's shape,
7101                              if -1, then theObject itself is the edge.
7102                 thePoints List of points to project to theEdgeIndex-th edge.
7103                 theName Object name; when specified, this parameter is used
7104                         for result publication in the study. Otherwise, if automatic
7105                         publication is switched on, default value is used for result name.
7106
7107             Returns:
7108                 New GEOM.GEOM_Object, containing processed shape.
7109             """
7110             # Example: see GEOM_TestHealing.py
7111             if isinstance( theEdgeIndex, GEOM._objref_GEOM_Object ):
7112                 theEdgeIndex = self.GetSubShapeID( theObject, theEdgeIndex )
7113             anObj = self.HealOp.DivideEdgeByPoint(theObject, theEdgeIndex, ToList( thePoints ))
7114             RaiseIfFailed("DivideEdgeByPoint", self.HealOp)
7115             self._autoPublish(anObj, theName, "divideEdge")
7116             return anObj
7117
7118         ## Suppress the vertices in the wire in case if adjacent edges are C1 continuous.
7119         #  @param theWire Wire to minimize the number of C1 continuous edges in.
7120         #  @param theVertices A list of vertices to suppress. If the list
7121         #                     is empty, all vertices in a wire will be assumed.
7122         #  @param theName Object name; when specified, this parameter is used
7123         #         for result publication in the study. Otherwise, if automatic
7124         #         publication is switched on, default value is used for result name.
7125         #
7126         #  @return New GEOM.GEOM_Object with modified wire.
7127         #
7128         #  @ref tui_fuse_collinear_edges "Example"
7129         @ManageTransactions("HealOp")
7130         def FuseCollinearEdgesWithinWire(self, theWire, theVertices = [], theName=None):
7131             """
7132             Suppress the vertices in the wire in case if adjacent edges are C1 continuous.
7133
7134             Parameters:
7135                 theWire Wire to minimize the number of C1 continuous edges in.
7136                 theVertices A list of vertices to suppress. If the list
7137                             is empty, all vertices in a wire will be assumed.
7138                 theName Object name; when specified, this parameter is used
7139                         for result publication in the study. Otherwise, if automatic
7140                         publication is switched on, default value is used for result name.
7141
7142             Returns:
7143                 New GEOM.GEOM_Object with modified wire.
7144             """
7145             anObj = self.HealOp.FuseCollinearEdgesWithinWire(theWire, theVertices)
7146             RaiseIfFailed("FuseCollinearEdgesWithinWire", self.HealOp)
7147             self._autoPublish(anObj, theName, "fuseEdges")
7148             return anObj
7149
7150         ## Change orientation of the given object. Updates given shape.
7151         #  @param theObject Shape to be processed.
7152         #  @return Updated <var>theObject</var>
7153         #
7154         #  @ref swig_todo "Example"
7155         @ManageTransactions("HealOp")
7156         def ChangeOrientationShell(self,theObject):
7157             """
7158             Change orientation of the given object. Updates given shape.
7159
7160             Parameters:
7161                 theObject Shape to be processed.
7162
7163             Returns:
7164                 Updated theObject
7165             """
7166             theObject = self.HealOp.ChangeOrientation(theObject)
7167             RaiseIfFailed("ChangeOrientation", self.HealOp)
7168             pass
7169
7170         ## Change orientation of the given object.
7171         #  @param theObject Shape to be processed.
7172         #  @param theName Object name; when specified, this parameter is used
7173         #         for result publication in the study. Otherwise, if automatic
7174         #         publication is switched on, default value is used for result name.
7175         #
7176         #  @return New GEOM.GEOM_Object, containing processed shape.
7177         #
7178         #  @ref swig_todo "Example"
7179         @ManageTransactions("HealOp")
7180         def ChangeOrientationShellCopy(self, theObject, theName=None):
7181             """
7182             Change orientation of the given object.
7183
7184             Parameters:
7185                 theObject Shape to be processed.
7186                 theName Object name; when specified, this parameter is used
7187                         for result publication in the study. Otherwise, if automatic
7188                         publication is switched on, default value is used for result name.
7189
7190             Returns:
7191                 New GEOM.GEOM_Object, containing processed shape.
7192             """
7193             anObj = self.HealOp.ChangeOrientationCopy(theObject)
7194             RaiseIfFailed("ChangeOrientationCopy", self.HealOp)
7195             self._autoPublish(anObj, theName, "reversed")
7196             return anObj
7197
7198         ## Try to limit tolerance of the given object by value \a theTolerance.
7199         #  @param theObject Shape to be processed.
7200         #  @param theTolerance Required tolerance value.
7201         #  @param theName Object name; when specified, this parameter is used
7202         #         for result publication in the study. Otherwise, if automatic
7203         #         publication is switched on, default value is used for result name.
7204         #
7205         #  @return New GEOM.GEOM_Object, containing processed shape.
7206         #
7207         #  @ref tui_limit_tolerance "Example"
7208         @ManageTransactions("HealOp")
7209         def LimitTolerance(self, theObject, theTolerance = 1e-07, theName=None):
7210             """
7211             Try to limit tolerance of the given object by value theTolerance.
7212
7213             Parameters:
7214                 theObject Shape to be processed.
7215                 theTolerance Required tolerance value.
7216                 theName Object name; when specified, this parameter is used
7217                         for result publication in the study. Otherwise, if automatic
7218                         publication is switched on, default value is used for result name.
7219
7220             Returns:
7221                 New GEOM.GEOM_Object, containing processed shape.
7222             """
7223             anObj = self.HealOp.LimitTolerance(theObject, theTolerance)
7224             RaiseIfFailed("LimitTolerance", self.HealOp)
7225             self._autoPublish(anObj, theName, "limitTolerance")
7226             return anObj
7227
7228         ## Get a list of wires (wrapped in GEOM.GEOM_Object-s),
7229         #  that constitute a free boundary of the given shape.
7230         #  @param theObject Shape to get free boundary of.
7231         #  @param theName Object name; when specified, this parameter is used
7232         #         for result publication in the study. Otherwise, if automatic
7233         #         publication is switched on, default value is used for result name.
7234         #
7235         #  @return [\a status, \a theClosedWires, \a theOpenWires]
7236         #  \n \a status: FALSE, if an error(s) occured during the method execution.
7237         #  \n \a theClosedWires: Closed wires on the free boundary of the given shape.
7238         #  \n \a theOpenWires: Open wires on the free boundary of the given shape.
7239         #
7240         #  @ref tui_free_boundaries_page "Example"
7241         @ManageTransactions("HealOp")
7242         def GetFreeBoundary(self, theObject, theName=None):
7243             """
7244             Get a list of wires (wrapped in GEOM.GEOM_Object-s),
7245             that constitute a free boundary of the given shape.
7246
7247             Parameters:
7248                 theObject Shape to get free boundary of.
7249                 theName Object name; when specified, this parameter is used
7250                         for result publication in the study. Otherwise, if automatic
7251                         publication is switched on, default value is used for result name.
7252
7253             Returns:
7254                 [status, theClosedWires, theOpenWires]
7255                  status: FALSE, if an error(s) occured during the method execution.
7256                  theClosedWires: Closed wires on the free boundary of the given shape.
7257                  theOpenWires: Open wires on the free boundary of the given shape.
7258             """
7259             # Example: see GEOM_TestHealing.py
7260             anObj = self.HealOp.GetFreeBoundary( ToList( theObject ))
7261             RaiseIfFailed("GetFreeBoundary", self.HealOp)
7262             self._autoPublish(anObj[1], theName, "closedWire")
7263             self._autoPublish(anObj[2], theName, "openWire")
7264             return anObj
7265
7266         ## Replace coincident faces in \a theShapes by one face.
7267         #  @param theShapes Initial shapes, either a list or compound of shapes.
7268         #  @param theTolerance Maximum distance between faces, which can be considered as coincident.
7269         #  @param doKeepNonSolids If FALSE, only solids will present in the result,
7270         #                         otherwise all initial shapes.
7271         #  @param theName Object name; when specified, this parameter is used
7272         #         for result publication in the study. Otherwise, if automatic
7273         #         publication is switched on, default value is used for result name.
7274         #
7275         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7276         #
7277         #  @ref tui_glue_faces "Example"
7278         @ManageTransactions("ShapesOp")
7279         def MakeGlueFaces(self, theShapes, theTolerance, doKeepNonSolids=True, theName=None):
7280             """
7281             Replace coincident faces in theShapes by one face.
7282
7283             Parameters:
7284                 theShapes Initial shapes, either a list or compound of shapes.
7285                 theTolerance Maximum distance between faces, which can be considered as coincident.
7286                 doKeepNonSolids If FALSE, only solids will present in the result,
7287                                 otherwise all initial shapes.
7288                 theName Object name; when specified, this parameter is used
7289                         for result publication in the study. Otherwise, if automatic
7290                         publication is switched on, default value is used for result name.
7291
7292             Returns:
7293                 New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7294             """
7295             # Example: see GEOM_Spanner.py
7296             theTolerance,Parameters = ParseParameters(theTolerance)
7297             anObj = self.ShapesOp.MakeGlueFaces(ToList(theShapes), theTolerance, doKeepNonSolids)
7298             if anObj is None:
7299                 raise RuntimeError, "MakeGlueFaces : " + self.ShapesOp.GetErrorCode()
7300             anObj.SetParameters(Parameters)
7301             self._autoPublish(anObj, theName, "glueFaces")
7302             return anObj
7303
7304         ## Find coincident faces in \a theShapes for possible gluing.
7305         #  @param theShapes Initial shapes, either a list or compound of shapes.
7306         #  @param theTolerance Maximum distance between faces,
7307         #                      which can be considered as coincident.
7308         #  @param theName Object name; when specified, this parameter is used
7309         #         for result publication in the study. Otherwise, if automatic
7310         #         publication is switched on, default value is used for result name.
7311         #
7312         #  @return GEOM.ListOfGO
7313         #
7314         #  @ref tui_glue_faces "Example"
7315         @ManageTransactions("ShapesOp")
7316         def GetGlueFaces(self, theShapes, theTolerance, theName=None):
7317             """
7318             Find coincident faces in theShapes for possible gluing.
7319
7320             Parameters:
7321                 theShapes Initial shapes, either a list or compound of shapes.
7322                 theTolerance Maximum distance between faces,
7323                              which can be considered as coincident.
7324                 theName Object name; when specified, this parameter is used
7325                         for result publication in the study. Otherwise, if automatic
7326                         publication is switched on, default value is used for result name.
7327
7328             Returns:
7329                 GEOM.ListOfGO
7330             """
7331             anObj = self.ShapesOp.GetGlueFaces(ToList(theShapes), theTolerance)
7332             RaiseIfFailed("GetGlueFaces", self.ShapesOp)
7333             self._autoPublish(anObj, theName, "facesToGlue")
7334             return anObj
7335
7336         ## Replace coincident faces in \a theShapes by one face
7337         #  in compliance with given list of faces
7338         #  @param theShapes Initial shapes, either a list or compound of shapes.
7339         #  @param theTolerance Maximum distance between faces,
7340         #                      which can be considered as coincident.
7341         #  @param theFaces List of faces for gluing.
7342         #  @param doKeepNonSolids If FALSE, only solids will present in the result,
7343         #                         otherwise all initial shapes.
7344         #  @param doGlueAllEdges If TRUE, all coincident edges of <VAR>theShape</VAR>
7345         #                        will be glued, otherwise only the edges,
7346         #                        belonging to <VAR>theFaces</VAR>.
7347         #  @param theName Object name; when specified, this parameter is used
7348         #         for result publication in the study. Otherwise, if automatic
7349         #         publication is switched on, default value is used for result name.
7350         #
7351         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7352         #
7353         #  @ref tui_glue_faces "Example"
7354         @ManageTransactions("ShapesOp")
7355         def MakeGlueFacesByList(self, theShapes, theTolerance, theFaces,
7356                                 doKeepNonSolids=True, doGlueAllEdges=True, theName=None):
7357             """
7358             Replace coincident faces in theShapes by one face
7359             in compliance with given list of faces
7360
7361             Parameters:
7362                 theShapes theShapes Initial shapes, either a list or compound of shapes.
7363                 theTolerance Maximum distance between faces,
7364                              which can be considered as coincident.
7365                 theFaces List of faces for gluing.
7366                 doKeepNonSolids If FALSE, only solids will present in the result,
7367                                 otherwise all initial shapes.
7368                 doGlueAllEdges If TRUE, all coincident edges of theShape
7369                                will be glued, otherwise only the edges,
7370                                belonging to theFaces.
7371                 theName Object name; when specified, this parameter is used
7372                         for result publication in the study. Otherwise, if automatic
7373                         publication is switched on, default value is used for result name.
7374
7375             Returns:
7376                 New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7377             """
7378             anObj = self.ShapesOp.MakeGlueFacesByList(ToList(theShapes), theTolerance, theFaces,
7379                                                       doKeepNonSolids, doGlueAllEdges)
7380             if anObj is None:
7381                 raise RuntimeError, "MakeGlueFacesByList : " + self.ShapesOp.GetErrorCode()
7382             self._autoPublish(anObj, theName, "glueFaces")
7383             return anObj
7384
7385         ## Replace coincident edges in \a theShapes by one edge.
7386         #  @param theShapes Initial shapes, either a list or compound of shapes.
7387         #  @param theTolerance Maximum distance between edges, which can be considered as coincident.
7388         #  @param theName Object name; when specified, this parameter is used
7389         #         for result publication in the study. Otherwise, if automatic
7390         #         publication is switched on, default value is used for result name.
7391         #
7392         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7393         #
7394         #  @ref tui_glue_edges "Example"
7395         @ManageTransactions("ShapesOp")
7396         def MakeGlueEdges(self, theShapes, theTolerance, theName=None):
7397             """
7398             Replace coincident edges in theShapes by one edge.
7399
7400             Parameters:
7401                 theShapes Initial shapes, either a list or compound of shapes.
7402                 theTolerance Maximum distance between edges, which can be considered as coincident.
7403                 theName Object name; when specified, this parameter is used
7404                         for result publication in the study. Otherwise, if automatic
7405                         publication is switched on, default value is used for result name.
7406
7407             Returns:
7408                 New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7409             """
7410             theTolerance,Parameters = ParseParameters(theTolerance)
7411             anObj = self.ShapesOp.MakeGlueEdges(ToList(theShapes), theTolerance)
7412             if anObj is None:
7413                 raise RuntimeError, "MakeGlueEdges : " + self.ShapesOp.GetErrorCode()
7414             anObj.SetParameters(Parameters)
7415             self._autoPublish(anObj, theName, "glueEdges")
7416             return anObj
7417
7418         ## Find coincident edges in \a theShapes for possible gluing.
7419         #  @param theShapes Initial shapes, either a list or compound of shapes.
7420         #  @param theTolerance Maximum distance between edges,
7421         #                      which can be considered as coincident.
7422         #  @param theName Object name; when specified, this parameter is used
7423         #         for result publication in the study. Otherwise, if automatic
7424         #         publication is switched on, default value is used for result name.
7425         #
7426         #  @return GEOM.ListOfGO
7427         #
7428         #  @ref tui_glue_edges "Example"
7429         @ManageTransactions("ShapesOp")
7430         def GetGlueEdges(self, theShapes, theTolerance, theName=None):
7431             """
7432             Find coincident edges in theShapes for possible gluing.
7433
7434             Parameters:
7435                 theShapes Initial shapes, either a list or compound of shapes.
7436                 theTolerance Maximum distance between edges,
7437                              which can be considered as coincident.
7438                 theName Object name; when specified, this parameter is used
7439                         for result publication in the study. Otherwise, if automatic
7440                         publication is switched on, default value is used for result name.
7441
7442             Returns:
7443                 GEOM.ListOfGO
7444             """
7445             anObj = self.ShapesOp.GetGlueEdges(ToList(theShapes), theTolerance)
7446             RaiseIfFailed("GetGlueEdges", self.ShapesOp)
7447             self._autoPublish(anObj, theName, "edgesToGlue")
7448             return anObj
7449
7450         ## Replace coincident edges in theShapes by one edge
7451         #  in compliance with given list of edges.
7452         #  @param theShapes Initial shapes, either a list or compound of shapes.
7453         #  @param theTolerance Maximum distance between edges,
7454         #                      which can be considered as coincident.
7455         #  @param theEdges List of edges for gluing.
7456         #  @param theName Object name; when specified, this parameter is used
7457         #         for result publication in the study. Otherwise, if automatic
7458         #         publication is switched on, default value is used for result name.
7459         #
7460         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7461         #
7462         #  @ref tui_glue_edges "Example"
7463         @ManageTransactions("ShapesOp")
7464         def MakeGlueEdgesByList(self, theShapes, theTolerance, theEdges, theName=None):
7465             """
7466             Replace coincident edges in theShapes by one edge
7467             in compliance with given list of edges.
7468
7469             Parameters:
7470                 theShapes Initial shapes, either a list or compound of shapes.
7471                 theTolerance Maximum distance between edges,
7472                              which can be considered as coincident.
7473                 theEdges List of edges for gluing.
7474                 theName Object name; when specified, this parameter is used
7475                         for result publication in the study. Otherwise, if automatic
7476                         publication is switched on, default value is used for result name.
7477
7478             Returns:
7479                 New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7480             """
7481             anObj = self.ShapesOp.MakeGlueEdgesByList(ToList(theShapes), theTolerance, theEdges)
7482             if anObj is None:
7483                 raise RuntimeError, "MakeGlueEdgesByList : " + self.ShapesOp.GetErrorCode()
7484             self._autoPublish(anObj, theName, "glueEdges")
7485             return anObj
7486
7487         # end of l3_healing
7488         ## @}
7489
7490         ## @addtogroup l3_boolean Boolean Operations
7491         ## @{
7492
7493         # -----------------------------------------------------------------------------
7494         # Boolean (Common, Cut, Fuse, Section)
7495         # -----------------------------------------------------------------------------
7496
7497         ## Perform one of boolean operations on two given shapes.
7498         #  @param theShape1 First argument for boolean operation.
7499         #  @param theShape2 Second argument for boolean operation.
7500         #  @param theOperation Indicates the operation to be done:\n
7501         #                      1 - Common, 2 - Cut, 3 - Fuse, 4 - Section.
7502         #  @param checkSelfInte The flag that tells if the arguments should
7503         #         be checked for self-intersection prior to the operation.
7504         #  @param theName Object name; when specified, this parameter is used
7505         #         for result publication in the study. Otherwise, if automatic
7506         #         publication is switched on, default value is used for result name.
7507         #
7508         #  @note This algorithm doesn't find all types of self-intersections.
7509         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7510         #        vertex/face and edge/face intersections. Face/face
7511         #        intersections detection is switched off as it is a
7512         #        time-consuming operation that gives an impact on performance.
7513         #        To find all self-intersections please use
7514         #        CheckSelfIntersections() method.
7515         #
7516         #  @return New GEOM.GEOM_Object, containing the result shape.
7517         #
7518         #  @ref tui_fuse "Example"
7519         @ManageTransactions("BoolOp")
7520         def MakeBoolean(self, theShape1, theShape2, theOperation, checkSelfInte=False, theName=None):
7521             """
7522             Perform one of boolean operations on two given shapes.
7523
7524             Parameters:
7525                 theShape1 First argument for boolean operation.
7526                 theShape2 Second argument for boolean operation.
7527                 theOperation Indicates the operation to be done:
7528                              1 - Common, 2 - Cut, 3 - Fuse, 4 - Section.
7529                 checkSelfInte The flag that tells if the arguments should
7530                               be checked for self-intersection prior to
7531                               the operation.
7532                 theName Object name; when specified, this parameter is used
7533                         for result publication in the study. Otherwise, if automatic
7534                         publication is switched on, default value is used for result name.
7535
7536             Note:
7537                     This algorithm doesn't find all types of self-intersections.
7538                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7539                     vertex/face and edge/face intersections. Face/face
7540                     intersections detection is switched off as it is a
7541                     time-consuming operation that gives an impact on performance.
7542                     To find all self-intersections please use
7543                     CheckSelfIntersections() method.
7544
7545             Returns:
7546                 New GEOM.GEOM_Object, containing the result shape.
7547             """
7548             # Example: see GEOM_TestAll.py
7549             anObj = self.BoolOp.MakeBoolean(theShape1, theShape2, theOperation, checkSelfInte)
7550             RaiseIfFailed("MakeBoolean", self.BoolOp)
7551             def_names = { 1: "common", 2: "cut", 3: "fuse", 4: "section" }
7552             self._autoPublish(anObj, theName, def_names[theOperation])
7553             return anObj
7554
7555         ## Perform Common boolean operation on two given shapes.
7556         #  @param theShape1 First argument for boolean operation.
7557         #  @param theShape2 Second argument for boolean operation.
7558         #  @param checkSelfInte The flag that tells if the arguments should
7559         #         be checked for self-intersection prior to the operation.
7560         #  @param theName Object name; when specified, this parameter is used
7561         #         for result publication in the study. Otherwise, if automatic
7562         #         publication is switched on, default value is used for result name.
7563         #
7564         #  @note This algorithm doesn't find all types of self-intersections.
7565         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7566         #        vertex/face and edge/face intersections. Face/face
7567         #        intersections detection is switched off as it is a
7568         #        time-consuming operation that gives an impact on performance.
7569         #        To find all self-intersections please use
7570         #        CheckSelfIntersections() method.
7571         #
7572         #  @return New GEOM.GEOM_Object, containing the result shape.
7573         #
7574         #  @ref tui_common "Example 1"
7575         #  \n @ref swig_MakeCommon "Example 2"
7576         def MakeCommon(self, theShape1, theShape2, checkSelfInte=False, theName=None):
7577             """
7578             Perform Common boolean operation on two given shapes.
7579
7580             Parameters:
7581                 theShape1 First argument for boolean operation.
7582                 theShape2 Second argument for boolean operation.
7583                 checkSelfInte The flag that tells if the arguments should
7584                               be checked for self-intersection prior to
7585                               the operation.
7586                 theName Object name; when specified, this parameter is used
7587                         for result publication in the study. Otherwise, if automatic
7588                         publication is switched on, default value is used for result name.
7589
7590             Note:
7591                     This algorithm doesn't find all types of self-intersections.
7592                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7593                     vertex/face and edge/face intersections. Face/face
7594                     intersections detection is switched off as it is a
7595                     time-consuming operation that gives an impact on performance.
7596                     To find all self-intersections please use
7597                     CheckSelfIntersections() method.
7598
7599             Returns:
7600                 New GEOM.GEOM_Object, containing the result shape.
7601             """
7602             # Example: see GEOM_TestOthers.py
7603             # note: auto-publishing is done in self.MakeBoolean()
7604             return self.MakeBoolean(theShape1, theShape2, 1, checkSelfInte, theName)
7605
7606         ## Perform Cut boolean operation on two given shapes.
7607         #  @param theShape1 First argument for boolean operation.
7608         #  @param theShape2 Second argument for boolean operation.
7609         #  @param checkSelfInte The flag that tells if the arguments should
7610         #         be checked for self-intersection prior to the operation.
7611         #  @param theName Object name; when specified, this parameter is used
7612         #         for result publication in the study. Otherwise, if automatic
7613         #         publication is switched on, default value is used for result name.
7614         #
7615         #  @note This algorithm doesn't find all types of self-intersections.
7616         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7617         #        vertex/face and edge/face intersections. Face/face
7618         #        intersections detection is switched off as it is a
7619         #        time-consuming operation that gives an impact on performance.
7620         #        To find all self-intersections please use
7621         #        CheckSelfIntersections() method.
7622         #
7623         #  @return New GEOM.GEOM_Object, containing the result shape.
7624         #
7625         #  @ref tui_cut "Example 1"
7626         #  \n @ref swig_MakeCommon "Example 2"
7627         def MakeCut(self, theShape1, theShape2, checkSelfInte=False, theName=None):
7628             """
7629             Perform Cut boolean operation on two given shapes.
7630
7631             Parameters:
7632                 theShape1 First argument for boolean operation.
7633                 theShape2 Second argument for boolean operation.
7634                 checkSelfInte The flag that tells if the arguments should
7635                               be checked for self-intersection prior to
7636                               the operation.
7637                 theName Object name; when specified, this parameter is used
7638                         for result publication in the study. Otherwise, if automatic
7639                         publication is switched on, default value is used for result name.
7640
7641             Note:
7642                     This algorithm doesn't find all types of self-intersections.
7643                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7644                     vertex/face and edge/face intersections. Face/face
7645                     intersections detection is switched off as it is a
7646                     time-consuming operation that gives an impact on performance.
7647                     To find all self-intersections please use
7648                     CheckSelfIntersections() method.
7649
7650             Returns:
7651                 New GEOM.GEOM_Object, containing the result shape.
7652
7653             """
7654             # Example: see GEOM_TestOthers.py
7655             # note: auto-publishing is done in self.MakeBoolean()
7656             return self.MakeBoolean(theShape1, theShape2, 2, checkSelfInte, theName)
7657
7658         ## Perform Fuse boolean operation on two given shapes.
7659         #  @param theShape1 First argument for boolean operation.
7660         #  @param theShape2 Second argument for boolean operation.
7661         #  @param checkSelfInte The flag that tells if the arguments should
7662         #         be checked for self-intersection prior to the operation.
7663         #  @param rmExtraEdges The flag that tells if Remove Extra Edges
7664         #         operation should be performed during the operation.
7665         #  @param theName Object name; when specified, this parameter is used
7666         #         for result publication in the study. Otherwise, if automatic
7667         #         publication is switched on, default value is used for result name.
7668         #
7669         #  @note This algorithm doesn't find all types of self-intersections.
7670         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7671         #        vertex/face and edge/face intersections. Face/face
7672         #        intersections detection is switched off as it is a
7673         #        time-consuming operation that gives an impact on performance.
7674         #        To find all self-intersections please use
7675         #        CheckSelfIntersections() method.
7676         #
7677         #  @return New GEOM.GEOM_Object, containing the result shape.
7678         #
7679         #  @ref tui_fuse "Example 1"
7680         #  \n @ref swig_MakeCommon "Example 2"
7681         @ManageTransactions("BoolOp")
7682         def MakeFuse(self, theShape1, theShape2, checkSelfInte=False,
7683                      rmExtraEdges=False, theName=None):
7684             """
7685             Perform Fuse boolean operation on two given shapes.
7686
7687             Parameters:
7688                 theShape1 First argument for boolean operation.
7689                 theShape2 Second argument for boolean operation.
7690                 checkSelfInte The flag that tells if the arguments should
7691                               be checked for self-intersection prior to
7692                               the operation.
7693                 rmExtraEdges The flag that tells if Remove Extra Edges
7694                              operation should be performed during the operation.
7695                 theName Object name; when specified, this parameter is used
7696                         for result publication in the study. Otherwise, if automatic
7697                         publication is switched on, default value is used for result name.
7698
7699             Note:
7700                     This algorithm doesn't find all types of self-intersections.
7701                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7702                     vertex/face and edge/face intersections. Face/face
7703                     intersections detection is switched off as it is a
7704                     time-consuming operation that gives an impact on performance.
7705                     To find all self-intersections please use
7706                     CheckSelfIntersections() method.
7707
7708             Returns:
7709                 New GEOM.GEOM_Object, containing the result shape.
7710
7711             """
7712             # Example: see GEOM_TestOthers.py
7713             anObj = self.BoolOp.MakeFuse(theShape1, theShape2,
7714                                          checkSelfInte, rmExtraEdges)
7715             RaiseIfFailed("MakeFuse", self.BoolOp)
7716             self._autoPublish(anObj, theName, "fuse")
7717             return anObj
7718
7719         ## Perform Section boolean operation on two given shapes.
7720         #  @param theShape1 First argument for boolean operation.
7721         #  @param theShape2 Second argument for boolean operation.
7722         #  @param checkSelfInte The flag that tells if the arguments should
7723         #         be checked for self-intersection prior to the operation.
7724         #         If a self-intersection detected the operation fails.
7725         #  @param theName Object name; when specified, this parameter is used
7726         #         for result publication in the study. Otherwise, if automatic
7727         #         publication is switched on, default value is used for result name.
7728         #  @return New GEOM.GEOM_Object, containing the result shape.
7729         #
7730         #  @ref tui_section "Example 1"
7731         #  \n @ref swig_MakeCommon "Example 2"
7732         def MakeSection(self, theShape1, theShape2, checkSelfInte=False, theName=None):
7733             """
7734             Perform Section boolean operation on two given shapes.
7735
7736             Parameters:
7737                 theShape1 First argument for boolean operation.
7738                 theShape2 Second argument for boolean operation.
7739                 checkSelfInte The flag that tells if the arguments should
7740                               be checked for self-intersection prior to the operation.
7741                               If a self-intersection detected the operation fails.
7742                 theName Object name; when specified, this parameter is used
7743                         for result publication in the study. Otherwise, if automatic
7744                         publication is switched on, default value is used for result name.
7745             Returns:
7746                 New GEOM.GEOM_Object, containing the result shape.
7747
7748             """
7749             # Example: see GEOM_TestOthers.py
7750             # note: auto-publishing is done in self.MakeBoolean()
7751             return self.MakeBoolean(theShape1, theShape2, 4, checkSelfInte, theName)
7752
7753         ## Perform Fuse boolean operation on the list of shapes.
7754         #  @param theShapesList Shapes to be fused.
7755         #  @param checkSelfInte The flag that tells if the arguments should
7756         #         be checked for self-intersection prior to the operation.
7757         #  @param rmExtraEdges The flag that tells if Remove Extra Edges
7758         #         operation should be performed during the operation.
7759         #  @param theName Object name; when specified, this parameter is used
7760         #         for result publication in the study. Otherwise, if automatic
7761         #         publication is switched on, default value is used for result name.
7762         #
7763         #  @note This algorithm doesn't find all types of self-intersections.
7764         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7765         #        vertex/face and edge/face intersections. Face/face
7766         #        intersections detection is switched off as it is a
7767         #        time-consuming operation that gives an impact on performance.
7768         #        To find all self-intersections please use
7769         #        CheckSelfIntersections() method.
7770         #
7771         #  @return New GEOM.GEOM_Object, containing the result shape.
7772         #
7773         #  @ref tui_fuse "Example 1"
7774         #  \n @ref swig_MakeCommon "Example 2"
7775         @ManageTransactions("BoolOp")
7776         def MakeFuseList(self, theShapesList, checkSelfInte=False,
7777                          rmExtraEdges=False, theName=None):
7778             """
7779             Perform Fuse boolean operation on the list of shapes.
7780
7781             Parameters:
7782                 theShapesList Shapes to be fused.
7783                 checkSelfInte The flag that tells if the arguments should
7784                               be checked for self-intersection prior to
7785                               the operation.
7786                 rmExtraEdges The flag that tells if Remove Extra Edges
7787                              operation should be performed during the operation.
7788                 theName Object name; when specified, this parameter is used
7789                         for result publication in the study. Otherwise, if automatic
7790                         publication is switched on, default value is used for result name.
7791
7792             Note:
7793                     This algorithm doesn't find all types of self-intersections.
7794                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7795                     vertex/face and edge/face intersections. Face/face
7796                     intersections detection is switched off as it is a
7797                     time-consuming operation that gives an impact on performance.
7798                     To find all self-intersections please use
7799                     CheckSelfIntersections() method.
7800
7801             Returns:
7802                 New GEOM.GEOM_Object, containing the result shape.
7803
7804             """
7805             # Example: see GEOM_TestOthers.py
7806             anObj = self.BoolOp.MakeFuseList(theShapesList, checkSelfInte,
7807                                              rmExtraEdges)
7808             RaiseIfFailed("MakeFuseList", self.BoolOp)
7809             self._autoPublish(anObj, theName, "fuse")
7810             return anObj
7811
7812         ## Perform Common boolean operation on the list of shapes.
7813         #  @param theShapesList Shapes for Common operation.
7814         #  @param checkSelfInte The flag that tells if the arguments should
7815         #         be checked for self-intersection prior to the operation.
7816         #  @param theName Object name; when specified, this parameter is used
7817         #         for result publication in the study. Otherwise, if automatic
7818         #         publication is switched on, default value is used for result name.
7819         #
7820         #  @note This algorithm doesn't find all types of self-intersections.
7821         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7822         #        vertex/face and edge/face intersections. Face/face
7823         #        intersections detection is switched off as it is a
7824         #        time-consuming operation that gives an impact on performance.
7825         #        To find all self-intersections please use
7826         #        CheckSelfIntersections() method.
7827         #
7828         #  @return New GEOM.GEOM_Object, containing the result shape.
7829         #
7830         #  @ref tui_common "Example 1"
7831         #  \n @ref swig_MakeCommon "Example 2"
7832         @ManageTransactions("BoolOp")
7833         def MakeCommonList(self, theShapesList, checkSelfInte=False, theName=None):
7834             """
7835             Perform Common boolean operation on the list of shapes.
7836
7837             Parameters:
7838                 theShapesList Shapes for Common operation.
7839                 checkSelfInte The flag that tells if the arguments should
7840                               be checked for self-intersection prior to
7841                               the operation.
7842                 theName Object name; when specified, this parameter is used
7843                         for result publication in the study. Otherwise, if automatic
7844                         publication is switched on, default value is used for result name.
7845
7846             Note:
7847                     This algorithm doesn't find all types of self-intersections.
7848                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7849                     vertex/face and edge/face intersections. Face/face
7850                     intersections detection is switched off as it is a
7851                     time-consuming operation that gives an impact on performance.
7852                     To find all self-intersections please use
7853                     CheckSelfIntersections() method.
7854
7855             Returns:
7856                 New GEOM.GEOM_Object, containing the result shape.
7857
7858             """
7859             # Example: see GEOM_TestOthers.py
7860             anObj = self.BoolOp.MakeCommonList(theShapesList, checkSelfInte)
7861             RaiseIfFailed("MakeCommonList", self.BoolOp)
7862             self._autoPublish(anObj, theName, "common")
7863             return anObj
7864
7865         ## Perform Cut boolean operation on one object and the list of tools.
7866         #  @param theMainShape The object of the operation.
7867         #  @param theShapesList The list of tools of the operation.
7868         #  @param checkSelfInte The flag that tells if the arguments should
7869         #         be checked for self-intersection prior to the operation.
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         #
7874         #  @note This algorithm doesn't find all types of self-intersections.
7875         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7876         #        vertex/face and edge/face intersections. Face/face
7877         #        intersections detection is switched off as it is a
7878         #        time-consuming operation that gives an impact on performance.
7879         #        To find all self-intersections please use
7880         #        CheckSelfIntersections() method.
7881         #
7882         #  @return New GEOM.GEOM_Object, containing the result shape.
7883         #
7884         #  @ref tui_cut "Example 1"
7885         #  \n @ref swig_MakeCommon "Example 2"
7886         @ManageTransactions("BoolOp")
7887         def MakeCutList(self, theMainShape, theShapesList, checkSelfInte=False, theName=None):
7888             """
7889             Perform Cut boolean operation on one object and the list of tools.
7890
7891             Parameters:
7892                 theMainShape The object of the operation.
7893                 theShapesList The list of tools of the operation.
7894                 checkSelfInte The flag that tells if the arguments should
7895                               be checked for self-intersection prior to
7896                               the operation.
7897                 theName Object name; when specified, this parameter is used
7898                         for result publication in the study. Otherwise, if automatic
7899                         publication is switched on, default value is used for result name.
7900
7901             Note:
7902                     This algorithm doesn't find all types of self-intersections.
7903                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7904                     vertex/face and edge/face intersections. Face/face
7905                     intersections detection is switched off as it is a
7906                     time-consuming operation that gives an impact on performance.
7907                     To find all self-intersections please use
7908                     CheckSelfIntersections() method.
7909
7910             Returns:
7911                 New GEOM.GEOM_Object, containing the result shape.
7912
7913             """
7914             # Example: see GEOM_TestOthers.py
7915             anObj = self.BoolOp.MakeCutList(theMainShape, theShapesList, checkSelfInte)
7916             RaiseIfFailed("MakeCutList", self.BoolOp)
7917             self._autoPublish(anObj, theName, "cut")
7918             return anObj
7919
7920         # end of l3_boolean
7921         ## @}
7922
7923         ## @addtogroup l3_basic_op
7924         ## @{
7925
7926         ## Perform partition operation.
7927         #  @param ListShapes Shapes to be intersected.
7928         #  @param ListTools Shapes to intersect theShapes.
7929         #  @param Limit Type of resulting shapes (see ShapeType()).\n
7930         #         If this parameter is set to -1 ("Auto"), most appropriate shape limit
7931         #         type will be detected automatically.
7932         #  @param KeepNonlimitShapes if this parameter == 0, then only shapes of
7933         #                             target type (equal to Limit) are kept in the result,
7934         #                             else standalone shapes of lower dimension
7935         #                             are kept also (if they exist).
7936         #
7937         #  @param theName Object name; when specified, this parameter is used
7938         #         for result publication in the study. Otherwise, if automatic
7939         #         publication is switched on, default value is used for result name.
7940         #
7941         #  @note Each compound from ListShapes and ListTools will be exploded
7942         #        in order to avoid possible intersection between shapes from this compound.
7943         #
7944         #  After implementation new version of PartitionAlgo (October 2006)
7945         #  other parameters are ignored by current functionality. They are kept
7946         #  in this function only for support old versions.
7947         #      @param ListKeepInside Shapes, outside which the results will be deleted.
7948         #         Each shape from theKeepInside must belong to theShapes also.
7949         #      @param ListRemoveInside Shapes, inside which the results will be deleted.
7950         #         Each shape from theRemoveInside must belong to theShapes also.
7951         #      @param RemoveWebs If TRUE, perform Glue 3D algorithm.
7952         #      @param ListMaterials Material indices for each shape. Make sence,
7953         #         only if theRemoveWebs is TRUE.
7954         #
7955         #  @return New GEOM.GEOM_Object, containing the result shapes.
7956         #
7957         #  @ref tui_partition "Example"
7958         @ManageTransactions("BoolOp")
7959         def MakePartition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
7960                           Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[],
7961                           KeepNonlimitShapes=0, theName=None):
7962             """
7963             Perform partition operation.
7964
7965             Parameters:
7966                 ListShapes Shapes to be intersected.
7967                 ListTools Shapes to intersect theShapes.
7968                 Limit Type of resulting shapes (see geompy.ShapeType)
7969                       If this parameter is set to -1 ("Auto"), most appropriate shape limit
7970                       type will be detected automatically.
7971                 KeepNonlimitShapes if this parameter == 0, then only shapes of
7972                                     target type (equal to Limit) are kept in the result,
7973                                     else standalone shapes of lower dimension
7974                                     are kept also (if they exist).
7975
7976                 theName Object name; when specified, this parameter is used
7977                         for result publication in the study. Otherwise, if automatic
7978                         publication is switched on, default value is used for result name.
7979             Note:
7980                     Each compound from ListShapes and ListTools will be exploded
7981                     in order to avoid possible intersection between shapes from
7982                     this compound.
7983
7984             After implementation new version of PartitionAlgo (October 2006) other
7985             parameters are ignored by current functionality. They are kept in this
7986             function only for support old versions.
7987
7988             Ignored parameters:
7989                 ListKeepInside Shapes, outside which the results will be deleted.
7990                                Each shape from theKeepInside must belong to theShapes also.
7991                 ListRemoveInside Shapes, inside which the results will be deleted.
7992                                  Each shape from theRemoveInside must belong to theShapes also.
7993                 RemoveWebs If TRUE, perform Glue 3D algorithm.
7994                 ListMaterials Material indices for each shape. Make sence, only if theRemoveWebs is TRUE.
7995
7996             Returns:
7997                 New GEOM.GEOM_Object, containing the result shapes.
7998             """
7999             # Example: see GEOM_TestAll.py
8000             if Limit == self.ShapeType["AUTO"]:
8001                 # automatic detection of the most appropriate shape limit type
8002                 lim = GEOM.SHAPE
8003                 for s in ListShapes: lim = min( lim, s.GetMaxShapeType() )
8004                 Limit = EnumToLong(lim)
8005                 pass
8006             anObj = self.BoolOp.MakePartition(ListShapes, ListTools,
8007                                               ListKeepInside, ListRemoveInside,
8008                                               Limit, RemoveWebs, ListMaterials,
8009                                               KeepNonlimitShapes);
8010             RaiseIfFailed("MakePartition", self.BoolOp)
8011             self._autoPublish(anObj, theName, "partition")
8012             return anObj
8013
8014         ## Perform partition operation.
8015         #  This method may be useful if it is needed to make a partition for
8016         #  compound contains nonintersected shapes. Performance will be better
8017         #  since intersection between shapes from compound is not performed.
8018         #
8019         #  Description of all parameters as in previous method MakePartition().
8020         #  One additional parameter is provided:
8021         #  @param checkSelfInte The flag that tells if the arguments should
8022         #         be checked for self-intersection prior to the operation.
8023         #
8024         #  @note This algorithm doesn't find all types of self-intersections.
8025         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8026         #        vertex/face and edge/face intersections. Face/face
8027         #        intersections detection is switched off as it is a
8028         #        time-consuming operation that gives an impact on performance.
8029         #        To find all self-intersections please use
8030         #        CheckSelfIntersections() method.
8031         #
8032         #  @note Passed compounds (via ListShapes or via ListTools)
8033         #           have to consist of nonintersecting shapes.
8034         #
8035         #  @return New GEOM.GEOM_Object, containing the result shapes.
8036         #
8037         #  @ref swig_todo "Example"
8038         @ManageTransactions("BoolOp")
8039         def MakePartitionNonSelfIntersectedShape(self, ListShapes, ListTools=[],
8040                                                  ListKeepInside=[], ListRemoveInside=[],
8041                                                  Limit=ShapeType["AUTO"], RemoveWebs=0,
8042                                                  ListMaterials=[], KeepNonlimitShapes=0,
8043                                                  checkSelfInte=False, theName=None):
8044             """
8045             Perform partition operation.
8046             This method may be useful if it is needed to make a partition for
8047             compound contains nonintersected shapes. Performance will be better
8048             since intersection between shapes from compound is not performed.
8049
8050             Parameters:
8051                 Description of all parameters as in method geompy.MakePartition.
8052                 One additional parameter is provided:
8053                 checkSelfInte The flag that tells if the arguments should
8054                               be checked for self-intersection prior to
8055                               the operation.
8056
8057             Note:
8058                     This algorithm doesn't find all types of self-intersections.
8059                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8060                     vertex/face and edge/face intersections. Face/face
8061                     intersections detection is switched off as it is a
8062                     time-consuming operation that gives an impact on performance.
8063                     To find all self-intersections please use
8064                     CheckSelfIntersections() method.
8065
8066             NOTE:
8067                 Passed compounds (via ListShapes or via ListTools)
8068                 have to consist of nonintersecting shapes.
8069
8070             Returns:
8071                 New GEOM.GEOM_Object, containing the result shapes.
8072             """
8073             if Limit == self.ShapeType["AUTO"]:
8074                 # automatic detection of the most appropriate shape limit type
8075                 lim = GEOM.SHAPE
8076                 for s in ListShapes: lim = min( lim, s.GetMaxShapeType() )
8077                 Limit = EnumToLong(lim)
8078                 pass
8079             anObj = self.BoolOp.MakePartitionNonSelfIntersectedShape(ListShapes, ListTools,
8080                                                                      ListKeepInside, ListRemoveInside,
8081                                                                      Limit, RemoveWebs, ListMaterials,
8082                                                                      KeepNonlimitShapes, checkSelfInte);
8083             RaiseIfFailed("MakePartitionNonSelfIntersectedShape", self.BoolOp)
8084             self._autoPublish(anObj, theName, "partition")
8085             return anObj
8086
8087         ## See method MakePartition() for more information.
8088         #
8089         #  @ref tui_partition "Example 1"
8090         #  \n @ref swig_Partition "Example 2"
8091         def Partition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
8092                       Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[],
8093                       KeepNonlimitShapes=0, theName=None):
8094             """
8095             See method geompy.MakePartition for more information.
8096             """
8097             # Example: see GEOM_TestOthers.py
8098             # note: auto-publishing is done in self.MakePartition()
8099             anObj = self.MakePartition(ListShapes, ListTools,
8100                                        ListKeepInside, ListRemoveInside,
8101                                        Limit, RemoveWebs, ListMaterials,
8102                                        KeepNonlimitShapes, theName);
8103             return anObj
8104
8105         ## Perform partition of the Shape with the Plane
8106         #  @param theShape Shape to be intersected.
8107         #  @param thePlane Tool shape, to intersect theShape.
8108         #  @param theName Object name; when specified, this parameter is used
8109         #         for result publication in the study. Otherwise, if automatic
8110         #         publication is switched on, default value is used for result name.
8111         #
8112         #  @return New GEOM.GEOM_Object, containing the result shape.
8113         #
8114         #  @note This operation is a shortcut to the more general @ref MakePartition
8115         #  operation, where @a theShape specifies single "object" (shape being partitioned)
8116         #  and @a thePlane specifies single "tool" (intersector shape). Other parameters of
8117         #  @ref MakePartition operation have default values:
8118         #  - @a Limit: GEOM::SHAPE (shape limit corresponds to the type of @a theShape)
8119         #  - @a KeepNonlimitShapes: 0
8120         #  - @a KeepInside, @a RemoveInside, @a RemoveWebs,
8121         #    @a Materials (obsolete parameters): empty
8122         #
8123         #  @note I.e. the following two operations are equivalent:
8124         #  @code
8125         #  Result = geompy.MakeHalfPartition(Object, Plane)
8126         #  Result = geompy.MakePartition([Object], [Plane])
8127         #  @endcode
8128         #
8129         #  @sa MakePartition, MakePartitionNonSelfIntersectedShape
8130         #
8131         #  @ref tui_partition "Example"
8132         @ManageTransactions("BoolOp")
8133         def MakeHalfPartition(self, theShape, thePlane, theName=None):
8134             """
8135             Perform partition of the Shape with the Plane
8136
8137             Parameters:
8138                 theShape Shape to be intersected.
8139                 thePlane Tool shape, to intersect theShape.
8140                 theName Object name; when specified, this parameter is used
8141                         for result publication in the study. Otherwise, if automatic
8142                         publication is switched on, default value is used for result name.
8143
8144             Returns:
8145                 New GEOM.GEOM_Object, containing the result shape.
8146          
8147             Note: This operation is a shortcut to the more general MakePartition
8148             operation, where theShape specifies single "object" (shape being partitioned)
8149             and thePlane specifies single "tool" (intersector shape). Other parameters of
8150             MakePartition operation have default values:
8151             - Limit: GEOM::SHAPE (shape limit corresponds to the type of theShape)
8152             - KeepNonlimitShapes: 0
8153             - KeepInside, RemoveInside, RemoveWebs, Materials (obsolete parameters): empty
8154          
8155             I.e. the following two operations are equivalent:
8156               Result = geompy.MakeHalfPartition(Object, Plane)
8157               Result = geompy.MakePartition([Object], [Plane])
8158             """
8159             # Example: see GEOM_TestAll.py
8160             anObj = self.BoolOp.MakeHalfPartition(theShape, thePlane)
8161             RaiseIfFailed("MakeHalfPartition", self.BoolOp)
8162             self._autoPublish(anObj, theName, "partition")
8163             return anObj
8164
8165         # end of l3_basic_op
8166         ## @}
8167
8168         ## @addtogroup l3_transform
8169         ## @{
8170
8171         ## Translate the given object along the vector, specified
8172         #  by its end points.
8173         #  @param theObject The object to be translated.
8174         #  @param thePoint1 Start point of translation vector.
8175         #  @param thePoint2 End point of translation vector.
8176         #  @param theCopy Flag used to translate object itself or create a copy.
8177         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8178         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8179         @ManageTransactions("TrsfOp")
8180         def TranslateTwoPoints(self, theObject, thePoint1, thePoint2, theCopy=False):
8181             """
8182             Translate the given object along the vector, specified by its end points.
8183
8184             Parameters:
8185                 theObject The object to be translated.
8186                 thePoint1 Start point of translation vector.
8187                 thePoint2 End point of translation vector.
8188                 theCopy Flag used to translate object itself or create a copy.
8189
8190             Returns:
8191                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8192                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8193             """
8194             if theCopy:
8195                 anObj = self.TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
8196             else:
8197                 anObj = self.TrsfOp.TranslateTwoPoints(theObject, thePoint1, thePoint2)
8198             RaiseIfFailed("TranslateTwoPoints", self.TrsfOp)
8199             return anObj
8200
8201         ## Translate the given object along the vector, specified
8202         #  by its end points, creating its copy before the translation.
8203         #  @param theObject The object to be translated.
8204         #  @param thePoint1 Start point of translation vector.
8205         #  @param thePoint2 End point of translation vector.
8206         #  @param theName Object name; when specified, this parameter is used
8207         #         for result publication in the study. Otherwise, if automatic
8208         #         publication is switched on, default value is used for result name.
8209         #
8210         #  @return New GEOM.GEOM_Object, containing the translated object.
8211         #
8212         #  @ref tui_translation "Example 1"
8213         #  \n @ref swig_MakeTranslationTwoPoints "Example 2"
8214         @ManageTransactions("TrsfOp")
8215         def MakeTranslationTwoPoints(self, theObject, thePoint1, thePoint2, theName=None):
8216             """
8217             Translate the given object along the vector, specified
8218             by its end points, creating its copy before the translation.
8219
8220             Parameters:
8221                 theObject The object to be translated.
8222                 thePoint1 Start point of translation vector.
8223                 thePoint2 End point of translation vector.
8224                 theName Object name; when specified, this parameter is used
8225                         for result publication in the study. Otherwise, if automatic
8226                         publication is switched on, default value is used for result name.
8227
8228             Returns:
8229                 New GEOM.GEOM_Object, containing the translated object.
8230             """
8231             # Example: see GEOM_TestAll.py
8232             anObj = self.TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
8233             RaiseIfFailed("TranslateTwoPointsCopy", self.TrsfOp)
8234             self._autoPublish(anObj, theName, "translated")
8235             return anObj
8236
8237         ## Translate the given object along the vector, specified by its components.
8238         #  @param theObject The object to be translated.
8239         #  @param theDX,theDY,theDZ Components of translation vector.
8240         #  @param theCopy Flag used to translate object itself or create a copy.
8241         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8242         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8243         #
8244         #  @ref tui_translation "Example"
8245         @ManageTransactions("TrsfOp")
8246         def TranslateDXDYDZ(self, theObject, theDX, theDY, theDZ, theCopy=False):
8247             """
8248             Translate the given object along the vector, specified by its components.
8249
8250             Parameters:
8251                 theObject The object to be translated.
8252                 theDX,theDY,theDZ Components of translation vector.
8253                 theCopy Flag used to translate object itself or create a copy.
8254
8255             Returns:
8256                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8257                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8258             """
8259             # Example: see GEOM_TestAll.py
8260             theDX, theDY, theDZ, Parameters = ParseParameters(theDX, theDY, theDZ)
8261             if theCopy:
8262                 anObj = self.TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
8263             else:
8264                 anObj = self.TrsfOp.TranslateDXDYDZ(theObject, theDX, theDY, theDZ)
8265             anObj.SetParameters(Parameters)
8266             RaiseIfFailed("TranslateDXDYDZ", self.TrsfOp)
8267             return anObj
8268
8269         ## Translate the given object along the vector, specified
8270         #  by its components, creating its copy before the translation.
8271         #  @param theObject The object to be translated.
8272         #  @param theDX,theDY,theDZ Components of translation vector.
8273         #  @param theName Object name; when specified, this parameter is used
8274         #         for result publication in the study. Otherwise, if automatic
8275         #         publication is switched on, default value is used for result name.
8276         #
8277         #  @return New GEOM.GEOM_Object, containing the translated object.
8278         #
8279         #  @ref tui_translation "Example"
8280         @ManageTransactions("TrsfOp")
8281         def MakeTranslation(self,theObject, theDX, theDY, theDZ, theName=None):
8282             """
8283             Translate the given object along the vector, specified
8284             by its components, creating its copy before the translation.
8285
8286             Parameters:
8287                 theObject The object to be translated.
8288                 theDX,theDY,theDZ Components of translation vector.
8289                 theName Object name; when specified, this parameter is used
8290                         for result publication in the study. Otherwise, if automatic
8291                         publication is switched on, default value is used for result name.
8292
8293             Returns:
8294                 New GEOM.GEOM_Object, containing the translated object.
8295             """
8296             # Example: see GEOM_TestAll.py
8297             theDX, theDY, theDZ, Parameters = ParseParameters(theDX, theDY, theDZ)
8298             anObj = self.TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
8299             anObj.SetParameters(Parameters)
8300             RaiseIfFailed("TranslateDXDYDZ", self.TrsfOp)
8301             self._autoPublish(anObj, theName, "translated")
8302             return anObj
8303
8304         ## Translate the given object along the given vector.
8305         #  @param theObject The object to be translated.
8306         #  @param theVector The translation vector.
8307         #  @param theCopy Flag used to translate object itself or create a copy.
8308         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8309         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8310         @ManageTransactions("TrsfOp")
8311         def TranslateVector(self, theObject, theVector, theCopy=False):
8312             """
8313             Translate the given object along the given vector.
8314
8315             Parameters:
8316                 theObject The object to be translated.
8317                 theVector The translation vector.
8318                 theCopy Flag used to translate object itself or create a copy.
8319
8320             Returns:
8321                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8322                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8323             """
8324             if theCopy:
8325                 anObj = self.TrsfOp.TranslateVectorCopy(theObject, theVector)
8326             else:
8327                 anObj = self.TrsfOp.TranslateVector(theObject, theVector)
8328             RaiseIfFailed("TranslateVector", self.TrsfOp)
8329             return anObj
8330
8331         ## Translate the given object along the given vector,
8332         #  creating its copy before the translation.
8333         #  @param theObject The object to be translated.
8334         #  @param theVector The translation vector.
8335         #  @param theName Object name; when specified, this parameter is used
8336         #         for result publication in the study. Otherwise, if automatic
8337         #         publication is switched on, default value is used for result name.
8338         #
8339         #  @return New GEOM.GEOM_Object, containing the translated object.
8340         #
8341         #  @ref tui_translation "Example"
8342         @ManageTransactions("TrsfOp")
8343         def MakeTranslationVector(self, theObject, theVector, theName=None):
8344             """
8345             Translate the given object along the given vector,
8346             creating its copy before the translation.
8347
8348             Parameters:
8349                 theObject The object to be translated.
8350                 theVector The translation vector.
8351                 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             Returns:
8356                 New GEOM.GEOM_Object, containing the translated object.
8357             """
8358             # Example: see GEOM_TestAll.py
8359             anObj = self.TrsfOp.TranslateVectorCopy(theObject, theVector)
8360             RaiseIfFailed("TranslateVectorCopy", self.TrsfOp)
8361             self._autoPublish(anObj, theName, "translated")
8362             return anObj
8363
8364         ## Translate the given object along the given vector on given distance.
8365         #  @param theObject The object to be translated.
8366         #  @param theVector The translation vector.
8367         #  @param theDistance The translation distance.
8368         #  @param theCopy Flag used to translate object itself or create a copy.
8369         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8370         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8371         #
8372         #  @ref tui_translation "Example"
8373         @ManageTransactions("TrsfOp")
8374         def TranslateVectorDistance(self, theObject, theVector, theDistance, theCopy=False):
8375             """
8376             Translate the given object along the given vector on given distance.
8377
8378             Parameters:
8379                 theObject The object to be translated.
8380                 theVector The translation vector.
8381                 theDistance The translation distance.
8382                 theCopy Flag used to translate object itself or create a copy.
8383
8384             Returns:
8385                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8386                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8387             """
8388             # Example: see GEOM_TestAll.py
8389             theDistance,Parameters = ParseParameters(theDistance)
8390             anObj = self.TrsfOp.TranslateVectorDistance(theObject, theVector, theDistance, theCopy)
8391             RaiseIfFailed("TranslateVectorDistance", self.TrsfOp)
8392             anObj.SetParameters(Parameters)
8393             return anObj
8394
8395         ## Translate the given object along the given vector on given distance,
8396         #  creating its copy before the translation.
8397         #  @param theObject The object to be translated.
8398         #  @param theVector The translation vector.
8399         #  @param theDistance The translation distance.
8400         #  @param theName Object name; when specified, this parameter is used
8401         #         for result publication in the study. Otherwise, if automatic
8402         #         publication is switched on, default value is used for result name.
8403         #
8404         #  @return New GEOM.GEOM_Object, containing the translated object.
8405         #
8406         #  @ref tui_translation "Example"
8407         @ManageTransactions("TrsfOp")
8408         def MakeTranslationVectorDistance(self, theObject, theVector, theDistance, theName=None):
8409             """
8410             Translate the given object along the given vector on given distance,
8411             creating its copy before the translation.
8412
8413             Parameters:
8414                 theObject The object to be translated.
8415                 theVector The translation vector.
8416                 theDistance The translation distance.
8417                 theName Object name; when specified, this parameter is used
8418                         for result publication in the study. Otherwise, if automatic
8419                         publication is switched on, default value is used for result name.
8420
8421             Returns:
8422                 New GEOM.GEOM_Object, containing the translated object.
8423             """
8424             # Example: see GEOM_TestAll.py
8425             theDistance,Parameters = ParseParameters(theDistance)
8426             anObj = self.TrsfOp.TranslateVectorDistance(theObject, theVector, theDistance, 1)
8427             RaiseIfFailed("TranslateVectorDistance", self.TrsfOp)
8428             anObj.SetParameters(Parameters)
8429             self._autoPublish(anObj, theName, "translated")
8430             return anObj
8431
8432         ## Rotate the given object around the given axis on the given angle.
8433         #  @param theObject The object to be rotated.
8434         #  @param theAxis Rotation axis.
8435         #  @param theAngle Rotation angle in radians.
8436         #  @param theCopy Flag used to rotate object itself or create a copy.
8437         #
8438         #  @return Rotated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8439         #  new GEOM.GEOM_Object, containing the rotated object if @a theCopy flag is @c True.
8440         #
8441         #  @ref tui_rotation "Example"
8442         @ManageTransactions("TrsfOp")
8443         def Rotate(self, theObject, theAxis, theAngle, theCopy=False):
8444             """
8445             Rotate the given object around the given axis on the given angle.
8446
8447             Parameters:
8448                 theObject The object to be rotated.
8449                 theAxis Rotation axis.
8450                 theAngle Rotation angle in radians.
8451                 theCopy Flag used to rotate object itself or create a copy.
8452
8453             Returns:
8454                 Rotated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8455                 new GEOM.GEOM_Object, containing the rotated object if theCopy flag is True.
8456             """
8457             # Example: see GEOM_TestAll.py
8458             flag = False
8459             if isinstance(theAngle,str):
8460                 flag = True
8461             theAngle, Parameters = ParseParameters(theAngle)
8462             if flag:
8463                 theAngle = theAngle*math.pi/180.0
8464             if theCopy:
8465                 anObj = self.TrsfOp.RotateCopy(theObject, theAxis, theAngle)
8466             else:
8467                 anObj = self.TrsfOp.Rotate(theObject, theAxis, theAngle)
8468             RaiseIfFailed("Rotate", self.TrsfOp)
8469             anObj.SetParameters(Parameters)
8470             return anObj
8471
8472         ## Rotate the given object around the given axis
8473         #  on the given angle, creating its copy before the rotation.
8474         #  @param theObject The object to be rotated.
8475         #  @param theAxis Rotation axis.
8476         #  @param theAngle Rotation angle in radians.
8477         #  @param theName Object name; when specified, this parameter is used
8478         #         for result publication in the study. Otherwise, if automatic
8479         #         publication is switched on, default value is used for result name.
8480         #
8481         #  @return New GEOM.GEOM_Object, containing the rotated object.
8482         #
8483         #  @ref tui_rotation "Example"
8484         @ManageTransactions("TrsfOp")
8485         def MakeRotation(self, theObject, theAxis, theAngle, theName=None):
8486             """
8487             Rotate the given object around the given axis
8488             on the given angle, creating its copy before the rotatation.
8489
8490             Parameters:
8491                 theObject The object to be rotated.
8492                 theAxis Rotation axis.
8493                 theAngle Rotation angle in radians.
8494                 theName Object name; when specified, this parameter is used
8495                         for result publication in the study. Otherwise, if automatic
8496                         publication is switched on, default value is used for result name.
8497
8498             Returns:
8499                 New GEOM.GEOM_Object, containing the rotated object.
8500             """
8501             # Example: see GEOM_TestAll.py
8502             flag = False
8503             if isinstance(theAngle,str):
8504                 flag = True
8505             theAngle, Parameters = ParseParameters(theAngle)
8506             if flag:
8507                 theAngle = theAngle*math.pi/180.0
8508             anObj = self.TrsfOp.RotateCopy(theObject, theAxis, theAngle)
8509             RaiseIfFailed("RotateCopy", self.TrsfOp)
8510             anObj.SetParameters(Parameters)
8511             self._autoPublish(anObj, theName, "rotated")
8512             return anObj
8513
8514         ## Rotate given object around vector perpendicular to plane
8515         #  containing three points.
8516         #  @param theObject The object to be rotated.
8517         #  @param theCentPoint central point the axis is the vector perpendicular to the plane
8518         #  containing the three points.
8519         #  @param thePoint1,thePoint2 points in a perpendicular plane of the axis.
8520         #  @param theCopy Flag used to rotate object itself or create a copy.
8521         #  @return Rotated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8522         #  new GEOM.GEOM_Object, containing the rotated object if @a theCopy flag is @c True.
8523         @ManageTransactions("TrsfOp")
8524         def RotateThreePoints(self, theObject, theCentPoint, thePoint1, thePoint2, theCopy=False):
8525             """
8526             Rotate given object around vector perpendicular to plane
8527             containing three points.
8528
8529             Parameters:
8530                 theObject The object to be rotated.
8531                 theCentPoint central point  the axis is the vector perpendicular to the plane
8532                              containing the three points.
8533                 thePoint1,thePoint2 points in a perpendicular plane of the axis.
8534                 theCopy Flag used to rotate object itself or create a copy.
8535
8536             Returns:
8537                 Rotated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8538                 new GEOM.GEOM_Object, containing the rotated object if theCopy flag is True.
8539             """
8540             if theCopy:
8541                 anObj = self.TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
8542             else:
8543                 anObj = self.TrsfOp.RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2)
8544             RaiseIfFailed("RotateThreePoints", self.TrsfOp)
8545             return anObj
8546
8547         ## Rotate given object around vector perpendicular to plane
8548         #  containing three points, creating its copy before the rotatation.
8549         #  @param theObject The object to be rotated.
8550         #  @param theCentPoint central point the axis is the vector perpendicular to the plane
8551         #  containing the three points.
8552         #  @param thePoint1,thePoint2 in a perpendicular plane of the axis.
8553         #  @param theName Object name; when specified, this parameter is used
8554         #         for result publication in the study. Otherwise, if automatic
8555         #         publication is switched on, default value is used for result name.
8556         #
8557         #  @return New GEOM.GEOM_Object, containing the rotated object.
8558         #
8559         #  @ref tui_rotation "Example"
8560         @ManageTransactions("TrsfOp")
8561         def MakeRotationThreePoints(self, theObject, theCentPoint, thePoint1, thePoint2, theName=None):
8562             """
8563             Rotate given object around vector perpendicular to plane
8564             containing three points, creating its copy before the rotatation.
8565
8566             Parameters:
8567                 theObject The object to be rotated.
8568                 theCentPoint central point  the axis is the vector perpendicular to the plane
8569                              containing the three points.
8570                 thePoint1,thePoint2  in a perpendicular plane of the axis.
8571                 theName Object name; when specified, this parameter is used
8572                         for result publication in the study. Otherwise, if automatic
8573                         publication is switched on, default value is used for result name.
8574
8575             Returns:
8576                 New GEOM.GEOM_Object, containing the rotated object.
8577             """
8578             # Example: see GEOM_TestAll.py
8579             anObj = self.TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
8580             RaiseIfFailed("RotateThreePointsCopy", self.TrsfOp)
8581             self._autoPublish(anObj, theName, "rotated")
8582             return anObj
8583
8584         ## Scale the given object by the specified factor.
8585         #  @param theObject The object to be scaled.
8586         #  @param thePoint Center point for scaling.
8587         #                  Passing None for it means scaling relatively the origin of global CS.
8588         #  @param theFactor Scaling factor value.
8589         #  @param theCopy Flag used to scale object itself or create a copy.
8590         #  @return Scaled @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8591         #  new GEOM.GEOM_Object, containing the scaled object if @a theCopy flag is @c True.
8592         @ManageTransactions("TrsfOp")
8593         def Scale(self, theObject, thePoint, theFactor, theCopy=False):
8594             """
8595             Scale the given object by the specified factor.
8596
8597             Parameters:
8598                 theObject The object to be scaled.
8599                 thePoint Center point for scaling.
8600                          Passing None for it means scaling relatively the origin of global CS.
8601                 theFactor Scaling factor value.
8602                 theCopy Flag used to scale object itself or create a copy.
8603
8604             Returns:
8605                 Scaled theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8606                 new GEOM.GEOM_Object, containing the scaled object if theCopy flag is True.
8607             """
8608             # Example: see GEOM_TestAll.py
8609             theFactor, Parameters = ParseParameters(theFactor)
8610             if theCopy:
8611                 anObj = self.TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
8612             else:
8613                 anObj = self.TrsfOp.ScaleShape(theObject, thePoint, theFactor)
8614             RaiseIfFailed("Scale", self.TrsfOp)
8615             anObj.SetParameters(Parameters)
8616             return anObj
8617
8618         ## Scale the given object by the factor, creating its copy before the scaling.
8619         #  @param theObject The object to be scaled.
8620         #  @param thePoint Center point for scaling.
8621         #                  Passing None for it means scaling relatively the origin of global CS.
8622         #  @param theFactor Scaling factor value.
8623         #  @param theName Object name; when specified, this parameter is used
8624         #         for result publication in the study. Otherwise, if automatic
8625         #         publication is switched on, default value is used for result name.
8626         #
8627         #  @return New GEOM.GEOM_Object, containing the scaled shape.
8628         #
8629         #  @ref tui_scale "Example"
8630         @ManageTransactions("TrsfOp")
8631         def MakeScaleTransform(self, theObject, thePoint, theFactor, theName=None):
8632             """
8633             Scale the given object by the factor, creating its copy before the scaling.
8634
8635             Parameters:
8636                 theObject The object to be scaled.
8637                 thePoint Center point for scaling.
8638                          Passing None for it means scaling relatively the origin of global CS.
8639                 theFactor Scaling factor value.
8640                 theName Object name; when specified, this parameter is used
8641                         for result publication in the study. Otherwise, if automatic
8642                         publication is switched on, default value is used for result name.
8643
8644             Returns:
8645                 New GEOM.GEOM_Object, containing the scaled shape.
8646             """
8647             # Example: see GEOM_TestAll.py
8648             theFactor, Parameters = ParseParameters(theFactor)
8649             anObj = self.TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
8650             RaiseIfFailed("ScaleShapeCopy", self.TrsfOp)
8651             anObj.SetParameters(Parameters)
8652             self._autoPublish(anObj, theName, "scaled")
8653             return anObj
8654
8655         ## Scale the given object by different factors along coordinate axes.
8656         #  @param theObject The object to be scaled.
8657         #  @param thePoint Center point for scaling.
8658         #                  Passing None for it means scaling relatively the origin of global CS.
8659         #  @param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8660         #  @param theCopy Flag used to scale object itself or create a copy.
8661         #  @return Scaled @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8662         #  new GEOM.GEOM_Object, containing the scaled object if @a theCopy flag is @c True.
8663         @ManageTransactions("TrsfOp")
8664         def ScaleAlongAxes(self, theObject, thePoint, theFactorX, theFactorY, theFactorZ, theCopy=False):
8665             """
8666             Scale the given object by different factors along coordinate axes.
8667
8668             Parameters:
8669                 theObject The object to be scaled.
8670                 thePoint Center point for scaling.
8671                             Passing None for it means scaling relatively the origin of global CS.
8672                 theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8673                 theCopy Flag used to scale object itself or create a copy.
8674
8675             Returns:
8676                 Scaled theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8677                 new GEOM.GEOM_Object, containing the scaled object if theCopy flag is True.
8678             """
8679             # Example: see GEOM_TestAll.py
8680             theFactorX, theFactorY, theFactorZ, Parameters = ParseParameters(theFactorX, theFactorY, theFactorZ)
8681             if theCopy:
8682                 anObj = self.TrsfOp.ScaleShapeAlongAxesCopy(theObject, thePoint,
8683                                                             theFactorX, theFactorY, theFactorZ)
8684             else:
8685                 anObj = self.TrsfOp.ScaleShapeAlongAxes(theObject, thePoint,
8686                                                         theFactorX, theFactorY, theFactorZ)
8687             RaiseIfFailed("ScaleAlongAxes", self.TrsfOp)
8688             anObj.SetParameters(Parameters)
8689             return anObj
8690
8691         ## Scale the given object by different factors along coordinate axes,
8692         #  creating its copy before the scaling.
8693         #  @param theObject The object to be scaled.
8694         #  @param thePoint Center point for scaling.
8695         #                  Passing None for it means scaling relatively the origin of global CS.
8696         #  @param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8697         #  @param theName Object name; when specified, this parameter is used
8698         #         for result publication in the study. Otherwise, if automatic
8699         #         publication is switched on, default value is used for result name.
8700         #
8701         #  @return New GEOM.GEOM_Object, containing the scaled shape.
8702         #
8703         #  @ref swig_scale "Example"
8704         @ManageTransactions("TrsfOp")
8705         def MakeScaleAlongAxes(self, theObject, thePoint, theFactorX, theFactorY, theFactorZ, theName=None):
8706             """
8707             Scale the given object by different factors along coordinate axes,
8708             creating its copy before the scaling.
8709
8710             Parameters:
8711                 theObject The object to be scaled.
8712                 thePoint Center point for scaling.
8713                             Passing None for it means scaling relatively the origin of global CS.
8714                 theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8715                 theName Object name; when specified, this parameter is used
8716                         for result publication in the study. Otherwise, if automatic
8717                         publication is switched on, default value is used for result name.
8718
8719             Returns:
8720                 New GEOM.GEOM_Object, containing the scaled shape.
8721             """
8722             # Example: see GEOM_TestAll.py
8723             theFactorX, theFactorY, theFactorZ, Parameters = ParseParameters(theFactorX, theFactorY, theFactorZ)
8724             anObj = self.TrsfOp.ScaleShapeAlongAxesCopy(theObject, thePoint,
8725                                                         theFactorX, theFactorY, theFactorZ)
8726             RaiseIfFailed("MakeScaleAlongAxes", self.TrsfOp)
8727             anObj.SetParameters(Parameters)
8728             self._autoPublish(anObj, theName, "scaled")
8729             return anObj
8730
8731         ## Mirror an object relatively the given plane.
8732         #  @param theObject The object to be mirrored.
8733         #  @param thePlane Plane of symmetry.
8734         #  @param theCopy Flag used to mirror object itself or create a copy.
8735         #  @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8736         #  new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
8737         @ManageTransactions("TrsfOp")
8738         def MirrorByPlane(self, theObject, thePlane, theCopy=False):
8739             """
8740             Mirror an object relatively the given plane.
8741
8742             Parameters:
8743                 theObject The object to be mirrored.
8744                 thePlane Plane of symmetry.
8745                 theCopy Flag used to mirror object itself or create a copy.
8746
8747             Returns:
8748                 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8749                 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
8750             """
8751             if theCopy:
8752                 anObj = self.TrsfOp.MirrorPlaneCopy(theObject, thePlane)
8753             else:
8754                 anObj = self.TrsfOp.MirrorPlane(theObject, thePlane)
8755             RaiseIfFailed("MirrorByPlane", self.TrsfOp)
8756             return anObj
8757
8758         ## Create an object, symmetrical
8759         #  to the given one relatively the given plane.
8760         #  @param theObject The object to be mirrored.
8761         #  @param thePlane Plane of symmetry.
8762         #  @param theName Object name; when specified, this parameter is used
8763         #         for result publication in the study. Otherwise, if automatic
8764         #         publication is switched on, default value is used for result name.
8765         #
8766         #  @return New GEOM.GEOM_Object, containing the mirrored shape.
8767         #
8768         #  @ref tui_mirror "Example"
8769         @ManageTransactions("TrsfOp")
8770         def MakeMirrorByPlane(self, theObject, thePlane, theName=None):
8771             """
8772             Create an object, symmetrical to the given one relatively the given plane.
8773
8774             Parameters:
8775                 theObject The object to be mirrored.
8776                 thePlane Plane of symmetry.
8777                 theName Object name; when specified, this parameter is used
8778                         for result publication in the study. Otherwise, if automatic
8779                         publication is switched on, default value is used for result name.
8780
8781             Returns:
8782                 New GEOM.GEOM_Object, containing the mirrored shape.
8783             """
8784             # Example: see GEOM_TestAll.py
8785             anObj = self.TrsfOp.MirrorPlaneCopy(theObject, thePlane)
8786             RaiseIfFailed("MirrorPlaneCopy", self.TrsfOp)
8787             self._autoPublish(anObj, theName, "mirrored")
8788             return anObj
8789
8790         ## Mirror an object relatively the given axis.
8791         #  @param theObject The object to be mirrored.
8792         #  @param theAxis Axis of symmetry.
8793         #  @param theCopy Flag used to mirror object itself or create a copy.
8794         #  @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8795         #  new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
8796         @ManageTransactions("TrsfOp")
8797         def MirrorByAxis(self, theObject, theAxis, theCopy=False):
8798             """
8799             Mirror an object relatively the given axis.
8800
8801             Parameters:
8802                 theObject The object to be mirrored.
8803                 theAxis Axis of symmetry.
8804                 theCopy Flag used to mirror object itself or create a copy.
8805
8806             Returns:
8807                 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8808                 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
8809             """
8810             if theCopy:
8811                 anObj = self.TrsfOp.MirrorAxisCopy(theObject, theAxis)
8812             else:
8813                 anObj = self.TrsfOp.MirrorAxis(theObject, theAxis)
8814             RaiseIfFailed("MirrorByAxis", self.TrsfOp)
8815             return anObj
8816
8817         ## Create an object, symmetrical
8818         #  to the given one relatively the given axis.
8819         #  @param theObject The object to be mirrored.
8820         #  @param theAxis Axis of symmetry.
8821         #  @param theName Object name; when specified, this parameter is used
8822         #         for result publication in the study. Otherwise, if automatic
8823         #         publication is switched on, default value is used for result name.
8824         #
8825         #  @return New GEOM.GEOM_Object, containing the mirrored shape.
8826         #
8827         #  @ref tui_mirror "Example"
8828         @ManageTransactions("TrsfOp")
8829         def MakeMirrorByAxis(self, theObject, theAxis, theName=None):
8830             """
8831             Create an object, symmetrical to the given one relatively the given axis.
8832
8833             Parameters:
8834                 theObject The object to be mirrored.
8835                 theAxis Axis of symmetry.
8836                 theName Object name; when specified, this parameter is used
8837                         for result publication in the study. Otherwise, if automatic
8838                         publication is switched on, default value is used for result name.
8839
8840             Returns:
8841                 New GEOM.GEOM_Object, containing the mirrored shape.
8842             """
8843             # Example: see GEOM_TestAll.py
8844             anObj = self.TrsfOp.MirrorAxisCopy(theObject, theAxis)
8845             RaiseIfFailed("MirrorAxisCopy", self.TrsfOp)
8846             self._autoPublish(anObj, theName, "mirrored")
8847             return anObj
8848
8849         ## Mirror an object relatively the given point.
8850         #  @param theObject The object to be mirrored.
8851         #  @param thePoint Point of symmetry.
8852         #  @param theCopy Flag used to mirror object itself or create a copy.
8853         #  @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8854         #  new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
8855         @ManageTransactions("TrsfOp")
8856         def MirrorByPoint(self, theObject, thePoint, theCopy=False):
8857             """
8858             Mirror an object relatively the given point.
8859
8860             Parameters:
8861                 theObject The object to be mirrored.
8862                 thePoint Point of symmetry.
8863                 theCopy Flag used to mirror object itself or create a copy.
8864
8865             Returns:
8866                 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8867                 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
8868             """
8869             # Example: see GEOM_TestAll.py
8870             if theCopy:
8871                 anObj = self.TrsfOp.MirrorPointCopy(theObject, thePoint)
8872             else:
8873                 anObj = self.TrsfOp.MirrorPoint(theObject, thePoint)
8874             RaiseIfFailed("MirrorByPoint", self.TrsfOp)
8875             return anObj
8876
8877         ## Create an object, symmetrical
8878         #  to the given one relatively the given point.
8879         #  @param theObject The object to be mirrored.
8880         #  @param thePoint Point of symmetry.
8881         #  @param theName Object name; when specified, this parameter is used
8882         #         for result publication in the study. Otherwise, if automatic
8883         #         publication is switched on, default value is used for result name.
8884         #
8885         #  @return New GEOM.GEOM_Object, containing the mirrored shape.
8886         #
8887         #  @ref tui_mirror "Example"
8888         @ManageTransactions("TrsfOp")
8889         def MakeMirrorByPoint(self, theObject, thePoint, theName=None):
8890             """
8891             Create an object, symmetrical
8892             to the given one relatively the given point.
8893
8894             Parameters:
8895                 theObject The object to be mirrored.
8896                 thePoint Point of symmetry.
8897                 theName Object name; when specified, this parameter is used
8898                         for result publication in the study. Otherwise, if automatic
8899                         publication is switched on, default value is used for result name.
8900
8901             Returns:
8902                 New GEOM.GEOM_Object, containing the mirrored shape.
8903             """
8904             # Example: see GEOM_TestAll.py
8905             anObj = self.TrsfOp.MirrorPointCopy(theObject, thePoint)
8906             RaiseIfFailed("MirrorPointCopy", self.TrsfOp)
8907             self._autoPublish(anObj, theName, "mirrored")
8908             return anObj
8909
8910         ## Modify the location of the given object.
8911         #  @param theObject The object to be displaced.
8912         #  @param theStartLCS Coordinate system to perform displacement from it.\n
8913         #                     If \a theStartLCS is NULL, displacement
8914         #                     will be performed from global CS.\n
8915         #                     If \a theObject itself is used as \a theStartLCS,
8916         #                     its location will be changed to \a theEndLCS.
8917         #  @param theEndLCS Coordinate system to perform displacement to it.
8918         #  @param theCopy Flag used to displace object itself or create a copy.
8919         #  @return Displaced @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8920         #  new GEOM.GEOM_Object, containing the displaced object if @a theCopy flag is @c True.
8921         @ManageTransactions("TrsfOp")
8922         def Position(self, theObject, theStartLCS, theEndLCS, theCopy=False):
8923             """
8924             Modify the Location of the given object by LCS, creating its copy before the setting.
8925
8926             Parameters:
8927                 theObject The object to be displaced.
8928                 theStartLCS Coordinate system to perform displacement from it.
8929                             If theStartLCS is NULL, displacement
8930                             will be performed from global CS.
8931                             If theObject itself is used as theStartLCS,
8932                             its location will be changed to theEndLCS.
8933                 theEndLCS Coordinate system to perform displacement to it.
8934                 theCopy Flag used to displace object itself or create a copy.
8935
8936             Returns:
8937                 Displaced theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8938                 new GEOM.GEOM_Object, containing the displaced object if theCopy flag is True.
8939             """
8940             # Example: see GEOM_TestAll.py
8941             if theCopy:
8942                 anObj = self.TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
8943             else:
8944                 anObj = self.TrsfOp.PositionShape(theObject, theStartLCS, theEndLCS)
8945             RaiseIfFailed("Displace", self.TrsfOp)
8946             return anObj
8947
8948         ## Modify the Location of the given object by LCS,
8949         #  creating its copy before the setting.
8950         #  @param theObject The object to be displaced.
8951         #  @param theStartLCS Coordinate system to perform displacement from it.\n
8952         #                     If \a theStartLCS is NULL, displacement
8953         #                     will be performed from global CS.\n
8954         #                     If \a theObject itself is used as \a theStartLCS,
8955         #                     its location will be changed to \a theEndLCS.
8956         #  @param theEndLCS Coordinate system to perform displacement to it.
8957         #  @param theName Object name; when specified, this parameter is used
8958         #         for result publication in the study. Otherwise, if automatic
8959         #         publication is switched on, default value is used for result name.
8960         #
8961         #  @return New GEOM.GEOM_Object, containing the displaced shape.
8962         #
8963         #  @ref tui_modify_location "Example"
8964         @ManageTransactions("TrsfOp")
8965         def MakePosition(self, theObject, theStartLCS, theEndLCS, theName=None):
8966             """
8967             Modify the Location of the given object by LCS, creating its copy before the setting.
8968
8969             Parameters:
8970                 theObject The object to be displaced.
8971                 theStartLCS Coordinate system to perform displacement from it.
8972                             If theStartLCS is NULL, displacement
8973                             will be performed from global CS.
8974                             If theObject itself is used as theStartLCS,
8975                             its location will be changed to theEndLCS.
8976                 theEndLCS Coordinate system to perform displacement to it.
8977                 theName Object name; when specified, this parameter is used
8978                         for result publication in the study. Otherwise, if automatic
8979                         publication is switched on, default value is used for result name.
8980
8981             Returns:
8982                 New GEOM.GEOM_Object, containing the displaced shape.
8983
8984             Example of usage:
8985                 # create local coordinate systems
8986                 cs1 = geompy.MakeMarker( 0, 0, 0, 1,0,0, 0,1,0)
8987                 cs2 = geompy.MakeMarker(30,40,40, 1,0,0, 0,1,0)
8988                 # modify the location of the given object
8989                 position = geompy.MakePosition(cylinder, cs1, cs2)
8990             """
8991             # Example: see GEOM_TestAll.py
8992             anObj = self.TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
8993             RaiseIfFailed("PositionShapeCopy", self.TrsfOp)
8994             self._autoPublish(anObj, theName, "displaced")
8995             return anObj
8996
8997         ## Modify the Location of the given object by Path.
8998         #  @param  theObject The object to be displaced.
8999         #  @param  thePath Wire or Edge along that the object will be translated.
9000         #  @param  theDistance progress of Path (0 = start location, 1 = end of path location).
9001         #  @param  theCopy is to create a copy objects if true.
9002         #  @param  theReverse  0 - for usual direction, 1 - to reverse path direction.
9003         #  @return Displaced @a theObject (GEOM.GEOM_Object) if @a theCopy is @c False or
9004         #          new GEOM.GEOM_Object, containing the displaced shape if @a theCopy is @c True.
9005         #
9006         #  @ref tui_modify_location "Example"
9007         @ManageTransactions("TrsfOp")
9008         def PositionAlongPath(self,theObject, thePath, theDistance, theCopy, theReverse):
9009             """
9010             Modify the Location of the given object by Path.
9011
9012             Parameters:
9013                  theObject The object to be displaced.
9014                  thePath Wire or Edge along that the object will be translated.
9015                  theDistance progress of Path (0 = start location, 1 = end of path location).
9016                  theCopy is to create a copy objects if true.
9017                  theReverse  0 - for usual direction, 1 - to reverse path direction.
9018
9019             Returns:
9020                  Displaced theObject (GEOM.GEOM_Object) if theCopy is False or
9021                  new GEOM.GEOM_Object, containing the displaced shape if theCopy is True.
9022
9023             Example of usage:
9024                 position = geompy.PositionAlongPath(cylinder, circle, 0.75, 1, 1)
9025             """
9026             # Example: see GEOM_TestAll.py
9027             anObj = self.TrsfOp.PositionAlongPath(theObject, thePath, theDistance, theCopy, theReverse)
9028             RaiseIfFailed("PositionAlongPath", self.TrsfOp)
9029             return anObj
9030
9031         ## Modify the Location of the given object by Path, creating its copy before the operation.
9032         #  @param theObject The object to be displaced.
9033         #  @param thePath Wire or Edge along that the object will be translated.
9034         #  @param theDistance progress of Path (0 = start location, 1 = end of path location).
9035         #  @param theReverse  0 - for usual direction, 1 - to reverse path direction.
9036         #  @param theName Object name; when specified, this parameter is used
9037         #         for result publication in the study. Otherwise, if automatic
9038         #         publication is switched on, default value is used for result name.
9039         #
9040         #  @return New GEOM.GEOM_Object, containing the displaced shape.
9041         @ManageTransactions("TrsfOp")
9042         def MakePositionAlongPath(self, theObject, thePath, theDistance, theReverse, theName=None):
9043             """
9044             Modify the Location of the given object by Path, creating its copy before the operation.
9045
9046             Parameters:
9047                  theObject The object to be displaced.
9048                  thePath Wire or Edge along that the object will be translated.
9049                  theDistance progress of Path (0 = start location, 1 = end of path location).
9050                  theReverse  0 - for usual direction, 1 - to reverse path direction.
9051                  theName Object name; when specified, this parameter is used
9052                          for result publication in the study. Otherwise, if automatic
9053                          publication is switched on, default value is used for result name.
9054
9055             Returns:
9056                 New GEOM.GEOM_Object, containing the displaced shape.
9057             """
9058             # Example: see GEOM_TestAll.py
9059             anObj = self.TrsfOp.PositionAlongPath(theObject, thePath, theDistance, 1, theReverse)
9060             RaiseIfFailed("PositionAlongPath", self.TrsfOp)
9061             self._autoPublish(anObj, theName, "displaced")
9062             return anObj
9063
9064         ## Offset given shape.
9065         #  @param theObject The base object for the offset.
9066         #  @param theOffset Offset value.
9067         #  @param theCopy Flag used to offset object itself or create a copy.
9068         #  @return Modified @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9069         #  new GEOM.GEOM_Object, containing the result of offset operation if @a theCopy flag is @c True.
9070         @ManageTransactions("TrsfOp")
9071         def Offset(self, theObject, theOffset, theCopy=False):
9072             """
9073             Offset given shape.
9074
9075             Parameters:
9076                 theObject The base object for the offset.
9077                 theOffset Offset value.
9078                 theCopy Flag used to offset object itself or create a copy.
9079
9080             Returns:
9081                 Modified theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9082                 new GEOM.GEOM_Object, containing the result of offset operation if theCopy flag is True.
9083             """
9084             theOffset, Parameters = ParseParameters(theOffset)
9085             if theCopy:
9086                 anObj = self.TrsfOp.OffsetShapeCopy(theObject, theOffset)
9087             else:
9088                 anObj = self.TrsfOp.OffsetShape(theObject, theOffset)
9089             RaiseIfFailed("Offset", self.TrsfOp)
9090             anObj.SetParameters(Parameters)
9091             return anObj
9092
9093         ## Create new object as offset of the given one.
9094         #  @param theObject The base object for the offset.
9095         #  @param theOffset Offset value.
9096         #  @param theName Object name; when specified, this parameter is used
9097         #         for result publication in the study. Otherwise, if automatic
9098         #         publication is switched on, default value is used for result name.
9099         #
9100         #  @return New GEOM.GEOM_Object, containing the offset object.
9101         #
9102         #  @ref tui_offset "Example"
9103         @ManageTransactions("TrsfOp")
9104         def MakeOffset(self, theObject, theOffset, theName=None):
9105             """
9106             Create new object as offset of the given one.
9107
9108             Parameters:
9109                 theObject The base object for the offset.
9110                 theOffset Offset value.
9111                 theName Object name; when specified, this parameter is used
9112                         for result publication in the study. Otherwise, if automatic
9113                         publication is switched on, default value is used for result name.
9114
9115             Returns:
9116                 New GEOM.GEOM_Object, containing the offset object.
9117
9118             Example of usage:
9119                  box = geompy.MakeBox(20, 20, 20, 200, 200, 200)
9120                  # create a new object as offset of the given object
9121                  offset = geompy.MakeOffset(box, 70.)
9122             """
9123             # Example: see GEOM_TestAll.py
9124             theOffset, Parameters = ParseParameters(theOffset)
9125             anObj = self.TrsfOp.OffsetShapeCopy(theObject, theOffset)
9126             RaiseIfFailed("OffsetShapeCopy", self.TrsfOp)
9127             anObj.SetParameters(Parameters)
9128             self._autoPublish(anObj, theName, "offset")
9129             return anObj
9130
9131         ## Create new object as projection of the given one on another.
9132         #  @param theSource The source object for the projection. It can be a point, edge or wire.
9133         #         Edge and wire are acceptable if @a theTarget is a face.
9134         #  @param theTarget The target object. It can be planar or cylindrical face, edge or wire.
9135         #  @param theName Object name; when specified, this parameter is used
9136         #         for result publication in the study. Otherwise, if automatic
9137         #         publication is switched on, default value is used for result name.
9138         #
9139         #  @return New GEOM.GEOM_Object, containing the projection.
9140         #
9141         #  @ref tui_projection "Example"
9142         @ManageTransactions("TrsfOp")
9143         def MakeProjection(self, theSource, theTarget, theName=None):
9144             """
9145             Create new object as projection of the given one on another.
9146
9147             Parameters:
9148                 theSource The source object for the projection. It can be a point, edge or wire.
9149                           Edge and wire are acceptable if theTarget is a face.
9150                 theTarget The target object. It can be planar or cylindrical face, edge or wire.
9151                 theName Object name; when specified, this parameter is used
9152                         for result publication in the study. Otherwise, if automatic
9153                         publication is switched on, default value is used for result name.
9154
9155             Returns:
9156                 New GEOM.GEOM_Object, containing the projection.
9157             """
9158             # Example: see GEOM_TestAll.py
9159             anObj = self.TrsfOp.ProjectShapeCopy(theSource, theTarget)
9160             RaiseIfFailed("ProjectShapeCopy", self.TrsfOp)
9161             self._autoPublish(anObj, theName, "projection")
9162             return anObj
9163
9164         ## Create a projection projection of the given point on a wire or an edge.
9165         #  If there are no solutions or there are 2 or more solutions It throws an
9166         #  exception.
9167         #  @param thePoint the point to be projected.
9168         #  @param theWire the wire. The edge is accepted as well.
9169         #  @param theName Object name; when specified, this parameter is used
9170         #         for result publication in the study. Otherwise, if automatic
9171         #         publication is switched on, default value is used for result name.
9172         #
9173         #  @return [\a u, \a PointOnEdge, \a EdgeInWireIndex]
9174         #  \n \a u: The parameter of projection point on edge.
9175         #  \n \a PointOnEdge: The projection point.
9176         #  \n \a EdgeInWireIndex: The index of an edge in a wire.
9177         #
9178         #  @ref tui_projection "Example"
9179         @ManageTransactions("TrsfOp")
9180         def MakeProjectionOnWire(self, thePoint, theWire, theName=None):
9181             """
9182             Create a projection projection of the given point on a wire or an edge.
9183             If there are no solutions or there are 2 or more solutions It throws an
9184             exception.
9185
9186             Parameters:
9187                 thePoint the point to be projected.
9188                 theWire the wire. The edge is accepted as well.
9189                 theName Object name; when specified, this parameter is used
9190                         for result publication in the study. Otherwise, if automatic
9191                         publication is switched on, default value is used for result name.
9192
9193             Returns:
9194                 [u, PointOnEdge, EdgeInWireIndex]
9195                  u: The parameter of projection point on edge.
9196                  PointOnEdge: The projection point.
9197                  EdgeInWireIndex: The index of an edge in a wire.
9198             """
9199             # Example: see GEOM_TestAll.py
9200             anObj = self.TrsfOp.ProjectPointOnWire(thePoint, theWire)
9201             RaiseIfFailed("ProjectPointOnWire", self.TrsfOp)
9202             self._autoPublish(anObj[1], theName, "projection")
9203             return anObj
9204
9205         # -----------------------------------------------------------------------------
9206         # Patterns
9207         # -----------------------------------------------------------------------------
9208
9209         ## Translate the given object along the given vector a given number times
9210         #  @param theObject The object to be translated.
9211         #  @param theVector Direction of the translation. DX if None.
9212         #  @param theStep Distance to translate on.
9213         #  @param theNbTimes Quantity of translations to be done.
9214         #  @param theName Object name; when specified, this parameter is used
9215         #         for result publication in the study. Otherwise, if automatic
9216         #         publication is switched on, default value is used for result name.
9217         #
9218         #  @return New GEOM.GEOM_Object, containing compound of all
9219         #          the shapes, obtained after each translation.
9220         #
9221         #  @ref tui_multi_translation "Example"
9222         @ManageTransactions("TrsfOp")
9223         def MakeMultiTranslation1D(self, theObject, theVector, theStep, theNbTimes, theName=None):
9224             """
9225             Translate the given object along the given vector a given number times
9226
9227             Parameters:
9228                 theObject The object to be translated.
9229                 theVector Direction of the translation. DX if None.
9230                 theStep Distance to translate on.
9231                 theNbTimes Quantity of translations to be done.
9232                 theName Object name; when specified, this parameter is used
9233                         for result publication in the study. Otherwise, if automatic
9234                         publication is switched on, default value is used for result name.
9235
9236             Returns:
9237                 New GEOM.GEOM_Object, containing compound of all
9238                 the shapes, obtained after each translation.
9239
9240             Example of usage:
9241                 r1d = geompy.MakeMultiTranslation1D(prism, vect, 20, 4)
9242             """
9243             # Example: see GEOM_TestAll.py
9244             theStep, theNbTimes, Parameters = ParseParameters(theStep, theNbTimes)
9245             anObj = self.TrsfOp.MultiTranslate1D(theObject, theVector, theStep, theNbTimes)
9246             RaiseIfFailed("MultiTranslate1D", self.TrsfOp)
9247             anObj.SetParameters(Parameters)
9248             self._autoPublish(anObj, theName, "multitranslation")
9249             return anObj
9250
9251         ## Conseqently apply two specified translations to theObject specified number of times.
9252         #  @param theObject The object to be translated.
9253         #  @param theVector1 Direction of the first translation. DX if None.
9254         #  @param theStep1 Step of the first translation.
9255         #  @param theNbTimes1 Quantity of translations to be done along theVector1.
9256         #  @param theVector2 Direction of the second translation. DY if None.
9257         #  @param theStep2 Step of the second translation.
9258         #  @param theNbTimes2 Quantity of translations to be done along theVector2.
9259         #  @param 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         #  @return New GEOM.GEOM_Object, containing compound of all
9264         #          the shapes, obtained after each translation.
9265         #
9266         #  @ref tui_multi_translation "Example"
9267         @ManageTransactions("TrsfOp")
9268         def MakeMultiTranslation2D(self, theObject, theVector1, theStep1, theNbTimes1,
9269                                    theVector2, theStep2, theNbTimes2, theName=None):
9270             """
9271             Conseqently apply two specified translations to theObject specified number of times.
9272
9273             Parameters:
9274                 theObject The object to be translated.
9275                 theVector1 Direction of the first translation. DX if None.
9276                 theStep1 Step of the first translation.
9277                 theNbTimes1 Quantity of translations to be done along theVector1.
9278                 theVector2 Direction of the second translation. DY if None.
9279                 theStep2 Step of the second translation.
9280                 theNbTimes2 Quantity of translations to be done along theVector2.
9281                 theName Object name; when specified, this parameter is used
9282                         for result publication in the study. Otherwise, if automatic
9283                         publication is switched on, default value is used for result name.
9284
9285             Returns:
9286                 New GEOM.GEOM_Object, containing compound of all
9287                 the shapes, obtained after each translation.
9288
9289             Example of usage:
9290                 tr2d = geompy.MakeMultiTranslation2D(prism, vect1, 20, 4, vect2, 80, 3)
9291             """
9292             # Example: see GEOM_TestAll.py
9293             theStep1,theNbTimes1,theStep2,theNbTimes2, Parameters = ParseParameters(theStep1,theNbTimes1,theStep2,theNbTimes2)
9294             anObj = self.TrsfOp.MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
9295                                                  theVector2, theStep2, theNbTimes2)
9296             RaiseIfFailed("MultiTranslate2D", self.TrsfOp)
9297             anObj.SetParameters(Parameters)
9298             self._autoPublish(anObj, theName, "multitranslation")
9299             return anObj
9300
9301         ## Rotate the given object around the given axis a given number times.
9302         #  Rotation angle will be 2*PI/theNbTimes.
9303         #  @param theObject The object to be rotated.
9304         #  @param theAxis The rotation axis. DZ if None.
9305         #  @param theNbTimes Quantity of rotations to be done.
9306         #  @param theName Object name; when specified, this parameter is used
9307         #         for result publication in the study. Otherwise, if automatic
9308         #         publication is switched on, default value is used for result name.
9309         #
9310         #  @return New GEOM.GEOM_Object, containing compound of all the
9311         #          shapes, obtained after each rotation.
9312         #
9313         #  @ref tui_multi_rotation "Example"
9314         @ManageTransactions("TrsfOp")
9315         def MultiRotate1DNbTimes (self, theObject, theAxis, theNbTimes, theName=None):
9316             """
9317             Rotate the given object around the given axis a given number times.
9318             Rotation angle will be 2*PI/theNbTimes.
9319
9320             Parameters:
9321                 theObject The object to be rotated.
9322                 theAxis The rotation axis. DZ if None.
9323                 theNbTimes Quantity of rotations to be done.
9324                 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             Returns:
9329                 New GEOM.GEOM_Object, containing compound of all the
9330                 shapes, obtained after each rotation.
9331
9332             Example of usage:
9333                 rot1d = geompy.MultiRotate1DNbTimes(prism, vect, 4)
9334             """
9335             # Example: see GEOM_TestAll.py
9336             theNbTimes, Parameters = ParseParameters(theNbTimes)
9337             anObj = self.TrsfOp.MultiRotate1D(theObject, theAxis, theNbTimes)
9338             RaiseIfFailed("MultiRotate1DNbTimes", self.TrsfOp)
9339             anObj.SetParameters(Parameters)
9340             self._autoPublish(anObj, theName, "multirotation")
9341             return anObj
9342
9343         ## Rotate the given object around the given axis
9344         #  a given number times on the given angle.
9345         #  @param theObject The object to be rotated.
9346         #  @param theAxis The rotation axis. DZ if None.
9347         #  @param theAngleStep Rotation angle in radians.
9348         #  @param theNbTimes Quantity of rotations to be done.
9349         #  @param theName Object name; when specified, this parameter is used
9350         #         for result publication in the study. Otherwise, if automatic
9351         #         publication is switched on, default value is used for result name.
9352         #
9353         #  @return New GEOM.GEOM_Object, containing compound of all the
9354         #          shapes, obtained after each rotation.
9355         #
9356         #  @ref tui_multi_rotation "Example"
9357         @ManageTransactions("TrsfOp")
9358         def MultiRotate1DByStep(self, theObject, theAxis, theAngleStep, theNbTimes, theName=None):
9359             """
9360             Rotate the given object around the given axis
9361             a given number times on the given angle.
9362
9363             Parameters:
9364                 theObject The object to be rotated.
9365                 theAxis The rotation axis. DZ if None.
9366                 theAngleStep Rotation angle in radians.
9367                 theNbTimes Quantity of rotations to be done.
9368                 theName Object name; when specified, this parameter is used
9369                         for result publication in the study. Otherwise, if automatic
9370                         publication is switched on, default value is used for result name.
9371
9372             Returns:
9373                 New GEOM.GEOM_Object, containing compound of all the
9374                 shapes, obtained after each rotation.
9375
9376             Example of usage:
9377                 rot1d = geompy.MultiRotate1DByStep(prism, vect, math.pi/4, 4)
9378             """
9379             # Example: see GEOM_TestAll.py
9380             theAngleStep, theNbTimes, Parameters = ParseParameters(theAngleStep, theNbTimes)
9381             anObj = self.TrsfOp.MultiRotate1DByStep(theObject, theAxis, theAngleStep, theNbTimes)
9382             RaiseIfFailed("MultiRotate1DByStep", self.TrsfOp)
9383             anObj.SetParameters(Parameters)
9384             self._autoPublish(anObj, theName, "multirotation")
9385             return anObj
9386
9387         ## Rotate the given object around the given axis a given
9388         #  number times and multi-translate each rotation result.
9389         #  Rotation angle will be 2*PI/theNbTimes1.
9390         #  Translation direction passes through center of gravity
9391         #  of rotated shape and its projection on the rotation axis.
9392         #  @param theObject The object to be rotated.
9393         #  @param theAxis Rotation axis. DZ if None.
9394         #  @param theNbTimes1 Quantity of rotations to be done.
9395         #  @param theRadialStep Translation distance.
9396         #  @param theNbTimes2 Quantity of translations to be done.
9397         #  @param theName Object name; when specified, this parameter is used
9398         #         for result publication in the study. Otherwise, if automatic
9399         #         publication is switched on, default value is used for result name.
9400         #
9401         #  @return New GEOM.GEOM_Object, containing compound of all the
9402         #          shapes, obtained after each transformation.
9403         #
9404         #  @ref tui_multi_rotation "Example"
9405         @ManageTransactions("TrsfOp")
9406         def MultiRotate2DNbTimes(self, theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
9407             """
9408             Rotate the given object around the
9409             given axis on the given angle a given number
9410             times and multi-translate each rotation result.
9411             Translation direction passes through center of gravity
9412             of rotated shape and its projection on the rotation axis.
9413
9414             Parameters:
9415                 theObject The object to be rotated.
9416                 theAxis Rotation axis. DZ if None.
9417                 theNbTimes1 Quantity of rotations to be done.
9418                 theRadialStep Translation distance.
9419                 theNbTimes2 Quantity of translations to be done.
9420                 theName Object name; when specified, this parameter is used
9421                         for result publication in the study. Otherwise, if automatic
9422                         publication is switched on, default value is used for result name.
9423
9424             Returns:
9425                 New GEOM.GEOM_Object, containing compound of all the
9426                 shapes, obtained after each transformation.
9427
9428             Example of usage:
9429                 rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
9430             """
9431             # Example: see GEOM_TestAll.py
9432             theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theNbTimes1, theRadialStep, theNbTimes2)
9433             anObj = self.TrsfOp.MultiRotate2DNbTimes(theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2)
9434             RaiseIfFailed("MultiRotate2DNbTimes", self.TrsfOp)
9435             anObj.SetParameters(Parameters)
9436             self._autoPublish(anObj, theName, "multirotation")
9437             return anObj
9438
9439         ## Rotate the given object around the
9440         #  given axis on the given angle a given number
9441         #  times and multi-translate each rotation result.
9442         #  Translation direction passes through center of gravity
9443         #  of rotated shape and its projection on the rotation axis.
9444         #  @param theObject The object to be rotated.
9445         #  @param theAxis Rotation axis. DZ if None.
9446         #  @param theAngleStep Rotation angle in radians.
9447         #  @param theNbTimes1 Quantity of rotations to be done.
9448         #  @param theRadialStep Translation distance.
9449         #  @param theNbTimes2 Quantity of translations to be done.
9450         #  @param theName Object name; when specified, this parameter is used
9451         #         for result publication in the study. Otherwise, if automatic
9452         #         publication is switched on, default value is used for result name.
9453         #
9454         #  @return New GEOM.GEOM_Object, containing compound of all the
9455         #          shapes, obtained after each transformation.
9456         #
9457         #  @ref tui_multi_rotation "Example"
9458         @ManageTransactions("TrsfOp")
9459         def MultiRotate2DByStep (self, theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
9460             """
9461             Rotate the given object around the
9462             given axis on the given angle a given number
9463             times and multi-translate each rotation result.
9464             Translation direction passes through center of gravity
9465             of rotated shape and its projection on the rotation axis.
9466
9467             Parameters:
9468                 theObject The object to be rotated.
9469                 theAxis Rotation axis. DZ if None.
9470                 theAngleStep Rotation angle in radians.
9471                 theNbTimes1 Quantity of rotations to be done.
9472                 theRadialStep Translation distance.
9473                 theNbTimes2 Quantity of translations to be done.
9474                 theName Object name; when specified, this parameter is used
9475                         for result publication in the study. Otherwise, if automatic
9476                         publication is switched on, default value is used for result name.
9477
9478             Returns:
9479                 New GEOM.GEOM_Object, containing compound of all the
9480                 shapes, obtained after each transformation.
9481
9482             Example of usage:
9483                 rot2d = geompy.MultiRotate2D(prism, vect, math.pi/3, 4, 50, 5)
9484             """
9485             # Example: see GEOM_TestAll.py
9486             theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
9487             anObj = self.TrsfOp.MultiRotate2DByStep(theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
9488             RaiseIfFailed("MultiRotate2DByStep", self.TrsfOp)
9489             anObj.SetParameters(Parameters)
9490             self._autoPublish(anObj, theName, "multirotation")
9491             return anObj
9492
9493         ## The same, as MultiRotate1DNbTimes(), but axis is given by direction and point
9494         #
9495         #  @ref swig_MakeMultiRotation "Example"
9496         def MakeMultiRotation1DNbTimes(self, aShape, aDir, aPoint, aNbTimes, theName=None):
9497             """
9498             The same, as geompy.MultiRotate1DNbTimes, but axis is given by direction and point
9499
9500             Example of usage:
9501                 pz = geompy.MakeVertex(0, 0, 100)
9502                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9503                 MultiRot1D = geompy.MakeMultiRotation1DNbTimes(prism, vy, pz, 6)
9504             """
9505             # Example: see GEOM_TestOthers.py
9506             aVec = self.MakeLine(aPoint,aDir)
9507             # note: auto-publishing is done in self.MultiRotate1D()
9508             anObj = self.MultiRotate1DNbTimes(aShape, aVec, aNbTimes, theName)
9509             return anObj
9510
9511         ## The same, as MultiRotate1DByStep(), but axis is given by direction and point
9512         #
9513         #  @ref swig_MakeMultiRotation "Example"
9514         def MakeMultiRotation1DByStep(self, aShape, aDir, aPoint, anAngle, aNbTimes, theName=None):
9515             """
9516             The same, as geompy.MultiRotate1D, but axis is given by direction and point
9517
9518             Example of usage:
9519                 pz = geompy.MakeVertex(0, 0, 100)
9520                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9521                 MultiRot1D = geompy.MakeMultiRotation1DByStep(prism, vy, pz, math.pi/3, 6)
9522             """
9523             # Example: see GEOM_TestOthers.py
9524             aVec = self.MakeLine(aPoint,aDir)
9525             # note: auto-publishing is done in self.MultiRotate1D()
9526             anObj = self.MultiRotate1DByStep(aShape, aVec, anAngle, aNbTimes, theName)
9527             return anObj
9528
9529         ## The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
9530         #
9531         #  @ref swig_MakeMultiRotation "Example"
9532         def MakeMultiRotation2DNbTimes(self, aShape, aDir, aPoint, nbtimes1, aStep, nbtimes2, theName=None):
9533             """
9534             The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
9535
9536             Example of usage:
9537                 pz = geompy.MakeVertex(0, 0, 100)
9538                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9539                 MultiRot2D = geompy.MakeMultiRotation2DNbTimes(f12, vy, pz, 6, 30, 3)
9540             """
9541             # Example: see GEOM_TestOthers.py
9542             aVec = self.MakeLine(aPoint,aDir)
9543             # note: auto-publishing is done in self.MultiRotate2DNbTimes()
9544             anObj = self.MultiRotate2DNbTimes(aShape, aVec, nbtimes1, aStep, nbtimes2, theName)
9545             return anObj
9546
9547         ## The same, as MultiRotate2DByStep(), but axis is given by direction and point
9548         #
9549         #  @ref swig_MakeMultiRotation "Example"
9550         def MakeMultiRotation2DByStep(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
9551             """
9552             The same, as MultiRotate2DByStep(), but axis is given by direction and point
9553
9554             Example of usage:
9555                 pz = geompy.MakeVertex(0, 0, 100)
9556                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9557                 MultiRot2D = geompy.MakeMultiRotation2DByStep(f12, vy, pz, math.pi/4, 6, 30, 3)
9558             """
9559             # Example: see GEOM_TestOthers.py
9560             aVec = self.MakeLine(aPoint,aDir)
9561             # note: auto-publishing is done in self.MultiRotate2D()
9562             anObj = self.MultiRotate2DByStep(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
9563             return anObj
9564
9565         ##
9566         #  Compute a wire or a face that represents a projection of the source
9567         #  shape onto cylinder. The cylinder's coordinate system is the same
9568         #  as the global coordinate system.
9569         #
9570         #  @param theObject The object to be projected. It can be either
9571         #         a planar wire or a face.
9572         #  @param theRadius The radius of the cylinder.
9573         #  @param theStartAngle The starting angle in radians from
9574         #         the cylinder's X axis around Z axis. The angle from which
9575         #         the projection is started.
9576         #  @param theAngleLength The projection length angle in radians.
9577         #         The angle in which to project the total length of the wire.
9578         #         If it is negative the projection is not scaled and natural
9579         #         wire length is kept for the projection.
9580         #  @param theName Object name; when specified, this parameter is used
9581         #         for result publication in the study. Otherwise, if automatic
9582         #         publication is switched on, default value is used for result name.
9583         #
9584         #  @return New GEOM.GEOM_Object, containing the result shape. The result
9585         #         represents a wire or a face that represents a projection of
9586         #         the source shape onto a cylinder.
9587         #
9588         #  @ref tui_projection "Example"
9589         def MakeProjectionOnCylinder (self, theObject, theRadius,
9590                                       theStartAngle=0.0, theAngleLength=-1.0,
9591                                       theName=None):
9592             """
9593             Compute a wire or a face that represents a projection of the source
9594             shape onto cylinder. The cylinder's coordinate system is the same
9595             as the global coordinate system.
9596
9597             Parameters:
9598                 theObject The object to be projected. It can be either
9599                         a planar wire or a face.
9600                 theRadius The radius of the cylinder.
9601                 theStartAngle The starting angle in radians from the cylinder's X axis
9602                         around Z axis. The angle from which the projection is started.
9603                 theAngleLength The projection length angle in radians. The angle in which
9604                         to project the total length of the wire. If it is negative the
9605                         projection is not scaled and natural wire length is kept for
9606                         the projection.
9607                 theName Object name; when specified, this parameter is used
9608                         for result publication in the study. Otherwise, if automatic
9609                         publication is switched on, default value is used for result name.
9610
9611             Returns:
9612                 New GEOM.GEOM_Object, containing the result shape. The result
9613                 represents a wire or a face that represents a projection of
9614                 the source shape onto a cylinder.
9615             """
9616             # Example: see GEOM_TestAll.py
9617             flagStartAngle = False
9618             if isinstance(theStartAngle,str):
9619                 flagStartAngle = True
9620             flagAngleLength = False
9621             if isinstance(theAngleLength,str):
9622                 flagAngleLength = True
9623             theRadius, theStartAngle, theAngleLength, Parameters = ParseParameters(
9624               theRadius, theStartAngle, theAngleLength)
9625             if flagStartAngle:
9626                 theStartAngle = theStartAngle*math.pi/180.
9627             if flagAngleLength:
9628                 theAngleLength = theAngleLength*math.pi/180.
9629             anObj = self.TrsfOp.MakeProjectionOnCylinder(theObject, theRadius,
9630                 theStartAngle, theAngleLength)
9631             RaiseIfFailed("MakeProjectionOnCylinder", self.TrsfOp)
9632             anObj.SetParameters(Parameters)
9633             self._autoPublish(anObj, theName, "projection")
9634             return anObj
9635
9636         # end of l3_transform
9637         ## @}
9638
9639         ## @addtogroup l3_transform_d
9640         ## @{
9641
9642         ## Deprecated method. Use MultiRotate1DNbTimes instead.
9643         def MultiRotate1D(self, theObject, theAxis, theNbTimes, theName=None):
9644             """
9645             Deprecated method. Use MultiRotate1DNbTimes instead.
9646             """
9647             print "The method MultiRotate1D is DEPRECATED. Use MultiRotate1DNbTimes instead."
9648             return self.MultiRotate1DNbTimes(theObject, theAxis, theNbTimes, theName)
9649
9650         ## The same, as MultiRotate2DByStep(), but theAngle is in degrees.
9651         #  This method is DEPRECATED. Use MultiRotate2DByStep() instead.
9652         @ManageTransactions("TrsfOp")
9653         def MultiRotate2D(self, theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2, theName=None):
9654             """
9655             The same, as MultiRotate2DByStep(), but theAngle is in degrees.
9656             This method is DEPRECATED. Use MultiRotate2DByStep() instead.
9657
9658             Example of usage:
9659                 rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
9660             """
9661             print "The method MultiRotate2D is DEPRECATED. Use MultiRotate2DByStep instead."
9662             theAngle, theNbTimes1, theStep, theNbTimes2, Parameters = ParseParameters(theAngle, theNbTimes1, theStep, theNbTimes2)
9663             anObj = self.TrsfOp.MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2)
9664             RaiseIfFailed("MultiRotate2D", self.TrsfOp)
9665             anObj.SetParameters(Parameters)
9666             self._autoPublish(anObj, theName, "multirotation")
9667             return anObj
9668
9669         ## The same, as MultiRotate1D(), but axis is given by direction and point
9670         #  This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
9671         def MakeMultiRotation1D(self, aShape, aDir, aPoint, aNbTimes, theName=None):
9672             """
9673             The same, as geompy.MultiRotate1D, but axis is given by direction and point.
9674             This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
9675
9676             Example of usage:
9677                 pz = geompy.MakeVertex(0, 0, 100)
9678                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9679                 MultiRot1D = geompy.MakeMultiRotation1D(prism, vy, pz, 6)
9680             """
9681             print "The method MakeMultiRotation1D is DEPRECATED. Use MakeMultiRotation1DNbTimes instead."
9682             aVec = self.MakeLine(aPoint,aDir)
9683             # note: auto-publishing is done in self.MultiRotate1D()
9684             anObj = self.MultiRotate1D(aShape, aVec, aNbTimes, theName)
9685             return anObj
9686
9687         ## The same, as MultiRotate2D(), but axis is given by direction and point
9688         #  This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
9689         def MakeMultiRotation2D(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
9690             """
9691             The same, as MultiRotate2D(), but axis is given by direction and point
9692             This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
9693
9694             Example of usage:
9695                 pz = geompy.MakeVertex(0, 0, 100)
9696                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9697                 MultiRot2D = geompy.MakeMultiRotation2D(f12, vy, pz, 45, 6, 30, 3)
9698             """
9699             print "The method MakeMultiRotation2D is DEPRECATED. Use MakeMultiRotation2DByStep instead."
9700             aVec = self.MakeLine(aPoint,aDir)
9701             # note: auto-publishing is done in self.MultiRotate2D()
9702             anObj = self.MultiRotate2D(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
9703             return anObj
9704
9705         # end of l3_transform_d
9706         ## @}
9707
9708         ## @addtogroup l3_local
9709         ## @{
9710
9711         ## Perform a fillet on all edges of the given shape.
9712         #  @param theShape Shape, to perform fillet on.
9713         #  @param theR Fillet radius.
9714         #  @param theName Object name; when specified, this parameter is used
9715         #         for result publication in the study. Otherwise, if automatic
9716         #         publication is switched on, default value is used for result name.
9717         #
9718         #  @return New GEOM.GEOM_Object, containing the result shape.
9719         #
9720         #  @ref tui_fillet "Example 1"
9721         #  \n @ref swig_MakeFilletAll "Example 2"
9722         @ManageTransactions("LocalOp")
9723         def MakeFilletAll(self, theShape, theR, theName=None):
9724             """
9725             Perform a fillet on all edges of the given shape.
9726
9727             Parameters:
9728                 theShape Shape, to perform fillet on.
9729                 theR Fillet radius.
9730                 theName Object name; when specified, this parameter is used
9731                         for result publication in the study. Otherwise, if automatic
9732                         publication is switched on, default value is used for result name.
9733
9734             Returns:
9735                 New GEOM.GEOM_Object, containing the result shape.
9736
9737             Example of usage:
9738                filletall = geompy.MakeFilletAll(prism, 10.)
9739             """
9740             # Example: see GEOM_TestOthers.py
9741             theR,Parameters = ParseParameters(theR)
9742             anObj = self.LocalOp.MakeFilletAll(theShape, theR)
9743             RaiseIfFailed("MakeFilletAll", self.LocalOp)
9744             anObj.SetParameters(Parameters)
9745             self._autoPublish(anObj, theName, "fillet")
9746             return anObj
9747
9748         ## Perform a fillet on the specified edges/faces of the given shape
9749         #  @param theShape Shape, to perform fillet on.
9750         #  @param theR Fillet radius.
9751         #  @param theShapeType Type of shapes in <VAR>theListShapes</VAR> (see ShapeType())
9752         #  @param theListShapes Global indices of edges/faces to perform fillet on.
9753         #  @param theName Object name; when specified, this parameter is used
9754         #         for result publication in the study. Otherwise, if automatic
9755         #         publication is switched on, default value is used for result name.
9756         #
9757         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
9758         #
9759         #  @return New GEOM.GEOM_Object, containing the result shape.
9760         #
9761         #  @ref tui_fillet "Example"
9762         @ManageTransactions("LocalOp")
9763         def MakeFillet(self, theShape, theR, theShapeType, theListShapes, theName=None):
9764             """
9765             Perform a fillet on the specified edges/faces of the given shape
9766
9767             Parameters:
9768                 theShape Shape, to perform fillet on.
9769                 theR Fillet radius.
9770                 theShapeType Type of shapes in theListShapes (see geompy.ShapeTypes)
9771                 theListShapes Global indices of edges/faces to perform fillet on.
9772                 theName Object name; when specified, this parameter is used
9773                         for result publication in the study. Otherwise, if automatic
9774                         publication is switched on, default value is used for result name.
9775
9776             Note:
9777                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
9778
9779             Returns:
9780                 New GEOM.GEOM_Object, containing the result shape.
9781
9782             Example of usage:
9783                 # get the list of IDs (IDList) for the fillet
9784                 prism_edges = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["EDGE"])
9785                 IDlist_e = []
9786                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[0]))
9787                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[1]))
9788                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[2]))
9789                 # make a fillet on the specified edges of the given shape
9790                 fillet = geompy.MakeFillet(prism, 10., geompy.ShapeType["EDGE"], IDlist_e)
9791             """
9792             # Example: see GEOM_TestAll.py
9793             theR,Parameters = ParseParameters(theR)
9794             anObj = None
9795             if theShapeType == self.ShapeType["EDGE"]:
9796                 anObj = self.LocalOp.MakeFilletEdges(theShape, theR, theListShapes)
9797                 RaiseIfFailed("MakeFilletEdges", self.LocalOp)
9798             else:
9799                 anObj = self.LocalOp.MakeFilletFaces(theShape, theR, theListShapes)
9800                 RaiseIfFailed("MakeFilletFaces", self.LocalOp)
9801             anObj.SetParameters(Parameters)
9802             self._autoPublish(anObj, theName, "fillet")
9803             return anObj
9804
9805         ## The same that MakeFillet() but with two Fillet Radius R1 and R2
9806         @ManageTransactions("LocalOp")
9807         def MakeFilletR1R2(self, theShape, theR1, theR2, theShapeType, theListShapes, theName=None):
9808             """
9809             The same that geompy.MakeFillet but with two Fillet Radius R1 and R2
9810
9811             Example of usage:
9812                 # get the list of IDs (IDList) for the fillet
9813                 prism_edges = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["EDGE"])
9814                 IDlist_e = []
9815                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[0]))
9816                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[1]))
9817                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[2]))
9818                 # make a fillet on the specified edges of the given shape
9819                 fillet = geompy.MakeFillet(prism, 10., 15., geompy.ShapeType["EDGE"], IDlist_e)
9820             """
9821             theR1,theR2,Parameters = ParseParameters(theR1,theR2)
9822             anObj = None
9823             if theShapeType == self.ShapeType["EDGE"]:
9824                 anObj = self.LocalOp.MakeFilletEdgesR1R2(theShape, theR1, theR2, theListShapes)
9825                 RaiseIfFailed("MakeFilletEdgesR1R2", self.LocalOp)
9826             else:
9827                 anObj = self.LocalOp.MakeFilletFacesR1R2(theShape, theR1, theR2, theListShapes)
9828                 RaiseIfFailed("MakeFilletFacesR1R2", self.LocalOp)
9829             anObj.SetParameters(Parameters)
9830             self._autoPublish(anObj, theName, "fillet")
9831             return anObj
9832
9833         ## Perform a fillet on the specified edges of the given shape
9834         #  @param theShape  Wire Shape to perform fillet on.
9835         #  @param theR  Fillet radius.
9836         #  @param theListOfVertexes Global indices of vertexes to perform fillet on.
9837         #    \note Global index of sub-shape can be obtained, using method GetSubShapeID()
9838         #    \note The list of vertices could be empty,
9839         #          in this case fillet will done done at all vertices in wire
9840         #  @param doIgnoreSecantVertices If FALSE, fillet radius is always limited
9841         #         by the length of the edges, nearest to the fillet vertex.
9842         #         But sometimes the next edge is C1 continuous with the one, nearest to
9843         #         the fillet point, and such two (or more) edges can be united to allow
9844         #         bigger radius. Set this flag to TRUE to allow collinear edges union,
9845         #         thus ignoring the secant vertex (vertices).
9846         #  @param theName Object name; when specified, this parameter is used
9847         #         for result publication in the study. Otherwise, if automatic
9848         #         publication is switched on, default value is used for result name.
9849         #
9850         #  @return New GEOM.GEOM_Object, containing the result shape.
9851         #
9852         #  @ref tui_fillet2d "Example"
9853         @ManageTransactions("LocalOp")
9854         def MakeFillet1D(self, theShape, theR, theListOfVertexes, doIgnoreSecantVertices = True, theName=None):
9855             """
9856             Perform a fillet on the specified edges of the given shape
9857
9858             Parameters:
9859                 theShape  Wire Shape to perform fillet on.
9860                 theR  Fillet radius.
9861                 theListOfVertexes Global indices of vertexes to perform fillet on.
9862                 doIgnoreSecantVertices If FALSE, fillet radius is always limited
9863                     by the length of the edges, nearest to the fillet vertex.
9864                     But sometimes the next edge is C1 continuous with the one, nearest to
9865                     the fillet point, and such two (or more) edges can be united to allow
9866                     bigger radius. Set this flag to TRUE to allow collinear edges union,
9867                     thus ignoring the secant vertex (vertices).
9868                 theName Object name; when specified, this parameter is used
9869                         for result publication in the study. Otherwise, if automatic
9870                         publication is switched on, default value is used for result name.
9871             Note:
9872                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
9873
9874                 The list of vertices could be empty,in this case fillet will done done at all vertices in wire
9875
9876             Returns:
9877                 New GEOM.GEOM_Object, containing the result shape.
9878
9879             Example of usage:
9880                 # create wire
9881                 Wire_1 = geompy.MakeWire([Edge_12, Edge_7, Edge_11, Edge_6, Edge_1,Edge_4])
9882                 # make fillet at given wire vertices with giver radius
9883                 Fillet_1D_1 = geompy.MakeFillet1D(Wire_1, 55, [3, 4, 6, 8, 10])
9884             """
9885             # Example: see GEOM_TestAll.py
9886             theR,doIgnoreSecantVertices,Parameters = ParseParameters(theR,doIgnoreSecantVertices)
9887             anObj = self.LocalOp.MakeFillet1D(theShape, theR, theListOfVertexes, doIgnoreSecantVertices)
9888             RaiseIfFailed("MakeFillet1D", self.LocalOp)
9889             anObj.SetParameters(Parameters)
9890             self._autoPublish(anObj, theName, "fillet")
9891             return anObj
9892
9893         ## Perform a fillet at the specified vertices of the given face/shell.
9894         #  @param theShape Face or Shell shape to perform fillet on.
9895         #  @param theR Fillet radius.
9896         #  @param theListOfVertexes Global indices of vertexes to perform fillet on.
9897         #  @param theName Object name; when specified, this parameter is used
9898         #         for result publication in the study. Otherwise, if automatic
9899         #         publication is switched on, default value is used for result name.
9900         #
9901         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
9902         #
9903         #  @return New GEOM.GEOM_Object, containing the result shape.
9904         #
9905         #  @ref tui_fillet2d "Example"
9906         @ManageTransactions("LocalOp")
9907         def MakeFillet2D(self, theShape, theR, theListOfVertexes, theName=None):
9908             """
9909             Perform a fillet at the specified vertices of the given face/shell.
9910
9911             Parameters:
9912                 theShape  Face or Shell shape to perform fillet on.
9913                 theR  Fillet radius.
9914                 theListOfVertexes Global indices of vertexes to perform fillet on.
9915                 theName Object name; when specified, this parameter is used
9916                         for result publication in the study. Otherwise, if automatic
9917                         publication is switched on, default value is used for result name.
9918             Note:
9919                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
9920
9921             Returns:
9922                 New GEOM.GEOM_Object, containing the result shape.
9923
9924             Example of usage:
9925                 face = geompy.MakeFaceHW(100, 100, 1)
9926                 fillet2d = geompy.MakeFillet2D(face, 30, [7, 9])
9927             """
9928             # Example: see GEOM_TestAll.py
9929             theR,Parameters = ParseParameters(theR)
9930             anObj = self.LocalOp.MakeFillet2D(theShape, theR, theListOfVertexes)
9931             RaiseIfFailed("MakeFillet2D", self.LocalOp)
9932             anObj.SetParameters(Parameters)
9933             self._autoPublish(anObj, theName, "fillet")
9934             return anObj
9935
9936         ## Perform a symmetric chamfer on all edges of the given shape.
9937         #  @param theShape Shape, to perform chamfer on.
9938         #  @param theD Chamfer size along each face.
9939         #  @param theName Object name; when specified, this parameter is used
9940         #         for result publication in the study. Otherwise, if automatic
9941         #         publication is switched on, default value is used for result name.
9942         #
9943         #  @return New GEOM.GEOM_Object, containing the result shape.
9944         #
9945         #  @ref tui_chamfer "Example 1"
9946         #  \n @ref swig_MakeChamferAll "Example 2"
9947         @ManageTransactions("LocalOp")
9948         def MakeChamferAll(self, theShape, theD, theName=None):
9949             """
9950             Perform a symmetric chamfer on all edges of the given shape.
9951
9952             Parameters:
9953                 theShape Shape, to perform chamfer on.
9954                 theD Chamfer size along each face.
9955                 theName Object name; when specified, this parameter is used
9956                         for result publication in the study. Otherwise, if automatic
9957                         publication is switched on, default value is used for result name.
9958
9959             Returns:
9960                 New GEOM.GEOM_Object, containing the result shape.
9961
9962             Example of usage:
9963                 chamfer_all = geompy.MakeChamferAll(prism, 10.)
9964             """
9965             # Example: see GEOM_TestOthers.py
9966             theD,Parameters = ParseParameters(theD)
9967             anObj = self.LocalOp.MakeChamferAll(theShape, theD)
9968             RaiseIfFailed("MakeChamferAll", self.LocalOp)
9969             anObj.SetParameters(Parameters)
9970             self._autoPublish(anObj, theName, "chamfer")
9971             return anObj
9972
9973         ## Perform a chamfer on edges, common to the specified faces,
9974         #  with distance D1 on the Face1
9975         #  @param theShape Shape, to perform chamfer on.
9976         #  @param theD1 Chamfer size along \a theFace1.
9977         #  @param theD2 Chamfer size along \a theFace2.
9978         #  @param theFace1,theFace2 Global indices of two faces of \a theShape.
9979         #  @param theName Object name; when specified, this parameter is used
9980         #         for result publication in the study. Otherwise, if automatic
9981         #         publication is switched on, default value is used for result name.
9982         #
9983         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
9984         #
9985         #  @return New GEOM.GEOM_Object, containing the result shape.
9986         #
9987         #  @ref tui_chamfer "Example"
9988         @ManageTransactions("LocalOp")
9989         def MakeChamferEdge(self, theShape, theD1, theD2, theFace1, theFace2, theName=None):
9990             """
9991             Perform a chamfer on edges, common to the specified faces,
9992             with distance D1 on the Face1
9993
9994             Parameters:
9995                 theShape Shape, to perform chamfer on.
9996                 theD1 Chamfer size along theFace1.
9997                 theD2 Chamfer size along theFace2.
9998                 theFace1,theFace2 Global indices of two faces of theShape.
9999                 theName Object name; when specified, this parameter is used
10000                         for result publication in the study. Otherwise, if automatic
10001                         publication is switched on, default value is used for result name.
10002
10003             Note:
10004                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10005
10006             Returns:
10007                 New GEOM.GEOM_Object, containing the result shape.
10008
10009             Example of usage:
10010                 prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"])
10011                 f_ind_1 = geompy.GetSubShapeID(prism, prism_faces[0])
10012                 f_ind_2 = geompy.GetSubShapeID(prism, prism_faces[1])
10013                 chamfer_e = geompy.MakeChamferEdge(prism, 10., 10., f_ind_1, f_ind_2)
10014             """
10015             # Example: see GEOM_TestAll.py
10016             theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10017             anObj = self.LocalOp.MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2)
10018             RaiseIfFailed("MakeChamferEdge", self.LocalOp)
10019             anObj.SetParameters(Parameters)
10020             self._autoPublish(anObj, theName, "chamfer")
10021             return anObj
10022
10023         ## Perform a chamfer on edges
10024         #  @param theShape Shape, to perform chamfer on.
10025         #  @param theD Chamfer length
10026         #  @param theAngle Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10027         #  @param theFace1,theFace2 Global indices of two faces of \a theShape.
10028         #  @param theName Object name; when specified, this parameter is used
10029         #         for result publication in the study. Otherwise, if automatic
10030         #         publication is switched on, default value is used for result name.
10031         #
10032         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10033         #
10034         #  @return New GEOM.GEOM_Object, containing the result shape.
10035         @ManageTransactions("LocalOp")
10036         def MakeChamferEdgeAD(self, theShape, theD, theAngle, theFace1, theFace2, theName=None):
10037             """
10038             Perform a chamfer on edges
10039
10040             Parameters:
10041                 theShape Shape, to perform chamfer on.
10042                 theD1 Chamfer size along theFace1.
10043                 theAngle Angle of chamfer (angle in radians or a name of variable which defines angle in degrees).
10044                 theFace1,theFace2 Global indices of two faces of theShape.
10045                 theName Object name; when specified, this parameter is used
10046                         for result publication in the study. Otherwise, if automatic
10047                         publication is switched on, default value is used for result name.
10048
10049             Note:
10050                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10051
10052             Returns:
10053                 New GEOM.GEOM_Object, containing the result shape.
10054
10055             Example of usage:
10056                 prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"])
10057                 f_ind_1 = geompy.GetSubShapeID(prism, prism_faces[0])
10058                 f_ind_2 = geompy.GetSubShapeID(prism, prism_faces[1])
10059                 ang = 30
10060                 chamfer_e = geompy.MakeChamferEdge(prism, 10., ang, f_ind_1, f_ind_2)
10061             """
10062             flag = False
10063             if isinstance(theAngle,str):
10064                 flag = True
10065             theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10066             if flag:
10067                 theAngle = theAngle*math.pi/180.0
10068             anObj = self.LocalOp.MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2)
10069             RaiseIfFailed("MakeChamferEdgeAD", self.LocalOp)
10070             anObj.SetParameters(Parameters)
10071             self._autoPublish(anObj, theName, "chamfer")
10072             return anObj
10073
10074         ## Perform a chamfer on all edges of the specified faces,
10075         #  with distance D1 on the first specified face (if several for one edge)
10076         #  @param theShape Shape, to perform chamfer on.
10077         #  @param theD1 Chamfer size along face from \a theFaces. If both faces,
10078         #               connected to the edge, are in \a theFaces, \a theD1
10079         #               will be get along face, which is nearer to \a theFaces beginning.
10080         #  @param theD2 Chamfer size along another of two faces, connected to the edge.
10081         #  @param theFaces Sequence of global indices of faces of \a theShape.
10082         #  @param theName Object name; when specified, this parameter is used
10083         #         for result publication in the study. Otherwise, if automatic
10084         #         publication is switched on, default value is used for result name.
10085         #
10086         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10087         #
10088         #  @return New GEOM.GEOM_Object, containing the result shape.
10089         #
10090         #  @ref tui_chamfer "Example"
10091         @ManageTransactions("LocalOp")
10092         def MakeChamferFaces(self, theShape, theD1, theD2, theFaces, theName=None):
10093             """
10094             Perform a chamfer on all edges of the specified faces,
10095             with distance D1 on the first specified face (if several for one edge)
10096
10097             Parameters:
10098                 theShape Shape, to perform chamfer on.
10099                 theD1 Chamfer size along face from  theFaces. If both faces,
10100                       connected to the edge, are in theFaces, theD1
10101                       will be get along face, which is nearer to theFaces beginning.
10102                 theD2 Chamfer size along another of two faces, connected to the edge.
10103                 theFaces Sequence of global indices of faces of theShape.
10104                 theName Object name; when specified, this parameter is used
10105                         for result publication in the study. Otherwise, if automatic
10106                         publication is switched on, default value is used for result name.
10107
10108             Note: Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
10109
10110             Returns:
10111                 New GEOM.GEOM_Object, containing the result shape.
10112             """
10113             # Example: see GEOM_TestAll.py
10114             theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10115             anObj = self.LocalOp.MakeChamferFaces(theShape, theD1, theD2, theFaces)
10116             RaiseIfFailed("MakeChamferFaces", self.LocalOp)
10117             anObj.SetParameters(Parameters)
10118             self._autoPublish(anObj, theName, "chamfer")
10119             return anObj
10120
10121         ## The Same that MakeChamferFaces() but with params theD is chamfer lenght and
10122         #  theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10123         #
10124         #  @ref swig_FilletChamfer "Example"
10125         @ManageTransactions("LocalOp")
10126         def MakeChamferFacesAD(self, theShape, theD, theAngle, theFaces, theName=None):
10127             """
10128             The Same that geompy.MakeChamferFaces but with params theD is chamfer lenght and
10129             theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10130             """
10131             flag = False
10132             if isinstance(theAngle,str):
10133                 flag = True
10134             theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10135             if flag:
10136                 theAngle = theAngle*math.pi/180.0
10137             anObj = self.LocalOp.MakeChamferFacesAD(theShape, theD, theAngle, theFaces)
10138             RaiseIfFailed("MakeChamferFacesAD", self.LocalOp)
10139             anObj.SetParameters(Parameters)
10140             self._autoPublish(anObj, theName, "chamfer")
10141             return anObj
10142
10143         ## Perform a chamfer on edges,
10144         #  with distance D1 on the first specified face (if several for one edge)
10145         #  @param theShape Shape, to perform chamfer on.
10146         #  @param theD1,theD2 Chamfer size
10147         #  @param theEdges Sequence of edges of \a theShape.
10148         #  @param theName Object name; when specified, this parameter is used
10149         #         for result publication in the study. Otherwise, if automatic
10150         #         publication is switched on, default value is used for result name.
10151         #
10152         #  @return New GEOM.GEOM_Object, containing the result shape.
10153         #
10154         #  @ref swig_FilletChamfer "Example"
10155         @ManageTransactions("LocalOp")
10156         def MakeChamferEdges(self, theShape, theD1, theD2, theEdges, theName=None):
10157             """
10158             Perform a chamfer on edges,
10159             with distance D1 on the first specified face (if several for one edge)
10160
10161             Parameters:
10162                 theShape Shape, to perform chamfer on.
10163                 theD1,theD2 Chamfer size
10164                 theEdges Sequence of edges of theShape.
10165                 theName Object name; when specified, this parameter is used
10166                         for result publication in the study. Otherwise, if automatic
10167                         publication is switched on, default value is used for result name.
10168
10169             Returns:
10170                 New GEOM.GEOM_Object, containing the result shape.
10171             """
10172             theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10173             anObj = self.LocalOp.MakeChamferEdges(theShape, theD1, theD2, theEdges)
10174             RaiseIfFailed("MakeChamferEdges", self.LocalOp)
10175             anObj.SetParameters(Parameters)
10176             self._autoPublish(anObj, theName, "chamfer")
10177             return anObj
10178
10179         ## The Same that MakeChamferEdges() but with params theD is chamfer lenght and
10180         #  theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10181         @ManageTransactions("LocalOp")
10182         def MakeChamferEdgesAD(self, theShape, theD, theAngle, theEdges, theName=None):
10183             """
10184             The Same that geompy.MakeChamferEdges but with params theD is chamfer lenght and
10185             theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10186             """
10187             flag = False
10188             if isinstance(theAngle,str):
10189                 flag = True
10190             theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10191             if flag:
10192                 theAngle = theAngle*math.pi/180.0
10193             anObj = self.LocalOp.MakeChamferEdgesAD(theShape, theD, theAngle, theEdges)
10194             RaiseIfFailed("MakeChamferEdgesAD", self.LocalOp)
10195             anObj.SetParameters(Parameters)
10196             self._autoPublish(anObj, theName, "chamfer")
10197             return anObj
10198
10199         ## @sa MakeChamferEdge(), MakeChamferFaces()
10200         #
10201         #  @ref swig_MakeChamfer "Example"
10202         def MakeChamfer(self, aShape, d1, d2, aShapeType, ListShape, theName=None):
10203             """
10204             See geompy.MakeChamferEdge() and geompy.MakeChamferFaces() functions for more information.
10205             """
10206             # Example: see GEOM_TestOthers.py
10207             anObj = None
10208             # note: auto-publishing is done in self.MakeChamferEdge() or self.MakeChamferFaces()
10209             if aShapeType == self.ShapeType["EDGE"]:
10210                 anObj = self.MakeChamferEdge(aShape,d1,d2,ListShape[0],ListShape[1],theName)
10211             else:
10212                 anObj = self.MakeChamferFaces(aShape,d1,d2,ListShape,theName)
10213             return anObj
10214
10215         ## Remove material from a solid by extrusion of the base shape on the given distance.
10216         #  @param theInit Shape to remove material from. It must be a solid or
10217         #  a compound made of a single solid.
10218         #  @param theBase Closed edge or wire defining the base shape to be extruded.
10219         #  @param theH Prism dimension along the normal to theBase
10220         #  @param theAngle Draft angle in degrees.
10221         #  @param theInvert If true material changes the direction
10222         #  @param theName Object name; when specified, this parameter is used
10223         #         for result publication in the study. Otherwise, if automatic
10224         #         publication is switched on, default value is used for result name.
10225         #
10226         #  @return New GEOM.GEOM_Object, containing the initial shape with removed material
10227         #
10228         #  @ref tui_creation_prism "Example"
10229         @ManageTransactions("PrimOp")
10230         def MakeExtrudedCut(self, theInit, theBase, theH, theAngle, theInvert=False, theName=None):
10231             """
10232             Add material to a solid by extrusion of the base shape on the given distance.
10233
10234             Parameters:
10235                 theInit Shape to remove material from. It must be a solid or a compound made of a single solid.
10236                 theBase Closed edge or wire defining the base shape to be extruded.
10237                 theH Prism dimension along the normal  to theBase
10238                 theAngle Draft angle in degrees.
10239                 theInvert If true material changes the direction.
10240                 theName Object name; when specified, this parameter is used
10241                         for result publication in the study. Otherwise, if automatic
10242                         publication is switched on, default value is used for result name.
10243
10244             Returns:
10245                 New GEOM.GEOM_Object,  containing the initial shape with removed material.
10246             """
10247             # Example: see GEOM_TestAll.py
10248             theH,theAngle,Parameters = ParseParameters(theH,theAngle)
10249             anObj = self.PrimOp.MakeDraftPrism(theInit, theBase, theH, theAngle, False, theInvert)
10250             RaiseIfFailed("MakeExtrudedBoss", self.PrimOp)
10251             anObj.SetParameters(Parameters)
10252             self._autoPublish(anObj, theName, "extrudedCut")
10253             return anObj
10254
10255         ## Add material to a solid by extrusion of the base shape on the given distance.
10256         #  @param theInit Shape to add material to. It must be a solid or
10257         #  a compound made of a single solid.
10258         #  @param theBase Closed edge or wire defining the base shape to be extruded.
10259         #  @param theH Prism dimension along the normal to theBase
10260         #  @param theAngle Draft angle in degrees.
10261         #  @param theInvert If true material changes the direction
10262         #  @param theName Object name; when specified, this parameter is used
10263         #         for result publication in the study. Otherwise, if automatic
10264         #         publication is switched on, default value is used for result name.
10265         #
10266         #  @return New GEOM.GEOM_Object, containing the initial shape with added material
10267         #
10268         #  @ref tui_creation_prism "Example"
10269         @ManageTransactions("PrimOp")
10270         def MakeExtrudedBoss(self, theInit, theBase, theH, theAngle, theInvert=False, theName=None):
10271             """
10272             Add material to a solid by extrusion of the base shape on the given distance.
10273
10274             Parameters:
10275                 theInit Shape to add material to. It must be a solid or a compound made of a single solid.
10276                 theBase Closed edge or wire defining the base shape to be extruded.
10277                 theH Prism dimension along the normal  to theBase
10278                 theAngle Draft angle in degrees.
10279                 theInvert If true material changes the direction.
10280                 theName Object name; when specified, this parameter is used
10281                         for result publication in the study. Otherwise, if automatic
10282                         publication is switched on, default value is used for result name.
10283
10284             Returns:
10285                 New GEOM.GEOM_Object,  containing the initial shape with added material.
10286             """
10287             # Example: see GEOM_TestAll.py
10288             theH,theAngle,Parameters = ParseParameters(theH,theAngle)
10289             anObj = self.PrimOp.MakeDraftPrism(theInit, theBase, theH, theAngle, True, theInvert)
10290             RaiseIfFailed("MakeExtrudedBoss", self.PrimOp)
10291             anObj.SetParameters(Parameters)
10292             self._autoPublish(anObj, theName, "extrudedBoss")
10293             return anObj
10294
10295         # end of l3_local
10296         ## @}
10297
10298         ## @addtogroup l3_basic_op
10299         ## @{
10300
10301         ## Perform an Archimde operation on the given shape with given parameters.
10302         #  The object presenting the resulting face is returned.
10303         #  @param theShape Shape to be put in water.
10304         #  @param theWeight Weight of the shape.
10305         #  @param theWaterDensity Density of the water.
10306         #  @param theMeshDeflection Deflection of the mesh, using to compute the section.
10307         #  @param 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         #  @return New GEOM.GEOM_Object, containing a section of \a theShape
10312         #          by a plane, corresponding to water level.
10313         #
10314         #  @ref tui_archimede "Example"
10315         @ManageTransactions("LocalOp")
10316         def Archimede(self, theShape, theWeight, theWaterDensity, theMeshDeflection, theName=None):
10317             """
10318             Perform an Archimde operation on the given shape with given parameters.
10319             The object presenting the resulting face is returned.
10320
10321             Parameters:
10322                 theShape Shape to be put in water.
10323                 theWeight Weight of the shape.
10324                 theWaterDensity Density of the water.
10325                 theMeshDeflection Deflection of the mesh, using to compute the section.
10326                 theName Object name; when specified, this parameter is used
10327                         for result publication in the study. Otherwise, if automatic
10328                         publication is switched on, default value is used for result name.
10329
10330             Returns:
10331                 New GEOM.GEOM_Object, containing a section of theShape
10332                 by a plane, corresponding to water level.
10333             """
10334             # Example: see GEOM_TestAll.py
10335             theWeight,theWaterDensity,theMeshDeflection,Parameters = ParseParameters(
10336               theWeight,theWaterDensity,theMeshDeflection)
10337             anObj = self.LocalOp.MakeArchimede(theShape, theWeight, theWaterDensity, theMeshDeflection)
10338             RaiseIfFailed("MakeArchimede", self.LocalOp)
10339             anObj.SetParameters(Parameters)
10340             self._autoPublish(anObj, theName, "archimede")
10341             return anObj
10342
10343         # end of l3_basic_op
10344         ## @}
10345
10346         ## @addtogroup l2_measure
10347         ## @{
10348
10349         ## Get point coordinates
10350         #  @return [x, y, z]
10351         #
10352         #  @ref tui_point_coordinates_page "Example"
10353         @ManageTransactions("MeasuOp")
10354         def PointCoordinates(self,Point):
10355             """
10356             Get point coordinates
10357
10358             Returns:
10359                 [x, y, z]
10360             """
10361             # Example: see GEOM_TestMeasures.py
10362             aTuple = self.MeasuOp.PointCoordinates(Point)
10363             RaiseIfFailed("PointCoordinates", self.MeasuOp)
10364             return aTuple
10365
10366         ## Get vector coordinates
10367         #  @return [x, y, z]
10368         #
10369         #  @ref tui_measurement_tools_page "Example"
10370         def VectorCoordinates(self,Vector):
10371             """
10372             Get vector coordinates
10373
10374             Returns:
10375                 [x, y, z]
10376             """
10377
10378             p1=self.GetFirstVertex(Vector)
10379             p2=self.GetLastVertex(Vector)
10380
10381             X1=self.PointCoordinates(p1)
10382             X2=self.PointCoordinates(p2)
10383
10384             return (X2[0]-X1[0],X2[1]-X1[1],X2[2]-X1[2])
10385
10386
10387         ## Compute cross product
10388         #  @return vector w=u^v
10389         #
10390         #  @ref tui_measurement_tools_page "Example"
10391         def CrossProduct(self, Vector1, Vector2):
10392             """
10393             Compute cross product
10394
10395             Returns: vector w=u^v
10396             """
10397             u=self.VectorCoordinates(Vector1)
10398             v=self.VectorCoordinates(Vector2)
10399             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])
10400
10401             return w
10402
10403         ## Compute cross product
10404         #  @return dot product  p=u.v
10405         #
10406         #  @ref tui_measurement_tools_page "Example"
10407         def DotProduct(self, Vector1, Vector2):
10408             """
10409             Compute cross product
10410
10411             Returns: dot product  p=u.v
10412             """
10413             u=self.VectorCoordinates(Vector1)
10414             v=self.VectorCoordinates(Vector2)
10415             p=u[0]*v[0]+u[1]*v[1]+u[2]*v[2]
10416
10417             return p
10418
10419
10420         ## Get summarized length of all wires,
10421         #  area of surface and volume of the given shape.
10422         #  @param theShape Shape to define properties of.
10423         #  @return [theLength, theSurfArea, theVolume]\n
10424         #  theLength:   Summarized length of all wires of the given shape.\n
10425         #  theSurfArea: Area of surface of the given shape.\n
10426         #  theVolume:   Volume of the given shape.
10427         #
10428         #  @ref tui_basic_properties_page "Example"
10429         @ManageTransactions("MeasuOp")
10430         def BasicProperties(self,theShape):
10431             """
10432             Get summarized length of all wires,
10433             area of surface and volume of the given shape.
10434
10435             Parameters:
10436                 theShape Shape to define properties of.
10437
10438             Returns:
10439                 [theLength, theSurfArea, theVolume]
10440                  theLength:   Summarized length of all wires of the given shape.
10441                  theSurfArea: Area of surface of the given shape.
10442                  theVolume:   Volume of the given shape.
10443             """
10444             # Example: see GEOM_TestMeasures.py
10445             aTuple = self.MeasuOp.GetBasicProperties(theShape)
10446             RaiseIfFailed("GetBasicProperties", self.MeasuOp)
10447             return aTuple
10448
10449         ## Get parameters of bounding box of the given shape
10450         #  @param theShape Shape to obtain bounding box of.
10451         #  @param precise TRUE for precise computation; FALSE for fast one.
10452         #  @return [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
10453         #  Xmin,Xmax: Limits of shape along OX axis.
10454         #  Ymin,Ymax: Limits of shape along OY axis.
10455         #  Zmin,Zmax: Limits of shape along OZ axis.
10456         #
10457         #  @ref tui_bounding_box_page "Example"
10458         @ManageTransactions("MeasuOp")
10459         def BoundingBox (self, theShape, precise=False):
10460             """
10461             Get parameters of bounding box of the given shape
10462
10463             Parameters:
10464                 theShape Shape to obtain bounding box of.
10465                 precise TRUE for precise computation; FALSE for fast one.
10466
10467             Returns:
10468                 [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
10469                  Xmin,Xmax: Limits of shape along OX axis.
10470                  Ymin,Ymax: Limits of shape along OY axis.
10471                  Zmin,Zmax: Limits of shape along OZ axis.
10472             """
10473             # Example: see GEOM_TestMeasures.py
10474             aTuple = self.MeasuOp.GetBoundingBox(theShape, precise)
10475             RaiseIfFailed("GetBoundingBox", self.MeasuOp)
10476             return aTuple
10477
10478         ## Get bounding box of the given shape
10479         #  @param theShape Shape to obtain bounding box of.
10480         #  @param precise TRUE for precise computation; FALSE for fast one.
10481         #  @param theName Object name; when specified, this parameter is used
10482         #         for result publication in the study. Otherwise, if automatic
10483         #         publication is switched on, default value is used for result name.
10484         #
10485         #  @return New GEOM.GEOM_Object, containing the created box.
10486         #
10487         #  @ref tui_bounding_box_page "Example"
10488         @ManageTransactions("MeasuOp")
10489         def MakeBoundingBox (self, theShape, precise=False, theName=None):
10490             """
10491             Get bounding box of the given shape
10492
10493             Parameters:
10494                 theShape Shape to obtain bounding box of.
10495                 precise TRUE for precise computation; FALSE for fast one.
10496                 theName Object name; when specified, this parameter is used
10497                         for result publication in the study. Otherwise, if automatic
10498                         publication is switched on, default value is used for result name.
10499
10500             Returns:
10501                 New GEOM.GEOM_Object, containing the created box.
10502             """
10503             # Example: see GEOM_TestMeasures.py
10504             anObj = self.MeasuOp.MakeBoundingBox(theShape, precise)
10505             RaiseIfFailed("MakeBoundingBox", self.MeasuOp)
10506             self._autoPublish(anObj, theName, "bndbox")
10507             return anObj
10508
10509         ## Get inertia matrix and moments of inertia of theShape.
10510         #  @param theShape Shape to calculate inertia of.
10511         #  @return [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
10512         #  I(1-3)(1-3): Components of the inertia matrix of the given shape.
10513         #  Ix,Iy,Iz:    Moments of inertia of the given shape.
10514         #
10515         #  @ref tui_inertia_page "Example"
10516         @ManageTransactions("MeasuOp")
10517         def Inertia(self,theShape):
10518             """
10519             Get inertia matrix and moments of inertia of theShape.
10520
10521             Parameters:
10522                 theShape Shape to calculate inertia of.
10523
10524             Returns:
10525                 [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
10526                  I(1-3)(1-3): Components of the inertia matrix of the given shape.
10527                  Ix,Iy,Iz:    Moments of inertia of the given shape.
10528             """
10529             # Example: see GEOM_TestMeasures.py
10530             aTuple = self.MeasuOp.GetInertia(theShape)
10531             RaiseIfFailed("GetInertia", self.MeasuOp)
10532             return aTuple
10533
10534         ## Get if coords are included in the shape (ST_IN or ST_ON)
10535         #  @param theShape Shape
10536         #  @param coords list of points coordinates [x1, y1, z1, x2, y2, z2, ...]
10537         #  @param tolerance to be used (default is 1.0e-7)
10538         #  @return list_of_boolean = [res1, res2, ...]
10539         @ManageTransactions("MeasuOp")
10540         def AreCoordsInside(self, theShape, coords, tolerance=1.e-7):
10541             """
10542             Get if coords are included in the shape (ST_IN or ST_ON)
10543
10544             Parameters:
10545                 theShape Shape
10546                 coords list of points coordinates [x1, y1, z1, x2, y2, z2, ...]
10547                 tolerance to be used (default is 1.0e-7)
10548
10549             Returns:
10550                 list_of_boolean = [res1, res2, ...]
10551             """
10552             return self.MeasuOp.AreCoordsInside(theShape, coords, tolerance)
10553
10554         ## Get minimal distance between the given shapes.
10555         #  @param theShape1,theShape2 Shapes to find minimal distance between.
10556         #  @return Value of the minimal distance between the given shapes.
10557         #
10558         #  @ref tui_min_distance_page "Example"
10559         @ManageTransactions("MeasuOp")
10560         def MinDistance(self, theShape1, theShape2):
10561             """
10562             Get minimal distance between the given shapes.
10563
10564             Parameters:
10565                 theShape1,theShape2 Shapes to find minimal distance between.
10566
10567             Returns:
10568                 Value of the minimal distance between the given shapes.
10569             """
10570             # Example: see GEOM_TestMeasures.py
10571             aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
10572             RaiseIfFailed("GetMinDistance", self.MeasuOp)
10573             return aTuple[0]
10574
10575         ## Get minimal distance between the given shapes.
10576         #  @param theShape1,theShape2 Shapes to find minimal distance between.
10577         #  @return Value of the minimal distance between the given shapes, in form of list
10578         #          [Distance, DX, DY, DZ].
10579         #
10580         #  @ref tui_min_distance_page "Example"
10581         @ManageTransactions("MeasuOp")
10582         def MinDistanceComponents(self, theShape1, theShape2):
10583             """
10584             Get minimal distance between the given shapes.
10585
10586             Parameters:
10587                 theShape1,theShape2 Shapes to find minimal distance between.
10588
10589             Returns:
10590                 Value of the minimal distance between the given shapes, in form of list
10591                 [Distance, DX, DY, DZ]
10592             """
10593             # Example: see GEOM_TestMeasures.py
10594             aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
10595             RaiseIfFailed("GetMinDistance", self.MeasuOp)
10596             aRes = [aTuple[0], aTuple[4] - aTuple[1], aTuple[5] - aTuple[2], aTuple[6] - aTuple[3]]
10597             return aRes
10598
10599         ## Get closest points of the given shapes.
10600         #  @param theShape1,theShape2 Shapes to find closest points of.
10601         #  @return The number of found solutions (-1 in case of infinite number of
10602         #          solutions) and a list of (X, Y, Z) coordinates for all couples of points.
10603         #
10604         #  @ref tui_min_distance_page "Example"
10605         @ManageTransactions("MeasuOp")
10606         def ClosestPoints (self, theShape1, theShape2):
10607             """
10608             Get closest points of the given shapes.
10609
10610             Parameters:
10611                 theShape1,theShape2 Shapes to find closest points of.
10612
10613             Returns:
10614                 The number of found solutions (-1 in case of infinite number of
10615                 solutions) and a list of (X, Y, Z) coordinates for all couples of points.
10616             """
10617             # Example: see GEOM_TestMeasures.py
10618             aTuple = self.MeasuOp.ClosestPoints(theShape1, theShape2)
10619             RaiseIfFailed("ClosestPoints", self.MeasuOp)
10620             return aTuple
10621
10622         ## Get angle between the given shapes in degrees.
10623         #  @param theShape1,theShape2 Lines or linear edges to find angle between.
10624         #  @note If both arguments are vectors, the angle is computed in accordance
10625         #        with their orientations, otherwise the minimum angle is computed.
10626         #  @return Value of the angle between the given shapes in degrees.
10627         #
10628         #  @ref tui_angle_page "Example"
10629         @ManageTransactions("MeasuOp")
10630         def GetAngle(self, theShape1, theShape2):
10631             """
10632             Get angle between the given shapes in degrees.
10633
10634             Parameters:
10635                 theShape1,theShape2 Lines or linear edges to find angle between.
10636
10637             Note:
10638                 If both arguments are vectors, the angle is computed in accordance
10639                 with their orientations, otherwise the minimum angle is computed.
10640
10641             Returns:
10642                 Value of the angle between the given shapes in degrees.
10643             """
10644             # Example: see GEOM_TestMeasures.py
10645             anAngle = self.MeasuOp.GetAngle(theShape1, theShape2)
10646             RaiseIfFailed("GetAngle", self.MeasuOp)
10647             return anAngle
10648
10649         ## Get angle between the given shapes in radians.
10650         #  @param theShape1,theShape2 Lines or linear edges to find angle between.
10651         #  @note If both arguments are vectors, the angle is computed in accordance
10652         #        with their orientations, otherwise the minimum angle is computed.
10653         #  @return Value of the angle between the given shapes in radians.
10654         #
10655         #  @ref tui_angle_page "Example"
10656         @ManageTransactions("MeasuOp")
10657         def GetAngleRadians(self, theShape1, theShape2):
10658             """
10659             Get angle between the given shapes in radians.
10660
10661             Parameters:
10662                 theShape1,theShape2 Lines or linear edges to find angle between.
10663
10664
10665             Note:
10666                 If both arguments are vectors, the angle is computed in accordance
10667                 with their orientations, otherwise the minimum angle is computed.
10668
10669             Returns:
10670                 Value of the angle between the given shapes in radians.
10671             """
10672             # Example: see GEOM_TestMeasures.py
10673             anAngle = self.MeasuOp.GetAngle(theShape1, theShape2)*math.pi/180.
10674             RaiseIfFailed("GetAngle", self.MeasuOp)
10675             return anAngle
10676
10677         ## Get angle between the given vectors in degrees.
10678         #  @param theShape1,theShape2 Vectors to find angle between.
10679         #  @param theFlag If True, the normal vector is defined by the two vectors cross,
10680         #                 if False, the opposite vector to the normal vector is used.
10681         #  @return Value of the angle between the given vectors in degrees.
10682         #
10683         #  @ref tui_angle_page "Example"
10684         @ManageTransactions("MeasuOp")
10685         def GetAngleVectors(self, theShape1, theShape2, theFlag = True):
10686             """
10687             Get angle between the given vectors in degrees.
10688
10689             Parameters:
10690                 theShape1,theShape2 Vectors to find angle between.
10691                 theFlag If True, the normal vector is defined by the two vectors cross,
10692                         if False, the opposite vector to the normal vector is used.
10693
10694             Returns:
10695                 Value of the angle between the given vectors in degrees.
10696             """
10697             anAngle = self.MeasuOp.GetAngleBtwVectors(theShape1, theShape2)
10698             if not theFlag:
10699                 anAngle = 360. - anAngle
10700             RaiseIfFailed("GetAngleVectors", self.MeasuOp)
10701             return anAngle
10702
10703         ## The same as GetAngleVectors, but the result is in radians.
10704         def GetAngleRadiansVectors(self, theShape1, theShape2, theFlag = True):
10705             """
10706             Get angle between the given vectors in radians.
10707
10708             Parameters:
10709                 theShape1,theShape2 Vectors to find angle between.
10710                 theFlag If True, the normal vector is defined by the two vectors cross,
10711                         if False, the opposite vector to the normal vector is used.
10712
10713             Returns:
10714                 Value of the angle between the given vectors in radians.
10715             """
10716             anAngle = self.GetAngleVectors(theShape1, theShape2, theFlag)*math.pi/180.
10717             return anAngle
10718
10719         ## @name Curve Curvature Measurement
10720         #  Methods for receiving radius of curvature of curves
10721         #  in the given point
10722         ## @{
10723
10724         ## Measure curvature of a curve at a point, set by parameter.
10725         #  @param theCurve a curve.
10726         #  @param theParam parameter.
10727         #  @return radius of curvature of \a theCurve.
10728         #
10729         #  @ref swig_todo "Example"
10730         @ManageTransactions("MeasuOp")
10731         def CurveCurvatureByParam(self, theCurve, theParam):
10732             """
10733             Measure curvature of a curve at a point, set by parameter.
10734
10735             Parameters:
10736                 theCurve a curve.
10737                 theParam parameter.
10738
10739             Returns:
10740                 radius of curvature of theCurve.
10741             """
10742             # Example: see GEOM_TestMeasures.py
10743             aCurv = self.MeasuOp.CurveCurvatureByParam(theCurve,theParam)
10744             RaiseIfFailed("CurveCurvatureByParam", self.MeasuOp)
10745             return aCurv
10746
10747         ## Measure curvature of a curve at a point.
10748         #  @param theCurve a curve.
10749         #  @param thePoint given point.
10750         #  @return radius of curvature of \a theCurve.
10751         #
10752         #  @ref swig_todo "Example"
10753         @ManageTransactions("MeasuOp")
10754         def CurveCurvatureByPoint(self, theCurve, thePoint):
10755             """
10756             Measure curvature of a curve at a point.
10757
10758             Parameters:
10759                 theCurve a curve.
10760                 thePoint given point.
10761
10762             Returns:
10763                 radius of curvature of theCurve.
10764             """
10765             aCurv = self.MeasuOp.CurveCurvatureByPoint(theCurve,thePoint)
10766             RaiseIfFailed("CurveCurvatureByPoint", self.MeasuOp)
10767             return aCurv
10768         ## @}
10769
10770         ## @name Surface Curvature Measurement
10771         #  Methods for receiving max and min radius of curvature of surfaces
10772         #  in the given point
10773         ## @{
10774
10775         ## Measure max radius of curvature of surface.
10776         #  @param theSurf the given surface.
10777         #  @param theUParam Value of U-parameter on the referenced surface.
10778         #  @param theVParam Value of V-parameter on the referenced surface.
10779         #  @return max radius of curvature of theSurf.
10780         #
10781         ## @ref swig_todo "Example"
10782         @ManageTransactions("MeasuOp")
10783         def MaxSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
10784             """
10785             Measure max radius of curvature of surface.
10786
10787             Parameters:
10788                 theSurf the given surface.
10789                 theUParam Value of U-parameter on the referenced surface.
10790                 theVParam Value of V-parameter on the referenced surface.
10791
10792             Returns:
10793                 max radius of curvature of theSurf.
10794             """
10795             # Example: see GEOM_TestMeasures.py
10796             aSurf = self.MeasuOp.MaxSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
10797             RaiseIfFailed("MaxSurfaceCurvatureByParam", self.MeasuOp)
10798             return aSurf
10799
10800         ## Measure max radius of curvature of surface in the given point
10801         #  @param theSurf the given surface.
10802         #  @param thePoint given point.
10803         #  @return max radius of curvature of theSurf.
10804         #
10805         ## @ref swig_todo "Example"
10806         @ManageTransactions("MeasuOp")
10807         def MaxSurfaceCurvatureByPoint(self, theSurf, thePoint):
10808             """
10809             Measure max radius of curvature of surface in the given point.
10810
10811             Parameters:
10812                 theSurf the given surface.
10813                 thePoint given point.
10814
10815             Returns:
10816                 max radius of curvature of theSurf.
10817             """
10818             aSurf = self.MeasuOp.MaxSurfaceCurvatureByPoint(theSurf,thePoint)
10819             RaiseIfFailed("MaxSurfaceCurvatureByPoint", self.MeasuOp)
10820             return aSurf
10821
10822         ## Measure min radius of curvature of surface.
10823         #  @param theSurf the given surface.
10824         #  @param theUParam Value of U-parameter on the referenced surface.
10825         #  @param theVParam Value of V-parameter on the referenced surface.
10826         #  @return min radius of curvature of theSurf.
10827         #
10828         ## @ref swig_todo "Example"
10829         @ManageTransactions("MeasuOp")
10830         def MinSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
10831             """
10832             Measure min radius of curvature of surface.
10833
10834             Parameters:
10835                 theSurf the given surface.
10836                 theUParam Value of U-parameter on the referenced surface.
10837                 theVParam Value of V-parameter on the referenced surface.
10838
10839             Returns:
10840                 Min radius of curvature of theSurf.
10841             """
10842             aSurf = self.MeasuOp.MinSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
10843             RaiseIfFailed("MinSurfaceCurvatureByParam", self.MeasuOp)
10844             return aSurf
10845
10846         ## Measure min radius of curvature of surface in the given point
10847         #  @param theSurf the given surface.
10848         #  @param thePoint given point.
10849         #  @return min radius of curvature of theSurf.
10850         #
10851         ## @ref swig_todo "Example"
10852         @ManageTransactions("MeasuOp")
10853         def MinSurfaceCurvatureByPoint(self, theSurf, thePoint):
10854             """
10855             Measure min radius of curvature of surface in the given point.
10856
10857             Parameters:
10858                 theSurf the given surface.
10859                 thePoint given point.
10860
10861             Returns:
10862                 Min radius of curvature of theSurf.
10863             """
10864             aSurf = self.MeasuOp.MinSurfaceCurvatureByPoint(theSurf,thePoint)
10865             RaiseIfFailed("MinSurfaceCurvatureByPoint", self.MeasuOp)
10866             return aSurf
10867         ## @}
10868
10869         ## Get min and max tolerances of sub-shapes of theShape
10870         #  @param theShape Shape, to get tolerances of.
10871         #  @return [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]\n
10872         #  FaceMin,FaceMax: Min and max tolerances of the faces.\n
10873         #  EdgeMin,EdgeMax: Min and max tolerances of the edges.\n
10874         #  VertMin,VertMax: Min and max tolerances of the vertices.
10875         #
10876         #  @ref tui_tolerance_page "Example"
10877         @ManageTransactions("MeasuOp")
10878         def Tolerance(self,theShape):
10879             """
10880             Get min and max tolerances of sub-shapes of theShape
10881
10882             Parameters:
10883                 theShape Shape, to get tolerances of.
10884
10885             Returns:
10886                 [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]
10887                  FaceMin,FaceMax: Min and max tolerances of the faces.
10888                  EdgeMin,EdgeMax: Min and max tolerances of the edges.
10889                  VertMin,VertMax: Min and max tolerances of the vertices.
10890             """
10891             # Example: see GEOM_TestMeasures.py
10892             aTuple = self.MeasuOp.GetTolerance(theShape)
10893             RaiseIfFailed("GetTolerance", self.MeasuOp)
10894             return aTuple
10895
10896         ## Obtain description of the given shape (number of sub-shapes of each type)
10897         #  @param theShape Shape to be described.
10898         #  @return Description of the given shape.
10899         #
10900         #  @ref tui_whatis_page "Example"
10901         @ManageTransactions("MeasuOp")
10902         def WhatIs(self,theShape):
10903             """
10904             Obtain description of the given shape (number of sub-shapes of each type)
10905
10906             Parameters:
10907                 theShape Shape to be described.
10908
10909             Returns:
10910                 Description of the given shape.
10911             """
10912             # Example: see GEOM_TestMeasures.py
10913             aDescr = self.MeasuOp.WhatIs(theShape)
10914             RaiseIfFailed("WhatIs", self.MeasuOp)
10915             return aDescr
10916
10917         ## Obtain quantity of shapes of the given type in \a theShape.
10918         #  If \a theShape is of type \a theType, it is also counted.
10919         #  @param theShape Shape to be described.
10920         #  @param theType the given ShapeType().
10921         #  @return Quantity of shapes of type \a theType in \a theShape.
10922         #
10923         #  @ref tui_measurement_tools_page "Example"
10924         def NbShapes (self, theShape, theType):
10925             """
10926             Obtain quantity of shapes of the given type in theShape.
10927             If theShape is of type theType, it is also counted.
10928
10929             Parameters:
10930                 theShape Shape to be described.
10931                 theType the given geompy.ShapeType
10932
10933             Returns:
10934                 Quantity of shapes of type theType in theShape.
10935             """
10936             # Example: see GEOM_TestMeasures.py
10937             listSh = self.SubShapeAllIDs(theShape, theType)
10938             Nb = len(listSh)
10939             return Nb
10940
10941         ## Obtain quantity of shapes of each type in \a theShape.
10942         #  The \a theShape is also counted.
10943         #  @param theShape Shape to be described.
10944         #  @return Dictionary of ShapeType() with bound quantities of shapes.
10945         #
10946         #  @ref tui_measurement_tools_page "Example"
10947         def ShapeInfo (self, theShape):
10948             """
10949             Obtain quantity of shapes of each type in theShape.
10950             The theShape is also counted.
10951
10952             Parameters:
10953                 theShape Shape to be described.
10954
10955             Returns:
10956                 Dictionary of geompy.ShapeType with bound quantities of shapes.
10957             """
10958             # Example: see GEOM_TestMeasures.py
10959             aDict = {}
10960             for typeSh in self.ShapeType:
10961                 if typeSh in ( "AUTO", "SHAPE" ): continue
10962                 listSh = self.SubShapeAllIDs(theShape, self.ShapeType[typeSh])
10963                 Nb = len(listSh)
10964                 aDict[typeSh] = Nb
10965                 pass
10966             return aDict
10967
10968         def GetCreationInformation(self, theShape):
10969             info = theShape.GetCreationInformation()
10970             # operationName
10971             opName = info.operationName
10972             if not opName: opName = "no info available"
10973             res = "Operation: " + opName
10974             # parameters
10975             for parVal in info.params:
10976                 res += " \n %s = %s" % ( parVal.name, parVal.value )
10977             return res
10978
10979         ## Get a point, situated at the centre of mass of theShape.
10980         #  @param theShape Shape to define centre of mass of.
10981         #  @param theName Object name; when specified, this parameter is used
10982         #         for result publication in the study. Otherwise, if automatic
10983         #         publication is switched on, default value is used for result name.
10984         #
10985         #  @return New GEOM.GEOM_Object, containing the created point.
10986         #
10987         #  @ref tui_center_of_mass_page "Example"
10988         @ManageTransactions("MeasuOp")
10989         def MakeCDG(self, theShape, theName=None):
10990             """
10991             Get a point, situated at the centre of mass of theShape.
10992
10993             Parameters:
10994                 theShape Shape to define centre of mass of.
10995                 theName Object name; when specified, this parameter is used
10996                         for result publication in the study. Otherwise, if automatic
10997                         publication is switched on, default value is used for result name.
10998
10999             Returns:
11000                 New GEOM.GEOM_Object, containing the created point.
11001             """
11002             # Example: see GEOM_TestMeasures.py
11003             anObj = self.MeasuOp.GetCentreOfMass(theShape)
11004             RaiseIfFailed("GetCentreOfMass", self.MeasuOp)
11005             self._autoPublish(anObj, theName, "centerOfMass")
11006             return anObj
11007
11008         ## Get a vertex sub-shape by index depended with orientation.
11009         #  @param theShape Shape to find sub-shape.
11010         #  @param theIndex Index to find vertex by this index (starting from zero)
11011         #  @param theName Object name; when specified, this parameter is used
11012         #         for result publication in the study. Otherwise, if automatic
11013         #         publication is switched on, default value is used for result name.
11014         #
11015         #  @return New GEOM.GEOM_Object, containing the created vertex.
11016         #
11017         #  @ref tui_measurement_tools_page "Example"
11018         @ManageTransactions("MeasuOp")
11019         def GetVertexByIndex(self, theShape, theIndex, theName=None):
11020             """
11021             Get a vertex sub-shape by index depended with orientation.
11022
11023             Parameters:
11024                 theShape Shape to find sub-shape.
11025                 theIndex Index to find vertex by this index (starting from zero)
11026                 theName Object name; when specified, this parameter is used
11027                         for result publication in the study. Otherwise, if automatic
11028                         publication is switched on, default value is used for result name.
11029
11030             Returns:
11031                 New GEOM.GEOM_Object, containing the created vertex.
11032             """
11033             # Example: see GEOM_TestMeasures.py
11034             anObj = self.MeasuOp.GetVertexByIndex(theShape, theIndex)
11035             RaiseIfFailed("GetVertexByIndex", self.MeasuOp)
11036             self._autoPublish(anObj, theName, "vertex")
11037             return anObj
11038
11039         ## Get the first vertex of wire/edge depended orientation.
11040         #  @param theShape Shape to find first vertex.
11041         #  @param theName Object name; when specified, this parameter is used
11042         #         for result publication in the study. Otherwise, if automatic
11043         #         publication is switched on, default value is used for result name.
11044         #
11045         #  @return New GEOM.GEOM_Object, containing the created vertex.
11046         #
11047         #  @ref tui_measurement_tools_page "Example"
11048         def GetFirstVertex(self, theShape, theName=None):
11049             """
11050             Get the first vertex of wire/edge depended orientation.
11051
11052             Parameters:
11053                 theShape Shape to find first vertex.
11054                 theName Object name; when specified, this parameter is used
11055                         for result publication in the study. Otherwise, if automatic
11056                         publication is switched on, default value is used for result name.
11057
11058             Returns:
11059                 New GEOM.GEOM_Object, containing the created vertex.
11060             """
11061             # Example: see GEOM_TestMeasures.py
11062             # note: auto-publishing is done in self.GetVertexByIndex()
11063             return self.GetVertexByIndex(theShape, 0, theName)
11064
11065         ## Get the last vertex of wire/edge depended orientation.
11066         #  @param theShape Shape to find last vertex.
11067         #  @param theName Object name; when specified, this parameter is used
11068         #         for result publication in the study. Otherwise, if automatic
11069         #         publication is switched on, default value is used for result name.
11070         #
11071         #  @return New GEOM.GEOM_Object, containing the created vertex.
11072         #
11073         #  @ref tui_measurement_tools_page "Example"
11074         def GetLastVertex(self, theShape, theName=None):
11075             """
11076             Get the last vertex of wire/edge depended orientation.
11077
11078             Parameters:
11079                 theShape Shape to find last vertex.
11080                 theName Object name; when specified, this parameter is used
11081                         for result publication in the study. Otherwise, if automatic
11082                         publication is switched on, default value is used for result name.
11083
11084             Returns:
11085                 New GEOM.GEOM_Object, containing the created vertex.
11086             """
11087             # Example: see GEOM_TestMeasures.py
11088             nb_vert =  self.NumberOfSubShapes(theShape, self.ShapeType["VERTEX"])
11089             # note: auto-publishing is done in self.GetVertexByIndex()
11090             return self.GetVertexByIndex(theShape, (nb_vert-1), theName)
11091
11092         ## Get a normale to the given face. If the point is not given,
11093         #  the normale is calculated at the center of mass.
11094         #  @param theFace Face to define normale of.
11095         #  @param theOptionalPoint Point to compute the normale at.
11096         #  @param theName Object name; when specified, this parameter is used
11097         #         for result publication in the study. Otherwise, if automatic
11098         #         publication is switched on, default value is used for result name.
11099         #
11100         #  @return New GEOM.GEOM_Object, containing the created vector.
11101         #
11102         #  @ref swig_todo "Example"
11103         @ManageTransactions("MeasuOp")
11104         def GetNormal(self, theFace, theOptionalPoint = None, theName=None):
11105             """
11106             Get a normale to the given face. If the point is not given,
11107             the normale is calculated at the center of mass.
11108
11109             Parameters:
11110                 theFace Face to define normale of.
11111                 theOptionalPoint Point to compute the normale at.
11112                 theName Object name; when specified, this parameter is used
11113                         for result publication in the study. Otherwise, if automatic
11114                         publication is switched on, default value is used for result name.
11115
11116             Returns:
11117                 New GEOM.GEOM_Object, containing the created vector.
11118             """
11119             # Example: see GEOM_TestMeasures.py
11120             anObj = self.MeasuOp.GetNormal(theFace, theOptionalPoint)
11121             RaiseIfFailed("GetNormal", self.MeasuOp)
11122             self._autoPublish(anObj, theName, "normal")
11123             return anObj
11124
11125         ## Print shape errors obtained from CheckShape.
11126         #  @param theShape Shape that was checked.
11127         #  @param theShapeErrors the shape errors obtained by CheckShape.
11128         #  @param theReturnStatus If 0 the description of problem is printed.
11129         #                         If 1 the description of problem is returned.
11130         #  @return If theReturnStatus is equal to 1 the description is returned.
11131         #          Otherwise doesn't return anything.
11132         #
11133         #  @ref tui_check_shape_page "Example"
11134         @ManageTransactions("MeasuOp")
11135         def PrintShapeErrors(self, theShape, theShapeErrors, theReturnStatus = 0):
11136             """
11137             Print shape errors obtained from CheckShape.
11138
11139             Parameters:
11140                 theShape Shape that was checked.
11141                 theShapeErrors the shape errors obtained by CheckShape.
11142                 theReturnStatus If 0 the description of problem is printed.
11143                                 If 1 the description of problem is returned.
11144
11145             Returns:
11146                 If theReturnStatus is equal to 1 the description is returned.
11147                   Otherwise doesn't return anything.
11148             """
11149             # Example: see GEOM_TestMeasures.py
11150             Descr = self.MeasuOp.PrintShapeErrors(theShape, theShapeErrors)
11151             if theReturnStatus == 1:
11152                 return Descr
11153             print Descr
11154             pass
11155
11156         ## Check a topology of the given shape.
11157         #  @param theShape Shape to check validity of.
11158         #  @param theIsCheckGeom If FALSE, only the shape's topology will be checked, \n
11159         #                        if TRUE, the shape's geometry will be checked also.
11160         #  @param theReturnStatus If 0 and if theShape is invalid, a description
11161         #                         of problem is printed.
11162         #                         If 1 isValid flag and the description of
11163         #                         problem is returned.
11164         #                         If 2 isValid flag and the list of error data
11165         #                         is returned.
11166         #  @return TRUE, if the shape "seems to be valid".
11167         #          If theShape is invalid, prints a description of problem.
11168         #          If theReturnStatus is equal to 1 the description is returned
11169         #          along with IsValid flag.
11170         #          If theReturnStatus is equal to 2 the list of error data is
11171         #          returned along with IsValid flag.
11172         #
11173         #  @ref tui_check_shape_page "Example"
11174         @ManageTransactions("MeasuOp")
11175         def CheckShape(self,theShape, theIsCheckGeom = 0, theReturnStatus = 0):
11176             """
11177             Check a topology of the given shape.
11178
11179             Parameters:
11180                 theShape Shape to check validity of.
11181                 theIsCheckGeom If FALSE, only the shape's topology will be checked,
11182                                if TRUE, the shape's geometry will be checked also.
11183                 theReturnStatus If 0 and if theShape is invalid, a description
11184                                 of problem is printed.
11185                                 If 1 IsValid flag and the description of
11186                                 problem is returned.
11187                                 If 2 IsValid flag and the list of error data
11188                                 is returned.
11189
11190             Returns:
11191                 TRUE, if the shape "seems to be valid".
11192                 If theShape is invalid, prints a description of problem.
11193                 If theReturnStatus is equal to 1 the description is returned
11194                 along with IsValid flag.
11195                 If theReturnStatus is equal to 2 the list of error data is
11196                 returned along with IsValid flag.
11197             """
11198             # Example: see GEOM_TestMeasures.py
11199             if theIsCheckGeom:
11200                 (IsValid, ShapeErrors) = self.MeasuOp.CheckShapeWithGeometry(theShape)
11201                 RaiseIfFailed("CheckShapeWithGeometry", self.MeasuOp)
11202             else:
11203                 (IsValid, ShapeErrors) = self.MeasuOp.CheckShape(theShape)
11204                 RaiseIfFailed("CheckShape", self.MeasuOp)
11205             if IsValid == 0:
11206                 if theReturnStatus == 0:
11207                     Descr = self.MeasuOp.PrintShapeErrors(theShape, ShapeErrors)
11208                     print Descr
11209             if theReturnStatus == 1:
11210               Descr = self.MeasuOp.PrintShapeErrors(theShape, ShapeErrors)
11211               return (IsValid, Descr)
11212             elif theReturnStatus == 2:
11213               return (IsValid, ShapeErrors)
11214             return IsValid
11215
11216         ## Detect self-intersections in the given shape.
11217         #  @param theShape Shape to check.
11218         #  @param theCheckLevel is the level of self-intersection check.
11219         #         Possible input values are:
11220         #         - GEOM.SI_V_V(0) - only V/V interferences
11221         #         - GEOM.SI_V_E(1) - V/V and V/E interferences
11222         #         - GEOM.SI_E_E(2) - V/V, V/E and E/E interferences
11223         #         - GEOM.SI_V_F(3) - V/V, V/E, E/E and V/F interferences
11224         #         - GEOM.SI_E_F(4) - V/V, V/E, E/E, V/F and E/F interferences
11225         #         - GEOM.SI_ALL(5) - all interferences.
11226         #  @return TRUE, if the shape contains no self-intersections.
11227         #
11228         #  @ref tui_check_self_intersections_page "Example"
11229         @ManageTransactions("MeasuOp")
11230         def CheckSelfIntersections(self, theShape, theCheckLevel = GEOM.SI_ALL):
11231             """
11232             Detect self-intersections in the given shape.
11233
11234             Parameters:
11235                 theShape Shape to check.
11236                 theCheckLevel is the level of self-intersection check.
11237                   Possible input values are:
11238                    - GEOM.SI_V_V(0) - only V/V interferences
11239                    - GEOM.SI_V_E(1) - V/V and V/E interferences
11240                    - GEOM.SI_E_E(2) - V/V, V/E and E/E interferences
11241                    - GEOM.SI_V_F(3) - V/V, V/E, E/E and V/F interferences
11242                    - GEOM.SI_E_F(4) - V/V, V/E, E/E, V/F and E/F interferences
11243                    - GEOM.SI_ALL(5) - all interferences.
11244  
11245             Returns:
11246                 TRUE, if the shape contains no self-intersections.
11247             """
11248             # Example: see GEOM_TestMeasures.py
11249             (IsValid, Pairs) = self.MeasuOp.CheckSelfIntersections(theShape, EnumToLong(theCheckLevel))
11250             RaiseIfFailed("CheckSelfIntersections", self.MeasuOp)
11251             return IsValid
11252
11253         ## Detect intersections of the given shapes with algorithm based on mesh intersections.
11254         #  @param theShape1 First source object
11255         #  @param theShape2 Second source object
11256         #  @param theTolerance Specifies a distance between shapes used for detecting gaps:
11257         #         - if \a theTolerance <= 0, algorithm detects intersections (default behavior)
11258         #         - if \a theTolerance > 0, algorithm detects gaps
11259         #  @param theDeflection Linear deflection coefficient that specifies quality of tesselation:
11260         #         - if \a theDeflection <= 0, default deflection 0.001 is used
11261         #  @return TRUE, if there are intersections (gaps) between source shapes
11262         #  @return List of sub-shapes IDs from 1st shape that localize intersection.
11263         #  @return List of sub-shapes IDs from 2nd shape that localize intersection.
11264         #
11265         #  @ref tui_fast_intersection_page "Example"
11266         @ManageTransactions("MeasuOp")
11267         def FastIntersect(self, theShape1, theShape2, theTolerance = 0.0, theDeflection = 0.001):
11268             """
11269             Detect intersections of the given shapes with algorithm based on mesh intersections.
11270
11271             Parameters:
11272                 theShape1 First source object
11273                 theShape2 Second source object
11274                 theTolerance Specifies a distance between shapes used for detecting gaps:
11275                     - if theTolerance <= 0, algorithm detects intersections (default behavior)
11276                     - if theTolerance > 0, algorithm detects gaps
11277                 theDeflection Linear deflection coefficient that specifies quality of tesselation:
11278                     - if theDeflection <= 0, default deflection 0.001 is used
11279  
11280             Returns:
11281                 TRUE, if there are intersections (gaps) between source shapes
11282                 List of sub-shapes IDs from 1st shape that localize intersection.
11283                 List of sub-shapes IDs from 2nd shape that localize intersection.
11284             """
11285             # Example: see GEOM_TestMeasures.py
11286             IsOk, Res1, Res2 = self.MeasuOp.FastIntersect(theShape1, theShape2, theTolerance, theDeflection)
11287             RaiseIfFailed("FastIntersect", self.MeasuOp)
11288             return IsOk, Res1, Res2
11289
11290         ## Get position (LCS) of theShape.
11291         #
11292         #  Origin of the LCS is situated at the shape's center of mass.
11293         #  Axes of the LCS are obtained from shape's location or,
11294         #  if the shape is a planar face, from position of its plane.
11295         #
11296         #  @param theShape Shape to calculate position of.
11297         #  @return [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
11298         #          Ox,Oy,Oz: Coordinates of shape's LCS origin.
11299         #          Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
11300         #          Xx,Xy,Xz: Coordinates of shape's LCS X direction.
11301         #
11302         #  @ref swig_todo "Example"
11303         @ManageTransactions("MeasuOp")
11304         def GetPosition(self,theShape):
11305             """
11306             Get position (LCS) of theShape.
11307             Origin of the LCS is situated at the shape's center of mass.
11308             Axes of the LCS are obtained from shape's location or,
11309             if the shape is a planar face, from position of its plane.
11310
11311             Parameters:
11312                 theShape Shape to calculate position of.
11313
11314             Returns:
11315                 [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
11316                  Ox,Oy,Oz: Coordinates of shape's LCS origin.
11317                  Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
11318                  Xx,Xy,Xz: Coordinates of shape's LCS X direction.
11319             """
11320             # Example: see GEOM_TestMeasures.py
11321             aTuple = self.MeasuOp.GetPosition(theShape)
11322             RaiseIfFailed("GetPosition", self.MeasuOp)
11323             return aTuple
11324
11325         ## Get kind of theShape.
11326         #
11327         #  @param theShape Shape to get a kind of.
11328         #  @return Returns a kind of shape in terms of <VAR>GEOM.GEOM_IKindOfShape.shape_kind</VAR> enumeration
11329         #          and a list of parameters, describing the shape.
11330         #  @note  Concrete meaning of each value, returned via \a theIntegers
11331         #         or \a theDoubles list depends on the kind() of the shape.
11332         #
11333         #  @ref swig_todo "Example"
11334         @ManageTransactions("MeasuOp")
11335         def KindOfShape(self,theShape):
11336             """
11337             Get kind of theShape.
11338
11339             Parameters:
11340                 theShape Shape to get a kind of.
11341
11342             Returns:
11343                 a kind of shape in terms of GEOM_IKindOfShape.shape_kind enumeration
11344                     and a list of parameters, describing the shape.
11345             Note:
11346                 Concrete meaning of each value, returned via theIntegers
11347                 or theDoubles list depends on the geompy.kind of the shape
11348             """
11349             # Example: see GEOM_TestMeasures.py
11350             aRoughTuple = self.MeasuOp.KindOfShape(theShape)
11351             RaiseIfFailed("KindOfShape", self.MeasuOp)
11352
11353             aKind  = aRoughTuple[0]
11354             anInts = aRoughTuple[1]
11355             aDbls  = aRoughTuple[2]
11356
11357             # Now there is no exception from this rule:
11358             aKindTuple = [aKind] + aDbls + anInts
11359
11360             # If they are we will regroup parameters for such kind of shape.
11361             # For example:
11362             #if aKind == kind.SOME_KIND:
11363             #    #  SOME_KIND     int int double int double double
11364             #    aKindTuple = [aKind, anInts[0], anInts[1], aDbls[0], anInts[2], aDbls[1], aDbls[2]]
11365
11366             return aKindTuple
11367
11368         ## Returns the string that describes if the shell is good for solid.
11369         #  This is a support method for MakeSolid.
11370         #
11371         #  @param theShell the shell to be checked.
11372         #  @return Returns a string that describes the shell validity for
11373         #          solid construction.
11374         @ManageTransactions("MeasuOp")
11375         def _IsGoodForSolid(self, theShell):
11376             """
11377             Returns the string that describes if the shell is good for solid.
11378             This is a support method for MakeSolid.
11379
11380             Parameter:
11381                 theShell the shell to be checked.
11382
11383             Returns:
11384                 Returns a string that describes the shell validity for
11385                 solid construction.
11386             """
11387             aDescr = self.MeasuOp.IsGoodForSolid(theShell)
11388             return aDescr
11389
11390         # end of l2_measure
11391         ## @}
11392
11393         ## @addtogroup l2_import_export
11394         ## @{
11395
11396         ## Import a shape from the BREP, IGES, STEP or other file
11397         #  (depends on given format) with given name.
11398         #
11399         #  Note: this function is deprecated, it is kept for backward compatibility only
11400         #  Use Import<FormatName> instead, where <FormatName> is a name of desirable format to import.
11401         #
11402         #  @param theFileName The file, containing the shape.
11403         #  @param theFormatName Specify format for the file reading.
11404         #         Available formats can be obtained with InsertOp.ImportTranslators() method.
11405         #         If format 'IGES_SCALE' is used instead of 'IGES' or
11406         #            format 'STEP_SCALE' is used instead of 'STEP',
11407         #            length unit will be set to 'meter' and result model will be scaled.
11408         #  @param theName Object name; when specified, this parameter is used
11409         #         for result publication in the study. Otherwise, if automatic
11410         #         publication is switched on, default value is used for result name.
11411         #
11412         #  @return New GEOM.GEOM_Object, containing the imported shape.
11413         #          If material names are imported it returns the list of
11414         #          objects. The first one is the imported object followed by
11415         #          material groups.
11416         #  @note Auto publishing is allowed for the shape itself. Imported
11417         #        material groups are not automatically published.
11418         #
11419         #  @ref swig_Import_Export "Example"
11420         @ManageTransactions("InsertOp")
11421         def ImportFile(self, theFileName, theFormatName, theName=None):
11422             """
11423             Import a shape from the BREP, IGES, STEP or other file
11424             (depends on given format) with given name.
11425
11426             Note: this function is deprecated, it is kept for backward compatibility only
11427             Use Import<FormatName> instead, where <FormatName> is a name of desirable format to import.
11428
11429             Parameters: 
11430                 theFileName The file, containing the shape.
11431                 theFormatName Specify format for the file reading.
11432                     Available formats can be obtained with geompy.InsertOp.ImportTranslators() method.
11433                     If format 'IGES_SCALE' is used instead of 'IGES' or
11434                        format 'STEP_SCALE' is used instead of 'STEP',
11435                        length unit will be set to 'meter' and result model will be scaled.
11436                 theName Object name; when specified, this parameter is used
11437                         for result publication in the study. Otherwise, if automatic
11438                         publication is switched on, default value is used for result name.
11439
11440             Returns:
11441                 New GEOM.GEOM_Object, containing the imported shape.
11442                 If material names are imported it returns the list of
11443                 objects. The first one is the imported object followed by
11444                 material groups.
11445             Note:
11446                 Auto publishing is allowed for the shape itself. Imported
11447                 material groups are not automatically published.
11448             """
11449             # Example: see GEOM_TestOthers.py
11450             print """
11451             WARNING: Function ImportFile is deprecated, use Import<FormatName> instead,
11452             where <FormatName> is a name of desirable format for importing.
11453             """
11454             aListObj = self.InsertOp.ImportFile(theFileName, theFormatName)
11455             RaiseIfFailed("ImportFile", self.InsertOp)
11456             aNbObj = len(aListObj)
11457             if aNbObj > 0:
11458                 self._autoPublish(aListObj[0], theName, "imported")
11459             if aNbObj == 1:
11460                 return aListObj[0]
11461             return aListObj
11462
11463         ## Deprecated analog of ImportFile()
11464         def Import(self, theFileName, theFormatName, theName=None):
11465             """
11466             Deprecated analog of geompy.ImportFile, kept for backward compatibility only.
11467             """
11468             # note: auto-publishing is done in self.ImportFile()
11469             return self.ImportFile(theFileName, theFormatName, theName)
11470
11471         ## Read a shape from the binary stream, containing its bounding representation (BRep).
11472         #  @note This method will not be dumped to the python script by DumpStudy functionality.
11473         #  @note GEOM.GEOM_Object.GetShapeStream() method can be used to obtain the shape's BRep stream.
11474         #  @param theStream The BRep binary stream.
11475         #  @param theName Object name; when specified, this parameter is used
11476         #         for result publication in the study. Otherwise, if automatic
11477         #         publication is switched on, default value is used for result name.
11478         #
11479         #  @return New GEOM_Object, containing the shape, read from theStream.
11480         #
11481         #  @ref swig_Import_Export "Example"
11482         @ManageTransactions("InsertOp")
11483         def RestoreShape (self, theStream, theName=None):
11484             """
11485             Read a shape from the binary stream, containing its bounding representation (BRep).
11486
11487             Note:
11488                 shape.GetShapeStream() method can be used to obtain the shape's BRep stream.
11489
11490             Parameters:
11491                 theStream The BRep binary stream.
11492                 theName Object name; when specified, this parameter is used
11493                         for result publication in the study. Otherwise, if automatic
11494                         publication is switched on, default value is used for result name.
11495
11496             Returns:
11497                 New GEOM_Object, containing the shape, read from theStream.
11498             """
11499             # Example: see GEOM_TestOthers.py
11500             anObj = self.InsertOp.RestoreShape(theStream)
11501             RaiseIfFailed("RestoreShape", self.InsertOp)
11502             self._autoPublish(anObj, theName, "restored")
11503             return anObj
11504
11505         ## Export the given shape into a file with given name.
11506         #
11507         #  Note: this function is deprecated, it is kept for backward compatibility only
11508         #  Use Export<FormatName> instead, where <FormatName> is a name of desirable format to export.
11509         #
11510         #  @param theObject Shape to be stored in the file.
11511         #  @param theFileName Name of the file to store the given shape in.
11512         #  @param theFormatName Specify format for the shape storage.
11513         #         Available formats can be obtained with
11514         #         geompy.InsertOp.ExportTranslators()[0] method.
11515         #
11516         #  @ref swig_Import_Export "Example"
11517         @ManageTransactions("InsertOp")
11518         def Export(self, theObject, theFileName, theFormatName):
11519             """
11520             Export the given shape into a file with given name.
11521
11522             Note: this function is deprecated, it is kept for backward compatibility only
11523             Use Export<FormatName> instead, where <FormatName> is a name of desirable format to export.
11524             
11525             Parameters: 
11526                 theObject Shape to be stored in the file.
11527                 theFileName Name of the file to store the given shape in.
11528                 theFormatName Specify format for the shape storage.
11529                               Available formats can be obtained with
11530                               geompy.InsertOp.ExportTranslators()[0] method.
11531             """
11532             # Example: see GEOM_TestOthers.py
11533             print """
11534             WARNING: Function Export is deprecated, use Export<FormatName> instead,
11535             where <FormatName> is a name of desirable format for exporting.
11536             """
11537             self.InsertOp.Export(theObject, theFileName, theFormatName)
11538             if self.InsertOp.IsDone() == 0:
11539                 raise RuntimeError,  "Export : " + self.InsertOp.GetErrorCode()
11540                 pass
11541             pass
11542
11543         # end of l2_import_export
11544         ## @}
11545
11546         ## @addtogroup l3_blocks
11547         ## @{
11548
11549         ## Create a quadrangle face from four edges. Order of Edges is not
11550         #  important. It is  not necessary that edges share the same vertex.
11551         #  @param E1,E2,E3,E4 Edges for the face bound.
11552         #  @param theName Object name; when specified, this parameter is used
11553         #         for result publication in the study. Otherwise, if automatic
11554         #         publication is switched on, default value is used for result name.
11555         #
11556         #  @return New GEOM.GEOM_Object, containing the created face.
11557         #
11558         #  @ref tui_building_by_blocks_page "Example"
11559         @ManageTransactions("BlocksOp")
11560         def MakeQuad(self, E1, E2, E3, E4, theName=None):
11561             """
11562             Create a quadrangle face from four edges. Order of Edges is not
11563             important. It is  not necessary that edges share the same vertex.
11564
11565             Parameters:
11566                 E1,E2,E3,E4 Edges for the face bound.
11567                 theName Object name; when specified, this parameter is used
11568                         for result publication in the study. Otherwise, if automatic
11569                         publication is switched on, default value is used for result name.
11570
11571             Returns:
11572                 New GEOM.GEOM_Object, containing the created face.
11573
11574             Example of usage:
11575                 qface1 = geompy.MakeQuad(edge1, edge2, edge3, edge4)
11576             """
11577             # Example: see GEOM_Spanner.py
11578             anObj = self.BlocksOp.MakeQuad(E1, E2, E3, E4)
11579             RaiseIfFailed("MakeQuad", self.BlocksOp)
11580             self._autoPublish(anObj, theName, "quad")
11581             return anObj
11582
11583         ## Create a quadrangle face on two edges.
11584         #  The missing edges will be built by creating the shortest ones.
11585         #  @param E1,E2 Two opposite edges for the face.
11586         #  @param theName Object name; when specified, this parameter is used
11587         #         for result publication in the study. Otherwise, if automatic
11588         #         publication is switched on, default value is used for result name.
11589         #
11590         #  @return New GEOM.GEOM_Object, containing the created face.
11591         #
11592         #  @ref tui_building_by_blocks_page "Example"
11593         @ManageTransactions("BlocksOp")
11594         def MakeQuad2Edges(self, E1, E2, theName=None):
11595             """
11596             Create a quadrangle face on two edges.
11597             The missing edges will be built by creating the shortest ones.
11598
11599             Parameters:
11600                 E1,E2 Two opposite edges for the face.
11601                 theName Object name; when specified, this parameter is used
11602                         for result publication in the study. Otherwise, if automatic
11603                         publication is switched on, default value is used for result name.
11604
11605             Returns:
11606                 New GEOM.GEOM_Object, containing the created face.
11607
11608             Example of usage:
11609                 # create vertices
11610                 p1 = geompy.MakeVertex(  0.,   0.,   0.)
11611                 p2 = geompy.MakeVertex(150.,  30.,   0.)
11612                 p3 = geompy.MakeVertex(  0., 120.,  50.)
11613                 p4 = geompy.MakeVertex(  0.,  40.,  70.)
11614                 # create edges
11615                 edge1 = geompy.MakeEdge(p1, p2)
11616                 edge2 = geompy.MakeEdge(p3, p4)
11617                 # create a quadrangle face from two edges
11618                 qface2 = geompy.MakeQuad2Edges(edge1, edge2)
11619             """
11620             # Example: see GEOM_Spanner.py
11621             anObj = self.BlocksOp.MakeQuad2Edges(E1, E2)
11622             RaiseIfFailed("MakeQuad2Edges", self.BlocksOp)
11623             self._autoPublish(anObj, theName, "quad")
11624             return anObj
11625
11626         ## Create a quadrangle face with specified corners.
11627         #  The missing edges will be built by creating the shortest ones.
11628         #  @param V1,V2,V3,V4 Corner vertices for the face.
11629         #  @param theName Object name; when specified, this parameter is used
11630         #         for result publication in the study. Otherwise, if automatic
11631         #         publication is switched on, default value is used for result name.
11632         #
11633         #  @return New GEOM.GEOM_Object, containing the created face.
11634         #
11635         #  @ref tui_building_by_blocks_page "Example 1"
11636         #  \n @ref swig_MakeQuad4Vertices "Example 2"
11637         @ManageTransactions("BlocksOp")
11638         def MakeQuad4Vertices(self, V1, V2, V3, V4, theName=None):
11639             """
11640             Create a quadrangle face with specified corners.
11641             The missing edges will be built by creating the shortest ones.
11642
11643             Parameters:
11644                 V1,V2,V3,V4 Corner vertices for the face.
11645                 theName Object name; when specified, this parameter is used
11646                         for result publication in the study. Otherwise, if automatic
11647                         publication is switched on, default value is used for result name.
11648
11649             Returns:
11650                 New GEOM.GEOM_Object, containing the created face.
11651
11652             Example of usage:
11653                 # create vertices
11654                 p1 = geompy.MakeVertex(  0.,   0.,   0.)
11655                 p2 = geompy.MakeVertex(150.,  30.,   0.)
11656                 p3 = geompy.MakeVertex(  0., 120.,  50.)
11657                 p4 = geompy.MakeVertex(  0.,  40.,  70.)
11658                 # create a quadrangle from four points in its corners
11659                 qface3 = geompy.MakeQuad4Vertices(p1, p2, p3, p4)
11660             """
11661             # Example: see GEOM_Spanner.py
11662             anObj = self.BlocksOp.MakeQuad4Vertices(V1, V2, V3, V4)
11663             RaiseIfFailed("MakeQuad4Vertices", self.BlocksOp)
11664             self._autoPublish(anObj, theName, "quad")
11665             return anObj
11666
11667         ## Create a hexahedral solid, bounded by the six given faces. Order of
11668         #  faces is not important. It is  not necessary that Faces share the same edge.
11669         #  @param F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
11670         #  @param theName Object name; when specified, this parameter is used
11671         #         for result publication in the study. Otherwise, if automatic
11672         #         publication is switched on, default value is used for result name.
11673         #
11674         #  @return New GEOM.GEOM_Object, containing the created solid.
11675         #
11676         #  @ref tui_building_by_blocks_page "Example 1"
11677         #  \n @ref swig_MakeHexa "Example 2"
11678         @ManageTransactions("BlocksOp")
11679         def MakeHexa(self, F1, F2, F3, F4, F5, F6, theName=None):
11680             """
11681             Create a hexahedral solid, bounded by the six given faces. Order of
11682             faces is not important. It is  not necessary that Faces share the same edge.
11683
11684             Parameters:
11685                 F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
11686                 theName Object name; when specified, this parameter is used
11687                         for result publication in the study. Otherwise, if automatic
11688                         publication is switched on, default value is used for result name.
11689
11690             Returns:
11691                 New GEOM.GEOM_Object, containing the created solid.
11692
11693             Example of usage:
11694                 solid = geompy.MakeHexa(qface1, qface2, qface3, qface4, qface5, qface6)
11695             """
11696             # Example: see GEOM_Spanner.py
11697             anObj = self.BlocksOp.MakeHexa(F1, F2, F3, F4, F5, F6)
11698             RaiseIfFailed("MakeHexa", self.BlocksOp)
11699             self._autoPublish(anObj, theName, "hexa")
11700             return anObj
11701
11702         ## Create a hexahedral solid between two given faces.
11703         #  The missing faces will be built by creating the smallest ones.
11704         #  @param F1,F2 Two opposite faces for the hexahedral solid.
11705         #  @param theName Object name; when specified, this parameter is used
11706         #         for result publication in the study. Otherwise, if automatic
11707         #         publication is switched on, default value is used for result name.
11708         #
11709         #  @return New GEOM.GEOM_Object, containing the created solid.
11710         #
11711         #  @ref tui_building_by_blocks_page "Example 1"
11712         #  \n @ref swig_MakeHexa2Faces "Example 2"
11713         @ManageTransactions("BlocksOp")
11714         def MakeHexa2Faces(self, F1, F2, theName=None):
11715             """
11716             Create a hexahedral solid between two given faces.
11717             The missing faces will be built by creating the smallest ones.
11718
11719             Parameters:
11720                 F1,F2 Two opposite faces for the hexahedral solid.
11721                 theName Object name; when specified, this parameter is used
11722                         for result publication in the study. Otherwise, if automatic
11723                         publication is switched on, default value is used for result name.
11724
11725             Returns:
11726                 New GEOM.GEOM_Object, containing the created solid.
11727
11728             Example of usage:
11729                 solid1 = geompy.MakeHexa2Faces(qface1, qface2)
11730             """
11731             # Example: see GEOM_Spanner.py
11732             anObj = self.BlocksOp.MakeHexa2Faces(F1, F2)
11733             RaiseIfFailed("MakeHexa2Faces", self.BlocksOp)
11734             self._autoPublish(anObj, theName, "hexa")
11735             return anObj
11736
11737         # end of l3_blocks
11738         ## @}
11739
11740         ## @addtogroup l3_blocks_op
11741         ## @{
11742
11743         ## Get a vertex, found in the given shape by its coordinates.
11744         #  @param theShape Block or a compound of blocks.
11745         #  @param theX,theY,theZ Coordinates of the sought vertex.
11746         #  @param theEpsilon Maximum allowed distance between the resulting
11747         #                    vertex and point with the given coordinates.
11748         #  @param theName Object name; when specified, this parameter is used
11749         #         for result publication in the study. Otherwise, if automatic
11750         #         publication is switched on, default value is used for result name.
11751         #
11752         #  @return New GEOM.GEOM_Object, containing the found vertex.
11753         #
11754         #  @ref swig_GetPoint "Example"
11755         @ManageTransactions("BlocksOp")
11756         def GetPoint(self, theShape, theX, theY, theZ, theEpsilon, theName=None):
11757             """
11758             Get a vertex, found in the given shape by its coordinates.
11759
11760             Parameters:
11761                 theShape Block or a compound of blocks.
11762                 theX,theY,theZ Coordinates of the sought vertex.
11763                 theEpsilon Maximum allowed distance between the resulting
11764                            vertex and point with the given coordinates.
11765                 theName Object name; when specified, this parameter is used
11766                         for result publication in the study. Otherwise, if automatic
11767                         publication is switched on, default value is used for result name.
11768
11769             Returns:
11770                 New GEOM.GEOM_Object, containing the found vertex.
11771
11772             Example of usage:
11773                 pnt = geompy.GetPoint(shape, -50,  50,  50, 0.01)
11774             """
11775             # Example: see GEOM_TestOthers.py
11776             anObj = self.BlocksOp.GetPoint(theShape, theX, theY, theZ, theEpsilon)
11777             RaiseIfFailed("GetPoint", self.BlocksOp)
11778             self._autoPublish(anObj, theName, "vertex")
11779             return anObj
11780
11781         ## Find a vertex of the given shape, which has minimal distance to the given point.
11782         #  @param theShape Any shape.
11783         #  @param thePoint Point, close to the desired vertex.
11784         #  @param theName Object name; when specified, this parameter is used
11785         #         for result publication in the study. Otherwise, if automatic
11786         #         publication is switched on, default value is used for result name.
11787         #
11788         #  @return New GEOM.GEOM_Object, containing the found vertex.
11789         #
11790         #  @ref swig_GetVertexNearPoint "Example"
11791         @ManageTransactions("BlocksOp")
11792         def GetVertexNearPoint(self, theShape, thePoint, theName=None):
11793             """
11794             Find a vertex of the given shape, which has minimal distance to the given point.
11795
11796             Parameters:
11797                 theShape Any shape.
11798                 thePoint Point, close to the desired vertex.
11799                 theName Object name; when specified, this parameter is used
11800                         for result publication in the study. Otherwise, if automatic
11801                         publication is switched on, default value is used for result name.
11802
11803             Returns:
11804                 New GEOM.GEOM_Object, containing the found vertex.
11805
11806             Example of usage:
11807                 pmidle = geompy.MakeVertex(50, 0, 50)
11808                 edge1 = geompy.GetEdgeNearPoint(blocksComp, pmidle)
11809             """
11810             # Example: see GEOM_TestOthers.py
11811             anObj = self.BlocksOp.GetVertexNearPoint(theShape, thePoint)
11812             RaiseIfFailed("GetVertexNearPoint", self.BlocksOp)
11813             self._autoPublish(anObj, theName, "vertex")
11814             return anObj
11815
11816         ## Get an edge, found in the given shape by two given vertices.
11817         #  @param theShape Block or a compound of blocks.
11818         #  @param thePoint1,thePoint2 Points, close to the ends of the desired edge.
11819         #  @param theName Object name; when specified, this parameter is used
11820         #         for result publication in the study. Otherwise, if automatic
11821         #         publication is switched on, default value is used for result name.
11822         #
11823         #  @return New GEOM.GEOM_Object, containing the found edge.
11824         #
11825         #  @ref swig_GetEdge "Example"
11826         @ManageTransactions("BlocksOp")
11827         def GetEdge(self, theShape, thePoint1, thePoint2, theName=None):
11828             """
11829             Get an edge, found in the given shape by two given vertices.
11830
11831             Parameters:
11832                 theShape Block or a compound of blocks.
11833                 thePoint1,thePoint2 Points, close to the ends of the desired edge.
11834                 theName Object name; when specified, this parameter is used
11835                         for result publication in the study. Otherwise, if automatic
11836                         publication is switched on, default value is used for result name.
11837
11838             Returns:
11839                 New GEOM.GEOM_Object, containing the found edge.
11840             """
11841             # Example: see GEOM_Spanner.py
11842             anObj = self.BlocksOp.GetEdge(theShape, thePoint1, thePoint2)
11843             RaiseIfFailed("GetEdge", self.BlocksOp)
11844             self._autoPublish(anObj, theName, "edge")
11845             return anObj
11846
11847         ## Find an edge of the given shape, which has minimal distance to the given point.
11848         #  @param theShape Block or a compound of blocks.
11849         #  @param thePoint Point, close to the desired edge.
11850         #  @param theName Object name; when specified, this parameter is used
11851         #         for result publication in the study. Otherwise, if automatic
11852         #         publication is switched on, default value is used for result name.
11853         #
11854         #  @return New GEOM.GEOM_Object, containing the found edge.
11855         #
11856         #  @ref swig_GetEdgeNearPoint "Example"
11857         @ManageTransactions("BlocksOp")
11858         def GetEdgeNearPoint(self, theShape, thePoint, theName=None):
11859             """
11860             Find an edge of the given shape, which has minimal distance to the given point.
11861
11862             Parameters:
11863                 theShape Block or a compound of blocks.
11864                 thePoint Point, close to the desired edge.
11865                 theName Object name; when specified, this parameter is used
11866                         for result publication in the study. Otherwise, if automatic
11867                         publication is switched on, default value is used for result name.
11868
11869             Returns:
11870                 New GEOM.GEOM_Object, containing the found edge.
11871             """
11872             # Example: see GEOM_TestOthers.py
11873             anObj = self.BlocksOp.GetEdgeNearPoint(theShape, thePoint)
11874             RaiseIfFailed("GetEdgeNearPoint", self.BlocksOp)
11875             self._autoPublish(anObj, theName, "edge")
11876             return anObj
11877
11878         ## Returns a face, found in the given shape by four given corner vertices.
11879         #  @param theShape Block or a compound of blocks.
11880         #  @param thePoint1,thePoint2,thePoint3,thePoint4 Points, close to the corners of the desired face.
11881         #  @param theName Object name; when specified, this parameter is used
11882         #         for result publication in the study. Otherwise, if automatic
11883         #         publication is switched on, default value is used for result name.
11884         #
11885         #  @return New GEOM.GEOM_Object, containing the found face.
11886         #
11887         #  @ref swig_todo "Example"
11888         @ManageTransactions("BlocksOp")
11889         def GetFaceByPoints(self, theShape, thePoint1, thePoint2, thePoint3, thePoint4, theName=None):
11890             """
11891             Returns a face, found in the given shape by four given corner vertices.
11892
11893             Parameters:
11894                 theShape Block or a compound of blocks.
11895                 thePoint1,thePoint2,thePoint3,thePoint4 Points, close to the corners of the desired face.
11896                 theName Object name; when specified, this parameter is used
11897                         for result publication in the study. Otherwise, if automatic
11898                         publication is switched on, default value is used for result name.
11899
11900             Returns:
11901                 New GEOM.GEOM_Object, containing the found face.
11902             """
11903             # Example: see GEOM_Spanner.py
11904             anObj = self.BlocksOp.GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4)
11905             RaiseIfFailed("GetFaceByPoints", self.BlocksOp)
11906             self._autoPublish(anObj, theName, "face")
11907             return anObj
11908
11909         ## Get a face of block, found in the given shape by two given edges.
11910         #  @param theShape Block or a compound of blocks.
11911         #  @param theEdge1,theEdge2 Edges, close to the edges of the desired face.
11912         #  @param theName Object name; when specified, this parameter is used
11913         #         for result publication in the study. Otherwise, if automatic
11914         #         publication is switched on, default value is used for result name.
11915         #
11916         #  @return New GEOM.GEOM_Object, containing the found face.
11917         #
11918         #  @ref swig_todo "Example"
11919         @ManageTransactions("BlocksOp")
11920         def GetFaceByEdges(self, theShape, theEdge1, theEdge2, theName=None):
11921             """
11922             Get a face of block, found in the given shape by two given edges.
11923
11924             Parameters:
11925                 theShape Block or a compound of blocks.
11926                 theEdge1,theEdge2 Edges, close to the edges of the desired face.
11927                 theName Object name; when specified, this parameter is used
11928                         for result publication in the study. Otherwise, if automatic
11929                         publication is switched on, default value is used for result name.
11930
11931             Returns:
11932                 New GEOM.GEOM_Object, containing the found face.
11933             """
11934             # Example: see GEOM_Spanner.py
11935             anObj = self.BlocksOp.GetFaceByEdges(theShape, theEdge1, theEdge2)
11936             RaiseIfFailed("GetFaceByEdges", self.BlocksOp)
11937             self._autoPublish(anObj, theName, "face")
11938             return anObj
11939
11940         ## Find a face, opposite to the given one in the given block.
11941         #  @param theBlock Must be a hexahedral solid.
11942         #  @param theFace Face of \a theBlock, opposite to the desired face.
11943         #  @param theName Object name; when specified, this parameter is used
11944         #         for result publication in the study. Otherwise, if automatic
11945         #         publication is switched on, default value is used for result name.
11946         #
11947         #  @return New GEOM.GEOM_Object, containing the found face.
11948         #
11949         #  @ref swig_GetOppositeFace "Example"
11950         @ManageTransactions("BlocksOp")
11951         def GetOppositeFace(self, theBlock, theFace, theName=None):
11952             """
11953             Find a face, opposite to the given one in the given block.
11954
11955             Parameters:
11956                 theBlock Must be a hexahedral solid.
11957                 theFace Face of theBlock, opposite to the desired face.
11958                 theName Object name; when specified, this parameter is used
11959                         for result publication in the study. Otherwise, if automatic
11960                         publication is switched on, default value is used for result name.
11961
11962             Returns:
11963                 New GEOM.GEOM_Object, containing the found face.
11964             """
11965             # Example: see GEOM_Spanner.py
11966             anObj = self.BlocksOp.GetOppositeFace(theBlock, theFace)
11967             RaiseIfFailed("GetOppositeFace", self.BlocksOp)
11968             self._autoPublish(anObj, theName, "face")
11969             return anObj
11970
11971         ## Find a face of the given shape, which has minimal distance to the given point.
11972         #  @param theShape Block or a compound of blocks.
11973         #  @param thePoint Point, close to the desired face.
11974         #  @param theName Object name; when specified, this parameter is used
11975         #         for result publication in the study. Otherwise, if automatic
11976         #         publication is switched on, default value is used for result name.
11977         #
11978         #  @return New GEOM.GEOM_Object, containing the found face.
11979         #
11980         #  @ref swig_GetFaceNearPoint "Example"
11981         @ManageTransactions("BlocksOp")
11982         def GetFaceNearPoint(self, theShape, thePoint, theName=None):
11983             """
11984             Find a face of the given shape, which has minimal distance to the given point.
11985
11986             Parameters:
11987                 theShape Block or a compound of blocks.
11988                 thePoint Point, close to the desired face.
11989                 theName Object name; when specified, this parameter is used
11990                         for result publication in the study. Otherwise, if automatic
11991                         publication is switched on, default value is used for result name.
11992
11993             Returns:
11994                 New GEOM.GEOM_Object, containing the found face.
11995             """
11996             # Example: see GEOM_Spanner.py
11997             anObj = self.BlocksOp.GetFaceNearPoint(theShape, thePoint)
11998             RaiseIfFailed("GetFaceNearPoint", self.BlocksOp)
11999             self._autoPublish(anObj, theName, "face")
12000             return anObj
12001
12002         ## Find a face of block, whose outside normale has minimal angle with the given vector.
12003         #  @param theBlock Block or a compound of blocks.
12004         #  @param theVector Vector, close to the normale of the desired face.
12005         #  @param theName Object name; when specified, this parameter is used
12006         #         for result publication in the study. Otherwise, if automatic
12007         #         publication is switched on, default value is used for result name.
12008         #
12009         #  @return New GEOM.GEOM_Object, containing the found face.
12010         #
12011         #  @ref swig_todo "Example"
12012         @ManageTransactions("BlocksOp")
12013         def GetFaceByNormale(self, theBlock, theVector, theName=None):
12014             """
12015             Find a face of block, whose outside normale has minimal angle with the given vector.
12016
12017             Parameters:
12018                 theBlock Block or a compound of blocks.
12019                 theVector Vector, close to the normale of the desired face.
12020                 theName Object name; when specified, this parameter is used
12021                         for result publication in the study. Otherwise, if automatic
12022                         publication is switched on, default value is used for result name.
12023
12024             Returns:
12025                 New GEOM.GEOM_Object, containing the found face.
12026             """
12027             # Example: see GEOM_Spanner.py
12028             anObj = self.BlocksOp.GetFaceByNormale(theBlock, theVector)
12029             RaiseIfFailed("GetFaceByNormale", self.BlocksOp)
12030             self._autoPublish(anObj, theName, "face")
12031             return anObj
12032
12033         ## Find all sub-shapes of type \a theShapeType of the given shape,
12034         #  which have minimal distance to the given point.
12035         #  @param theShape Any shape.
12036         #  @param thePoint Point, close to the desired shape.
12037         #  @param theShapeType Defines what kind of sub-shapes is searched GEOM::shape_type
12038         #  @param theTolerance The tolerance for distances comparison. All shapes
12039         #                      with distances to the given point in interval
12040         #                      [minimal_distance, minimal_distance + theTolerance] will be gathered.
12041         #  @param theName Object name; when specified, this parameter is used
12042         #         for result publication in the study. Otherwise, if automatic
12043         #         publication is switched on, default value is used for result name.
12044         #
12045         #  @return New GEOM_Object, containing a group of all found shapes.
12046         #
12047         #  @ref swig_GetShapesNearPoint "Example"
12048         @ManageTransactions("BlocksOp")
12049         def GetShapesNearPoint(self, theShape, thePoint, theShapeType, theTolerance = 1e-07, theName=None):
12050             """
12051             Find all sub-shapes of type theShapeType of the given shape,
12052             which have minimal distance to the given point.
12053
12054             Parameters:
12055                 theShape Any shape.
12056                 thePoint Point, close to the desired shape.
12057                 theShapeType Defines what kind of sub-shapes is searched (see GEOM::shape_type)
12058                 theTolerance The tolerance for distances comparison. All shapes
12059                                 with distances to the given point in interval
12060                                 [minimal_distance, minimal_distance + theTolerance] will be gathered.
12061                 theName Object name; when specified, this parameter is used
12062                         for result publication in the study. Otherwise, if automatic
12063                         publication is switched on, default value is used for result name.
12064
12065             Returns:
12066                 New GEOM_Object, containing a group of all found shapes.
12067             """
12068             # Example: see GEOM_TestOthers.py
12069             anObj = self.BlocksOp.GetShapesNearPoint(theShape, thePoint, theShapeType, theTolerance)
12070             RaiseIfFailed("GetShapesNearPoint", self.BlocksOp)
12071             self._autoPublish(anObj, theName, "group")
12072             return anObj
12073
12074         # end of l3_blocks_op
12075         ## @}
12076
12077         ## @addtogroup l4_blocks_measure
12078         ## @{
12079
12080         ## Check, if the compound of blocks is given.
12081         #  To be considered as a compound of blocks, the
12082         #  given shape must satisfy the following conditions:
12083         #  - Each element of the compound should be a Block (6 faces).
12084         #  - Each face should be a quadrangle, i.e. it should have only 1 wire
12085         #       with 4 edges. If <VAR>theIsUseC1</VAR> is set to True and
12086         #       there are more than 4 edges in the only wire of a face,
12087         #       this face is considered to be quadrangle if it has 4 bounds
12088         #       (1 or more edge) of C1 continuity.
12089         #  - A connection between two Blocks should be an entire quadrangle face or an entire edge.
12090         #  - The compound should be connexe.
12091         #  - The glue between two quadrangle faces should be applied.
12092         #  @param theCompound The compound to check.
12093         #  @param theIsUseC1 Flag to check if there are 4 bounds on a face
12094         #         taking into account C1 continuity.
12095         #  @param theAngTolerance the angular tolerance to check if two neighbor
12096         #         edges are codirectional in the common vertex with this
12097         #         tolerance. This parameter is used only if
12098         #         <VAR>theIsUseC1</VAR> is set to True.
12099         #  @return TRUE, if the given shape is a compound of blocks.
12100         #  If theCompound is not valid, prints all discovered errors.
12101         #
12102         #  @ref tui_check_compound_of_blocks_page "Example 1"
12103         #  \n @ref swig_CheckCompoundOfBlocks "Example 2"
12104         @ManageTransactions("BlocksOp")
12105         def CheckCompoundOfBlocks(self,theCompound, theIsUseC1 = False,
12106                                   theAngTolerance = 1.e-12):
12107             """
12108             Check, if the compound of blocks is given.
12109             To be considered as a compound of blocks, the
12110             given shape must satisfy the following conditions:
12111             - Each element of the compound should be a Block (6 faces).
12112             - Each face should be a quadrangle, i.e. it should have only 1 wire
12113                  with 4 edges. If theIsUseC1 is set to True and
12114                  there are more than 4 edges in the only wire of a face,
12115                  this face is considered to be quadrangle if it has 4 bounds
12116                  (1 or more edge) of C1 continuity.
12117             - A connection between two Blocks should be an entire quadrangle face or an entire edge.
12118             - The compound should be connexe.
12119             - The glue between two quadrangle faces should be applied.
12120
12121             Parameters:
12122                 theCompound The compound to check.
12123                 theIsUseC1 Flag to check if there are 4 bounds on a face
12124                            taking into account C1 continuity.
12125                 theAngTolerance the angular tolerance to check if two neighbor
12126                            edges are codirectional in the common vertex with this
12127                            tolerance. This parameter is used only if
12128                            theIsUseC1 is set to True.
12129
12130             Returns:
12131                 TRUE, if the given shape is a compound of blocks.
12132                 If theCompound is not valid, prints all discovered errors.
12133             """
12134             # Example: see GEOM_Spanner.py
12135             aTolerance = -1.0
12136             if theIsUseC1:
12137                 aTolerance = theAngTolerance
12138             (IsValid, BCErrors) = self.BlocksOp.CheckCompoundOfBlocks(theCompound, aTolerance)
12139             RaiseIfFailed("CheckCompoundOfBlocks", self.BlocksOp)
12140             if IsValid == 0:
12141                 Descr = self.BlocksOp.PrintBCErrors(theCompound, BCErrors)
12142                 print Descr
12143             return IsValid
12144
12145         ## Retrieve all non blocks solids and faces from \a theShape.
12146         #  @param theShape The shape to explore.
12147         #  @param theIsUseC1 Flag to check if there are 4 bounds on a face
12148         #         taking into account C1 continuity.
12149         #  @param theAngTolerance the angular tolerance to check if two neighbor
12150         #         edges are codirectional in the common vertex with this
12151         #         tolerance. This parameter is used only if
12152         #         <VAR>theIsUseC1</VAR> is set to True.
12153         #  @param theName Object name; when specified, this parameter is used
12154         #         for result publication in the study. Otherwise, if automatic
12155         #         publication is switched on, default value is used for result name.
12156         #
12157         #  @return A tuple of two GEOM_Objects. The first object is a group of all
12158         #          non block solids (= not 6 faces, or with 6 faces, but with the
12159         #          presence of non-quadrangular faces). The second object is a
12160         #          group of all non quadrangular faces (= faces with more then
12161         #          1 wire or, if <VAR>theIsUseC1</VAR> is set to True, faces
12162         #          with 1 wire with not 4 edges that do not form 4 bounds of
12163         #          C1 continuity).
12164         #
12165         #  @ref tui_get_non_blocks_page "Example 1"
12166         #  \n @ref swig_GetNonBlocks "Example 2"
12167         @ManageTransactions("BlocksOp")
12168         def GetNonBlocks (self, theShape, theIsUseC1 = False,
12169                           theAngTolerance = 1.e-12, theName=None):
12170             """
12171             Retrieve all non blocks solids and faces from theShape.
12172
12173             Parameters:
12174                 theShape The shape to explore.
12175                 theIsUseC1 Flag to check if there are 4 bounds on a face
12176                            taking into account C1 continuity.
12177                 theAngTolerance the angular tolerance to check if two neighbor
12178                            edges are codirectional in the common vertex with this
12179                            tolerance. This parameter is used only if
12180                            theIsUseC1 is set to True.
12181                 theName Object name; when specified, this parameter is used
12182                         for result publication in the study. Otherwise, if automatic
12183                         publication is switched on, default value is used for result name.
12184
12185             Returns:
12186                 A tuple of two GEOM_Objects. The first object is a group of all
12187                 non block solids (= not 6 faces, or with 6 faces, but with the
12188                 presence of non-quadrangular faces). The second object is a
12189                 group of all non quadrangular faces (= faces with more then
12190                 1 wire or, if <VAR>theIsUseC1</VAR> is set to True, faces
12191                 with 1 wire with not 4 edges that do not form 4 bounds of
12192                 C1 continuity).
12193
12194             Usage:
12195                 (res_sols, res_faces) = geompy.GetNonBlocks(myShape1)
12196             """
12197             # Example: see GEOM_Spanner.py
12198             aTolerance = -1.0
12199             if theIsUseC1:
12200                 aTolerance = theAngTolerance
12201             aTuple = self.BlocksOp.GetNonBlocks(theShape, aTolerance)
12202             RaiseIfFailed("GetNonBlocks", self.BlocksOp)
12203             self._autoPublish(aTuple, theName, ("groupNonHexas", "groupNonQuads"))
12204             return aTuple
12205
12206         ## Remove all seam and degenerated edges from \a theShape.
12207         #  Unite faces and edges, sharing one surface. It means that
12208         #  this faces must have references to one C++ surface object (handle).
12209         #  @param theShape The compound or single solid to remove irregular edges from.
12210         #  @param doUnionFaces If True, then unite faces. If False (the default value),
12211         #         do not unite faces.
12212         #  @param theName Object name; when specified, this parameter is used
12213         #         for result publication in the study. Otherwise, if automatic
12214         #         publication is switched on, default value is used for result name.
12215         #
12216         #  @return Improved shape.
12217         #
12218         #  @ref swig_RemoveExtraEdges "Example"
12219         @ManageTransactions("BlocksOp")
12220         def RemoveExtraEdges(self, theShape, doUnionFaces=False, theName=None):
12221             """
12222             Remove all seam and degenerated edges from theShape.
12223             Unite faces and edges, sharing one surface. It means that
12224             this faces must have references to one C++ surface object (handle).
12225
12226             Parameters:
12227                 theShape The compound or single solid to remove irregular edges from.
12228                 doUnionFaces If True, then unite faces. If False (the default value),
12229                              do not unite faces.
12230                 theName Object name; when specified, this parameter is used
12231                         for result publication in the study. Otherwise, if automatic
12232                         publication is switched on, default value is used for result name.
12233
12234             Returns:
12235                 Improved shape.
12236             """
12237             # Example: see GEOM_TestOthers.py
12238             nbFacesOptimum = -1 # -1 means do not unite faces
12239             if doUnionFaces is True: nbFacesOptimum = 0 # 0 means unite faces
12240             anObj = self.BlocksOp.RemoveExtraEdges(theShape, nbFacesOptimum)
12241             RaiseIfFailed("RemoveExtraEdges", self.BlocksOp)
12242             self._autoPublish(anObj, theName, "removeExtraEdges")
12243             return anObj
12244
12245         ## Performs union faces of \a theShape
12246         #  Unite faces sharing one surface. It means that
12247         #  these faces must have references to one C++ surface object (handle).
12248         #  @param theShape The compound or single solid that contains faces
12249         #         to perform union.
12250         #  @param theName Object name; when specified, this parameter is used
12251         #         for result publication in the study. Otherwise, if automatic
12252         #         publication is switched on, default value is used for result name.
12253         #
12254         #  @return Improved shape.
12255         #
12256         #  @ref swig_UnionFaces "Example"
12257         @ManageTransactions("BlocksOp")
12258         def UnionFaces(self, theShape, theName=None):
12259             """
12260             Performs union faces of theShape.
12261             Unite faces sharing one surface. It means that
12262             these faces must have references to one C++ surface object (handle).
12263
12264             Parameters:
12265                 theShape The compound or single solid that contains faces
12266                          to perform union.
12267                 theName Object name; when specified, this parameter is used
12268                         for result publication in the study. Otherwise, if automatic
12269                         publication is switched on, default value is used for result name.
12270
12271             Returns:
12272                 Improved shape.
12273             """
12274             # Example: see GEOM_TestOthers.py
12275             anObj = self.BlocksOp.UnionFaces(theShape)
12276             RaiseIfFailed("UnionFaces", self.BlocksOp)
12277             self._autoPublish(anObj, theName, "unionFaces")
12278             return anObj
12279
12280         ## Check, if the given shape is a blocks compound.
12281         #  Fix all detected errors.
12282         #    \note Single block can be also fixed by this method.
12283         #  @param theShape The compound to check and improve.
12284         #  @param theName Object name; when specified, this parameter is used
12285         #         for result publication in the study. Otherwise, if automatic
12286         #         publication is switched on, default value is used for result name.
12287         #
12288         #  @return Improved compound.
12289         #
12290         #  @ref swig_CheckAndImprove "Example"
12291         @ManageTransactions("BlocksOp")
12292         def CheckAndImprove(self, theShape, theName=None):
12293             """
12294             Check, if the given shape is a blocks compound.
12295             Fix all detected errors.
12296
12297             Note:
12298                 Single block can be also fixed by this method.
12299
12300             Parameters:
12301                 theShape The compound to check and improve.
12302                 theName Object name; when specified, this parameter is used
12303                         for result publication in the study. Otherwise, if automatic
12304                         publication is switched on, default value is used for result name.
12305
12306             Returns:
12307                 Improved compound.
12308             """
12309             # Example: see GEOM_TestOthers.py
12310             anObj = self.BlocksOp.CheckAndImprove(theShape)
12311             RaiseIfFailed("CheckAndImprove", self.BlocksOp)
12312             self._autoPublish(anObj, theName, "improved")
12313             return anObj
12314
12315         # end of l4_blocks_measure
12316         ## @}
12317
12318         ## @addtogroup l3_blocks_op
12319         ## @{
12320
12321         ## Get all the blocks, contained in the given compound.
12322         #  @param theCompound The compound to explode.
12323         #  @param theMinNbFaces If solid has lower number of faces, it is not a block.
12324         #  @param theMaxNbFaces If solid has higher number of faces, it is not a block.
12325         #  @param theName Object name; when specified, this parameter is used
12326         #         for result publication in the study. Otherwise, if automatic
12327         #         publication is switched on, default value is used for result name.
12328         #
12329         #  @note If theMaxNbFaces = 0, the maximum number of faces is not restricted.
12330         #
12331         #  @return List of GEOM.GEOM_Object, containing the retrieved blocks.
12332         #
12333         #  @ref tui_explode_on_blocks "Example 1"
12334         #  \n @ref swig_MakeBlockExplode "Example 2"
12335         @ManageTransactions("BlocksOp")
12336         def MakeBlockExplode(self, theCompound, theMinNbFaces, theMaxNbFaces, theName=None):
12337             """
12338             Get all the blocks, contained in the given compound.
12339
12340             Parameters:
12341                 theCompound The compound to explode.
12342                 theMinNbFaces If solid has lower number of faces, it is not a block.
12343                 theMaxNbFaces If solid has higher number of faces, it is not a block.
12344                 theName Object name; when specified, this parameter is used
12345                         for result publication in the study. Otherwise, if automatic
12346                         publication is switched on, default value is used for result name.
12347
12348             Note:
12349                 If theMaxNbFaces = 0, the maximum number of faces is not restricted.
12350
12351             Returns:
12352                 List of GEOM.GEOM_Object, containing the retrieved blocks.
12353             """
12354             # Example: see GEOM_TestOthers.py
12355             theMinNbFaces,theMaxNbFaces,Parameters = ParseParameters(theMinNbFaces,theMaxNbFaces)
12356             aList = self.BlocksOp.ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces)
12357             RaiseIfFailed("ExplodeCompoundOfBlocks", self.BlocksOp)
12358             for anObj in aList:
12359                 anObj.SetParameters(Parameters)
12360                 pass
12361             self._autoPublish(aList, theName, "block")
12362             return aList
12363
12364         ## Find block, containing the given point inside its volume or on boundary.
12365         #  @param theCompound Compound, to find block in.
12366         #  @param thePoint Point, close to the desired block. If the point lays on
12367         #         boundary between some blocks, we return block with nearest center.
12368         #  @param theName Object name; when specified, this parameter is used
12369         #         for result publication in the study. Otherwise, if automatic
12370         #         publication is switched on, default value is used for result name.
12371         #
12372         #  @return New GEOM.GEOM_Object, containing the found block.
12373         #
12374         #  @ref swig_todo "Example"
12375         @ManageTransactions("BlocksOp")
12376         def GetBlockNearPoint(self, theCompound, thePoint, theName=None):
12377             """
12378             Find block, containing the given point inside its volume or on boundary.
12379
12380             Parameters:
12381                 theCompound Compound, to find block in.
12382                 thePoint Point, close to the desired block. If the point lays on
12383                          boundary between some blocks, we return block with nearest center.
12384                 theName Object name; when specified, this parameter is used
12385                         for result publication in the study. Otherwise, if automatic
12386                         publication is switched on, default value is used for result name.
12387
12388             Returns:
12389                 New GEOM.GEOM_Object, containing the found block.
12390             """
12391             # Example: see GEOM_Spanner.py
12392             anObj = self.BlocksOp.GetBlockNearPoint(theCompound, thePoint)
12393             RaiseIfFailed("GetBlockNearPoint", self.BlocksOp)
12394             self._autoPublish(anObj, theName, "block")
12395             return anObj
12396
12397         ## Find block, containing all the elements, passed as the parts, or maximum quantity of them.
12398         #  @param theCompound Compound, to find block in.
12399         #  @param theParts List of faces and/or edges and/or vertices to be parts of the found block.
12400         #  @param theName Object name; when specified, this parameter is used
12401         #         for result publication in the study. Otherwise, if automatic
12402         #         publication is switched on, default value is used for result name.
12403         #
12404         #  @return New GEOM.GEOM_Object, containing the found block.
12405         #
12406         #  @ref swig_GetBlockByParts "Example"
12407         @ManageTransactions("BlocksOp")
12408         def GetBlockByParts(self, theCompound, theParts, theName=None):
12409             """
12410              Find block, containing all the elements, passed as the parts, or maximum quantity of them.
12411
12412              Parameters:
12413                 theCompound Compound, to find block in.
12414                 theParts List of faces and/or edges and/or vertices to be parts of the found block.
12415                 theName Object name; when specified, this parameter is used
12416                         for result publication in the study. Otherwise, if automatic
12417                         publication is switched on, default value is used for result name.
12418
12419             Returns:
12420                 New GEOM_Object, containing the found block.
12421             """
12422             # Example: see GEOM_TestOthers.py
12423             anObj = self.BlocksOp.GetBlockByParts(theCompound, theParts)
12424             RaiseIfFailed("GetBlockByParts", self.BlocksOp)
12425             self._autoPublish(anObj, theName, "block")
12426             return anObj
12427
12428         ## Return all blocks, containing all the elements, passed as the parts.
12429         #  @param theCompound Compound, to find blocks in.
12430         #  @param theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
12431         #  @param theName Object name; when specified, this parameter is used
12432         #         for result publication in the study. Otherwise, if automatic
12433         #         publication is switched on, default value is used for result name.
12434         #
12435         #  @return List of GEOM.GEOM_Object, containing the found blocks.
12436         #
12437         #  @ref swig_todo "Example"
12438         @ManageTransactions("BlocksOp")
12439         def GetBlocksByParts(self, theCompound, theParts, theName=None):
12440             """
12441             Return all blocks, containing all the elements, passed as the parts.
12442
12443             Parameters:
12444                 theCompound Compound, to find blocks in.
12445                 theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
12446                 theName Object name; when specified, this parameter is used
12447                         for result publication in the study. Otherwise, if automatic
12448                         publication is switched on, default value is used for result name.
12449
12450             Returns:
12451                 List of GEOM.GEOM_Object, containing the found blocks.
12452             """
12453             # Example: see GEOM_Spanner.py
12454             aList = self.BlocksOp.GetBlocksByParts(theCompound, theParts)
12455             RaiseIfFailed("GetBlocksByParts", self.BlocksOp)
12456             self._autoPublish(aList, theName, "block")
12457             return aList
12458
12459         ## Multi-transformate block and glue the result.
12460         #  Transformation is defined so, as to superpose direction faces.
12461         #  @param Block Hexahedral solid to be multi-transformed.
12462         #  @param DirFace1 ID of First direction face.
12463         #  @param DirFace2 ID of Second direction face.
12464         #  @param NbTimes Quantity of transformations to be done.
12465         #  @param theName Object name; when specified, this parameter is used
12466         #         for result publication in the study. Otherwise, if automatic
12467         #         publication is switched on, default value is used for result name.
12468         #
12469         #  @note Unique ID of sub-shape can be obtained, using method GetSubShapeID().
12470         #
12471         #  @return New GEOM.GEOM_Object, containing the result shape.
12472         #
12473         #  @ref tui_multi_transformation "Example"
12474         @ManageTransactions("BlocksOp")
12475         def MakeMultiTransformation1D(self, Block, DirFace1, DirFace2, NbTimes, theName=None):
12476             """
12477             Multi-transformate block and glue the result.
12478             Transformation is defined so, as to superpose direction faces.
12479
12480             Parameters:
12481                 Block Hexahedral solid to be multi-transformed.
12482                 DirFace1 ID of First direction face.
12483                 DirFace2 ID of Second direction face.
12484                 NbTimes Quantity of transformations to be done.
12485                 theName Object name; when specified, this parameter is used
12486                         for result publication in the study. Otherwise, if automatic
12487                         publication is switched on, default value is used for result name.
12488
12489             Note:
12490                 Unique ID of sub-shape can be obtained, using method GetSubShapeID().
12491
12492             Returns:
12493                 New GEOM.GEOM_Object, containing the result shape.
12494             """
12495             # Example: see GEOM_Spanner.py
12496             DirFace1,DirFace2,NbTimes,Parameters = ParseParameters(DirFace1,DirFace2,NbTimes)
12497             anObj = self.BlocksOp.MakeMultiTransformation1D(Block, DirFace1, DirFace2, NbTimes)
12498             RaiseIfFailed("MakeMultiTransformation1D", self.BlocksOp)
12499             anObj.SetParameters(Parameters)
12500             self._autoPublish(anObj, theName, "transformed")
12501             return anObj
12502
12503         ## Multi-transformate block and glue the result.
12504         #  @param Block Hexahedral solid to be multi-transformed.
12505         #  @param DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
12506         #  @param DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
12507         #  @param NbTimesU,NbTimesV Quantity of transformations to be done.
12508         #  @param theName Object name; when specified, this parameter is used
12509         #         for result publication in the study. Otherwise, if automatic
12510         #         publication is switched on, default value is used for result name.
12511         #
12512         #  @return New GEOM.GEOM_Object, containing the result shape.
12513         #
12514         #  @ref tui_multi_transformation "Example"
12515         @ManageTransactions("BlocksOp")
12516         def MakeMultiTransformation2D(self, Block, DirFace1U, DirFace2U, NbTimesU,
12517                                       DirFace1V, DirFace2V, NbTimesV, theName=None):
12518             """
12519             Multi-transformate block and glue the result.
12520
12521             Parameters:
12522                 Block Hexahedral solid to be multi-transformed.
12523                 DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
12524                 DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
12525                 NbTimesU,NbTimesV Quantity of transformations to be done.
12526                 theName Object name; when specified, this parameter is used
12527                         for result publication in the study. Otherwise, if automatic
12528                         publication is switched on, default value is used for result name.
12529
12530             Returns:
12531                 New GEOM.GEOM_Object, containing the result shape.
12532             """
12533             # Example: see GEOM_Spanner.py
12534             DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV,Parameters = ParseParameters(
12535               DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV)
12536             anObj = self.BlocksOp.MakeMultiTransformation2D(Block, DirFace1U, DirFace2U, NbTimesU,
12537                                                             DirFace1V, DirFace2V, NbTimesV)
12538             RaiseIfFailed("MakeMultiTransformation2D", self.BlocksOp)
12539             anObj.SetParameters(Parameters)
12540             self._autoPublish(anObj, theName, "transformed")
12541             return anObj
12542
12543         ## Build all possible propagation groups.
12544         #  Propagation group is a set of all edges, opposite to one (main)
12545         #  edge of this group directly or through other opposite edges.
12546         #  Notion of Opposite Edge make sence only on quadrangle face.
12547         #  @param theShape Shape to build propagation groups on.
12548         #  @param theName Object name; when specified, this parameter is used
12549         #         for result publication in the study. Otherwise, if automatic
12550         #         publication is switched on, default value is used for result name.
12551         #
12552         #  @return List of GEOM.GEOM_Object, each of them is a propagation group.
12553         #
12554         #  @ref swig_Propagate "Example"
12555         @ManageTransactions("BlocksOp")
12556         def Propagate(self, theShape, theName=None):
12557             """
12558             Build all possible propagation groups.
12559             Propagation group is a set of all edges, opposite to one (main)
12560             edge of this group directly or through other opposite edges.
12561             Notion of Opposite Edge make sence only on quadrangle face.
12562
12563             Parameters:
12564                 theShape Shape to build propagation groups on.
12565                 theName Object name; when specified, this parameter is used
12566                         for result publication in the study. Otherwise, if automatic
12567                         publication is switched on, default value is used for result name.
12568
12569             Returns:
12570                 List of GEOM.GEOM_Object, each of them is a propagation group.
12571             """
12572             # Example: see GEOM_TestOthers.py
12573             listChains = self.BlocksOp.Propagate(theShape)
12574             RaiseIfFailed("Propagate", self.BlocksOp)
12575             self._autoPublish(listChains, theName, "propagate")
12576             return listChains
12577
12578         # end of l3_blocks_op
12579         ## @}
12580
12581         ## @addtogroup l3_groups
12582         ## @{
12583
12584         ## Creates a new group which will store sub-shapes of theMainShape
12585         #  @param theMainShape is a GEOM object on which the group is selected
12586         #  @param theShapeType defines a shape type of the group (see GEOM::shape_type)
12587         #  @param theName Object name; when specified, this parameter is used
12588         #         for result publication in the study. Otherwise, if automatic
12589         #         publication is switched on, default value is used for result name.
12590         #
12591         #  @return a newly created GEOM group (GEOM.GEOM_Object)
12592         #
12593         #  @ref tui_working_with_groups_page "Example 1"
12594         #  \n @ref swig_CreateGroup "Example 2"
12595         @ManageTransactions("GroupOp")
12596         def CreateGroup(self, theMainShape, theShapeType, theName=None):
12597             """
12598             Creates a new group which will store sub-shapes of theMainShape
12599
12600             Parameters:
12601                theMainShape is a GEOM object on which the group is selected
12602                theShapeType defines a shape type of the group:"COMPOUND", "COMPSOLID",
12603                             "SOLID", "SHELL", "FACE", "WIRE", "EDGE", "VERTEX", "SHAPE".
12604                 theName Object name; when specified, this parameter is used
12605                         for result publication in the study. Otherwise, if automatic
12606                         publication is switched on, default value is used for result name.
12607
12608             Returns:
12609                a newly created GEOM group
12610
12611             Example of usage:
12612                 group = geompy.CreateGroup(Box, geompy.ShapeType["FACE"])
12613
12614             """
12615             # Example: see GEOM_TestOthers.py
12616             anObj = self.GroupOp.CreateGroup(theMainShape, theShapeType)
12617             RaiseIfFailed("CreateGroup", self.GroupOp)
12618             self._autoPublish(anObj, theName, "group")
12619             return anObj
12620
12621         ## Adds a sub-object with ID theSubShapeId to the group
12622         #  @param theGroup is a GEOM group to which the new sub-shape is added
12623         #  @param theSubShapeID is a sub-shape ID in the main object.
12624         #  \note Use method GetSubShapeID() to get an unique ID of the sub-shape
12625         #
12626         #  @ref tui_working_with_groups_page "Example"
12627         @ManageTransactions("GroupOp")
12628         def AddObject(self,theGroup, theSubShapeID):
12629             """
12630             Adds a sub-object with ID theSubShapeId to the group
12631
12632             Parameters:
12633                 theGroup       is a GEOM group to which the new sub-shape is added
12634                 theSubShapeID  is a sub-shape ID in the main object.
12635
12636             Note:
12637                 Use method GetSubShapeID() to get an unique ID of the sub-shape
12638             """
12639             # Example: see GEOM_TestOthers.py
12640             self.GroupOp.AddObject(theGroup, theSubShapeID)
12641             if self.GroupOp.GetErrorCode() != "PAL_ELEMENT_ALREADY_PRESENT":
12642                 RaiseIfFailed("AddObject", self.GroupOp)
12643                 pass
12644             pass
12645
12646         ## Removes a sub-object with ID \a theSubShapeId from the group
12647         #  @param theGroup is a GEOM group from which the new sub-shape is removed
12648         #  @param theSubShapeID is a sub-shape ID in the main object.
12649         #  \note Use method GetSubShapeID() to get an unique ID of the sub-shape
12650         #
12651         #  @ref tui_working_with_groups_page "Example"
12652         @ManageTransactions("GroupOp")
12653         def RemoveObject(self,theGroup, theSubShapeID):
12654             """
12655             Removes a sub-object with ID theSubShapeId from the group
12656
12657             Parameters:
12658                 theGroup is a GEOM group from which the new sub-shape is removed
12659                 theSubShapeID is a sub-shape ID in the main object.
12660
12661             Note:
12662                 Use method GetSubShapeID() to get an unique ID of the sub-shape
12663             """
12664             # Example: see GEOM_TestOthers.py
12665             self.GroupOp.RemoveObject(theGroup, theSubShapeID)
12666             RaiseIfFailed("RemoveObject", self.GroupOp)
12667             pass
12668
12669         ## Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12670         #  @param theGroup is a GEOM group to which the new sub-shapes are added.
12671         #  @param theSubShapes is a list of sub-shapes to be added.
12672         #
12673         #  @ref tui_working_with_groups_page "Example"
12674         @ManageTransactions("GroupOp")
12675         def UnionList (self,theGroup, theSubShapes):
12676             """
12677             Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12678
12679             Parameters:
12680                 theGroup is a GEOM group to which the new sub-shapes are added.
12681                 theSubShapes is a list of sub-shapes to be added.
12682             """
12683             # Example: see GEOM_TestOthers.py
12684             self.GroupOp.UnionList(theGroup, theSubShapes)
12685             RaiseIfFailed("UnionList", self.GroupOp)
12686             pass
12687
12688         ## Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12689         #  @param theGroup is a GEOM group to which the new sub-shapes are added.
12690         #  @param theSubShapes is a list of indices of sub-shapes to be added.
12691         #
12692         #  @ref swig_UnionIDs "Example"
12693         @ManageTransactions("GroupOp")
12694         def UnionIDs(self,theGroup, theSubShapes):
12695             """
12696             Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12697
12698             Parameters:
12699                 theGroup is a GEOM group to which the new sub-shapes are added.
12700                 theSubShapes is a list of indices of sub-shapes to be added.
12701             """
12702             # Example: see GEOM_TestOthers.py
12703             self.GroupOp.UnionIDs(theGroup, theSubShapes)
12704             RaiseIfFailed("UnionIDs", self.GroupOp)
12705             pass
12706
12707         ## Removes from the group all the given shapes. No errors, if some shapes are not included.
12708         #  @param theGroup is a GEOM group from which the sub-shapes are removed.
12709         #  @param theSubShapes is a list of sub-shapes to be removed.
12710         #
12711         #  @ref tui_working_with_groups_page "Example"
12712         @ManageTransactions("GroupOp")
12713         def DifferenceList (self,theGroup, theSubShapes):
12714             """
12715             Removes from the group all the given shapes. No errors, if some shapes are not included.
12716
12717             Parameters:
12718                 theGroup is a GEOM group from which the sub-shapes are removed.
12719                 theSubShapes is a list of sub-shapes to be removed.
12720             """
12721             # Example: see GEOM_TestOthers.py
12722             self.GroupOp.DifferenceList(theGroup, theSubShapes)
12723             RaiseIfFailed("DifferenceList", self.GroupOp)
12724             pass
12725
12726         ## Removes from the group all the given shapes. No errors, if some shapes are not included.
12727         #  @param theGroup is a GEOM group from which the sub-shapes are removed.
12728         #  @param theSubShapes is a list of indices of sub-shapes to be removed.
12729         #
12730         #  @ref swig_DifferenceIDs "Example"
12731         @ManageTransactions("GroupOp")
12732         def DifferenceIDs(self,theGroup, theSubShapes):
12733             """
12734             Removes from the group all the given shapes. No errors, if some shapes are not included.
12735
12736             Parameters:
12737                 theGroup is a GEOM group from which the sub-shapes are removed.
12738                 theSubShapes is a list of indices of sub-shapes to be removed.
12739             """
12740             # Example: see GEOM_TestOthers.py
12741             self.GroupOp.DifferenceIDs(theGroup, theSubShapes)
12742             RaiseIfFailed("DifferenceIDs", self.GroupOp)
12743             pass
12744
12745         ## Union of two groups.
12746         #  New group is created. It will contain all entities
12747         #  which are present in groups theGroup1 and theGroup2.
12748         #  @param theGroup1, theGroup2 are the initial GEOM groups
12749         #                              to create the united group from.
12750         #  @param theName Object name; when specified, this parameter is used
12751         #         for result publication in the study. Otherwise, if automatic
12752         #         publication is switched on, default value is used for result name.
12753         #
12754         #  @return a newly created GEOM group.
12755         #
12756         #  @ref tui_union_groups_anchor "Example"
12757         @ManageTransactions("GroupOp")
12758         def UnionGroups (self, theGroup1, theGroup2, theName=None):
12759             """
12760             Union of two groups.
12761             New group is created. It will contain all entities
12762             which are present in groups theGroup1 and theGroup2.
12763
12764             Parameters:
12765                 theGroup1, theGroup2 are the initial GEOM groups
12766                                      to create the united group from.
12767                 theName Object name; when specified, this parameter is used
12768                         for result publication in the study. Otherwise, if automatic
12769                         publication is switched on, default value is used for result name.
12770
12771             Returns:
12772                 a newly created GEOM group.
12773             """
12774             # Example: see GEOM_TestOthers.py
12775             aGroup = self.GroupOp.UnionGroups(theGroup1, theGroup2)
12776             RaiseIfFailed("UnionGroups", self.GroupOp)
12777             self._autoPublish(aGroup, theName, "group")
12778             return aGroup
12779
12780         ## Intersection of two groups.
12781         #  New group is created. It will contain only those entities
12782         #  which are present in both groups theGroup1 and theGroup2.
12783         #  @param theGroup1, theGroup2 are the initial GEOM groups to get common part of.
12784         #  @param theName Object name; when specified, this parameter is used
12785         #         for result publication in the study. Otherwise, if automatic
12786         #         publication is switched on, default value is used for result name.
12787         #
12788         #  @return a newly created GEOM group.
12789         #
12790         #  @ref tui_intersect_groups_anchor "Example"
12791         @ManageTransactions("GroupOp")
12792         def IntersectGroups (self, theGroup1, theGroup2, theName=None):
12793             """
12794             Intersection of two groups.
12795             New group is created. It will contain only those entities
12796             which are present in both groups theGroup1 and theGroup2.
12797
12798             Parameters:
12799                 theGroup1, theGroup2 are the initial GEOM groups to get common part of.
12800                 theName Object name; when specified, this parameter is used
12801                         for result publication in the study. Otherwise, if automatic
12802                         publication is switched on, default value is used for result name.
12803
12804             Returns:
12805                 a newly created GEOM group.
12806             """
12807             # Example: see GEOM_TestOthers.py
12808             aGroup = self.GroupOp.IntersectGroups(theGroup1, theGroup2)
12809             RaiseIfFailed("IntersectGroups", self.GroupOp)
12810             self._autoPublish(aGroup, theName, "group")
12811             return aGroup
12812
12813         ## Cut of two groups.
12814         #  New group is created. It will contain entities which are
12815         #  present in group theGroup1 but are not present in group theGroup2.
12816         #  @param theGroup1 is a GEOM group to include elements of.
12817         #  @param theGroup2 is a GEOM group to exclude elements of.
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 a newly created GEOM group.
12823         #
12824         #  @ref tui_cut_groups_anchor "Example"
12825         @ManageTransactions("GroupOp")
12826         def CutGroups (self, theGroup1, theGroup2, theName=None):
12827             """
12828             Cut of two groups.
12829             New group is created. It will contain entities which are
12830             present in group theGroup1 but are not present in group theGroup2.
12831
12832             Parameters:
12833                 theGroup1 is a GEOM group to include elements of.
12834                 theGroup2 is a GEOM group to exclude elements of.
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                 a newly created GEOM group.
12841             """
12842             # Example: see GEOM_TestOthers.py
12843             aGroup = self.GroupOp.CutGroups(theGroup1, theGroup2)
12844             RaiseIfFailed("CutGroups", self.GroupOp)
12845             self._autoPublish(aGroup, theName, "group")
12846             return aGroup
12847
12848         ## Union of list of groups.
12849         #  New group is created. It will contain all entities that are
12850         #  present in groups listed in theGList.
12851         #  @param theGList is a list of GEOM groups to create the united group from.
12852         #  @param theName Object name; when specified, this parameter is used
12853         #         for result publication in the study. Otherwise, if automatic
12854         #         publication is switched on, default value is used for result name.
12855         #
12856         #  @return a newly created GEOM group.
12857         #
12858         #  @ref tui_union_groups_anchor "Example"
12859         @ManageTransactions("GroupOp")
12860         def UnionListOfGroups (self, theGList, theName=None):
12861             """
12862             Union of list of groups.
12863             New group is created. It will contain all entities that are
12864             present in groups listed in theGList.
12865
12866             Parameters:
12867                 theGList is a list of GEOM groups to create the united group from.
12868                 theName Object name; when specified, this parameter is used
12869                         for result publication in the study. Otherwise, if automatic
12870                         publication is switched on, default value is used for result name.
12871
12872             Returns:
12873                 a newly created GEOM group.
12874             """
12875             # Example: see GEOM_TestOthers.py
12876             aGroup = self.GroupOp.UnionListOfGroups(theGList)
12877             RaiseIfFailed("UnionListOfGroups", self.GroupOp)
12878             self._autoPublish(aGroup, theName, "group")
12879             return aGroup
12880
12881         ## Cut of lists of groups.
12882         #  New group is created. It will contain only entities
12883         #  which are present in groups listed in theGList.
12884         #  @param theGList is a list of GEOM groups to include elements of.
12885         #  @param theName Object name; when specified, this parameter is used
12886         #         for result publication in the study. Otherwise, if automatic
12887         #         publication is switched on, default value is used for result name.
12888         #
12889         #  @return a newly created GEOM group.
12890         #
12891         #  @ref tui_intersect_groups_anchor "Example"
12892         @ManageTransactions("GroupOp")
12893         def IntersectListOfGroups (self, theGList, theName=None):
12894             """
12895             Cut of lists of groups.
12896             New group is created. It will contain only entities
12897             which are present in groups listed in theGList.
12898
12899             Parameters:
12900                 theGList is a list of GEOM groups to include elements of.
12901                 theName Object name; when specified, this parameter is used
12902                         for result publication in the study. Otherwise, if automatic
12903                         publication is switched on, default value is used for result name.
12904
12905             Returns:
12906                 a newly created GEOM group.
12907             """
12908             # Example: see GEOM_TestOthers.py
12909             aGroup = self.GroupOp.IntersectListOfGroups(theGList)
12910             RaiseIfFailed("IntersectListOfGroups", self.GroupOp)
12911             self._autoPublish(aGroup, theName, "group")
12912             return aGroup
12913
12914         ## Cut of lists of groups.
12915         #  New group is created. It will contain only entities
12916         #  which are present in groups listed in theGList1 but
12917         #  are not present in groups from theGList2.
12918         #  @param theGList1 is a list of GEOM groups to include elements of.
12919         #  @param theGList2 is a list of GEOM groups to exclude elements of.
12920         #  @param theName Object name; when specified, this parameter is used
12921         #         for result publication in the study. Otherwise, if automatic
12922         #         publication is switched on, default value is used for result name.
12923         #
12924         #  @return a newly created GEOM group.
12925         #
12926         #  @ref tui_cut_groups_anchor "Example"
12927         @ManageTransactions("GroupOp")
12928         def CutListOfGroups (self, theGList1, theGList2, theName=None):
12929             """
12930             Cut of lists of groups.
12931             New group is created. It will contain only entities
12932             which are present in groups listed in theGList1 but
12933             are not present in groups from theGList2.
12934
12935             Parameters:
12936                 theGList1 is a list of GEOM groups to include elements of.
12937                 theGList2 is a list of GEOM groups to exclude elements of.
12938                 theName Object name; when specified, this parameter is used
12939                         for result publication in the study. Otherwise, if automatic
12940                         publication is switched on, default value is used for result name.
12941
12942             Returns:
12943                 a newly created GEOM group.
12944             """
12945             # Example: see GEOM_TestOthers.py
12946             aGroup = self.GroupOp.CutListOfGroups(theGList1, theGList2)
12947             RaiseIfFailed("CutListOfGroups", self.GroupOp)
12948             self._autoPublish(aGroup, theName, "group")
12949             return aGroup
12950
12951         ## Returns a list of sub-objects ID stored in the group
12952         #  @param theGroup is a GEOM group for which a list of IDs is requested
12953         #
12954         #  @ref swig_GetObjectIDs "Example"
12955         @ManageTransactions("GroupOp")
12956         def GetObjectIDs(self,theGroup):
12957             """
12958             Returns a list of sub-objects ID stored in the group
12959
12960             Parameters:
12961                 theGroup is a GEOM group for which a list of IDs is requested
12962             """
12963             # Example: see GEOM_TestOthers.py
12964             ListIDs = self.GroupOp.GetObjects(theGroup)
12965             RaiseIfFailed("GetObjects", self.GroupOp)
12966             return ListIDs
12967
12968         ## Returns a type of sub-objects stored in the group
12969         #  @param theGroup is a GEOM group which type is returned.
12970         #
12971         #  @ref swig_GetType "Example"
12972         @ManageTransactions("GroupOp")
12973         def GetType(self,theGroup):
12974             """
12975             Returns a type of sub-objects stored in the group
12976
12977             Parameters:
12978                 theGroup is a GEOM group which type is returned.
12979             """
12980             # Example: see GEOM_TestOthers.py
12981             aType = self.GroupOp.GetType(theGroup)
12982             RaiseIfFailed("GetType", self.GroupOp)
12983             return aType
12984
12985         ## Convert a type of geom object from id to string value
12986         #  @param theId is a GEOM obect type id.
12987         #  @return type of geom object (POINT, VECTOR, PLANE, LINE, TORUS, ... )
12988         #  @ref swig_GetType "Example"
12989         def ShapeIdToType(self, theId):
12990             """
12991             Convert a type of geom object from id to string value
12992
12993             Parameters:
12994                 theId is a GEOM obect type id.
12995
12996             Returns:
12997                 type of geom object (POINT, VECTOR, PLANE, LINE, TORUS, ... )
12998             """
12999             if theId == 0:
13000                 return "COPY"
13001             if theId == 1:
13002                 return "IMPORT"
13003             if theId == 2:
13004                 return "POINT"
13005             if theId == 3:
13006                 return "VECTOR"
13007             if theId == 4:
13008                 return "PLANE"
13009             if theId == 5:
13010                 return "LINE"
13011             if theId == 6:
13012                 return "TORUS"
13013             if theId == 7:
13014                 return "BOX"
13015             if theId == 8:
13016                 return "CYLINDER"
13017             if theId == 9:
13018                 return "CONE"
13019             if theId == 10:
13020                 return "SPHERE"
13021             if theId == 11:
13022                 return "PRISM"
13023             if theId == 12:
13024                 return "REVOLUTION"
13025             if theId == 13:
13026                 return "BOOLEAN"
13027             if theId == 14:
13028                 return "PARTITION"
13029             if theId == 15:
13030                 return "POLYLINE"
13031             if theId == 16:
13032                 return "CIRCLE"
13033             if theId == 17:
13034                 return "SPLINE"
13035             if theId == 18:
13036                 return "ELLIPSE"
13037             if theId == 19:
13038                 return "CIRC_ARC"
13039             if theId == 20:
13040                 return "FILLET"
13041             if theId == 21:
13042                 return "CHAMFER"
13043             if theId == 22:
13044                 return "EDGE"
13045             if theId == 23:
13046                 return "WIRE"
13047             if theId == 24:
13048                 return "FACE"
13049             if theId == 25:
13050                 return "SHELL"
13051             if theId == 26:
13052                 return "SOLID"
13053             if theId == 27:
13054                 return "COMPOUND"
13055             if theId == 28:
13056                 return "SUBSHAPE"
13057             if theId == 29:
13058                 return "PIPE"
13059             if theId == 30:
13060                 return "ARCHIMEDE"
13061             if theId == 31:
13062                 return "FILLING"
13063             if theId == 32:
13064                 return "EXPLODE"
13065             if theId == 33:
13066                 return "GLUED"
13067             if theId == 34:
13068                 return "SKETCHER"
13069             if theId == 35:
13070                 return "CDG"
13071             if theId == 36:
13072                 return "FREE_BOUNDS"
13073             if theId == 37:
13074                 return "GROUP"
13075             if theId == 38:
13076                 return "BLOCK"
13077             if theId == 39:
13078                 return "MARKER"
13079             if theId == 40:
13080                 return "THRUSECTIONS"
13081             if theId == 41:
13082                 return "COMPOUNDFILTER"
13083             if theId == 42:
13084                 return "SHAPES_ON_SHAPE"
13085             if theId == 43:
13086                 return "ELLIPSE_ARC"
13087             if theId == 44:
13088                 return "3DSKETCHER"
13089             if theId == 45:
13090                 return "FILLET_2D"
13091             if theId == 46:
13092                 return "FILLET_1D"
13093             if theId == 201:
13094                 return "PIPETSHAPE"
13095             return "Shape Id not exist."
13096
13097         ## Returns a main shape associated with the group
13098         #  @param theGroup is a GEOM group for which a main shape object is requested
13099         #  @return a GEOM object which is a main shape for theGroup
13100         #
13101         #  @ref swig_GetMainShape "Example"
13102         @ManageTransactions("GroupOp")
13103         def GetMainShape(self,theGroup):
13104             """
13105             Returns a main shape associated with the group
13106
13107             Parameters:
13108                 theGroup is a GEOM group for which a main shape object is requested
13109
13110             Returns:
13111                 a GEOM object which is a main shape for theGroup
13112
13113             Example of usage: BoxCopy = geompy.GetMainShape(CreateGroup)
13114             """
13115             # Example: see GEOM_TestOthers.py
13116             anObj = self.GroupOp.GetMainShape(theGroup)
13117             RaiseIfFailed("GetMainShape", self.GroupOp)
13118             return anObj
13119
13120         ## Create group of edges of theShape, whose length is in range [min_length, max_length].
13121         #  If include_min/max == 0, edges with length == min/max_length will not be included in result.
13122         #  @param theShape given shape (see GEOM.GEOM_Object)
13123         #  @param min_length minimum length of edges of theShape
13124         #  @param max_length maximum length of edges of theShape
13125         #  @param include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13126         #  @param include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13127         #  @param theName Object name; when specified, this parameter is used
13128         #         for result publication in the study. Otherwise, if automatic
13129         #         publication is switched on, default value is used for result name.
13130         #
13131         #  @return a newly created GEOM group of edges
13132         #
13133         #  @@ref swig_todo "Example"
13134         def GetEdgesByLength (self, theShape, min_length, max_length, include_min = 1, include_max = 1, theName=None):
13135             """
13136             Create group of edges of theShape, whose length is in range [min_length, max_length].
13137             If include_min/max == 0, edges with length == min/max_length will not be included in result.
13138
13139             Parameters:
13140                 theShape given shape
13141                 min_length minimum length of edges of theShape
13142                 max_length maximum length of edges of theShape
13143                 include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13144                 include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13145                 theName Object name; when specified, this parameter is used
13146                         for result publication in the study. Otherwise, if automatic
13147                         publication is switched on, default value is used for result name.
13148
13149              Returns:
13150                 a newly created GEOM group of edges.
13151             """
13152             edges = self.SubShapeAll(theShape, self.ShapeType["EDGE"])
13153             edges_in_range = []
13154             for edge in edges:
13155                 Props = self.BasicProperties(edge)
13156                 if min_length <= Props[0] and Props[0] <= max_length:
13157                     if (not include_min) and (min_length == Props[0]):
13158                         skip = 1
13159                     else:
13160                         if (not include_max) and (Props[0] == max_length):
13161                             skip = 1
13162                         else:
13163                             edges_in_range.append(edge)
13164
13165             if len(edges_in_range) <= 0:
13166                 print "No edges found by given criteria"
13167                 return None
13168
13169             # note: auto-publishing is done in self.CreateGroup()
13170             group_edges = self.CreateGroup(theShape, self.ShapeType["EDGE"], theName)
13171             self.UnionList(group_edges, edges_in_range)
13172
13173             return group_edges
13174
13175         ## Create group of edges of selected shape, whose length is in range [min_length, max_length].
13176         #  If include_min/max == 0, edges with length == min/max_length will not be included in result.
13177         #  @param min_length minimum length of edges of selected shape
13178         #  @param max_length maximum length of edges of selected shape
13179         #  @param include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13180         #  @param include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13181         #  @return a newly created GEOM group of edges
13182         #  @ref swig_todo "Example"
13183         def SelectEdges (self, min_length, max_length, include_min = 1, include_max = 1):
13184             """
13185             Create group of edges of selected shape, whose length is in range [min_length, max_length].
13186             If include_min/max == 0, edges with length == min/max_length will not be included in result.
13187
13188             Parameters:
13189                 min_length minimum length of edges of selected shape
13190                 max_length maximum length of edges of selected shape
13191                 include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13192                 include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13193
13194              Returns:
13195                 a newly created GEOM group of edges.
13196             """
13197             nb_selected = sg.SelectedCount()
13198             if nb_selected < 1:
13199                 print "Select a shape before calling this function, please."
13200                 return 0
13201             if nb_selected > 1:
13202                 print "Only one shape must be selected"
13203                 return 0
13204
13205             id_shape = sg.getSelected(0)
13206             shape = IDToObject( id_shape )
13207
13208             group_edges = self.GetEdgesByLength(shape, min_length, max_length, include_min, include_max)
13209
13210             left_str  = " < "
13211             right_str = " < "
13212             if include_min: left_str  = " <= "
13213             if include_max: right_str  = " <= "
13214
13215             self.addToStudyInFather(shape, group_edges, "Group of edges with " + `min_length`
13216                                     + left_str + "length" + right_str + `max_length`)
13217
13218             sg.updateObjBrowser(1)
13219
13220             return group_edges
13221
13222         # end of l3_groups
13223         ## @}
13224
13225         #@@ insert new functions before this line @@ do not remove this line @@#
13226
13227         ## Create a copy of the given object
13228         #
13229         #  @param theOriginal geometry object for copy
13230         #  @param theName Object name; when specified, this parameter is used
13231         #         for result publication in the study. Otherwise, if automatic
13232         #         publication is switched on, default value is used for result name.
13233         #
13234         #  @return New GEOM_Object, containing the copied shape.
13235         #
13236         #  @ingroup l1_geomBuilder_auxiliary
13237         #  @ref swig_MakeCopy "Example"
13238         @ManageTransactions("InsertOp")
13239         def MakeCopy(self, theOriginal, theName=None):
13240             """
13241             Create a copy of the given object
13242
13243             Parameters:
13244                 theOriginal geometry object for copy
13245                 theName Object name; when specified, this parameter is used
13246                         for result publication in the study. Otherwise, if automatic
13247                         publication is switched on, default value is used for result name.
13248
13249             Returns:
13250                 New GEOM_Object, containing the copied shape.
13251
13252             Example of usage: Copy = geompy.MakeCopy(Box)
13253             """
13254             # Example: see GEOM_TestAll.py
13255             anObj = self.InsertOp.MakeCopy(theOriginal)
13256             RaiseIfFailed("MakeCopy", self.InsertOp)
13257             self._autoPublish(anObj, theName, "copy")
13258             return anObj
13259
13260         ## Add Path to load python scripts from
13261         #  @param Path a path to load python scripts from
13262         #  @ingroup l1_geomBuilder_auxiliary
13263         def addPath(self,Path):
13264             """
13265             Add Path to load python scripts from
13266
13267             Parameters:
13268                 Path a path to load python scripts from
13269             """
13270             if (sys.path.count(Path) < 1):
13271                 sys.path.append(Path)
13272                 pass
13273             pass
13274
13275         ## Load marker texture from the file
13276         #  @param Path a path to the texture file
13277         #  @return unique texture identifier
13278         #  @ingroup l1_geomBuilder_auxiliary
13279         @ManageTransactions("InsertOp")
13280         def LoadTexture(self, Path):
13281             """
13282             Load marker texture from the file
13283
13284             Parameters:
13285                 Path a path to the texture file
13286
13287             Returns:
13288                 unique texture identifier
13289             """
13290             # Example: see GEOM_TestAll.py
13291             ID = self.InsertOp.LoadTexture(Path)
13292             RaiseIfFailed("LoadTexture", self.InsertOp)
13293             return ID
13294
13295         ## Get internal name of the object based on its study entry
13296         #  @note This method does not provide an unique identifier of the geometry object.
13297         #  @note This is internal function of GEOM component, though it can be used outside it for
13298         #  appropriate reason (e.g. for identification of geometry object).
13299         #  @param obj geometry object
13300         #  @return unique object identifier
13301         #  @ingroup l1_geomBuilder_auxiliary
13302         def getObjectID(self, obj):
13303             """
13304             Get internal name of the object based on its study entry.
13305             Note: this method does not provide an unique identifier of the geometry object.
13306             It is an internal function of GEOM component, though it can be used outside GEOM for
13307             appropriate reason (e.g. for identification of geometry object).
13308
13309             Parameters:
13310                 obj geometry object
13311
13312             Returns:
13313                 unique object identifier
13314             """
13315             ID = ""
13316             entry = salome.ObjectToID(obj)
13317             if entry is not None:
13318                 lst = entry.split(":")
13319                 if len(lst) > 0:
13320                     ID = lst[-1] # -1 means last item in the list
13321                     return "GEOM_" + ID
13322             return ID
13323
13324
13325
13326         ## Add marker texture. @a Width and @a Height parameters
13327         #  specify width and height of the texture in pixels.
13328         #  If @a RowData is @c True, @a Texture parameter should represent texture data
13329         #  packed into the byte array. If @a RowData is @c False (default), @a Texture
13330         #  parameter should be unpacked string, in which '1' symbols represent opaque
13331         #  pixels and '0' represent transparent pixels of the texture bitmap.
13332         #
13333         #  @param Width texture width in pixels
13334         #  @param Height texture height in pixels
13335         #  @param Texture texture data
13336         #  @param RowData if @c True, @a Texture data are packed in the byte stream
13337         #  @return unique texture identifier
13338         #  @ingroup l1_geomBuilder_auxiliary
13339         @ManageTransactions("InsertOp")
13340         def AddTexture(self, Width, Height, Texture, RowData=False):
13341             """
13342             Add marker texture. Width and Height parameters
13343             specify width and height of the texture in pixels.
13344             If RowData is True, Texture parameter should represent texture data
13345             packed into the byte array. If RowData is False (default), Texture
13346             parameter should be unpacked string, in which '1' symbols represent opaque
13347             pixels and '0' represent transparent pixels of the texture bitmap.
13348
13349             Parameters:
13350                 Width texture width in pixels
13351                 Height texture height in pixels
13352                 Texture texture data
13353                 RowData if True, Texture data are packed in the byte stream
13354
13355             Returns:
13356                 return unique texture identifier
13357             """
13358             if not RowData: Texture = PackData(Texture)
13359             ID = self.InsertOp.AddTexture(Width, Height, Texture)
13360             RaiseIfFailed("AddTexture", self.InsertOp)
13361             return ID
13362
13363         ## Transfer not topological data from one GEOM object to another.
13364         #
13365         #  @param theObjectFrom the source object of non-topological data
13366         #  @param theObjectTo the destination object of non-topological data
13367         #  @param theFindMethod method to search sub-shapes of theObjectFrom
13368         #         in shape theObjectTo. Possible values are: GEOM.FSM_GetInPlace,
13369         #         GEOM.FSM_GetInPlaceByHistory and GEOM.FSM_GetInPlace_Old.
13370         #         Other values of GEOM.find_shape_method are not supported.
13371         #
13372         #  @return True in case of success; False otherwise.
13373         #
13374         #  @ingroup l1_geomBuilder_auxiliary
13375         #
13376         #  @ref swig_TransferData "Example"
13377         @ManageTransactions("InsertOp")
13378         def TransferData(self, theObjectFrom, theObjectTo,
13379                          theFindMethod=GEOM.FSM_GetInPlace):
13380             """
13381             Transfer not topological data from one GEOM object to another.
13382
13383             Parameters:
13384                 theObjectFrom the source object of non-topological data
13385                 theObjectTo the destination object of non-topological data
13386                 theFindMethod method to search sub-shapes of theObjectFrom
13387                               in shape theObjectTo. Possible values are:
13388                               GEOM.FSM_GetInPlace, GEOM.FSM_GetInPlaceByHistory
13389                               and GEOM.FSM_GetInPlace_Old. Other values of
13390                               GEOM.find_shape_method are not supported.
13391
13392             Returns:
13393                 True in case of success; False otherwise.
13394
13395             # Example: see GEOM_TestOthers.py
13396             """
13397             # Example: see GEOM_TestAll.py
13398             isOk = self.InsertOp.TransferData(theObjectFrom,
13399                                                theObjectTo, theFindMethod)
13400             RaiseIfFailed("TransferData", self.InsertOp)
13401             return isOk
13402
13403         ## Creates a new folder object. It is a container for any GEOM objects.
13404         #  @param Name name of the container
13405         #  @param Father parent object. If None,
13406         #         folder under 'Geometry' root object will be created.
13407         #  @return a new created folder
13408         #  @ingroup l1_publish_data
13409         def NewFolder(self, Name, Father=None):
13410             """
13411             Create a new folder object. It is an auxiliary container for any GEOM objects.
13412
13413             Parameters:
13414                 Name name of the container
13415                 Father parent object. If None,
13416                 folder under 'Geometry' root object will be created.
13417
13418             Returns:
13419                 a new created folder
13420             """
13421             if not Father: Father = self.father
13422             return self.CreateFolder(Name, Father)
13423
13424         ## Move object to the specified folder
13425         #  @param Object object to move
13426         #  @param Folder target folder
13427         #  @ingroup l1_publish_data
13428         def PutToFolder(self, Object, Folder):
13429             """
13430             Move object to the specified folder
13431
13432             Parameters:
13433                 Object object to move
13434                 Folder target folder
13435             """
13436             self.MoveToFolder(Object, Folder)
13437             pass
13438
13439         ## Move list of objects to the specified folder
13440         #  @param ListOfSO list of objects to move
13441         #  @param Folder target folder
13442         #  @ingroup l1_publish_data
13443         def PutListToFolder(self, ListOfSO, Folder):
13444             """
13445             Move list of objects to the specified folder
13446
13447             Parameters:
13448                 ListOfSO list of objects to move
13449                 Folder target folder
13450             """
13451             self.MoveListToFolder(ListOfSO, Folder)
13452             pass
13453
13454         ## @addtogroup l2_field
13455         ## @{
13456
13457         ## Creates a field
13458         #  @param shape the shape the field lies on
13459         #  @param name the field name
13460         #  @param type type of field data: 0 - bool, 1 - int, 2 - double, 3 - string
13461         #  @param dimension dimension of the shape the field lies on
13462         #         0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
13463         #  @param componentNames names of components
13464         #  @return a created field
13465         @ManageTransactions("FieldOp")
13466         def CreateField(self, shape, name, type, dimension, componentNames):
13467             """
13468             Creates a field
13469
13470             Parameters:
13471                 shape the shape the field lies on
13472                 name  the field name
13473                 type  type of field data
13474                 dimension dimension of the shape the field lies on
13475                           0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
13476                 componentNames names of components
13477
13478             Returns:
13479                 a created field
13480             """
13481             if isinstance( type, int ):
13482                 if type < 0 or type > 3:
13483                     raise RuntimeError, "CreateField : Error: data type must be within [0-3] range"
13484                 type = [GEOM.FDT_Bool,GEOM.FDT_Int,GEOM.FDT_Double,GEOM.FDT_String][type]
13485
13486             f = self.FieldOp.CreateField( shape, name, type, dimension, componentNames)
13487             RaiseIfFailed("CreateField", self.FieldOp)
13488             global geom
13489             geom._autoPublish( f, "", name)
13490             return f
13491
13492         ## Removes a field from the GEOM component
13493         #  @param field the field to remove
13494         def RemoveField(self, field):
13495             "Removes a field from the GEOM component"
13496             global geom
13497             if isinstance( field, GEOM._objref_GEOM_Field ):
13498                 geom.RemoveObject( field )
13499             elif isinstance( field, geomField ):
13500                 geom.RemoveObject( field.field )
13501             else:
13502                 raise RuntimeError, "RemoveField() : the object is not a field"
13503             return
13504
13505         ## Returns number of fields on a shape
13506         @ManageTransactions("FieldOp")
13507         def CountFields(self, shape):
13508             "Returns number of fields on a shape"
13509             nb = self.FieldOp.CountFields( shape )
13510             RaiseIfFailed("CountFields", self.FieldOp)
13511             return nb
13512
13513         ## Returns all fields on a shape
13514         @ManageTransactions("FieldOp")
13515         def GetFields(self, shape):
13516             "Returns all fields on a shape"
13517             ff = self.FieldOp.GetFields( shape )
13518             RaiseIfFailed("GetFields", self.FieldOp)
13519             return ff
13520
13521         ## Returns a field on a shape by its name
13522         @ManageTransactions("FieldOp")
13523         def GetField(self, shape, name):
13524             "Returns a field on a shape by its name"
13525             f = self.FieldOp.GetField( shape, name )
13526             RaiseIfFailed("GetField", self.FieldOp)
13527             return f
13528
13529         # end of l2_field
13530         ## @}
13531
13532
13533 import omniORB
13534 # Register the new proxy for GEOM_Gen
13535 omniORB.registerObjref(GEOM._objref_GEOM_Gen._NP_RepositoryId, geomBuilder)
13536
13537
13538 ## Field on Geometry
13539 #  @ingroup l2_field
13540 class geomField( GEOM._objref_GEOM_Field ):
13541
13542     def __init__(self):
13543         GEOM._objref_GEOM_Field.__init__(self)
13544         self.field = GEOM._objref_GEOM_Field
13545         return
13546
13547     ## Returns the shape the field lies on
13548     def getShape(self):
13549         "Returns the shape the field lies on"
13550         return self.field.GetShape(self)
13551
13552     ## Returns the field name
13553     def getName(self):
13554         "Returns the field name"
13555         return self.field.GetName(self)
13556
13557     ## Returns type of field data as integer [0-3]
13558     def getType(self):
13559         "Returns type of field data"
13560         return self.field.GetDataType(self)._v
13561
13562     ## Returns type of field data:
13563     #  one of GEOM.FDT_Bool, GEOM.FDT_Int, GEOM.FDT_Double, GEOM.FDT_String
13564     def getTypeEnum(self):
13565         "Returns type of field data"
13566         return self.field.GetDataType(self)
13567
13568     ## Returns dimension of the shape the field lies on:
13569     #  0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
13570     def getDimension(self):
13571         """Returns dimension of the shape the field lies on:
13572         0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape"""
13573         return self.field.GetDimension(self)
13574
13575     ## Returns names of components
13576     def getComponents(self):
13577         "Returns names of components"
13578         return self.field.GetComponents(self)
13579
13580     ## Adds a time step to the field
13581     #  @param step the time step number further used as the step identifier
13582     #  @param stamp the time step time
13583     #  @param values the values of the time step
13584     def addStep(self, step, stamp, values):
13585         "Adds a time step to the field"
13586         stp = self.field.AddStep( self, step, stamp )
13587         if not stp:
13588             raise RuntimeError, \
13589                   "Field.addStep() : Error: step %s already exists in this field"%step
13590         global geom
13591         geom._autoPublish( stp, "", "Step %s, %s"%(step,stamp))
13592         self.setValues( step, values )
13593         return stp
13594
13595     ## Remove a time step from the field
13596     def removeStep(self,step):
13597         "Remove a time step from the field"
13598         stepSO = None
13599         try:
13600             stepObj = self.field.GetStep( self, step )
13601             if stepObj:
13602                 stepSO = geom.myStudy.FindObjectID( stepObj.GetStudyEntry() )
13603         except:
13604             #import traceback
13605             #traceback.print_exc()
13606             pass
13607         self.field.RemoveStep( self, step )
13608         if stepSO:
13609             geom.myBuilder.RemoveObjectWithChildren( stepSO )
13610         return
13611
13612     ## Returns number of time steps in the field
13613     def countSteps(self):
13614         "Returns number of time steps in the field"
13615         return self.field.CountSteps(self)
13616
13617     ## Returns a list of time step IDs in the field
13618     def getSteps(self):
13619         "Returns a list of time step IDs in the field"
13620         return self.field.GetSteps(self)
13621
13622     ## Returns a time step by its ID
13623     def getStep(self,step):
13624         "Returns a time step by its ID"
13625         stp = self.field.GetStep(self, step)
13626         if not stp:
13627             raise RuntimeError, "Step %s is missing from this field"%step
13628         return stp
13629
13630     ## Returns the time of the field step
13631     def getStamp(self,step):
13632         "Returns the time of the field step"
13633         return self.getStep(step).GetStamp()
13634
13635     ## Changes the time of the field step
13636     def setStamp(self, step, stamp):
13637         "Changes the time of the field step"
13638         return self.getStep(step).SetStamp(stamp)
13639
13640     ## Returns values of the field step
13641     def getValues(self, step):
13642         "Returns values of the field step"
13643         return self.getStep(step).GetValues()
13644
13645     ## Changes values of the field step
13646     def setValues(self, step, values):
13647         "Changes values of the field step"
13648         stp = self.getStep(step)
13649         errBeg = "Field.setValues(values) : Error: "
13650         try:
13651             ok = stp.SetValues( values )
13652         except Exception, e:
13653             excStr = str(e)
13654             if excStr.find("WrongPythonType") > 0:
13655                 raise RuntimeError, errBeg +\
13656                       "wrong type of values, %s values are expected"%str(self.getTypeEnum())[4:]
13657             raise RuntimeError, errBeg + str(e)
13658         if not ok:
13659             nbOK = self.field.GetArraySize(self)
13660             nbKO = len(values)
13661             if nbOK != nbKO:
13662                 raise RuntimeError, errBeg + "len(values) must be %s but not %s"%(nbOK,nbKO)
13663             else:
13664                 raise RuntimeError, errBeg + "failed"
13665         return
13666
13667     pass # end of class geomField
13668
13669 # Register the new proxy for GEOM_Field
13670 omniORB.registerObjref(GEOM._objref_GEOM_Field._NP_RepositoryId, geomField)
13671
13672
13673 ## Create a new geomBuilder instance.The geomBuilder class provides the Python
13674 #  interface to GEOM operations.
13675 #
13676 #  Typical use is:
13677 #  \code
13678 #    import salome
13679 #    salome.salome_init()
13680 #    from salome.geom import geomBuilder
13681 #    geompy = geomBuilder.New(salome.myStudy)
13682 #  \endcode
13683 #  @param  study     SALOME study, generally obtained by salome.myStudy.
13684 #  @param  instance  CORBA proxy of GEOM Engine. If None, the default Engine is used.
13685 #  @return geomBuilder instance
13686 def New( study, instance=None):
13687     """
13688     Create a new geomBuilder instance.The geomBuilder class provides the Python
13689     interface to GEOM operations.
13690
13691     Typical use is:
13692         import salome
13693         salome.salome_init()
13694         from salome.geom import geomBuilder
13695         geompy = geomBuilder.New(salome.myStudy)
13696
13697     Parameters:
13698         study     SALOME study, generally obtained by salome.myStudy.
13699         instance  CORBA proxy of GEOM Engine. If None, the default Engine is used.
13700     Returns:
13701         geomBuilder instance
13702     """
13703     #print "New geomBuilder ", study, instance
13704     global engine
13705     global geom
13706     global doLcc
13707     engine = instance
13708     if engine is None:
13709       doLcc = True
13710     geom = geomBuilder()
13711     assert isinstance(geom,geomBuilder), "Geom engine class is %s but should be geomBuilder.geomBuilder. Import geomBuilder before creating the instance."%geom.__class__
13712     geom.init_geom(study)
13713     return geom
13714
13715
13716 # Register methods from the plug-ins in the geomBuilder class 
13717 plugins_var = os.environ.get( "GEOM_PluginsList" )
13718
13719 plugins = None
13720 if plugins_var is not None:
13721     plugins = plugins_var.split( ":" )
13722     plugins=filter(lambda x: len(x)>0, plugins)
13723 if plugins is not None:
13724     for pluginName in plugins:
13725         pluginBuilderName = pluginName + "Builder"
13726         try:
13727             exec( "from salome.%s.%s import *" % (pluginName, pluginBuilderName))
13728         except Exception, e:
13729             from salome_utils import verbose
13730             print "Exception while loading %s: %s" % ( pluginBuilderName, e )
13731             continue
13732         exec( "from salome.%s import %s" % (pluginName, pluginBuilderName))
13733         plugin = eval( pluginBuilderName )
13734         
13735         # add methods from plugin module to the geomBuilder class
13736         for k in dir( plugin ):
13737             if k[0] == '_': continue
13738             method = getattr( plugin, k )
13739             if type( method ).__name__ == 'function':
13740                 if not hasattr( geomBuilder, k ):
13741                     setattr( geomBuilder, k, method )
13742                 pass
13743             pass
13744         del pluginName
13745         pass
13746     pass