Salome HOME
0022753: [EDF] Extension of the curves and surfaces
[modules/geom.git] / src / GEOM_SWIG / geomBuilder.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2014  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, "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, ("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}
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             pass
789
790         def GetPluginOperations(self, studyID, libraryName):
791             op = GEOM._objref_GEOM_Gen.GetPluginOperations(self, studyID, libraryName)
792             return op
793
794         ## Enable / disable results auto-publishing
795         #
796         #  The automatic publishing is managed in the following way:
797         #  - if @a maxNbSubShapes = 0, automatic publishing is disabled.
798         #  - if @a maxNbSubShapes = -1 (default), automatic publishing is enabled and
799         #  maximum number of sub-shapes allowed for publishing is unlimited; any negative
800         #  value passed as parameter has the same effect.
801         #  - if @a maxNbSubShapes is any positive value, automatic publishing is enabled and
802         #  maximum number of sub-shapes allowed for publishing is set to specified value.
803         #
804         #  @param maxNbSubShapes maximum number of sub-shapes allowed for publishing.
805         #  @ingroup l1_publish_data
806         def addToStudyAuto(self, maxNbSubShapes=-1):
807             """
808             Enable / disable results auto-publishing
809
810             The automatic publishing is managed in the following way:
811             - if @a maxNbSubShapes = 0, automatic publishing is disabled;
812             - if @a maxNbSubShapes = -1 (default), automatic publishing is enabled and
813             maximum number of sub-shapes allowed for publishing is unlimited; any negative
814             value passed as parameter has the same effect.
815             - if @a maxNbSubShapes is any positive value, automatic publishing is enabled and
816             maximum number of sub-shapes allowed for publishing is set to this value.
817
818             Parameters:
819                 maxNbSubShapes maximum number of sub-shapes allowed for publishing.
820
821             Example of usage:
822                 geompy.addToStudyAuto()   # enable auto-publishing
823                 geompy.MakeBoxDXDYDZ(100) # box is created and published with default name
824                 geompy.addToStudyAuto(0)  # disable auto-publishing
825             """
826             self.myMaxNbSubShapesAllowed = max(-1, maxNbSubShapes)
827             pass
828
829         ## Dump component to the Python script
830         #  This method overrides IDL function to allow default values for the parameters.
831         def DumpPython(self, theStudy, theIsPublished=True, theIsMultiFile=True):
832             """
833             Dump component to the Python script
834             This method overrides IDL function to allow default values for the parameters.
835             """
836             return GEOM._objref_GEOM_Gen.DumpPython(self, theStudy, theIsPublished, theIsMultiFile)
837
838         ## Get name for sub-shape aSubObj of shape aMainObj
839         #
840         # @ref swig_SubShapeName "Example"
841         @ManageTransactions("ShapesOp")
842         def SubShapeName(self,aSubObj, aMainObj):
843             """
844             Get name for sub-shape aSubObj of shape aMainObj
845             """
846             # Example: see GEOM_TestAll.py
847
848             #aSubId  = orb.object_to_string(aSubObj)
849             #aMainId = orb.object_to_string(aMainObj)
850             #index = gg.getIndexTopology(aSubId, aMainId)
851             #name = gg.getShapeTypeString(aSubId) + "_%d"%(index)
852             index = self.ShapesOp.GetTopologyIndex(aMainObj, aSubObj)
853             name = self.ShapesOp.GetShapeTypeString(aSubObj) + "_%d"%(index)
854             return name
855
856         ## Publish in study aShape with name aName
857         #
858         #  \param aShape the shape to be published
859         #  \param aName  the name for the shape
860         #  \param doRestoreSubShapes if True, finds and publishes also
861         #         sub-shapes of <VAR>aShape</VAR>, corresponding to its arguments
862         #         and published sub-shapes of arguments
863         #  \param theArgs,theFindMethod,theInheritFirstArg see RestoreSubShapes() for
864         #                                                  these arguments description
865         #  \return study entry of the published shape in form of string
866         #
867         #  @ingroup l1_publish_data
868         #  @ref swig_all_addtostudy "Example"
869         def addToStudy(self, aShape, aName, doRestoreSubShapes=False,
870                        theArgs=[], theFindMethod=GEOM.FSM_GetInPlace, theInheritFirstArg=False):
871             """
872             Publish in study aShape with name aName
873
874             Parameters:
875                 aShape the shape to be published
876                 aName  the name for the shape
877                 doRestoreSubShapes if True, finds and publishes also
878                                    sub-shapes of aShape, corresponding to its arguments
879                                    and published sub-shapes of arguments
880                 theArgs,theFindMethod,theInheritFirstArg see geompy.RestoreSubShapes() for
881                                                          these arguments description
882
883             Returns:
884                 study entry of the published shape in form of string
885
886             Example of usage:
887                 id_block1 = geompy.addToStudy(Block1, "Block 1")
888             """
889             # Example: see GEOM_TestAll.py
890             try:
891                 aSObject = self.AddInStudy(self.myStudy, aShape, aName, None)
892                 if aSObject and aName: aSObject.SetAttrString("AttributeName", aName)
893                 if doRestoreSubShapes:
894                     self.RestoreSubShapesSO(self.myStudy, aSObject, theArgs,
895                                             theFindMethod, theInheritFirstArg, True )
896             except:
897                 print "addToStudy() failed"
898                 return ""
899             return aShape.GetStudyEntry()
900
901         ## Publish in study aShape with name aName as sub-object of previously published aFather
902         #  \param aFather previously published object
903         #  \param aShape the shape to be published as sub-object of <VAR>aFather</VAR>
904         #  \param aName  the name for the shape
905         #
906         #  \return study entry of the published shape in form of string
907         #
908         #  @ingroup l1_publish_data
909         #  @ref swig_all_addtostudyInFather "Example"
910         def addToStudyInFather(self, aFather, aShape, aName):
911             """
912             Publish in study aShape with name aName as sub-object of previously published aFather
913
914             Parameters:
915                 aFather previously published object
916                 aShape the shape to be published as sub-object of aFather
917                 aName  the name for the shape
918
919             Returns:
920                 study entry of the published shape in form of string
921             """
922             # Example: see GEOM_TestAll.py
923             try:
924                 aSObject = self.AddInStudy(self.myStudy, aShape, aName, aFather)
925                 if aSObject and aName: aSObject.SetAttrString("AttributeName", aName)
926             except:
927                 print "addToStudyInFather() failed"
928                 return ""
929             return aShape.GetStudyEntry()
930
931         ## Unpublish object in study
932         #
933         #  \param obj the object to be unpublished
934         def hideInStudy(self, obj):
935             """
936             Unpublish object in study
937
938             Parameters:
939                 obj the object to be unpublished
940             """
941             ior = salome.orb.object_to_string(obj)
942             aSObject = self.myStudy.FindObjectIOR(ior)
943             if aSObject is not None:
944                 genericAttribute = self.myBuilder.FindOrCreateAttribute(aSObject, "AttributeDrawable")
945                 drwAttribute = genericAttribute._narrow(SALOMEDS.AttributeDrawable)
946                 drwAttribute.SetDrawable(False)
947                 # hide references if any
948                 vso = self.myStudy.FindDependances(aSObject);
949                 for refObj in vso :
950                     genericAttribute = self.myBuilder.FindOrCreateAttribute(refObj, "AttributeDrawable")
951                     drwAttribute = genericAttribute._narrow(SALOMEDS.AttributeDrawable)
952                     drwAttribute.SetDrawable(False)
953                     pass
954                 pass
955
956         # end of l1_geomBuilder_auxiliary
957         ## @}
958
959         ## @addtogroup l3_restore_ss
960         ## @{
961
962         ## Publish sub-shapes, standing for arguments and sub-shapes of arguments
963         #  To be used from python scripts out of addToStudy() (non-default usage)
964         #  \param theObject published GEOM.GEOM_Object, arguments of which will be published
965         #  \param theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
966         #                   If this list is empty, all operation arguments will be published
967         #  \param theFindMethod method to search sub-shapes, corresponding to arguments and
968         #                       their sub-shapes. Value from enumeration GEOM.find_shape_method.
969         #  \param theInheritFirstArg set properties of the first argument for <VAR>theObject</VAR>.
970         #                            Do not publish sub-shapes in place of arguments, but only
971         #                            in place of sub-shapes of the first argument,
972         #                            because the whole shape corresponds to the first argument.
973         #                            Mainly to be used after transformations, but it also can be
974         #                            usefull after partition with one object shape, and some other
975         #                            operations, where only the first argument has to be considered.
976         #                            If theObject has only one argument shape, this flag is automatically
977         #                            considered as True, not regarding really passed value.
978         #  \param theAddPrefix add prefix "from_" to names of restored sub-shapes,
979         #                      and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
980         #  \return list of published sub-shapes
981         #
982         #  @ref tui_restore_prs_params "Example"
983         def RestoreSubShapes (self, theObject, theArgs=[], theFindMethod=GEOM.FSM_GetInPlace,
984                               theInheritFirstArg=False, theAddPrefix=True):
985             """
986             Publish sub-shapes, standing for arguments and sub-shapes of arguments
987             To be used from python scripts out of geompy.addToStudy (non-default usage)
988
989             Parameters:
990                 theObject published GEOM.GEOM_Object, arguments of which will be published
991                 theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
992                           If this list is empty, all operation arguments will be published
993                 theFindMethod method to search sub-shapes, corresponding to arguments and
994                               their sub-shapes. Value from enumeration GEOM.find_shape_method.
995                 theInheritFirstArg set properties of the first argument for theObject.
996                                    Do not publish sub-shapes in place of arguments, but only
997                                    in place of sub-shapes of the first argument,
998                                    because the whole shape corresponds to the first argument.
999                                    Mainly to be used after transformations, but it also can be
1000                                    usefull after partition with one object shape, and some other
1001                                    operations, where only the first argument has to be considered.
1002                                    If theObject has only one argument shape, this flag is automatically
1003                                    considered as True, not regarding really passed value.
1004                 theAddPrefix add prefix "from_" to names of restored sub-shapes,
1005                              and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1006             Returns:
1007                 list of published sub-shapes
1008             """
1009             # Example: see GEOM_TestAll.py
1010             return self.RestoreSubShapesO(self.myStudy, theObject, theArgs,
1011                                           theFindMethod, theInheritFirstArg, theAddPrefix)
1012
1013         ## Publish sub-shapes, standing for arguments and sub-shapes of arguments
1014         #  To be used from python scripts out of addToStudy() (non-default usage)
1015         #  \param theObject published GEOM.GEOM_Object, arguments of which will be published
1016         #  \param theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
1017         #                   If this list is empty, all operation arguments will be published
1018         #  \param theFindMethod method to search sub-shapes, corresponding to arguments and
1019         #                       their sub-shapes. Value from enumeration GEOM::find_shape_method.
1020         #  \param theInheritFirstArg set properties of the first argument for <VAR>theObject</VAR>.
1021         #                            Do not publish sub-shapes in place of arguments, but only
1022         #                            in place of sub-shapes of the first argument,
1023         #                            because the whole shape corresponds to the first argument.
1024         #                            Mainly to be used after transformations, but it also can be
1025         #                            usefull after partition with one object shape, and some other
1026         #                            operations, where only the first argument has to be considered.
1027         #                            If theObject has only one argument shape, this flag is automatically
1028         #                            considered as True, not regarding really passed value.
1029         #  \param theAddPrefix add prefix "from_" to names of restored sub-shapes,
1030         #                      and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1031         #  \return list of published sub-shapes
1032         #
1033         #  @ref tui_restore_prs_params "Example"
1034         def RestoreGivenSubShapes (self, theObject, theArgs=[], theFindMethod=GEOM.FSM_GetInPlace,
1035                                    theInheritFirstArg=False, theAddPrefix=True):
1036             """
1037             Publish sub-shapes, standing for arguments and sub-shapes of arguments
1038             To be used from python scripts out of geompy.addToStudy() (non-default usage)
1039
1040             Parameters:
1041                 theObject published GEOM.GEOM_Object, arguments of which will be published
1042                 theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
1043                           If this list is empty, all operation arguments will be published
1044                 theFindMethod method to search sub-shapes, corresponding to arguments and
1045                               their sub-shapes. Value from enumeration GEOM::find_shape_method.
1046                 theInheritFirstArg set properties of the first argument for theObject.
1047                                    Do not publish sub-shapes in place of arguments, but only
1048                                    in place of sub-shapes of the first argument,
1049                                    because the whole shape corresponds to the first argument.
1050                                    Mainly to be used after transformations, but it also can be
1051                                    usefull after partition with one object shape, and some other
1052                                    operations, where only the first argument has to be considered.
1053                                    If theObject has only one argument shape, this flag is automatically
1054                                    considered as True, not regarding really passed value.
1055                 theAddPrefix add prefix "from_" to names of restored sub-shapes,
1056                              and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1057
1058             Returns:
1059                 list of published sub-shapes
1060             """
1061             # Example: see GEOM_TestAll.py
1062             return self.RestoreGivenSubShapesO(self.myStudy, theObject, theArgs,
1063                                                theFindMethod, theInheritFirstArg, theAddPrefix)
1064
1065         # end of l3_restore_ss
1066         ## @}
1067
1068         ## @addtogroup l3_basic_go
1069         ## @{
1070
1071         ## Create point by three coordinates.
1072         #  @param theX The X coordinate of the point.
1073         #  @param theY The Y coordinate of the point.
1074         #  @param theZ The Z coordinate of the point.
1075         #  @param theName Object name; when specified, this parameter is used
1076         #         for result publication in the study. Otherwise, if automatic
1077         #         publication is switched on, default value is used for result name.
1078         #
1079         #  @return New GEOM.GEOM_Object, containing the created point.
1080         #
1081         #  @ref tui_creation_point "Example"
1082         @ManageTransactions("BasicOp")
1083         def MakeVertex(self, theX, theY, theZ, theName=None):
1084             """
1085             Create point by three coordinates.
1086
1087             Parameters:
1088                 theX The X coordinate of the point.
1089                 theY The Y coordinate of the point.
1090                 theZ The Z coordinate of the point.
1091                 theName Object name; when specified, this parameter is used
1092                         for result publication in the study. Otherwise, if automatic
1093                         publication is switched on, default value is used for result name.
1094
1095             Returns:
1096                 New GEOM.GEOM_Object, containing the created point.
1097             """
1098             # Example: see GEOM_TestAll.py
1099             theX,theY,theZ,Parameters = ParseParameters(theX, theY, theZ)
1100             anObj = self.BasicOp.MakePointXYZ(theX, theY, theZ)
1101             RaiseIfFailed("MakePointXYZ", self.BasicOp)
1102             anObj.SetParameters(Parameters)
1103             self._autoPublish(anObj, theName, "vertex")
1104             return anObj
1105
1106         ## Create a point, distant from the referenced point
1107         #  on the given distances along the coordinate axes.
1108         #  @param theReference The referenced point.
1109         #  @param theX Displacement from the referenced point along OX axis.
1110         #  @param theY Displacement from the referenced point along OY axis.
1111         #  @param theZ Displacement from the referenced point along OZ axis.
1112         #  @param theName Object name; when specified, this parameter is used
1113         #         for result publication in the study. Otherwise, if automatic
1114         #         publication is switched on, default value is used for result name.
1115         #
1116         #  @return New GEOM.GEOM_Object, containing the created point.
1117         #
1118         #  @ref tui_creation_point "Example"
1119         @ManageTransactions("BasicOp")
1120         def MakeVertexWithRef(self, theReference, theX, theY, theZ, theName=None):
1121             """
1122             Create a point, distant from the referenced point
1123             on the given distances along the coordinate axes.
1124
1125             Parameters:
1126                 theReference The referenced point.
1127                 theX Displacement from the referenced point along OX axis.
1128                 theY Displacement from the referenced point along OY axis.
1129                 theZ Displacement from the referenced point along OZ axis.
1130                 theName Object name; when specified, this parameter is used
1131                         for result publication in the study. Otherwise, if automatic
1132                         publication is switched on, default value is used for result name.
1133
1134             Returns:
1135                 New GEOM.GEOM_Object, containing the created point.
1136             """
1137             # Example: see GEOM_TestAll.py
1138             theX,theY,theZ,Parameters = ParseParameters(theX, theY, theZ)
1139             anObj = self.BasicOp.MakePointWithReference(theReference, theX, theY, theZ)
1140             RaiseIfFailed("MakePointWithReference", self.BasicOp)
1141             anObj.SetParameters(Parameters)
1142             self._autoPublish(anObj, theName, "vertex")
1143             return anObj
1144
1145         ## Create a point, corresponding to the given parameter on the given curve.
1146         #  @param theRefCurve The referenced curve.
1147         #  @param theParameter Value of parameter on the referenced curve.
1148         #  @param theName Object name; when specified, this parameter is used
1149         #         for result publication in the study. Otherwise, if automatic
1150         #         publication is switched on, default value is used for result name.
1151         #
1152         #  @return New GEOM.GEOM_Object, containing the created point.
1153         #
1154         #  @ref tui_creation_point "Example"
1155         @ManageTransactions("BasicOp")
1156         def MakeVertexOnCurve(self, theRefCurve, theParameter, theName=None):
1157             """
1158             Create a point, corresponding to the given parameter on the given curve.
1159
1160             Parameters:
1161                 theRefCurve The referenced curve.
1162                 theParameter Value of parameter on the referenced curve.
1163                 theName Object name; when specified, this parameter is used
1164                         for result publication in the study. Otherwise, if automatic
1165                         publication is switched on, default value is used for result name.
1166
1167             Returns:
1168                 New GEOM.GEOM_Object, containing the created point.
1169
1170             Example of usage:
1171                 p_on_arc = geompy.MakeVertexOnCurve(Arc, 0.25)
1172             """
1173             # Example: see GEOM_TestAll.py
1174             theParameter, Parameters = ParseParameters(theParameter)
1175             anObj = self.BasicOp.MakePointOnCurve(theRefCurve, theParameter)
1176             RaiseIfFailed("MakePointOnCurve", self.BasicOp)
1177             anObj.SetParameters(Parameters)
1178             self._autoPublish(anObj, theName, "vertex")
1179             return anObj
1180
1181         ## Create a point by projection give coordinates on the given curve
1182         #  @param theRefCurve The referenced curve.
1183         #  @param theX X-coordinate in 3D space
1184         #  @param theY Y-coordinate in 3D space
1185         #  @param theZ Z-coordinate in 3D space
1186         #  @param theName Object name; when specified, this parameter is used
1187         #         for result publication in the study. Otherwise, if automatic
1188         #         publication is switched on, default value is used for result name.
1189         #
1190         #  @return New GEOM.GEOM_Object, containing the created point.
1191         #
1192         #  @ref tui_creation_point "Example"
1193         @ManageTransactions("BasicOp")
1194         def MakeVertexOnCurveByCoord(self, theRefCurve, theX, theY, theZ, theName=None):
1195             """
1196             Create a point by projection give coordinates on the given curve
1197
1198             Parameters:
1199                 theRefCurve The referenced curve.
1200                 theX X-coordinate in 3D space
1201                 theY Y-coordinate in 3D space
1202                 theZ Z-coordinate in 3D space
1203                 theName Object name; when specified, this parameter is used
1204                         for result publication in the study. Otherwise, if automatic
1205                         publication is switched on, default value is used for result name.
1206
1207             Returns:
1208                 New GEOM.GEOM_Object, containing the created point.
1209
1210             Example of usage:
1211                 p_on_arc3 = geompy.MakeVertexOnCurveByCoord(Arc, 100, -10, 10)
1212             """
1213             # Example: see GEOM_TestAll.py
1214             theX, theY, theZ, Parameters = ParseParameters(theX, theY, theZ)
1215             anObj = self.BasicOp.MakePointOnCurveByCoord(theRefCurve, theX, theY, theZ)
1216             RaiseIfFailed("MakeVertexOnCurveByCoord", self.BasicOp)
1217             anObj.SetParameters(Parameters)
1218             self._autoPublish(anObj, theName, "vertex")
1219             return anObj
1220
1221         ## Create a point, corresponding to the given length on the given curve.
1222         #  @param theRefCurve The referenced curve.
1223         #  @param theLength Length on the referenced curve. It can be negative.
1224         #  @param theStartPoint Point allowing to choose the direction for the calculation
1225         #                       of the length. If None, start from the first point of theRefCurve.
1226         #  @param theName Object name; when specified, this parameter is used
1227         #         for result publication in the study. Otherwise, if automatic
1228         #         publication is switched on, default value is used for result name.
1229         #
1230         #  @return New GEOM.GEOM_Object, containing the created point.
1231         #
1232         #  @ref tui_creation_point "Example"
1233         @ManageTransactions("BasicOp")
1234         def MakeVertexOnCurveByLength(self, theRefCurve, theLength, theStartPoint = None, theName=None):
1235             """
1236             Create a point, corresponding to the given length on the given curve.
1237
1238             Parameters:
1239                 theRefCurve The referenced curve.
1240                 theLength Length on the referenced curve. It can be negative.
1241                 theStartPoint Point allowing to choose the direction for the calculation
1242                               of the length. If None, start from the first point of theRefCurve.
1243                 theName Object name; when specified, this parameter is used
1244                         for result publication in the study. Otherwise, if automatic
1245                         publication is switched on, default value is used for result name.
1246
1247             Returns:
1248                 New GEOM.GEOM_Object, containing the created point.
1249             """
1250             # Example: see GEOM_TestAll.py
1251             theLength, Parameters = ParseParameters(theLength)
1252             anObj = self.BasicOp.MakePointOnCurveByLength(theRefCurve, theLength, theStartPoint)
1253             RaiseIfFailed("MakePointOnCurveByLength", self.BasicOp)
1254             anObj.SetParameters(Parameters)
1255             self._autoPublish(anObj, theName, "vertex")
1256             return anObj
1257
1258         ## Create a point, corresponding to the given parameters on the
1259         #    given surface.
1260         #  @param theRefSurf The referenced surface.
1261         #  @param theUParameter Value of U-parameter on the referenced surface.
1262         #  @param theVParameter Value of V-parameter on the referenced surface.
1263         #  @param theName Object name; when specified, this parameter is used
1264         #         for result publication in the study. Otherwise, if automatic
1265         #         publication is switched on, default value is used for result name.
1266         #
1267         #  @return New GEOM.GEOM_Object, containing the created point.
1268         #
1269         #  @ref swig_MakeVertexOnSurface "Example"
1270         @ManageTransactions("BasicOp")
1271         def MakeVertexOnSurface(self, theRefSurf, theUParameter, theVParameter, theName=None):
1272             """
1273             Create a point, corresponding to the given parameters on the
1274             given surface.
1275
1276             Parameters:
1277                 theRefSurf The referenced surface.
1278                 theUParameter Value of U-parameter on the referenced surface.
1279                 theVParameter Value of V-parameter on the referenced surface.
1280                 theName Object name; when specified, this parameter is used
1281                         for result publication in the study. Otherwise, if automatic
1282                         publication is switched on, default value is used for result name.
1283
1284             Returns:
1285                 New GEOM.GEOM_Object, containing the created point.
1286
1287             Example of usage:
1288                 p_on_face = geompy.MakeVertexOnSurface(Face, 0.1, 0.8)
1289             """
1290             theUParameter, theVParameter, Parameters = ParseParameters(theUParameter, theVParameter)
1291             # Example: see GEOM_TestAll.py
1292             anObj = self.BasicOp.MakePointOnSurface(theRefSurf, theUParameter, theVParameter)
1293             RaiseIfFailed("MakePointOnSurface", self.BasicOp)
1294             anObj.SetParameters(Parameters);
1295             self._autoPublish(anObj, theName, "vertex")
1296             return anObj
1297
1298         ## Create a point by projection give coordinates on the given surface
1299         #  @param theRefSurf The referenced surface.
1300         #  @param theX X-coordinate in 3D space
1301         #  @param theY Y-coordinate in 3D space
1302         #  @param theZ Z-coordinate in 3D space
1303         #  @param theName Object name; when specified, this parameter is used
1304         #         for result publication in the study. Otherwise, if automatic
1305         #         publication is switched on, default value is used for result name.
1306         #
1307         #  @return New GEOM.GEOM_Object, containing the created point.
1308         #
1309         #  @ref swig_MakeVertexOnSurfaceByCoord "Example"
1310         @ManageTransactions("BasicOp")
1311         def MakeVertexOnSurfaceByCoord(self, theRefSurf, theX, theY, theZ, theName=None):
1312             """
1313             Create a point by projection give coordinates on the given surface
1314
1315             Parameters:
1316                 theRefSurf The referenced surface.
1317                 theX X-coordinate in 3D space
1318                 theY Y-coordinate in 3D space
1319                 theZ Z-coordinate in 3D space
1320                 theName Object name; when specified, this parameter is used
1321                         for result publication in the study. Otherwise, if automatic
1322                         publication is switched on, default value is used for result name.
1323
1324             Returns:
1325                 New GEOM.GEOM_Object, containing the created point.
1326
1327             Example of usage:
1328                 p_on_face2 = geompy.MakeVertexOnSurfaceByCoord(Face, 0., 0., 0.)
1329             """
1330             theX, theY, theZ, Parameters = ParseParameters(theX, theY, theZ)
1331             # Example: see GEOM_TestAll.py
1332             anObj = self.BasicOp.MakePointOnSurfaceByCoord(theRefSurf, theX, theY, theZ)
1333             RaiseIfFailed("MakeVertexOnSurfaceByCoord", self.BasicOp)
1334             anObj.SetParameters(Parameters);
1335             self._autoPublish(anObj, theName, "vertex")
1336             return anObj
1337
1338         ## Create a point, which lays on the given face.
1339         #  The point will lay in arbitrary place of the face.
1340         #  The only condition on it is a non-zero distance to the face boundary.
1341         #  Such point can be used to uniquely identify the face inside any
1342         #  shape in case, when the shape does not contain overlapped faces.
1343         #  @param theFace The referenced face.
1344         #  @param theName Object name; when specified, this parameter is used
1345         #         for result publication in the study. Otherwise, if automatic
1346         #         publication is switched on, default value is used for result name.
1347         #
1348         #  @return New GEOM.GEOM_Object, containing the created point.
1349         #
1350         #  @ref swig_MakeVertexInsideFace "Example"
1351         @ManageTransactions("BasicOp")
1352         def MakeVertexInsideFace (self, theFace, theName=None):
1353             """
1354             Create a point, which lays on the given face.
1355             The point will lay in arbitrary place of the face.
1356             The only condition on it is a non-zero distance to the face boundary.
1357             Such point can be used to uniquely identify the face inside any
1358             shape in case, when the shape does not contain overlapped faces.
1359
1360             Parameters:
1361                 theFace The referenced face.
1362                 theName Object name; when specified, this parameter is used
1363                         for result publication in the study. Otherwise, if automatic
1364                         publication is switched on, default value is used for result name.
1365
1366             Returns:
1367                 New GEOM.GEOM_Object, containing the created point.
1368
1369             Example of usage:
1370                 p_on_face = geompy.MakeVertexInsideFace(Face)
1371             """
1372             # Example: see GEOM_TestAll.py
1373             anObj = self.BasicOp.MakePointOnFace(theFace)
1374             RaiseIfFailed("MakeVertexInsideFace", self.BasicOp)
1375             self._autoPublish(anObj, theName, "vertex")
1376             return anObj
1377
1378         ## Create a point on intersection of two lines.
1379         #  @param theRefLine1, theRefLine2 The referenced lines.
1380         #  @param theName Object name; when specified, this parameter is used
1381         #         for result publication in the study. Otherwise, if automatic
1382         #         publication is switched on, default value is used for result name.
1383         #
1384         #  @return New GEOM.GEOM_Object, containing the created point.
1385         #
1386         #  @ref swig_MakeVertexOnLinesIntersection "Example"
1387         @ManageTransactions("BasicOp")
1388         def MakeVertexOnLinesIntersection(self, theRefLine1, theRefLine2, theName=None):
1389             """
1390             Create a point on intersection of two lines.
1391
1392             Parameters:
1393                 theRefLine1, theRefLine2 The referenced lines.
1394                 theName Object name; when specified, this parameter is used
1395                         for result publication in the study. Otherwise, if automatic
1396                         publication is switched on, default value is used for result name.
1397
1398             Returns:
1399                 New GEOM.GEOM_Object, containing the created point.
1400             """
1401             # Example: see GEOM_TestAll.py
1402             anObj = self.BasicOp.MakePointOnLinesIntersection(theRefLine1, theRefLine2)
1403             RaiseIfFailed("MakePointOnLinesIntersection", self.BasicOp)
1404             self._autoPublish(anObj, theName, "vertex")
1405             return anObj
1406
1407         ## Create a tangent, corresponding to the given parameter on the given curve.
1408         #  @param theRefCurve The referenced curve.
1409         #  @param theParameter Value of parameter on the referenced curve.
1410         #  @param theName Object name; when specified, this parameter is used
1411         #         for result publication in the study. Otherwise, if automatic
1412         #         publication is switched on, default value is used for result name.
1413         #
1414         #  @return New GEOM.GEOM_Object, containing the created tangent.
1415         #
1416         #  @ref swig_MakeTangentOnCurve "Example"
1417         @ManageTransactions("BasicOp")
1418         def MakeTangentOnCurve(self, theRefCurve, theParameter, theName=None):
1419             """
1420             Create a tangent, corresponding to the given parameter on the given curve.
1421
1422             Parameters:
1423                 theRefCurve The referenced curve.
1424                 theParameter Value of parameter on the referenced curve.
1425                 theName Object name; when specified, this parameter is used
1426                         for result publication in the study. Otherwise, if automatic
1427                         publication is switched on, default value is used for result name.
1428
1429             Returns:
1430                 New GEOM.GEOM_Object, containing the created tangent.
1431
1432             Example of usage:
1433                 tan_on_arc = geompy.MakeTangentOnCurve(Arc, 0.7)
1434             """
1435             anObj = self.BasicOp.MakeTangentOnCurve(theRefCurve, theParameter)
1436             RaiseIfFailed("MakeTangentOnCurve", self.BasicOp)
1437             self._autoPublish(anObj, theName, "tangent")
1438             return anObj
1439
1440         ## Create a tangent plane, corresponding to the given parameter on the given face.
1441         #  @param theFace The face for which tangent plane should be built.
1442         #  @param theParameterV vertical value of the center point (0.0 - 1.0).
1443         #  @param theParameterU horisontal value of the center point (0.0 - 1.0).
1444         #  @param theTrimSize the size of plane.
1445         #  @param theName Object name; when specified, this parameter is used
1446         #         for result publication in the study. Otherwise, if automatic
1447         #         publication is switched on, default value is used for result name.
1448         #
1449         #  @return New GEOM.GEOM_Object, containing the created tangent.
1450         #
1451         #  @ref swig_MakeTangentPlaneOnFace "Example"
1452         @ManageTransactions("BasicOp")
1453         def MakeTangentPlaneOnFace(self, theFace, theParameterU, theParameterV, theTrimSize, theName=None):
1454             """
1455             Create a tangent plane, corresponding to the given parameter on the given face.
1456
1457             Parameters:
1458                 theFace The face for which tangent plane should be built.
1459                 theParameterV vertical value of the center point (0.0 - 1.0).
1460                 theParameterU horisontal value of the center point (0.0 - 1.0).
1461                 theTrimSize the size of plane.
1462                 theName Object name; when specified, this parameter is used
1463                         for result publication in the study. Otherwise, if automatic
1464                         publication is switched on, default value is used for result name.
1465
1466            Returns:
1467                 New GEOM.GEOM_Object, containing the created tangent.
1468
1469            Example of usage:
1470                 an_on_face = geompy.MakeTangentPlaneOnFace(tan_extrusion, 0.7, 0.5, 150)
1471             """
1472             anObj = self.BasicOp.MakeTangentPlaneOnFace(theFace, theParameterU, theParameterV, theTrimSize)
1473             RaiseIfFailed("MakeTangentPlaneOnFace", self.BasicOp)
1474             self._autoPublish(anObj, theName, "tangent")
1475             return anObj
1476
1477         ## Create a vector with the given components.
1478         #  @param theDX X component of the vector.
1479         #  @param theDY Y component of the vector.
1480         #  @param theDZ Z component of the vector.
1481         #  @param theName Object name; when specified, this parameter is used
1482         #         for result publication in the study. Otherwise, if automatic
1483         #         publication is switched on, default value is used for result name.
1484         #
1485         #  @return New GEOM.GEOM_Object, containing the created vector.
1486         #
1487         #  @ref tui_creation_vector "Example"
1488         @ManageTransactions("BasicOp")
1489         def MakeVectorDXDYDZ(self, theDX, theDY, theDZ, theName=None):
1490             """
1491             Create a vector with the given components.
1492
1493             Parameters:
1494                 theDX X component of the vector.
1495                 theDY Y component of the vector.
1496                 theDZ Z component of the vector.
1497                 theName Object name; when specified, this parameter is used
1498                         for result publication in the study. Otherwise, if automatic
1499                         publication is switched on, default value is used for result name.
1500
1501             Returns:
1502                 New GEOM.GEOM_Object, containing the created vector.
1503             """
1504             # Example: see GEOM_TestAll.py
1505             theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
1506             anObj = self.BasicOp.MakeVectorDXDYDZ(theDX, theDY, theDZ)
1507             RaiseIfFailed("MakeVectorDXDYDZ", self.BasicOp)
1508             anObj.SetParameters(Parameters)
1509             self._autoPublish(anObj, theName, "vector")
1510             return anObj
1511
1512         ## Create a vector between two points.
1513         #  @param thePnt1 Start point for the vector.
1514         #  @param thePnt2 End point for the vector.
1515         #  @param theName Object name; when specified, this parameter is used
1516         #         for result publication in the study. Otherwise, if automatic
1517         #         publication is switched on, default value is used for result name.
1518         #
1519         #  @return New GEOM.GEOM_Object, containing the created vector.
1520         #
1521         #  @ref tui_creation_vector "Example"
1522         @ManageTransactions("BasicOp")
1523         def MakeVector(self, thePnt1, thePnt2, theName=None):
1524             """
1525             Create a vector between two points.
1526
1527             Parameters:
1528                 thePnt1 Start point for the vector.
1529                 thePnt2 End point for the vector.
1530                 theName Object name; when specified, this parameter is used
1531                         for result publication in the study. Otherwise, if automatic
1532                         publication is switched on, default value is used for result name.
1533
1534             Returns:
1535                 New GEOM.GEOM_Object, containing the created vector.
1536             """
1537             # Example: see GEOM_TestAll.py
1538             anObj = self.BasicOp.MakeVectorTwoPnt(thePnt1, thePnt2)
1539             RaiseIfFailed("MakeVectorTwoPnt", self.BasicOp)
1540             self._autoPublish(anObj, theName, "vector")
1541             return anObj
1542
1543         ## Create a line, passing through the given point
1544         #  and parrallel to the given direction
1545         #  @param thePnt Point. The resulting line will pass through it.
1546         #  @param theDir Direction. The resulting line will be parallel to it.
1547         #  @param theName Object name; when specified, this parameter is used
1548         #         for result publication in the study. Otherwise, if automatic
1549         #         publication is switched on, default value is used for result name.
1550         #
1551         #  @return New GEOM.GEOM_Object, containing the created line.
1552         #
1553         #  @ref tui_creation_line "Example"
1554         @ManageTransactions("BasicOp")
1555         def MakeLine(self, thePnt, theDir, theName=None):
1556             """
1557             Create a line, passing through the given point
1558             and parrallel to the given direction
1559
1560             Parameters:
1561                 thePnt Point. The resulting line will pass through it.
1562                 theDir Direction. The resulting line will be parallel to it.
1563                 theName Object name; when specified, this parameter is used
1564                         for result publication in the study. Otherwise, if automatic
1565                         publication is switched on, default value is used for result name.
1566
1567             Returns:
1568                 New GEOM.GEOM_Object, containing the created line.
1569             """
1570             # Example: see GEOM_TestAll.py
1571             anObj = self.BasicOp.MakeLine(thePnt, theDir)
1572             RaiseIfFailed("MakeLine", self.BasicOp)
1573             self._autoPublish(anObj, theName, "line")
1574             return anObj
1575
1576         ## Create a line, passing through the given points
1577         #  @param thePnt1 First of two points, defining the line.
1578         #  @param thePnt2 Second of two points, defining the line.
1579         #  @param theName Object name; when specified, this parameter is used
1580         #         for result publication in the study. Otherwise, if automatic
1581         #         publication is switched on, default value is used for result name.
1582         #
1583         #  @return New GEOM.GEOM_Object, containing the created line.
1584         #
1585         #  @ref tui_creation_line "Example"
1586         @ManageTransactions("BasicOp")
1587         def MakeLineTwoPnt(self, thePnt1, thePnt2, theName=None):
1588             """
1589             Create a line, passing through the given points
1590
1591             Parameters:
1592                 thePnt1 First of two points, defining the line.
1593                 thePnt2 Second of two points, defining the line.
1594                 theName Object name; when specified, this parameter is used
1595                         for result publication in the study. Otherwise, if automatic
1596                         publication is switched on, default value is used for result name.
1597
1598             Returns:
1599                 New GEOM.GEOM_Object, containing the created line.
1600             """
1601             # Example: see GEOM_TestAll.py
1602             anObj = self.BasicOp.MakeLineTwoPnt(thePnt1, thePnt2)
1603             RaiseIfFailed("MakeLineTwoPnt", self.BasicOp)
1604             self._autoPublish(anObj, theName, "line")
1605             return anObj
1606
1607         ## Create a line on two faces intersection.
1608         #  @param theFace1 First of two faces, defining the line.
1609         #  @param theFace2 Second of two faces, defining the line.
1610         #  @param theName Object name; when specified, this parameter is used
1611         #         for result publication in the study. Otherwise, if automatic
1612         #         publication is switched on, default value is used for result name.
1613         #
1614         #  @return New GEOM.GEOM_Object, containing the created line.
1615         #
1616         #  @ref swig_MakeLineTwoFaces "Example"
1617         @ManageTransactions("BasicOp")
1618         def MakeLineTwoFaces(self, theFace1, theFace2, theName=None):
1619             """
1620             Create a line on two faces intersection.
1621
1622             Parameters:
1623                 theFace1 First of two faces, defining the line.
1624                 theFace2 Second of two faces, defining the line.
1625                 theName Object name; when specified, this parameter is used
1626                         for result publication in the study. Otherwise, if automatic
1627                         publication is switched on, default value is used for result name.
1628
1629             Returns:
1630                 New GEOM.GEOM_Object, containing the created line.
1631             """
1632             # Example: see GEOM_TestAll.py
1633             anObj = self.BasicOp.MakeLineTwoFaces(theFace1, theFace2)
1634             RaiseIfFailed("MakeLineTwoFaces", self.BasicOp)
1635             self._autoPublish(anObj, theName, "line")
1636             return anObj
1637
1638         ## Create a plane, passing through the given point
1639         #  and normal to the given vector.
1640         #  @param thePnt Point, the plane has to pass through.
1641         #  @param theVec Vector, defining the plane normal direction.
1642         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1643         #  @param theName Object name; when specified, this parameter is used
1644         #         for result publication in the study. Otherwise, if automatic
1645         #         publication is switched on, default value is used for result name.
1646         #
1647         #  @return New GEOM.GEOM_Object, containing the created plane.
1648         #
1649         #  @ref tui_creation_plane "Example"
1650         @ManageTransactions("BasicOp")
1651         def MakePlane(self, thePnt, theVec, theTrimSize, theName=None):
1652             """
1653             Create a plane, passing through the given point
1654             and normal to the given vector.
1655
1656             Parameters:
1657                 thePnt Point, the plane has to pass through.
1658                 theVec Vector, defining the plane normal direction.
1659                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1660                 theName Object name; when specified, this parameter is used
1661                         for result publication in the study. Otherwise, if automatic
1662                         publication is switched on, default value is used for result name.
1663
1664             Returns:
1665                 New GEOM.GEOM_Object, containing the created plane.
1666             """
1667             # Example: see GEOM_TestAll.py
1668             theTrimSize, Parameters = ParseParameters(theTrimSize);
1669             anObj = self.BasicOp.MakePlanePntVec(thePnt, theVec, theTrimSize)
1670             RaiseIfFailed("MakePlanePntVec", self.BasicOp)
1671             anObj.SetParameters(Parameters)
1672             self._autoPublish(anObj, theName, "plane")
1673             return anObj
1674
1675         ## Create a plane, passing through the three given points
1676         #  @param thePnt1 First of three points, defining the plane.
1677         #  @param thePnt2 Second of three points, defining the plane.
1678         #  @param thePnt3 Fird of three points, defining the plane.
1679         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1680         #  @param theName Object name; when specified, this parameter is used
1681         #         for result publication in the study. Otherwise, if automatic
1682         #         publication is switched on, default value is used for result name.
1683         #
1684         #  @return New GEOM.GEOM_Object, containing the created plane.
1685         #
1686         #  @ref tui_creation_plane "Example"
1687         @ManageTransactions("BasicOp")
1688         def MakePlaneThreePnt(self, thePnt1, thePnt2, thePnt3, theTrimSize, theName=None):
1689             """
1690             Create a plane, passing through the three given points
1691
1692             Parameters:
1693                 thePnt1 First of three points, defining the plane.
1694                 thePnt2 Second of three points, defining the plane.
1695                 thePnt3 Fird of three points, defining the plane.
1696                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1697                 theName Object name; when specified, this parameter is used
1698                         for result publication in the study. Otherwise, if automatic
1699                         publication is switched on, default value is used for result name.
1700
1701             Returns:
1702                 New GEOM.GEOM_Object, containing the created plane.
1703             """
1704             # Example: see GEOM_TestAll.py
1705             theTrimSize, Parameters = ParseParameters(theTrimSize);
1706             anObj = self.BasicOp.MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize)
1707             RaiseIfFailed("MakePlaneThreePnt", self.BasicOp)
1708             anObj.SetParameters(Parameters)
1709             self._autoPublish(anObj, theName, "plane")
1710             return anObj
1711
1712         ## Create a plane, similar to the existing one, but with another size of representing face.
1713         #  @param theFace Referenced plane or LCS(Marker).
1714         #  @param theTrimSize New half size of a side of quadrangle face, representing the plane.
1715         #  @param theName Object name; when specified, this parameter is used
1716         #         for result publication in the study. Otherwise, if automatic
1717         #         publication is switched on, default value is used for result name.
1718         #
1719         #  @return New GEOM.GEOM_Object, containing the created plane.
1720         #
1721         #  @ref tui_creation_plane "Example"
1722         @ManageTransactions("BasicOp")
1723         def MakePlaneFace(self, theFace, theTrimSize, theName=None):
1724             """
1725             Create a plane, similar to the existing one, but with another size of representing face.
1726
1727             Parameters:
1728                 theFace Referenced plane or LCS(Marker).
1729                 theTrimSize New half size of a side of quadrangle face, representing the plane.
1730                 theName Object name; when specified, this parameter is used
1731                         for result publication in the study. Otherwise, if automatic
1732                         publication is switched on, default value is used for result name.
1733
1734             Returns:
1735                 New GEOM.GEOM_Object, containing the created plane.
1736             """
1737             # Example: see GEOM_TestAll.py
1738             theTrimSize, Parameters = ParseParameters(theTrimSize);
1739             anObj = self.BasicOp.MakePlaneFace(theFace, theTrimSize)
1740             RaiseIfFailed("MakePlaneFace", self.BasicOp)
1741             anObj.SetParameters(Parameters)
1742             self._autoPublish(anObj, theName, "plane")
1743             return anObj
1744
1745         ## Create a plane, passing through the 2 vectors
1746         #  with center in a start point of the first vector.
1747         #  @param theVec1 Vector, defining center point and plane direction.
1748         #  @param theVec2 Vector, defining the plane normal direction.
1749         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1750         #  @param theName Object name; when specified, this parameter is used
1751         #         for result publication in the study. Otherwise, if automatic
1752         #         publication is switched on, default value is used for result name.
1753         #
1754         #  @return New GEOM.GEOM_Object, containing the created plane.
1755         #
1756         #  @ref tui_creation_plane "Example"
1757         @ManageTransactions("BasicOp")
1758         def MakePlane2Vec(self, theVec1, theVec2, theTrimSize, theName=None):
1759             """
1760             Create a plane, passing through the 2 vectors
1761             with center in a start point of the first vector.
1762
1763             Parameters:
1764                 theVec1 Vector, defining center point and plane direction.
1765                 theVec2 Vector, defining the plane normal direction.
1766                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1767                 theName Object name; when specified, this parameter is used
1768                         for result publication in the study. Otherwise, if automatic
1769                         publication is switched on, default value is used for result name.
1770
1771             Returns:
1772                 New GEOM.GEOM_Object, containing the created plane.
1773             """
1774             # Example: see GEOM_TestAll.py
1775             theTrimSize, Parameters = ParseParameters(theTrimSize);
1776             anObj = self.BasicOp.MakePlane2Vec(theVec1, theVec2, theTrimSize)
1777             RaiseIfFailed("MakePlane2Vec", self.BasicOp)
1778             anObj.SetParameters(Parameters)
1779             self._autoPublish(anObj, theName, "plane")
1780             return anObj
1781
1782         ## Create a plane, based on a Local coordinate system.
1783         #  @param theLCS  coordinate system, defining plane.
1784         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1785         #  @param theOrientation OXY, OYZ or OZX orientation - (1, 2 or 3)
1786         #  @param theName Object name; when specified, this parameter is used
1787         #         for result publication in the study. Otherwise, if automatic
1788         #         publication is switched on, default value is used for result name.
1789         #
1790         #  @return New GEOM.GEOM_Object, containing the created plane.
1791         #
1792         #  @ref tui_creation_plane "Example"
1793         @ManageTransactions("BasicOp")
1794         def MakePlaneLCS(self, theLCS, theTrimSize, theOrientation, theName=None):
1795             """
1796             Create a plane, based on a Local coordinate system.
1797
1798            Parameters:
1799                 theLCS  coordinate system, defining plane.
1800                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1801                 theOrientation OXY, OYZ or OZX orientation - (1, 2 or 3)
1802                 theName Object name; when specified, this parameter is used
1803                         for result publication in the study. Otherwise, if automatic
1804                         publication is switched on, default value is used for result name.
1805
1806             Returns:
1807                 New GEOM.GEOM_Object, containing the created plane.
1808             """
1809             # Example: see GEOM_TestAll.py
1810             theTrimSize, Parameters = ParseParameters(theTrimSize);
1811             anObj = self.BasicOp.MakePlaneLCS(theLCS, theTrimSize, theOrientation)
1812             RaiseIfFailed("MakePlaneLCS", self.BasicOp)
1813             anObj.SetParameters(Parameters)
1814             self._autoPublish(anObj, theName, "plane")
1815             return anObj
1816
1817         ## Create a local coordinate system.
1818         #  @param OX,OY,OZ Three coordinates of coordinate system origin.
1819         #  @param XDX,XDY,XDZ Three components of OX direction
1820         #  @param YDX,YDY,YDZ Three components of OY direction
1821         #  @param theName Object name; when specified, this parameter is used
1822         #         for result publication in the study. Otherwise, if automatic
1823         #         publication is switched on, default value is used for result name.
1824         #
1825         #  @return New GEOM.GEOM_Object, containing the created coordinate system.
1826         #
1827         #  @ref swig_MakeMarker "Example"
1828         @ManageTransactions("BasicOp")
1829         def MakeMarker(self, OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ, theName=None):
1830             """
1831             Create a local coordinate system.
1832
1833             Parameters:
1834                 OX,OY,OZ Three coordinates of coordinate system origin.
1835                 XDX,XDY,XDZ Three components of OX direction
1836                 YDX,YDY,YDZ Three components of OY direction
1837                 theName Object name; when specified, this parameter is used
1838                         for result publication in the study. Otherwise, if automatic
1839                         publication is switched on, default value is used for result name.
1840
1841             Returns:
1842                 New GEOM.GEOM_Object, containing the created coordinate system.
1843             """
1844             # Example: see GEOM_TestAll.py
1845             OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ, Parameters = ParseParameters(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ);
1846             anObj = self.BasicOp.MakeMarker(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ)
1847             RaiseIfFailed("MakeMarker", self.BasicOp)
1848             anObj.SetParameters(Parameters)
1849             self._autoPublish(anObj, theName, "lcs")
1850             return anObj
1851
1852         ## Create a local coordinate system from shape.
1853         #  @param theShape The initial shape to detect the coordinate system.
1854         #  @param theName Object name; when specified, this parameter is used
1855         #         for result publication in the study. Otherwise, if automatic
1856         #         publication is switched on, default value is used for result name.
1857         #
1858         #  @return New GEOM.GEOM_Object, containing the created coordinate system.
1859         #
1860         #  @ref tui_creation_lcs "Example"
1861         @ManageTransactions("BasicOp")
1862         def MakeMarkerFromShape(self, theShape, theName=None):
1863             """
1864             Create a local coordinate system from shape.
1865
1866             Parameters:
1867                 theShape The initial shape to detect the coordinate system.
1868                 theName Object name; when specified, this parameter is used
1869                         for result publication in the study. Otherwise, if automatic
1870                         publication is switched on, default value is used for result name.
1871
1872             Returns:
1873                 New GEOM.GEOM_Object, containing the created coordinate system.
1874             """
1875             anObj = self.BasicOp.MakeMarkerFromShape(theShape)
1876             RaiseIfFailed("MakeMarkerFromShape", self.BasicOp)
1877             self._autoPublish(anObj, theName, "lcs")
1878             return anObj
1879
1880         ## Create a local coordinate system from point and two vectors.
1881         #  @param theOrigin Point of coordinate system origin.
1882         #  @param theXVec Vector of X direction
1883         #  @param theYVec Vector of Y direction
1884         #  @param theName Object name; when specified, this parameter is used
1885         #         for result publication in the study. Otherwise, if automatic
1886         #         publication is switched on, default value is used for result name.
1887         #
1888         #  @return New GEOM.GEOM_Object, containing the created coordinate system.
1889         #
1890         #  @ref tui_creation_lcs "Example"
1891         @ManageTransactions("BasicOp")
1892         def MakeMarkerPntTwoVec(self, theOrigin, theXVec, theYVec, theName=None):
1893             """
1894             Create a local coordinate system from point and two vectors.
1895
1896             Parameters:
1897                 theOrigin Point of coordinate system origin.
1898                 theXVec Vector of X direction
1899                 theYVec Vector of Y direction
1900                 theName Object name; when specified, this parameter is used
1901                         for result publication in the study. Otherwise, if automatic
1902                         publication is switched on, default value is used for result name.
1903
1904             Returns:
1905                 New GEOM.GEOM_Object, containing the created coordinate system.
1906
1907             """
1908             anObj = self.BasicOp.MakeMarkerPntTwoVec(theOrigin, theXVec, theYVec)
1909             RaiseIfFailed("MakeMarkerPntTwoVec", self.BasicOp)
1910             self._autoPublish(anObj, theName, "lcs")
1911             return anObj
1912
1913         # end of l3_basic_go
1914         ## @}
1915
1916         ## @addtogroup l4_curves
1917         ## @{
1918
1919         ##  Create an arc of circle, passing through three given points.
1920         #  @param thePnt1 Start point of the arc.
1921         #  @param thePnt2 Middle point of the arc.
1922         #  @param thePnt3 End point of the arc.
1923         #  @param theName Object name; when specified, this parameter is used
1924         #         for result publication in the study. Otherwise, if automatic
1925         #         publication is switched on, default value is used for result name.
1926         #
1927         #  @return New GEOM.GEOM_Object, containing the created arc.
1928         #
1929         #  @ref swig_MakeArc "Example"
1930         @ManageTransactions("CurvesOp")
1931         def MakeArc(self, thePnt1, thePnt2, thePnt3, theName=None):
1932             """
1933             Create an arc of circle, passing through three given points.
1934
1935             Parameters:
1936                 thePnt1 Start point of the arc.
1937                 thePnt2 Middle point of the arc.
1938                 thePnt3 End point of the arc.
1939                 theName Object name; when specified, this parameter is used
1940                         for result publication in the study. Otherwise, if automatic
1941                         publication is switched on, default value is used for result name.
1942
1943             Returns:
1944                 New GEOM.GEOM_Object, containing the created arc.
1945             """
1946             # Example: see GEOM_TestAll.py
1947             anObj = self.CurvesOp.MakeArc(thePnt1, thePnt2, thePnt3)
1948             RaiseIfFailed("MakeArc", self.CurvesOp)
1949             self._autoPublish(anObj, theName, "arc")
1950             return anObj
1951
1952         ##  Create an arc of circle from a center and 2 points.
1953         #  @param thePnt1 Center of the arc
1954         #  @param thePnt2 Start point of the arc. (Gives also the radius of the arc)
1955         #  @param thePnt3 End point of the arc (Gives also a direction)
1956         #  @param theSense Orientation of the arc
1957         #  @param theName Object name; when specified, this parameter is used
1958         #         for result publication in the study. Otherwise, if automatic
1959         #         publication is switched on, default value is used for result name.
1960         #
1961         #  @return New GEOM.GEOM_Object, containing the created arc.
1962         #
1963         #  @ref swig_MakeArc "Example"
1964         @ManageTransactions("CurvesOp")
1965         def MakeArcCenter(self, thePnt1, thePnt2, thePnt3, theSense=False, theName=None):
1966             """
1967             Create an arc of circle from a center and 2 points.
1968
1969             Parameters:
1970                 thePnt1 Center of the arc
1971                 thePnt2 Start point of the arc. (Gives also the radius of the arc)
1972                 thePnt3 End point of the arc (Gives also a direction)
1973                 theSense Orientation of the arc
1974                 theName Object name; when specified, this parameter is used
1975                         for result publication in the study. Otherwise, if automatic
1976                         publication is switched on, default value is used for result name.
1977
1978             Returns:
1979                 New GEOM.GEOM_Object, containing the created arc.
1980             """
1981             # Example: see GEOM_TestAll.py
1982             anObj = self.CurvesOp.MakeArcCenter(thePnt1, thePnt2, thePnt3, theSense)
1983             RaiseIfFailed("MakeArcCenter", self.CurvesOp)
1984             self._autoPublish(anObj, theName, "arc")
1985             return anObj
1986
1987         ##  Create an arc of ellipse, of center and two points.
1988         #  @param theCenter Center of the arc.
1989         #  @param thePnt1 defines major radius of the arc by distance from Pnt1 to Pnt2.
1990         #  @param thePnt2 defines plane of ellipse and minor radius as distance from Pnt3 to line from Pnt1 to Pnt2.
1991         #  @param theName Object name; when specified, this parameter is used
1992         #         for result publication in the study. Otherwise, if automatic
1993         #         publication is switched on, default value is used for result name.
1994         #
1995         #  @return New GEOM.GEOM_Object, containing the created arc.
1996         #
1997         #  @ref swig_MakeArc "Example"
1998         @ManageTransactions("CurvesOp")
1999         def MakeArcOfEllipse(self, theCenter, thePnt1, thePnt2, theName=None):
2000             """
2001             Create an arc of ellipse, of center and two points.
2002
2003             Parameters:
2004                 theCenter Center of the arc.
2005                 thePnt1 defines major radius of the arc by distance from Pnt1 to Pnt2.
2006                 thePnt2 defines plane of ellipse and minor radius as distance from Pnt3 to line from Pnt1 to Pnt2.
2007                 theName Object name; when specified, this parameter is used
2008                         for result publication in the study. Otherwise, if automatic
2009                         publication is switched on, default value is used for result name.
2010
2011             Returns:
2012                 New GEOM.GEOM_Object, containing the created arc.
2013             """
2014             # Example: see GEOM_TestAll.py
2015             anObj = self.CurvesOp.MakeArcOfEllipse(theCenter, thePnt1, thePnt2)
2016             RaiseIfFailed("MakeArcOfEllipse", self.CurvesOp)
2017             self._autoPublish(anObj, theName, "arc")
2018             return anObj
2019
2020         ## Create a circle with given center, normal vector and radius.
2021         #  @param thePnt Circle center.
2022         #  @param theVec Vector, normal to the plane of the circle.
2023         #  @param theR Circle radius.
2024         #  @param theName Object name; when specified, this parameter is used
2025         #         for result publication in the study. Otherwise, if automatic
2026         #         publication is switched on, default value is used for result name.
2027         #
2028         #  @return New GEOM.GEOM_Object, containing the created circle.
2029         #
2030         #  @ref tui_creation_circle "Example"
2031         @ManageTransactions("CurvesOp")
2032         def MakeCircle(self, thePnt, theVec, theR, theName=None):
2033             """
2034             Create a circle with given center, normal vector and radius.
2035
2036             Parameters:
2037                 thePnt Circle center.
2038                 theVec Vector, normal to the plane of the circle.
2039                 theR Circle radius.
2040                 theName Object name; when specified, this parameter is used
2041                         for result publication in the study. Otherwise, if automatic
2042                         publication is switched on, default value is used for result name.
2043
2044             Returns:
2045                 New GEOM.GEOM_Object, containing the created circle.
2046             """
2047             # Example: see GEOM_TestAll.py
2048             theR, Parameters = ParseParameters(theR)
2049             anObj = self.CurvesOp.MakeCirclePntVecR(thePnt, theVec, theR)
2050             RaiseIfFailed("MakeCirclePntVecR", self.CurvesOp)
2051             anObj.SetParameters(Parameters)
2052             self._autoPublish(anObj, theName, "circle")
2053             return anObj
2054
2055         ## Create a circle with given radius.
2056         #  Center of the circle will be in the origin of global
2057         #  coordinate system and normal vector will be codirected with Z axis
2058         #  @param theR Circle radius.
2059         #  @param theName Object name; when specified, this parameter is used
2060         #         for result publication in the study. Otherwise, if automatic
2061         #         publication is switched on, default value is used for result name.
2062         #
2063         #  @return New GEOM.GEOM_Object, containing the created circle.
2064         @ManageTransactions("CurvesOp")
2065         def MakeCircleR(self, theR, theName=None):
2066             """
2067             Create a circle with given radius.
2068             Center of the circle will be in the origin of global
2069             coordinate system and normal vector will be codirected with Z axis
2070
2071             Parameters:
2072                 theR Circle radius.
2073                 theName Object name; when specified, this parameter is used
2074                         for result publication in the study. Otherwise, if automatic
2075                         publication is switched on, default value is used for result name.
2076
2077             Returns:
2078                 New GEOM.GEOM_Object, containing the created circle.
2079             """
2080             anObj = self.CurvesOp.MakeCirclePntVecR(None, None, theR)
2081             RaiseIfFailed("MakeCirclePntVecR", self.CurvesOp)
2082             self._autoPublish(anObj, theName, "circle")
2083             return anObj
2084
2085         ## Create a circle, passing through three given points
2086         #  @param thePnt1,thePnt2,thePnt3 Points, defining the circle.
2087         #  @param theName Object name; when specified, this parameter is used
2088         #         for result publication in the study. Otherwise, if automatic
2089         #         publication is switched on, default value is used for result name.
2090         #
2091         #  @return New GEOM.GEOM_Object, containing the created circle.
2092         #
2093         #  @ref tui_creation_circle "Example"
2094         @ManageTransactions("CurvesOp")
2095         def MakeCircleThreePnt(self, thePnt1, thePnt2, thePnt3, theName=None):
2096             """
2097             Create a circle, passing through three given points
2098
2099             Parameters:
2100                 thePnt1,thePnt2,thePnt3 Points, defining the circle.
2101                 theName Object name; when specified, this parameter is used
2102                         for result publication in the study. Otherwise, if automatic
2103                         publication is switched on, default value is used for result name.
2104
2105             Returns:
2106                 New GEOM.GEOM_Object, containing the created circle.
2107             """
2108             # Example: see GEOM_TestAll.py
2109             anObj = self.CurvesOp.MakeCircleThreePnt(thePnt1, thePnt2, thePnt3)
2110             RaiseIfFailed("MakeCircleThreePnt", self.CurvesOp)
2111             self._autoPublish(anObj, theName, "circle")
2112             return anObj
2113
2114         ## Create a circle, with given point1 as center,
2115         #  passing through the point2 as radius and laying in the plane,
2116         #  defined by all three given points.
2117         #  @param thePnt1,thePnt2,thePnt3 Points, defining the circle.
2118         #  @param theName Object name; when specified, this parameter is used
2119         #         for result publication in the study. Otherwise, if automatic
2120         #         publication is switched on, default value is used for result name.
2121         #
2122         #  @return New GEOM.GEOM_Object, containing the created circle.
2123         #
2124         #  @ref swig_MakeCircle "Example"
2125         @ManageTransactions("CurvesOp")
2126         def MakeCircleCenter2Pnt(self, thePnt1, thePnt2, thePnt3, theName=None):
2127             """
2128             Create a circle, with given point1 as center,
2129             passing through the point2 as radius and laying in the plane,
2130             defined by all three given points.
2131
2132             Parameters:
2133                 thePnt1,thePnt2,thePnt3 Points, defining the circle.
2134                 theName Object name; when specified, this parameter is used
2135                         for result publication in the study. Otherwise, if automatic
2136                         publication is switched on, default value is used for result name.
2137
2138             Returns:
2139                 New GEOM.GEOM_Object, containing the created circle.
2140             """
2141             # Example: see GEOM_example6.py
2142             anObj = self.CurvesOp.MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3)
2143             RaiseIfFailed("MakeCircleCenter2Pnt", self.CurvesOp)
2144             self._autoPublish(anObj, theName, "circle")
2145             return anObj
2146
2147         ## Create an ellipse with given center, normal vector and radiuses.
2148         #  @param thePnt Ellipse center.
2149         #  @param theVec Vector, normal to the plane of the ellipse.
2150         #  @param theRMajor Major ellipse radius.
2151         #  @param theRMinor Minor ellipse radius.
2152         #  @param theVecMaj Vector, direction of the ellipse's main axis.
2153         #  @param theName Object name; when specified, this parameter is used
2154         #         for result publication in the study. Otherwise, if automatic
2155         #         publication is switched on, default value is used for result name.
2156         #
2157         #  @return New GEOM.GEOM_Object, containing the created ellipse.
2158         #
2159         #  @ref tui_creation_ellipse "Example"
2160         @ManageTransactions("CurvesOp")
2161         def MakeEllipse(self, thePnt, theVec, theRMajor, theRMinor, theVecMaj=None, theName=None):
2162             """
2163             Create an ellipse with given center, normal vector and radiuses.
2164
2165             Parameters:
2166                 thePnt Ellipse center.
2167                 theVec Vector, normal to the plane of the ellipse.
2168                 theRMajor Major ellipse radius.
2169                 theRMinor Minor ellipse radius.
2170                 theVecMaj Vector, direction of the ellipse's main axis.
2171                 theName Object name; when specified, this parameter is used
2172                         for result publication in the study. Otherwise, if automatic
2173                         publication is switched on, default value is used for result name.
2174
2175             Returns:
2176                 New GEOM.GEOM_Object, containing the created ellipse.
2177             """
2178             # Example: see GEOM_TestAll.py
2179             theRMajor, theRMinor, Parameters = ParseParameters(theRMajor, theRMinor)
2180             if theVecMaj is not None:
2181                 anObj = self.CurvesOp.MakeEllipseVec(thePnt, theVec, theRMajor, theRMinor, theVecMaj)
2182             else:
2183                 anObj = self.CurvesOp.MakeEllipse(thePnt, theVec, theRMajor, theRMinor)
2184                 pass
2185             RaiseIfFailed("MakeEllipse", self.CurvesOp)
2186             anObj.SetParameters(Parameters)
2187             self._autoPublish(anObj, theName, "ellipse")
2188             return anObj
2189
2190         ## Create an ellipse with given radiuses.
2191         #  Center of the ellipse will be in the origin of global
2192         #  coordinate system and normal vector will be codirected with Z axis
2193         #  @param theRMajor Major ellipse radius.
2194         #  @param theRMinor Minor ellipse radius.
2195         #  @param theName Object name; when specified, this parameter is used
2196         #         for result publication in the study. Otherwise, if automatic
2197         #         publication is switched on, default value is used for result name.
2198         #
2199         #  @return New GEOM.GEOM_Object, containing the created ellipse.
2200         @ManageTransactions("CurvesOp")
2201         def MakeEllipseRR(self, theRMajor, theRMinor, theName=None):
2202             """
2203             Create an ellipse with given radiuses.
2204             Center of the ellipse will be in the origin of global
2205             coordinate system and normal vector will be codirected with Z axis
2206
2207             Parameters:
2208                 theRMajor Major ellipse radius.
2209                 theRMinor Minor ellipse radius.
2210                 theName Object name; when specified, this parameter is used
2211                         for result publication in the study. Otherwise, if automatic
2212                         publication is switched on, default value is used for result name.
2213
2214             Returns:
2215             New GEOM.GEOM_Object, containing the created ellipse.
2216             """
2217             anObj = self.CurvesOp.MakeEllipse(None, None, theRMajor, theRMinor)
2218             RaiseIfFailed("MakeEllipse", self.CurvesOp)
2219             self._autoPublish(anObj, theName, "ellipse")
2220             return anObj
2221
2222         ## Create a polyline on the set of points.
2223         #  @param thePoints Sequence of points for the polyline.
2224         #  @param theIsClosed If True, build a closed wire.
2225         #  @param theName Object name; when specified, this parameter is used
2226         #         for result publication in the study. Otherwise, if automatic
2227         #         publication is switched on, default value is used for result name.
2228         #
2229         #  @return New GEOM.GEOM_Object, containing the created polyline.
2230         #
2231         #  @ref tui_creation_curve "Example"
2232         @ManageTransactions("CurvesOp")
2233         def MakePolyline(self, thePoints, theIsClosed=False, theName=None):
2234             """
2235             Create a polyline on the set of points.
2236
2237             Parameters:
2238                 thePoints Sequence of points for the polyline.
2239                 theIsClosed If True, build a closed wire.
2240                 theName Object name; when specified, this parameter is used
2241                         for result publication in the study. Otherwise, if automatic
2242                         publication is switched on, default value is used for result name.
2243
2244             Returns:
2245                 New GEOM.GEOM_Object, containing the created polyline.
2246             """
2247             # Example: see GEOM_TestAll.py
2248             anObj = self.CurvesOp.MakePolyline(thePoints, theIsClosed)
2249             RaiseIfFailed("MakePolyline", self.CurvesOp)
2250             self._autoPublish(anObj, theName, "polyline")
2251             return anObj
2252
2253         ## Create bezier curve on the set of points.
2254         #  @param thePoints Sequence of points for the bezier curve.
2255         #  @param theIsClosed If True, build a closed curve.
2256         #  @param theName Object name; when specified, this parameter is used
2257         #         for result publication in the study. Otherwise, if automatic
2258         #         publication is switched on, default value is used for result name.
2259         #
2260         #  @return New GEOM.GEOM_Object, containing the created bezier curve.
2261         #
2262         #  @ref tui_creation_curve "Example"
2263         @ManageTransactions("CurvesOp")
2264         def MakeBezier(self, thePoints, theIsClosed=False, theName=None):
2265             """
2266             Create bezier curve on the set of points.
2267
2268             Parameters:
2269                 thePoints Sequence of points for the bezier curve.
2270                 theIsClosed If True, build a closed curve.
2271                 theName Object name; when specified, this parameter is used
2272                         for result publication in the study. Otherwise, if automatic
2273                         publication is switched on, default value is used for result name.
2274
2275             Returns:
2276                 New GEOM.GEOM_Object, containing the created bezier curve.
2277             """
2278             # Example: see GEOM_TestAll.py
2279             anObj = self.CurvesOp.MakeSplineBezier(thePoints, theIsClosed)
2280             RaiseIfFailed("MakeSplineBezier", self.CurvesOp)
2281             self._autoPublish(anObj, theName, "bezier")
2282             return anObj
2283
2284         ## Create B-Spline curve on the set of points.
2285         #  @param thePoints Sequence of points for the B-Spline curve.
2286         #  @param theIsClosed If True, build a closed curve.
2287         #  @param theDoReordering If TRUE, the algo does not follow the order of
2288         #                         \a thePoints but searches for the closest vertex.
2289         #  @param theName Object name; when specified, this parameter is used
2290         #         for result publication in the study. Otherwise, if automatic
2291         #         publication is switched on, default value is used for result name.
2292         #
2293         #  @return New GEOM.GEOM_Object, containing the created B-Spline curve.
2294         #
2295         #  @ref tui_creation_curve "Example"
2296         @ManageTransactions("CurvesOp")
2297         def MakeInterpol(self, thePoints, theIsClosed=False, theDoReordering=False, theName=None):
2298             """
2299             Create B-Spline curve on the set of points.
2300
2301             Parameters:
2302                 thePoints Sequence of points for the B-Spline curve.
2303                 theIsClosed If True, build a closed curve.
2304                 theDoReordering If True, the algo does not follow the order of
2305                                 thePoints but searches for the closest vertex.
2306                 theName Object name; when specified, this parameter is used
2307                         for result publication in the study. Otherwise, if automatic
2308                         publication is switched on, default value is used for result name.
2309
2310             Returns:
2311                 New GEOM.GEOM_Object, containing the created B-Spline curve.
2312             """
2313             # Example: see GEOM_TestAll.py
2314             anObj = self.CurvesOp.MakeSplineInterpolation(thePoints, theIsClosed, theDoReordering)
2315             RaiseIfFailed("MakeInterpol", self.CurvesOp)
2316             self._autoPublish(anObj, theName, "bspline")
2317             return anObj
2318
2319         ## Create B-Spline curve on the set of points.
2320         #  @param thePoints Sequence of points for the B-Spline curve.
2321         #  @param theFirstVec Vector object, defining the curve direction at its first point.
2322         #  @param theLastVec Vector object, defining the curve direction at its last point.
2323         #  @param theName Object name; when specified, this parameter is used
2324         #         for result publication in the study. Otherwise, if automatic
2325         #         publication is switched on, default value is used for result name.
2326         #
2327         #  @return New GEOM.GEOM_Object, containing the created B-Spline curve.
2328         #
2329         #  @ref tui_creation_curve "Example"
2330         @ManageTransactions("CurvesOp")
2331         def MakeInterpolWithTangents(self, thePoints, theFirstVec, theLastVec, theName=None):
2332             """
2333             Create B-Spline curve on the set of points.
2334
2335             Parameters:
2336                 thePoints Sequence of points for the B-Spline curve.
2337                 theFirstVec Vector object, defining the curve direction at its first point.
2338                 theLastVec Vector object, defining the curve direction at its last point.
2339                 theName Object name; when specified, this parameter is used
2340                         for result publication in the study. Otherwise, if automatic
2341                         publication is switched on, default value is used for result name.
2342
2343             Returns:
2344                 New GEOM.GEOM_Object, containing the created B-Spline curve.
2345             """
2346             # Example: see GEOM_TestAll.py
2347             anObj = self.CurvesOp.MakeSplineInterpolWithTangents(thePoints, theFirstVec, theLastVec)
2348             RaiseIfFailed("MakeInterpolWithTangents", self.CurvesOp)
2349             self._autoPublish(anObj, theName, "bspline")
2350             return anObj
2351
2352         ## Creates a curve using the parametric definition of the basic points.
2353         #  @param thexExpr parametric equation of the coordinates X.
2354         #  @param theyExpr parametric equation of the coordinates Y.
2355         #  @param thezExpr parametric equation of the coordinates Z.
2356         #  @param theParamMin the minimal value of the parameter.
2357         #  @param theParamMax the maximum value of the parameter.
2358         #  @param theParamStep the number of steps if theNewMethod = True, else step value of the parameter.
2359         #  @param theCurveType the type of the curve,
2360         #         one of GEOM.Polyline, GEOM.Bezier, GEOM.Interpolation.
2361         #  @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.
2362         #  @param theName Object name; when specified, this parameter is used
2363         #         for result publication in the study. Otherwise, if automatic
2364         #         publication is switched on, default value is used for result name.
2365         #
2366         #  @return New GEOM.GEOM_Object, containing the created curve.
2367         #
2368         #  @ref tui_creation_curve "Example"
2369         @ManageTransactions("CurvesOp")
2370         def MakeCurveParametric(self, thexExpr, theyExpr, thezExpr,
2371                                 theParamMin, theParamMax, theParamStep, theCurveType, theNewMethod=False, theName=None ):
2372             """
2373             Creates a curve using the parametric definition of the basic points.
2374
2375             Parameters:
2376                 thexExpr parametric equation of the coordinates X.
2377                 theyExpr parametric equation of the coordinates Y.
2378                 thezExpr parametric equation of the coordinates Z.
2379                 theParamMin the minimal value of the parameter.
2380                 theParamMax the maximum value of the parameter.
2381                 theParamStep the number of steps if theNewMethod = True, else step value of the parameter.
2382                 theCurveType the type of the curve,
2383                              one of GEOM.Polyline, GEOM.Bezier, GEOM.Interpolation.
2384                 theNewMethod flag for switching to the new method if the flag is set to false a deprecated
2385                              method is used which can lead to a bug.
2386                 theName Object name; when specified, this parameter is used
2387                         for result publication in the study. Otherwise, if automatic
2388                         publication is switched on, default value is used for result name.
2389
2390             Returns:
2391                 New GEOM.GEOM_Object, containing the created curve.
2392             """
2393             theParamMin,theParamMax,theParamStep,Parameters = ParseParameters(theParamMin,theParamMax,theParamStep)
2394             if theNewMethod:
2395               anObj = self.CurvesOp.MakeCurveParametricNew(thexExpr,theyExpr,thezExpr,theParamMin,theParamMax,theParamStep,theCurveType)
2396             else:
2397               anObj = self.CurvesOp.MakeCurveParametric(thexExpr,theyExpr,thezExpr,theParamMin,theParamMax,theParamStep,theCurveType)
2398             RaiseIfFailed("MakeSplineInterpolation", self.CurvesOp)
2399             anObj.SetParameters(Parameters)
2400             self._autoPublish(anObj, theName, "curve")
2401             return anObj
2402
2403         ## Create an isoline curve on a face.
2404         #  @param theFace the face for which an isoline is created.
2405         #  @param IsUIsoline True for U-isoline creation; False for V-isoline
2406         #         creation.
2407         #  @param theParameter the U parameter for U-isoline or V parameter
2408         #         for V-isoline.
2409         #  @param theName Object name; when specified, this parameter is used
2410         #         for result publication in the study. Otherwise, if automatic
2411         #         publication is switched on, default value is used for result name.
2412         #
2413         #  @return New GEOM.GEOM_Object, containing the created isoline edge or
2414         #          a compound of edges.
2415         #
2416         #  @ref tui_creation_curve "Example"
2417         @ManageTransactions("CurvesOp")
2418         def MakeIsoline(self, theFace, IsUIsoline, theParameter, theName=None):
2419             """
2420             Create an isoline curve on a face.
2421
2422             Parameters:
2423                 theFace the face for which an isoline is created.
2424                 IsUIsoline True for U-isoline creation; False for V-isoline
2425                            creation.
2426                 theParameter the U parameter for U-isoline or V parameter
2427                              for V-isoline.
2428                 theName Object name; when specified, this parameter is used
2429                         for result publication in the study. Otherwise, if automatic
2430                         publication is switched on, default value is used for result name.
2431
2432             Returns:
2433                 New GEOM.GEOM_Object, containing the created isoline edge or a
2434                 compound of edges.
2435             """
2436             # Example: see GEOM_TestAll.py
2437             anObj = self.CurvesOp.MakeIsoline(theFace, IsUIsoline, theParameter)
2438             RaiseIfFailed("MakeIsoline", self.CurvesOp)
2439             if IsUIsoline:
2440                 self._autoPublish(anObj, theName, "U-Isoline")
2441             else:
2442                 self._autoPublish(anObj, theName, "V-Isoline")
2443             return anObj
2444
2445         # end of l4_curves
2446         ## @}
2447
2448         ## @addtogroup l3_sketcher
2449         ## @{
2450
2451         ## Create a sketcher (wire or face), following the textual description,
2452         #  passed through <VAR>theCommand</VAR> argument. \n
2453         #  Edges of the resulting wire or face will be arcs of circles and/or linear segments. \n
2454         #  Format of the description string have to be the following:
2455         #
2456         #  "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"
2457         #
2458         #  Where:
2459         #  - x1, y1 are coordinates of the first sketcher point (zero by default),
2460         #  - CMD is one of
2461         #     - "R angle" : Set the direction by angle
2462         #     - "D dx dy" : Set the direction by DX & DY
2463         #     .
2464         #       \n
2465         #     - "TT x y" : Create segment by point at X & Y
2466         #     - "T dx dy" : Create segment by point with DX & DY
2467         #     - "L length" : Create segment by direction & Length
2468         #     - "IX x" : Create segment by direction & Intersect. X
2469         #     - "IY y" : Create segment by direction & Intersect. Y
2470         #     .
2471         #       \n
2472         #     - "C radius length" : Create arc by direction, radius and length(in degree)
2473         #     - "AA x y": Create arc by point at X & Y
2474         #     - "A dx dy" : Create arc by point with DX & DY
2475         #     - "UU x y radius flag1": Create arc by point at X & Y with given radiUs
2476         #     - "U dx dy radius flag1" : Create arc by point with DX & DY with given radiUs
2477         #     - "EE x y xc yc flag1 flag2": Create arc by point at X & Y with given cEnter coordinates
2478         #     - "E dx dy dxc dyc radius flag1 flag2" : Create arc by point with DX & DY with given cEnter coordinates
2479         #     .
2480         #       \n
2481         #     - "WW" : Close Wire (to finish)
2482         #     - "WF" : Close Wire and build face (to finish)
2483         #     .
2484         #        \n
2485         #  - Flag1 (= reverse) is 0 or 2 ...
2486         #     - if 0 the drawn arc is the one of lower angle (< Pi)
2487         #     - if 2 the drawn arc ius the one of greater angle (> Pi)
2488         #     .
2489         #        \n
2490         #  - Flag2 (= control tolerance) is 0 or 1 ...
2491         #     - if 0 the specified end point can be at a distance of the arc greater than the tolerance (10^-7)
2492         #     - if 1 the wire is built only if the end point is on the arc
2493         #       with a tolerance of 10^-7 on the distance else the creation fails
2494         #
2495         #  @param theCommand String, defining the sketcher in local
2496         #                    coordinates of the working plane.
2497         #  @param theWorkingPlane Nine double values, defining origin,
2498         #                         OZ and OX directions of the working plane.
2499         #  @param theName Object name; when specified, this parameter is used
2500         #         for result publication in the study. Otherwise, if automatic
2501         #         publication is switched on, default value is used for result name.
2502         #
2503         #  @return New GEOM.GEOM_Object, containing the created wire.
2504         #
2505         #  @ref tui_sketcher_page "Example"
2506         @ManageTransactions("CurvesOp")
2507         def MakeSketcher(self, theCommand, theWorkingPlane = [0,0,0, 0,0,1, 1,0,0], theName=None):
2508             """
2509             Create a sketcher (wire or face), following the textual description, passed
2510             through theCommand argument.
2511             Edges of the resulting wire or face will be arcs of circles and/or linear segments.
2512             Format of the description string have to be the following:
2513                 "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"
2514             Where:
2515             - x1, y1 are coordinates of the first sketcher point (zero by default),
2516             - CMD is one of
2517                - "R angle" : Set the direction by angle
2518                - "D dx dy" : Set the direction by DX & DY
2519
2520                - "TT x y" : Create segment by point at X & Y
2521                - "T dx dy" : Create segment by point with DX & DY
2522                - "L length" : Create segment by direction & Length
2523                - "IX x" : Create segment by direction & Intersect. X
2524                - "IY y" : Create segment by direction & Intersect. Y
2525
2526                - "C radius length" : Create arc by direction, radius and length(in degree)
2527                - "AA x y": Create arc by point at X & Y
2528                - "A dx dy" : Create arc by point with DX & DY
2529                - "UU x y radius flag1": Create arc by point at X & Y with given radiUs
2530                - "U dx dy radius flag1" : Create arc by point with DX & DY with given radiUs
2531                - "EE x y xc yc flag1 flag2": Create arc by point at X & Y with given cEnter coordinates
2532                - "E dx dy dxc dyc radius flag1 flag2" : Create arc by point with DX & DY with given cEnter coordinates
2533
2534                - "WW" : Close Wire (to finish)
2535                - "WF" : Close Wire and build face (to finish)
2536
2537             - Flag1 (= reverse) is 0 or 2 ...
2538                - if 0 the drawn arc is the one of lower angle (< Pi)
2539                - if 2 the drawn arc ius the one of greater angle (> Pi)
2540
2541             - Flag2 (= control tolerance) is 0 or 1 ...
2542                - if 0 the specified end point can be at a distance of the arc greater than the tolerance (10^-7)
2543                - if 1 the wire is built only if the end point is on the arc
2544                  with a tolerance of 10^-7 on the distance else the creation fails
2545
2546             Parameters:
2547                 theCommand String, defining the sketcher in local
2548                            coordinates of the working plane.
2549                 theWorkingPlane Nine double values, defining origin,
2550                                 OZ and OX directions of the working plane.
2551                 theName Object name; when specified, this parameter is used
2552                         for result publication in the study. Otherwise, if automatic
2553                         publication is switched on, default value is used for result name.
2554
2555             Returns:
2556                 New GEOM.GEOM_Object, containing the created wire.
2557             """
2558             # Example: see GEOM_TestAll.py
2559             theCommand,Parameters = ParseSketcherCommand(theCommand)
2560             anObj = self.CurvesOp.MakeSketcher(theCommand, theWorkingPlane)
2561             RaiseIfFailed("MakeSketcher", self.CurvesOp)
2562             anObj.SetParameters(Parameters)
2563             self._autoPublish(anObj, theName, "wire")
2564             return anObj
2565
2566         ## Create a sketcher (wire or face), following the textual description,
2567         #  passed through <VAR>theCommand</VAR> argument. \n
2568         #  For format of the description string see MakeSketcher() method.\n
2569         #  @param theCommand String, defining the sketcher in local
2570         #                    coordinates of the working plane.
2571         #  @param theWorkingPlane Planar Face or LCS(Marker) of the working plane.
2572         #  @param theName Object name; when specified, this parameter is used
2573         #         for result publication in the study. Otherwise, if automatic
2574         #         publication is switched on, default value is used for result name.
2575         #
2576         #  @return New GEOM.GEOM_Object, containing the created wire.
2577         #
2578         #  @ref tui_sketcher_page "Example"
2579         @ManageTransactions("CurvesOp")
2580         def MakeSketcherOnPlane(self, theCommand, theWorkingPlane, theName=None):
2581             """
2582             Create a sketcher (wire or face), following the textual description,
2583             passed through theCommand argument.
2584             For format of the description string see geompy.MakeSketcher() method.
2585
2586             Parameters:
2587                 theCommand String, defining the sketcher in local
2588                            coordinates of the working plane.
2589                 theWorkingPlane Planar Face or LCS(Marker) of the working plane.
2590                 theName Object name; when specified, this parameter is used
2591                         for result publication in the study. Otherwise, if automatic
2592                         publication is switched on, default value is used for result name.
2593
2594             Returns:
2595                 New GEOM.GEOM_Object, containing the created wire.
2596             """
2597             theCommand,Parameters = ParseSketcherCommand(theCommand)
2598             anObj = self.CurvesOp.MakeSketcherOnPlane(theCommand, theWorkingPlane)
2599             RaiseIfFailed("MakeSketcherOnPlane", self.CurvesOp)
2600             anObj.SetParameters(Parameters)
2601             self._autoPublish(anObj, theName, "wire")
2602             return anObj
2603
2604         ## Obtain a 2D sketcher interface
2605         #  @return An instance of @ref gsketcher.Sketcher2D "Sketcher2D" interface
2606         def Sketcher2D (self):
2607             """
2608             Obtain a 2D sketcher interface.
2609
2610             Example of usage:
2611                sk = geompy.Sketcher2D()
2612                sk.addPoint(20, 20)
2613                sk.addSegmentRelative(15, 70)
2614                sk.addSegmentPerpY(50)
2615                sk.addArcRadiusRelative(25, 15, 14.5, 0)
2616                sk.addArcCenterAbsolute(1, 1, 50, 50, 0, 0)
2617                sk.addArcDirectionRadiusLength(20, 20, 101, 162.13)
2618                sk.close()
2619                Sketch_1 = sk.wire(geomObj_1)
2620             """
2621             sk = Sketcher2D (self)
2622             return sk
2623
2624         ## Create a sketcher wire, following the numerical description,
2625         #  passed through <VAR>theCoordinates</VAR> argument. \n
2626         #  @param theCoordinates double values, defining points to create a wire,
2627         #                                                      passing from it.
2628         #  @param theName Object name; when specified, this parameter is used
2629         #         for result publication in the study. Otherwise, if automatic
2630         #         publication is switched on, default value is used for result name.
2631         #
2632         #  @return New GEOM.GEOM_Object, containing the created wire.
2633         #
2634         #  @ref tui_3dsketcher_page "Example"
2635         @ManageTransactions("CurvesOp")
2636         def Make3DSketcher(self, theCoordinates, theName=None):
2637             """
2638             Create a sketcher wire, following the numerical description,
2639             passed through theCoordinates argument.
2640
2641             Parameters:
2642                 theCoordinates double values, defining points to create a wire,
2643                                passing from it.
2644                 theName Object name; when specified, this parameter is used
2645                         for result publication in the study. Otherwise, if automatic
2646                         publication is switched on, default value is used for result name.
2647
2648             Returns:
2649                 New GEOM_Object, containing the created wire.
2650             """
2651             theCoordinates,Parameters = ParseParameters(theCoordinates)
2652             anObj = self.CurvesOp.Make3DSketcher(theCoordinates)
2653             RaiseIfFailed("Make3DSketcher", self.CurvesOp)
2654             anObj.SetParameters(Parameters)
2655             self._autoPublish(anObj, theName, "wire")
2656             return anObj
2657
2658         ## Obtain a 3D sketcher interface
2659         #  @return An instance of @ref gsketcher.Sketcher3D "Sketcher3D" interface
2660         #
2661         #  @ref tui_3dsketcher_page "Example"
2662         def Sketcher3D (self):
2663             """
2664             Obtain a 3D sketcher interface.
2665
2666             Example of usage:
2667                 sk = geompy.Sketcher3D()
2668                 sk.addPointsAbsolute(0,0,0, 70,0,0)
2669                 sk.addPointsRelative(0, 0, 130)
2670                 sk.addPointAnglesLength("OXY", 50, 0, 100)
2671                 sk.addPointAnglesLength("OXZ", 30, 80, 130)
2672                 sk.close()
2673                 a3D_Sketcher_1 = sk.wire()
2674             """
2675             sk = Sketcher3D (self)
2676             return sk
2677
2678         ## Obtain a 2D polyline creation interface
2679         #  @return An instance of @ref gsketcher.Polyline2D "Polyline2D" interface
2680         #
2681         #  @ref tui_3dsketcher_page "Example"
2682         def Polyline2D (self):
2683             """
2684             Obtain a 2D polyline creation interface.
2685
2686             Example of usage:
2687                 pl = geompy.Polyline2D()
2688                 pl.addSection("section 1", GEOM.Polyline, True)
2689                 pl.addPoints(0, 0, 10, 0, 10, 10)
2690                 pl.addSection("section 2", GEOM.Interpolation, False)
2691                 pl.addPoints(20, 0, 30, 0, 30, 10)
2692                 resultObj = pl.result(WorkingPlane)
2693             """
2694             pl = Polyline2D (self)
2695             return pl
2696
2697         # end of l3_sketcher
2698         ## @}
2699
2700         ## @addtogroup l3_3d_primitives
2701         ## @{
2702
2703         ## Create a box by coordinates of two opposite vertices.
2704         #
2705         #  @param x1,y1,z1 double values, defining first point it.
2706         #  @param x2,y2,z2 double values, defining first point it.
2707         #  @param theName Object name; when specified, this parameter is used
2708         #         for result publication in the study. Otherwise, if automatic
2709         #         publication is switched on, default value is used for result name.
2710         #
2711         #  @return New GEOM.GEOM_Object, containing the created box.
2712         #
2713         #  @ref tui_creation_box "Example"
2714         def MakeBox(self, x1, y1, z1, x2, y2, z2, theName=None):
2715             """
2716             Create a box by coordinates of two opposite vertices.
2717
2718             Parameters:
2719                 x1,y1,z1 double values, defining first point.
2720                 x2,y2,z2 double values, defining second point.
2721                 theName Object name; when specified, this parameter is used
2722                         for result publication in the study. Otherwise, if automatic
2723                         publication is switched on, default value is used for result name.
2724
2725             Returns:
2726                 New GEOM.GEOM_Object, containing the created box.
2727             """
2728             # Example: see GEOM_TestAll.py
2729             pnt1 = self.MakeVertex(x1,y1,z1)
2730             pnt2 = self.MakeVertex(x2,y2,z2)
2731             # note: auto-publishing is done in self.MakeBoxTwoPnt()
2732             return self.MakeBoxTwoPnt(pnt1, pnt2, theName)
2733
2734         ## Create a box with specified dimensions along the coordinate axes
2735         #  and with edges, parallel to the coordinate axes.
2736         #  Center of the box will be at point (DX/2, DY/2, DZ/2).
2737         #  @param theDX Length of Box edges, parallel to OX axis.
2738         #  @param theDY Length of Box edges, parallel to OY axis.
2739         #  @param theDZ Length of Box edges, parallel to OZ axis.
2740         #  @param theName Object name; when specified, this parameter is used
2741         #         for result publication in the study. Otherwise, if automatic
2742         #         publication is switched on, default value is used for result name.
2743         #
2744         #  @return New GEOM.GEOM_Object, containing the created box.
2745         #
2746         #  @ref tui_creation_box "Example"
2747         @ManageTransactions("PrimOp")
2748         def MakeBoxDXDYDZ(self, theDX, theDY, theDZ, theName=None):
2749             """
2750             Create a box with specified dimensions along the coordinate axes
2751             and with edges, parallel to the coordinate axes.
2752             Center of the box will be at point (DX/2, DY/2, DZ/2).
2753
2754             Parameters:
2755                 theDX Length of Box edges, parallel to OX axis.
2756                 theDY Length of Box edges, parallel to OY axis.
2757                 theDZ Length of Box edges, parallel to OZ axis.
2758                 theName Object name; when specified, this parameter is used
2759                         for result publication in the study. Otherwise, if automatic
2760                         publication is switched on, default value is used for result name.
2761
2762             Returns:
2763                 New GEOM.GEOM_Object, containing the created box.
2764             """
2765             # Example: see GEOM_TestAll.py
2766             theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
2767             anObj = self.PrimOp.MakeBoxDXDYDZ(theDX, theDY, theDZ)
2768             RaiseIfFailed("MakeBoxDXDYDZ", self.PrimOp)
2769             anObj.SetParameters(Parameters)
2770             self._autoPublish(anObj, theName, "box")
2771             return anObj
2772
2773         ## Create a box with two specified opposite vertices,
2774         #  and with edges, parallel to the coordinate axes
2775         #  @param thePnt1 First of two opposite vertices.
2776         #  @param thePnt2 Second of two opposite vertices.
2777         #  @param theName Object name; when specified, this parameter is used
2778         #         for result publication in the study. Otherwise, if automatic
2779         #         publication is switched on, default value is used for result name.
2780         #
2781         #  @return New GEOM.GEOM_Object, containing the created box.
2782         #
2783         #  @ref tui_creation_box "Example"
2784         @ManageTransactions("PrimOp")
2785         def MakeBoxTwoPnt(self, thePnt1, thePnt2, theName=None):
2786             """
2787             Create a box with two specified opposite vertices,
2788             and with edges, parallel to the coordinate axes
2789
2790             Parameters:
2791                 thePnt1 First of two opposite vertices.
2792                 thePnt2 Second of two opposite vertices.
2793                 theName Object name; when specified, this parameter is used
2794                         for result publication in the study. Otherwise, if automatic
2795                         publication is switched on, default value is used for result name.
2796
2797             Returns:
2798                 New GEOM.GEOM_Object, containing the created box.
2799             """
2800             # Example: see GEOM_TestAll.py
2801             anObj = self.PrimOp.MakeBoxTwoPnt(thePnt1, thePnt2)
2802             RaiseIfFailed("MakeBoxTwoPnt", self.PrimOp)
2803             self._autoPublish(anObj, theName, "box")
2804             return anObj
2805
2806         ## Create a face with specified dimensions with edges parallel to coordinate axes.
2807         #  @param theH height of Face.
2808         #  @param theW width of Face.
2809         #  @param theOrientation face orientation: 1-OXY, 2-OYZ, 3-OZX
2810         #  @param theName Object name; when specified, this parameter is used
2811         #         for result publication in the study. Otherwise, if automatic
2812         #         publication is switched on, default value is used for result name.
2813         #
2814         #  @return New GEOM.GEOM_Object, containing the created face.
2815         #
2816         #  @ref tui_creation_face "Example"
2817         @ManageTransactions("PrimOp")
2818         def MakeFaceHW(self, theH, theW, theOrientation, theName=None):
2819             """
2820             Create a face with specified dimensions with edges parallel to coordinate axes.
2821
2822             Parameters:
2823                 theH height of Face.
2824                 theW width of Face.
2825                 theOrientation face orientation: 1-OXY, 2-OYZ, 3-OZX
2826                 theName Object name; when specified, this parameter is used
2827                         for result publication in the study. Otherwise, if automatic
2828                         publication is switched on, default value is used for result name.
2829
2830             Returns:
2831                 New GEOM.GEOM_Object, containing the created face.
2832             """
2833             # Example: see GEOM_TestAll.py
2834             theH,theW,Parameters = ParseParameters(theH, theW)
2835             anObj = self.PrimOp.MakeFaceHW(theH, theW, theOrientation)
2836             RaiseIfFailed("MakeFaceHW", self.PrimOp)
2837             anObj.SetParameters(Parameters)
2838             self._autoPublish(anObj, theName, "rectangle")
2839             return anObj
2840
2841         ## Create a face from another plane and two sizes,
2842         #  vertical size and horisontal size.
2843         #  @param theObj   Normale vector to the creating face or
2844         #  the face object.
2845         #  @param theH     Height (vertical size).
2846         #  @param theW     Width (horisontal size).
2847         #  @param theName Object name; when specified, this parameter is used
2848         #         for result publication in the study. Otherwise, if automatic
2849         #         publication is switched on, default value is used for result name.
2850         #
2851         #  @return New GEOM.GEOM_Object, containing the created face.
2852         #
2853         #  @ref tui_creation_face "Example"
2854         @ManageTransactions("PrimOp")
2855         def MakeFaceObjHW(self, theObj, theH, theW, theName=None):
2856             """
2857             Create a face from another plane and two sizes,
2858             vertical size and horisontal size.
2859
2860             Parameters:
2861                 theObj   Normale vector to the creating face or
2862                          the face object.
2863                 theH     Height (vertical size).
2864                 theW     Width (horisontal size).
2865                 theName Object name; when specified, this parameter is used
2866                         for result publication in the study. Otherwise, if automatic
2867                         publication is switched on, default value is used for result name.
2868
2869             Returns:
2870                 New GEOM_Object, containing the created face.
2871             """
2872             # Example: see GEOM_TestAll.py
2873             theH,theW,Parameters = ParseParameters(theH, theW)
2874             anObj = self.PrimOp.MakeFaceObjHW(theObj, theH, theW)
2875             RaiseIfFailed("MakeFaceObjHW", self.PrimOp)
2876             anObj.SetParameters(Parameters)
2877             self._autoPublish(anObj, theName, "rectangle")
2878             return anObj
2879
2880         ## Create a disk with given center, normal vector and radius.
2881         #  @param thePnt Disk center.
2882         #  @param theVec Vector, normal to the plane of the disk.
2883         #  @param theR Disk radius.
2884         #  @param theName Object name; when specified, this parameter is used
2885         #         for result publication in the study. Otherwise, if automatic
2886         #         publication is switched on, default value is used for result name.
2887         #
2888         #  @return New GEOM.GEOM_Object, containing the created disk.
2889         #
2890         #  @ref tui_creation_disk "Example"
2891         @ManageTransactions("PrimOp")
2892         def MakeDiskPntVecR(self, thePnt, theVec, theR, theName=None):
2893             """
2894             Create a disk with given center, normal vector and radius.
2895
2896             Parameters:
2897                 thePnt Disk center.
2898                 theVec Vector, normal to the plane of the disk.
2899                 theR Disk radius.
2900                 theName Object name; when specified, this parameter is used
2901                         for result publication in the study. Otherwise, if automatic
2902                         publication is switched on, default value is used for result name.
2903
2904             Returns:
2905                 New GEOM.GEOM_Object, containing the created disk.
2906             """
2907             # Example: see GEOM_TestAll.py
2908             theR,Parameters = ParseParameters(theR)
2909             anObj = self.PrimOp.MakeDiskPntVecR(thePnt, theVec, theR)
2910             RaiseIfFailed("MakeDiskPntVecR", self.PrimOp)
2911             anObj.SetParameters(Parameters)
2912             self._autoPublish(anObj, theName, "disk")
2913             return anObj
2914
2915         ## Create a disk, passing through three given points
2916         #  @param thePnt1,thePnt2,thePnt3 Points, defining the disk.
2917         #  @param theName Object name; when specified, this parameter is used
2918         #         for result publication in the study. Otherwise, if automatic
2919         #         publication is switched on, default value is used for result name.
2920         #
2921         #  @return New GEOM.GEOM_Object, containing the created disk.
2922         #
2923         #  @ref tui_creation_disk "Example"
2924         @ManageTransactions("PrimOp")
2925         def MakeDiskThreePnt(self, thePnt1, thePnt2, thePnt3, theName=None):
2926             """
2927             Create a disk, passing through three given points
2928
2929             Parameters:
2930                 thePnt1,thePnt2,thePnt3 Points, defining the disk.
2931                 theName Object name; when specified, this parameter is used
2932                         for result publication in the study. Otherwise, if automatic
2933                         publication is switched on, default value is used for result name.
2934
2935             Returns:
2936                 New GEOM.GEOM_Object, containing the created disk.
2937             """
2938             # Example: see GEOM_TestAll.py
2939             anObj = self.PrimOp.MakeDiskThreePnt(thePnt1, thePnt2, thePnt3)
2940             RaiseIfFailed("MakeDiskThreePnt", self.PrimOp)
2941             self._autoPublish(anObj, theName, "disk")
2942             return anObj
2943
2944         ## Create a disk with specified dimensions along OX-OY coordinate axes.
2945         #  @param theR Radius of Face.
2946         #  @param theOrientation set the orientation belong axis OXY or OYZ or OZX
2947         #  @param theName Object name; when specified, this parameter is used
2948         #         for result publication in the study. Otherwise, if automatic
2949         #         publication is switched on, default value is used for result name.
2950         #
2951         #  @return New GEOM.GEOM_Object, containing the created disk.
2952         #
2953         #  @ref tui_creation_face "Example"
2954         @ManageTransactions("PrimOp")
2955         def MakeDiskR(self, theR, theOrientation, theName=None):
2956             """
2957             Create a disk with specified dimensions along OX-OY coordinate axes.
2958
2959             Parameters:
2960                 theR Radius of Face.
2961                 theOrientation set the orientation belong axis OXY or OYZ or OZX
2962                 theName Object name; when specified, this parameter is used
2963                         for result publication in the study. Otherwise, if automatic
2964                         publication is switched on, default value is used for result name.
2965
2966             Returns:
2967                 New GEOM.GEOM_Object, containing the created disk.
2968
2969             Example of usage:
2970                 Disk3 = geompy.MakeDiskR(100., 1)
2971             """
2972             # Example: see GEOM_TestAll.py
2973             theR,Parameters = ParseParameters(theR)
2974             anObj = self.PrimOp.MakeDiskR(theR, theOrientation)
2975             RaiseIfFailed("MakeDiskR", self.PrimOp)
2976             anObj.SetParameters(Parameters)
2977             self._autoPublish(anObj, theName, "disk")
2978             return anObj
2979
2980         ## Create a cylinder with given base point, axis, radius and height.
2981         #  @param thePnt Central point of cylinder base.
2982         #  @param theAxis Cylinder axis.
2983         #  @param theR Cylinder radius.
2984         #  @param theH Cylinder height.
2985         #  @param theName Object name; when specified, this parameter is used
2986         #         for result publication in the study. Otherwise, if automatic
2987         #         publication is switched on, default value is used for result name.
2988         #
2989         #  @return New GEOM.GEOM_Object, containing the created cylinder.
2990         #
2991         #  @ref tui_creation_cylinder "Example"
2992         @ManageTransactions("PrimOp")
2993         def MakeCylinder(self, thePnt, theAxis, theR, theH, theName=None):
2994             """
2995             Create a cylinder with given base point, axis, radius and height.
2996
2997             Parameters:
2998                 thePnt Central point of cylinder base.
2999                 theAxis Cylinder axis.
3000                 theR Cylinder radius.
3001                 theH Cylinder height.
3002                 theName Object name; when specified, this parameter is used
3003                         for result publication in the study. Otherwise, if automatic
3004                         publication is switched on, default value is used for result name.
3005
3006             Returns:
3007                 New GEOM.GEOM_Object, containing the created cylinder.
3008             """
3009             # Example: see GEOM_TestAll.py
3010             theR,theH,Parameters = ParseParameters(theR, theH)
3011             anObj = self.PrimOp.MakeCylinderPntVecRH(thePnt, theAxis, theR, theH)
3012             RaiseIfFailed("MakeCylinderPntVecRH", self.PrimOp)
3013             anObj.SetParameters(Parameters)
3014             self._autoPublish(anObj, theName, "cylinder")
3015             return anObj
3016             
3017         ## Create a portion of cylinder with given base point, axis, radius, height and angle.
3018         #  @param thePnt Central point of cylinder base.
3019         #  @param theAxis Cylinder axis.
3020         #  @param theR Cylinder radius.
3021         #  @param theH Cylinder height.
3022         #  @param theA Cylinder angle in radians.
3023         #  @param theName Object name; when specified, this parameter is used
3024         #         for result publication in the study. Otherwise, if automatic
3025         #         publication is switched on, default value is used for result name.
3026         #
3027         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3028         #
3029         #  @ref tui_creation_cylinder "Example"
3030         @ManageTransactions("PrimOp")
3031         def MakeCylinderA(self, thePnt, theAxis, theR, theH, theA, theName=None):
3032             """
3033             Create a portion of cylinder with given base point, axis, radius, height and angle.
3034
3035             Parameters:
3036                 thePnt Central point of cylinder base.
3037                 theAxis Cylinder axis.
3038                 theR Cylinder radius.
3039                 theH Cylinder height.
3040                 theA Cylinder angle in radians.
3041                 theName Object name; when specified, this parameter is used
3042                         for result publication in the study. Otherwise, if automatic
3043                         publication is switched on, default value is used for result name.
3044
3045             Returns:
3046                 New GEOM.GEOM_Object, containing the created cylinder.
3047             """
3048             # Example: see GEOM_TestAll.py
3049             flag = False
3050             if isinstance(theA,str):
3051                 flag = True
3052             theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
3053             if flag:
3054                 theA = theA*math.pi/180.
3055             anObj = self.PrimOp.MakeCylinderPntVecRHA(thePnt, theAxis, theR, theH, theA)
3056             RaiseIfFailed("MakeCylinderPntVecRHA", self.PrimOp)
3057             anObj.SetParameters(Parameters)
3058             self._autoPublish(anObj, theName, "cylinder")
3059             return anObj
3060
3061         ## Create a cylinder with given radius and height at
3062         #  the origin of coordinate system. Axis of the cylinder
3063         #  will be collinear to the OZ axis of the coordinate system.
3064         #  @param theR Cylinder radius.
3065         #  @param theH Cylinder height.
3066         #  @param theName Object name; when specified, this parameter is used
3067         #         for result publication in the study. Otherwise, if automatic
3068         #         publication is switched on, default value is used for result name.
3069         #
3070         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3071         #
3072         #  @ref tui_creation_cylinder "Example"
3073         @ManageTransactions("PrimOp")
3074         def MakeCylinderRH(self, theR, theH, theName=None):
3075             """
3076             Create a cylinder with given radius and height at
3077             the origin of coordinate system. Axis of the cylinder
3078             will be collinear to the OZ axis of the coordinate system.
3079
3080             Parameters:
3081                 theR Cylinder radius.
3082                 theH Cylinder height.
3083                 theName Object name; when specified, this parameter is used
3084                         for result publication in the study. Otherwise, if automatic
3085                         publication is switched on, default value is used for result name.
3086
3087             Returns:
3088                 New GEOM.GEOM_Object, containing the created cylinder.
3089             """
3090             # Example: see GEOM_TestAll.py
3091             theR,theH,Parameters = ParseParameters(theR, theH)
3092             anObj = self.PrimOp.MakeCylinderRH(theR, theH)
3093             RaiseIfFailed("MakeCylinderRH", self.PrimOp)
3094             anObj.SetParameters(Parameters)
3095             self._autoPublish(anObj, theName, "cylinder")
3096             return anObj
3097             
3098         ## Create a portion of cylinder with given radius, height and angle at
3099         #  the origin of coordinate system. Axis of the cylinder
3100         #  will be collinear to the OZ axis of the coordinate system.
3101         #  @param theR Cylinder radius.
3102         #  @param theH Cylinder height.
3103         #  @param theA Cylinder angle in radians.
3104         #  @param theName Object name; when specified, this parameter is used
3105         #         for result publication in the study. Otherwise, if automatic
3106         #         publication is switched on, default value is used for result name.
3107         #
3108         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3109         #
3110         #  @ref tui_creation_cylinder "Example"
3111         @ManageTransactions("PrimOp")
3112         def MakeCylinderRHA(self, theR, theH, theA, theName=None):
3113             """
3114             Create a portion of cylinder with given radius, height and angle at
3115             the origin of coordinate system. Axis of the cylinder
3116             will be collinear to the OZ axis of the coordinate system.
3117
3118             Parameters:
3119                 theR Cylinder radius.
3120                 theH Cylinder height.
3121                 theA Cylinder angle in radians.
3122                 theName Object name; when specified, this parameter is used
3123                         for result publication in the study. Otherwise, if automatic
3124                         publication is switched on, default value is used for result name.
3125
3126             Returns:
3127                 New GEOM.GEOM_Object, containing the created cylinder.
3128             """
3129             # Example: see GEOM_TestAll.py
3130             flag = False
3131             if isinstance(theA,str):
3132                 flag = True
3133             theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
3134             if flag:
3135                 theA = theA*math.pi/180.
3136             anObj = self.PrimOp.MakeCylinderRHA(theR, theH, theA)
3137             RaiseIfFailed("MakeCylinderRHA", self.PrimOp)
3138             anObj.SetParameters(Parameters)
3139             self._autoPublish(anObj, theName, "cylinder")
3140             return anObj
3141
3142         ## Create a sphere with given center and radius.
3143         #  @param thePnt Sphere center.
3144         #  @param theR Sphere radius.
3145         #  @param theName Object name; when specified, this parameter is used
3146         #         for result publication in the study. Otherwise, if automatic
3147         #         publication is switched on, default value is used for result name.
3148         #
3149         #  @return New GEOM.GEOM_Object, containing the created sphere.
3150         #
3151         #  @ref tui_creation_sphere "Example"
3152         @ManageTransactions("PrimOp")
3153         def MakeSpherePntR(self, thePnt, theR, theName=None):
3154             """
3155             Create a sphere with given center and radius.
3156
3157             Parameters:
3158                 thePnt Sphere center.
3159                 theR Sphere radius.
3160                 theName Object name; when specified, this parameter is used
3161                         for result publication in the study. Otherwise, if automatic
3162                         publication is switched on, default value is used for result name.
3163
3164             Returns:
3165                 New GEOM.GEOM_Object, containing the created sphere.
3166             """
3167             # Example: see GEOM_TestAll.py
3168             theR,Parameters = ParseParameters(theR)
3169             anObj = self.PrimOp.MakeSpherePntR(thePnt, theR)
3170             RaiseIfFailed("MakeSpherePntR", self.PrimOp)
3171             anObj.SetParameters(Parameters)
3172             self._autoPublish(anObj, theName, "sphere")
3173             return anObj
3174
3175         ## Create a sphere with given center and radius.
3176         #  @param x,y,z Coordinates of sphere center.
3177         #  @param theR Sphere radius.
3178         #  @param theName Object name; when specified, this parameter is used
3179         #         for result publication in the study. Otherwise, if automatic
3180         #         publication is switched on, default value is used for result name.
3181         #
3182         #  @return New GEOM.GEOM_Object, containing the created sphere.
3183         #
3184         #  @ref tui_creation_sphere "Example"
3185         def MakeSphere(self, x, y, z, theR, theName=None):
3186             """
3187             Create a sphere with given center and radius.
3188
3189             Parameters:
3190                 x,y,z Coordinates of sphere center.
3191                 theR Sphere radius.
3192                 theName Object name; when specified, this parameter is used
3193                         for result publication in the study. Otherwise, if automatic
3194                         publication is switched on, default value is used for result name.
3195
3196             Returns:
3197                 New GEOM.GEOM_Object, containing the created sphere.
3198             """
3199             # Example: see GEOM_TestAll.py
3200             point = self.MakeVertex(x, y, z)
3201             # note: auto-publishing is done in self.MakeSpherePntR()
3202             anObj = self.MakeSpherePntR(point, theR, theName)
3203             return anObj
3204
3205         ## Create a sphere with given radius at the origin of coordinate system.
3206         #  @param theR Sphere radius.
3207         #  @param theName Object name; when specified, this parameter is used
3208         #         for result publication in the study. Otherwise, if automatic
3209         #         publication is switched on, default value is used for result name.
3210         #
3211         #  @return New GEOM.GEOM_Object, containing the created sphere.
3212         #
3213         #  @ref tui_creation_sphere "Example"
3214         @ManageTransactions("PrimOp")
3215         def MakeSphereR(self, theR, theName=None):
3216             """
3217             Create a sphere with given radius at the origin of coordinate system.
3218
3219             Parameters:
3220                 theR Sphere radius.
3221                 theName Object name; when specified, this parameter is used
3222                         for result publication in the study. Otherwise, if automatic
3223                         publication is switched on, default value is used for result name.
3224
3225             Returns:
3226                 New GEOM.GEOM_Object, containing the created sphere.
3227             """
3228             # Example: see GEOM_TestAll.py
3229             theR,Parameters = ParseParameters(theR)
3230             anObj = self.PrimOp.MakeSphereR(theR)
3231             RaiseIfFailed("MakeSphereR", self.PrimOp)
3232             anObj.SetParameters(Parameters)
3233             self._autoPublish(anObj, theName, "sphere")
3234             return anObj
3235
3236         ## Create a cone with given base point, axis, height and radiuses.
3237         #  @param thePnt Central point of the first cone base.
3238         #  @param theAxis Cone axis.
3239         #  @param theR1 Radius of the first cone base.
3240         #  @param theR2 Radius of the second cone base.
3241         #    \note If both radiuses are non-zero, the cone will be truncated.
3242         #    \note If the radiuses are equal, a cylinder will be created instead.
3243         #  @param theH Cone height.
3244         #  @param theName Object name; when specified, this parameter is used
3245         #         for result publication in the study. Otherwise, if automatic
3246         #         publication is switched on, default value is used for result name.
3247         #
3248         #  @return New GEOM.GEOM_Object, containing the created cone.
3249         #
3250         #  @ref tui_creation_cone "Example"
3251         @ManageTransactions("PrimOp")
3252         def MakeCone(self, thePnt, theAxis, theR1, theR2, theH, theName=None):
3253             """
3254             Create a cone with given base point, axis, height and radiuses.
3255
3256             Parameters:
3257                 thePnt Central point of the first cone base.
3258                 theAxis Cone axis.
3259                 theR1 Radius of the first cone base.
3260                 theR2 Radius of the second cone base.
3261                 theH Cone height.
3262                 theName Object name; when specified, this parameter is used
3263                         for result publication in the study. Otherwise, if automatic
3264                         publication is switched on, default value is used for result name.
3265
3266             Note:
3267                 If both radiuses are non-zero, the cone will be truncated.
3268                 If the radiuses are equal, a cylinder will be created instead.
3269
3270             Returns:
3271                 New GEOM.GEOM_Object, containing the created cone.
3272             """
3273             # Example: see GEOM_TestAll.py
3274             theR1,theR2,theH,Parameters = ParseParameters(theR1,theR2,theH)
3275             anObj = self.PrimOp.MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theH)
3276             RaiseIfFailed("MakeConePntVecR1R2H", self.PrimOp)
3277             anObj.SetParameters(Parameters)
3278             self._autoPublish(anObj, theName, "cone")
3279             return anObj
3280
3281         ## Create a cone with given height and radiuses at
3282         #  the origin of coordinate system. Axis of the cone will
3283         #  be collinear to the OZ axis of the coordinate system.
3284         #  @param theR1 Radius of the first cone base.
3285         #  @param theR2 Radius of the second cone base.
3286         #    \note If both radiuses are non-zero, the cone will be truncated.
3287         #    \note If the radiuses are equal, a cylinder will be created instead.
3288         #  @param theH Cone height.
3289         #  @param theName Object name; when specified, this parameter is used
3290         #         for result publication in the study. Otherwise, if automatic
3291         #         publication is switched on, default value is used for result name.
3292         #
3293         #  @return New GEOM.GEOM_Object, containing the created cone.
3294         #
3295         #  @ref tui_creation_cone "Example"
3296         @ManageTransactions("PrimOp")
3297         def MakeConeR1R2H(self, theR1, theR2, theH, theName=None):
3298             """
3299             Create a cone with given height and radiuses at
3300             the origin of coordinate system. Axis of the cone will
3301             be collinear to the OZ axis of the coordinate system.
3302
3303             Parameters:
3304                 theR1 Radius of the first cone base.
3305                 theR2 Radius of the second cone base.
3306                 theH Cone height.
3307                 theName Object name; when specified, this parameter is used
3308                         for result publication in the study. Otherwise, if automatic
3309                         publication is switched on, default value is used for result name.
3310
3311             Note:
3312                 If both radiuses are non-zero, the cone will be truncated.
3313                 If the radiuses are equal, a cylinder will be created instead.
3314
3315             Returns:
3316                 New GEOM.GEOM_Object, containing the created cone.
3317             """
3318             # Example: see GEOM_TestAll.py
3319             theR1,theR2,theH,Parameters = ParseParameters(theR1,theR2,theH)
3320             anObj = self.PrimOp.MakeConeR1R2H(theR1, theR2, theH)
3321             RaiseIfFailed("MakeConeR1R2H", self.PrimOp)
3322             anObj.SetParameters(Parameters)
3323             self._autoPublish(anObj, theName, "cone")
3324             return anObj
3325
3326         ## Create a torus with given center, normal vector and radiuses.
3327         #  @param thePnt Torus central point.
3328         #  @param theVec Torus axis of symmetry.
3329         #  @param theRMajor Torus major radius.
3330         #  @param theRMinor Torus minor radius.
3331         #  @param theName Object name; when specified, this parameter is used
3332         #         for result publication in the study. Otherwise, if automatic
3333         #         publication is switched on, default value is used for result name.
3334         #
3335         #  @return New GEOM.GEOM_Object, containing the created torus.
3336         #
3337         #  @ref tui_creation_torus "Example"
3338         @ManageTransactions("PrimOp")
3339         def MakeTorus(self, thePnt, theVec, theRMajor, theRMinor, theName=None):
3340             """
3341             Create a torus with given center, normal vector and radiuses.
3342
3343             Parameters:
3344                 thePnt Torus central point.
3345                 theVec Torus axis of symmetry.
3346                 theRMajor Torus major radius.
3347                 theRMinor Torus minor radius.
3348                 theName Object name; when specified, this parameter is used
3349                         for result publication in the study. Otherwise, if automatic
3350                         publication is switched on, default value is used for result name.
3351
3352            Returns:
3353                 New GEOM.GEOM_Object, containing the created torus.
3354             """
3355             # Example: see GEOM_TestAll.py
3356             theRMajor,theRMinor,Parameters = ParseParameters(theRMajor,theRMinor)
3357             anObj = self.PrimOp.MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor)
3358             RaiseIfFailed("MakeTorusPntVecRR", self.PrimOp)
3359             anObj.SetParameters(Parameters)
3360             self._autoPublish(anObj, theName, "torus")
3361             return anObj
3362
3363         ## Create a torus with given radiuses at the origin of coordinate system.
3364         #  @param theRMajor Torus major radius.
3365         #  @param theRMinor Torus minor radius.
3366         #  @param theName Object name; when specified, this parameter is used
3367         #         for result publication in the study. Otherwise, if automatic
3368         #         publication is switched on, default value is used for result name.
3369         #
3370         #  @return New GEOM.GEOM_Object, containing the created torus.
3371         #
3372         #  @ref tui_creation_torus "Example"
3373         @ManageTransactions("PrimOp")
3374         def MakeTorusRR(self, theRMajor, theRMinor, theName=None):
3375             """
3376            Create a torus with given radiuses at the origin of coordinate system.
3377
3378            Parameters:
3379                 theRMajor Torus major radius.
3380                 theRMinor Torus minor radius.
3381                 theName Object name; when specified, this parameter is used
3382                         for result publication in the study. Otherwise, if automatic
3383                         publication is switched on, default value is used for result name.
3384
3385            Returns:
3386                 New GEOM.GEOM_Object, containing the created torus.
3387             """
3388             # Example: see GEOM_TestAll.py
3389             theRMajor,theRMinor,Parameters = ParseParameters(theRMajor,theRMinor)
3390             anObj = self.PrimOp.MakeTorusRR(theRMajor, theRMinor)
3391             RaiseIfFailed("MakeTorusRR", self.PrimOp)
3392             anObj.SetParameters(Parameters)
3393             self._autoPublish(anObj, theName, "torus")
3394             return anObj
3395
3396         # end of l3_3d_primitives
3397         ## @}
3398
3399         ## @addtogroup l3_complex
3400         ## @{
3401
3402         ## Create a shape by extrusion of the base shape along a vector, defined by two points.
3403         #  @param theBase Base shape to be extruded.
3404         #  @param thePoint1 First end of extrusion vector.
3405         #  @param thePoint2 Second end of extrusion vector.
3406         #  @param theScaleFactor Use it to make prism with scaled second base.
3407         #                        Nagative value means not scaled second base.
3408         #  @param theName Object name; when specified, this parameter is used
3409         #         for result publication in the study. Otherwise, if automatic
3410         #         publication is switched on, default value is used for result name.
3411         #
3412         #  @return New GEOM.GEOM_Object, containing the created prism.
3413         #
3414         #  @ref tui_creation_prism "Example"
3415         @ManageTransactions("PrimOp")
3416         def MakePrism(self, theBase, thePoint1, thePoint2, theScaleFactor = -1.0, theName=None):
3417             """
3418             Create a shape by extrusion of the base shape along a vector, defined by two points.
3419
3420             Parameters:
3421                 theBase Base shape to be extruded.
3422                 thePoint1 First end of extrusion vector.
3423                 thePoint2 Second end of extrusion vector.
3424                 theScaleFactor Use it to make prism with scaled second base.
3425                                Nagative value means not scaled second base.
3426                 theName Object name; when specified, this parameter is used
3427                         for result publication in the study. Otherwise, if automatic
3428                         publication is switched on, default value is used for result name.
3429
3430             Returns:
3431                 New GEOM.GEOM_Object, containing the created prism.
3432             """
3433             # Example: see GEOM_TestAll.py
3434             anObj = None
3435             Parameters = ""
3436             if theScaleFactor > 0:
3437                 theScaleFactor,Parameters = ParseParameters(theScaleFactor)
3438                 anObj = self.PrimOp.MakePrismTwoPntWithScaling(theBase, thePoint1, thePoint2, theScaleFactor)
3439             else:
3440                 anObj = self.PrimOp.MakePrismTwoPnt(theBase, thePoint1, thePoint2)
3441             RaiseIfFailed("MakePrismTwoPnt", self.PrimOp)
3442             anObj.SetParameters(Parameters)
3443             self._autoPublish(anObj, theName, "prism")
3444             return anObj
3445
3446         ## Create a shape by extrusion of the base shape along a
3447         #  vector, defined by two points, in 2 Ways (forward/backward).
3448         #  @param theBase Base shape to be extruded.
3449         #  @param thePoint1 First end of extrusion vector.
3450         #  @param thePoint2 Second end of extrusion vector.
3451         #  @param theName Object name; when specified, this parameter is used
3452         #         for result publication in the study. Otherwise, if automatic
3453         #         publication is switched on, default value is used for result name.
3454         #
3455         #  @return New GEOM.GEOM_Object, containing the created prism.
3456         #
3457         #  @ref tui_creation_prism "Example"
3458         @ManageTransactions("PrimOp")
3459         def MakePrism2Ways(self, theBase, thePoint1, thePoint2, theName=None):
3460             """
3461             Create a shape by extrusion of the base shape along a
3462             vector, defined by two points, in 2 Ways (forward/backward).
3463
3464             Parameters:
3465                 theBase Base shape to be extruded.
3466                 thePoint1 First end of extrusion vector.
3467                 thePoint2 Second end of extrusion vector.
3468                 theName Object name; when specified, this parameter is used
3469                         for result publication in the study. Otherwise, if automatic
3470                         publication is switched on, default value is used for result name.
3471
3472             Returns:
3473                 New GEOM.GEOM_Object, containing the created prism.
3474             """
3475             # Example: see GEOM_TestAll.py
3476             anObj = self.PrimOp.MakePrismTwoPnt2Ways(theBase, thePoint1, thePoint2)
3477             RaiseIfFailed("MakePrismTwoPnt", self.PrimOp)
3478             self._autoPublish(anObj, theName, "prism")
3479             return anObj
3480
3481         ## Create a shape by extrusion of the base shape along the vector,
3482         #  i.e. all the space, transfixed by the base shape during its translation
3483         #  along the vector on the given distance.
3484         #  @param theBase Base shape to be extruded.
3485         #  @param theVec Direction of extrusion.
3486         #  @param theH Prism dimension along theVec.
3487         #  @param theScaleFactor Use it to make prism with scaled second base.
3488         #                        Negative value means not scaled second base.
3489         #  @param theName Object name; when specified, this parameter is used
3490         #         for result publication in the study. Otherwise, if automatic
3491         #         publication is switched on, default value is used for result name.
3492         #
3493         #  @return New GEOM.GEOM_Object, containing the created prism.
3494         #
3495         #  @ref tui_creation_prism "Example"
3496         @ManageTransactions("PrimOp")
3497         def MakePrismVecH(self, theBase, theVec, theH, theScaleFactor = -1.0, theName=None):
3498             """
3499             Create a shape by extrusion of the base shape along the vector,
3500             i.e. all the space, transfixed by the base shape during its translation
3501             along the vector on the given distance.
3502
3503             Parameters:
3504                 theBase Base shape to be extruded.
3505                 theVec Direction of extrusion.
3506                 theH Prism dimension along theVec.
3507                 theScaleFactor Use it to make prism with scaled second base.
3508                                Negative value means not scaled second base.
3509                 theName Object name; when specified, this parameter is used
3510                         for result publication in the study. Otherwise, if automatic
3511                         publication is switched on, default value is used for result name.
3512
3513             Returns:
3514                 New GEOM.GEOM_Object, containing the created prism.
3515             """
3516             # Example: see GEOM_TestAll.py
3517             anObj = None
3518             Parameters = ""
3519             if theScaleFactor > 0:
3520                 theH,theScaleFactor,Parameters = ParseParameters(theH,theScaleFactor)
3521                 anObj = self.PrimOp.MakePrismVecHWithScaling(theBase, theVec, theH, theScaleFactor)
3522             else:
3523                 theH,Parameters = ParseParameters(theH)
3524                 anObj = self.PrimOp.MakePrismVecH(theBase, theVec, theH)
3525             RaiseIfFailed("MakePrismVecH", self.PrimOp)
3526             anObj.SetParameters(Parameters)
3527             self._autoPublish(anObj, theName, "prism")
3528             return anObj
3529
3530         ## Create a shape by extrusion of the base shape along the vector,
3531         #  i.e. all the space, transfixed by the base shape during its translation
3532         #  along the vector on the given distance in 2 Ways (forward/backward).
3533         #  @param theBase Base shape to be extruded.
3534         #  @param theVec Direction of extrusion.
3535         #  @param theH Prism dimension along theVec in forward direction.
3536         #  @param theName Object name; when specified, this parameter is used
3537         #         for result publication in the study. Otherwise, if automatic
3538         #         publication is switched on, default value is used for result name.
3539         #
3540         #  @return New GEOM.GEOM_Object, containing the created prism.
3541         #
3542         #  @ref tui_creation_prism "Example"
3543         @ManageTransactions("PrimOp")
3544         def MakePrismVecH2Ways(self, theBase, theVec, theH, theName=None):
3545             """
3546             Create a shape by extrusion of the base shape along the vector,
3547             i.e. all the space, transfixed by the base shape during its translation
3548             along the vector on the given distance in 2 Ways (forward/backward).
3549
3550             Parameters:
3551                 theBase Base shape to be extruded.
3552                 theVec Direction of extrusion.
3553                 theH Prism dimension along theVec in forward direction.
3554                 theName Object name; when specified, this parameter is used
3555                         for result publication in the study. Otherwise, if automatic
3556                         publication is switched on, default value is used for result name.
3557
3558             Returns:
3559                 New GEOM.GEOM_Object, containing the created prism.
3560             """
3561             # Example: see GEOM_TestAll.py
3562             theH,Parameters = ParseParameters(theH)
3563             anObj = self.PrimOp.MakePrismVecH2Ways(theBase, theVec, theH)
3564             RaiseIfFailed("MakePrismVecH2Ways", self.PrimOp)
3565             anObj.SetParameters(Parameters)
3566             self._autoPublish(anObj, theName, "prism")
3567             return anObj
3568
3569         ## Create a shape by extrusion of the base shape along the dx, dy, dz direction
3570         #  @param theBase Base shape to be extruded.
3571         #  @param theDX, theDY, theDZ Directions of extrusion.
3572         #  @param theScaleFactor Use it to make prism with scaled second base.
3573         #                        Nagative value means not scaled second base.
3574         #  @param theName Object name; when specified, this parameter is used
3575         #         for result publication in the study. Otherwise, if automatic
3576         #         publication is switched on, default value is used for result name.
3577         #
3578         #  @return New GEOM.GEOM_Object, containing the created prism.
3579         #
3580         #  @ref tui_creation_prism "Example"
3581         @ManageTransactions("PrimOp")
3582         def MakePrismDXDYDZ(self, theBase, theDX, theDY, theDZ, theScaleFactor = -1.0, theName=None):
3583             """
3584             Create a shape by extrusion of the base shape along the dx, dy, dz direction
3585
3586             Parameters:
3587                 theBase Base shape to be extruded.
3588                 theDX, theDY, theDZ Directions of extrusion.
3589                 theScaleFactor Use it to make prism with scaled second base.
3590                                Nagative value means not scaled second base.
3591                 theName Object name; when specified, this parameter is used
3592                         for result publication in the study. Otherwise, if automatic
3593                         publication is switched on, default value is used for result name.
3594
3595             Returns:
3596                 New GEOM.GEOM_Object, containing the created prism.
3597             """
3598             # Example: see GEOM_TestAll.py
3599             anObj = None
3600             Parameters = ""
3601             if theScaleFactor > 0:
3602                 theDX,theDY,theDZ,theScaleFactor,Parameters = ParseParameters(theDX, theDY, theDZ, theScaleFactor)
3603                 anObj = self.PrimOp.MakePrismDXDYDZWithScaling(theBase, theDX, theDY, theDZ, theScaleFactor)
3604             else:
3605                 theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
3606                 anObj = self.PrimOp.MakePrismDXDYDZ(theBase, theDX, theDY, theDZ)
3607             RaiseIfFailed("MakePrismDXDYDZ", self.PrimOp)
3608             anObj.SetParameters(Parameters)
3609             self._autoPublish(anObj, theName, "prism")
3610             return anObj
3611
3612         ## Create a shape by extrusion of the base shape along the dx, dy, dz direction
3613         #  i.e. all the space, transfixed by the base shape during its translation
3614         #  along the vector on the given distance in 2 Ways (forward/backward).
3615         #  @param theBase Base shape to be extruded.
3616         #  @param theDX, theDY, theDZ Directions of extrusion.
3617         #  @param theName Object name; when specified, this parameter is used
3618         #         for result publication in the study. Otherwise, if automatic
3619         #         publication is switched on, default value is used for result name.
3620         #
3621         #  @return New GEOM.GEOM_Object, containing the created prism.
3622         #
3623         #  @ref tui_creation_prism "Example"
3624         @ManageTransactions("PrimOp")
3625         def MakePrismDXDYDZ2Ways(self, theBase, theDX, theDY, theDZ, theName=None):
3626             """
3627             Create a shape by extrusion of the base shape along the dx, dy, dz direction
3628             i.e. all the space, transfixed by the base shape during its translation
3629             along the vector on the given distance in 2 Ways (forward/backward).
3630
3631             Parameters:
3632                 theBase Base shape to be extruded.
3633                 theDX, theDY, theDZ Directions of extrusion.
3634                 theName Object name; when specified, this parameter is used
3635                         for result publication in the study. Otherwise, if automatic
3636                         publication is switched on, default value is used for result name.
3637
3638             Returns:
3639                 New GEOM.GEOM_Object, containing the created prism.
3640             """
3641             # Example: see GEOM_TestAll.py
3642             theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
3643             anObj = self.PrimOp.MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ)
3644             RaiseIfFailed("MakePrismDXDYDZ2Ways", self.PrimOp)
3645             anObj.SetParameters(Parameters)
3646             self._autoPublish(anObj, theName, "prism")
3647             return anObj
3648
3649         ## Create a shape by revolution of the base shape around the axis
3650         #  on the given angle, i.e. all the space, transfixed by the base
3651         #  shape during its rotation around the axis on the given angle.
3652         #  @param theBase Base shape to be rotated.
3653         #  @param theAxis Rotation axis.
3654         #  @param theAngle Rotation angle in radians.
3655         #  @param theName Object name; when specified, this parameter is used
3656         #         for result publication in the study. Otherwise, if automatic
3657         #         publication is switched on, default value is used for result name.
3658         #
3659         #  @return New GEOM.GEOM_Object, containing the created revolution.
3660         #
3661         #  @ref tui_creation_revolution "Example"
3662         @ManageTransactions("PrimOp")
3663         def MakeRevolution(self, theBase, theAxis, theAngle, theName=None):
3664             """
3665             Create a shape by revolution of the base shape around the axis
3666             on the given angle, i.e. all the space, transfixed by the base
3667             shape during its rotation around the axis on the given angle.
3668
3669             Parameters:
3670                 theBase Base shape to be rotated.
3671                 theAxis Rotation axis.
3672                 theAngle Rotation angle in radians.
3673                 theName Object name; when specified, this parameter is used
3674                         for result publication in the study. Otherwise, if automatic
3675                         publication is switched on, default value is used for result name.
3676
3677             Returns:
3678                 New GEOM.GEOM_Object, containing the created revolution.
3679             """
3680             # Example: see GEOM_TestAll.py
3681             theAngle,Parameters = ParseParameters(theAngle)
3682             anObj = self.PrimOp.MakeRevolutionAxisAngle(theBase, theAxis, theAngle)
3683             RaiseIfFailed("MakeRevolutionAxisAngle", self.PrimOp)
3684             anObj.SetParameters(Parameters)
3685             self._autoPublish(anObj, theName, "revolution")
3686             return anObj
3687
3688         ## Create a shape by revolution of the base shape around the axis
3689         #  on the given angle, i.e. all the space, transfixed by the base
3690         #  shape during its rotation around the axis on the given angle in
3691         #  both directions (forward/backward)
3692         #  @param theBase Base shape to be rotated.
3693         #  @param theAxis Rotation axis.
3694         #  @param theAngle Rotation angle in radians.
3695         #  @param theName Object name; when specified, this parameter is used
3696         #         for result publication in the study. Otherwise, if automatic
3697         #         publication is switched on, default value is used for result name.
3698         #
3699         #  @return New GEOM.GEOM_Object, containing the created revolution.
3700         #
3701         #  @ref tui_creation_revolution "Example"
3702         @ManageTransactions("PrimOp")
3703         def MakeRevolution2Ways(self, theBase, theAxis, theAngle, theName=None):
3704             """
3705             Create a shape by revolution of the base shape around the axis
3706             on the given angle, i.e. all the space, transfixed by the base
3707             shape during its rotation around the axis on the given angle in
3708             both directions (forward/backward).
3709
3710             Parameters:
3711                 theBase Base shape to be rotated.
3712                 theAxis Rotation axis.
3713                 theAngle Rotation angle in radians.
3714                 theName Object name; when specified, this parameter is used
3715                         for result publication in the study. Otherwise, if automatic
3716                         publication is switched on, default value is used for result name.
3717
3718             Returns:
3719                 New GEOM.GEOM_Object, containing the created revolution.
3720             """
3721             theAngle,Parameters = ParseParameters(theAngle)
3722             anObj = self.PrimOp.MakeRevolutionAxisAngle2Ways(theBase, theAxis, theAngle)
3723             RaiseIfFailed("MakeRevolutionAxisAngle2Ways", self.PrimOp)
3724             anObj.SetParameters(Parameters)
3725             self._autoPublish(anObj, theName, "revolution")
3726             return anObj
3727
3728         ## Create a face from a given set of contours.
3729         #  @param theContours either a list or a compound of edges/wires.
3730         #  @param theMinDeg a minimal degree of BSpline surface to create.
3731         #  @param theMaxDeg a maximal degree of BSpline surface to create.
3732         #  @param theTol2D a 2d tolerance to be reached.
3733         #  @param theTol3D a 3d tolerance to be reached.
3734         #  @param theNbIter a number of iteration of approximation algorithm.
3735         #  @param theMethod Kind of method to perform filling operation
3736         #         (see GEOM.filling_oper_method enum).
3737         #  @param isApprox if True, BSpline curves are generated in the process
3738         #                  of surface construction. By default it is False, that means
3739         #                  the surface is created using given curves. The usage of
3740         #                  Approximation makes the algorithm work slower, but allows
3741         #                  building the surface for rather complex cases.
3742         #  @param theName Object name; when specified, this parameter is used
3743         #         for result publication in the study. Otherwise, if automatic
3744         #         publication is switched on, default value is used for result name.
3745         #
3746         #  @return New GEOM.GEOM_Object (face), containing the created filling surface.
3747         #
3748         #  @ref tui_creation_filling "Example"
3749         @ManageTransactions("PrimOp")
3750         def MakeFilling(self, theContours, theMinDeg=2, theMaxDeg=5, theTol2D=0.0001,
3751                         theTol3D=0.0001, theNbIter=0, theMethod=GEOM.FOM_Default, isApprox=0, theName=None):
3752             """
3753             Create a face from a given set of contours.
3754
3755             Parameters:
3756                 theContours either a list or a compound of edges/wires.
3757                 theMinDeg a minimal degree of BSpline surface to create.
3758                 theMaxDeg a maximal degree of BSpline surface to create.
3759                 theTol2D a 2d tolerance to be reached.
3760                 theTol3D a 3d tolerance to be reached.
3761                 theNbIter a number of iteration of approximation algorithm.
3762                 theMethod Kind of method to perform filling operation
3763                           (see GEOM.filling_oper_method enum).
3764                 isApprox if True, BSpline curves are generated in the process
3765                          of surface construction. By default it is False, that means
3766                          the surface is created using given curves. The usage of
3767                          Approximation makes the algorithm work slower, but allows
3768                          building the surface for rather complex cases.
3769                 theName Object name; when specified, this parameter is used
3770                         for result publication in the study. Otherwise, if automatic
3771                         publication is switched on, default value is used for result name.
3772
3773             Returns:
3774                 New GEOM.GEOM_Object (face), containing the created filling surface.
3775
3776             Example of usage:
3777                 filling = geompy.MakeFilling(compound, 2, 5, 0.0001, 0.0001, 5)
3778             """
3779             # Example: see GEOM_TestAll.py
3780             theMinDeg,theMaxDeg,theTol2D,theTol3D,theNbIter,Parameters = ParseParameters(theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter)
3781             anObj = self.PrimOp.MakeFilling(ToList(theContours), theMinDeg, theMaxDeg,
3782                                             theTol2D, theTol3D, theNbIter,
3783                                             theMethod, isApprox)
3784             RaiseIfFailed("MakeFilling", self.PrimOp)
3785             anObj.SetParameters(Parameters)
3786             self._autoPublish(anObj, theName, "filling")
3787             return anObj
3788
3789
3790         ## Create a face from a given set of contours.
3791         #  This method corresponds to MakeFilling() with isApprox=True.
3792         #  @param theContours either a list or a compound of edges/wires.
3793         #  @param theMinDeg a minimal degree of BSpline surface to create.
3794         #  @param theMaxDeg a maximal degree of BSpline surface to create.
3795         #  @param theTol3D a 3d tolerance to be reached.
3796         #  @param theName Object name; when specified, this parameter is used
3797         #         for result publication in the study. Otherwise, if automatic
3798         #         publication is switched on, default value is used for result name.
3799         #
3800         #  @return New GEOM.GEOM_Object (face), containing the created filling surface.
3801         #
3802         #  @ref tui_creation_filling "Example"
3803         @ManageTransactions("PrimOp")
3804         def MakeFillingNew(self, theContours, theMinDeg=2, theMaxDeg=5, theTol3D=0.0001, theName=None):
3805             """
3806             Create a filling from the given compound of contours.
3807             This method corresponds to MakeFilling() with isApprox=True.
3808
3809             Parameters:
3810                 theContours either a list or a compound of edges/wires.
3811                 theMinDeg a minimal degree of BSpline surface to create.
3812                 theMaxDeg a maximal degree of BSpline surface to create.
3813                 theTol3D a 3d tolerance to be reached.
3814                 theName Object name; when specified, this parameter is used
3815                         for result publication in the study. Otherwise, if automatic
3816                         publication is switched on, default value is used for result name.
3817
3818             Returns:
3819                 New GEOM.GEOM_Object (face), containing the created filling surface.
3820
3821             Example of usage:
3822                 filling = geompy.MakeFillingNew(compound, 2, 5, 0.0001)
3823             """
3824             # Example: see GEOM_TestAll.py
3825             theMinDeg,theMaxDeg,theTol3D,Parameters = ParseParameters(theMinDeg, theMaxDeg, theTol3D)
3826             anObj = self.PrimOp.MakeFilling(theContours, theMinDeg, theMaxDeg,
3827                                             0, theTol3D, 0, GEOM.FOM_Default, True)
3828             RaiseIfFailed("MakeFillingNew", self.PrimOp)
3829             anObj.SetParameters(Parameters)
3830             self._autoPublish(anObj, theName, "filling")
3831             return anObj
3832
3833         ## Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
3834         #  @param theSeqSections - set of specified sections.
3835         #  @param theModeSolid - mode defining building solid or shell
3836         #  @param thePreci - precision 3D used for smoothing
3837         #  @param theRuled - mode defining type of the result surfaces (ruled or smoothed).
3838         #  @param theName Object name; when specified, this parameter is used
3839         #         for result publication in the study. Otherwise, if automatic
3840         #         publication is switched on, default value is used for result name.
3841         #
3842         #  @return New GEOM.GEOM_Object, containing the created shell or solid.
3843         #
3844         #  @ref swig_todo "Example"
3845         @ManageTransactions("PrimOp")
3846         def MakeThruSections(self, theSeqSections, theModeSolid, thePreci, theRuled, theName=None):
3847             """
3848             Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
3849
3850             Parameters:
3851                 theSeqSections - set of specified sections.
3852                 theModeSolid - mode defining building solid or shell
3853                 thePreci - precision 3D used for smoothing
3854                 theRuled - mode defining type of the result surfaces (ruled or smoothed).
3855                 theName Object name; when specified, this parameter is used
3856                         for result publication in the study. Otherwise, if automatic
3857                         publication is switched on, default value is used for result name.
3858
3859             Returns:
3860                 New GEOM.GEOM_Object, containing the created shell or solid.
3861             """
3862             # Example: see GEOM_TestAll.py
3863             anObj = self.PrimOp.MakeThruSections(theSeqSections,theModeSolid,thePreci,theRuled)
3864             RaiseIfFailed("MakeThruSections", self.PrimOp)
3865             self._autoPublish(anObj, theName, "filling")
3866             return anObj
3867
3868         ## Create a shape by extrusion of the base shape along
3869         #  the path shape. The path shape can be a wire or an edge.
3870         #  @param theBase Base shape to be extruded.
3871         #  @param thePath Path shape to extrude the base shape along it.
3872         #  @param theName Object name; when specified, this parameter is used
3873         #         for result publication in the study. Otherwise, if automatic
3874         #         publication is switched on, default value is used for result name.
3875         #
3876         #  @return New GEOM.GEOM_Object, containing the created pipe.
3877         #
3878         #  @ref tui_creation_pipe "Example"
3879         @ManageTransactions("PrimOp")
3880         def MakePipe(self, theBase, thePath, theName=None):
3881             """
3882             Create a shape by extrusion of the base shape along
3883             the path shape. The path shape can be a wire or an edge.
3884
3885             Parameters:
3886                 theBase Base shape to be extruded.
3887                 thePath Path shape to extrude the base shape along it.
3888                 theName Object name; when specified, this parameter is used
3889                         for result publication in the study. Otherwise, if automatic
3890                         publication is switched on, default value is used for result name.
3891
3892             Returns:
3893                 New GEOM.GEOM_Object, containing the created pipe.
3894             """
3895             # Example: see GEOM_TestAll.py
3896             anObj = self.PrimOp.MakePipe(theBase, thePath)
3897             RaiseIfFailed("MakePipe", self.PrimOp)
3898             self._autoPublish(anObj, theName, "pipe")
3899             return anObj
3900
3901         ## Create a shape by extrusion of the profile shape along
3902         #  the path shape. The path shape can be a wire or an edge.
3903         #  the several profiles can be specified in the several locations of path.
3904         #  @param theSeqBases - list of  Bases shape to be extruded.
3905         #  @param theLocations - list of locations on the path corresponding
3906         #                        specified list of the Bases shapes. Number of locations
3907         #                        should be equal to number of bases or list of locations can be empty.
3908         #  @param thePath - Path shape to extrude the base shape along it.
3909         #  @param theWithContact - the mode defining that the section is translated to be in
3910         #                          contact with the spine.
3911         #  @param theWithCorrection - defining that the section is rotated to be
3912         #                             orthogonal to the spine tangent in the correspondent point
3913         #  @param theName Object name; when specified, this parameter is used
3914         #         for result publication in the study. Otherwise, if automatic
3915         #         publication is switched on, default value is used for result name.
3916         #
3917         #  @return New GEOM.GEOM_Object, containing the created pipe.
3918         #
3919         #  @ref tui_creation_pipe_with_diff_sec "Example"
3920         @ManageTransactions("PrimOp")
3921         def MakePipeWithDifferentSections(self, theSeqBases,
3922                                           theLocations, thePath,
3923                                           theWithContact, theWithCorrection, theName=None):
3924             """
3925             Create a shape by extrusion of the profile shape along
3926             the path shape. The path shape can be a wire or an edge.
3927             the several profiles can be specified in the several locations of path.
3928
3929             Parameters:
3930                 theSeqBases - list of  Bases shape to be extruded.
3931                 theLocations - list of locations on the path corresponding
3932                                specified list of the Bases shapes. Number of locations
3933                                should be equal to number of bases or list of locations can be empty.
3934                 thePath - Path shape to extrude the base shape along it.
3935                 theWithContact - the mode defining that the section is translated to be in
3936                                  contact with the spine(0/1)
3937                 theWithCorrection - defining that the section is rotated to be
3938                                     orthogonal to the spine tangent in the correspondent point (0/1)
3939                 theName Object name; when specified, this parameter is used
3940                         for result publication in the study. Otherwise, if automatic
3941                         publication is switched on, default value is used for result name.
3942
3943             Returns:
3944                 New GEOM.GEOM_Object, containing the created pipe.
3945             """
3946             anObj = self.PrimOp.MakePipeWithDifferentSections(theSeqBases,
3947                                                               theLocations, thePath,
3948                                                               theWithContact, theWithCorrection)
3949             RaiseIfFailed("MakePipeWithDifferentSections", self.PrimOp)
3950             self._autoPublish(anObj, theName, "pipe")
3951             return anObj
3952
3953         ## Create a shape by extrusion of the profile shape along
3954         #  the path shape. The path shape can be a wire or a edge.
3955         #  the several profiles can be specified in the several locations of path.
3956         #  @param theSeqBases - list of  Bases shape to be extruded. Base shape must be
3957         #                       shell or face. If number of faces in neighbour sections
3958         #                       aren't coincided result solid between such sections will
3959         #                       be created using external boundaries of this shells.
3960         #  @param theSeqSubBases - list of corresponding sub-shapes of section shapes.
3961         #                          This list is used for searching correspondences between
3962         #                          faces in the sections. Size of this list must be equal
3963         #                          to size of list of base shapes.
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. First and last
3967         #                        locations must be coincided with first and last vertexes
3968         #                        of path correspondingly.
3969         #  @param thePath - Path shape to extrude the base shape along it.
3970         #  @param theWithContact - the mode defining that the section is translated to be in
3971         #                          contact with the spine.
3972         #  @param theWithCorrection - defining that the section is rotated to be
3973         #                             orthogonal to the spine tangent in the correspondent point
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 solids.
3979         #
3980         #  @ref tui_creation_pipe_with_shell_sec "Example"
3981         @ManageTransactions("PrimOp")
3982         def MakePipeWithShellSections(self, theSeqBases, theSeqSubBases,
3983                                       theLocations, thePath,
3984                                       theWithContact, theWithCorrection, theName=None):
3985             """
3986             Create a shape by extrusion of the profile shape along
3987             the path shape. The path shape can be a wire or a edge.
3988             the several profiles can be specified in the several locations of path.
3989
3990             Parameters:
3991                 theSeqBases - list of  Bases shape to be extruded. Base shape must be
3992                               shell or face. If number of faces in neighbour sections
3993                               aren't coincided result solid between such sections will
3994                               be created using external boundaries of this shells.
3995                 theSeqSubBases - list of corresponding sub-shapes of section shapes.
3996                                  This list is used for searching correspondences between
3997                                  faces in the sections. Size of this list must be equal
3998                                  to size of list of base shapes.
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. First and last
4002                                locations must be coincided with first and last vertexes
4003                                of path correspondingly.
4004                 thePath - Path shape to extrude the base shape along it.
4005                 theWithContact - the mode defining that the section is translated to be in
4006                                  contact with the spine (0/1)
4007                 theWithCorrection - defining that the section is rotated to be
4008                                     orthogonal to the spine tangent in the correspondent point (0/1)
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 solids.
4015             """
4016             anObj = self.PrimOp.MakePipeWithShellSections(theSeqBases, theSeqSubBases,
4017                                                           theLocations, thePath,
4018                                                           theWithContact, theWithCorrection)
4019             RaiseIfFailed("MakePipeWithShellSections", self.PrimOp)
4020             self._autoPublish(anObj, theName, "pipe")
4021             return anObj
4022
4023         ## Create a shape by extrusion of the profile shape along
4024         #  the path shape. This function is used only for debug pipe
4025         #  functionality - it is a version of function MakePipeWithShellSections()
4026         #  which give a possibility to recieve information about
4027         #  creating pipe between each pair of sections step by step.
4028         @ManageTransactions("PrimOp")
4029         def MakePipeWithShellSectionsBySteps(self, theSeqBases, theSeqSubBases,
4030                                              theLocations, thePath,
4031                                              theWithContact, theWithCorrection, theName=None):
4032             """
4033             Create a shape by extrusion of the profile shape along
4034             the path shape. This function is used only for debug pipe
4035             functionality - it is a version of previous function
4036             geompy.MakePipeWithShellSections() which give a possibility to
4037             recieve information about creating pipe between each pair of
4038             sections step by step.
4039             """
4040             res = []
4041             nbsect = len(theSeqBases)
4042             nbsubsect = len(theSeqSubBases)
4043             #print "nbsect = ",nbsect
4044             for i in range(1,nbsect):
4045                 #print "  i = ",i
4046                 tmpSeqBases = [ theSeqBases[i-1], theSeqBases[i] ]
4047                 tmpLocations = [ theLocations[i-1], theLocations[i] ]
4048                 tmpSeqSubBases = []
4049                 if nbsubsect>0: tmpSeqSubBases = [ theSeqSubBases[i-1], theSeqSubBases[i] ]
4050                 anObj = self.PrimOp.MakePipeWithShellSections(tmpSeqBases, tmpSeqSubBases,
4051                                                               tmpLocations, thePath,
4052                                                               theWithContact, theWithCorrection)
4053                 if self.PrimOp.IsDone() == 0:
4054                     print "Problems with pipe creation between ",i," and ",i+1," sections"
4055                     RaiseIfFailed("MakePipeWithShellSections", self.PrimOp)
4056                     break
4057                 else:
4058                     print "Pipe between ",i," and ",i+1," sections is OK"
4059                     res.append(anObj)
4060                     pass
4061                 pass
4062
4063             resc = self.MakeCompound(res)
4064             #resc = self.MakeSewing(res, 0.001)
4065             #print "resc: ",resc
4066             self._autoPublish(resc, theName, "pipe")
4067             return resc
4068
4069         ## Create solids between given sections
4070         #  @param theSeqBases - list of sections (shell or face).
4071         #  @param theLocations - list of corresponding vertexes
4072         #  @param theName Object name; when specified, this parameter is used
4073         #         for result publication in the study. Otherwise, if automatic
4074         #         publication is switched on, default value is used for result name.
4075         #
4076         #  @return New GEOM.GEOM_Object, containing the created solids.
4077         #
4078         #  @ref tui_creation_pipe_without_path "Example"
4079         @ManageTransactions("PrimOp")
4080         def MakePipeShellsWithoutPath(self, theSeqBases, theLocations, theName=None):
4081             """
4082             Create solids between given sections
4083
4084             Parameters:
4085                 theSeqBases - list of sections (shell or face).
4086                 theLocations - list of corresponding vertexes
4087                 theName Object name; when specified, this parameter is used
4088                         for result publication in the study. Otherwise, if automatic
4089                         publication is switched on, default value is used for result name.
4090
4091             Returns:
4092                 New GEOM.GEOM_Object, containing the created solids.
4093             """
4094             anObj = self.PrimOp.MakePipeShellsWithoutPath(theSeqBases, theLocations)
4095             RaiseIfFailed("MakePipeShellsWithoutPath", self.PrimOp)
4096             self._autoPublish(anObj, theName, "pipe")
4097             return anObj
4098
4099         ## Create a shape by extrusion of the base shape along
4100         #  the path shape with constant bi-normal direction along the given vector.
4101         #  The path shape can be a wire or an edge.
4102         #  @param theBase Base shape to be extruded.
4103         #  @param thePath Path shape to extrude the base shape along it.
4104         #  @param theVec Vector defines a constant binormal direction to keep the
4105         #                same angle beetween the direction and the sections
4106         #                along the sweep surface.
4107         #  @param theName Object name; when specified, this parameter is used
4108         #         for result publication in the study. Otherwise, if automatic
4109         #         publication is switched on, default value is used for result name.
4110         #
4111         #  @return New GEOM.GEOM_Object, containing the created pipe.
4112         #
4113         #  @ref tui_creation_pipe "Example"
4114         @ManageTransactions("PrimOp")
4115         def MakePipeBiNormalAlongVector(self, theBase, thePath, theVec, theName=None):
4116             """
4117             Create a shape by extrusion of the base shape along
4118             the path shape with constant bi-normal direction along the given vector.
4119             The path shape can be a wire or an edge.
4120
4121             Parameters:
4122                 theBase Base shape to be extruded.
4123                 thePath Path shape to extrude the base shape along it.
4124                 theVec Vector defines a constant binormal direction to keep the
4125                        same angle beetween the direction and the sections
4126                        along the sweep surface.
4127                 theName Object name; when specified, this parameter is used
4128                         for result publication in the study. Otherwise, if automatic
4129                         publication is switched on, default value is used for result name.
4130
4131             Returns:
4132                 New GEOM.GEOM_Object, containing the created pipe.
4133             """
4134             # Example: see GEOM_TestAll.py
4135             anObj = self.PrimOp.MakePipeBiNormalAlongVector(theBase, thePath, theVec)
4136             RaiseIfFailed("MakePipeBiNormalAlongVector", self.PrimOp)
4137             self._autoPublish(anObj, theName, "pipe")
4138             return anObj
4139
4140         ## Makes a thick solid from a face or a shell
4141         #  @param theShape Face or Shell to be thicken
4142         #  @param theThickness Thickness of the resulting solid
4143         #  @param theName Object name; when specified, this parameter is used
4144         #         for result publication in the study. Otherwise, if automatic
4145         #         publication is switched on, default value is used for result name.
4146         #
4147         #  @return New GEOM.GEOM_Object, containing the created solid
4148         #
4149         @ManageTransactions("PrimOp")
4150         def MakeThickSolid(self, theShape, theThickness, theName=None):
4151             """
4152             Make a thick solid from a face or a shell
4153
4154             Parameters:
4155                  theShape Face or Shell to be thicken
4156                  theThickness Thickness of the resulting solid
4157                  theName Object name; when specified, this parameter is used
4158                  for result publication in the study. Otherwise, if automatic
4159                  publication is switched on, default value is used for result name.
4160
4161             Returns:
4162                 New GEOM.GEOM_Object, containing the created solid
4163             """
4164             # Example: see GEOM_TestAll.py
4165             anObj = self.PrimOp.MakeThickening(theShape, theThickness, True)
4166             RaiseIfFailed("MakeThickening", self.PrimOp)
4167             self._autoPublish(anObj, theName, "pipe")
4168             return anObj
4169
4170
4171         ## Modifies a face or a shell to make it a thick solid
4172         #  @param theShape Face or Shell to be thicken
4173         #  @param theThickness Thickness of the resulting solid
4174         #
4175         #  @return The modified shape
4176         #
4177         @ManageTransactions("PrimOp")
4178         def Thicken(self, theShape, theThickness):
4179             """
4180             Modifies a face or a shell to make it a thick solid
4181
4182             Parameters:
4183                 theBase Base shape to be extruded.
4184                 thePath Path shape to extrude the base shape along it.
4185                 theName Object name; when specified, this parameter is used
4186                         for result publication in the study. Otherwise, if automatic
4187                         publication is switched on, default value is used for result name.
4188
4189             Returns:
4190                 The modified shape
4191             """
4192             # Example: see GEOM_TestAll.py
4193             anObj = self.PrimOp.MakeThickening(theShape, theThickness, False)
4194             RaiseIfFailed("MakeThickening", self.PrimOp)
4195             return anObj
4196
4197         ## Build a middle path of a pipe-like shape.
4198         #  The path shape can be a wire or an edge.
4199         #  @param theShape It can be closed or unclosed pipe-like shell
4200         #                  or a pipe-like solid.
4201         #  @param theBase1, theBase2 Two bases of the supposed pipe. This
4202         #                            should be wires or faces of theShape.
4203         #  @param theName Object name; when specified, this parameter is used
4204         #         for result publication in the study. Otherwise, if automatic
4205         #         publication is switched on, default value is used for result name.
4206         #
4207         #  @note It is not assumed that exact or approximate copy of theShape
4208         #        can be obtained by applying existing Pipe operation on the
4209         #        resulting "Path" wire taking theBase1 as the base - it is not
4210         #        always possible; though in some particular cases it might work
4211         #        it is not guaranteed. Thus, RestorePath function should not be
4212         #        considered as an exact reverse operation of the Pipe.
4213         #
4214         #  @return New GEOM.GEOM_Object, containing an edge or wire that represent
4215         #                                source pipe's "path".
4216         #
4217         #  @ref tui_creation_pipe_path "Example"
4218         @ManageTransactions("PrimOp")
4219         def RestorePath (self, theShape, theBase1, theBase2, theName=None):
4220             """
4221             Build a middle path of a pipe-like shape.
4222             The path shape can be a wire or an edge.
4223
4224             Parameters:
4225                 theShape It can be closed or unclosed pipe-like shell
4226                          or a pipe-like solid.
4227                 theBase1, theBase2 Two bases of the supposed pipe. This
4228                                    should be wires or faces of theShape.
4229                 theName Object name; when specified, this parameter is used
4230                         for result publication in the study. Otherwise, if automatic
4231                         publication is switched on, default value is used for result name.
4232
4233             Returns:
4234                 New GEOM_Object, containing an edge or wire that represent
4235                                  source pipe's path.
4236             """
4237             anObj = self.PrimOp.RestorePath(theShape, theBase1, theBase2)
4238             RaiseIfFailed("RestorePath", self.PrimOp)
4239             self._autoPublish(anObj, theName, "path")
4240             return anObj
4241
4242         ## Build a middle path of a pipe-like shape.
4243         #  The path shape can be a wire or an edge.
4244         #  @param theShape It can be closed or unclosed pipe-like shell
4245         #                  or a pipe-like solid.
4246         #  @param listEdges1, listEdges2 Two bases of the supposed pipe. This
4247         #                                should be lists of edges of theShape.
4248         #  @param theName Object name; when specified, this parameter is used
4249         #         for result publication in the study. Otherwise, if automatic
4250         #         publication is switched on, default value is used for result name.
4251         #
4252         #  @note It is not assumed that exact or approximate copy of theShape
4253         #        can be obtained by applying existing Pipe operation on the
4254         #        resulting "Path" wire taking theBase1 as the base - it is not
4255         #        always possible; though in some particular cases it might work
4256         #        it is not guaranteed. Thus, RestorePath function should not be
4257         #        considered as an exact reverse operation of the Pipe.
4258         #
4259         #  @return New GEOM.GEOM_Object, containing an edge or wire that represent
4260         #                                source pipe's "path".
4261         #
4262         #  @ref tui_creation_pipe_path "Example"
4263         @ManageTransactions("PrimOp")
4264         def RestorePathEdges (self, theShape, listEdges1, listEdges2, theName=None):
4265             """
4266             Build a middle path of a pipe-like shape.
4267             The path shape can be a wire or an edge.
4268
4269             Parameters:
4270                 theShape It can be closed or unclosed pipe-like shell
4271                          or a pipe-like solid.
4272                 listEdges1, listEdges2 Two bases of the supposed pipe. This
4273                                        should be lists of edges of theShape.
4274                 theName Object name; when specified, this parameter is used
4275                         for result publication in the study. Otherwise, if automatic
4276                         publication is switched on, default value is used for result name.
4277
4278             Returns:
4279                 New GEOM_Object, containing an edge or wire that represent
4280                                  source pipe's path.
4281             """
4282             anObj = self.PrimOp.RestorePathEdges(theShape, listEdges1, listEdges2)
4283             RaiseIfFailed("RestorePath", self.PrimOp)
4284             self._autoPublish(anObj, theName, "path")
4285             return anObj
4286
4287         # end of l3_complex
4288         ## @}
4289
4290         ## @addtogroup l3_advanced
4291         ## @{
4292
4293         ## Create a linear edge with specified ends.
4294         #  @param thePnt1 Point for the first end of edge.
4295         #  @param thePnt2 Point for the second end of edge.
4296         #  @param theName Object name; when specified, this parameter is used
4297         #         for result publication in the study. Otherwise, if automatic
4298         #         publication is switched on, default value is used for result name.
4299         #
4300         #  @return New GEOM.GEOM_Object, containing the created edge.
4301         #
4302         #  @ref tui_creation_edge "Example"
4303         @ManageTransactions("ShapesOp")
4304         def MakeEdge(self, thePnt1, thePnt2, theName=None):
4305             """
4306             Create a linear edge with specified ends.
4307
4308             Parameters:
4309                 thePnt1 Point for the first end of edge.
4310                 thePnt2 Point for the second end of edge.
4311                 theName Object name; when specified, this parameter is used
4312                         for result publication in the study. Otherwise, if automatic
4313                         publication is switched on, default value is used for result name.
4314
4315             Returns:
4316                 New GEOM.GEOM_Object, containing the created edge.
4317             """
4318             # Example: see GEOM_TestAll.py
4319             anObj = self.ShapesOp.MakeEdge(thePnt1, thePnt2)
4320             RaiseIfFailed("MakeEdge", self.ShapesOp)
4321             self._autoPublish(anObj, theName, "edge")
4322             return anObj
4323
4324         ## Create a new edge, corresponding to the given length on the given curve.
4325         #  @param theRefCurve The referenced curve (edge).
4326         #  @param theLength Length on the referenced curve. It can be negative.
4327         #  @param theStartPoint Any point can be selected for it, the new edge will begin
4328         #                       at the end of \a theRefCurve, close to the selected point.
4329         #                       If None, start from the first point of \a theRefCurve.
4330         #  @param theName Object name; when specified, this parameter is used
4331         #         for result publication in the study. Otherwise, if automatic
4332         #         publication is switched on, default value is used for result name.
4333         #
4334         #  @return New GEOM.GEOM_Object, containing the created edge.
4335         #
4336         #  @ref tui_creation_edge "Example"
4337         @ManageTransactions("ShapesOp")
4338         def MakeEdgeOnCurveByLength(self, theRefCurve, theLength, theStartPoint = None, theName=None):
4339             """
4340             Create a new edge, corresponding to the given length on the given curve.
4341
4342             Parameters:
4343                 theRefCurve The referenced curve (edge).
4344                 theLength Length on the referenced curve. It can be negative.
4345                 theStartPoint Any point can be selected for it, the new edge will begin
4346                               at the end of theRefCurve, close to the selected point.
4347                               If None, start from the first point of theRefCurve.
4348                 theName Object name; when specified, this parameter is used
4349                         for result publication in the study. Otherwise, if automatic
4350                         publication is switched on, default value is used for result name.
4351
4352             Returns:
4353                 New GEOM.GEOM_Object, containing the created edge.
4354             """
4355             # Example: see GEOM_TestAll.py
4356             theLength, Parameters = ParseParameters(theLength)
4357             anObj = self.ShapesOp.MakeEdgeOnCurveByLength(theRefCurve, theLength, theStartPoint)
4358             RaiseIfFailed("MakeEdgeOnCurveByLength", self.ShapesOp)
4359             anObj.SetParameters(Parameters)
4360             self._autoPublish(anObj, theName, "edge")
4361             return anObj
4362
4363         ## Create an edge from specified wire.
4364         #  @param theWire source Wire
4365         #  @param theLinearTolerance linear tolerance value (default = 1e-07)
4366         #  @param theAngularTolerance angular tolerance value (default = 1e-12)
4367         #  @param theName Object name; when specified, this parameter is used
4368         #         for result publication in the study. Otherwise, if automatic
4369         #         publication is switched on, default value is used for result name.
4370         #
4371         #  @return New GEOM.GEOM_Object, containing the created edge.
4372         #
4373         #  @ref tui_creation_edge "Example"
4374         @ManageTransactions("ShapesOp")
4375         def MakeEdgeWire(self, theWire, theLinearTolerance = 1e-07, theAngularTolerance = 1e-12, theName=None):
4376             """
4377             Create an edge from specified wire.
4378
4379             Parameters:
4380                 theWire source Wire
4381                 theLinearTolerance linear tolerance value (default = 1e-07)
4382                 theAngularTolerance angular tolerance value (default = 1e-12)
4383                 theName Object name; when specified, this parameter is used
4384                         for result publication in the study. Otherwise, if automatic
4385                         publication is switched on, default value is used for result name.
4386
4387             Returns:
4388                 New GEOM.GEOM_Object, containing the created edge.
4389             """
4390             # Example: see GEOM_TestAll.py
4391             anObj = self.ShapesOp.MakeEdgeWire(theWire, theLinearTolerance, theAngularTolerance)
4392             RaiseIfFailed("MakeEdgeWire", self.ShapesOp)
4393             self._autoPublish(anObj, theName, "edge")
4394             return anObj
4395
4396         ## Create a wire from the set of edges and wires.
4397         #  @param theEdgesAndWires List of edges and/or wires.
4398         #  @param theTolerance Maximum distance between vertices, that will be merged.
4399         #                      Values less than 1e-07 are equivalent to 1e-07 (Precision::Confusion())
4400         #  @param theName Object name; when specified, this parameter is used
4401         #         for result publication in the study. Otherwise, if automatic
4402         #         publication is switched on, default value is used for result name.
4403         #
4404         #  @return New GEOM.GEOM_Object, containing the created wire.
4405         #
4406         #  @ref tui_creation_wire "Example"
4407         @ManageTransactions("ShapesOp")
4408         def MakeWire(self, theEdgesAndWires, theTolerance = 1e-07, theName=None):
4409             """
4410             Create a wire from the set of edges and wires.
4411
4412             Parameters:
4413                 theEdgesAndWires List of edges and/or wires.
4414                 theTolerance Maximum distance between vertices, that will be merged.
4415                              Values less than 1e-07 are equivalent to 1e-07 (Precision::Confusion()).
4416                 theName Object name; when specified, this parameter is used
4417                         for result publication in the study. Otherwise, if automatic
4418                         publication is switched on, default value is used for result name.
4419
4420             Returns:
4421                 New GEOM.GEOM_Object, containing the created wire.
4422             """
4423             # Example: see GEOM_TestAll.py
4424             anObj = self.ShapesOp.MakeWire(theEdgesAndWires, theTolerance)
4425             RaiseIfFailed("MakeWire", self.ShapesOp)
4426             self._autoPublish(anObj, theName, "wire")
4427             return anObj
4428
4429         ## Create a face on the given wire.
4430         #  @param theWire closed Wire or Edge to build the face on.
4431         #  @param isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4432         #                        If the tolerance of the obtained planar face is less
4433         #                        than 1e-06, this face will be returned, otherwise the
4434         #                        algorithm tries to build any suitable face on the given
4435         #                        wire and prints a warning message.
4436         #  @param theName Object name; when specified, this parameter is used
4437         #         for result publication in the study. Otherwise, if automatic
4438         #         publication is switched on, default value is used for result name.
4439         #
4440         #  @return New GEOM.GEOM_Object, containing the created face.
4441         #
4442         #  @ref tui_creation_face "Example"
4443         @ManageTransactions("ShapesOp")
4444         def MakeFace(self, theWire, isPlanarWanted, theName=None):
4445             """
4446             Create a face on the given wire.
4447
4448             Parameters:
4449                 theWire closed Wire or Edge to build the face on.
4450                 isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4451                                If the tolerance of the obtained planar face is less
4452                                than 1e-06, this face will be returned, otherwise the
4453                                algorithm tries to build any suitable face on the given
4454                                wire and prints a warning message.
4455                 theName Object name; when specified, this parameter is used
4456                         for result publication in the study. Otherwise, if automatic
4457                         publication is switched on, default value is used for result name.
4458
4459             Returns:
4460                 New GEOM.GEOM_Object, containing the created face.
4461             """
4462             # Example: see GEOM_TestAll.py
4463             anObj = self.ShapesOp.MakeFace(theWire, isPlanarWanted)
4464             if isPlanarWanted and anObj is not None and self.ShapesOp.GetErrorCode() == "MAKE_FACE_TOLERANCE_TOO_BIG":
4465                 print "WARNING: Cannot build a planar face: required tolerance is too big. Non-planar face is built."
4466             else:
4467                 RaiseIfFailed("MakeFace", self.ShapesOp)
4468             self._autoPublish(anObj, theName, "face")
4469             return anObj
4470
4471         ## Create a face on the given wires set.
4472         #  @param theWires List of closed wires or edges to build the face on.
4473         #  @param isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4474         #                        If the tolerance of the obtained planar face is less
4475         #                        than 1e-06, this face will be returned, otherwise the
4476         #                        algorithm tries to build any suitable face on the given
4477         #                        wire and prints a warning message.
4478         #  @param theName Object name; when specified, this parameter is used
4479         #         for result publication in the study. Otherwise, if automatic
4480         #         publication is switched on, default value is used for result name.
4481         #
4482         #  @return New GEOM.GEOM_Object, containing the created face.
4483         #
4484         #  @ref tui_creation_face "Example"
4485         @ManageTransactions("ShapesOp")
4486         def MakeFaceWires(self, theWires, isPlanarWanted, theName=None):
4487             """
4488             Create a face on the given wires set.
4489
4490             Parameters:
4491                 theWires List of closed wires or edges to build the face on.
4492                 isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4493                                If the tolerance of the obtained planar face is less
4494                                than 1e-06, this face will be returned, otherwise the
4495                                algorithm tries to build any suitable face on the given
4496                                wire and prints a warning message.
4497                 theName Object name; when specified, this parameter is used
4498                         for result publication in the study. Otherwise, if automatic
4499                         publication is switched on, default value is used for result name.
4500
4501             Returns:
4502                 New GEOM.GEOM_Object, containing the created face.
4503             """
4504             # Example: see GEOM_TestAll.py
4505             anObj = self.ShapesOp.MakeFaceWires(ToList(theWires), isPlanarWanted)
4506             if isPlanarWanted and anObj is not None and self.ShapesOp.GetErrorCode() == "MAKE_FACE_TOLERANCE_TOO_BIG":
4507                 print "WARNING: Cannot build a planar face: required tolerance is too big. Non-planar face is built."
4508             else:
4509                 RaiseIfFailed("MakeFaceWires", self.ShapesOp)
4510             self._autoPublish(anObj, theName, "face")
4511             return anObj
4512
4513         ## See MakeFaceWires() method for details.
4514         #
4515         #  @ref tui_creation_face "Example 1"
4516         #  \n @ref swig_MakeFaces  "Example 2"
4517         def MakeFaces(self, theWires, isPlanarWanted, theName=None):
4518             """
4519             See geompy.MakeFaceWires() method for details.
4520             """
4521             # Example: see GEOM_TestOthers.py
4522             # note: auto-publishing is done in self.MakeFaceWires()
4523             anObj = self.MakeFaceWires(theWires, isPlanarWanted, theName)
4524             return anObj
4525
4526         ## Create a face based on a surface from given face bounded
4527         #  by given wire.
4528         #  @param theFace the face whose surface is used to create a new face.
4529         #  @param theWire the wire that will bound a new face.
4530         #  @param theName Object name; when specified, this parameter is used
4531         #         for result publication in the study. Otherwise, if automatic
4532         #         publication is switched on, default value is used for result name.
4533         #
4534         #  @return New GEOM.GEOM_Object, containing the created face.
4535         #
4536         #  @ref tui_creation_face "Example"
4537         @ManageTransactions("ShapesOp")
4538         def MakeFaceFromSurface(self, theFace, theWire, theName=None):
4539             """
4540             Create a face based on a surface from given face bounded
4541             by given wire.
4542
4543             Parameters:
4544                 theFace the face whose surface is used to create a new face.
4545                 theWire the wire that will bound a new face.
4546                 theName Object name; when specified, this parameter is used
4547                         for result publication in the study. Otherwise, if automatic
4548                         publication is switched on, default value is used for result name.
4549
4550             Returns:
4551                 New GEOM.GEOM_Object, containing the created face.
4552             """
4553             # Example: see GEOM_TestAll.py
4554             anObj = self.ShapesOp.MakeFaceFromSurface(theFace, theWire)
4555             RaiseIfFailed("MakeFaceFromSurface", self.ShapesOp)
4556             self._autoPublish(anObj, theName, "face")
4557             return anObj
4558
4559         ## Create a shell from the set of faces and shells.
4560         #  @param theFacesAndShells List of faces and/or shells.
4561         #  @param theName Object name; when specified, this parameter is used
4562         #         for result publication in the study. Otherwise, if automatic
4563         #         publication is switched on, default value is used for result name.
4564         #
4565         #  @return New GEOM.GEOM_Object, containing the created shell.
4566         #
4567         #  @ref tui_creation_shell "Example"
4568         @ManageTransactions("ShapesOp")
4569         def MakeShell(self, theFacesAndShells, theName=None):
4570             """
4571             Create a shell from the set of faces and shells.
4572
4573             Parameters:
4574                 theFacesAndShells List of faces and/or shells.
4575                 theName Object name; when specified, this parameter is used
4576                         for result publication in the study. Otherwise, if automatic
4577                         publication is switched on, default value is used for result name.
4578
4579             Returns:
4580                 New GEOM.GEOM_Object, containing the created shell.
4581             """
4582             # Example: see GEOM_TestAll.py
4583             anObj = self.ShapesOp.MakeShell( ToList( theFacesAndShells ))
4584             RaiseIfFailed("MakeShell", self.ShapesOp)
4585             self._autoPublish(anObj, theName, "shell")
4586             return anObj
4587
4588         ## Create a solid, bounded by the given shells.
4589         #  @param theShells Sequence of bounding shells.
4590         #  @param theName Object name; when specified, this parameter is used
4591         #         for result publication in the study. Otherwise, if automatic
4592         #         publication is switched on, default value is used for result name.
4593         #
4594         #  @return New GEOM.GEOM_Object, containing the created solid.
4595         #
4596         #  @ref tui_creation_solid "Example"
4597         @ManageTransactions("ShapesOp")
4598         def MakeSolid(self, theShells, theName=None):
4599             """
4600             Create a solid, bounded by the given shells.
4601
4602             Parameters:
4603                 theShells Sequence of bounding shells.
4604                 theName Object name; when specified, this parameter is used
4605                         for result publication in the study. Otherwise, if automatic
4606                         publication is switched on, default value is used for result name.
4607
4608             Returns:
4609                 New GEOM.GEOM_Object, containing the created solid.
4610             """
4611             # Example: see GEOM_TestAll.py
4612             theShells = ToList(theShells)
4613             if len(theShells) == 1:
4614                 descr = self._IsGoodForSolid(theShells[0])
4615                 #if len(descr) > 0:
4616                 #    raise RuntimeError, "MakeSolidShells : " + descr
4617                 if descr == "WRN_SHAPE_UNCLOSED":
4618                     raise RuntimeError, "MakeSolidShells : Unable to create solid from unclosed shape"
4619             anObj = self.ShapesOp.MakeSolidShells(theShells)
4620             RaiseIfFailed("MakeSolidShells", self.ShapesOp)
4621             self._autoPublish(anObj, theName, "solid")
4622             return anObj
4623
4624         ## Create a compound of the given shapes.
4625         #  @param theShapes List of shapes to put in compound.
4626         #  @param theName Object name; when specified, this parameter is used
4627         #         for result publication in the study. Otherwise, if automatic
4628         #         publication is switched on, default value is used for result name.
4629         #
4630         #  @return New GEOM.GEOM_Object, containing the created compound.
4631         #
4632         #  @ref tui_creation_compound "Example"
4633         @ManageTransactions("ShapesOp")
4634         def MakeCompound(self, theShapes, theName=None):
4635             """
4636             Create a compound of the given shapes.
4637
4638             Parameters:
4639                 theShapes List of shapes to put in compound.
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 compound.
4646             """
4647             # Example: see GEOM_TestAll.py
4648             anObj = self.ShapesOp.MakeCompound(ToList(theShapes))
4649             RaiseIfFailed("MakeCompound", self.ShapesOp)
4650             self._autoPublish(anObj, theName, "compound")
4651             return anObj
4652
4653         # end of l3_advanced
4654         ## @}
4655
4656         ## @addtogroup l2_measure
4657         ## @{
4658
4659         ## Gives quantity of faces in the given shape.
4660         #  @param theShape Shape to count faces of.
4661         #  @return Quantity of faces.
4662         #
4663         #  @ref swig_NumberOf "Example"
4664         @ManageTransactions("ShapesOp")
4665         def NumberOfFaces(self, theShape):
4666             """
4667             Gives quantity of faces in the given shape.
4668
4669             Parameters:
4670                 theShape Shape to count faces of.
4671
4672             Returns:
4673                 Quantity of faces.
4674             """
4675             # Example: see GEOM_TestOthers.py
4676             nb_faces = self.ShapesOp.NumberOfFaces(theShape)
4677             RaiseIfFailed("NumberOfFaces", self.ShapesOp)
4678             return nb_faces
4679
4680         ## Gives quantity of edges in the given shape.
4681         #  @param theShape Shape to count edges of.
4682         #  @return Quantity of edges.
4683         #
4684         #  @ref swig_NumberOf "Example"
4685         @ManageTransactions("ShapesOp")
4686         def NumberOfEdges(self, theShape):
4687             """
4688             Gives quantity of edges in the given shape.
4689
4690             Parameters:
4691                 theShape Shape to count edges of.
4692
4693             Returns:
4694                 Quantity of edges.
4695             """
4696             # Example: see GEOM_TestOthers.py
4697             nb_edges = self.ShapesOp.NumberOfEdges(theShape)
4698             RaiseIfFailed("NumberOfEdges", self.ShapesOp)
4699             return nb_edges
4700
4701         ## Gives quantity of sub-shapes of type theShapeType in the given shape.
4702         #  @param theShape Shape to count sub-shapes of.
4703         #  @param theShapeType Type of sub-shapes to count (see ShapeType())
4704         #  @return Quantity of sub-shapes of given type.
4705         #
4706         #  @ref swig_NumberOf "Example"
4707         @ManageTransactions("ShapesOp")
4708         def NumberOfSubShapes(self, theShape, theShapeType):
4709             """
4710             Gives quantity of sub-shapes of type theShapeType in the given shape.
4711
4712             Parameters:
4713                 theShape Shape to count sub-shapes of.
4714                 theShapeType Type of sub-shapes to count (see geompy.ShapeType)
4715
4716             Returns:
4717                 Quantity of sub-shapes of given type.
4718             """
4719             # Example: see GEOM_TestOthers.py
4720             nb_ss = self.ShapesOp.NumberOfSubShapes(theShape, theShapeType)
4721             RaiseIfFailed("NumberOfSubShapes", self.ShapesOp)
4722             return nb_ss
4723
4724         ## Gives quantity of solids in the given shape.
4725         #  @param theShape Shape to count solids in.
4726         #  @return Quantity of solids.
4727         #
4728         #  @ref swig_NumberOf "Example"
4729         @ManageTransactions("ShapesOp")
4730         def NumberOfSolids(self, theShape):
4731             """
4732             Gives quantity of solids in the given shape.
4733
4734             Parameters:
4735                 theShape Shape to count solids in.
4736
4737             Returns:
4738                 Quantity of solids.
4739             """
4740             # Example: see GEOM_TestOthers.py
4741             nb_solids = self.ShapesOp.NumberOfSubShapes(theShape, self.ShapeType["SOLID"])
4742             RaiseIfFailed("NumberOfSolids", self.ShapesOp)
4743             return nb_solids
4744
4745         # end of l2_measure
4746         ## @}
4747
4748         ## @addtogroup l3_healing
4749         ## @{
4750
4751         ## Reverses an orientation the given shape.
4752         #  @param theShape Shape to be reversed.
4753         #  @param theName Object name; when specified, this parameter is used
4754         #         for result publication in the study. Otherwise, if automatic
4755         #         publication is switched on, default value is used for result name.
4756         #
4757         #  @return The reversed copy of theShape.
4758         #
4759         #  @ref swig_ChangeOrientation "Example"
4760         @ManageTransactions("ShapesOp")
4761         def ChangeOrientation(self, theShape, theName=None):
4762             """
4763             Reverses an orientation the given shape.
4764
4765             Parameters:
4766                 theShape Shape to be reversed.
4767                 theName Object name; when specified, this parameter is used
4768                         for result publication in the study. Otherwise, if automatic
4769                         publication is switched on, default value is used for result name.
4770
4771             Returns:
4772                 The reversed copy of theShape.
4773             """
4774             # Example: see GEOM_TestAll.py
4775             anObj = self.ShapesOp.ChangeOrientation(theShape)
4776             RaiseIfFailed("ChangeOrientation", self.ShapesOp)
4777             self._autoPublish(anObj, theName, "reversed")
4778             return anObj
4779
4780         ## See ChangeOrientation() method for details.
4781         #
4782         #  @ref swig_OrientationChange "Example"
4783         def OrientationChange(self, theShape, theName=None):
4784             """
4785             See geompy.ChangeOrientation method for details.
4786             """
4787             # Example: see GEOM_TestOthers.py
4788             # note: auto-publishing is done in self.ChangeOrientation()
4789             anObj = self.ChangeOrientation(theShape, theName)
4790             return anObj
4791
4792         # end of l3_healing
4793         ## @}
4794
4795         ## @addtogroup l4_obtain
4796         ## @{
4797
4798         ## Retrieve all free faces from the given shape.
4799         #  Free face is a face, which is not shared between two shells of the shape.
4800         #  @param theShape Shape to find free faces in.
4801         #  @return List of IDs of all free faces, contained in theShape.
4802         #
4803         #  @ref tui_measurement_tools_page "Example"
4804         @ManageTransactions("ShapesOp")
4805         def GetFreeFacesIDs(self,theShape):
4806             """
4807             Retrieve all free faces from the given shape.
4808             Free face is a face, which is not shared between two shells of the shape.
4809
4810             Parameters:
4811                 theShape Shape to find free faces in.
4812
4813             Returns:
4814                 List of IDs of all free faces, contained in theShape.
4815             """
4816             # Example: see GEOM_TestOthers.py
4817             anIDs = self.ShapesOp.GetFreeFacesIDs(theShape)
4818             RaiseIfFailed("GetFreeFacesIDs", self.ShapesOp)
4819             return anIDs
4820
4821         ## Get all sub-shapes of theShape1 of the given type, shared with theShape2.
4822         #  @param theShape1 Shape to find sub-shapes in.
4823         #  @param theShape2 Shape to find shared sub-shapes with.
4824         #  @param theShapeType Type of sub-shapes to be retrieved.
4825         #  @param 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         #  @return List of sub-shapes of theShape1, shared with theShape2.
4830         #
4831         #  @ref swig_GetSharedShapes "Example"
4832         @ManageTransactions("ShapesOp")
4833         def GetSharedShapes(self, theShape1, theShape2, theShapeType, theName=None):
4834             """
4835             Get all sub-shapes of theShape1 of the given type, shared with theShape2.
4836
4837             Parameters:
4838                 theShape1 Shape to find sub-shapes in.
4839                 theShape2 Shape to find shared sub-shapes with.
4840                 theShapeType Type of sub-shapes to be retrieved.
4841                 theName Object name; when specified, this parameter is used
4842                         for result publication in the study. Otherwise, if automatic
4843                         publication is switched on, default value is used for result name.
4844
4845             Returns:
4846                 List of sub-shapes of theShape1, shared with theShape2.
4847             """
4848             # Example: see GEOM_TestOthers.py
4849             aList = self.ShapesOp.GetSharedShapes(theShape1, theShape2, theShapeType)
4850             RaiseIfFailed("GetSharedShapes", self.ShapesOp)
4851             self._autoPublish(aList, theName, "shared")
4852             return aList
4853
4854         ## Get all sub-shapes, shared by all shapes in the list <VAR>theShapes</VAR>.
4855         #  @param theShapes Either a list or compound of shapes to find common sub-shapes of.
4856         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
4857         #  @param theName Object name; when specified, this parameter is used
4858         #         for result publication in the study. Otherwise, if automatic
4859         #         publication is switched on, default value is used for result name.
4860         #
4861         #  @return List of objects, that are sub-shapes of all given shapes.
4862         #
4863         #  @ref swig_GetSharedShapes "Example"
4864         @ManageTransactions("ShapesOp")
4865         def GetSharedShapesMulti(self, theShapes, theShapeType, theName=None):
4866             """
4867             Get all sub-shapes, shared by all shapes in the list theShapes.
4868
4869             Parameters:
4870                 theShapes Either a list or compound of shapes to find common sub-shapes of.
4871                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
4872                 theName Object name; when specified, this parameter is used
4873                         for result publication in the study. Otherwise, if automatic
4874                         publication is switched on, default value is used for result name.
4875
4876             Returns:
4877                 List of GEOM.GEOM_Object, that are sub-shapes of all given shapes.
4878             """
4879             # Example: see GEOM_TestOthers.py
4880             aList = self.ShapesOp.GetSharedShapesMulti(ToList(theShapes), theShapeType)
4881             RaiseIfFailed("GetSharedShapesMulti", self.ShapesOp)
4882             self._autoPublish(aList, theName, "shared")
4883             return aList
4884
4885         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
4886         #  situated relatively the specified plane by the certain way,
4887         #  defined through <VAR>theState</VAR> parameter.
4888         #  @param theShape Shape to find sub-shapes of.
4889         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
4890         #  @param theAx1 Vector (or line, or linear edge), specifying normal
4891         #                direction and location of the plane to find shapes on.
4892         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
4893         #  @param theName Object name; when specified, this parameter is used
4894         #         for result publication in the study. Otherwise, if automatic
4895         #         publication is switched on, default value is used for result name.
4896         #
4897         #  @return List of all found sub-shapes.
4898         #
4899         #  @ref swig_GetShapesOnPlane "Example"
4900         @ManageTransactions("ShapesOp")
4901         def GetShapesOnPlane(self, theShape, theShapeType, theAx1, theState, theName=None):
4902             """
4903             Find in theShape all sub-shapes of type theShapeType,
4904             situated relatively the specified plane by the certain way,
4905             defined through theState parameter.
4906
4907             Parameters:
4908                 theShape Shape to find sub-shapes of.
4909                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
4910                 theAx1 Vector (or line, or linear edge), specifying normal
4911                        direction and location of the plane to find shapes on.
4912                 theState The state of the sub-shapes to find (see GEOM::shape_state)
4913                 theName Object name; when specified, this parameter is used
4914                         for result publication in the study. Otherwise, if automatic
4915                         publication is switched on, default value is used for result name.
4916
4917             Returns:
4918                 List of all found sub-shapes.
4919             """
4920             # Example: see GEOM_TestOthers.py
4921             aList = self.ShapesOp.GetShapesOnPlane(theShape, theShapeType, theAx1, theState)
4922             RaiseIfFailed("GetShapesOnPlane", self.ShapesOp)
4923             self._autoPublish(aList, theName, "shapeOnPlane")
4924             return aList
4925
4926         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
4927         #  situated relatively the specified plane by the certain way,
4928         #  defined through <VAR>theState</VAR> parameter.
4929         #  @param theShape Shape to find sub-shapes of.
4930         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
4931         #  @param theAx1 Vector (or line, or linear edge), specifying normal
4932         #                direction and location of the plane to find shapes on.
4933         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
4934         #
4935         #  @return List of all found sub-shapes indices.
4936         #
4937         #  @ref swig_GetShapesOnPlaneIDs "Example"
4938         @ManageTransactions("ShapesOp")
4939         def GetShapesOnPlaneIDs(self, theShape, theShapeType, theAx1, theState):
4940             """
4941             Find in theShape all sub-shapes of type theShapeType,
4942             situated relatively the specified plane by the certain way,
4943             defined through theState parameter.
4944
4945             Parameters:
4946                 theShape Shape to find sub-shapes of.
4947                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
4948                 theAx1 Vector (or line, or linear edge), specifying normal
4949                        direction and location of the plane to find shapes on.
4950                 theState The state of the sub-shapes to find (see GEOM::shape_state)
4951
4952             Returns:
4953                 List of all found sub-shapes indices.
4954             """
4955             # Example: see GEOM_TestOthers.py
4956             aList = self.ShapesOp.GetShapesOnPlaneIDs(theShape, theShapeType, theAx1, theState)
4957             RaiseIfFailed("GetShapesOnPlaneIDs", self.ShapesOp)
4958             return aList
4959
4960         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
4961         #  situated relatively the specified plane by the certain way,
4962         #  defined through <VAR>theState</VAR> parameter.
4963         #  @param theShape Shape to find sub-shapes of.
4964         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
4965         #  @param theAx1 Vector (or line, or linear edge), specifying normal
4966         #                direction of the plane to find shapes on.
4967         #  @param thePnt Point specifying location of the plane to find shapes on.
4968         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
4969         #  @param theName Object name; when specified, this parameter is used
4970         #         for result publication in the study. Otherwise, if automatic
4971         #         publication is switched on, default value is used for result name.
4972         #
4973         #  @return List of all found sub-shapes.
4974         #
4975         #  @ref swig_GetShapesOnPlaneWithLocation "Example"
4976         @ManageTransactions("ShapesOp")
4977         def GetShapesOnPlaneWithLocation(self, theShape, theShapeType, theAx1, thePnt, theState, theName=None):
4978             """
4979             Find in theShape all sub-shapes of type theShapeType,
4980             situated relatively the specified plane by the certain way,
4981             defined through theState parameter.
4982
4983             Parameters:
4984                 theShape Shape to find sub-shapes of.
4985                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
4986                 theAx1 Vector (or line, or linear edge), specifying normal
4987                        direction and location of the plane to find shapes on.
4988                 thePnt Point specifying location of the plane to find shapes on.
4989                 theState The state of the sub-shapes to find (see GEOM::shape_state)
4990                 theName Object name; when specified, this parameter is used
4991                         for result publication in the study. Otherwise, if automatic
4992                         publication is switched on, default value is used for result name.
4993
4994             Returns:
4995                 List of all found sub-shapes.
4996             """
4997             # Example: see GEOM_TestOthers.py
4998             aList = self.ShapesOp.GetShapesOnPlaneWithLocation(theShape, theShapeType,
4999                                                                theAx1, thePnt, theState)
5000             RaiseIfFailed("GetShapesOnPlaneWithLocation", self.ShapesOp)
5001             self._autoPublish(aList, theName, "shapeOnPlane")
5002             return aList
5003
5004         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5005         #  situated relatively the specified plane by the certain way,
5006         #  defined through <VAR>theState</VAR> parameter.
5007         #  @param theShape Shape to find sub-shapes of.
5008         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5009         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5010         #                direction of the plane to find shapes on.
5011         #  @param thePnt Point specifying location of the plane to find shapes on.
5012         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5013         #
5014         #  @return List of all found sub-shapes indices.
5015         #
5016         #  @ref swig_GetShapesOnPlaneWithLocationIDs "Example"
5017         @ManageTransactions("ShapesOp")
5018         def GetShapesOnPlaneWithLocationIDs(self, theShape, theShapeType, theAx1, thePnt, theState):
5019             """
5020             Find in theShape all sub-shapes of type theShapeType,
5021             situated relatively the specified plane by the certain way,
5022             defined through theState parameter.
5023
5024             Parameters:
5025                 theShape Shape to find sub-shapes of.
5026                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5027                 theAx1 Vector (or line, or linear edge), specifying normal
5028                        direction and location of the plane to find shapes on.
5029                 thePnt Point specifying location of the plane to find shapes on.
5030                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5031
5032             Returns:
5033                 List of all found sub-shapes indices.
5034             """
5035             # Example: see GEOM_TestOthers.py
5036             aList = self.ShapesOp.GetShapesOnPlaneWithLocationIDs(theShape, theShapeType,
5037                                                                   theAx1, thePnt, theState)
5038             RaiseIfFailed("GetShapesOnPlaneWithLocationIDs", self.ShapesOp)
5039             return aList
5040
5041         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5042         #  the specified cylinder by the certain way, defined through \a theState parameter.
5043         #  @param theShape Shape to find sub-shapes of.
5044         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5045         #  @param theAxis Vector (or line, or linear edge), specifying
5046         #                 axis of the cylinder to find shapes on.
5047         #  @param theRadius Radius of the cylinder to find shapes on.
5048         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5049         #  @param theName Object name; when specified, this parameter is used
5050         #         for result publication in the study. Otherwise, if automatic
5051         #         publication is switched on, default value is used for result name.
5052         #
5053         #  @return List of all found sub-shapes.
5054         #
5055         #  @ref swig_GetShapesOnCylinder "Example"
5056         @ManageTransactions("ShapesOp")
5057         def GetShapesOnCylinder(self, theShape, theShapeType, theAxis, theRadius, theState, theName=None):
5058             """
5059             Find in theShape all sub-shapes of type theShapeType, situated relatively
5060             the specified cylinder by the certain way, defined through theState parameter.
5061
5062             Parameters:
5063                 theShape Shape to find sub-shapes of.
5064                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5065                 theAxis Vector (or line, or linear edge), specifying
5066                         axis of the cylinder to find shapes on.
5067                 theRadius Radius of the cylinder to find shapes on.
5068                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5069                 theName Object name; when specified, this parameter is used
5070                         for result publication in the study. Otherwise, if automatic
5071                         publication is switched on, default value is used for result name.
5072
5073             Returns:
5074                 List of all found sub-shapes.
5075             """
5076             # Example: see GEOM_TestOthers.py
5077             aList = self.ShapesOp.GetShapesOnCylinder(theShape, theShapeType, theAxis, theRadius, theState)
5078             RaiseIfFailed("GetShapesOnCylinder", self.ShapesOp)
5079             self._autoPublish(aList, theName, "shapeOnCylinder")
5080             return aList
5081
5082         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5083         #  the specified cylinder by the certain way, defined through \a theState parameter.
5084         #  @param theShape Shape to find sub-shapes of.
5085         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5086         #  @param theAxis Vector (or line, or linear edge), specifying
5087         #                 axis of the cylinder to find shapes on.
5088         #  @param theRadius Radius of the cylinder to find shapes on.
5089         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5090         #
5091         #  @return List of all found sub-shapes indices.
5092         #
5093         #  @ref swig_GetShapesOnCylinderIDs "Example"
5094         @ManageTransactions("ShapesOp")
5095         def GetShapesOnCylinderIDs(self, theShape, theShapeType, theAxis, theRadius, theState):
5096             """
5097             Find in theShape all sub-shapes of type theShapeType, situated relatively
5098             the specified cylinder by the certain way, defined through theState parameter.
5099
5100             Parameters:
5101                 theShape Shape to find sub-shapes of.
5102                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5103                 theAxis Vector (or line, or linear edge), specifying
5104                         axis of the cylinder to find shapes on.
5105                 theRadius Radius of the cylinder to find shapes on.
5106                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5107
5108             Returns:
5109                 List of all found sub-shapes indices.
5110             """
5111             # Example: see GEOM_TestOthers.py
5112             aList = self.ShapesOp.GetShapesOnCylinderIDs(theShape, theShapeType, theAxis, theRadius, theState)
5113             RaiseIfFailed("GetShapesOnCylinderIDs", self.ShapesOp)
5114             return aList
5115
5116         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5117         #  the specified cylinder by the certain way, defined through \a theState parameter.
5118         #  @param theShape Shape to find sub-shapes of.
5119         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5120         #  @param theAxis Vector (or line, or linear edge), specifying
5121         #                 axis of the cylinder to find shapes on.
5122         #  @param thePnt Point specifying location of the bottom of the cylinder.
5123         #  @param theRadius Radius of the cylinder to find shapes on.
5124         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5125         #  @param theName Object name; when specified, this parameter is used
5126         #         for result publication in the study. Otherwise, if automatic
5127         #         publication is switched on, default value is used for result name.
5128         #
5129         #  @return List of all found sub-shapes.
5130         #
5131         #  @ref swig_GetShapesOnCylinderWithLocation "Example"
5132         @ManageTransactions("ShapesOp")
5133         def GetShapesOnCylinderWithLocation(self, theShape, theShapeType, theAxis, thePnt, theRadius, theState, theName=None):
5134             """
5135             Find in theShape all sub-shapes of type theShapeType, situated relatively
5136             the specified cylinder by the certain way, defined through theState parameter.
5137
5138             Parameters:
5139                 theShape Shape to find sub-shapes of.
5140                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5141                 theAxis Vector (or line, or linear edge), specifying
5142                         axis of the cylinder to find shapes on.
5143                 theRadius Radius of the cylinder to find shapes on.
5144                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5145                 theName Object name; when specified, this parameter is used
5146                         for result publication in the study. Otherwise, if automatic
5147                         publication is switched on, default value is used for result name.
5148
5149             Returns:
5150                 List of all found sub-shapes.
5151             """
5152             # Example: see GEOM_TestOthers.py
5153             aList = self.ShapesOp.GetShapesOnCylinderWithLocation(theShape, theShapeType, theAxis, thePnt, theRadius, theState)
5154             RaiseIfFailed("GetShapesOnCylinderWithLocation", self.ShapesOp)
5155             self._autoPublish(aList, theName, "shapeOnCylinder")
5156             return aList
5157
5158         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5159         #  the specified cylinder by the certain way, defined through \a theState parameter.
5160         #  @param theShape Shape to find sub-shapes of.
5161         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5162         #  @param theAxis Vector (or line, or linear edge), specifying
5163         #                 axis of the cylinder to find shapes on.
5164         #  @param thePnt Point specifying location of the bottom of the cylinder.
5165         #  @param theRadius Radius of the cylinder to find shapes on.
5166         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5167         #
5168         #  @return List of all found sub-shapes indices
5169         #
5170         #  @ref swig_GetShapesOnCylinderWithLocationIDs "Example"
5171         @ManageTransactions("ShapesOp")
5172         def GetShapesOnCylinderWithLocationIDs(self, theShape, theShapeType, theAxis, thePnt, theRadius, theState):
5173             """
5174             Find in theShape all sub-shapes of type theShapeType, situated relatively
5175             the specified cylinder by the certain way, 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                 theAxis Vector (or line, or linear edge), specifying
5181                         axis of the cylinder to find shapes on.
5182                 theRadius Radius of the cylinder to find shapes on.
5183                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5184
5185             Returns:
5186                 List of all found sub-shapes indices.
5187             """
5188             # Example: see GEOM_TestOthers.py
5189             aList = self.ShapesOp.GetShapesOnCylinderWithLocationIDs(theShape, theShapeType, theAxis, thePnt, theRadius, theState)
5190             RaiseIfFailed("GetShapesOnCylinderWithLocationIDs", self.ShapesOp)
5191             return aList
5192
5193         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5194         #  the specified sphere by the certain way, defined through \a theState parameter.
5195         #  @param theShape Shape to find sub-shapes of.
5196         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5197         #  @param theCenter Point, specifying center of the sphere to find shapes on.
5198         #  @param theRadius Radius of the sphere to find shapes on.
5199         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5200         #  @param theName Object name; when specified, this parameter is used
5201         #         for result publication in the study. Otherwise, if automatic
5202         #         publication is switched on, default value is used for result name.
5203         #
5204         #  @return List of all found sub-shapes.
5205         #
5206         #  @ref swig_GetShapesOnSphere "Example"
5207         @ManageTransactions("ShapesOp")
5208         def GetShapesOnSphere(self, theShape, theShapeType, theCenter, theRadius, theState, theName=None):
5209             """
5210             Find in theShape all sub-shapes of type theShapeType, situated relatively
5211             the specified sphere by the certain way, defined through theState parameter.
5212
5213             Parameters:
5214                 theShape Shape to find sub-shapes of.
5215                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5216                 theCenter Point, specifying center of the sphere to find shapes on.
5217                 theRadius Radius of the sphere to find shapes on.
5218                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5219                 theName Object name; when specified, this parameter is used
5220                         for result publication in the study. Otherwise, if automatic
5221                         publication is switched on, default value is used for result name.
5222
5223             Returns:
5224                 List of all found sub-shapes.
5225             """
5226             # Example: see GEOM_TestOthers.py
5227             aList = self.ShapesOp.GetShapesOnSphere(theShape, theShapeType, theCenter, theRadius, theState)
5228             RaiseIfFailed("GetShapesOnSphere", self.ShapesOp)
5229             self._autoPublish(aList, theName, "shapeOnSphere")
5230             return aList
5231
5232         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5233         #  the specified sphere by the certain way, defined through \a theState parameter.
5234         #  @param theShape Shape to find sub-shapes of.
5235         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5236         #  @param theCenter Point, specifying center of the sphere to find shapes on.
5237         #  @param theRadius Radius of the sphere to find shapes on.
5238         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5239         #
5240         #  @return List of all found sub-shapes indices.
5241         #
5242         #  @ref swig_GetShapesOnSphereIDs "Example"
5243         @ManageTransactions("ShapesOp")
5244         def GetShapesOnSphereIDs(self, theShape, theShapeType, theCenter, theRadius, theState):
5245             """
5246             Find in theShape all sub-shapes of type theShapeType, situated relatively
5247             the specified sphere by the certain way, defined through theState parameter.
5248
5249             Parameters:
5250                 theShape Shape to find sub-shapes of.
5251                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5252                 theCenter Point, specifying center of the sphere to find shapes on.
5253                 theRadius Radius of the sphere to find shapes on.
5254                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5255
5256             Returns:
5257                 List of all found sub-shapes indices.
5258             """
5259             # Example: see GEOM_TestOthers.py
5260             aList = self.ShapesOp.GetShapesOnSphereIDs(theShape, theShapeType, theCenter, theRadius, theState)
5261             RaiseIfFailed("GetShapesOnSphereIDs", self.ShapesOp)
5262             return aList
5263
5264         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5265         #  the specified quadrangle by the certain way, defined through \a theState parameter.
5266         #  @param theShape Shape to find sub-shapes of.
5267         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5268         #  @param theTopLeftPoint Point, specifying top left corner of a quadrangle
5269         #  @param theTopRigthPoint Point, specifying top right corner of a quadrangle
5270         #  @param theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5271         #  @param theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5272         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5273         #  @param theName Object name; when specified, this parameter is used
5274         #         for result publication in the study. Otherwise, if automatic
5275         #         publication is switched on, default value is used for result name.
5276         #
5277         #  @return List of all found sub-shapes.
5278         #
5279         #  @ref swig_GetShapesOnQuadrangle "Example"
5280         @ManageTransactions("ShapesOp")
5281         def GetShapesOnQuadrangle(self, theShape, theShapeType,
5282                                   theTopLeftPoint, theTopRigthPoint,
5283                                   theBottomLeftPoint, theBottomRigthPoint, theState, theName=None):
5284             """
5285             Find in theShape all sub-shapes of type theShapeType, situated relatively
5286             the specified quadrangle by the certain way, defined through theState parameter.
5287
5288             Parameters:
5289                 theShape Shape to find sub-shapes of.
5290                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5291                 theTopLeftPoint Point, specifying top left corner of a quadrangle
5292                 theTopRigthPoint Point, specifying top right corner of a quadrangle
5293                 theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5294                 theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5295                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5296                 theName Object name; when specified, this parameter is used
5297                         for result publication in the study. Otherwise, if automatic
5298                         publication is switched on, default value is used for result name.
5299
5300             Returns:
5301                 List of all found sub-shapes.
5302             """
5303             # Example: see GEOM_TestOthers.py
5304             aList = self.ShapesOp.GetShapesOnQuadrangle(theShape, theShapeType,
5305                                                         theTopLeftPoint, theTopRigthPoint,
5306                                                         theBottomLeftPoint, theBottomRigthPoint, theState)
5307             RaiseIfFailed("GetShapesOnQuadrangle", self.ShapesOp)
5308             self._autoPublish(aList, theName, "shapeOnQuadrangle")
5309             return aList
5310
5311         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5312         #  the specified quadrangle 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 theTopLeftPoint Point, specifying top left corner of a quadrangle
5316         #  @param theTopRigthPoint Point, specifying top right corner of a quadrangle
5317         #  @param theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5318         #  @param theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5319         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5320         #
5321         #  @return List of all found sub-shapes indices.
5322         #
5323         #  @ref swig_GetShapesOnQuadrangleIDs "Example"
5324         @ManageTransactions("ShapesOp")
5325         def GetShapesOnQuadrangleIDs(self, theShape, theShapeType,
5326                                      theTopLeftPoint, theTopRigthPoint,
5327                                      theBottomLeftPoint, theBottomRigthPoint, theState):
5328             """
5329             Find in theShape all sub-shapes of type theShapeType, situated relatively
5330             the specified quadrangle 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                 theTopLeftPoint Point, specifying top left corner of a quadrangle
5336                 theTopRigthPoint Point, specifying top right corner of a quadrangle
5337                 theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5338                 theBottomRigthPoint Point, specifying bottom right corner of a quadrangle
5339                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5340
5341             Returns:
5342                 List of all found sub-shapes indices.
5343             """
5344
5345             # Example: see GEOM_TestOthers.py
5346             aList = self.ShapesOp.GetShapesOnQuadrangleIDs(theShape, theShapeType,
5347                                                            theTopLeftPoint, theTopRigthPoint,
5348                                                            theBottomLeftPoint, theBottomRigthPoint, theState)
5349             RaiseIfFailed("GetShapesOnQuadrangleIDs", self.ShapesOp)
5350             return aList
5351
5352         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5353         #  the specified \a theBox by the certain way, defined through \a theState parameter.
5354         #  @param theBox Shape for relative comparing.
5355         #  @param theShape Shape to find sub-shapes of.
5356         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5357         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5358         #  @param theName Object name; when specified, this parameter is used
5359         #         for result publication in the study. Otherwise, if automatic
5360         #         publication is switched on, default value is used for result name.
5361         #
5362         #  @return List of all found sub-shapes.
5363         #
5364         #  @ref swig_GetShapesOnBox "Example"
5365         @ManageTransactions("ShapesOp")
5366         def GetShapesOnBox(self, theBox, theShape, theShapeType, theState, theName=None):
5367             """
5368             Find in theShape all sub-shapes of type theShapeType, situated relatively
5369             the specified theBox by the certain way, defined through theState parameter.
5370
5371             Parameters:
5372                 theBox Shape for relative comparing.
5373                 theShape Shape to find sub-shapes of.
5374                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5375                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5376                 theName Object name; when specified, this parameter is used
5377                         for result publication in the study. Otherwise, if automatic
5378                         publication is switched on, default value is used for result name.
5379
5380             Returns:
5381                 List of all found sub-shapes.
5382             """
5383             # Example: see GEOM_TestOthers.py
5384             aList = self.ShapesOp.GetShapesOnBox(theBox, theShape, theShapeType, theState)
5385             RaiseIfFailed("GetShapesOnBox", self.ShapesOp)
5386             self._autoPublish(aList, theName, "shapeOnBox")
5387             return aList
5388
5389         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5390         #  the specified \a theBox by the certain way, defined through \a theState parameter.
5391         #  @param theBox Shape for relative comparing.
5392         #  @param theShape Shape to find sub-shapes of.
5393         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5394         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5395         #
5396         #  @return List of all found sub-shapes indices.
5397         #
5398         #  @ref swig_GetShapesOnBoxIDs "Example"
5399         @ManageTransactions("ShapesOp")
5400         def GetShapesOnBoxIDs(self, theBox, theShape, theShapeType, theState):
5401             """
5402             Find in theShape all sub-shapes of type theShapeType, situated relatively
5403             the specified theBox by the certain way, defined through theState parameter.
5404
5405             Parameters:
5406                 theBox Shape for relative comparing.
5407                 theShape Shape to find sub-shapes of.
5408                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5409                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5410
5411             Returns:
5412                 List of all found sub-shapes indices.
5413             """
5414             # Example: see GEOM_TestOthers.py
5415             aList = self.ShapesOp.GetShapesOnBoxIDs(theBox, theShape, theShapeType, theState)
5416             RaiseIfFailed("GetShapesOnBoxIDs", self.ShapesOp)
5417             return aList
5418
5419         ## Find in \a theShape all sub-shapes of type \a theShapeType,
5420         #  situated relatively the specified \a theCheckShape by the
5421         #  certain way, defined through \a theState parameter.
5422         #  @param theCheckShape Shape for relative comparing. It must be a solid.
5423         #  @param theShape Shape to find sub-shapes of.
5424         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5425         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5426         #  @param theName Object name; when specified, this parameter is used
5427         #         for result publication in the study. Otherwise, if automatic
5428         #         publication is switched on, default value is used for result name.
5429         #
5430         #  @return List of all found sub-shapes.
5431         #
5432         #  @ref swig_GetShapesOnShape "Example"
5433         @ManageTransactions("ShapesOp")
5434         def GetShapesOnShape(self, theCheckShape, theShape, theShapeType, theState, theName=None):
5435             """
5436             Find in theShape all sub-shapes of type theShapeType,
5437             situated relatively the specified theCheckShape by the
5438             certain way, defined through theState parameter.
5439
5440             Parameters:
5441                 theCheckShape Shape for relative comparing. It must be a solid.
5442                 theShape Shape to find sub-shapes of.
5443                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5444                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5445                 theName Object name; when specified, this parameter is used
5446                         for result publication in the study. Otherwise, if automatic
5447                         publication is switched on, default value is used for result name.
5448
5449             Returns:
5450                 List of all found sub-shapes.
5451             """
5452             # Example: see GEOM_TestOthers.py
5453             aList = self.ShapesOp.GetShapesOnShape(theCheckShape, theShape,
5454                                                    theShapeType, theState)
5455             RaiseIfFailed("GetShapesOnShape", self.ShapesOp)
5456             self._autoPublish(aList, theName, "shapeOnShape")
5457             return aList
5458
5459         ## Find in \a theShape all sub-shapes of type \a theShapeType,
5460         #  situated relatively the specified \a theCheckShape by the
5461         #  certain way, defined through \a theState parameter.
5462         #  @param theCheckShape Shape for relative comparing. It must be a solid.
5463         #  @param theShape Shape to find sub-shapes of.
5464         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5465         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5466         #  @param theName Object name; when specified, this parameter is used
5467         #         for result publication in the study. Otherwise, if automatic
5468         #         publication is switched on, default value is used for result name.
5469         #
5470         #  @return All found sub-shapes as compound.
5471         #
5472         #  @ref swig_GetShapesOnShapeAsCompound "Example"
5473         @ManageTransactions("ShapesOp")
5474         def GetShapesOnShapeAsCompound(self, theCheckShape, theShape, theShapeType, theState, theName=None):
5475             """
5476             Find in theShape all sub-shapes of type theShapeType,
5477             situated relatively the specified theCheckShape by the
5478             certain way, defined through theState parameter.
5479
5480             Parameters:
5481                 theCheckShape Shape for relative comparing. It must be a solid.
5482                 theShape Shape to find sub-shapes of.
5483                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5484                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5485                 theName Object name; when specified, this parameter is used
5486                         for result publication in the study. Otherwise, if automatic
5487                         publication is switched on, default value is used for result name.
5488
5489             Returns:
5490                 All found sub-shapes as compound.
5491             """
5492             # Example: see GEOM_TestOthers.py
5493             anObj = self.ShapesOp.GetShapesOnShapeAsCompound(theCheckShape, theShape,
5494                                                              theShapeType, theState)
5495             RaiseIfFailed("GetShapesOnShapeAsCompound", self.ShapesOp)
5496             self._autoPublish(anObj, theName, "shapeOnShape")
5497             return anObj
5498
5499         ## Find in \a theShape all sub-shapes of type \a theShapeType,
5500         #  situated relatively the specified \a theCheckShape by the
5501         #  certain way, defined through \a theState parameter.
5502         #  @param theCheckShape Shape for relative comparing. It must be a solid.
5503         #  @param theShape Shape to find sub-shapes of.
5504         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5505         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5506         #
5507         #  @return List of all found sub-shapes indices.
5508         #
5509         #  @ref swig_GetShapesOnShapeIDs "Example"
5510         @ManageTransactions("ShapesOp")
5511         def GetShapesOnShapeIDs(self, theCheckShape, theShape, theShapeType, theState):
5512             """
5513             Find in theShape all sub-shapes of type theShapeType,
5514             situated relatively the specified theCheckShape by the
5515             certain way, defined through theState parameter.
5516
5517             Parameters:
5518                 theCheckShape Shape for relative comparing. It must be a solid.
5519                 theShape Shape to find sub-shapes of.
5520                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5521                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5522
5523             Returns:
5524                 List of all found sub-shapes indices.
5525             """
5526             # Example: see GEOM_TestOthers.py
5527             aList = self.ShapesOp.GetShapesOnShapeIDs(theCheckShape, theShape,
5528                                                       theShapeType, theState)
5529             RaiseIfFailed("GetShapesOnShapeIDs", self.ShapesOp)
5530             return aList
5531
5532         ## Get sub-shape(s) of theShapeWhere, which are
5533         #  coincident with \a theShapeWhat or could be a part of it.
5534         #  @param theShapeWhere Shape to find sub-shapes of.
5535         #  @param theShapeWhat Shape, specifying what to find.
5536         #  @param isNewImplementation implementation of GetInPlace functionality
5537         #             (default = False, old alghorithm based on shape properties)
5538         #  @param theName Object name; when specified, this parameter is used
5539         #         for result publication in the study. Otherwise, if automatic
5540         #         publication is switched on, default value is used for result name.
5541         #
5542         #  @return Group of all found sub-shapes or a single found sub-shape.
5543         #
5544         #  @note This function has a restriction on argument shapes.
5545         #        If \a theShapeWhere has curved parts with significantly
5546         #        outstanding centres (i.e. the mass centre of a part is closer to
5547         #        \a theShapeWhat than to the part), such parts will not be found.
5548         #        @image html get_in_place_lost_part.png
5549         #
5550         #  @ref swig_GetInPlace "Example"
5551         @ManageTransactions("ShapesOp")
5552         def GetInPlace(self, theShapeWhere, theShapeWhat, isNewImplementation = False, theName=None):
5553             """
5554             Get sub-shape(s) of theShapeWhere, which are
5555             coincident with  theShapeWhat or could be a part of it.
5556
5557             Parameters:
5558                 theShapeWhere Shape to find sub-shapes of.
5559                 theShapeWhat Shape, specifying what to find.
5560                 isNewImplementation Implementation of GetInPlace functionality
5561                                     (default = False, old alghorithm based on shape properties)
5562                 theName Object name; when specified, this parameter is used
5563                         for result publication in the study. Otherwise, if automatic
5564                         publication is switched on, default value is used for result name.
5565
5566             Returns:
5567                 Group of all found sub-shapes or a single found sub-shape.
5568
5569
5570             Note:
5571                 This function has a restriction on argument shapes.
5572                 If theShapeWhere has curved parts with significantly
5573                 outstanding centres (i.e. the mass centre of a part is closer to
5574                 theShapeWhat than to the part), such parts will not be found.
5575             """
5576             # Example: see GEOM_TestOthers.py
5577             anObj = None
5578             if isNewImplementation:
5579                 anObj = self.ShapesOp.GetInPlace(theShapeWhere, theShapeWhat)
5580             else:
5581                 anObj = self.ShapesOp.GetInPlaceOld(theShapeWhere, theShapeWhat)
5582                 pass
5583             RaiseIfFailed("GetInPlace", self.ShapesOp)
5584             self._autoPublish(anObj, theName, "inplace")
5585             return anObj
5586
5587         ## Get sub-shape(s) of \a theShapeWhere, which are
5588         #  coincident with \a theShapeWhat or could be a part of it.
5589         #
5590         #  Implementation of this method is based on a saved history of an operation,
5591         #  produced \a theShapeWhere. The \a theShapeWhat must be among this operation's
5592         #  arguments (an argument shape or a sub-shape of an argument shape).
5593         #  The operation could be the Partition or one of boolean operations,
5594         #  performed on simple shapes (not on compounds).
5595         #
5596         #  @param theShapeWhere Shape to find sub-shapes of.
5597         #  @param theShapeWhat Shape, specifying what to find (must be in the
5598         #                      building history of the ShapeWhere).
5599         #  @param theName Object name; when specified, this parameter is used
5600         #         for result publication in the study. Otherwise, if automatic
5601         #         publication is switched on, default value is used for result name.
5602         #
5603         #  @return Group of all found sub-shapes or a single found sub-shape.
5604         #
5605         #  @ref swig_GetInPlace "Example"
5606         @ManageTransactions("ShapesOp")
5607         def GetInPlaceByHistory(self, theShapeWhere, theShapeWhat, theName=None):
5608             """
5609             Implementation of this method is based on a saved history of an operation,
5610             produced theShapeWhere. The theShapeWhat must be among this operation's
5611             arguments (an argument shape or a sub-shape of an argument shape).
5612             The operation could be the Partition or one of boolean operations,
5613             performed on simple shapes (not on compounds).
5614
5615             Parameters:
5616                 theShapeWhere Shape to find sub-shapes of.
5617                 theShapeWhat Shape, specifying what to find (must be in the
5618                                 building history of the ShapeWhere).
5619                 theName Object name; when specified, this parameter is used
5620                         for result publication in the study. Otherwise, if automatic
5621                         publication is switched on, default value is used for result name.
5622
5623             Returns:
5624                 Group of all found sub-shapes or a single found sub-shape.
5625             """
5626             # Example: see GEOM_TestOthers.py
5627             anObj = self.ShapesOp.GetInPlaceByHistory(theShapeWhere, theShapeWhat)
5628             RaiseIfFailed("GetInPlaceByHistory", self.ShapesOp)
5629             self._autoPublish(anObj, theName, "inplace")
5630             return anObj
5631
5632         ## Get sub-shape of theShapeWhere, which is
5633         #  equal to \a theShapeWhat.
5634         #  @param theShapeWhere Shape to find sub-shape of.
5635         #  @param theShapeWhat Shape, specifying what to find.
5636         #  @param theName Object name; when specified, this parameter is used
5637         #         for result publication in the study. Otherwise, if automatic
5638         #         publication is switched on, default value is used for result name.
5639         #
5640         #  @return New GEOM.GEOM_Object for found sub-shape.
5641         #
5642         #  @ref swig_GetSame "Example"
5643         @ManageTransactions("ShapesOp")
5644         def GetSame(self, theShapeWhere, theShapeWhat, theName=None):
5645             """
5646             Get sub-shape of theShapeWhere, which is
5647             equal to theShapeWhat.
5648
5649             Parameters:
5650                 theShapeWhere Shape to find sub-shape of.
5651                 theShapeWhat Shape, specifying what to find.
5652                 theName Object name; when specified, this parameter is used
5653                         for result publication in the study. Otherwise, if automatic
5654                         publication is switched on, default value is used for result name.
5655
5656             Returns:
5657                 New GEOM.GEOM_Object for found sub-shape.
5658             """
5659             anObj = self.ShapesOp.GetSame(theShapeWhere, theShapeWhat)
5660             RaiseIfFailed("GetSame", self.ShapesOp)
5661             self._autoPublish(anObj, theName, "sameShape")
5662             return anObj
5663
5664
5665         ## Get sub-shape indices of theShapeWhere, which is
5666         #  equal to \a theShapeWhat.
5667         #  @param theShapeWhere Shape to find sub-shape of.
5668         #  @param theShapeWhat Shape, specifying what to find.
5669         #  @return List of all found sub-shapes indices.
5670         #
5671         #  @ref swig_GetSame "Example"
5672         @ManageTransactions("ShapesOp")
5673         def GetSameIDs(self, theShapeWhere, theShapeWhat):
5674             """
5675             Get sub-shape indices of theShapeWhere, which is
5676             equal to theShapeWhat.
5677
5678             Parameters:
5679                 theShapeWhere Shape to find sub-shape of.
5680                 theShapeWhat Shape, specifying what to find.
5681
5682             Returns:
5683                 List of all found sub-shapes indices.
5684             """
5685             anObj = self.ShapesOp.GetSameIDs(theShapeWhere, theShapeWhat)
5686             RaiseIfFailed("GetSameIDs", self.ShapesOp)
5687             return anObj
5688
5689         ## Resize the input edge with the new Min and Max parameters.
5690         #  The input edge parameters range is [0, 1]. If theMin parameter is
5691         #  negative, the input edge is extended, otherwise it is shrinked by
5692         #  theMin parameter. If theMax is greater than 1, the edge is extended,
5693         #  otherwise it is shrinked by theMax parameter.
5694         #  @param theEdge the input edge to be resized.
5695         #  @param theMin the minimal parameter value.
5696         #  @param theMax the maximal parameter value.
5697         #  @param theName Object name; when specified, this parameter is used
5698         #         for result publication in the study. Otherwise, if automatic
5699         #         publication is switched on, default value is used for result name.
5700         #  @return New GEOM.GEOM_Object, containing the created edge.
5701         #
5702         #  @ref tui_extend "Example"
5703         @ManageTransactions("ShapesOp")
5704         def ExtendEdge(self, theEdge, theMin, theMax, theName=None):
5705             """
5706             Resize the input edge with the new Min and Max parameters.
5707             The input edge parameters range is [0, 1]. If theMin parameter is
5708             negative, the input edge is extended, otherwise it is shrinked by
5709             theMin parameter. If theMax is greater than 1, the edge is extended,
5710             otherwise it is shrinked by theMax parameter.
5711
5712             Parameters:
5713                 theEdge the input edge to be resized.
5714                 theMin the minimal parameter value.
5715                 theMax the maximal parameter value.
5716                 theName Object name; when specified, this parameter is used
5717                         for result publication in the study. Otherwise, if automatic
5718                         publication is switched on, default value is used for result name.
5719
5720             Returns:
5721                 New GEOM.GEOM_Object, containing the created edge.
5722             """
5723             anObj = self.ShapesOp.ExtendEdge(theEdge, theMin, theMax)
5724             RaiseIfFailed("ExtendEdge", self.ShapesOp)
5725             self._autoPublish(anObj, theName, "edge")
5726             return anObj
5727
5728         ## Resize the input face with the new UMin, UMax, VMin and VMax
5729         #  parameters. The input face U and V parameters range is [0, 1]. If
5730         #  theUMin parameter is negative, the input face is extended, otherwise
5731         #  it is shrinked along U direction by theUMin parameter. If theUMax is
5732         #  greater than 1, the face is extended, otherwise it is shrinked along
5733         #  U direction by theUMax parameter. So as for theVMin, theVMax and
5734         #  V direction of the input face.
5735         #  @param theFace the input face to be resized.
5736         #  @param theUMin the minimal U parameter value.
5737         #  @param theUMax the maximal U parameter value.
5738         #  @param theVMin the minimal V parameter value.
5739         #  @param theVMax the maximal V parameter value.
5740         #  @param theName Object name; when specified, this parameter is used
5741         #         for result publication in the study. Otherwise, if automatic
5742         #         publication is switched on, default value is used for result name.
5743         #  @return New GEOM.GEOM_Object, containing the created face.
5744         #
5745         #  @ref tui_extend "Example"
5746         @ManageTransactions("ShapesOp")
5747         def ExtendFace(self, theFace, theUMin, theUMax,
5748                        theVMin, theVMax, theName=None):
5749             """
5750             Resize the input face with the new UMin, UMax, VMin and VMax
5751             parameters. The input face U and V parameters range is [0, 1]. If
5752             theUMin parameter is negative, the input face is extended, otherwise
5753             it is shrinked along U direction by theUMin parameter. If theUMax is
5754             greater than 1, the face is extended, otherwise it is shrinked along
5755             U direction by theUMax parameter. So as for theVMin, theVMax and
5756             V direction of the input face.
5757
5758             Parameters:
5759                 theFace the input face to be resized.
5760                 theUMin the minimal U parameter value.
5761                 theUMax the maximal U parameter value.
5762                 theVMin the minimal V parameter value.
5763                 theVMax the maximal V parameter value.
5764                 theName Object name; when specified, this parameter is used
5765                         for result publication in the study. Otherwise, if automatic
5766                         publication is switched on, default value is used for result name.
5767
5768             Returns:
5769                 New GEOM.GEOM_Object, containing the created face.
5770             """
5771             anObj = self.ShapesOp.ExtendFace(theFace, theUMin, theUMax,
5772                                              theVMin, theVMax)
5773             RaiseIfFailed("ExtendFace", self.ShapesOp)
5774             self._autoPublish(anObj, theName, "face")
5775             return anObj
5776
5777         # end of l4_obtain
5778         ## @}
5779
5780         ## @addtogroup l4_access
5781         ## @{
5782
5783         ## Obtain a composite sub-shape of <VAR>aShape</VAR>, composed from sub-shapes
5784         #  of aShape, selected by their unique IDs inside <VAR>aShape</VAR>
5785         #  @param aShape Shape to get sub-shape of.
5786         #  @param ListOfID List of sub-shapes indices.
5787         #  @param theName Object name; when specified, this parameter is used
5788         #         for result publication in the study. Otherwise, if automatic
5789         #         publication is switched on, default value is used for result name.
5790         #
5791         #  @return Found sub-shape.
5792         #
5793         #  @ref swig_all_decompose "Example"
5794         def GetSubShape(self, aShape, ListOfID, theName=None):
5795             """
5796             Obtain a composite sub-shape of aShape, composed from sub-shapes
5797             of aShape, selected by their unique IDs inside aShape
5798
5799             Parameters:
5800                 aShape Shape to get sub-shape of.
5801                 ListOfID List of sub-shapes indices.
5802                 theName Object name; when specified, this parameter is used
5803                         for result publication in the study. Otherwise, if automatic
5804                         publication is switched on, default value is used for result name.
5805
5806             Returns:
5807                 Found sub-shape.
5808             """
5809             # Example: see GEOM_TestAll.py
5810             anObj = self.AddSubShape(aShape,ListOfID)
5811             self._autoPublish(anObj, theName, "subshape")
5812             return anObj
5813
5814         ## Obtain unique ID of sub-shape <VAR>aSubShape</VAR> inside <VAR>aShape</VAR>
5815         #  of aShape, selected by their unique IDs inside <VAR>aShape</VAR>
5816         #  @param aShape Shape to get sub-shape of.
5817         #  @param aSubShape Sub-shapes of aShape.
5818         #  @return ID of found sub-shape.
5819         #
5820         #  @ref swig_all_decompose "Example"
5821         @ManageTransactions("LocalOp")
5822         def GetSubShapeID(self, aShape, aSubShape):
5823             """
5824             Obtain unique ID of sub-shape aSubShape inside aShape
5825             of aShape, selected by their unique IDs inside aShape
5826
5827             Parameters:
5828                aShape Shape to get sub-shape of.
5829                aSubShape Sub-shapes of aShape.
5830
5831             Returns:
5832                ID of found sub-shape.
5833             """
5834             # Example: see GEOM_TestAll.py
5835             anID = self.LocalOp.GetSubShapeIndex(aShape, aSubShape)
5836             RaiseIfFailed("GetSubShapeIndex", self.LocalOp)
5837             return anID
5838
5839         ## Obtain unique IDs of sub-shapes <VAR>aSubShapes</VAR> inside <VAR>aShape</VAR>
5840         #  This function is provided for performance purpose. The complexity is O(n) with n
5841         #  the number of subobjects of aShape
5842         #  @param aShape Shape to get sub-shape of.
5843         #  @param aSubShapes Sub-shapes of aShape.
5844         #  @return list of IDs of found sub-shapes.
5845         #
5846         #  @ref swig_all_decompose "Example"
5847         @ManageTransactions("ShapesOp")
5848         def GetSubShapesIDs(self, aShape, aSubShapes):
5849             """
5850             Obtain a list of IDs of sub-shapes aSubShapes inside aShape
5851             This function is provided for performance purpose. The complexity is O(n) with n
5852             the number of subobjects of aShape
5853
5854             Parameters:
5855                aShape Shape to get sub-shape of.
5856                aSubShapes Sub-shapes of aShape.
5857
5858             Returns:
5859                List of IDs of found sub-shape.
5860             """
5861             # Example: see GEOM_TestAll.py
5862             anIDs = self.ShapesOp.GetSubShapesIndices(aShape, aSubShapes)
5863             RaiseIfFailed("GetSubShapesIndices", self.ShapesOp)
5864             return anIDs
5865
5866         # end of l4_access
5867         ## @}
5868
5869         ## @addtogroup l4_decompose
5870         ## @{
5871
5872         ## Get all sub-shapes and groups of \a theShape,
5873         #  that were created already by any other methods.
5874         #  @param theShape Any shape.
5875         #  @param theGroupsOnly If this parameter is TRUE, only groups will be
5876         #                       returned, else all found sub-shapes and groups.
5877         #  @return List of existing sub-objects of \a theShape.
5878         #
5879         #  @ref swig_all_decompose "Example"
5880         @ManageTransactions("ShapesOp")
5881         def GetExistingSubObjects(self, theShape, theGroupsOnly = False):
5882             """
5883             Get all sub-shapes and groups of theShape,
5884             that were created already by any other methods.
5885
5886             Parameters:
5887                 theShape Any shape.
5888                 theGroupsOnly If this parameter is TRUE, only groups will be
5889                                  returned, else all found sub-shapes and groups.
5890
5891             Returns:
5892                 List of existing sub-objects of theShape.
5893             """
5894             # Example: see GEOM_TestAll.py
5895             ListObj = self.ShapesOp.GetExistingSubObjects(theShape, theGroupsOnly)
5896             RaiseIfFailed("GetExistingSubObjects", self.ShapesOp)
5897             return ListObj
5898
5899         ## Get all groups of \a theShape,
5900         #  that were created already by any other methods.
5901         #  @param theShape Any shape.
5902         #  @return List of existing groups of \a theShape.
5903         #
5904         #  @ref swig_all_decompose "Example"
5905         @ManageTransactions("ShapesOp")
5906         def GetGroups(self, theShape):
5907             """
5908             Get all groups of theShape,
5909             that were created already by any other methods.
5910
5911             Parameters:
5912                 theShape Any shape.
5913
5914             Returns:
5915                 List of existing groups of theShape.
5916             """
5917             # Example: see GEOM_TestAll.py
5918             ListObj = self.ShapesOp.GetExistingSubObjects(theShape, True)
5919             RaiseIfFailed("GetExistingSubObjects", self.ShapesOp)
5920             return ListObj
5921
5922         ## Explode a shape on sub-shapes of a given type.
5923         #  If the shape itself matches the type, it is also returned.
5924         #  @param aShape Shape to be exploded.
5925         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
5926         #  @param theName Object name; when specified, this parameter is used
5927         #         for result publication in the study. Otherwise, if automatic
5928         #         publication is switched on, default value is used for result name.
5929         #
5930         #  @return List of sub-shapes of type theShapeType, contained in theShape.
5931         #
5932         #  @ref swig_all_decompose "Example"
5933         @ManageTransactions("ShapesOp")
5934         def SubShapeAll(self, aShape, aType, theName=None):
5935             """
5936             Explode a shape on sub-shapes of a given type.
5937             If the shape itself matches the type, it is also returned.
5938
5939             Parameters:
5940                 aShape Shape to be exploded.
5941                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5942                 theName Object name; when specified, this parameter is used
5943                         for result publication in the study. Otherwise, if automatic
5944                         publication is switched on, default value is used for result name.
5945
5946             Returns:
5947                 List of sub-shapes of type theShapeType, contained in theShape.
5948             """
5949             # Example: see GEOM_TestAll.py
5950             ListObj = self.ShapesOp.MakeAllSubShapes(aShape, EnumToLong( aType ), False)
5951             RaiseIfFailed("SubShapeAll", self.ShapesOp)
5952             self._autoPublish(ListObj, theName, "subshape")
5953             return ListObj
5954
5955         ## Explode a shape on sub-shapes of a given type.
5956         #  @param aShape Shape to be exploded.
5957         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
5958         #  @return List of IDs of sub-shapes.
5959         #
5960         #  @ref swig_all_decompose "Example"
5961         @ManageTransactions("ShapesOp")
5962         def SubShapeAllIDs(self, aShape, aType):
5963             """
5964             Explode a shape on sub-shapes of a given type.
5965
5966             Parameters:
5967                 aShape Shape to be exploded (see geompy.ShapeType)
5968                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5969
5970             Returns:
5971                 List of IDs of sub-shapes.
5972             """
5973             ListObj = self.ShapesOp.GetAllSubShapesIDs(aShape, EnumToLong( aType ), False)
5974             RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
5975             return ListObj
5976
5977         ## Obtain a compound of sub-shapes of <VAR>aShape</VAR>,
5978         #  selected by their indices in list of all sub-shapes of type <VAR>aType</VAR>.
5979         #  Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
5980         #  @param aShape Shape to get sub-shape of.
5981         #  @param ListOfInd List of sub-shapes indices.
5982         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
5983         #  @param theName Object name; when specified, this parameter is used
5984         #         for result publication in the study. Otherwise, if automatic
5985         #         publication is switched on, default value is used for result name.
5986         #
5987         #  @return A compound of sub-shapes of aShape.
5988         #
5989         #  @ref swig_all_decompose "Example"
5990         def SubShape(self, aShape, aType, ListOfInd, theName=None):
5991             """
5992             Obtain a compound of sub-shapes of aShape,
5993             selected by their indices in list of all sub-shapes of type aType.
5994             Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
5995
5996             Parameters:
5997                 aShape Shape to get sub-shape of.
5998                 ListOfID List of sub-shapes indices.
5999                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6000                 theName Object name; when specified, this parameter is used
6001                         for result publication in the study. Otherwise, if automatic
6002                         publication is switched on, default value is used for result name.
6003
6004             Returns:
6005                 A compound of sub-shapes of aShape.
6006             """
6007             # Example: see GEOM_TestAll.py
6008             ListOfIDs = []
6009             AllShapeIDsList = self.SubShapeAllIDs(aShape, EnumToLong( aType ))
6010             for ind in ListOfInd:
6011                 ListOfIDs.append(AllShapeIDsList[ind - 1])
6012             # note: auto-publishing is done in self.GetSubShape()
6013             anObj = self.GetSubShape(aShape, ListOfIDs, theName)
6014             return anObj
6015
6016         ## Explode a shape on sub-shapes of a given type.
6017         #  Sub-shapes will be sorted taking into account their gravity centers,
6018         #  to provide stable order of sub-shapes.
6019         #  If the shape itself matches the type, it is also returned.
6020         #  @param aShape Shape to be exploded.
6021         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6022         #  @param theName Object name; when specified, this parameter is used
6023         #         for result publication in the study. Otherwise, if automatic
6024         #         publication is switched on, default value is used for result name.
6025         #
6026         #  @return List of sub-shapes of type theShapeType, contained in theShape.
6027         #
6028         #  @ref swig_SubShapeAllSorted "Example"
6029         @ManageTransactions("ShapesOp")
6030         def SubShapeAllSortedCentres(self, aShape, aType, theName=None):
6031             """
6032             Explode a shape on sub-shapes of a given type.
6033             Sub-shapes will be sorted taking into account their gravity centers,
6034             to provide stable order of sub-shapes.
6035             If the shape itself matches the type, it is also returned.
6036
6037             Parameters:
6038                 aShape Shape to be exploded.
6039                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6040                 theName Object name; when specified, this parameter is used
6041                         for result publication in the study. Otherwise, if automatic
6042                         publication is switched on, default value is used for result name.
6043
6044             Returns:
6045                 List of sub-shapes of type theShapeType, contained in theShape.
6046             """
6047             # Example: see GEOM_TestAll.py
6048             ListObj = self.ShapesOp.MakeAllSubShapes(aShape, EnumToLong( aType ), True)
6049             RaiseIfFailed("SubShapeAllSortedCentres", self.ShapesOp)
6050             self._autoPublish(ListObj, theName, "subshape")
6051             return ListObj
6052
6053         ## Explode a shape on sub-shapes of a given type.
6054         #  Sub-shapes will be sorted taking into account their gravity centers,
6055         #  to provide stable order of sub-shapes.
6056         #  @param aShape Shape to be exploded.
6057         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6058         #  @return List of IDs of sub-shapes.
6059         #
6060         #  @ref swig_all_decompose "Example"
6061         @ManageTransactions("ShapesOp")
6062         def SubShapeAllSortedCentresIDs(self, aShape, aType):
6063             """
6064             Explode a shape on sub-shapes of a given type.
6065             Sub-shapes will be sorted taking into account their gravity centers,
6066             to provide stable order of sub-shapes.
6067
6068             Parameters:
6069                 aShape Shape to be exploded.
6070                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6071
6072             Returns:
6073                 List of IDs of sub-shapes.
6074             """
6075             ListIDs = self.ShapesOp.GetAllSubShapesIDs(aShape, EnumToLong( aType ), True)
6076             RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
6077             return ListIDs
6078
6079         ## Obtain a compound of sub-shapes of <VAR>aShape</VAR>,
6080         #  selected by they indices in sorted list of all sub-shapes of type <VAR>aType</VAR>.
6081         #  Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6082         #  @param aShape Shape to get sub-shape of.
6083         #  @param ListOfInd List of sub-shapes indices.
6084         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6085         #  @param theName Object name; when specified, this parameter is used
6086         #         for result publication in the study. Otherwise, if automatic
6087         #         publication is switched on, default value is used for result name.
6088         #
6089         #  @return A compound of sub-shapes of aShape.
6090         #
6091         #  @ref swig_all_decompose "Example"
6092         def SubShapeSortedCentres(self, aShape, aType, ListOfInd, theName=None):
6093             """
6094             Obtain a compound of sub-shapes of aShape,
6095             selected by they indices in sorted list of all sub-shapes of type aType.
6096             Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6097
6098             Parameters:
6099                 aShape Shape to get sub-shape of.
6100                 ListOfID List of sub-shapes indices.
6101                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6102                 theName Object name; when specified, this parameter is used
6103                         for result publication in the study. Otherwise, if automatic
6104                         publication is switched on, default value is used for result name.
6105
6106             Returns:
6107                 A compound of sub-shapes of aShape.
6108             """
6109             # Example: see GEOM_TestAll.py
6110             ListOfIDs = []
6111             AllShapeIDsList = self.SubShapeAllSortedCentresIDs(aShape, EnumToLong( aType ))
6112             for ind in ListOfInd:
6113                 ListOfIDs.append(AllShapeIDsList[ind - 1])
6114             # note: auto-publishing is done in self.GetSubShape()
6115             anObj = self.GetSubShape(aShape, ListOfIDs, theName)
6116             return anObj
6117
6118         ## Extract shapes (excluding the main shape) of given type.
6119         #  @param aShape The shape.
6120         #  @param aType  The shape type (see ShapeType())
6121         #  @param isSorted Boolean flag to switch sorting on/off.
6122         #  @param theName Object name; when specified, this parameter is used
6123         #         for result publication in the study. Otherwise, if automatic
6124         #         publication is switched on, default value is used for result name.
6125         #
6126         #  @return List of sub-shapes of type aType, contained in aShape.
6127         #
6128         #  @ref swig_FilletChamfer "Example"
6129         @ManageTransactions("ShapesOp")
6130         def ExtractShapes(self, aShape, aType, isSorted = False, theName=None):
6131             """
6132             Extract shapes (excluding the main shape) of given type.
6133
6134             Parameters:
6135                 aShape The shape.
6136                 aType  The shape type (see geompy.ShapeType)
6137                 isSorted Boolean flag to switch sorting on/off.
6138                 theName Object name; when specified, this parameter is used
6139                         for result publication in the study. Otherwise, if automatic
6140                         publication is switched on, default value is used for result name.
6141
6142             Returns:
6143                 List of sub-shapes of type aType, contained in aShape.
6144             """
6145             # Example: see GEOM_TestAll.py
6146             ListObj = self.ShapesOp.ExtractSubShapes(aShape, EnumToLong( aType ), isSorted)
6147             RaiseIfFailed("ExtractSubShapes", self.ShapesOp)
6148             self._autoPublish(ListObj, theName, "subshape")
6149             return ListObj
6150
6151         ## Get a set of sub-shapes defined by their unique IDs inside <VAR>aShape</VAR>
6152         #  @param aShape Main shape.
6153         #  @param anIDs List of unique IDs of sub-shapes inside <VAR>aShape</VAR>.
6154         #  @param theName Object name; when specified, this parameter is used
6155         #         for result publication in the study. Otherwise, if automatic
6156         #         publication is switched on, default value is used for result name.
6157         #  @return List of GEOM.GEOM_Object, corresponding to found sub-shapes.
6158         #
6159         #  @ref swig_all_decompose "Example"
6160         @ManageTransactions("ShapesOp")
6161         def SubShapes(self, aShape, anIDs, theName=None):
6162             """
6163             Get a set of sub-shapes defined by their unique IDs inside theMainShape
6164
6165             Parameters:
6166                 aShape Main shape.
6167                 anIDs List of unique IDs of sub-shapes inside theMainShape.
6168                 theName Object name; when specified, this parameter is used
6169                         for result publication in the study. Otherwise, if automatic
6170                         publication is switched on, default value is used for result name.
6171
6172             Returns:
6173                 List of GEOM.GEOM_Object, corresponding to found sub-shapes.
6174             """
6175             # Example: see GEOM_TestAll.py
6176             ListObj = self.ShapesOp.MakeSubShapes(aShape, anIDs)
6177             RaiseIfFailed("SubShapes", self.ShapesOp)
6178             self._autoPublish(ListObj, theName, "subshape")
6179             return ListObj
6180
6181         # end of l4_decompose
6182         ## @}
6183
6184         ## @addtogroup l4_decompose_d
6185         ## @{
6186
6187         ## Deprecated method
6188         #  It works like SubShapeAllSortedCentres(), but wrongly
6189         #  defines centres of faces, shells and solids.
6190         @ManageTransactions("ShapesOp")
6191         def SubShapeAllSorted(self, aShape, aType, theName=None):
6192             """
6193             Deprecated method
6194             It works like geompy.SubShapeAllSortedCentres, but wrongly
6195             defines centres of faces, shells and solids.
6196             """
6197             ListObj = self.ShapesOp.MakeExplode(aShape, EnumToLong( aType ), True)
6198             RaiseIfFailed("MakeExplode", self.ShapesOp)
6199             self._autoPublish(ListObj, theName, "subshape")
6200             return ListObj
6201
6202         ## Deprecated method
6203         #  It works like SubShapeAllSortedCentresIDs(), but wrongly
6204         #  defines centres of faces, shells and solids.
6205         @ManageTransactions("ShapesOp")
6206         def SubShapeAllSortedIDs(self, aShape, aType):
6207             """
6208             Deprecated method
6209             It works like geompy.SubShapeAllSortedCentresIDs, but wrongly
6210             defines centres of faces, shells and solids.
6211             """
6212             ListIDs = self.ShapesOp.SubShapeAllIDs(aShape, EnumToLong( aType ), True)
6213             RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
6214             return ListIDs
6215
6216         ## Deprecated method
6217         #  It works like SubShapeSortedCentres(), but has a bug
6218         #  (wrongly defines centres of faces, shells and solids).
6219         def SubShapeSorted(self, aShape, aType, ListOfInd, theName=None):
6220             """
6221             Deprecated method
6222             It works like geompy.SubShapeSortedCentres, but has a bug
6223             (wrongly defines centres of faces, shells and solids).
6224             """
6225             ListOfIDs = []
6226             AllShapeIDsList = self.SubShapeAllSortedIDs(aShape, EnumToLong( aType ))
6227             for ind in ListOfInd:
6228                 ListOfIDs.append(AllShapeIDsList[ind - 1])
6229             # note: auto-publishing is done in self.GetSubShape()
6230             anObj = self.GetSubShape(aShape, ListOfIDs, theName)
6231             return anObj
6232
6233         # end of l4_decompose_d
6234         ## @}
6235
6236         ## @addtogroup l3_healing
6237         ## @{
6238
6239         ## Apply a sequence of Shape Healing operators to the given object.
6240         #  @param theShape Shape to be processed.
6241         #  @param theOperators List of names of operators ("FixShape", "SplitClosedFaces", etc.).
6242         #  @param theParameters List of names of parameters
6243         #                    ("FixShape.Tolerance3d", "SplitClosedFaces.NbSplitPoints", etc.).
6244         #  @param theValues List of values of parameters, in the same order
6245         #                    as parameters are listed in <VAR>theParameters</VAR> list.
6246         #  @param theName Object name; when specified, this parameter is used
6247         #         for result publication in the study. Otherwise, if automatic
6248         #         publication is switched on, default value is used for result name.
6249         #
6250         #  <b> Operators and Parameters: </b> \n
6251         #
6252         #  * \b FixShape - corrects invalid shapes. \n
6253         #  - \b FixShape.Tolerance3d - work tolerance for detection of the problems and correction of them. \n
6254         #  - \b FixShape.MaxTolerance3d - maximal possible tolerance of the shape after correction. \n
6255         #
6256         #  * \b FixFaceSize - removes small faces, such as spots and strips.\n
6257         #  - \b FixFaceSize.Tolerance - defines minimum possible face size. \n
6258         #  - \b DropSmallEdges - removes edges, which merge with neighbouring edges. \n
6259         #  - \b DropSmallEdges.Tolerance3d - defines minimum possible distance between two parallel edges.\n
6260         #
6261         #  * \b SplitAngle - splits faces based on conical surfaces, surfaces of revolution and cylindrical
6262         #    surfaces in segments using a certain angle. \n
6263         #  - \b SplitAngle.Angle - the central angle of the resulting segments (i.e. we obtain two segments
6264         #    if Angle=180, four if Angle=90, etc). \n
6265         #  - \b SplitAngle.MaxTolerance - maximum possible tolerance among the resulting segments.\n
6266         #
6267         #  * \b SplitClosedFaces - splits closed faces in segments.
6268         #    The number of segments depends on the number of splitting points.\n
6269         #  - \b SplitClosedFaces.NbSplitPoints - the number of splitting points.\n
6270         #
6271         #  * \b SplitContinuity - splits shapes to reduce continuities of curves and surfaces.\n
6272         #  - \b SplitContinuity.Tolerance3d - 3D tolerance for correction of geometry.\n
6273         #  - \b SplitContinuity.SurfaceContinuity - required continuity for surfaces.\n
6274         #  - \b SplitContinuity.CurveContinuity - required continuity for curves.\n
6275         #   This and the previous parameters can take the following values:\n
6276         #   \b Parametric \b Continuity \n
6277         #   \b C0 (Positional Continuity): curves are joined (the end positions of curves or surfaces
6278         #   are coincidental. The curves or surfaces may still meet at an angle, giving rise to a sharp corner or edge).\n
6279         #   \b C1 (Tangential Continuity): first derivatives are equal (the end vectors of curves or surfaces are parallel,
6280         #    ruling out sharp edges).\n
6281         #   \b C2 (Curvature Continuity): first and second derivatives are equal (the end vectors of curves or surfaces
6282         #       are of the same magnitude).\n
6283         #   \b CN N-th derivatives are equal (both the direction and the magnitude of the Nth derivatives of curves
6284         #    or surfaces (d/du C(u)) are the same at junction. \n
6285         #   \b Geometric \b Continuity \n
6286         #   \b G1: first derivatives are proportional at junction.\n
6287         #   The curve tangents thus have the same direction, but not necessarily the same magnitude.
6288         #      i.e., C1'(1) = (a,b,c) and C2'(0) = (k*a, k*b, k*c).\n
6289         #   \b G2: first and second derivatives are proportional at junction.
6290         #   As the names imply, geometric continuity requires the geometry to be continuous, while parametric
6291         #    continuity requires that the underlying parameterization was continuous as well.
6292         #   Parametric continuity of order n implies geometric continuity of order n, but not vice-versa.\n
6293         #
6294         #  * \b BsplineRestriction - converts curves and surfaces to Bsplines and processes them with the following parameters:\n
6295         #  - \b BSplineRestriction.SurfaceMode - approximation of surfaces if restriction is necessary.\n
6296         #  - \b BSplineRestriction.Curve3dMode - conversion of any 3D curve to BSpline and approximation.\n
6297         #  - \b BSplineRestriction.Curve2dMode - conversion of any 2D curve to BSpline and approximation.\n
6298         #  - \b BSplineRestriction.Tolerance3d - defines the possibility of surfaces and 3D curves approximation
6299         #       with the specified parameters.\n
6300         #  - \b BSplineRestriction.Tolerance2d - defines the possibility of surfaces and 2D curves approximation
6301         #       with the specified parameters.\n
6302         #  - \b BSplineRestriction.RequiredDegree - required degree of the resulting BSplines.\n
6303         #  - \b BSplineRestriction.RequiredNbSegments - required maximum number of segments of resultant BSplines.\n
6304         #  - \b BSplineRestriction.Continuity3d - continuity of the resulting surfaces and 3D curves.\n
6305         #  - \b BSplineRestriction.Continuity2d - continuity of the resulting 2D curves.\n
6306         #
6307         #  * \b ToBezier - converts curves and surfaces of any type to Bezier curves and surfaces.\n
6308         #  - \b ToBezier.SurfaceMode - if checked in, allows conversion of surfaces.\n
6309         #  - \b ToBezier.Curve3dMode - if checked in, allows conversion of 3D curves.\n
6310         #  - \b ToBezier.Curve2dMode - if checked in, allows conversion of 2D curves.\n
6311         #  - \b ToBezier.MaxTolerance - defines tolerance for detection and correction of problems.\n
6312         #
6313         #  * \b SameParameter - fixes edges of 2D and 3D curves not having the same parameter.\n
6314         #  - \b SameParameter.Tolerance3d - defines tolerance for fixing of edges.\n
6315         #
6316         #
6317         #  @return New GEOM.GEOM_Object, containing processed shape.
6318         #
6319         #  \n @ref tui_shape_processing "Example"
6320         @ManageTransactions("HealOp")
6321         def ProcessShape(self, theShape, theOperators, theParameters, theValues, theName=None):
6322             """
6323             Apply a sequence of Shape Healing operators to the given object.
6324
6325             Parameters:
6326                 theShape Shape to be processed.
6327                 theValues List of values of parameters, in the same order
6328                           as parameters are listed in theParameters list.
6329                 theOperators List of names of operators ("FixShape", "SplitClosedFaces", etc.).
6330                 theParameters List of names of parameters
6331                               ("FixShape.Tolerance3d", "SplitClosedFaces.NbSplitPoints", etc.).
6332                 theName Object name; when specified, this parameter is used
6333                         for result publication in the study. Otherwise, if automatic
6334                         publication is switched on, default value is used for result name.
6335
6336                 Operators and Parameters:
6337
6338                  * FixShape - corrects invalid shapes.
6339                      * FixShape.Tolerance3d - work tolerance for detection of the problems and correction of them.
6340                      * FixShape.MaxTolerance3d - maximal possible tolerance of the shape after correction.
6341                  * FixFaceSize - removes small faces, such as spots and strips.
6342                      * FixFaceSize.Tolerance - defines minimum possible face size.
6343                      * DropSmallEdges - removes edges, which merge with neighbouring edges.
6344                      * DropSmallEdges.Tolerance3d - defines minimum possible distance between two parallel edges.
6345                  * SplitAngle - splits faces based on conical surfaces, surfaces of revolution and cylindrical surfaces
6346                                 in segments using a certain angle.
6347                      * SplitAngle.Angle - the central angle of the resulting segments (i.e. we obtain two segments
6348                                           if Angle=180, four if Angle=90, etc).
6349                      * SplitAngle.MaxTolerance - maximum possible tolerance among the resulting segments.
6350                  * SplitClosedFaces - splits closed faces in segments. The number of segments depends on the number of
6351                                       splitting points.
6352                      * SplitClosedFaces.NbSplitPoints - the number of splitting points.
6353                  * SplitContinuity - splits shapes to reduce continuities of curves and surfaces.
6354                      * SplitContinuity.Tolerance3d - 3D tolerance for correction of geometry.
6355                      * SplitContinuity.SurfaceContinuity - required continuity for surfaces.
6356                      * SplitContinuity.CurveContinuity - required continuity for curves.
6357                        This and the previous parameters can take the following values:
6358
6359                        Parametric Continuity:
6360                        C0 (Positional Continuity): curves are joined (the end positions of curves or surfaces are
6361                                                    coincidental. The curves or surfaces may still meet at an angle,
6362                                                    giving rise to a sharp corner or edge).
6363                        C1 (Tangential Continuity): first derivatives are equal (the end vectors of curves or surfaces
6364                                                    are parallel, ruling out sharp edges).
6365                        C2 (Curvature Continuity): first and second derivatives are equal (the end vectors of curves
6366                                                   or surfaces are of the same magnitude).
6367                        CN N-th derivatives are equal (both the direction and the magnitude of the Nth derivatives of
6368                           curves or surfaces (d/du C(u)) are the same at junction.
6369
6370                        Geometric Continuity:
6371                        G1: first derivatives are proportional at junction.
6372                            The curve tangents thus have the same direction, but not necessarily the same magnitude.
6373                            i.e., C1'(1) = (a,b,c) and C2'(0) = (k*a, k*b, k*c).
6374                        G2: first and second derivatives are proportional at junction. As the names imply,
6375                            geometric continuity requires the geometry to be continuous, while parametric continuity requires
6376                            that the underlying parameterization was continuous as well. Parametric continuity of order n implies
6377                            geometric continuity of order n, but not vice-versa.
6378                  * BsplineRestriction - converts curves and surfaces to Bsplines and processes them with the following parameters:
6379                      * BSplineRestriction.SurfaceMode - approximation of surfaces if restriction is necessary.
6380                      * BSplineRestriction.Curve3dMode - conversion of any 3D curve to BSpline and approximation.
6381                      * BSplineRestriction.Curve2dMode - conversion of any 2D curve to BSpline and approximation.
6382                      * BSplineRestriction.Tolerance3d - defines the possibility of surfaces and 3D curves approximation with
6383                                                         the specified parameters.
6384                      * BSplineRestriction.Tolerance2d - defines the possibility of surfaces and 2D curves approximation with
6385                                                         the specified parameters.
6386                      * BSplineRestriction.RequiredDegree - required degree of the resulting BSplines.
6387                      * BSplineRestriction.RequiredNbSegments - required maximum number of segments of resultant BSplines.
6388                      * BSplineRestriction.Continuity3d - continuity of the resulting surfaces and 3D curves.
6389                      * BSplineRestriction.Continuity2d - continuity of the resulting 2D curves.
6390                  * ToBezier - converts curves and surfaces of any type to Bezier curves and surfaces.
6391                      * ToBezier.SurfaceMode - if checked in, allows conversion of surfaces.
6392                      * ToBezier.Curve3dMode - if checked in, allows conversion of 3D curves.
6393                      * ToBezier.Curve2dMode - if checked in, allows conversion of 2D curves.
6394                      * ToBezier.MaxTolerance - defines tolerance for detection and correction of problems.
6395                  * SameParameter - fixes edges of 2D and 3D curves not having the same parameter.
6396                      * SameParameter.Tolerance3d - defines tolerance for fixing of edges.
6397
6398             Returns:
6399                 New GEOM.GEOM_Object, containing processed shape.
6400
6401             Note: For more information look through SALOME Geometry User's Guide->
6402                   -> Introduction to Geometry-> Repairing Operations-> Shape Processing
6403             """
6404             # Example: see GEOM_TestHealing.py
6405             theValues,Parameters = ParseList(theValues)
6406             anObj = self.HealOp.ProcessShape(theShape, theOperators, theParameters, theValues)
6407             # To avoid script failure in case of good argument shape
6408             if self.HealOp.GetErrorCode() == "ShHealOper_NotError_msg":
6409                 return theShape
6410             RaiseIfFailed("ProcessShape", self.HealOp)
6411             for string in (theOperators + theParameters):
6412                 Parameters = ":" + Parameters
6413                 pass
6414             anObj.SetParameters(Parameters)
6415             self._autoPublish(anObj, theName, "healed")
6416             return anObj
6417
6418         ## Remove faces from the given object (shape).
6419         #  @param theObject Shape to be processed.
6420         #  @param theFaces Indices of faces to be removed, if EMPTY then the method
6421         #                  removes ALL faces of the given object.
6422         #  @param theName Object name; when specified, this parameter is used
6423         #         for result publication in the study. Otherwise, if automatic
6424         #         publication is switched on, default value is used for result name.
6425         #
6426         #  @return New GEOM.GEOM_Object, containing processed shape.
6427         #
6428         #  @ref tui_suppress_faces "Example"
6429         @ManageTransactions("HealOp")
6430         def SuppressFaces(self, theObject, theFaces, theName=None):
6431             """
6432             Remove faces from the given object (shape).
6433
6434             Parameters:
6435                 theObject Shape to be processed.
6436                 theFaces Indices of faces to be removed, if EMPTY then the method
6437                          removes ALL faces of the given object.
6438                 theName Object name; when specified, this parameter is used
6439                         for result publication in the study. Otherwise, if automatic
6440                         publication is switched on, default value is used for result name.
6441
6442             Returns:
6443                 New GEOM.GEOM_Object, containing processed shape.
6444             """
6445             # Example: see GEOM_TestHealing.py
6446             anObj = self.HealOp.SuppressFaces(theObject, theFaces)
6447             RaiseIfFailed("SuppressFaces", self.HealOp)
6448             self._autoPublish(anObj, theName, "suppressFaces")
6449             return anObj
6450
6451         ## Sewing of faces into a single shell.
6452         #  @param ListShape Shapes to be processed.
6453         #  @param theTolerance Required tolerance value.
6454         #  @param AllowNonManifold Flag that allows non-manifold sewing.
6455         #  @param theName Object name; when specified, this parameter is used
6456         #         for result publication in the study. Otherwise, if automatic
6457         #         publication is switched on, default value is used for result name.
6458         #
6459         #  @return New GEOM.GEOM_Object, containing a result shell.
6460         #
6461         #  @ref tui_sewing "Example"
6462         def MakeSewing(self, ListShape, theTolerance, AllowNonManifold=False, theName=None):
6463             """
6464             Sewing of faces into a single shell.
6465
6466             Parameters:
6467                 ListShape Shapes to be processed.
6468                 theTolerance Required tolerance value.
6469                 AllowNonManifold Flag that allows non-manifold sewing.
6470                 theName Object name; when specified, this parameter is used
6471                         for result publication in the study. Otherwise, if automatic
6472                         publication is switched on, default value is used for result name.
6473
6474             Returns:
6475                 New GEOM.GEOM_Object, containing containing a result shell.
6476             """
6477             # Example: see GEOM_TestHealing.py
6478             # note: auto-publishing is done in self.Sew()
6479             anObj = self.Sew(ListShape, theTolerance, AllowNonManifold, theName)
6480             return anObj
6481
6482         ## Sewing of faces into a single shell.
6483         #  @param ListShape Shapes to be processed.
6484         #  @param theTolerance Required tolerance value.
6485         #  @param AllowNonManifold Flag that allows non-manifold sewing.
6486         #  @param theName Object name; when specified, this parameter is used
6487         #         for result publication in the study. Otherwise, if automatic
6488         #         publication is switched on, default value is used for result name.
6489         #
6490         #  @return New GEOM.GEOM_Object, containing a result shell.
6491         @ManageTransactions("HealOp")
6492         def Sew(self, ListShape, theTolerance, AllowNonManifold=False, theName=None):
6493             """
6494             Sewing of faces into a single shell.
6495
6496             Parameters:
6497                 ListShape Shapes to be processed.
6498                 theTolerance Required tolerance value.
6499                 AllowNonManifold Flag that allows non-manifold sewing.
6500                 theName Object name; when specified, this parameter is used
6501                         for result publication in the study. Otherwise, if automatic
6502                         publication is switched on, default value is used for result name.
6503
6504             Returns:
6505                 New GEOM.GEOM_Object, containing a result shell.
6506             """
6507             # Example: see MakeSewing() above
6508             theTolerance,Parameters = ParseParameters(theTolerance)
6509             if AllowNonManifold:
6510                 anObj = self.HealOp.SewAllowNonManifold( ToList( ListShape ), theTolerance)
6511             else:
6512                 anObj = self.HealOp.Sew( ToList( ListShape ), theTolerance)
6513             # To avoid script failure in case of good argument shape
6514             # (Fix of test cases geom/bugs11/L7,L8)
6515             if self.HealOp.GetErrorCode() == "ShHealOper_NotError_msg":
6516                 return anObj
6517             RaiseIfFailed("Sew", self.HealOp)
6518             anObj.SetParameters(Parameters)
6519             self._autoPublish(anObj, theName, "sewed")
6520             return anObj
6521
6522         ## Rebuild the topology of theSolids by removing
6523         #  the faces that are shared by several solids.
6524         #  @param theSolids A compound or a list of solids to be processed.
6525         #  @param theName Object name; when specified, this parameter is used
6526         #         for result publication in the study. Otherwise, if automatic
6527         #         publication is switched on, default value is used for result name.
6528         #
6529         #  @return New GEOM.GEOM_Object, containing processed shape.
6530         #
6531         #  @ref tui_remove_webs "Example"
6532         @ManageTransactions("HealOp")
6533         def RemoveInternalFaces (self, theSolids, theName=None):
6534             """
6535             Rebuild the topology of theSolids by removing
6536             the faces that are shared by several solids.
6537
6538             Parameters:
6539                 theSolids A compound or a list of solids to be processed.
6540                 theName Object name; when specified, this parameter is used
6541                         for result publication in the study. Otherwise, if automatic
6542                         publication is switched on, default value is used for result name.
6543
6544             Returns:
6545                 New GEOM.GEOM_Object, containing processed shape.
6546             """
6547             # Example: see GEOM_TestHealing.py
6548             anObj = self.HealOp.RemoveInternalFaces(ToList(theSolids))
6549             RaiseIfFailed("RemoveInternalFaces", self.HealOp)
6550             self._autoPublish(anObj, theName, "removeWebs")
6551             return anObj
6552
6553         ## Remove internal wires and edges from the given object (face).
6554         #  @param theObject Shape to be processed.
6555         #  @param theWires Indices of wires to be removed, if EMPTY then the method
6556         #                  removes ALL internal wires of the given object.
6557         #  @param theName Object name; when specified, this parameter is used
6558         #         for result publication in the study. Otherwise, if automatic
6559         #         publication is switched on, default value is used for result name.
6560         #
6561         #  @return New GEOM.GEOM_Object, containing processed shape.
6562         #
6563         #  @ref tui_suppress_internal_wires "Example"
6564         @ManageTransactions("HealOp")
6565         def SuppressInternalWires(self, theObject, theWires, theName=None):
6566             """
6567             Remove internal wires and edges from the given object (face).
6568
6569             Parameters:
6570                 theObject Shape to be processed.
6571                 theWires Indices of wires to be removed, if EMPTY then the method
6572                          removes ALL internal wires of the given object.
6573                 theName Object name; when specified, this parameter is used
6574                         for result publication in the study. Otherwise, if automatic
6575                         publication is switched on, default value is used for result name.
6576
6577             Returns:
6578                 New GEOM.GEOM_Object, containing processed shape.
6579             """
6580             # Example: see GEOM_TestHealing.py
6581             anObj = self.HealOp.RemoveIntWires(theObject, theWires)
6582             RaiseIfFailed("RemoveIntWires", self.HealOp)
6583             self._autoPublish(anObj, theName, "suppressWires")
6584             return anObj
6585
6586         ## Remove internal closed contours (holes) from the given object.
6587         #  @param theObject Shape to be processed.
6588         #  @param theWires Indices of wires to be removed, if EMPTY then the method
6589         #                  removes ALL internal holes of the given object
6590         #  @param theName Object name; when specified, this parameter is used
6591         #         for result publication in the study. Otherwise, if automatic
6592         #         publication is switched on, default value is used for result name.
6593         #
6594         #  @return New GEOM.GEOM_Object, containing processed shape.
6595         #
6596         #  @ref tui_suppress_holes "Example"
6597         @ManageTransactions("HealOp")
6598         def SuppressHoles(self, theObject, theWires, theName=None):
6599             """
6600             Remove internal closed contours (holes) from the given object.
6601
6602             Parameters:
6603                 theObject Shape to be processed.
6604                 theWires Indices of wires to be removed, if EMPTY then the method
6605                          removes ALL internal holes of the given object
6606                 theName Object name; when specified, this parameter is used
6607                         for result publication in the study. Otherwise, if automatic
6608                         publication is switched on, default value is used for result name.
6609
6610             Returns:
6611                 New GEOM.GEOM_Object, containing processed shape.
6612             """
6613             # Example: see GEOM_TestHealing.py
6614             anObj = self.HealOp.FillHoles(theObject, theWires)
6615             RaiseIfFailed("FillHoles", self.HealOp)
6616             self._autoPublish(anObj, theName, "suppressHoles")
6617             return anObj
6618
6619         ## Close an open wire.
6620         #  @param theObject Shape to be processed.
6621         #  @param theWires Indexes of edge(s) and wire(s) to be closed within <VAR>theObject</VAR>'s shape,
6622         #                  if [ ], then <VAR>theObject</VAR> itself is a wire.
6623         #  @param isCommonVertex If True  : closure by creation of a common vertex,
6624         #                        If False : closure by creation of an edge between ends.
6625         #  @param theName Object name; when specified, this parameter is used
6626         #         for result publication in the study. Otherwise, if automatic
6627         #         publication is switched on, default value is used for result name.
6628         #
6629         #  @return New GEOM.GEOM_Object, containing processed shape.
6630         #
6631         #  @ref tui_close_contour "Example"
6632         @ManageTransactions("HealOp")
6633         def CloseContour(self,theObject, theWires, isCommonVertex, theName=None):
6634             """
6635             Close an open wire.
6636
6637             Parameters:
6638                 theObject Shape to be processed.
6639                 theWires Indexes of edge(s) and wire(s) to be closed within theObject's shape,
6640                          if [ ], then theObject itself is a wire.
6641                 isCommonVertex If True  : closure by creation of a common vertex,
6642                                If False : closure by creation of an edge between ends.
6643                 theName Object name; when specified, this parameter is used
6644                         for result publication in the study. Otherwise, if automatic
6645                         publication is switched on, default value is used for result name.
6646
6647             Returns:
6648                 New GEOM.GEOM_Object, containing processed shape.
6649             """
6650             # Example: see GEOM_TestHealing.py
6651             anObj = self.HealOp.CloseContour(theObject, theWires, isCommonVertex)
6652             RaiseIfFailed("CloseContour", self.HealOp)
6653             self._autoPublish(anObj, theName, "closeContour")
6654             return anObj
6655
6656         ## Addition of a point to a given edge object.
6657         #  @param theObject Shape to be processed.
6658         #  @param theEdgeIndex Index of edge to be divided within theObject's shape,
6659         #                      if -1, then theObject itself is the edge.
6660         #  @param theValue Value of parameter on edge or length parameter,
6661         #                  depending on \a isByParameter.
6662         #  @param isByParameter If TRUE : \a theValue is treated as a curve parameter [0..1], \n
6663         #                       if FALSE : \a theValue is treated as a length parameter [0..1]
6664         #  @param theName Object name; when specified, this parameter is used
6665         #         for result publication in the study. Otherwise, if automatic
6666         #         publication is switched on, default value is used for result name.
6667         #
6668         #  @return New GEOM.GEOM_Object, containing processed shape.
6669         #
6670         #  @ref tui_add_point_on_edge "Example"
6671         @ManageTransactions("HealOp")
6672         def DivideEdge(self, theObject, theEdgeIndex, theValue, isByParameter, theName=None):
6673             """
6674             Addition of a point to a given edge object.
6675
6676             Parameters:
6677                 theObject Shape to be processed.
6678                 theEdgeIndex Index of edge to be divided within theObject's shape,
6679                              if -1, then theObject itself is the edge.
6680                 theValue Value of parameter on edge or length parameter,
6681                          depending on isByParameter.
6682                 isByParameter If TRUE :  theValue is treated as a curve parameter [0..1],
6683                               if FALSE : theValue is treated as a length parameter [0..1]
6684                 theName Object name; when specified, this parameter is used
6685                         for result publication in the study. Otherwise, if automatic
6686                         publication is switched on, default value is used for result name.
6687
6688             Returns:
6689                 New GEOM.GEOM_Object, containing processed shape.
6690             """
6691             # Example: see GEOM_TestHealing.py
6692             theEdgeIndex,theValue,isByParameter,Parameters = ParseParameters(theEdgeIndex,theValue,isByParameter)
6693             anObj = self.HealOp.DivideEdge(theObject, theEdgeIndex, theValue, isByParameter)
6694             RaiseIfFailed("DivideEdge", self.HealOp)
6695             anObj.SetParameters(Parameters)
6696             self._autoPublish(anObj, theName, "divideEdge")
6697             return anObj
6698
6699         ## Addition of a point to a given edge of \a theObject by projecting
6700         #  another point to the given edge.
6701         #  @param theObject Shape to be processed.
6702         #  @param theEdgeIndex Index of edge to be divided within theObject's shape,
6703         #                      if -1, then theObject itself is the edge.
6704         #  @param thePoint Point to project to theEdgeIndex-th edge.
6705         #  @param theName Object name; when specified, this parameter is used
6706         #         for result publication in the study. Otherwise, if automatic
6707         #         publication is switched on, default value is used for result name.
6708         #
6709         #  @return New GEOM.GEOM_Object, containing processed shape.
6710         #
6711         #  @ref tui_add_point_on_edge "Example"
6712         @ManageTransactions("HealOp")
6713         def DivideEdgeByPoint(self, theObject, theEdgeIndex, thePoint, theName=None):
6714             """
6715             Addition of a point to a given edge of \a theObject by projecting
6716             another point to the given edge.
6717
6718             Parameters:
6719                 theObject Shape to be processed.
6720                 theEdgeIndex The edge or its index to be divided within theObject's shape,
6721                              if -1, then theObject itself is the edge.
6722                 thePoint Point to project to theEdgeIndex-th edge.
6723                 theName Object name; when specified, this parameter is used
6724                         for result publication in the study. Otherwise, if automatic
6725                         publication is switched on, default value is used for result name.
6726
6727             Returns:
6728                 New GEOM.GEOM_Object, containing processed shape.
6729             """
6730             # Example: see GEOM_TestHealing.py
6731             if isinstance( theEdgeIndex, GEOM._objref_GEOM_Object ):
6732                 theEdgeIndex = self.GetSubShapeID( theObject, theEdgeIndex )
6733             anObj = self.HealOp.DivideEdgeByPoint(theObject, theEdgeIndex, thePoint)
6734             RaiseIfFailed("DivideEdgeByPoint", self.HealOp)
6735             self._autoPublish(anObj, theName, "divideEdge")
6736             return anObj
6737
6738         ## Suppress the vertices in the wire in case if adjacent edges are C1 continuous.
6739         #  @param theWire Wire to minimize the number of C1 continuous edges in.
6740         #  @param theVertices A list of vertices to suppress. If the list
6741         #                     is empty, all vertices in a wire will be assumed.
6742         #  @param theName Object name; when specified, this parameter is used
6743         #         for result publication in the study. Otherwise, if automatic
6744         #         publication is switched on, default value is used for result name.
6745         #
6746         #  @return New GEOM.GEOM_Object with modified wire.
6747         #
6748         #  @ref tui_fuse_collinear_edges "Example"
6749         @ManageTransactions("HealOp")
6750         def FuseCollinearEdgesWithinWire(self, theWire, theVertices = [], theName=None):
6751             """
6752             Suppress the vertices in the wire in case if adjacent edges are C1 continuous.
6753
6754             Parameters:
6755                 theWire Wire to minimize the number of C1 continuous edges in.
6756                 theVertices A list of vertices to suppress. If the list
6757                             is empty, all vertices in a wire will be assumed.
6758                 theName Object name; when specified, this parameter is used
6759                         for result publication in the study. Otherwise, if automatic
6760                         publication is switched on, default value is used for result name.
6761
6762             Returns:
6763                 New GEOM.GEOM_Object with modified wire.
6764             """
6765             anObj = self.HealOp.FuseCollinearEdgesWithinWire(theWire, theVertices)
6766             RaiseIfFailed("FuseCollinearEdgesWithinWire", self.HealOp)
6767             self._autoPublish(anObj, theName, "fuseEdges")
6768             return anObj
6769
6770         ## Change orientation of the given object. Updates given shape.
6771         #  @param theObject Shape to be processed.
6772         #  @return Updated <var>theObject</var>
6773         #
6774         #  @ref swig_todo "Example"
6775         @ManageTransactions("HealOp")
6776         def ChangeOrientationShell(self,theObject):
6777             """
6778             Change orientation of the given object. Updates given shape.
6779
6780             Parameters:
6781                 theObject Shape to be processed.
6782
6783             Returns:
6784                 Updated theObject
6785             """
6786             theObject = self.HealOp.ChangeOrientation(theObject)
6787             RaiseIfFailed("ChangeOrientation", self.HealOp)
6788             pass
6789
6790         ## Change orientation of the given object.
6791         #  @param theObject Shape to be processed.
6792         #  @param theName Object name; when specified, this parameter is used
6793         #         for result publication in the study. Otherwise, if automatic
6794         #         publication is switched on, default value is used for result name.
6795         #
6796         #  @return New GEOM.GEOM_Object, containing processed shape.
6797         #
6798         #  @ref swig_todo "Example"
6799         @ManageTransactions("HealOp")
6800         def ChangeOrientationShellCopy(self, theObject, theName=None):
6801             """
6802             Change orientation of the given object.
6803
6804             Parameters:
6805                 theObject Shape to be processed.
6806                 theName Object name; when specified, this parameter is used
6807                         for result publication in the study. Otherwise, if automatic
6808                         publication is switched on, default value is used for result name.
6809
6810             Returns:
6811                 New GEOM.GEOM_Object, containing processed shape.
6812             """
6813             anObj = self.HealOp.ChangeOrientationCopy(theObject)
6814             RaiseIfFailed("ChangeOrientationCopy", self.HealOp)
6815             self._autoPublish(anObj, theName, "reversed")
6816             return anObj
6817
6818         ## Try to limit tolerance of the given object by value \a theTolerance.
6819         #  @param theObject Shape to be processed.
6820         #  @param theTolerance Required tolerance value.
6821         #  @param theName Object name; when specified, this parameter is used
6822         #         for result publication in the study. Otherwise, if automatic
6823         #         publication is switched on, default value is used for result name.
6824         #
6825         #  @return New GEOM.GEOM_Object, containing processed shape.
6826         #
6827         #  @ref tui_limit_tolerance "Example"
6828         @ManageTransactions("HealOp")
6829         def LimitTolerance(self, theObject, theTolerance = 1e-07, theName=None):
6830             """
6831             Try to limit tolerance of the given object by value theTolerance.
6832
6833             Parameters:
6834                 theObject Shape to be processed.
6835                 theTolerance Required tolerance value.
6836                 theName Object name; when specified, this parameter is used
6837                         for result publication in the study. Otherwise, if automatic
6838                         publication is switched on, default value is used for result name.
6839
6840             Returns:
6841                 New GEOM.GEOM_Object, containing processed shape.
6842             """
6843             anObj = self.HealOp.LimitTolerance(theObject, theTolerance)
6844             RaiseIfFailed("LimitTolerance", self.HealOp)
6845             self._autoPublish(anObj, theName, "limitTolerance")
6846             return anObj
6847
6848         ## Get a list of wires (wrapped in GEOM.GEOM_Object-s),
6849         #  that constitute a free boundary of the given shape.
6850         #  @param theObject Shape to get free boundary of.
6851         #  @param theName Object name; when specified, this parameter is used
6852         #         for result publication in the study. Otherwise, if automatic
6853         #         publication is switched on, default value is used for result name.
6854         #
6855         #  @return [\a status, \a theClosedWires, \a theOpenWires]
6856         #  \n \a status: FALSE, if an error(s) occured during the method execution.
6857         #  \n \a theClosedWires: Closed wires on the free boundary of the given shape.
6858         #  \n \a theOpenWires: Open wires on the free boundary of the given shape.
6859         #
6860         #  @ref tui_measurement_tools_page "Example"
6861         @ManageTransactions("HealOp")
6862         def GetFreeBoundary(self, theObject, theName=None):
6863             """
6864             Get a list of wires (wrapped in GEOM.GEOM_Object-s),
6865             that constitute a free boundary of the given shape.
6866
6867             Parameters:
6868                 theObject Shape to get free boundary of.
6869                 theName Object name; when specified, this parameter is used
6870                         for result publication in the study. Otherwise, if automatic
6871                         publication is switched on, default value is used for result name.
6872
6873             Returns:
6874                 [status, theClosedWires, theOpenWires]
6875                  status: FALSE, if an error(s) occured during the method execution.
6876                  theClosedWires: Closed wires on the free boundary of the given shape.
6877                  theOpenWires: Open wires on the free boundary of the given shape.
6878             """
6879             # Example: see GEOM_TestHealing.py
6880             anObj = self.HealOp.GetFreeBoundary( ToList( theObject ))
6881             RaiseIfFailed("GetFreeBoundary", self.HealOp)
6882             self._autoPublish(anObj[1], theName, "closedWire")
6883             self._autoPublish(anObj[2], theName, "openWire")
6884             return anObj
6885
6886         ## Replace coincident faces in \a theShapes by one face.
6887         #  @param theShapes Initial shapes, either a list or compound of shapes.
6888         #  @param theTolerance Maximum distance between faces, which can be considered as coincident.
6889         #  @param doKeepNonSolids If FALSE, only solids will present in the result,
6890         #                         otherwise all initial shapes.
6891         #  @param theName Object name; when specified, this parameter is used
6892         #         for result publication in the study. Otherwise, if automatic
6893         #         publication is switched on, default value is used for result name.
6894         #
6895         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
6896         #
6897         #  @ref tui_glue_faces "Example"
6898         @ManageTransactions("ShapesOp")
6899         def MakeGlueFaces(self, theShapes, theTolerance, doKeepNonSolids=True, theName=None):
6900             """
6901             Replace coincident faces in theShapes by one face.
6902
6903             Parameters:
6904                 theShapes Initial shapes, either a list or compound of shapes.
6905                 theTolerance Maximum distance between faces, which can be considered as coincident.
6906                 doKeepNonSolids If FALSE, only solids will present in the result,
6907                                 otherwise all initial shapes.
6908                 theName Object name; when specified, this parameter is used
6909                         for result publication in the study. Otherwise, if automatic
6910                         publication is switched on, default value is used for result name.
6911
6912             Returns:
6913                 New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
6914             """
6915             # Example: see GEOM_Spanner.py
6916             theTolerance,Parameters = ParseParameters(theTolerance)
6917             anObj = self.ShapesOp.MakeGlueFaces(ToList(theShapes), theTolerance, doKeepNonSolids)
6918             if anObj is None:
6919                 raise RuntimeError, "MakeGlueFaces : " + self.ShapesOp.GetErrorCode()
6920             anObj.SetParameters(Parameters)
6921             self._autoPublish(anObj, theName, "glueFaces")
6922             return anObj
6923
6924         ## Find coincident faces in \a theShapes for possible gluing.
6925         #  @param theShapes Initial shapes, either a list or compound of shapes.
6926         #  @param theTolerance Maximum distance between faces,
6927         #                      which can be considered as coincident.
6928         #  @param theName Object name; when specified, this parameter is used
6929         #         for result publication in the study. Otherwise, if automatic
6930         #         publication is switched on, default value is used for result name.
6931         #
6932         #  @return GEOM.ListOfGO
6933         #
6934         #  @ref tui_glue_faces "Example"
6935         @ManageTransactions("ShapesOp")
6936         def GetGlueFaces(self, theShapes, theTolerance, theName=None):
6937             """
6938             Find coincident faces in theShapes for possible gluing.
6939
6940             Parameters:
6941                 theShapes Initial shapes, either a list or compound of shapes.
6942                 theTolerance Maximum distance between faces,
6943                              which can be considered as coincident.
6944                 theName Object name; when specified, this parameter is used
6945                         for result publication in the study. Otherwise, if automatic
6946                         publication is switched on, default value is used for result name.
6947
6948             Returns:
6949                 GEOM.ListOfGO
6950             """
6951             anObj = self.ShapesOp.GetGlueFaces(ToList(theShapes), theTolerance)
6952             RaiseIfFailed("GetGlueFaces", self.ShapesOp)
6953             self._autoPublish(anObj, theName, "facesToGlue")
6954             return anObj
6955
6956         ## Replace coincident faces in \a theShapes by one face
6957         #  in compliance with given list of faces
6958         #  @param theShapes Initial shapes, either a list or compound of shapes.
6959         #  @param theTolerance Maximum distance between faces,
6960         #                      which can be considered as coincident.
6961         #  @param theFaces List of faces for gluing.
6962         #  @param doKeepNonSolids If FALSE, only solids will present in the result,
6963         #                         otherwise all initial shapes.
6964         #  @param doGlueAllEdges If TRUE, all coincident edges of <VAR>theShape</VAR>
6965         #                        will be glued, otherwise only the edges,
6966         #                        belonging to <VAR>theFaces</VAR>.
6967         #  @param theName Object name; when specified, this parameter is used
6968         #         for result publication in the study. Otherwise, if automatic
6969         #         publication is switched on, default value is used for result name.
6970         #
6971         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
6972         #
6973         #  @ref tui_glue_faces "Example"
6974         @ManageTransactions("ShapesOp")
6975         def MakeGlueFacesByList(self, theShapes, theTolerance, theFaces,
6976                                 doKeepNonSolids=True, doGlueAllEdges=True, theName=None):
6977             """
6978             Replace coincident faces in theShapes by one face
6979             in compliance with given list of faces
6980
6981             Parameters:
6982                 theShapes theShapes Initial shapes, either a list or compound of shapes.
6983                 theTolerance Maximum distance between faces,
6984                              which can be considered as coincident.
6985                 theFaces List of faces for gluing.
6986                 doKeepNonSolids If FALSE, only solids will present in the result,
6987                                 otherwise all initial shapes.
6988                 doGlueAllEdges If TRUE, all coincident edges of theShape
6989                                will be glued, otherwise only the edges,
6990                                belonging to theFaces.
6991                 theName Object name; when specified, this parameter is used
6992                         for result publication in the study. Otherwise, if automatic
6993                         publication is switched on, default value is used for result name.
6994
6995             Returns:
6996                 New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
6997             """
6998             anObj = self.ShapesOp.MakeGlueFacesByList(ToList(theShapes), theTolerance, theFaces,
6999                                                       doKeepNonSolids, doGlueAllEdges)
7000             if anObj is None:
7001                 raise RuntimeError, "MakeGlueFacesByList : " + self.ShapesOp.GetErrorCode()
7002             self._autoPublish(anObj, theName, "glueFaces")
7003             return anObj
7004
7005         ## Replace coincident edges in \a theShapes by one edge.
7006         #  @param theShapes Initial shapes, either a list or compound of shapes.
7007         #  @param theTolerance Maximum distance between edges, which can be considered as coincident.
7008         #  @param theName Object name; when specified, this parameter is used
7009         #         for result publication in the study. Otherwise, if automatic
7010         #         publication is switched on, default value is used for result name.
7011         #
7012         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7013         #
7014         #  @ref tui_glue_edges "Example"
7015         @ManageTransactions("ShapesOp")
7016         def MakeGlueEdges(self, theShapes, theTolerance, theName=None):
7017             """
7018             Replace coincident edges in theShapes by one edge.
7019
7020             Parameters:
7021                 theShapes Initial shapes, either a list or compound of shapes.
7022                 theTolerance Maximum distance between edges, which can be considered as coincident.
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 copies of theShapes without coincident edges.
7029             """
7030             theTolerance,Parameters = ParseParameters(theTolerance)
7031             anObj = self.ShapesOp.MakeGlueEdges(ToList(theShapes), theTolerance)
7032             if anObj is None:
7033                 raise RuntimeError, "MakeGlueEdges : " + self.ShapesOp.GetErrorCode()
7034             anObj.SetParameters(Parameters)
7035             self._autoPublish(anObj, theName, "glueEdges")
7036             return anObj
7037
7038         ## Find coincident edges in \a theShapes for possible gluing.
7039         #  @param theShapes Initial shapes, either a list or compound of shapes.
7040         #  @param theTolerance Maximum distance between edges,
7041         #                      which can be considered as coincident.
7042         #  @param theName Object name; when specified, this parameter is used
7043         #         for result publication in the study. Otherwise, if automatic
7044         #         publication is switched on, default value is used for result name.
7045         #
7046         #  @return GEOM.ListOfGO
7047         #
7048         #  @ref tui_glue_edges "Example"
7049         @ManageTransactions("ShapesOp")
7050         def GetGlueEdges(self, theShapes, theTolerance, theName=None):
7051             """
7052             Find coincident edges in theShapes for possible gluing.
7053
7054             Parameters:
7055                 theShapes Initial shapes, either a list or compound of shapes.
7056                 theTolerance Maximum distance between edges,
7057                              which can be considered as coincident.
7058                 theName Object name; when specified, this parameter is used
7059                         for result publication in the study. Otherwise, if automatic
7060                         publication is switched on, default value is used for result name.
7061
7062             Returns:
7063                 GEOM.ListOfGO
7064             """
7065             anObj = self.ShapesOp.GetGlueEdges(ToList(theShapes), theTolerance)
7066             RaiseIfFailed("GetGlueEdges", self.ShapesOp)
7067             self._autoPublish(anObj, theName, "edgesToGlue")
7068             return anObj
7069
7070         ## Replace coincident edges in theShapes by one edge
7071         #  in compliance with given list of edges.
7072         #  @param theShapes Initial shapes, either a list or compound of shapes.
7073         #  @param theTolerance Maximum distance between edges,
7074         #                      which can be considered as coincident.
7075         #  @param theEdges List of edges for gluing.
7076         #  @param theName Object name; when specified, this parameter is used
7077         #         for result publication in the study. Otherwise, if automatic
7078         #         publication is switched on, default value is used for result name.
7079         #
7080         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7081         #
7082         #  @ref tui_glue_edges "Example"
7083         @ManageTransactions("ShapesOp")
7084         def MakeGlueEdgesByList(self, theShapes, theTolerance, theEdges, theName=None):
7085             """
7086             Replace coincident edges in theShapes by one edge
7087             in compliance with given list of edges.
7088
7089             Parameters:
7090                 theShapes Initial shapes, either a list or compound of shapes.
7091                 theTolerance Maximum distance between edges,
7092                              which can be considered as coincident.
7093                 theEdges List of edges for gluing.
7094                 theName Object name; when specified, this parameter is used
7095                         for result publication in the study. Otherwise, if automatic
7096                         publication is switched on, default value is used for result name.
7097
7098             Returns:
7099                 New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7100             """
7101             anObj = self.ShapesOp.MakeGlueEdgesByList(ToList(theShapes), theTolerance, theEdges)
7102             if anObj is None:
7103                 raise RuntimeError, "MakeGlueEdgesByList : " + self.ShapesOp.GetErrorCode()
7104             self._autoPublish(anObj, theName, "glueEdges")
7105             return anObj
7106
7107         # end of l3_healing
7108         ## @}
7109
7110         ## @addtogroup l3_boolean Boolean Operations
7111         ## @{
7112
7113         # -----------------------------------------------------------------------------
7114         # Boolean (Common, Cut, Fuse, Section)
7115         # -----------------------------------------------------------------------------
7116
7117         ## Perform one of boolean operations on two given shapes.
7118         #  @param theShape1 First argument for boolean operation.
7119         #  @param theShape2 Second argument for boolean operation.
7120         #  @param theOperation Indicates the operation to be done:\n
7121         #                      1 - Common, 2 - Cut, 3 - Fuse, 4 - Section.
7122         #  @param checkSelfInte The flag that tells if the arguments should
7123         #         be checked for self-intersection prior to the operation.
7124         #  @param theName Object name; when specified, this parameter is used
7125         #         for result publication in the study. Otherwise, if automatic
7126         #         publication is switched on, default value is used for result name.
7127         #
7128         #  @note This algorithm doesn't find all types of self-intersections.
7129         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7130         #        vertex/face and edge/face intersections. Face/face
7131         #        intersections detection is switched off as it is a
7132         #        time-consuming operation that gives an impact on performance.
7133         #        To find all self-intersections please use
7134         #        CheckSelfIntersections() method.
7135         #
7136         #  @return New GEOM.GEOM_Object, containing the result shape.
7137         #
7138         #  @ref tui_fuse "Example"
7139         @ManageTransactions("BoolOp")
7140         def MakeBoolean(self, theShape1, theShape2, theOperation, checkSelfInte=False, theName=None):
7141             """
7142             Perform one of boolean operations on two given shapes.
7143
7144             Parameters:
7145                 theShape1 First argument for boolean operation.
7146                 theShape2 Second argument for boolean operation.
7147                 theOperation Indicates the operation to be done:
7148                              1 - Common, 2 - Cut, 3 - Fuse, 4 - Section.
7149                 checkSelfInte The flag that tells if the arguments should
7150                               be checked for self-intersection prior to
7151                               the operation.
7152                 theName Object name; when specified, this parameter is used
7153                         for result publication in the study. Otherwise, if automatic
7154                         publication is switched on, default value is used for result name.
7155
7156             Note:
7157                     This algorithm doesn't find all types of self-intersections.
7158                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7159                     vertex/face and edge/face intersections. Face/face
7160                     intersections detection is switched off as it is a
7161                     time-consuming operation that gives an impact on performance.
7162                     To find all self-intersections please use
7163                     CheckSelfIntersections() method.
7164
7165             Returns:
7166                 New GEOM.GEOM_Object, containing the result shape.
7167             """
7168             # Example: see GEOM_TestAll.py
7169             anObj = self.BoolOp.MakeBoolean(theShape1, theShape2, theOperation, checkSelfInte)
7170             RaiseIfFailed("MakeBoolean", self.BoolOp)
7171             def_names = { 1: "common", 2: "cut", 3: "fuse", 4: "section" }
7172             self._autoPublish(anObj, theName, def_names[theOperation])
7173             return anObj
7174
7175         ## Perform Common boolean operation on two given shapes.
7176         #  @param theShape1 First argument for boolean operation.
7177         #  @param theShape2 Second argument for boolean operation.
7178         #  @param checkSelfInte The flag that tells if the arguments should
7179         #         be checked for self-intersection prior to the operation.
7180         #  @param theName Object name; when specified, this parameter is used
7181         #         for result publication in the study. Otherwise, if automatic
7182         #         publication is switched on, default value is used for result name.
7183         #
7184         #  @note This algorithm doesn't find all types of self-intersections.
7185         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7186         #        vertex/face and edge/face intersections. Face/face
7187         #        intersections detection is switched off as it is a
7188         #        time-consuming operation that gives an impact on performance.
7189         #        To find all self-intersections please use
7190         #        CheckSelfIntersections() method.
7191         #
7192         #  @return New GEOM.GEOM_Object, containing the result shape.
7193         #
7194         #  @ref tui_common "Example 1"
7195         #  \n @ref swig_MakeCommon "Example 2"
7196         def MakeCommon(self, theShape1, theShape2, checkSelfInte=False, theName=None):
7197             """
7198             Perform Common boolean operation on two given shapes.
7199
7200             Parameters:
7201                 theShape1 First argument for boolean operation.
7202                 theShape2 Second argument for boolean operation.
7203                 checkSelfInte The flag that tells if the arguments should
7204                               be checked for self-intersection prior to
7205                               the operation.
7206                 theName Object name; when specified, this parameter is used
7207                         for result publication in the study. Otherwise, if automatic
7208                         publication is switched on, default value is used for result name.
7209
7210             Note:
7211                     This algorithm doesn't find all types of self-intersections.
7212                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7213                     vertex/face and edge/face intersections. Face/face
7214                     intersections detection is switched off as it is a
7215                     time-consuming operation that gives an impact on performance.
7216                     To find all self-intersections please use
7217                     CheckSelfIntersections() method.
7218
7219             Returns:
7220                 New GEOM.GEOM_Object, containing the result shape.
7221             """
7222             # Example: see GEOM_TestOthers.py
7223             # note: auto-publishing is done in self.MakeBoolean()
7224             return self.MakeBoolean(theShape1, theShape2, 1, checkSelfInte, theName)
7225
7226         ## Perform Cut boolean operation on two given shapes.
7227         #  @param theShape1 First argument for boolean operation.
7228         #  @param theShape2 Second argument for boolean operation.
7229         #  @param checkSelfInte The flag that tells if the arguments should
7230         #         be checked for self-intersection prior to the operation.
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         #  @note This algorithm doesn't find all types of self-intersections.
7236         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7237         #        vertex/face and edge/face intersections. Face/face
7238         #        intersections detection is switched off as it is a
7239         #        time-consuming operation that gives an impact on performance.
7240         #        To find all self-intersections please use
7241         #        CheckSelfIntersections() method.
7242         #
7243         #  @return New GEOM.GEOM_Object, containing the result shape.
7244         #
7245         #  @ref tui_cut "Example 1"
7246         #  \n @ref swig_MakeCommon "Example 2"
7247         def MakeCut(self, theShape1, theShape2, checkSelfInte=False, theName=None):
7248             """
7249             Perform Cut boolean operation on two given shapes.
7250
7251             Parameters:
7252                 theShape1 First argument for boolean operation.
7253                 theShape2 Second argument for boolean operation.
7254                 checkSelfInte The flag that tells if the arguments should
7255                               be checked for self-intersection prior to
7256                               the operation.
7257                 theName Object name; when specified, this parameter is used
7258                         for result publication in the study. Otherwise, if automatic
7259                         publication is switched on, default value is used for result name.
7260
7261             Note:
7262                     This algorithm doesn't find all types of self-intersections.
7263                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7264                     vertex/face and edge/face intersections. Face/face
7265                     intersections detection is switched off as it is a
7266                     time-consuming operation that gives an impact on performance.
7267                     To find all self-intersections please use
7268                     CheckSelfIntersections() method.
7269
7270             Returns:
7271                 New GEOM.GEOM_Object, containing the result shape.
7272
7273             """
7274             # Example: see GEOM_TestOthers.py
7275             # note: auto-publishing is done in self.MakeBoolean()
7276             return self.MakeBoolean(theShape1, theShape2, 2, checkSelfInte, theName)
7277
7278         ## Perform Fuse boolean operation on two given shapes.
7279         #  @param theShape1 First argument for boolean operation.
7280         #  @param theShape2 Second argument for boolean operation.
7281         #  @param checkSelfInte The flag that tells if the arguments should
7282         #         be checked for self-intersection prior to the operation.
7283         #  @param rmExtraEdges The flag that tells if Remove Extra Edges
7284         #         operation should be performed during the operation.
7285         #  @param theName Object name; when specified, this parameter is used
7286         #         for result publication in the study. Otherwise, if automatic
7287         #         publication is switched on, default value is used for result name.
7288         #
7289         #  @note This algorithm doesn't find all types of self-intersections.
7290         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7291         #        vertex/face and edge/face intersections. Face/face
7292         #        intersections detection is switched off as it is a
7293         #        time-consuming operation that gives an impact on performance.
7294         #        To find all self-intersections please use
7295         #        CheckSelfIntersections() method.
7296         #
7297         #  @return New GEOM.GEOM_Object, containing the result shape.
7298         #
7299         #  @ref tui_fuse "Example 1"
7300         #  \n @ref swig_MakeCommon "Example 2"
7301         @ManageTransactions("BoolOp")
7302         def MakeFuse(self, theShape1, theShape2, checkSelfInte=False,
7303                      rmExtraEdges=False, theName=None):
7304             """
7305             Perform Fuse boolean operation on two given shapes.
7306
7307             Parameters:
7308                 theShape1 First argument for boolean operation.
7309                 theShape2 Second argument for boolean operation.
7310                 checkSelfInte The flag that tells if the arguments should
7311                               be checked for self-intersection prior to
7312                               the operation.
7313                 rmExtraEdges The flag that tells if Remove Extra Edges
7314                              operation should be performed during the operation.
7315                 theName Object name; when specified, this parameter is used
7316                         for result publication in the study. Otherwise, if automatic
7317                         publication is switched on, default value is used for result name.
7318
7319             Note:
7320                     This algorithm doesn't find all types of self-intersections.
7321                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7322                     vertex/face and edge/face intersections. Face/face
7323                     intersections detection is switched off as it is a
7324                     time-consuming operation that gives an impact on performance.
7325                     To find all self-intersections please use
7326                     CheckSelfIntersections() method.
7327
7328             Returns:
7329                 New GEOM.GEOM_Object, containing the result shape.
7330
7331             """
7332             # Example: see GEOM_TestOthers.py
7333             anObj = self.BoolOp.MakeFuse(theShape1, theShape2,
7334                                          checkSelfInte, rmExtraEdges)
7335             RaiseIfFailed("MakeFuse", self.BoolOp)
7336             self._autoPublish(anObj, theName, "fuse")
7337             return anObj
7338
7339         ## Perform Section boolean operation on two given shapes.
7340         #  @param theShape1 First argument for boolean operation.
7341         #  @param theShape2 Second argument for boolean operation.
7342         #  @param checkSelfInte The flag that tells if the arguments should
7343         #         be checked for self-intersection prior to the operation.
7344         #  @param theName Object name; when specified, this parameter is used
7345         #         for result publication in the study. Otherwise, if automatic
7346         #         publication is switched on, default value is used for result name.
7347         #
7348         #  @note This algorithm doesn't find all types of self-intersections.
7349         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7350         #        vertex/face and edge/face intersections. Face/face
7351         #        intersections detection is switched off as it is a
7352         #        time-consuming operation that gives an impact on performance.
7353         #        To find all self-intersections please use
7354         #        CheckSelfIntersections() method.
7355         #
7356         #  @return New GEOM.GEOM_Object, containing the result shape.
7357         #
7358         #  @ref tui_section "Example 1"
7359         #  \n @ref swig_MakeCommon "Example 2"
7360         def MakeSection(self, theShape1, theShape2, checkSelfInte=False, theName=None):
7361             """
7362             Perform Section boolean operation on two given shapes.
7363
7364             Parameters:
7365                 theShape1 First argument for boolean operation.
7366                 theShape2 Second argument for boolean operation.
7367                 checkSelfInte The flag that tells if the arguments should
7368                               be checked for self-intersection prior to
7369                               the operation.
7370                 theName Object name; when specified, this parameter is used
7371                         for result publication in the study. Otherwise, if automatic
7372                         publication is switched on, default value is used for result name.
7373
7374             Note:
7375                     This algorithm doesn't find all types of self-intersections.
7376                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7377                     vertex/face and edge/face intersections. Face/face
7378                     intersections detection is switched off as it is a
7379                     time-consuming operation that gives an impact on performance.
7380                     To find all self-intersections please use
7381                     CheckSelfIntersections() method.
7382
7383             Returns:
7384                 New GEOM.GEOM_Object, containing the result shape.
7385
7386             """
7387             # Example: see GEOM_TestOthers.py
7388             # note: auto-publishing is done in self.MakeBoolean()
7389             return self.MakeBoolean(theShape1, theShape2, 4, checkSelfInte, theName)
7390
7391         ## Perform Fuse boolean operation on the list of shapes.
7392         #  @param theShapesList Shapes to be fused.
7393         #  @param checkSelfInte The flag that tells if the arguments should
7394         #         be checked for self-intersection prior to the operation.
7395         #  @param rmExtraEdges The flag that tells if Remove Extra Edges
7396         #         operation should be performed during the operation.
7397         #  @param theName Object name; when specified, this parameter is used
7398         #         for result publication in the study. Otherwise, if automatic
7399         #         publication is switched on, default value is used for result name.
7400         #
7401         #  @note This algorithm doesn't find all types of self-intersections.
7402         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7403         #        vertex/face and edge/face intersections. Face/face
7404         #        intersections detection is switched off as it is a
7405         #        time-consuming operation that gives an impact on performance.
7406         #        To find all self-intersections please use
7407         #        CheckSelfIntersections() method.
7408         #
7409         #  @return New GEOM.GEOM_Object, containing the result shape.
7410         #
7411         #  @ref tui_fuse "Example 1"
7412         #  \n @ref swig_MakeCommon "Example 2"
7413         @ManageTransactions("BoolOp")
7414         def MakeFuseList(self, theShapesList, checkSelfInte=False,
7415                          rmExtraEdges=False, theName=None):
7416             """
7417             Perform Fuse boolean operation on the list of shapes.
7418
7419             Parameters:
7420                 theShapesList Shapes to be fused.
7421                 checkSelfInte The flag that tells if the arguments should
7422                               be checked for self-intersection prior to
7423                               the operation.
7424                 rmExtraEdges The flag that tells if Remove Extra Edges
7425                              operation should be performed during the operation.
7426                 theName Object name; when specified, this parameter is used
7427                         for result publication in the study. Otherwise, if automatic
7428                         publication is switched on, default value is used for result name.
7429
7430             Note:
7431                     This algorithm doesn't find all types of self-intersections.
7432                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7433                     vertex/face and edge/face intersections. Face/face
7434                     intersections detection is switched off as it is a
7435                     time-consuming operation that gives an impact on performance.
7436                     To find all self-intersections please use
7437                     CheckSelfIntersections() method.
7438
7439             Returns:
7440                 New GEOM.GEOM_Object, containing the result shape.
7441
7442             """
7443             # Example: see GEOM_TestOthers.py
7444             anObj = self.BoolOp.MakeFuseList(theShapesList, checkSelfInte,
7445                                              rmExtraEdges)
7446             RaiseIfFailed("MakeFuseList", self.BoolOp)
7447             self._autoPublish(anObj, theName, "fuse")
7448             return anObj
7449
7450         ## Perform Common boolean operation on the list of shapes.
7451         #  @param theShapesList Shapes for Common operation.
7452         #  @param checkSelfInte The flag that tells if the arguments should
7453         #         be checked for self-intersection prior to the operation.
7454         #  @param theName Object name; when specified, this parameter is used
7455         #         for result publication in the study. Otherwise, if automatic
7456         #         publication is switched on, default value is used for result name.
7457         #
7458         #  @note This algorithm doesn't find all types of self-intersections.
7459         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7460         #        vertex/face and edge/face intersections. Face/face
7461         #        intersections detection is switched off as it is a
7462         #        time-consuming operation that gives an impact on performance.
7463         #        To find all self-intersections please use
7464         #        CheckSelfIntersections() method.
7465         #
7466         #  @return New GEOM.GEOM_Object, containing the result shape.
7467         #
7468         #  @ref tui_common "Example 1"
7469         #  \n @ref swig_MakeCommon "Example 2"
7470         @ManageTransactions("BoolOp")
7471         def MakeCommonList(self, theShapesList, checkSelfInte=False, theName=None):
7472             """
7473             Perform Common boolean operation on the list of shapes.
7474
7475             Parameters:
7476                 theShapesList Shapes for Common operation.
7477                 checkSelfInte The flag that tells if the arguments should
7478                               be checked for self-intersection prior to
7479                               the operation.
7480                 theName Object name; when specified, this parameter is used
7481                         for result publication in the study. Otherwise, if automatic
7482                         publication is switched on, default value is used for result name.
7483
7484             Note:
7485                     This algorithm doesn't find all types of self-intersections.
7486                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7487                     vertex/face and edge/face intersections. Face/face
7488                     intersections detection is switched off as it is a
7489                     time-consuming operation that gives an impact on performance.
7490                     To find all self-intersections please use
7491                     CheckSelfIntersections() method.
7492
7493             Returns:
7494                 New GEOM.GEOM_Object, containing the result shape.
7495
7496             """
7497             # Example: see GEOM_TestOthers.py
7498             anObj = self.BoolOp.MakeCommonList(theShapesList, checkSelfInte)
7499             RaiseIfFailed("MakeCommonList", self.BoolOp)
7500             self._autoPublish(anObj, theName, "common")
7501             return anObj
7502
7503         ## Perform Cut boolean operation on one object and the list of tools.
7504         #  @param theMainShape The object of the operation.
7505         #  @param theShapesList The list of tools of the operation.
7506         #  @param checkSelfInte The flag that tells if the arguments should
7507         #         be checked for self-intersection prior to the operation.
7508         #  @param theName Object name; when specified, this parameter is used
7509         #         for result publication in the study. Otherwise, if automatic
7510         #         publication is switched on, default value is used for result name.
7511         #
7512         #  @note This algorithm doesn't find all types of self-intersections.
7513         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7514         #        vertex/face and edge/face intersections. Face/face
7515         #        intersections detection is switched off as it is a
7516         #        time-consuming operation that gives an impact on performance.
7517         #        To find all self-intersections please use
7518         #        CheckSelfIntersections() method.
7519         #
7520         #  @return New GEOM.GEOM_Object, containing the result shape.
7521         #
7522         #  @ref tui_cut "Example 1"
7523         #  \n @ref swig_MakeCommon "Example 2"
7524         @ManageTransactions("BoolOp")
7525         def MakeCutList(self, theMainShape, theShapesList, checkSelfInte=False, theName=None):
7526             """
7527             Perform Cut boolean operation on one object and the list of tools.
7528
7529             Parameters:
7530                 theMainShape The object of the operation.
7531                 theShapesList The list of tools of the operation.
7532                 checkSelfInte The flag that tells if the arguments should
7533                               be checked for self-intersection prior to
7534                               the operation.
7535                 theName Object name; when specified, this parameter is used
7536                         for result publication in the study. Otherwise, if automatic
7537                         publication is switched on, default value is used for result name.
7538
7539             Note:
7540                     This algorithm doesn't find all types of self-intersections.
7541                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7542                     vertex/face and edge/face intersections. Face/face
7543                     intersections detection is switched off as it is a
7544                     time-consuming operation that gives an impact on performance.
7545                     To find all self-intersections please use
7546                     CheckSelfIntersections() method.
7547
7548             Returns:
7549                 New GEOM.GEOM_Object, containing the result shape.
7550
7551             """
7552             # Example: see GEOM_TestOthers.py
7553             anObj = self.BoolOp.MakeCutList(theMainShape, theShapesList, checkSelfInte)
7554             RaiseIfFailed("MakeCutList", self.BoolOp)
7555             self._autoPublish(anObj, theName, "cut")
7556             return anObj
7557
7558         # end of l3_boolean
7559         ## @}
7560
7561         ## @addtogroup l3_basic_op
7562         ## @{
7563
7564         ## Perform partition operation.
7565         #  @param ListShapes Shapes to be intersected.
7566         #  @param ListTools Shapes to intersect theShapes.
7567         #  @param Limit Type of resulting shapes (see ShapeType()).\n
7568         #         If this parameter is set to -1 ("Auto"), most appropriate shape limit
7569         #         type will be detected automatically.
7570         #  @param KeepNonlimitShapes if this parameter == 0, then only shapes of
7571         #                             target type (equal to Limit) are kept in the result,
7572         #                             else standalone shapes of lower dimension
7573         #                             are kept also (if they exist).
7574         #
7575         #  @param theName Object name; when specified, this parameter is used
7576         #         for result publication in the study. Otherwise, if automatic
7577         #         publication is switched on, default value is used for result name.
7578         #
7579         #  @note Each compound from ListShapes and ListTools will be exploded
7580         #        in order to avoid possible intersection between shapes from this compound.
7581         #
7582         #  After implementation new version of PartitionAlgo (October 2006)
7583         #  other parameters are ignored by current functionality. They are kept
7584         #  in this function only for support old versions.
7585         #      @param ListKeepInside Shapes, outside which the results will be deleted.
7586         #         Each shape from theKeepInside must belong to theShapes also.
7587         #      @param ListRemoveInside Shapes, inside which the results will be deleted.
7588         #         Each shape from theRemoveInside must belong to theShapes also.
7589         #      @param RemoveWebs If TRUE, perform Glue 3D algorithm.
7590         #      @param ListMaterials Material indices for each shape. Make sence,
7591         #         only if theRemoveWebs is TRUE.
7592         #
7593         #  @return New GEOM.GEOM_Object, containing the result shapes.
7594         #
7595         #  @ref tui_partition "Example"
7596         @ManageTransactions("BoolOp")
7597         def MakePartition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
7598                           Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[],
7599                           KeepNonlimitShapes=0, theName=None):
7600             """
7601             Perform partition operation.
7602
7603             Parameters:
7604                 ListShapes Shapes to be intersected.
7605                 ListTools Shapes to intersect theShapes.
7606                 Limit Type of resulting shapes (see geompy.ShapeType)
7607                       If this parameter is set to -1 ("Auto"), most appropriate shape limit
7608                       type will be detected automatically.
7609                 KeepNonlimitShapes if this parameter == 0, then only shapes of
7610                                     target type (equal to Limit) are kept in the result,
7611                                     else standalone shapes of lower dimension
7612                                     are kept also (if they exist).
7613
7614                 theName Object name; when specified, this parameter is used
7615                         for result publication in the study. Otherwise, if automatic
7616                         publication is switched on, default value is used for result name.
7617             Note:
7618                     Each compound from ListShapes and ListTools will be exploded
7619                     in order to avoid possible intersection between shapes from
7620                     this compound.
7621
7622             After implementation new version of PartitionAlgo (October 2006) other
7623             parameters are ignored by current functionality. They are kept in this
7624             function only for support old versions.
7625
7626             Ignored parameters:
7627                 ListKeepInside Shapes, outside which the results will be deleted.
7628                                Each shape from theKeepInside must belong to theShapes also.
7629                 ListRemoveInside Shapes, inside which the results will be deleted.
7630                                  Each shape from theRemoveInside must belong to theShapes also.
7631                 RemoveWebs If TRUE, perform Glue 3D algorithm.
7632                 ListMaterials Material indices for each shape. Make sence, only if theRemoveWebs is TRUE.
7633
7634             Returns:
7635                 New GEOM.GEOM_Object, containing the result shapes.
7636             """
7637             # Example: see GEOM_TestAll.py
7638             if Limit == self.ShapeType["AUTO"]:
7639                 # automatic detection of the most appropriate shape limit type
7640                 lim = GEOM.SHAPE
7641                 for s in ListShapes: lim = min( lim, s.GetMaxShapeType() )
7642                 Limit = EnumToLong(lim)
7643                 pass
7644             anObj = self.BoolOp.MakePartition(ListShapes, ListTools,
7645                                               ListKeepInside, ListRemoveInside,
7646                                               Limit, RemoveWebs, ListMaterials,
7647                                               KeepNonlimitShapes);
7648             RaiseIfFailed("MakePartition", self.BoolOp)
7649             self._autoPublish(anObj, theName, "partition")
7650             return anObj
7651
7652         ## Perform partition operation.
7653         #  This method may be useful if it is needed to make a partition for
7654         #  compound contains nonintersected shapes. Performance will be better
7655         #  since intersection between shapes from compound is not performed.
7656         #
7657         #  Description of all parameters as in previous method MakePartition().
7658         #  One additional parameter is provided:
7659         #  @param checkSelfInte The flag that tells if the arguments should
7660         #         be checked for self-intersection prior to the operation.
7661         #
7662         #  @note This algorithm doesn't find all types of self-intersections.
7663         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7664         #        vertex/face and edge/face intersections. Face/face
7665         #        intersections detection is switched off as it is a
7666         #        time-consuming operation that gives an impact on performance.
7667         #        To find all self-intersections please use
7668         #        CheckSelfIntersections() method.
7669         #
7670         #  @note Passed compounds (via ListShapes or via ListTools)
7671         #           have to consist of nonintersecting shapes.
7672         #
7673         #  @return New GEOM.GEOM_Object, containing the result shapes.
7674         #
7675         #  @ref swig_todo "Example"
7676         @ManageTransactions("BoolOp")
7677         def MakePartitionNonSelfIntersectedShape(self, ListShapes, ListTools=[],
7678                                                  ListKeepInside=[], ListRemoveInside=[],
7679                                                  Limit=ShapeType["AUTO"], RemoveWebs=0,
7680                                                  ListMaterials=[], KeepNonlimitShapes=0,
7681                                                  checkSelfInte=False, theName=None):
7682             """
7683             Perform partition operation.
7684             This method may be useful if it is needed to make a partition for
7685             compound contains nonintersected shapes. Performance will be better
7686             since intersection between shapes from compound is not performed.
7687
7688             Parameters:
7689                 Description of all parameters as in method geompy.MakePartition.
7690                 One additional parameter is provided:
7691                 checkSelfInte The flag that tells if the arguments should
7692                               be checked for self-intersection prior to
7693                               the operation.
7694
7695             Note:
7696                     This algorithm doesn't find all types of self-intersections.
7697                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7698                     vertex/face and edge/face intersections. Face/face
7699                     intersections detection is switched off as it is a
7700                     time-consuming operation that gives an impact on performance.
7701                     To find all self-intersections please use
7702                     CheckSelfIntersections() method.
7703
7704             NOTE:
7705                 Passed compounds (via ListShapes or via ListTools)
7706                 have to consist of nonintersecting shapes.
7707
7708             Returns:
7709                 New GEOM.GEOM_Object, containing the result shapes.
7710             """
7711             if Limit == self.ShapeType["AUTO"]:
7712                 # automatic detection of the most appropriate shape limit type
7713                 lim = GEOM.SHAPE
7714                 for s in ListShapes: lim = min( lim, s.GetMaxShapeType() )
7715                 Limit = EnumToLong(lim)
7716                 pass
7717             anObj = self.BoolOp.MakePartitionNonSelfIntersectedShape(ListShapes, ListTools,
7718                                                                      ListKeepInside, ListRemoveInside,
7719                                                                      Limit, RemoveWebs, ListMaterials,
7720                                                                      KeepNonlimitShapes, checkSelfInte);
7721             RaiseIfFailed("MakePartitionNonSelfIntersectedShape", self.BoolOp)
7722             self._autoPublish(anObj, theName, "partition")
7723             return anObj
7724
7725         ## See method MakePartition() for more information.
7726         #
7727         #  @ref tui_partition "Example 1"
7728         #  \n @ref swig_Partition "Example 2"
7729         def Partition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
7730                       Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[],
7731                       KeepNonlimitShapes=0, theName=None):
7732             """
7733             See method geompy.MakePartition for more information.
7734             """
7735             # Example: see GEOM_TestOthers.py
7736             # note: auto-publishing is done in self.MakePartition()
7737             anObj = self.MakePartition(ListShapes, ListTools,
7738                                        ListKeepInside, ListRemoveInside,
7739                                        Limit, RemoveWebs, ListMaterials,
7740                                        KeepNonlimitShapes, theName);
7741             return anObj
7742
7743         ## Perform partition of the Shape with the Plane
7744         #  @param theShape Shape to be intersected.
7745         #  @param thePlane Tool shape, to intersect theShape.
7746         #  @param theName Object name; when specified, this parameter is used
7747         #         for result publication in the study. Otherwise, if automatic
7748         #         publication is switched on, default value is used for result name.
7749         #
7750         #  @return New GEOM.GEOM_Object, containing the result shape.
7751         #
7752         #  @ref tui_partition "Example"
7753         @ManageTransactions("BoolOp")
7754         def MakeHalfPartition(self, theShape, thePlane, theName=None):
7755             """
7756             Perform partition of the Shape with the Plane
7757
7758             Parameters:
7759                 theShape Shape to be intersected.
7760                 thePlane Tool shape, to intersect theShape.
7761                 theName Object name; when specified, this parameter is used
7762                         for result publication in the study. Otherwise, if automatic
7763                         publication is switched on, default value is used for result name.
7764
7765             Returns:
7766                 New GEOM.GEOM_Object, containing the result shape.
7767             """
7768             # Example: see GEOM_TestAll.py
7769             anObj = self.BoolOp.MakeHalfPartition(theShape, thePlane)
7770             RaiseIfFailed("MakeHalfPartition", self.BoolOp)
7771             self._autoPublish(anObj, theName, "partition")
7772             return anObj
7773
7774         # end of l3_basic_op
7775         ## @}
7776
7777         ## @addtogroup l3_transform
7778         ## @{
7779
7780         ## Translate the given object along the vector, specified
7781         #  by its end points.
7782         #  @param theObject The object to be translated.
7783         #  @param thePoint1 Start point of translation vector.
7784         #  @param thePoint2 End point of translation vector.
7785         #  @param theCopy Flag used to translate object itself or create a copy.
7786         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
7787         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
7788         @ManageTransactions("TrsfOp")
7789         def TranslateTwoPoints(self, theObject, thePoint1, thePoint2, theCopy=False):
7790             """
7791             Translate the given object along the vector, specified by its end points.
7792
7793             Parameters:
7794                 theObject The object to be translated.
7795                 thePoint1 Start point of translation vector.
7796                 thePoint2 End point of translation vector.
7797                 theCopy Flag used to translate object itself or create a copy.
7798
7799             Returns:
7800                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
7801                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
7802             """
7803             if theCopy:
7804                 anObj = self.TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
7805             else:
7806                 anObj = self.TrsfOp.TranslateTwoPoints(theObject, thePoint1, thePoint2)
7807             RaiseIfFailed("TranslateTwoPoints", self.TrsfOp)
7808             return anObj
7809
7810         ## Translate the given object along the vector, specified
7811         #  by its end points, creating its copy before the translation.
7812         #  @param theObject The object to be translated.
7813         #  @param thePoint1 Start point of translation vector.
7814         #  @param thePoint2 End point of translation vector.
7815         #  @param theName Object name; when specified, this parameter is used
7816         #         for result publication in the study. Otherwise, if automatic
7817         #         publication is switched on, default value is used for result name.
7818         #
7819         #  @return New GEOM.GEOM_Object, containing the translated object.
7820         #
7821         #  @ref tui_translation "Example 1"
7822         #  \n @ref swig_MakeTranslationTwoPoints "Example 2"
7823         @ManageTransactions("TrsfOp")
7824         def MakeTranslationTwoPoints(self, theObject, thePoint1, thePoint2, theName=None):
7825             """
7826             Translate the given object along the vector, specified
7827             by its end points, creating its copy before the translation.
7828
7829             Parameters:
7830                 theObject The object to be translated.
7831                 thePoint1 Start point of translation vector.
7832                 thePoint2 End point of translation vector.
7833                 theName Object name; when specified, this parameter is used
7834                         for result publication in the study. Otherwise, if automatic
7835                         publication is switched on, default value is used for result name.
7836
7837             Returns:
7838                 New GEOM.GEOM_Object, containing the translated object.
7839             """
7840             # Example: see GEOM_TestAll.py
7841             anObj = self.TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
7842             RaiseIfFailed("TranslateTwoPointsCopy", self.TrsfOp)
7843             self._autoPublish(anObj, theName, "translated")
7844             return anObj
7845
7846         ## Translate the given object along the vector, specified by its components.
7847         #  @param theObject The object to be translated.
7848         #  @param theDX,theDY,theDZ Components of translation vector.
7849         #  @param theCopy Flag used to translate object itself or create a copy.
7850         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
7851         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
7852         #
7853         #  @ref tui_translation "Example"
7854         @ManageTransactions("TrsfOp")
7855         def TranslateDXDYDZ(self, theObject, theDX, theDY, theDZ, theCopy=False):
7856             """
7857             Translate the given object along the vector, specified by its components.
7858
7859             Parameters:
7860                 theObject The object to be translated.
7861                 theDX,theDY,theDZ Components of translation vector.
7862                 theCopy Flag used to translate object itself or create a copy.
7863
7864             Returns:
7865                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
7866                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
7867             """
7868             # Example: see GEOM_TestAll.py
7869             theDX, theDY, theDZ, Parameters = ParseParameters(theDX, theDY, theDZ)
7870             if theCopy:
7871                 anObj = self.TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
7872             else:
7873                 anObj = self.TrsfOp.TranslateDXDYDZ(theObject, theDX, theDY, theDZ)
7874             anObj.SetParameters(Parameters)
7875             RaiseIfFailed("TranslateDXDYDZ", self.TrsfOp)
7876             return anObj
7877
7878         ## Translate the given object along the vector, specified
7879         #  by its components, creating its copy before the translation.
7880         #  @param theObject The object to be translated.
7881         #  @param theDX,theDY,theDZ Components of translation vector.
7882         #  @param theName Object name; when specified, this parameter is used
7883         #         for result publication in the study. Otherwise, if automatic
7884         #         publication is switched on, default value is used for result name.
7885         #
7886         #  @return New GEOM.GEOM_Object, containing the translated object.
7887         #
7888         #  @ref tui_translation "Example"
7889         @ManageTransactions("TrsfOp")
7890         def MakeTranslation(self,theObject, theDX, theDY, theDZ, theName=None):
7891             """
7892             Translate the given object along the vector, specified
7893             by its components, creating its copy before the translation.
7894
7895             Parameters:
7896                 theObject The object to be translated.
7897                 theDX,theDY,theDZ Components of translation vector.
7898                 theName Object name; when specified, this parameter is used
7899                         for result publication in the study. Otherwise, if automatic
7900                         publication is switched on, default value is used for result name.
7901
7902             Returns:
7903                 New GEOM.GEOM_Object, containing the translated object.
7904             """
7905             # Example: see GEOM_TestAll.py
7906             theDX, theDY, theDZ, Parameters = ParseParameters(theDX, theDY, theDZ)
7907             anObj = self.TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
7908             anObj.SetParameters(Parameters)
7909             RaiseIfFailed("TranslateDXDYDZ", self.TrsfOp)
7910             self._autoPublish(anObj, theName, "translated")
7911             return anObj
7912
7913         ## Translate the given object along the given vector.
7914         #  @param theObject The object to be translated.
7915         #  @param theVector The translation vector.
7916         #  @param theCopy Flag used to translate object itself or create a copy.
7917         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
7918         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
7919         @ManageTransactions("TrsfOp")
7920         def TranslateVector(self, theObject, theVector, theCopy=False):
7921             """
7922             Translate the given object along the given vector.
7923
7924             Parameters:
7925                 theObject The object to be translated.
7926                 theVector The translation vector.
7927                 theCopy Flag used to translate object itself or create a copy.
7928
7929             Returns:
7930                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
7931                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
7932             """
7933             if theCopy:
7934                 anObj = self.TrsfOp.TranslateVectorCopy(theObject, theVector)
7935             else:
7936                 anObj = self.TrsfOp.TranslateVector(theObject, theVector)
7937             RaiseIfFailed("TranslateVector", self.TrsfOp)
7938             return anObj
7939
7940         ## Translate the given object along the given vector,
7941         #  creating its copy before the translation.
7942         #  @param theObject The object to be translated.
7943         #  @param theVector The translation vector.
7944         #  @param theName Object name; when specified, this parameter is used
7945         #         for result publication in the study. Otherwise, if automatic
7946         #         publication is switched on, default value is used for result name.
7947         #
7948         #  @return New GEOM.GEOM_Object, containing the translated object.
7949         #
7950         #  @ref tui_translation "Example"
7951         @ManageTransactions("TrsfOp")
7952         def MakeTranslationVector(self, theObject, theVector, theName=None):
7953             """
7954             Translate the given object along the given vector,
7955             creating its copy before the translation.
7956
7957             Parameters:
7958                 theObject The object to be translated.
7959                 theVector The translation vector.
7960                 theName Object name; when specified, this parameter is used
7961                         for result publication in the study. Otherwise, if automatic
7962                         publication is switched on, default value is used for result name.
7963
7964             Returns:
7965                 New GEOM.GEOM_Object, containing the translated object.
7966             """
7967             # Example: see GEOM_TestAll.py
7968             anObj = self.TrsfOp.TranslateVectorCopy(theObject, theVector)
7969             RaiseIfFailed("TranslateVectorCopy", self.TrsfOp)
7970             self._autoPublish(anObj, theName, "translated")
7971             return anObj
7972
7973         ## Translate the given object along the given vector on given distance.
7974         #  @param theObject The object to be translated.
7975         #  @param theVector The translation vector.
7976         #  @param theDistance The translation distance.
7977         #  @param theCopy Flag used to translate object itself or create a copy.
7978         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
7979         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
7980         #
7981         #  @ref tui_translation "Example"
7982         @ManageTransactions("TrsfOp")
7983         def TranslateVectorDistance(self, theObject, theVector, theDistance, theCopy=False):
7984             """
7985             Translate the given object along the given vector on given distance.
7986
7987             Parameters:
7988                 theObject The object to be translated.
7989                 theVector The translation vector.
7990                 theDistance The translation distance.
7991                 theCopy Flag used to translate object itself or create a copy.
7992
7993             Returns:
7994                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
7995                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
7996             """
7997             # Example: see GEOM_TestAll.py
7998             theDistance,Parameters = ParseParameters(theDistance)
7999             anObj = self.TrsfOp.TranslateVectorDistance(theObject, theVector, theDistance, theCopy)
8000             RaiseIfFailed("TranslateVectorDistance", self.TrsfOp)
8001             anObj.SetParameters(Parameters)
8002             return anObj
8003
8004         ## Translate the given object along the given vector on given distance,
8005         #  creating its copy before the translation.
8006         #  @param theObject The object to be translated.
8007         #  @param theVector The translation vector.
8008         #  @param theDistance The translation distance.
8009         #  @param theName Object name; when specified, this parameter is used
8010         #         for result publication in the study. Otherwise, if automatic
8011         #         publication is switched on, default value is used for result name.
8012         #
8013         #  @return New GEOM.GEOM_Object, containing the translated object.
8014         #
8015         #  @ref tui_translation "Example"
8016         @ManageTransactions("TrsfOp")
8017         def MakeTranslationVectorDistance(self, theObject, theVector, theDistance, theName=None):
8018             """
8019             Translate the given object along the given vector on given distance,
8020             creating its copy before the translation.
8021
8022             Parameters:
8023                 theObject The object to be translated.
8024                 theVector The translation vector.
8025                 theDistance The translation distance.
8026                 theName Object name; when specified, this parameter is used
8027                         for result publication in the study. Otherwise, if automatic
8028                         publication is switched on, default value is used for result name.
8029
8030             Returns:
8031                 New GEOM.GEOM_Object, containing the translated object.
8032             """
8033             # Example: see GEOM_TestAll.py
8034             theDistance,Parameters = ParseParameters(theDistance)
8035             anObj = self.TrsfOp.TranslateVectorDistance(theObject, theVector, theDistance, 1)
8036             RaiseIfFailed("TranslateVectorDistance", self.TrsfOp)
8037             anObj.SetParameters(Parameters)
8038             self._autoPublish(anObj, theName, "translated")
8039             return anObj
8040
8041         ## Rotate the given object around the given axis on the given angle.
8042         #  @param theObject The object to be rotated.
8043         #  @param theAxis Rotation axis.
8044         #  @param theAngle Rotation angle in radians.
8045         #  @param theCopy Flag used to rotate object itself or create a copy.
8046         #
8047         #  @return Rotated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8048         #  new GEOM.GEOM_Object, containing the rotated object if @a theCopy flag is @c True.
8049         #
8050         #  @ref tui_rotation "Example"
8051         @ManageTransactions("TrsfOp")
8052         def Rotate(self, theObject, theAxis, theAngle, theCopy=False):
8053             """
8054             Rotate the given object around the given axis on the given angle.
8055
8056             Parameters:
8057                 theObject The object to be rotated.
8058                 theAxis Rotation axis.
8059                 theAngle Rotation angle in radians.
8060                 theCopy Flag used to rotate object itself or create a copy.
8061
8062             Returns:
8063                 Rotated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8064                 new GEOM.GEOM_Object, containing the rotated object if theCopy flag is True.
8065             """
8066             # Example: see GEOM_TestAll.py
8067             flag = False
8068             if isinstance(theAngle,str):
8069                 flag = True
8070             theAngle, Parameters = ParseParameters(theAngle)
8071             if flag:
8072                 theAngle = theAngle*math.pi/180.0
8073             if theCopy:
8074                 anObj = self.TrsfOp.RotateCopy(theObject, theAxis, theAngle)
8075             else:
8076                 anObj = self.TrsfOp.Rotate(theObject, theAxis, theAngle)
8077             RaiseIfFailed("Rotate", self.TrsfOp)
8078             anObj.SetParameters(Parameters)
8079             return anObj
8080
8081         ## Rotate the given object around the given axis
8082         #  on the given angle, creating its copy before the rotation.
8083         #  @param theObject The object to be rotated.
8084         #  @param theAxis Rotation axis.
8085         #  @param theAngle Rotation angle in radians.
8086         #  @param theName Object name; when specified, this parameter is used
8087         #         for result publication in the study. Otherwise, if automatic
8088         #         publication is switched on, default value is used for result name.
8089         #
8090         #  @return New GEOM.GEOM_Object, containing the rotated object.
8091         #
8092         #  @ref tui_rotation "Example"
8093         @ManageTransactions("TrsfOp")
8094         def MakeRotation(self, theObject, theAxis, theAngle, theName=None):
8095             """
8096             Rotate the given object around the given axis
8097             on the given angle, creating its copy before the rotatation.
8098
8099             Parameters:
8100                 theObject The object to be rotated.
8101                 theAxis Rotation axis.
8102                 theAngle Rotation angle in radians.
8103                 theName Object name; when specified, this parameter is used
8104                         for result publication in the study. Otherwise, if automatic
8105                         publication is switched on, default value is used for result name.
8106
8107             Returns:
8108                 New GEOM.GEOM_Object, containing the rotated object.
8109             """
8110             # Example: see GEOM_TestAll.py
8111             flag = False
8112             if isinstance(theAngle,str):
8113                 flag = True
8114             theAngle, Parameters = ParseParameters(theAngle)
8115             if flag:
8116                 theAngle = theAngle*math.pi/180.0
8117             anObj = self.TrsfOp.RotateCopy(theObject, theAxis, theAngle)
8118             RaiseIfFailed("RotateCopy", self.TrsfOp)
8119             anObj.SetParameters(Parameters)
8120             self._autoPublish(anObj, theName, "rotated")
8121             return anObj
8122
8123         ## Rotate given object around vector perpendicular to plane
8124         #  containing three points.
8125         #  @param theObject The object to be rotated.
8126         #  @param theCentPoint central point the axis is the vector perpendicular to the plane
8127         #  containing the three points.
8128         #  @param thePoint1,thePoint2 points in a perpendicular plane of the axis.
8129         #  @param theCopy Flag used to rotate object itself or create a copy.
8130         #  @return Rotated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8131         #  new GEOM.GEOM_Object, containing the rotated object if @a theCopy flag is @c True.
8132         @ManageTransactions("TrsfOp")
8133         def RotateThreePoints(self, theObject, theCentPoint, thePoint1, thePoint2, theCopy=False):
8134             """
8135             Rotate given object around vector perpendicular to plane
8136             containing three points.
8137
8138             Parameters:
8139                 theObject The object to be rotated.
8140                 theCentPoint central point  the axis is the vector perpendicular to the plane
8141                              containing the three points.
8142                 thePoint1,thePoint2 points in a perpendicular plane of the axis.
8143                 theCopy Flag used to rotate object itself or create a copy.
8144
8145             Returns:
8146                 Rotated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8147                 new GEOM.GEOM_Object, containing the rotated object if theCopy flag is True.
8148             """
8149             if theCopy:
8150                 anObj = self.TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
8151             else:
8152                 anObj = self.TrsfOp.RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2)
8153             RaiseIfFailed("RotateThreePoints", self.TrsfOp)
8154             return anObj
8155
8156         ## Rotate given object around vector perpendicular to plane
8157         #  containing three points, creating its copy before the rotatation.
8158         #  @param theObject The object to be rotated.
8159         #  @param theCentPoint central point the axis is the vector perpendicular to the plane
8160         #  containing the three points.
8161         #  @param thePoint1,thePoint2 in a perpendicular plane of the axis.
8162         #  @param theName Object name; when specified, this parameter is used
8163         #         for result publication in the study. Otherwise, if automatic
8164         #         publication is switched on, default value is used for result name.
8165         #
8166         #  @return New GEOM.GEOM_Object, containing the rotated object.
8167         #
8168         #  @ref tui_rotation "Example"
8169         @ManageTransactions("TrsfOp")
8170         def MakeRotationThreePoints(self, theObject, theCentPoint, thePoint1, thePoint2, theName=None):
8171             """
8172             Rotate given object around vector perpendicular to plane
8173             containing three points, creating its copy before the rotatation.
8174
8175             Parameters:
8176                 theObject The object to be rotated.
8177                 theCentPoint central point  the axis is the vector perpendicular to the plane
8178                              containing the three points.
8179                 thePoint1,thePoint2  in a perpendicular plane of the axis.
8180                 theName Object name; when specified, this parameter is used
8181                         for result publication in the study. Otherwise, if automatic
8182                         publication is switched on, default value is used for result name.
8183
8184             Returns:
8185                 New GEOM.GEOM_Object, containing the rotated object.
8186             """
8187             # Example: see GEOM_TestAll.py
8188             anObj = self.TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
8189             RaiseIfFailed("RotateThreePointsCopy", self.TrsfOp)
8190             self._autoPublish(anObj, theName, "rotated")
8191             return anObj
8192
8193         ## Scale the given object by the specified factor.
8194         #  @param theObject The object to be scaled.
8195         #  @param thePoint Center point for scaling.
8196         #                  Passing None for it means scaling relatively the origin of global CS.
8197         #  @param theFactor Scaling factor value.
8198         #  @param theCopy Flag used to scale object itself or create a copy.
8199         #  @return Scaled @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8200         #  new GEOM.GEOM_Object, containing the scaled object if @a theCopy flag is @c True.
8201         @ManageTransactions("TrsfOp")
8202         def Scale(self, theObject, thePoint, theFactor, theCopy=False):
8203             """
8204             Scale the given object by the specified factor.
8205
8206             Parameters:
8207                 theObject The object to be scaled.
8208                 thePoint Center point for scaling.
8209                          Passing None for it means scaling relatively the origin of global CS.
8210                 theFactor Scaling factor value.
8211                 theCopy Flag used to scale object itself or create a copy.
8212
8213             Returns:
8214                 Scaled theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8215                 new GEOM.GEOM_Object, containing the scaled object if theCopy flag is True.
8216             """
8217             # Example: see GEOM_TestAll.py
8218             theFactor, Parameters = ParseParameters(theFactor)
8219             if theCopy:
8220                 anObj = self.TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
8221             else:
8222                 anObj = self.TrsfOp.ScaleShape(theObject, thePoint, theFactor)
8223             RaiseIfFailed("Scale", self.TrsfOp)
8224             anObj.SetParameters(Parameters)
8225             return anObj
8226
8227         ## Scale the given object by the factor, creating its copy before the scaling.
8228         #  @param theObject The object to be scaled.
8229         #  @param thePoint Center point for scaling.
8230         #                  Passing None for it means scaling relatively the origin of global CS.
8231         #  @param theFactor Scaling factor value.
8232         #  @param theName Object name; when specified, this parameter is used
8233         #         for result publication in the study. Otherwise, if automatic
8234         #         publication is switched on, default value is used for result name.
8235         #
8236         #  @return New GEOM.GEOM_Object, containing the scaled shape.
8237         #
8238         #  @ref tui_scale "Example"
8239         @ManageTransactions("TrsfOp")
8240         def MakeScaleTransform(self, theObject, thePoint, theFactor, theName=None):
8241             """
8242             Scale the given object by the factor, creating its copy before the scaling.
8243
8244             Parameters:
8245                 theObject The object to be scaled.
8246                 thePoint Center point for scaling.
8247                          Passing None for it means scaling relatively the origin of global CS.
8248                 theFactor Scaling factor value.
8249                 theName Object name; when specified, this parameter is used
8250                         for result publication in the study. Otherwise, if automatic
8251                         publication is switched on, default value is used for result name.
8252
8253             Returns:
8254                 New GEOM.GEOM_Object, containing the scaled shape.
8255             """
8256             # Example: see GEOM_TestAll.py
8257             theFactor, Parameters = ParseParameters(theFactor)
8258             anObj = self.TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
8259             RaiseIfFailed("ScaleShapeCopy", self.TrsfOp)
8260             anObj.SetParameters(Parameters)
8261             self._autoPublish(anObj, theName, "scaled")
8262             return anObj
8263
8264         ## Scale the given object by different factors along coordinate axes.
8265         #  @param theObject The object to be scaled.
8266         #  @param thePoint Center point for scaling.
8267         #                  Passing None for it means scaling relatively the origin of global CS.
8268         #  @param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8269         #  @param theCopy Flag used to scale object itself or create a copy.
8270         #  @return Scaled @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8271         #  new GEOM.GEOM_Object, containing the scaled object if @a theCopy flag is @c True.
8272         @ManageTransactions("TrsfOp")
8273         def ScaleAlongAxes(self, theObject, thePoint, theFactorX, theFactorY, theFactorZ, theCopy=False):
8274             """
8275             Scale the given object by different factors along coordinate axes.
8276
8277             Parameters:
8278                 theObject The object to be scaled.
8279                 thePoint Center point for scaling.
8280                             Passing None for it means scaling relatively the origin of global CS.
8281                 theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8282                 theCopy Flag used to scale object itself or create a copy.
8283
8284             Returns:
8285                 Scaled theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8286                 new GEOM.GEOM_Object, containing the scaled object if theCopy flag is True.
8287             """
8288             # Example: see GEOM_TestAll.py
8289             theFactorX, theFactorY, theFactorZ, Parameters = ParseParameters(theFactorX, theFactorY, theFactorZ)
8290             if theCopy:
8291                 anObj = self.TrsfOp.ScaleShapeAlongAxesCopy(theObject, thePoint,
8292                                                             theFactorX, theFactorY, theFactorZ)
8293             else:
8294                 anObj = self.TrsfOp.ScaleShapeAlongAxes(theObject, thePoint,
8295                                                         theFactorX, theFactorY, theFactorZ)
8296             RaiseIfFailed("ScaleAlongAxes", self.TrsfOp)
8297             anObj.SetParameters(Parameters)
8298             return anObj
8299
8300         ## Scale the given object by different factors along coordinate axes,
8301         #  creating its copy before the scaling.
8302         #  @param theObject The object to be scaled.
8303         #  @param thePoint Center point for scaling.
8304         #                  Passing None for it means scaling relatively the origin of global CS.
8305         #  @param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8306         #  @param theName Object name; when specified, this parameter is used
8307         #         for result publication in the study. Otherwise, if automatic
8308         #         publication is switched on, default value is used for result name.
8309         #
8310         #  @return New GEOM.GEOM_Object, containing the scaled shape.
8311         #
8312         #  @ref swig_scale "Example"
8313         @ManageTransactions("TrsfOp")
8314         def MakeScaleAlongAxes(self, theObject, thePoint, theFactorX, theFactorY, theFactorZ, theName=None):
8315             """
8316             Scale the given object by different factors along coordinate axes,
8317             creating its copy before the scaling.
8318
8319             Parameters:
8320                 theObject The object to be scaled.
8321                 thePoint Center point for scaling.
8322                             Passing None for it means scaling relatively the origin of global CS.
8323                 theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8324                 theName Object name; when specified, this parameter is used
8325                         for result publication in the study. Otherwise, if automatic
8326                         publication is switched on, default value is used for result name.
8327
8328             Returns:
8329                 New GEOM.GEOM_Object, containing the scaled shape.
8330             """
8331             # Example: see GEOM_TestAll.py
8332             theFactorX, theFactorY, theFactorZ, Parameters = ParseParameters(theFactorX, theFactorY, theFactorZ)
8333             anObj = self.TrsfOp.ScaleShapeAlongAxesCopy(theObject, thePoint,
8334                                                         theFactorX, theFactorY, theFactorZ)
8335             RaiseIfFailed("MakeScaleAlongAxes", self.TrsfOp)
8336             anObj.SetParameters(Parameters)
8337             self._autoPublish(anObj, theName, "scaled")
8338             return anObj
8339
8340         ## Mirror an object relatively the given plane.
8341         #  @param theObject The object to be mirrored.
8342         #  @param thePlane Plane of symmetry.
8343         #  @param theCopy Flag used to mirror object itself or create a copy.
8344         #  @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8345         #  new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
8346         @ManageTransactions("TrsfOp")
8347         def MirrorByPlane(self, theObject, thePlane, theCopy=False):
8348             """
8349             Mirror an object relatively the given plane.
8350
8351             Parameters:
8352                 theObject The object to be mirrored.
8353                 thePlane Plane of symmetry.
8354                 theCopy Flag used to mirror object itself or create a copy.
8355
8356             Returns:
8357                 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8358                 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
8359             """
8360             if theCopy:
8361                 anObj = self.TrsfOp.MirrorPlaneCopy(theObject, thePlane)
8362             else:
8363                 anObj = self.TrsfOp.MirrorPlane(theObject, thePlane)
8364             RaiseIfFailed("MirrorByPlane", self.TrsfOp)
8365             return anObj
8366
8367         ## Create an object, symmetrical
8368         #  to the given one relatively the given plane.
8369         #  @param theObject The object to be mirrored.
8370         #  @param thePlane Plane of symmetry.
8371         #  @param theName Object name; when specified, this parameter is used
8372         #         for result publication in the study. Otherwise, if automatic
8373         #         publication is switched on, default value is used for result name.
8374         #
8375         #  @return New GEOM.GEOM_Object, containing the mirrored shape.
8376         #
8377         #  @ref tui_mirror "Example"
8378         @ManageTransactions("TrsfOp")
8379         def MakeMirrorByPlane(self, theObject, thePlane, theName=None):
8380             """
8381             Create an object, symmetrical to the given one relatively the given plane.
8382
8383             Parameters:
8384                 theObject The object to be mirrored.
8385                 thePlane Plane of symmetry.
8386                 theName Object name; when specified, this parameter is used
8387                         for result publication in the study. Otherwise, if automatic
8388                         publication is switched on, default value is used for result name.
8389
8390             Returns:
8391                 New GEOM.GEOM_Object, containing the mirrored shape.
8392             """
8393             # Example: see GEOM_TestAll.py
8394             anObj = self.TrsfOp.MirrorPlaneCopy(theObject, thePlane)
8395             RaiseIfFailed("MirrorPlaneCopy", self.TrsfOp)
8396             self._autoPublish(anObj, theName, "mirrored")
8397             return anObj
8398
8399         ## Mirror an object relatively the given axis.
8400         #  @param theObject The object to be mirrored.
8401         #  @param theAxis Axis of symmetry.
8402         #  @param theCopy Flag used to mirror object itself or create a copy.
8403         #  @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8404         #  new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
8405         @ManageTransactions("TrsfOp")
8406         def MirrorByAxis(self, theObject, theAxis, theCopy=False):
8407             """
8408             Mirror an object relatively the given axis.
8409
8410             Parameters:
8411                 theObject The object to be mirrored.
8412                 theAxis Axis of symmetry.
8413                 theCopy Flag used to mirror object itself or create a copy.
8414
8415             Returns:
8416                 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8417                 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
8418             """
8419             if theCopy:
8420                 anObj = self.TrsfOp.MirrorAxisCopy(theObject, theAxis)
8421             else:
8422                 anObj = self.TrsfOp.MirrorAxis(theObject, theAxis)
8423             RaiseIfFailed("MirrorByAxis", self.TrsfOp)
8424             return anObj
8425
8426         ## Create an object, symmetrical
8427         #  to the given one relatively the given axis.
8428         #  @param theObject The object to be mirrored.
8429         #  @param theAxis Axis of symmetry.
8430         #  @param theName Object name; when specified, this parameter is used
8431         #         for result publication in the study. Otherwise, if automatic
8432         #         publication is switched on, default value is used for result name.
8433         #
8434         #  @return New GEOM.GEOM_Object, containing the mirrored shape.
8435         #
8436         #  @ref tui_mirror "Example"
8437         @ManageTransactions("TrsfOp")
8438         def MakeMirrorByAxis(self, theObject, theAxis, theName=None):
8439             """
8440             Create an object, symmetrical to the given one relatively the given axis.
8441
8442             Parameters:
8443                 theObject The object to be mirrored.
8444                 theAxis Axis of symmetry.
8445                 theName Object name; when specified, this parameter is used
8446                         for result publication in the study. Otherwise, if automatic
8447                         publication is switched on, default value is used for result name.
8448
8449             Returns:
8450                 New GEOM.GEOM_Object, containing the mirrored shape.
8451             """
8452             # Example: see GEOM_TestAll.py
8453             anObj = self.TrsfOp.MirrorAxisCopy(theObject, theAxis)
8454             RaiseIfFailed("MirrorAxisCopy", self.TrsfOp)
8455             self._autoPublish(anObj, theName, "mirrored")
8456             return anObj
8457
8458         ## Mirror an object relatively the given point.
8459         #  @param theObject The object to be mirrored.
8460         #  @param thePoint Point of symmetry.
8461         #  @param theCopy Flag used to mirror object itself or create a copy.
8462         #  @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8463         #  new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
8464         @ManageTransactions("TrsfOp")
8465         def MirrorByPoint(self, theObject, thePoint, theCopy=False):
8466             """
8467             Mirror an object relatively the given point.
8468
8469             Parameters:
8470                 theObject The object to be mirrored.
8471                 thePoint Point of symmetry.
8472                 theCopy Flag used to mirror object itself or create a copy.
8473
8474             Returns:
8475                 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8476                 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
8477             """
8478             # Example: see GEOM_TestAll.py
8479             if theCopy:
8480                 anObj = self.TrsfOp.MirrorPointCopy(theObject, thePoint)
8481             else:
8482                 anObj = self.TrsfOp.MirrorPoint(theObject, thePoint)
8483             RaiseIfFailed("MirrorByPoint", self.TrsfOp)
8484             return anObj
8485
8486         ## Create an object, symmetrical
8487         #  to the given one relatively the given point.
8488         #  @param theObject The object to be mirrored.
8489         #  @param thePoint Point of symmetry.
8490         #  @param theName Object name; when specified, this parameter is used
8491         #         for result publication in the study. Otherwise, if automatic
8492         #         publication is switched on, default value is used for result name.
8493         #
8494         #  @return New GEOM.GEOM_Object, containing the mirrored shape.
8495         #
8496         #  @ref tui_mirror "Example"
8497         @ManageTransactions("TrsfOp")
8498         def MakeMirrorByPoint(self, theObject, thePoint, theName=None):
8499             """
8500             Create an object, symmetrical
8501             to the given one relatively the given point.
8502
8503             Parameters:
8504                 theObject The object to be mirrored.
8505                 thePoint Point of symmetry.
8506                 theName Object name; when specified, this parameter is used
8507                         for result publication in the study. Otherwise, if automatic
8508                         publication is switched on, default value is used for result name.
8509
8510             Returns:
8511                 New GEOM.GEOM_Object, containing the mirrored shape.
8512             """
8513             # Example: see GEOM_TestAll.py
8514             anObj = self.TrsfOp.MirrorPointCopy(theObject, thePoint)
8515             RaiseIfFailed("MirrorPointCopy", self.TrsfOp)
8516             self._autoPublish(anObj, theName, "mirrored")
8517             return anObj
8518
8519         ## Modify the location of the given object.
8520         #  @param theObject The object to be displaced.
8521         #  @param theStartLCS Coordinate system to perform displacement from it.\n
8522         #                     If \a theStartLCS is NULL, displacement
8523         #                     will be performed from global CS.\n
8524         #                     If \a theObject itself is used as \a theStartLCS,
8525         #                     its location will be changed to \a theEndLCS.
8526         #  @param theEndLCS Coordinate system to perform displacement to it.
8527         #  @param theCopy Flag used to displace object itself or create a copy.
8528         #  @return Displaced @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8529         #  new GEOM.GEOM_Object, containing the displaced object if @a theCopy flag is @c True.
8530         @ManageTransactions("TrsfOp")
8531         def Position(self, theObject, theStartLCS, theEndLCS, theCopy=False):
8532             """
8533             Modify the Location of the given object by LCS, creating its copy before the setting.
8534
8535             Parameters:
8536                 theObject The object to be displaced.
8537                 theStartLCS Coordinate system to perform displacement from it.
8538                             If theStartLCS is NULL, displacement
8539                             will be performed from global CS.
8540                             If theObject itself is used as theStartLCS,
8541                             its location will be changed to theEndLCS.
8542                 theEndLCS Coordinate system to perform displacement to it.
8543                 theCopy Flag used to displace object itself or create a copy.
8544
8545             Returns:
8546                 Displaced theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8547                 new GEOM.GEOM_Object, containing the displaced object if theCopy flag is True.
8548             """
8549             # Example: see GEOM_TestAll.py
8550             if theCopy:
8551                 anObj = self.TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
8552             else:
8553                 anObj = self.TrsfOp.PositionShape(theObject, theStartLCS, theEndLCS)
8554             RaiseIfFailed("Displace", self.TrsfOp)
8555             return anObj
8556
8557         ## Modify the Location of the given object by LCS,
8558         #  creating its copy before the setting.
8559         #  @param theObject The object to be displaced.
8560         #  @param theStartLCS Coordinate system to perform displacement from it.\n
8561         #                     If \a theStartLCS is NULL, displacement
8562         #                     will be performed from global CS.\n
8563         #                     If \a theObject itself is used as \a theStartLCS,
8564         #                     its location will be changed to \a theEndLCS.
8565         #  @param theEndLCS Coordinate system to perform displacement to it.
8566         #  @param theName Object name; when specified, this parameter is used
8567         #         for result publication in the study. Otherwise, if automatic
8568         #         publication is switched on, default value is used for result name.
8569         #
8570         #  @return New GEOM.GEOM_Object, containing the displaced shape.
8571         #
8572         #  @ref tui_modify_location "Example"
8573         @ManageTransactions("TrsfOp")
8574         def MakePosition(self, theObject, theStartLCS, theEndLCS, theName=None):
8575             """
8576             Modify the Location of the given object by LCS, creating its copy before the setting.
8577
8578             Parameters:
8579                 theObject The object to be displaced.
8580                 theStartLCS Coordinate system to perform displacement from it.
8581                             If theStartLCS is NULL, displacement
8582                             will be performed from global CS.
8583                             If theObject itself is used as theStartLCS,
8584                             its location will be changed to theEndLCS.
8585                 theEndLCS Coordinate system to perform displacement to it.
8586                 theName Object name; when specified, this parameter is used
8587                         for result publication in the study. Otherwise, if automatic
8588                         publication is switched on, default value is used for result name.
8589
8590             Returns:
8591                 New GEOM.GEOM_Object, containing the displaced shape.
8592
8593             Example of usage:
8594                 # create local coordinate systems
8595                 cs1 = geompy.MakeMarker( 0, 0, 0, 1,0,0, 0,1,0)
8596                 cs2 = geompy.MakeMarker(30,40,40, 1,0,0, 0,1,0)
8597                 # modify the location of the given object
8598                 position = geompy.MakePosition(cylinder, cs1, cs2)
8599             """
8600             # Example: see GEOM_TestAll.py
8601             anObj = self.TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
8602             RaiseIfFailed("PositionShapeCopy", self.TrsfOp)
8603             self._autoPublish(anObj, theName, "displaced")
8604             return anObj
8605
8606         ## Modify the Location of the given object by Path.
8607         #  @param  theObject The object to be displaced.
8608         #  @param  thePath Wire or Edge along that the object will be translated.
8609         #  @param  theDistance progress of Path (0 = start location, 1 = end of path location).
8610         #  @param  theCopy is to create a copy objects if true.
8611         #  @param  theReverse  0 - for usual direction, 1 - to reverse path direction.
8612         #  @return Displaced @a theObject (GEOM.GEOM_Object) if @a theCopy is @c False or
8613         #          new GEOM.GEOM_Object, containing the displaced shape if @a theCopy is @c True.
8614         #
8615         #  @ref tui_modify_location "Example"
8616         @ManageTransactions("TrsfOp")
8617         def PositionAlongPath(self,theObject, thePath, theDistance, theCopy, theReverse):
8618             """
8619             Modify the Location of the given object by Path.
8620
8621             Parameters:
8622                  theObject The object to be displaced.
8623                  thePath Wire or Edge along that the object will be translated.
8624                  theDistance progress of Path (0 = start location, 1 = end of path location).
8625                  theCopy is to create a copy objects if true.
8626                  theReverse  0 - for usual direction, 1 - to reverse path direction.
8627
8628             Returns:
8629                  Displaced theObject (GEOM.GEOM_Object) if theCopy is False or
8630                  new GEOM.GEOM_Object, containing the displaced shape if theCopy is True.
8631
8632             Example of usage:
8633                 position = geompy.PositionAlongPath(cylinder, circle, 0.75, 1, 1)
8634             """
8635             # Example: see GEOM_TestAll.py
8636             anObj = self.TrsfOp.PositionAlongPath(theObject, thePath, theDistance, theCopy, theReverse)
8637             RaiseIfFailed("PositionAlongPath", self.TrsfOp)
8638             return anObj
8639
8640         ## Modify the Location of the given object by Path, creating its copy before the operation.
8641         #  @param theObject The object to be displaced.
8642         #  @param thePath Wire or Edge along that the object will be translated.
8643         #  @param theDistance progress of Path (0 = start location, 1 = end of path location).
8644         #  @param theReverse  0 - for usual direction, 1 - to reverse path direction.
8645         #  @param theName Object name; when specified, this parameter is used
8646         #         for result publication in the study. Otherwise, if automatic
8647         #         publication is switched on, default value is used for result name.
8648         #
8649         #  @return New GEOM.GEOM_Object, containing the displaced shape.
8650         @ManageTransactions("TrsfOp")
8651         def MakePositionAlongPath(self, theObject, thePath, theDistance, theReverse, theName=None):
8652             """
8653             Modify the Location of the given object by Path, creating its copy before the operation.
8654
8655             Parameters:
8656                  theObject The object to be displaced.
8657                  thePath Wire or Edge along that the object will be translated.
8658                  theDistance progress of Path (0 = start location, 1 = end of path location).
8659                  theReverse  0 - for usual direction, 1 - to reverse path direction.
8660                  theName Object name; when specified, this parameter is used
8661                          for result publication in the study. Otherwise, if automatic
8662                          publication is switched on, default value is used for result name.
8663
8664             Returns:
8665                 New GEOM.GEOM_Object, containing the displaced shape.
8666             """
8667             # Example: see GEOM_TestAll.py
8668             anObj = self.TrsfOp.PositionAlongPath(theObject, thePath, theDistance, 1, theReverse)
8669             RaiseIfFailed("PositionAlongPath", self.TrsfOp)
8670             self._autoPublish(anObj, theName, "displaced")
8671             return anObj
8672
8673         ## Offset given shape.
8674         #  @param theObject The base object for the offset.
8675         #  @param theOffset Offset value.
8676         #  @param theCopy Flag used to offset object itself or create a copy.
8677         #  @return Modified @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8678         #  new GEOM.GEOM_Object, containing the result of offset operation if @a theCopy flag is @c True.
8679         @ManageTransactions("TrsfOp")
8680         def Offset(self, theObject, theOffset, theCopy=False):
8681             """
8682             Offset given shape.
8683
8684             Parameters:
8685                 theObject The base object for the offset.
8686                 theOffset Offset value.
8687                 theCopy Flag used to offset object itself or create a copy.
8688
8689             Returns:
8690                 Modified theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8691                 new GEOM.GEOM_Object, containing the result of offset operation if theCopy flag is True.
8692             """
8693             theOffset, Parameters = ParseParameters(theOffset)
8694             if theCopy:
8695                 anObj = self.TrsfOp.OffsetShapeCopy(theObject, theOffset)
8696             else:
8697                 anObj = self.TrsfOp.OffsetShape(theObject, theOffset)
8698             RaiseIfFailed("Offset", self.TrsfOp)
8699             anObj.SetParameters(Parameters)
8700             return anObj
8701
8702         ## Create new object as offset of the given one.
8703         #  @param theObject The base object for the offset.
8704         #  @param theOffset Offset value.
8705         #  @param theName Object name; when specified, this parameter is used
8706         #         for result publication in the study. Otherwise, if automatic
8707         #         publication is switched on, default value is used for result name.
8708         #
8709         #  @return New GEOM.GEOM_Object, containing the offset object.
8710         #
8711         #  @ref tui_offset "Example"
8712         @ManageTransactions("TrsfOp")
8713         def MakeOffset(self, theObject, theOffset, theName=None):
8714             """
8715             Create new object as offset of the given one.
8716
8717             Parameters:
8718                 theObject The base object for the offset.
8719                 theOffset Offset value.
8720                 theName Object name; when specified, this parameter is used
8721                         for result publication in the study. Otherwise, if automatic
8722                         publication is switched on, default value is used for result name.
8723
8724             Returns:
8725                 New GEOM.GEOM_Object, containing the offset object.
8726
8727             Example of usage:
8728                  box = geompy.MakeBox(20, 20, 20, 200, 200, 200)
8729                  # create a new object as offset of the given object
8730                  offset = geompy.MakeOffset(box, 70.)
8731             """
8732             # Example: see GEOM_TestAll.py
8733             theOffset, Parameters = ParseParameters(theOffset)
8734             anObj = self.TrsfOp.OffsetShapeCopy(theObject, theOffset)
8735             RaiseIfFailed("OffsetShapeCopy", self.TrsfOp)
8736             anObj.SetParameters(Parameters)
8737             self._autoPublish(anObj, theName, "offset")
8738             return anObj
8739
8740         ## Create new object as projection of the given one on a 2D surface.
8741         #  @param theSource The source object for the projection. It can be a point, edge or wire.
8742         #  @param theTarget The target object. It can be planar or cylindrical face.
8743         #  @param theName Object name; when specified, this parameter is used
8744         #         for result publication in the study. Otherwise, if automatic
8745         #         publication is switched on, default value is used for result name.
8746         #
8747         #  @return New GEOM.GEOM_Object, containing the projection.
8748         #
8749         #  @ref tui_projection "Example"
8750         @ManageTransactions("TrsfOp")
8751         def MakeProjection(self, theSource, theTarget, theName=None):
8752             """
8753             Create new object as projection of the given one on a 2D surface.
8754
8755             Parameters:
8756                 theSource The source object for the projection. It can be a point, edge or wire.
8757                 theTarget The target object. It can be planar or cylindrical face.
8758                 theName Object name; when specified, this parameter is used
8759                         for result publication in the study. Otherwise, if automatic
8760                         publication is switched on, default value is used for result name.
8761
8762             Returns:
8763                 New GEOM.GEOM_Object, containing the projection.
8764             """
8765             # Example: see GEOM_TestAll.py
8766             anObj = self.TrsfOp.ProjectShapeCopy(theSource, theTarget)
8767             RaiseIfFailed("ProjectShapeCopy", self.TrsfOp)
8768             self._autoPublish(anObj, theName, "projection")
8769             return anObj
8770
8771         ## Create a projection projection of the given point on a wire or an edge.
8772         #  If there are no solutions or there are 2 or more solutions It throws an
8773         #  exception.
8774         #  @param thePoint the point to be projected.
8775         #  @param theWire the wire. The edge is accepted as well.
8776         #  @param theName Object name; when specified, this parameter is used
8777         #         for result publication in the study. Otherwise, if automatic
8778         #         publication is switched on, default value is used for result name.
8779         #
8780         #  @return [\a u, \a PointOnEdge, \a EdgeInWireIndex]
8781         #  \n \a u: The parameter of projection point on edge.
8782         #  \n \a PointOnEdge: The projection point.
8783         #  \n \a EdgeInWireIndex: The index of an edge in a wire.
8784         #
8785         #  @ref tui_projection "Example"
8786         @ManageTransactions("TrsfOp")
8787         def MakeProjectionOnWire(self, thePoint, theWire, theName=None):
8788             """
8789             Create a projection projection of the given point on a wire or an edge.
8790             If there are no solutions or there are 2 or more solutions It throws an
8791             exception.
8792
8793             Parameters:
8794                 thePoint the point to be projected.
8795                 theWire the wire. The edge is accepted as well.
8796                 theName Object name; when specified, this parameter is used
8797                         for result publication in the study. Otherwise, if automatic
8798                         publication is switched on, default value is used for result name.
8799
8800             Returns:
8801                 [u, PointOnEdge, EdgeInWireIndex]
8802                  u: The parameter of projection point on edge.
8803                  PointOnEdge: The projection point.
8804                  EdgeInWireIndex: The index of an edge in a wire.
8805             """
8806             # Example: see GEOM_TestAll.py
8807             anObj = self.TrsfOp.ProjectPointOnWire(thePoint, theWire)
8808             RaiseIfFailed("ProjectPointOnWire", self.TrsfOp)
8809             self._autoPublish(anObj[1], theName, "projection")
8810             return anObj
8811
8812         # -----------------------------------------------------------------------------
8813         # Patterns
8814         # -----------------------------------------------------------------------------
8815
8816         ## Translate the given object along the given vector a given number times
8817         #  @param theObject The object to be translated.
8818         #  @param theVector Direction of the translation. DX if None.
8819         #  @param theStep Distance to translate on.
8820         #  @param theNbTimes Quantity of translations to be done.
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 compound of all
8826         #          the shapes, obtained after each translation.
8827         #
8828         #  @ref tui_multi_translation "Example"
8829         @ManageTransactions("TrsfOp")
8830         def MakeMultiTranslation1D(self, theObject, theVector, theStep, theNbTimes, theName=None):
8831             """
8832             Translate the given object along the given vector a given number times
8833
8834             Parameters:
8835                 theObject The object to be translated.
8836                 theVector Direction of the translation. DX if None.
8837                 theStep Distance to translate on.
8838                 theNbTimes Quantity of translations to be done.
8839                 theName Object name; when specified, this parameter is used
8840                         for result publication in the study. Otherwise, if automatic
8841                         publication is switched on, default value is used for result name.
8842
8843             Returns:
8844                 New GEOM.GEOM_Object, containing compound of all
8845                 the shapes, obtained after each translation.
8846
8847             Example of usage:
8848                 r1d = geompy.MakeMultiTranslation1D(prism, vect, 20, 4)
8849             """
8850             # Example: see GEOM_TestAll.py
8851             theStep, theNbTimes, Parameters = ParseParameters(theStep, theNbTimes)
8852             anObj = self.TrsfOp.MultiTranslate1D(theObject, theVector, theStep, theNbTimes)
8853             RaiseIfFailed("MultiTranslate1D", self.TrsfOp)
8854             anObj.SetParameters(Parameters)
8855             self._autoPublish(anObj, theName, "multitranslation")
8856             return anObj
8857
8858         ## Conseqently apply two specified translations to theObject specified number of times.
8859         #  @param theObject The object to be translated.
8860         #  @param theVector1 Direction of the first translation. DX if None.
8861         #  @param theStep1 Step of the first translation.
8862         #  @param theNbTimes1 Quantity of translations to be done along theVector1.
8863         #  @param theVector2 Direction of the second translation. DY if None.
8864         #  @param theStep2 Step of the second translation.
8865         #  @param theNbTimes2 Quantity of translations to be done along theVector2.
8866         #  @param theName Object name; when specified, this parameter is used
8867         #         for result publication in the study. Otherwise, if automatic
8868         #         publication is switched on, default value is used for result name.
8869         #
8870         #  @return New GEOM.GEOM_Object, containing compound of all
8871         #          the shapes, obtained after each translation.
8872         #
8873         #  @ref tui_multi_translation "Example"
8874         @ManageTransactions("TrsfOp")
8875         def MakeMultiTranslation2D(self, theObject, theVector1, theStep1, theNbTimes1,
8876                                    theVector2, theStep2, theNbTimes2, theName=None):
8877             """
8878             Conseqently apply two specified translations to theObject specified number of times.
8879
8880             Parameters:
8881                 theObject The object to be translated.
8882                 theVector1 Direction of the first translation. DX if None.
8883                 theStep1 Step of the first translation.
8884                 theNbTimes1 Quantity of translations to be done along theVector1.
8885                 theVector2 Direction of the second translation. DY if None.
8886                 theStep2 Step of the second translation.
8887                 theNbTimes2 Quantity of translations to be done along theVector2.
8888                 theName Object name; when specified, this parameter is used
8889                         for result publication in the study. Otherwise, if automatic
8890                         publication is switched on, default value is used for result name.
8891
8892             Returns:
8893                 New GEOM.GEOM_Object, containing compound of all
8894                 the shapes, obtained after each translation.
8895
8896             Example of usage:
8897                 tr2d = geompy.MakeMultiTranslation2D(prism, vect1, 20, 4, vect2, 80, 3)
8898             """
8899             # Example: see GEOM_TestAll.py
8900             theStep1,theNbTimes1,theStep2,theNbTimes2, Parameters = ParseParameters(theStep1,theNbTimes1,theStep2,theNbTimes2)
8901             anObj = self.TrsfOp.MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
8902                                                  theVector2, theStep2, theNbTimes2)
8903             RaiseIfFailed("MultiTranslate2D", self.TrsfOp)
8904             anObj.SetParameters(Parameters)
8905             self._autoPublish(anObj, theName, "multitranslation")
8906             return anObj
8907
8908         ## Rotate the given object around the given axis a given number times.
8909         #  Rotation angle will be 2*PI/theNbTimes.
8910         #  @param theObject The object to be rotated.
8911         #  @param theAxis The rotation axis. DZ if None.
8912         #  @param theNbTimes Quantity of rotations to be done.
8913         #  @param theName Object name; when specified, this parameter is used
8914         #         for result publication in the study. Otherwise, if automatic
8915         #         publication is switched on, default value is used for result name.
8916         #
8917         #  @return New GEOM.GEOM_Object, containing compound of all the
8918         #          shapes, obtained after each rotation.
8919         #
8920         #  @ref tui_multi_rotation "Example"
8921         @ManageTransactions("TrsfOp")
8922         def MultiRotate1DNbTimes (self, theObject, theAxis, theNbTimes, theName=None):
8923             """
8924             Rotate the given object around the given axis a given number times.
8925             Rotation angle will be 2*PI/theNbTimes.
8926
8927             Parameters:
8928                 theObject The object to be rotated.
8929                 theAxis The rotation axis. DZ if None.
8930                 theNbTimes Quantity of rotations to be done.
8931                 theName Object name; when specified, this parameter is used
8932                         for result publication in the study. Otherwise, if automatic
8933                         publication is switched on, default value is used for result name.
8934
8935             Returns:
8936                 New GEOM.GEOM_Object, containing compound of all the
8937                 shapes, obtained after each rotation.
8938
8939             Example of usage:
8940                 rot1d = geompy.MultiRotate1DNbTimes(prism, vect, 4)
8941             """
8942             # Example: see GEOM_TestAll.py
8943             theNbTimes, Parameters = ParseParameters(theNbTimes)
8944             anObj = self.TrsfOp.MultiRotate1D(theObject, theAxis, theNbTimes)
8945             RaiseIfFailed("MultiRotate1DNbTimes", self.TrsfOp)
8946             anObj.SetParameters(Parameters)
8947             self._autoPublish(anObj, theName, "multirotation")
8948             return anObj
8949
8950         ## Rotate the given object around the given axis
8951         #  a given number times on the given angle.
8952         #  @param theObject The object to be rotated.
8953         #  @param theAxis The rotation axis. DZ if None.
8954         #  @param theAngleStep Rotation angle in radians.
8955         #  @param theNbTimes Quantity of rotations to be done.
8956         #  @param theName Object name; when specified, this parameter is used
8957         #         for result publication in the study. Otherwise, if automatic
8958         #         publication is switched on, default value is used for result name.
8959         #
8960         #  @return New GEOM.GEOM_Object, containing compound of all the
8961         #          shapes, obtained after each rotation.
8962         #
8963         #  @ref tui_multi_rotation "Example"
8964         @ManageTransactions("TrsfOp")
8965         def MultiRotate1DByStep(self, theObject, theAxis, theAngleStep, theNbTimes, theName=None):
8966             """
8967             Rotate the given object around the given axis
8968             a given number times on the given angle.
8969
8970             Parameters:
8971                 theObject The object to be rotated.
8972                 theAxis The rotation axis. DZ if None.
8973                 theAngleStep Rotation angle in radians.
8974                 theNbTimes Quantity of rotations to be done.
8975                 theName Object name; when specified, this parameter is used
8976                         for result publication in the study. Otherwise, if automatic
8977                         publication is switched on, default value is used for result name.
8978
8979             Returns:
8980                 New GEOM.GEOM_Object, containing compound of all the
8981                 shapes, obtained after each rotation.
8982
8983             Example of usage:
8984                 rot1d = geompy.MultiRotate1DByStep(prism, vect, math.pi/4, 4)
8985             """
8986             # Example: see GEOM_TestAll.py
8987             theAngleStep, theNbTimes, Parameters = ParseParameters(theAngleStep, theNbTimes)
8988             anObj = self.TrsfOp.MultiRotate1DByStep(theObject, theAxis, theAngleStep, theNbTimes)
8989             RaiseIfFailed("MultiRotate1DByStep", self.TrsfOp)
8990             anObj.SetParameters(Parameters)
8991             self._autoPublish(anObj, theName, "multirotation")
8992             return anObj
8993
8994         ## Rotate the given object around the given axis a given
8995         #  number times and multi-translate each rotation result.
8996         #  Rotation angle will be 2*PI/theNbTimes1.
8997         #  Translation direction passes through center of gravity
8998         #  of rotated shape and its projection on the rotation axis.
8999         #  @param theObject The object to be rotated.
9000         #  @param theAxis Rotation axis. DZ if None.
9001         #  @param theNbTimes1 Quantity of rotations to be done.
9002         #  @param theRadialStep Translation distance.
9003         #  @param theNbTimes2 Quantity of translations to be done.
9004         #  @param theName Object name; when specified, this parameter is used
9005         #         for result publication in the study. Otherwise, if automatic
9006         #         publication is switched on, default value is used for result name.
9007         #
9008         #  @return New GEOM.GEOM_Object, containing compound of all the
9009         #          shapes, obtained after each transformation.
9010         #
9011         #  @ref tui_multi_rotation "Example"
9012         @ManageTransactions("TrsfOp")
9013         def MultiRotate2DNbTimes(self, theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
9014             """
9015             Rotate the given object around the
9016             given axis on the given angle a given number
9017             times and multi-translate each rotation result.
9018             Translation direction passes through center of gravity
9019             of rotated shape and its projection on the rotation axis.
9020
9021             Parameters:
9022                 theObject The object to be rotated.
9023                 theAxis Rotation axis. DZ if None.
9024                 theNbTimes1 Quantity of rotations to be done.
9025                 theRadialStep Translation distance.
9026                 theNbTimes2 Quantity of translations to be done.
9027                 theName Object name; when specified, this parameter is used
9028                         for result publication in the study. Otherwise, if automatic
9029                         publication is switched on, default value is used for result name.
9030
9031             Returns:
9032                 New GEOM.GEOM_Object, containing compound of all the
9033                 shapes, obtained after each transformation.
9034
9035             Example of usage:
9036                 rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
9037             """
9038             # Example: see GEOM_TestAll.py
9039             theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theNbTimes1, theRadialStep, theNbTimes2)
9040             anObj = self.TrsfOp.MultiRotate2DNbTimes(theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2)
9041             RaiseIfFailed("MultiRotate2DNbTimes", self.TrsfOp)
9042             anObj.SetParameters(Parameters)
9043             self._autoPublish(anObj, theName, "multirotation")
9044             return anObj
9045
9046         ## Rotate the given object around the
9047         #  given axis on the given angle a given number
9048         #  times and multi-translate each rotation result.
9049         #  Translation direction passes through center of gravity
9050         #  of rotated shape and its projection on the rotation axis.
9051         #  @param theObject The object to be rotated.
9052         #  @param theAxis Rotation axis. DZ if None.
9053         #  @param theAngleStep Rotation angle in radians.
9054         #  @param theNbTimes1 Quantity of rotations to be done.
9055         #  @param theRadialStep Translation distance.
9056         #  @param theNbTimes2 Quantity of translations to be done.
9057         #  @param theName Object name; when specified, this parameter is used
9058         #         for result publication in the study. Otherwise, if automatic
9059         #         publication is switched on, default value is used for result name.
9060         #
9061         #  @return New GEOM.GEOM_Object, containing compound of all the
9062         #          shapes, obtained after each transformation.
9063         #
9064         #  @ref tui_multi_rotation "Example"
9065         @ManageTransactions("TrsfOp")
9066         def MultiRotate2DByStep (self, theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
9067             """
9068             Rotate the given object around the
9069             given axis on the given angle a given number
9070             times and multi-translate each rotation result.
9071             Translation direction passes through center of gravity
9072             of rotated shape and its projection on the rotation axis.
9073
9074             Parameters:
9075                 theObject The object to be rotated.
9076                 theAxis Rotation axis. DZ if None.
9077                 theAngleStep Rotation angle in radians.
9078                 theNbTimes1 Quantity of rotations to be done.
9079                 theRadialStep Translation distance.
9080                 theNbTimes2 Quantity of translations to be done.
9081                 theName Object name; when specified, this parameter is used
9082                         for result publication in the study. Otherwise, if automatic
9083                         publication is switched on, default value is used for result name.
9084
9085             Returns:
9086                 New GEOM.GEOM_Object, containing compound of all the
9087                 shapes, obtained after each transformation.
9088
9089             Example of usage:
9090                 rot2d = geompy.MultiRotate2D(prism, vect, math.pi/3, 4, 50, 5)
9091             """
9092             # Example: see GEOM_TestAll.py
9093             theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
9094             anObj = self.TrsfOp.MultiRotate2DByStep(theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
9095             RaiseIfFailed("MultiRotate2DByStep", self.TrsfOp)
9096             anObj.SetParameters(Parameters)
9097             self._autoPublish(anObj, theName, "multirotation")
9098             return anObj
9099
9100         ## The same, as MultiRotate1DNbTimes(), but axis is given by direction and point
9101         #
9102         #  @ref swig_MakeMultiRotation "Example"
9103         def MakeMultiRotation1DNbTimes(self, aShape, aDir, aPoint, aNbTimes, theName=None):
9104             """
9105             The same, as geompy.MultiRotate1DNbTimes, but axis is given by direction and point
9106
9107             Example of usage:
9108                 pz = geompy.MakeVertex(0, 0, 100)
9109                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9110                 MultiRot1D = geompy.MakeMultiRotation1DNbTimes(prism, vy, pz, 6)
9111             """
9112             # Example: see GEOM_TestOthers.py
9113             aVec = self.MakeLine(aPoint,aDir)
9114             # note: auto-publishing is done in self.MultiRotate1D()
9115             anObj = self.MultiRotate1DNbTimes(aShape, aVec, aNbTimes, theName)
9116             return anObj
9117
9118         ## The same, as MultiRotate1DByStep(), but axis is given by direction and point
9119         #
9120         #  @ref swig_MakeMultiRotation "Example"
9121         def MakeMultiRotation1DByStep(self, aShape, aDir, aPoint, anAngle, aNbTimes, theName=None):
9122             """
9123             The same, as geompy.MultiRotate1D, but axis is given by direction and point
9124
9125             Example of usage:
9126                 pz = geompy.MakeVertex(0, 0, 100)
9127                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9128                 MultiRot1D = geompy.MakeMultiRotation1DByStep(prism, vy, pz, math.pi/3, 6)
9129             """
9130             # Example: see GEOM_TestOthers.py
9131             aVec = self.MakeLine(aPoint,aDir)
9132             # note: auto-publishing is done in self.MultiRotate1D()
9133             anObj = self.MultiRotate1DByStep(aShape, aVec, anAngle, aNbTimes, theName)
9134             return anObj
9135
9136         ## The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
9137         #
9138         #  @ref swig_MakeMultiRotation "Example"
9139         def MakeMultiRotation2DNbTimes(self, aShape, aDir, aPoint, nbtimes1, aStep, nbtimes2, theName=None):
9140             """
9141             The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
9142
9143             Example of usage:
9144                 pz = geompy.MakeVertex(0, 0, 100)
9145                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9146                 MultiRot2D = geompy.MakeMultiRotation2DNbTimes(f12, vy, pz, 6, 30, 3)
9147             """
9148             # Example: see GEOM_TestOthers.py
9149             aVec = self.MakeLine(aPoint,aDir)
9150             # note: auto-publishing is done in self.MultiRotate2DNbTimes()
9151             anObj = self.MultiRotate2DNbTimes(aShape, aVec, nbtimes1, aStep, nbtimes2, theName)
9152             return anObj
9153
9154         ## The same, as MultiRotate2DByStep(), but axis is given by direction and point
9155         #
9156         #  @ref swig_MakeMultiRotation "Example"
9157         def MakeMultiRotation2DByStep(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
9158             """
9159             The same, as MultiRotate2DByStep(), but axis is given by direction and point
9160
9161             Example of usage:
9162                 pz = geompy.MakeVertex(0, 0, 100)
9163                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9164                 MultiRot2D = geompy.MakeMultiRotation2DByStep(f12, vy, pz, math.pi/4, 6, 30, 3)
9165             """
9166             # Example: see GEOM_TestOthers.py
9167             aVec = self.MakeLine(aPoint,aDir)
9168             # note: auto-publishing is done in self.MultiRotate2D()
9169             anObj = self.MultiRotate2DByStep(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
9170             return anObj
9171
9172         # end of l3_transform
9173         ## @}
9174
9175         ## @addtogroup l3_transform_d
9176         ## @{
9177
9178         ## Deprecated method. Use MultiRotate1DNbTimes instead.
9179         def MultiRotate1D(self, theObject, theAxis, theNbTimes, theName=None):
9180             """
9181             Deprecated method. Use MultiRotate1DNbTimes instead.
9182             """
9183             print "The method MultiRotate1D is DEPRECATED. Use MultiRotate1DNbTimes instead."
9184             return self.MultiRotate1DNbTimes(theObject, theAxis, theNbTimes, theName)
9185
9186         ## The same, as MultiRotate2DByStep(), but theAngle is in degrees.
9187         #  This method is DEPRECATED. Use MultiRotate2DByStep() instead.
9188         @ManageTransactions("TrsfOp")
9189         def MultiRotate2D(self, theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2, theName=None):
9190             """
9191             The same, as MultiRotate2DByStep(), but theAngle is in degrees.
9192             This method is DEPRECATED. Use MultiRotate2DByStep() instead.
9193
9194             Example of usage:
9195                 rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
9196             """
9197             print "The method MultiRotate2D is DEPRECATED. Use MultiRotate2DByStep instead."
9198             theAngle, theNbTimes1, theStep, theNbTimes2, Parameters = ParseParameters(theAngle, theNbTimes1, theStep, theNbTimes2)
9199             anObj = self.TrsfOp.MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2)
9200             RaiseIfFailed("MultiRotate2D", self.TrsfOp)
9201             anObj.SetParameters(Parameters)
9202             self._autoPublish(anObj, theName, "multirotation")
9203             return anObj
9204
9205         ## The same, as MultiRotate1D(), but axis is given by direction and point
9206         #  This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
9207         def MakeMultiRotation1D(self, aShape, aDir, aPoint, aNbTimes, theName=None):
9208             """
9209             The same, as geompy.MultiRotate1D, but axis is given by direction and point.
9210             This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
9211
9212             Example of usage:
9213                 pz = geompy.MakeVertex(0, 0, 100)
9214                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9215                 MultiRot1D = geompy.MakeMultiRotation1D(prism, vy, pz, 6)
9216             """
9217             print "The method MakeMultiRotation1D is DEPRECATED. Use MakeMultiRotation1DNbTimes instead."
9218             aVec = self.MakeLine(aPoint,aDir)
9219             # note: auto-publishing is done in self.MultiRotate1D()
9220             anObj = self.MultiRotate1D(aShape, aVec, aNbTimes, theName)
9221             return anObj
9222
9223         ## The same, as MultiRotate2D(), but axis is given by direction and point
9224         #  This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
9225         def MakeMultiRotation2D(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
9226             """
9227             The same, as MultiRotate2D(), but axis is given by direction and point
9228             This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
9229
9230             Example of usage:
9231                 pz = geompy.MakeVertex(0, 0, 100)
9232                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9233                 MultiRot2D = geompy.MakeMultiRotation2D(f12, vy, pz, 45, 6, 30, 3)
9234             """
9235             print "The method MakeMultiRotation2D is DEPRECATED. Use MakeMultiRotation2DByStep instead."
9236             aVec = self.MakeLine(aPoint,aDir)
9237             # note: auto-publishing is done in self.MultiRotate2D()
9238             anObj = self.MultiRotate2D(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
9239             return anObj
9240
9241         # end of l3_transform_d
9242         ## @}
9243
9244         ## @addtogroup l3_local
9245         ## @{
9246
9247         ## Perform a fillet on all edges of the given shape.
9248         #  @param theShape Shape, to perform fillet on.
9249         #  @param theR Fillet radius.
9250         #  @param theName Object name; when specified, this parameter is used
9251         #         for result publication in the study. Otherwise, if automatic
9252         #         publication is switched on, default value is used for result name.
9253         #
9254         #  @return New GEOM.GEOM_Object, containing the result shape.
9255         #
9256         #  @ref tui_fillet "Example 1"
9257         #  \n @ref swig_MakeFilletAll "Example 2"
9258         @ManageTransactions("LocalOp")
9259         def MakeFilletAll(self, theShape, theR, theName=None):
9260             """
9261             Perform a fillet on all edges of the given shape.
9262
9263             Parameters:
9264                 theShape Shape, to perform fillet on.
9265                 theR Fillet radius.
9266                 theName Object name; when specified, this parameter is used
9267                         for result publication in the study. Otherwise, if automatic
9268                         publication is switched on, default value is used for result name.
9269
9270             Returns:
9271                 New GEOM.GEOM_Object, containing the result shape.
9272
9273             Example of usage:
9274                filletall = geompy.MakeFilletAll(prism, 10.)
9275             """
9276             # Example: see GEOM_TestOthers.py
9277             theR,Parameters = ParseParameters(theR)
9278             anObj = self.LocalOp.MakeFilletAll(theShape, theR)
9279             RaiseIfFailed("MakeFilletAll", self.LocalOp)
9280             anObj.SetParameters(Parameters)
9281             self._autoPublish(anObj, theName, "fillet")
9282             return anObj
9283
9284         ## Perform a fillet on the specified edges/faces of the given shape
9285         #  @param theShape Shape, to perform fillet on.
9286         #  @param theR Fillet radius.
9287         #  @param theShapeType Type of shapes in <VAR>theListShapes</VAR> (see ShapeType())
9288         #  @param theListShapes Global indices of edges/faces to perform fillet on.
9289         #  @param theName Object name; when specified, this parameter is used
9290         #         for result publication in the study. Otherwise, if automatic
9291         #         publication is switched on, default value is used for result name.
9292         #
9293         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
9294         #
9295         #  @return New GEOM.GEOM_Object, containing the result shape.
9296         #
9297         #  @ref tui_fillet "Example"
9298         @ManageTransactions("LocalOp")
9299         def MakeFillet(self, theShape, theR, theShapeType, theListShapes, theName=None):
9300             """
9301             Perform a fillet on the specified edges/faces of the given shape
9302
9303             Parameters:
9304                 theShape Shape, to perform fillet on.
9305                 theR Fillet radius.
9306                 theShapeType Type of shapes in theListShapes (see geompy.ShapeTypes)
9307                 theListShapes Global indices of edges/faces to perform fillet on.
9308                 theName Object name; when specified, this parameter is used
9309                         for result publication in the study. Otherwise, if automatic
9310                         publication is switched on, default value is used for result name.
9311
9312             Note:
9313                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
9314
9315             Returns:
9316                 New GEOM.GEOM_Object, containing the result shape.
9317
9318             Example of usage:
9319                 # get the list of IDs (IDList) for the fillet
9320                 prism_edges = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["EDGE"])
9321                 IDlist_e = []
9322                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[0]))
9323                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[1]))
9324                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[2]))
9325                 # make a fillet on the specified edges of the given shape
9326                 fillet = geompy.MakeFillet(prism, 10., geompy.ShapeType["EDGE"], IDlist_e)
9327             """
9328             # Example: see GEOM_TestAll.py
9329             theR,Parameters = ParseParameters(theR)
9330             anObj = None
9331             if theShapeType == self.ShapeType["EDGE"]:
9332                 anObj = self.LocalOp.MakeFilletEdges(theShape, theR, theListShapes)
9333                 RaiseIfFailed("MakeFilletEdges", self.LocalOp)
9334             else:
9335                 anObj = self.LocalOp.MakeFilletFaces(theShape, theR, theListShapes)
9336                 RaiseIfFailed("MakeFilletFaces", self.LocalOp)
9337             anObj.SetParameters(Parameters)
9338             self._autoPublish(anObj, theName, "fillet")
9339             return anObj
9340
9341         ## The same that MakeFillet() but with two Fillet Radius R1 and R2
9342         @ManageTransactions("LocalOp")
9343         def MakeFilletR1R2(self, theShape, theR1, theR2, theShapeType, theListShapes, theName=None):
9344             """
9345             The same that geompy.MakeFillet but with two Fillet Radius R1 and R2
9346
9347             Example of usage:
9348                 # get the list of IDs (IDList) for the fillet
9349                 prism_edges = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["EDGE"])
9350                 IDlist_e = []
9351                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[0]))
9352                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[1]))
9353                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[2]))
9354                 # make a fillet on the specified edges of the given shape
9355                 fillet = geompy.MakeFillet(prism, 10., 15., geompy.ShapeType["EDGE"], IDlist_e)
9356             """
9357             theR1,theR2,Parameters = ParseParameters(theR1,theR2)
9358             anObj = None
9359             if theShapeType == self.ShapeType["EDGE"]:
9360                 anObj = self.LocalOp.MakeFilletEdgesR1R2(theShape, theR1, theR2, theListShapes)
9361                 RaiseIfFailed("MakeFilletEdgesR1R2", self.LocalOp)
9362             else:
9363                 anObj = self.LocalOp.MakeFilletFacesR1R2(theShape, theR1, theR2, theListShapes)
9364                 RaiseIfFailed("MakeFilletFacesR1R2", self.LocalOp)
9365             anObj.SetParameters(Parameters)
9366             self._autoPublish(anObj, theName, "fillet")
9367             return anObj
9368
9369         ## Perform a fillet on the specified edges of the given shape
9370         #  @param theShape  Wire Shape to perform fillet on.
9371         #  @param theR  Fillet radius.
9372         #  @param theListOfVertexes Global indices of vertexes to perform fillet on.
9373         #    \note Global index of sub-shape can be obtained, using method GetSubShapeID()
9374         #    \note The list of vertices could be empty,
9375         #          in this case fillet will done done at all vertices in wire
9376         #  @param doIgnoreSecantVertices If FALSE, fillet radius is always limited
9377         #         by the length of the edges, nearest to the fillet vertex.
9378         #         But sometimes the next edge is C1 continuous with the one, nearest to
9379         #         the fillet point, and such two (or more) edges can be united to allow
9380         #         bigger radius. Set this flag to TRUE to allow collinear edges union,
9381         #         thus ignoring the secant vertex (vertices).
9382         #  @param theName Object name; when specified, this parameter is used
9383         #         for result publication in the study. Otherwise, if automatic
9384         #         publication is switched on, default value is used for result name.
9385         #
9386         #  @return New GEOM.GEOM_Object, containing the result shape.
9387         #
9388         #  @ref tui_fillet2d "Example"
9389         @ManageTransactions("LocalOp")
9390         def MakeFillet1D(self, theShape, theR, theListOfVertexes, doIgnoreSecantVertices = True, theName=None):
9391             """
9392             Perform a fillet on the specified edges of the given shape
9393
9394             Parameters:
9395                 theShape  Wire Shape to perform fillet on.
9396                 theR  Fillet radius.
9397                 theListOfVertexes Global indices of vertexes to perform fillet on.
9398                 doIgnoreSecantVertices If FALSE, fillet radius is always limited
9399                     by the length of the edges, nearest to the fillet vertex.
9400                     But sometimes the next edge is C1 continuous with the one, nearest to
9401                     the fillet point, and such two (or more) edges can be united to allow
9402                     bigger radius. Set this flag to TRUE to allow collinear edges union,
9403                     thus ignoring the secant vertex (vertices).
9404                 theName Object name; when specified, this parameter is used
9405                         for result publication in the study. Otherwise, if automatic
9406                         publication is switched on, default value is used for result name.
9407             Note:
9408                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
9409
9410                 The list of vertices could be empty,in this case fillet will done done at all vertices in wire
9411
9412             Returns:
9413                 New GEOM.GEOM_Object, containing the result shape.
9414
9415             Example of usage:
9416                 # create wire
9417                 Wire_1 = geompy.MakeWire([Edge_12, Edge_7, Edge_11, Edge_6, Edge_1,Edge_4])
9418                 # make fillet at given wire vertices with giver radius
9419                 Fillet_1D_1 = geompy.MakeFillet1D(Wire_1, 55, [3, 4, 6, 8, 10])
9420             """
9421             # Example: see GEOM_TestAll.py
9422             theR,doIgnoreSecantVertices,Parameters = ParseParameters(theR,doIgnoreSecantVertices)
9423             anObj = self.LocalOp.MakeFillet1D(theShape, theR, theListOfVertexes, doIgnoreSecantVertices)
9424             RaiseIfFailed("MakeFillet1D", self.LocalOp)
9425             anObj.SetParameters(Parameters)
9426             self._autoPublish(anObj, theName, "fillet")
9427             return anObj
9428
9429         ## Perform a fillet at the specified vertices of the given face/shell.
9430         #  @param theShape Face or Shell shape to perform fillet on.
9431         #  @param theR Fillet radius.
9432         #  @param theListOfVertexes Global indices of vertexes to perform fillet on.
9433         #  @param theName Object name; when specified, this parameter is used
9434         #         for result publication in the study. Otherwise, if automatic
9435         #         publication is switched on, default value is used for result name.
9436         #
9437         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
9438         #
9439         #  @return New GEOM.GEOM_Object, containing the result shape.
9440         #
9441         #  @ref tui_fillet2d "Example"
9442         @ManageTransactions("LocalOp")
9443         def MakeFillet2D(self, theShape, theR, theListOfVertexes, theName=None):
9444             """
9445             Perform a fillet at the specified vertices of the given face/shell.
9446
9447             Parameters:
9448                 theShape  Face or Shell shape to perform fillet on.
9449                 theR  Fillet radius.
9450                 theListOfVertexes Global indices of vertexes to perform fillet on.
9451                 theName Object name; when specified, this parameter is used
9452                         for result publication in the study. Otherwise, if automatic
9453                         publication is switched on, default value is used for result name.
9454             Note:
9455                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
9456
9457             Returns:
9458                 New GEOM.GEOM_Object, containing the result shape.
9459
9460             Example of usage:
9461                 face = geompy.MakeFaceHW(100, 100, 1)
9462                 fillet2d = geompy.MakeFillet2D(face, 30, [7, 9])
9463             """
9464             # Example: see GEOM_TestAll.py
9465             theR,Parameters = ParseParameters(theR)
9466             anObj = self.LocalOp.MakeFillet2D(theShape, theR, theListOfVertexes)
9467             RaiseIfFailed("MakeFillet2D", self.LocalOp)
9468             anObj.SetParameters(Parameters)
9469             self._autoPublish(anObj, theName, "fillet")
9470             return anObj
9471
9472         ## Perform a symmetric chamfer on all edges of the given shape.
9473         #  @param theShape Shape, to perform chamfer on.
9474         #  @param theD Chamfer size along each face.
9475         #  @param theName Object name; when specified, this parameter is used
9476         #         for result publication in the study. Otherwise, if automatic
9477         #         publication is switched on, default value is used for result name.
9478         #
9479         #  @return New GEOM.GEOM_Object, containing the result shape.
9480         #
9481         #  @ref tui_chamfer "Example 1"
9482         #  \n @ref swig_MakeChamferAll "Example 2"
9483         @ManageTransactions("LocalOp")
9484         def MakeChamferAll(self, theShape, theD, theName=None):
9485             """
9486             Perform a symmetric chamfer on all edges of the given shape.
9487
9488             Parameters:
9489                 theShape Shape, to perform chamfer on.
9490                 theD Chamfer size along each face.
9491                 theName Object name; when specified, this parameter is used
9492                         for result publication in the study. Otherwise, if automatic
9493                         publication is switched on, default value is used for result name.
9494
9495             Returns:
9496                 New GEOM.GEOM_Object, containing the result shape.
9497
9498             Example of usage:
9499                 chamfer_all = geompy.MakeChamferAll(prism, 10.)
9500             """
9501             # Example: see GEOM_TestOthers.py
9502             theD,Parameters = ParseParameters(theD)
9503             anObj = self.LocalOp.MakeChamferAll(theShape, theD)
9504             RaiseIfFailed("MakeChamferAll", self.LocalOp)
9505             anObj.SetParameters(Parameters)
9506             self._autoPublish(anObj, theName, "chamfer")
9507             return anObj
9508
9509         ## Perform a chamfer on edges, common to the specified faces,
9510         #  with distance D1 on the Face1
9511         #  @param theShape Shape, to perform chamfer on.
9512         #  @param theD1 Chamfer size along \a theFace1.
9513         #  @param theD2 Chamfer size along \a theFace2.
9514         #  @param theFace1,theFace2 Global indices of two faces of \a theShape.
9515         #  @param theName Object name; when specified, this parameter is used
9516         #         for result publication in the study. Otherwise, if automatic
9517         #         publication is switched on, default value is used for result name.
9518         #
9519         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
9520         #
9521         #  @return New GEOM.GEOM_Object, containing the result shape.
9522         #
9523         #  @ref tui_chamfer "Example"
9524         @ManageTransactions("LocalOp")
9525         def MakeChamferEdge(self, theShape, theD1, theD2, theFace1, theFace2, theName=None):
9526             """
9527             Perform a chamfer on edges, common to the specified faces,
9528             with distance D1 on the Face1
9529
9530             Parameters:
9531                 theShape Shape, to perform chamfer on.
9532                 theD1 Chamfer size along theFace1.
9533                 theD2 Chamfer size along theFace2.
9534                 theFace1,theFace2 Global indices of two faces of theShape.
9535                 theName Object name; when specified, this parameter is used
9536                         for result publication in the study. Otherwise, if automatic
9537                         publication is switched on, default value is used for result name.
9538
9539             Note:
9540                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
9541
9542             Returns:
9543                 New GEOM.GEOM_Object, containing the result shape.
9544
9545             Example of usage:
9546                 prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"])
9547                 f_ind_1 = geompy.GetSubShapeID(prism, prism_faces[0])
9548                 f_ind_2 = geompy.GetSubShapeID(prism, prism_faces[1])
9549                 chamfer_e = geompy.MakeChamferEdge(prism, 10., 10., f_ind_1, f_ind_2)
9550             """
9551             # Example: see GEOM_TestAll.py
9552             theD1,theD2,Parameters = ParseParameters(theD1,theD2)
9553             anObj = self.LocalOp.MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2)
9554             RaiseIfFailed("MakeChamferEdge", self.LocalOp)
9555             anObj.SetParameters(Parameters)
9556             self._autoPublish(anObj, theName, "chamfer")
9557             return anObj
9558
9559         ## Perform a chamfer on edges
9560         #  @param theShape Shape, to perform chamfer on.
9561         #  @param theD Chamfer length
9562         #  @param theAngle Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
9563         #  @param theFace1,theFace2 Global indices of two faces of \a theShape.
9564         #  @param theName Object name; when specified, this parameter is used
9565         #         for result publication in the study. Otherwise, if automatic
9566         #         publication is switched on, default value is used for result name.
9567         #
9568         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
9569         #
9570         #  @return New GEOM.GEOM_Object, containing the result shape.
9571         @ManageTransactions("LocalOp")
9572         def MakeChamferEdgeAD(self, theShape, theD, theAngle, theFace1, theFace2, theName=None):
9573             """
9574             Perform a chamfer on edges
9575
9576             Parameters:
9577                 theShape Shape, to perform chamfer on.
9578                 theD1 Chamfer size along theFace1.
9579                 theAngle Angle of chamfer (angle in radians or a name of variable which defines angle in degrees).
9580                 theFace1,theFace2 Global indices of two faces of theShape.
9581                 theName Object name; when specified, this parameter is used
9582                         for result publication in the study. Otherwise, if automatic
9583                         publication is switched on, default value is used for result name.
9584
9585             Note:
9586                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
9587
9588             Returns:
9589                 New GEOM.GEOM_Object, containing the result shape.
9590
9591             Example of usage:
9592                 prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"])
9593                 f_ind_1 = geompy.GetSubShapeID(prism, prism_faces[0])
9594                 f_ind_2 = geompy.GetSubShapeID(prism, prism_faces[1])
9595                 ang = 30
9596                 chamfer_e = geompy.MakeChamferEdge(prism, 10., ang, f_ind_1, f_ind_2)
9597             """
9598             flag = False
9599             if isinstance(theAngle,str):
9600                 flag = True
9601             theD,theAngle,Parameters = ParseParameters(theD,theAngle)
9602             if flag:
9603                 theAngle = theAngle*math.pi/180.0
9604             anObj = self.LocalOp.MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2)
9605             RaiseIfFailed("MakeChamferEdgeAD", self.LocalOp)
9606             anObj.SetParameters(Parameters)
9607             self._autoPublish(anObj, theName, "chamfer")
9608             return anObj
9609
9610         ## Perform a chamfer on all edges of the specified faces,
9611         #  with distance D1 on the first specified face (if several for one edge)
9612         #  @param theShape Shape, to perform chamfer on.
9613         #  @param theD1 Chamfer size along face from \a theFaces. If both faces,
9614         #               connected to the edge, are in \a theFaces, \a theD1
9615         #               will be get along face, which is nearer to \a theFaces beginning.
9616         #  @param theD2 Chamfer size along another of two faces, connected to the edge.
9617         #  @param theFaces Sequence of global indices of faces of \a theShape.
9618         #  @param theName Object name; when specified, this parameter is used
9619         #         for result publication in the study. Otherwise, if automatic
9620         #         publication is switched on, default value is used for result name.
9621         #
9622         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
9623         #
9624         #  @return New GEOM.GEOM_Object, containing the result shape.
9625         #
9626         #  @ref tui_chamfer "Example"
9627         @ManageTransactions("LocalOp")
9628         def MakeChamferFaces(self, theShape, theD1, theD2, theFaces, theName=None):
9629             """
9630             Perform a chamfer on all edges of the specified faces,
9631             with distance D1 on the first specified face (if several for one edge)
9632
9633             Parameters:
9634                 theShape Shape, to perform chamfer on.
9635                 theD1 Chamfer size along face from  theFaces. If both faces,
9636                       connected to the edge, are in theFaces, theD1
9637                       will be get along face, which is nearer to theFaces beginning.
9638                 theD2 Chamfer size along another of two faces, connected to the edge.
9639                 theFaces Sequence of global indices of faces of theShape.
9640                 theName Object name; when specified, this parameter is used
9641                         for result publication in the study. Otherwise, if automatic
9642                         publication is switched on, default value is used for result name.
9643
9644             Note: Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
9645
9646             Returns:
9647                 New GEOM.GEOM_Object, containing the result shape.
9648             """
9649             # Example: see GEOM_TestAll.py
9650             theD1,theD2,Parameters = ParseParameters(theD1,theD2)
9651             anObj = self.LocalOp.MakeChamferFaces(theShape, theD1, theD2, theFaces)
9652             RaiseIfFailed("MakeChamferFaces", self.LocalOp)
9653             anObj.SetParameters(Parameters)
9654             self._autoPublish(anObj, theName, "chamfer")
9655             return anObj
9656
9657         ## The Same that MakeChamferFaces() but with params theD is chamfer lenght and
9658         #  theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
9659         #
9660         #  @ref swig_FilletChamfer "Example"
9661         @ManageTransactions("LocalOp")
9662         def MakeChamferFacesAD(self, theShape, theD, theAngle, theFaces, theName=None):
9663             """
9664             The Same that geompy.MakeChamferFaces but with params theD is chamfer lenght and
9665             theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
9666             """
9667             flag = False
9668             if isinstance(theAngle,str):
9669                 flag = True
9670             theD,theAngle,Parameters = ParseParameters(theD,theAngle)
9671             if flag:
9672                 theAngle = theAngle*math.pi/180.0
9673             anObj = self.LocalOp.MakeChamferFacesAD(theShape, theD, theAngle, theFaces)
9674             RaiseIfFailed("MakeChamferFacesAD", self.LocalOp)
9675             anObj.SetParameters(Parameters)
9676             self._autoPublish(anObj, theName, "chamfer")
9677             return anObj
9678
9679         ## Perform a chamfer on edges,
9680         #  with distance D1 on the first specified face (if several for one edge)
9681         #  @param theShape Shape, to perform chamfer on.
9682         #  @param theD1,theD2 Chamfer size
9683         #  @param theEdges Sequence of edges of \a theShape.
9684         #  @param theName Object name; when specified, this parameter is used
9685         #         for result publication in the study. Otherwise, if automatic
9686         #         publication is switched on, default value is used for result name.
9687         #
9688         #  @return New GEOM.GEOM_Object, containing the result shape.
9689         #
9690         #  @ref swig_FilletChamfer "Example"
9691         @ManageTransactions("LocalOp")
9692         def MakeChamferEdges(self, theShape, theD1, theD2, theEdges, theName=None):
9693             """
9694             Perform a chamfer on edges,
9695             with distance D1 on the first specified face (if several for one edge)
9696
9697             Parameters:
9698                 theShape Shape, to perform chamfer on.
9699                 theD1,theD2 Chamfer size
9700                 theEdges Sequence of edges of theShape.
9701                 theName Object name; when specified, this parameter is used
9702                         for result publication in the study. Otherwise, if automatic
9703                         publication is switched on, default value is used for result name.
9704
9705             Returns:
9706                 New GEOM.GEOM_Object, containing the result shape.
9707             """
9708             theD1,theD2,Parameters = ParseParameters(theD1,theD2)
9709             anObj = self.LocalOp.MakeChamferEdges(theShape, theD1, theD2, theEdges)
9710             RaiseIfFailed("MakeChamferEdges", self.LocalOp)
9711             anObj.SetParameters(Parameters)
9712             self._autoPublish(anObj, theName, "chamfer")
9713             return anObj
9714
9715         ## The Same that MakeChamferEdges() but with params theD is chamfer lenght and
9716         #  theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
9717         @ManageTransactions("LocalOp")
9718         def MakeChamferEdgesAD(self, theShape, theD, theAngle, theEdges, theName=None):
9719             """
9720             The Same that geompy.MakeChamferEdges but with params theD is chamfer lenght and
9721             theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
9722             """
9723             flag = False
9724             if isinstance(theAngle,str):
9725                 flag = True
9726             theD,theAngle,Parameters = ParseParameters(theD,theAngle)
9727             if flag:
9728                 theAngle = theAngle*math.pi/180.0
9729             anObj = self.LocalOp.MakeChamferEdgesAD(theShape, theD, theAngle, theEdges)
9730             RaiseIfFailed("MakeChamferEdgesAD", self.LocalOp)
9731             anObj.SetParameters(Parameters)
9732             self._autoPublish(anObj, theName, "chamfer")
9733             return anObj
9734
9735         ## @sa MakeChamferEdge(), MakeChamferFaces()
9736         #
9737         #  @ref swig_MakeChamfer "Example"
9738         def MakeChamfer(self, aShape, d1, d2, aShapeType, ListShape, theName=None):
9739             """
9740             See geompy.MakeChamferEdge() and geompy.MakeChamferFaces() functions for more information.
9741             """
9742             # Example: see GEOM_TestOthers.py
9743             anObj = None
9744             # note: auto-publishing is done in self.MakeChamferEdge() or self.MakeChamferFaces()
9745             if aShapeType == self.ShapeType["EDGE"]:
9746                 anObj = self.MakeChamferEdge(aShape,d1,d2,ListShape[0],ListShape[1],theName)
9747             else:
9748                 anObj = self.MakeChamferFaces(aShape,d1,d2,ListShape,theName)
9749             return anObj
9750
9751         ## Remove material from a solid by extrusion of the base shape on the given distance.
9752         #  @param theInit Shape to remove material from. It must be a solid or
9753         #  a compound made of a single solid.
9754         #  @param theBase Closed edge or wire defining the base shape to be extruded.
9755         #  @param theH Prism dimension along the normal to theBase
9756         #  @param theAngle Draft angle in degrees.
9757         #  @param theName Object name; when specified, this parameter is used
9758         #         for result publication in the study. Otherwise, if automatic
9759         #         publication is switched on, default value is used for result name.
9760         #
9761         #  @return New GEOM.GEOM_Object, containing the initial shape with removed material
9762         #
9763         #  @ref tui_creation_prism "Example"
9764         @ManageTransactions("PrimOp")
9765         def MakeExtrudedCut(self, theInit, theBase, theH, theAngle, theName=None):
9766             """
9767             Add material to a solid by extrusion of the base shape on the given distance.
9768
9769             Parameters:
9770                 theInit Shape to remove material from. It must be a solid or a compound made of a single solid.
9771                 theBase Closed edge or wire defining the base shape to be extruded.
9772                 theH Prism dimension along the normal  to theBase
9773                 theAngle Draft angle in degrees.
9774                 theName Object name; when specified, this parameter is used
9775                         for result publication in the study. Otherwise, if automatic
9776                         publication is switched on, default value is used for result name.
9777
9778             Returns:
9779                 New GEOM.GEOM_Object,  containing the initial shape with removed material.
9780             """
9781             # Example: see GEOM_TestAll.py
9782             #theH,Parameters = ParseParameters(theH)
9783             anObj = self.PrimOp.MakeDraftPrism(theInit, theBase, theH, theAngle, False)
9784             RaiseIfFailed("MakeExtrudedBoss", self.PrimOp)
9785             #anObj.SetParameters(Parameters)
9786             self._autoPublish(anObj, theName, "extrudedCut")
9787             return anObj
9788
9789         ## Add material to a solid by extrusion of the base shape on the given distance.
9790         #  @param theInit Shape to add material to. It must be a solid or
9791         #  a compound made of a single solid.
9792         #  @param theBase Closed edge or wire defining the base shape to be extruded.
9793         #  @param theH Prism dimension along the normal to theBase
9794         #  @param theAngle Draft angle in degrees.
9795         #  @param theName Object name; when specified, this parameter is used
9796         #         for result publication in the study. Otherwise, if automatic
9797         #         publication is switched on, default value is used for result name.
9798         #
9799         #  @return New GEOM.GEOM_Object, containing the initial shape with added material
9800         #
9801         #  @ref tui_creation_prism "Example"
9802         @ManageTransactions("PrimOp")
9803         def MakeExtrudedBoss(self, theInit, theBase, theH, theAngle, theName=None):
9804             """
9805             Add material to a solid by extrusion of the base shape on the given distance.
9806
9807             Parameters:
9808                 theInit Shape to add material to. It must be a solid or a compound made of a single solid.
9809                 theBase Closed edge or wire defining the base shape to be extruded.
9810                 theH Prism dimension along the normal  to theBase
9811                 theAngle Draft angle in degrees.
9812                 theName Object name; when specified, this parameter is used
9813                         for result publication in the study. Otherwise, if automatic
9814                         publication is switched on, default value is used for result name.
9815
9816             Returns:
9817                 New GEOM.GEOM_Object,  containing the initial shape with added material.
9818             """
9819             # Example: see GEOM_TestAll.py
9820             #theH,Parameters = ParseParameters(theH)
9821             anObj = self.PrimOp.MakeDraftPrism(theInit, theBase, theH, theAngle, True)
9822             RaiseIfFailed("MakeExtrudedBoss", self.PrimOp)
9823             #anObj.SetParameters(Parameters)
9824             self._autoPublish(anObj, theName, "extrudedBoss")
9825             return anObj
9826
9827         # end of l3_local
9828         ## @}
9829
9830         ## @addtogroup l3_basic_op
9831         ## @{
9832
9833         ## Perform an Archimde operation on the given shape with given parameters.
9834         #  The object presenting the resulting face is returned.
9835         #  @param theShape Shape to be put in water.
9836         #  @param theWeight Weight of the shape.
9837         #  @param theWaterDensity Density of the water.
9838         #  @param theMeshDeflection Deflection of the mesh, using to compute the section.
9839         #  @param theName Object name; when specified, this parameter is used
9840         #         for result publication in the study. Otherwise, if automatic
9841         #         publication is switched on, default value is used for result name.
9842         #
9843         #  @return New GEOM.GEOM_Object, containing a section of \a theShape
9844         #          by a plane, corresponding to water level.
9845         #
9846         #  @ref tui_archimede "Example"
9847         @ManageTransactions("LocalOp")
9848         def Archimede(self, theShape, theWeight, theWaterDensity, theMeshDeflection, theName=None):
9849             """
9850             Perform an Archimde operation on the given shape with given parameters.
9851             The object presenting the resulting face is returned.
9852
9853             Parameters:
9854                 theShape Shape to be put in water.
9855                 theWeight Weight of the shape.
9856                 theWaterDensity Density of the water.
9857                 theMeshDeflection Deflection of the mesh, using to compute the section.
9858                 theName Object name; when specified, this parameter is used
9859                         for result publication in the study. Otherwise, if automatic
9860                         publication is switched on, default value is used for result name.
9861
9862             Returns:
9863                 New GEOM.GEOM_Object, containing a section of theShape
9864                 by a plane, corresponding to water level.
9865             """
9866             # Example: see GEOM_TestAll.py
9867             theWeight,theWaterDensity,theMeshDeflection,Parameters = ParseParameters(
9868               theWeight,theWaterDensity,theMeshDeflection)
9869             anObj = self.LocalOp.MakeArchimede(theShape, theWeight, theWaterDensity, theMeshDeflection)
9870             RaiseIfFailed("MakeArchimede", self.LocalOp)
9871             anObj.SetParameters(Parameters)
9872             self._autoPublish(anObj, theName, "archimede")
9873             return anObj
9874
9875         # end of l3_basic_op
9876         ## @}
9877
9878         ## @addtogroup l2_measure
9879         ## @{
9880
9881         ## Get point coordinates
9882         #  @return [x, y, z]
9883         #
9884         #  @ref tui_measurement_tools_page "Example"
9885         @ManageTransactions("MeasuOp")
9886         def PointCoordinates(self,Point):
9887             """
9888             Get point coordinates
9889
9890             Returns:
9891                 [x, y, z]
9892             """
9893             # Example: see GEOM_TestMeasures.py
9894             aTuple = self.MeasuOp.PointCoordinates(Point)
9895             RaiseIfFailed("PointCoordinates", self.MeasuOp)
9896             return aTuple
9897
9898         ## Get vector coordinates
9899         #  @return [x, y, z]
9900         #
9901         #  @ref tui_measurement_tools_page "Example"
9902         def VectorCoordinates(self,Vector):
9903             """
9904             Get vector coordinates
9905
9906             Returns:
9907                 [x, y, z]
9908             """
9909
9910             p1=self.GetFirstVertex(Vector)
9911             p2=self.GetLastVertex(Vector)
9912
9913             X1=self.PointCoordinates(p1)
9914             X2=self.PointCoordinates(p2)
9915
9916             return (X2[0]-X1[0],X2[1]-X1[1],X2[2]-X1[2])
9917
9918
9919         ## Compute cross product
9920         #  @return vector w=u^v
9921         #
9922         #  @ref tui_measurement_tools_page "Example"
9923         def CrossProduct(self, Vector1, Vector2):
9924             """
9925             Compute cross product
9926
9927             Returns: vector w=u^v
9928             """
9929             u=self.VectorCoordinates(Vector1)
9930             v=self.VectorCoordinates(Vector2)
9931             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])
9932
9933             return w
9934
9935         ## Compute cross product
9936         #  @return dot product  p=u.v
9937         #
9938         #  @ref tui_measurement_tools_page "Example"
9939         def DotProduct(self, Vector1, Vector2):
9940             """
9941             Compute cross product
9942
9943             Returns: dot product  p=u.v
9944             """
9945             u=self.VectorCoordinates(Vector1)
9946             v=self.VectorCoordinates(Vector2)
9947             p=u[0]*v[0]+u[1]*v[1]+u[2]*v[2]
9948
9949             return p
9950
9951
9952         ## Get summarized length of all wires,
9953         #  area of surface and volume of the given shape.
9954         #  @param theShape Shape to define properties of.
9955         #  @return [theLength, theSurfArea, theVolume]\n
9956         #  theLength:   Summarized length of all wires of the given shape.\n
9957         #  theSurfArea: Area of surface of the given shape.\n
9958         #  theVolume:   Volume of the given shape.
9959         #
9960         #  @ref tui_measurement_tools_page "Example"
9961         @ManageTransactions("MeasuOp")
9962         def BasicProperties(self,theShape):
9963             """
9964             Get summarized length of all wires,
9965             area of surface and volume of the given shape.
9966
9967             Parameters:
9968                 theShape Shape to define properties of.
9969
9970             Returns:
9971                 [theLength, theSurfArea, theVolume]
9972                  theLength:   Summarized length of all wires of the given shape.
9973                  theSurfArea: Area of surface of the given shape.
9974                  theVolume:   Volume of the given shape.
9975             """
9976             # Example: see GEOM_TestMeasures.py
9977             aTuple = self.MeasuOp.GetBasicProperties(theShape)
9978             RaiseIfFailed("GetBasicProperties", self.MeasuOp)
9979             return aTuple
9980
9981         ## Get parameters of bounding box of the given shape
9982         #  @param theShape Shape to obtain bounding box of.
9983         #  @param precise TRUE for precise computation; FALSE for fast one.
9984         #  @return [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
9985         #  Xmin,Xmax: Limits of shape along OX axis.
9986         #  Ymin,Ymax: Limits of shape along OY axis.
9987         #  Zmin,Zmax: Limits of shape along OZ axis.
9988         #
9989         #  @ref tui_measurement_tools_page "Example"
9990         @ManageTransactions("MeasuOp")
9991         def BoundingBox (self, theShape, precise=False):
9992             """
9993             Get parameters of bounding box of the given shape
9994
9995             Parameters:
9996                 theShape Shape to obtain bounding box of.
9997                 precise TRUE for precise computation; FALSE for fast one.
9998
9999             Returns:
10000                 [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
10001                  Xmin,Xmax: Limits of shape along OX axis.
10002                  Ymin,Ymax: Limits of shape along OY axis.
10003                  Zmin,Zmax: Limits of shape along OZ axis.
10004             """
10005             # Example: see GEOM_TestMeasures.py
10006             aTuple = self.MeasuOp.GetBoundingBox(theShape, precise)
10007             RaiseIfFailed("GetBoundingBox", self.MeasuOp)
10008             return aTuple
10009
10010         ## Get bounding box of the given shape
10011         #  @param theShape Shape to obtain bounding box of.
10012         #  @param precise TRUE for precise computation; FALSE for fast one.
10013         #  @param theName Object name; when specified, this parameter is used
10014         #         for result publication in the study. Otherwise, if automatic
10015         #         publication is switched on, default value is used for result name.
10016         #
10017         #  @return New GEOM.GEOM_Object, containing the created box.
10018         #
10019         #  @ref tui_measurement_tools_page "Example"
10020         @ManageTransactions("MeasuOp")
10021         def MakeBoundingBox (self, theShape, precise=False, theName=None):
10022             """
10023             Get bounding box of the given shape
10024
10025             Parameters:
10026                 theShape Shape to obtain bounding box of.
10027                 precise TRUE for precise computation; FALSE for fast one.
10028                 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             Returns:
10033                 New GEOM.GEOM_Object, containing the created box.
10034             """
10035             # Example: see GEOM_TestMeasures.py
10036             anObj = self.MeasuOp.MakeBoundingBox(theShape, precise)
10037             RaiseIfFailed("MakeBoundingBox", self.MeasuOp)
10038             self._autoPublish(anObj, theName, "bndbox")
10039             return anObj
10040
10041         ## Get inertia matrix and moments of inertia of theShape.
10042         #  @param theShape Shape to calculate inertia of.
10043         #  @return [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
10044         #  I(1-3)(1-3): Components of the inertia matrix of the given shape.
10045         #  Ix,Iy,Iz:    Moments of inertia of the given shape.
10046         #
10047         #  @ref tui_measurement_tools_page "Example"
10048         @ManageTransactions("MeasuOp")
10049         def Inertia(self,theShape):
10050             """
10051             Get inertia matrix and moments of inertia of theShape.
10052
10053             Parameters:
10054                 theShape Shape to calculate inertia of.
10055
10056             Returns:
10057                 [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
10058                  I(1-3)(1-3): Components of the inertia matrix of the given shape.
10059                  Ix,Iy,Iz:    Moments of inertia of the given shape.
10060             """
10061             # Example: see GEOM_TestMeasures.py
10062             aTuple = self.MeasuOp.GetInertia(theShape)
10063             RaiseIfFailed("GetInertia", self.MeasuOp)
10064             return aTuple
10065
10066         ## Get if coords are included in the shape (ST_IN or ST_ON)
10067         #  @param theShape Shape
10068         #  @param coords list of points coordinates [x1, y1, z1, x2, y2, z2, ...]
10069         #  @param tolerance to be used (default is 1.0e-7)
10070         #  @return list_of_boolean = [res1, res2, ...]
10071         @ManageTransactions("MeasuOp")
10072         def AreCoordsInside(self, theShape, coords, tolerance=1.e-7):
10073             """
10074             Get if coords are included in the shape (ST_IN or ST_ON)
10075
10076             Parameters:
10077                 theShape Shape
10078                 coords list of points coordinates [x1, y1, z1, x2, y2, z2, ...]
10079                 tolerance to be used (default is 1.0e-7)
10080
10081             Returns:
10082                 list_of_boolean = [res1, res2, ...]
10083             """
10084             return self.MeasuOp.AreCoordsInside(theShape, coords, tolerance)
10085
10086         ## Get minimal distance between the given shapes.
10087         #  @param theShape1,theShape2 Shapes to find minimal distance between.
10088         #  @return Value of the minimal distance between the given shapes.
10089         #
10090         #  @ref tui_measurement_tools_page "Example"
10091         @ManageTransactions("MeasuOp")
10092         def MinDistance(self, theShape1, theShape2):
10093             """
10094             Get minimal distance between the given shapes.
10095
10096             Parameters:
10097                 theShape1,theShape2 Shapes to find minimal distance between.
10098
10099             Returns:
10100                 Value of the minimal distance between the given shapes.
10101             """
10102             # Example: see GEOM_TestMeasures.py
10103             aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
10104             RaiseIfFailed("GetMinDistance", self.MeasuOp)
10105             return aTuple[0]
10106
10107         ## Get minimal distance between the given shapes.
10108         #  @param theShape1,theShape2 Shapes to find minimal distance between.
10109         #  @return Value of the minimal distance between the given shapes, in form of list
10110         #          [Distance, DX, DY, DZ].
10111         #
10112         #  @ref swig_all_measure "Example"
10113         @ManageTransactions("MeasuOp")
10114         def MinDistanceComponents(self, theShape1, theShape2):
10115             """
10116             Get minimal distance between the given shapes.
10117
10118             Parameters:
10119                 theShape1,theShape2 Shapes to find minimal distance between.
10120
10121             Returns:
10122                 Value of the minimal distance between the given shapes, in form of list
10123                 [Distance, DX, DY, DZ]
10124             """
10125             # Example: see GEOM_TestMeasures.py
10126             aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
10127             RaiseIfFailed("GetMinDistance", self.MeasuOp)
10128             aRes = [aTuple[0], aTuple[4] - aTuple[1], aTuple[5] - aTuple[2], aTuple[6] - aTuple[3]]
10129             return aRes
10130
10131         ## Get closest points of the given shapes.
10132         #  @param theShape1,theShape2 Shapes to find closest points of.
10133         #  @return The number of found solutions (-1 in case of infinite number of
10134         #          solutions) and a list of (X, Y, Z) coordinates for all couples of points.
10135         #
10136         #  @ref tui_measurement_tools_page "Example"
10137         @ManageTransactions("MeasuOp")
10138         def ClosestPoints (self, theShape1, theShape2):
10139             """
10140             Get closest points of the given shapes.
10141
10142             Parameters:
10143                 theShape1,theShape2 Shapes to find closest points of.
10144
10145             Returns:
10146                 The number of found solutions (-1 in case of infinite number of
10147                 solutions) and a list of (X, Y, Z) coordinates for all couples of points.
10148             """
10149             # Example: see GEOM_TestMeasures.py
10150             aTuple = self.MeasuOp.ClosestPoints(theShape1, theShape2)
10151             RaiseIfFailed("ClosestPoints", self.MeasuOp)
10152             return aTuple
10153
10154         ## Get angle between the given shapes in degrees.
10155         #  @param theShape1,theShape2 Lines or linear edges to find angle between.
10156         #  @note If both arguments are vectors, the angle is computed in accordance
10157         #        with their orientations, otherwise the minimum angle is computed.
10158         #  @return Value of the angle between the given shapes in degrees.
10159         #
10160         #  @ref tui_measurement_tools_page "Example"
10161         @ManageTransactions("MeasuOp")
10162         def GetAngle(self, theShape1, theShape2):
10163             """
10164             Get angle between the given shapes in degrees.
10165
10166             Parameters:
10167                 theShape1,theShape2 Lines or linear edges to find angle between.
10168
10169             Note:
10170                 If both arguments are vectors, the angle is computed in accordance
10171                 with their orientations, otherwise the minimum angle is computed.
10172
10173             Returns:
10174                 Value of the angle between the given shapes in degrees.
10175             """
10176             # Example: see GEOM_TestMeasures.py
10177             anAngle = self.MeasuOp.GetAngle(theShape1, theShape2)
10178             RaiseIfFailed("GetAngle", self.MeasuOp)
10179             return anAngle
10180
10181         ## Get angle between the given shapes in radians.
10182         #  @param theShape1,theShape2 Lines or linear edges to find angle between.
10183         #  @note If both arguments are vectors, the angle is computed in accordance
10184         #        with their orientations, otherwise the minimum angle is computed.
10185         #  @return Value of the angle between the given shapes in radians.
10186         #
10187         #  @ref tui_measurement_tools_page "Example"
10188         @ManageTransactions("MeasuOp")
10189         def GetAngleRadians(self, theShape1, theShape2):
10190             """
10191             Get angle between the given shapes in radians.
10192
10193             Parameters:
10194                 theShape1,theShape2 Lines or linear edges to find angle between.
10195
10196
10197             Note:
10198                 If both arguments are vectors, the angle is computed in accordance
10199                 with their orientations, otherwise the minimum angle is computed.
10200
10201             Returns:
10202                 Value of the angle between the given shapes in radians.
10203             """
10204             # Example: see GEOM_TestMeasures.py
10205             anAngle = self.MeasuOp.GetAngle(theShape1, theShape2)*math.pi/180.
10206             RaiseIfFailed("GetAngle", self.MeasuOp)
10207             return anAngle
10208
10209         ## Get angle between the given vectors in degrees.
10210         #  @param theShape1,theShape2 Vectors to find angle between.
10211         #  @param theFlag If True, the normal vector is defined by the two vectors cross,
10212         #                 if False, the opposite vector to the normal vector is used.
10213         #  @return Value of the angle between the given vectors in degrees.
10214         #
10215         #  @ref tui_measurement_tools_page "Example"
10216         @ManageTransactions("MeasuOp")
10217         def GetAngleVectors(self, theShape1, theShape2, theFlag = True):
10218             """
10219             Get angle between the given vectors in degrees.
10220
10221             Parameters:
10222                 theShape1,theShape2 Vectors to find angle between.
10223                 theFlag If True, the normal vector is defined by the two vectors cross,
10224                         if False, the opposite vector to the normal vector is used.
10225
10226             Returns:
10227                 Value of the angle between the given vectors in degrees.
10228             """
10229             anAngle = self.MeasuOp.GetAngleBtwVectors(theShape1, theShape2)
10230             if not theFlag:
10231                 anAngle = 360. - anAngle
10232             RaiseIfFailed("GetAngleVectors", self.MeasuOp)
10233             return anAngle
10234
10235         ## The same as GetAngleVectors, but the result is in radians.
10236         def GetAngleRadiansVectors(self, theShape1, theShape2, theFlag = True):
10237             """
10238             Get angle between the given vectors in radians.
10239
10240             Parameters:
10241                 theShape1,theShape2 Vectors to find angle between.
10242                 theFlag If True, the normal vector is defined by the two vectors cross,
10243                         if False, the opposite vector to the normal vector is used.
10244
10245             Returns:
10246                 Value of the angle between the given vectors in radians.
10247             """
10248             anAngle = self.GetAngleVectors(theShape1, theShape2, theFlag)*math.pi/180.
10249             return anAngle
10250
10251         ## @name Curve Curvature Measurement
10252         #  Methods for receiving radius of curvature of curves
10253         #  in the given point
10254         ## @{
10255
10256         ## Measure curvature of a curve at a point, set by parameter.
10257         #  @param theCurve a curve.
10258         #  @param theParam parameter.
10259         #  @return radius of curvature of \a theCurve.
10260         #
10261         #  @ref swig_todo "Example"
10262         @ManageTransactions("MeasuOp")
10263         def CurveCurvatureByParam(self, theCurve, theParam):
10264             """
10265             Measure curvature of a curve at a point, set by parameter.
10266
10267             Parameters:
10268                 theCurve a curve.
10269                 theParam parameter.
10270
10271             Returns:
10272                 radius of curvature of theCurve.
10273             """
10274             # Example: see GEOM_TestMeasures.py
10275             aCurv = self.MeasuOp.CurveCurvatureByParam(theCurve,theParam)
10276             RaiseIfFailed("CurveCurvatureByParam", self.MeasuOp)
10277             return aCurv
10278
10279         ## Measure curvature of a curve at a point.
10280         #  @param theCurve a curve.
10281         #  @param thePoint given point.
10282         #  @return radius of curvature of \a theCurve.
10283         #
10284         #  @ref swig_todo "Example"
10285         @ManageTransactions("MeasuOp")
10286         def CurveCurvatureByPoint(self, theCurve, thePoint):
10287             """
10288             Measure curvature of a curve at a point.
10289
10290             Parameters:
10291                 theCurve a curve.
10292                 thePoint given point.
10293
10294             Returns:
10295                 radius of curvature of theCurve.
10296             """
10297             aCurv = self.MeasuOp.CurveCurvatureByPoint(theCurve,thePoint)
10298             RaiseIfFailed("CurveCurvatureByPoint", self.MeasuOp)
10299             return aCurv
10300         ## @}
10301
10302         ## @name Surface Curvature Measurement
10303         #  Methods for receiving max and min radius of curvature of surfaces
10304         #  in the given point
10305         ## @{
10306
10307         ## Measure max radius of curvature of surface.
10308         #  @param theSurf the given surface.
10309         #  @param theUParam Value of U-parameter on the referenced surface.
10310         #  @param theVParam Value of V-parameter on the referenced surface.
10311         #  @return max radius of curvature of theSurf.
10312         #
10313         ## @ref swig_todo "Example"
10314         @ManageTransactions("MeasuOp")
10315         def MaxSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
10316             """
10317             Measure max radius of curvature of surface.
10318
10319             Parameters:
10320                 theSurf the given surface.
10321                 theUParam Value of U-parameter on the referenced surface.
10322                 theVParam Value of V-parameter on the referenced surface.
10323
10324             Returns:
10325                 max radius of curvature of theSurf.
10326             """
10327             # Example: see GEOM_TestMeasures.py
10328             aSurf = self.MeasuOp.MaxSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
10329             RaiseIfFailed("MaxSurfaceCurvatureByParam", self.MeasuOp)
10330             return aSurf
10331
10332         ## Measure max radius of curvature of surface in the given point
10333         #  @param theSurf the given surface.
10334         #  @param thePoint given point.
10335         #  @return max radius of curvature of theSurf.
10336         #
10337         ## @ref swig_todo "Example"
10338         @ManageTransactions("MeasuOp")
10339         def MaxSurfaceCurvatureByPoint(self, theSurf, thePoint):
10340             """
10341             Measure max radius of curvature of surface in the given point.
10342
10343             Parameters:
10344                 theSurf the given surface.
10345                 thePoint given point.
10346
10347             Returns:
10348                 max radius of curvature of theSurf.
10349             """
10350             aSurf = self.MeasuOp.MaxSurfaceCurvatureByPoint(theSurf,thePoint)
10351             RaiseIfFailed("MaxSurfaceCurvatureByPoint", self.MeasuOp)
10352             return aSurf
10353
10354         ## Measure min radius of curvature of surface.
10355         #  @param theSurf the given surface.
10356         #  @param theUParam Value of U-parameter on the referenced surface.
10357         #  @param theVParam Value of V-parameter on the referenced surface.
10358         #  @return min radius of curvature of theSurf.
10359         #
10360         ## @ref swig_todo "Example"
10361         @ManageTransactions("MeasuOp")
10362         def MinSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
10363             """
10364             Measure min radius of curvature of surface.
10365
10366             Parameters:
10367                 theSurf the given surface.
10368                 theUParam Value of U-parameter on the referenced surface.
10369                 theVParam Value of V-parameter on the referenced surface.
10370
10371             Returns:
10372                 Min radius of curvature of theSurf.
10373             """
10374             aSurf = self.MeasuOp.MinSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
10375             RaiseIfFailed("MinSurfaceCurvatureByParam", self.MeasuOp)
10376             return aSurf
10377
10378         ## Measure min radius of curvature of surface in the given point
10379         #  @param theSurf the given surface.
10380         #  @param thePoint given point.
10381         #  @return min radius of curvature of theSurf.
10382         #
10383         ## @ref swig_todo "Example"
10384         @ManageTransactions("MeasuOp")
10385         def MinSurfaceCurvatureByPoint(self, theSurf, thePoint):
10386             """
10387             Measure min radius of curvature of surface in the given point.
10388
10389             Parameters:
10390                 theSurf the given surface.
10391                 thePoint given point.
10392
10393             Returns:
10394                 Min radius of curvature of theSurf.
10395             """
10396             aSurf = self.MeasuOp.MinSurfaceCurvatureByPoint(theSurf,thePoint)
10397             RaiseIfFailed("MinSurfaceCurvatureByPoint", self.MeasuOp)
10398             return aSurf
10399         ## @}
10400
10401         ## Get min and max tolerances of sub-shapes of theShape
10402         #  @param theShape Shape, to get tolerances of.
10403         #  @return [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]\n
10404         #  FaceMin,FaceMax: Min and max tolerances of the faces.\n
10405         #  EdgeMin,EdgeMax: Min and max tolerances of the edges.\n
10406         #  VertMin,VertMax: Min and max tolerances of the vertices.
10407         #
10408         #  @ref tui_measurement_tools_page "Example"
10409         @ManageTransactions("MeasuOp")
10410         def Tolerance(self,theShape):
10411             """
10412             Get min and max tolerances of sub-shapes of theShape
10413
10414             Parameters:
10415                 theShape Shape, to get tolerances of.
10416
10417             Returns:
10418                 [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]
10419                  FaceMin,FaceMax: Min and max tolerances of the faces.
10420                  EdgeMin,EdgeMax: Min and max tolerances of the edges.
10421                  VertMin,VertMax: Min and max tolerances of the vertices.
10422             """
10423             # Example: see GEOM_TestMeasures.py
10424             aTuple = self.MeasuOp.GetTolerance(theShape)
10425             RaiseIfFailed("GetTolerance", self.MeasuOp)
10426             return aTuple
10427
10428         ## Obtain description of the given shape (number of sub-shapes of each type)
10429         #  @param theShape Shape to be described.
10430         #  @return Description of the given shape.
10431         #
10432         #  @ref tui_measurement_tools_page "Example"
10433         @ManageTransactions("MeasuOp")
10434         def WhatIs(self,theShape):
10435             """
10436             Obtain description of the given shape (number of sub-shapes of each type)
10437
10438             Parameters:
10439                 theShape Shape to be described.
10440
10441             Returns:
10442                 Description of the given shape.
10443             """
10444             # Example: see GEOM_TestMeasures.py
10445             aDescr = self.MeasuOp.WhatIs(theShape)
10446             RaiseIfFailed("WhatIs", self.MeasuOp)
10447             return aDescr
10448
10449         ## Obtain quantity of shapes of the given type in \a theShape.
10450         #  If \a theShape is of type \a theType, it is also counted.
10451         #  @param theShape Shape to be described.
10452         #  @param theType the given ShapeType().
10453         #  @return Quantity of shapes of type \a theType in \a theShape.
10454         #
10455         #  @ref tui_measurement_tools_page "Example"
10456         def NbShapes (self, theShape, theType):
10457             """
10458             Obtain quantity of shapes of the given type in theShape.
10459             If theShape is of type theType, it is also counted.
10460
10461             Parameters:
10462                 theShape Shape to be described.
10463                 theType the given geompy.ShapeType
10464
10465             Returns:
10466                 Quantity of shapes of type theType in theShape.
10467             """
10468             # Example: see GEOM_TestMeasures.py
10469             listSh = self.SubShapeAllIDs(theShape, theType)
10470             Nb = len(listSh)
10471             return Nb
10472
10473         ## Obtain quantity of shapes of each type in \a theShape.
10474         #  The \a theShape is also counted.
10475         #  @param theShape Shape to be described.
10476         #  @return Dictionary of ShapeType() with bound quantities of shapes.
10477         #
10478         #  @ref tui_measurement_tools_page "Example"
10479         def ShapeInfo (self, theShape):
10480             """
10481             Obtain quantity of shapes of each type in theShape.
10482             The theShape is also counted.
10483
10484             Parameters:
10485                 theShape Shape to be described.
10486
10487             Returns:
10488                 Dictionary of geompy.ShapeType with bound quantities of shapes.
10489             """
10490             # Example: see GEOM_TestMeasures.py
10491             aDict = {}
10492             for typeSh in self.ShapeType:
10493                 if typeSh in ( "AUTO", "SHAPE" ): continue
10494                 listSh = self.SubShapeAllIDs(theShape, self.ShapeType[typeSh])
10495                 Nb = len(listSh)
10496                 aDict[typeSh] = Nb
10497                 pass
10498             return aDict
10499
10500         def GetCreationInformation(self, theShape):
10501             info = theShape.GetCreationInformation()
10502             # operationName
10503             opName = info.operationName
10504             if not opName: opName = "no info available"
10505             res = "Operation: " + opName
10506             # parameters
10507             for parVal in info.params:
10508                 res += " \n %s = %s" % ( parVal.name, parVal.value )
10509             return res
10510
10511         ## Get a point, situated at the centre of mass of theShape.
10512         #  @param theShape Shape to define centre of mass of.
10513         #  @param theName Object name; when specified, this parameter is used
10514         #         for result publication in the study. Otherwise, if automatic
10515         #         publication is switched on, default value is used for result name.
10516         #
10517         #  @return New GEOM.GEOM_Object, containing the created point.
10518         #
10519         #  @ref tui_measurement_tools_page "Example"
10520         @ManageTransactions("MeasuOp")
10521         def MakeCDG(self, theShape, theName=None):
10522             """
10523             Get a point, situated at the centre of mass of theShape.
10524
10525             Parameters:
10526                 theShape Shape to define centre of mass of.
10527                 theName Object name; when specified, this parameter is used
10528                         for result publication in the study. Otherwise, if automatic
10529                         publication is switched on, default value is used for result name.
10530
10531             Returns:
10532                 New GEOM.GEOM_Object, containing the created point.
10533             """
10534             # Example: see GEOM_TestMeasures.py
10535             anObj = self.MeasuOp.GetCentreOfMass(theShape)
10536             RaiseIfFailed("GetCentreOfMass", self.MeasuOp)
10537             self._autoPublish(anObj, theName, "centerOfMass")
10538             return anObj
10539
10540         ## Get a vertex sub-shape by index depended with orientation.
10541         #  @param theShape Shape to find sub-shape.
10542         #  @param theIndex Index to find vertex by this index (starting from zero)
10543         #  @param theName Object name; when specified, this parameter is used
10544         #         for result publication in the study. Otherwise, if automatic
10545         #         publication is switched on, default value is used for result name.
10546         #
10547         #  @return New GEOM.GEOM_Object, containing the created vertex.
10548         #
10549         #  @ref tui_measurement_tools_page "Example"
10550         @ManageTransactions("MeasuOp")
10551         def GetVertexByIndex(self, theShape, theIndex, theName=None):
10552             """
10553             Get a vertex sub-shape by index depended with orientation.
10554
10555             Parameters:
10556                 theShape Shape to find sub-shape.
10557                 theIndex Index to find vertex by this index (starting from zero)
10558                 theName Object name; when specified, this parameter is used
10559                         for result publication in the study. Otherwise, if automatic
10560                         publication is switched on, default value is used for result name.
10561
10562             Returns:
10563                 New GEOM.GEOM_Object, containing the created vertex.
10564             """
10565             # Example: see GEOM_TestMeasures.py
10566             anObj = self.MeasuOp.GetVertexByIndex(theShape, theIndex)
10567             RaiseIfFailed("GetVertexByIndex", self.MeasuOp)
10568             self._autoPublish(anObj, theName, "vertex")
10569             return anObj
10570
10571         ## Get the first vertex of wire/edge depended orientation.
10572         #  @param theShape Shape to find first vertex.
10573         #  @param theName Object name; when specified, this parameter is used
10574         #         for result publication in the study. Otherwise, if automatic
10575         #         publication is switched on, default value is used for result name.
10576         #
10577         #  @return New GEOM.GEOM_Object, containing the created vertex.
10578         #
10579         #  @ref tui_measurement_tools_page "Example"
10580         def GetFirstVertex(self, theShape, theName=None):
10581             """
10582             Get the first vertex of wire/edge depended orientation.
10583
10584             Parameters:
10585                 theShape Shape to find first vertex.
10586                 theName Object name; when specified, this parameter is used
10587                         for result publication in the study. Otherwise, if automatic
10588                         publication is switched on, default value is used for result name.
10589
10590             Returns:
10591                 New GEOM.GEOM_Object, containing the created vertex.
10592             """
10593             # Example: see GEOM_TestMeasures.py
10594             # note: auto-publishing is done in self.GetVertexByIndex()
10595             return self.GetVertexByIndex(theShape, 0, theName)
10596
10597         ## Get the last vertex of wire/edge depended orientation.
10598         #  @param theShape Shape to find last vertex.
10599         #  @param theName Object name; when specified, this parameter is used
10600         #         for result publication in the study. Otherwise, if automatic
10601         #         publication is switched on, default value is used for result name.
10602         #
10603         #  @return New GEOM.GEOM_Object, containing the created vertex.
10604         #
10605         #  @ref tui_measurement_tools_page "Example"
10606         def GetLastVertex(self, theShape, theName=None):
10607             """
10608             Get the last vertex of wire/edge depended orientation.
10609
10610             Parameters:
10611                 theShape Shape to find last vertex.
10612                 theName Object name; when specified, this parameter is used
10613                         for result publication in the study. Otherwise, if automatic
10614                         publication is switched on, default value is used for result name.
10615
10616             Returns:
10617                 New GEOM.GEOM_Object, containing the created vertex.
10618             """
10619             # Example: see GEOM_TestMeasures.py
10620             nb_vert =  self.NumberOfSubShapes(theShape, self.ShapeType["VERTEX"])
10621             # note: auto-publishing is done in self.GetVertexByIndex()
10622             return self.GetVertexByIndex(theShape, (nb_vert-1), theName)
10623
10624         ## Get a normale to the given face. If the point is not given,
10625         #  the normale is calculated at the center of mass.
10626         #  @param theFace Face to define normale of.
10627         #  @param theOptionalPoint Point to compute the normale at.
10628         #  @param theName Object name; when specified, this parameter is used
10629         #         for result publication in the study. Otherwise, if automatic
10630         #         publication is switched on, default value is used for result name.
10631         #
10632         #  @return New GEOM.GEOM_Object, containing the created vector.
10633         #
10634         #  @ref swig_todo "Example"
10635         @ManageTransactions("MeasuOp")
10636         def GetNormal(self, theFace, theOptionalPoint = None, theName=None):
10637             """
10638             Get a normale to the given face. If the point is not given,
10639             the normale is calculated at the center of mass.
10640
10641             Parameters:
10642                 theFace Face to define normale of.
10643                 theOptionalPoint Point to compute the normale at.
10644                 theName Object name; when specified, this parameter is used
10645                         for result publication in the study. Otherwise, if automatic
10646                         publication is switched on, default value is used for result name.
10647
10648             Returns:
10649                 New GEOM.GEOM_Object, containing the created vector.
10650             """
10651             # Example: see GEOM_TestMeasures.py
10652             anObj = self.MeasuOp.GetNormal(theFace, theOptionalPoint)
10653             RaiseIfFailed("GetNormal", self.MeasuOp)
10654             self._autoPublish(anObj, theName, "normal")
10655             return anObj
10656
10657         ## Print shape errors obtained from CheckShape.
10658         #  @param theShape Shape that was checked.
10659         #  @param theShapeErrors the shape errors obtained by CheckShape.
10660         #  @param theReturnStatus If 0 the description of problem is printed.
10661         #                         If 1 the description of problem is returned.
10662         #  @return If theReturnStatus is equal to 1 the description is returned.
10663         #          Otherwise doesn't return anything.
10664         #
10665         #  @ref tui_measurement_tools_page "Example"
10666         @ManageTransactions("MeasuOp")
10667         def PrintShapeErrors(self, theShape, theShapeErrors, theReturnStatus = 0):
10668             """
10669             Print shape errors obtained from CheckShape.
10670
10671             Parameters:
10672                 theShape Shape that was checked.
10673                 theShapeErrors the shape errors obtained by CheckShape.
10674                 theReturnStatus If 0 the description of problem is printed.
10675                                 If 1 the description of problem is returned.
10676
10677             Returns:
10678                 If theReturnStatus is equal to 1 the description is returned.
10679                   Otherwise doesn't return anything.
10680             """
10681             # Example: see GEOM_TestMeasures.py
10682             Descr = self.MeasuOp.PrintShapeErrors(theShape, theShapeErrors)
10683             if theReturnStatus == 1:
10684                 return Descr
10685             print Descr
10686             pass
10687
10688         ## Check a topology of the given shape.
10689         #  @param theShape Shape to check validity of.
10690         #  @param theIsCheckGeom If FALSE, only the shape's topology will be checked, \n
10691         #                        if TRUE, the shape's geometry will be checked also.
10692         #  @param theReturnStatus If 0 and if theShape is invalid, a description
10693         #                         of problem is printed.
10694         #                         If 1 isValid flag and the description of
10695         #                         problem is returned.
10696         #                         If 2 isValid flag and the list of error data
10697         #                         is returned.
10698         #  @return TRUE, if the shape "seems to be valid".
10699         #          If theShape is invalid, prints a description of problem.
10700         #          If theReturnStatus is equal to 1 the description is returned
10701         #          along with IsValid flag.
10702         #          If theReturnStatus is equal to 2 the list of error data is
10703         #          returned along with IsValid flag.
10704         #
10705         #  @ref tui_measurement_tools_page "Example"
10706         @ManageTransactions("MeasuOp")
10707         def CheckShape(self,theShape, theIsCheckGeom = 0, theReturnStatus = 0):
10708             """
10709             Check a topology of the given shape.
10710
10711             Parameters:
10712                 theShape Shape to check validity of.
10713                 theIsCheckGeom If FALSE, only the shape's topology will be checked,
10714                                if TRUE, the shape's geometry will be checked also.
10715                 theReturnStatus If 0 and if theShape is invalid, a description
10716                                 of problem is printed.
10717                                 If 1 IsValid flag and the description of
10718                                 problem is returned.
10719                                 If 2 IsValid flag and the list of error data
10720                                 is returned.
10721
10722             Returns:
10723                 TRUE, if the shape "seems to be valid".
10724                 If theShape is invalid, prints a description of problem.
10725                 If theReturnStatus is equal to 1 the description is returned
10726                 along with IsValid flag.
10727                 If theReturnStatus is equal to 2 the list of error data is
10728                 returned along with IsValid flag.
10729             """
10730             # Example: see GEOM_TestMeasures.py
10731             if theIsCheckGeom:
10732                 (IsValid, ShapeErrors) = self.MeasuOp.CheckShapeWithGeometry(theShape)
10733                 RaiseIfFailed("CheckShapeWithGeometry", self.MeasuOp)
10734             else:
10735                 (IsValid, ShapeErrors) = self.MeasuOp.CheckShape(theShape)
10736                 RaiseIfFailed("CheckShape", self.MeasuOp)
10737             if IsValid == 0:
10738                 if theReturnStatus == 0:
10739                     Descr = self.MeasuOp.PrintShapeErrors(theShape, ShapeErrors)
10740                     print Descr
10741             if theReturnStatus == 1:
10742               Descr = self.MeasuOp.PrintShapeErrors(theShape, ShapeErrors)
10743               return (IsValid, Descr)
10744             elif theReturnStatus == 2:
10745               return (IsValid, ShapeErrors)
10746             return IsValid
10747
10748         ## Detect self-intersections in the given shape.
10749         #  @param theShape Shape to check.
10750         #  @param theCheckLevel is the level of self-intersection check.
10751         #         Possible input values are:
10752         #         - GEOM.SI_V_V(0) - only V/V interferences
10753         #         - GEOM.SI_V_E(1) - V/V and V/E interferences
10754         #         - GEOM.SI_E_E(2) - V/V, V/E and E/E interferences
10755         #         - GEOM.SI_V_F(3) - V/V, V/E, E/E and V/F interferences
10756         #         - GEOM.SI_E_F(4) - V/V, V/E, E/E, V/F and E/F interferences
10757         #         - GEOM.SI_ALL(5) - all interferences.
10758         #  @return TRUE, if the shape contains no self-intersections.
10759         #
10760         #  @ref tui_measurement_tools_page "Example"
10761         @ManageTransactions("MeasuOp")
10762         def CheckSelfIntersections(self, theShape, theCheckLevel = GEOM.SI_ALL):
10763             """
10764             Detect self-intersections in the given shape.
10765
10766             Parameters:
10767                 theShape Shape to check.
10768                 theCheckLevel is the level of self-intersection check.
10769                   Possible input values are:
10770                    - GEOM.SI_V_V(0) - only V/V interferences
10771                    - GEOM.SI_V_E(1) - V/V and V/E interferences
10772                    - GEOM.SI_E_E(2) - V/V, V/E and E/E interferences
10773                    - GEOM.SI_V_F(3) - V/V, V/E, E/E and V/F interferences
10774                    - GEOM.SI_E_F(4) - V/V, V/E, E/E, V/F and E/F interferences
10775                    - GEOM.SI_ALL(5) - all interferences.
10776  
10777             Returns:
10778                 TRUE, if the shape contains no self-intersections.
10779             """
10780             # Example: see GEOM_TestMeasures.py
10781             (IsValid, Pairs) = self.MeasuOp.CheckSelfIntersections(theShape, EnumToLong(theCheckLevel))
10782             RaiseIfFailed("CheckSelfIntersections", self.MeasuOp)
10783             return IsValid
10784
10785         ## Get position (LCS) of theShape.
10786         #
10787         #  Origin of the LCS is situated at the shape's center of mass.
10788         #  Axes of the LCS are obtained from shape's location or,
10789         #  if the shape is a planar face, from position of its plane.
10790         #
10791         #  @param theShape Shape to calculate position of.
10792         #  @return [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
10793         #          Ox,Oy,Oz: Coordinates of shape's LCS origin.
10794         #          Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
10795         #          Xx,Xy,Xz: Coordinates of shape's LCS X direction.
10796         #
10797         #  @ref swig_todo "Example"
10798         @ManageTransactions("MeasuOp")
10799         def GetPosition(self,theShape):
10800             """
10801             Get position (LCS) of theShape.
10802             Origin of the LCS is situated at the shape's center of mass.
10803             Axes of the LCS are obtained from shape's location or,
10804             if the shape is a planar face, from position of its plane.
10805
10806             Parameters:
10807                 theShape Shape to calculate position of.
10808
10809             Returns:
10810                 [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
10811                  Ox,Oy,Oz: Coordinates of shape's LCS origin.
10812                  Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
10813                  Xx,Xy,Xz: Coordinates of shape's LCS X direction.
10814             """
10815             # Example: see GEOM_TestMeasures.py
10816             aTuple = self.MeasuOp.GetPosition(theShape)
10817             RaiseIfFailed("GetPosition", self.MeasuOp)
10818             return aTuple
10819
10820         ## Get kind of theShape.
10821         #
10822         #  @param theShape Shape to get a kind of.
10823         #  @return Returns a kind of shape in terms of <VAR>GEOM.GEOM_IKindOfShape.shape_kind</VAR> enumeration
10824         #          and a list of parameters, describing the shape.
10825         #  @note  Concrete meaning of each value, returned via \a theIntegers
10826         #         or \a theDoubles list depends on the kind() of the shape.
10827         #
10828         #  @ref swig_todo "Example"
10829         @ManageTransactions("MeasuOp")
10830         def KindOfShape(self,theShape):
10831             """
10832             Get kind of theShape.
10833
10834             Parameters:
10835                 theShape Shape to get a kind of.
10836
10837             Returns:
10838                 a kind of shape in terms of GEOM_IKindOfShape.shape_kind enumeration
10839                     and a list of parameters, describing the shape.
10840             Note:
10841                 Concrete meaning of each value, returned via theIntegers
10842                 or theDoubles list depends on the geompy.kind of the shape
10843             """
10844             # Example: see GEOM_TestMeasures.py
10845             aRoughTuple = self.MeasuOp.KindOfShape(theShape)
10846             RaiseIfFailed("KindOfShape", self.MeasuOp)
10847
10848             aKind  = aRoughTuple[0]
10849             anInts = aRoughTuple[1]
10850             aDbls  = aRoughTuple[2]
10851
10852             # Now there is no exception from this rule:
10853             aKindTuple = [aKind] + aDbls + anInts
10854
10855             # If they are we will regroup parameters for such kind of shape.
10856             # For example:
10857             #if aKind == kind.SOME_KIND:
10858             #    #  SOME_KIND     int int double int double double
10859             #    aKindTuple = [aKind, anInts[0], anInts[1], aDbls[0], anInts[2], aDbls[1], aDbls[2]]
10860
10861             return aKindTuple
10862
10863         ## Returns the string that describes if the shell is good for solid.
10864         #  This is a support method for MakeSolid.
10865         #
10866         #  @param theShell the shell to be checked.
10867         #  @return Returns a string that describes the shell validity for
10868         #          solid construction.
10869         @ManageTransactions("MeasuOp")
10870         def _IsGoodForSolid(self, theShell):
10871             """
10872             Returns the string that describes if the shell is good for solid.
10873             This is a support method for MakeSolid.
10874
10875             Parameter:
10876                 theShell the shell to be checked.
10877
10878             Returns:
10879                 Returns a string that describes the shell validity for
10880                 solid construction.
10881             """
10882             aDescr = self.MeasuOp.IsGoodForSolid(theShell)
10883             return aDescr
10884
10885         # end of l2_measure
10886         ## @}
10887
10888         ## @addtogroup l2_import_export
10889         ## @{
10890
10891         ## Import a shape from the BREP, IGES, STEP or other file
10892         #  (depends on given format) with given name.
10893         #
10894         #  Note: this function is deprecated, it is kept for backward compatibility only
10895         #  Use Import<FormatName> instead, where <FormatName> is a name of desirable format to import.
10896         #
10897         #  @param theFileName The file, containing the shape.
10898         #  @param theFormatName Specify format for the file reading.
10899         #         Available formats can be obtained with InsertOp.ImportTranslators() method.
10900         #         If format 'IGES_SCALE' is used instead of 'IGES' or
10901         #            format 'STEP_SCALE' is used instead of 'STEP',
10902         #            length unit will be set to 'meter' and result model will be scaled.
10903         #  @param theName Object name; when specified, this parameter is used
10904         #         for result publication in the study. Otherwise, if automatic
10905         #         publication is switched on, default value is used for result name.
10906         #
10907         #  @return New GEOM.GEOM_Object, containing the imported shape.
10908         #          If material names are imported it returns the list of
10909         #          objects. The first one is the imported object followed by
10910         #          material groups.
10911         #  @note Auto publishing is allowed for the shape itself. Imported
10912         #        material groups are not automatically published.
10913         #
10914         #  @ref swig_Import_Export "Example"
10915         @ManageTransactions("InsertOp")
10916         def ImportFile(self, theFileName, theFormatName, theName=None):
10917             """
10918             Import a shape from the BREP, IGES, STEP or other file
10919             (depends on given format) with given name.
10920
10921             Note: this function is deprecated, it is kept for backward compatibility only
10922             Use Import<FormatName> instead, where <FormatName> is a name of desirable format to import.
10923
10924             Parameters: 
10925                 theFileName The file, containing the shape.
10926                 theFormatName Specify format for the file reading.
10927                     Available formats can be obtained with geompy.InsertOp.ImportTranslators() method.
10928                     If format 'IGES_SCALE' is used instead of 'IGES' or
10929                        format 'STEP_SCALE' is used instead of 'STEP',
10930                        length unit will be set to 'meter' and result model will be scaled.
10931                 theName Object name; when specified, this parameter is used
10932                         for result publication in the study. Otherwise, if automatic
10933                         publication is switched on, default value is used for result name.
10934
10935             Returns:
10936                 New GEOM.GEOM_Object, containing the imported shape.
10937                 If material names are imported it returns the list of
10938                 objects. The first one is the imported object followed by
10939                 material groups.
10940             Note:
10941                 Auto publishing is allowed for the shape itself. Imported
10942                 material groups are not automatically published.
10943             """
10944             # Example: see GEOM_TestOthers.py
10945             print """
10946             WARNING: Function ImportFile is deprecated, use Import<FormatName> instead,
10947             where <FormatName> is a name of desirable format for importing.
10948             """
10949             aListObj = self.InsertOp.ImportFile(theFileName, theFormatName)
10950             RaiseIfFailed("ImportFile", self.InsertOp)
10951             aNbObj = len(aListObj)
10952             if aNbObj > 0:
10953                 self._autoPublish(aListObj[0], theName, "imported")
10954             if aNbObj == 1:
10955                 return aListObj[0]
10956             return aListObj
10957
10958         ## Deprecated analog of ImportFile()
10959         def Import(self, theFileName, theFormatName, theName=None):
10960             """
10961             Deprecated analog of geompy.ImportFile, kept for backward compatibility only.
10962             """
10963             # note: auto-publishing is done in self.ImportFile()
10964             return self.ImportFile(theFileName, theFormatName, theName)
10965
10966         ## Read a shape from the binary stream, containing its bounding representation (BRep).
10967         #  @note This method will not be dumped to the python script by DumpStudy functionality.
10968         #  @note GEOM.GEOM_Object.GetShapeStream() method can be used to obtain the shape's BRep stream.
10969         #  @param theStream The BRep binary stream.
10970         #  @param theName Object name; when specified, this parameter is used
10971         #         for result publication in the study. Otherwise, if automatic
10972         #         publication is switched on, default value is used for result name.
10973         #
10974         #  @return New GEOM_Object, containing the shape, read from theStream.
10975         #
10976         #  @ref swig_Import_Export "Example"
10977         @ManageTransactions("InsertOp")
10978         def RestoreShape (self, theStream, theName=None):
10979             """
10980             Read a shape from the binary stream, containing its bounding representation (BRep).
10981
10982             Note:
10983                 shape.GetShapeStream() method can be used to obtain the shape's BRep stream.
10984
10985             Parameters:
10986                 theStream The BRep binary stream.
10987                 theName Object name; when specified, this parameter is used
10988                         for result publication in the study. Otherwise, if automatic
10989                         publication is switched on, default value is used for result name.
10990
10991             Returns:
10992                 New GEOM_Object, containing the shape, read from theStream.
10993             """
10994             # Example: see GEOM_TestOthers.py
10995             anObj = self.InsertOp.RestoreShape(theStream)
10996             RaiseIfFailed("RestoreShape", self.InsertOp)
10997             self._autoPublish(anObj, theName, "restored")
10998             return anObj
10999
11000         ## Export the given shape into a file with given name.
11001         #
11002         #  Note: this function is deprecated, it is kept for backward compatibility only
11003         #  Use Export<FormatName> instead, where <FormatName> is a name of desirable format to export.
11004         #
11005         #  @param theObject Shape to be stored in the file.
11006         #  @param theFileName Name of the file to store the given shape in.
11007         #  @param theFormatName Specify format for the shape storage.
11008         #         Available formats can be obtained with
11009         #         geompy.InsertOp.ExportTranslators()[0] method.
11010         #
11011         #  @ref swig_Import_Export "Example"
11012         @ManageTransactions("InsertOp")
11013         def Export(self, theObject, theFileName, theFormatName):
11014             """
11015             Export the given shape into a file with given name.
11016
11017             Note: this function is deprecated, it is kept for backward compatibility only
11018             Use Export<FormatName> instead, where <FormatName> is a name of desirable format to export.
11019             
11020             Parameters: 
11021                 theObject Shape to be stored in the file.
11022                 theFileName Name of the file to store the given shape in.
11023                 theFormatName Specify format for the shape storage.
11024                               Available formats can be obtained with
11025                               geompy.InsertOp.ExportTranslators()[0] method.
11026             """
11027             # Example: see GEOM_TestOthers.py
11028             print """
11029             WARNING: Function Export is deprecated, use Export<FormatName> instead,
11030             where <FormatName> is a name of desirable format for exporting.
11031             """
11032             self.InsertOp.Export(theObject, theFileName, theFormatName)
11033             if self.InsertOp.IsDone() == 0:
11034                 raise RuntimeError,  "Export : " + self.InsertOp.GetErrorCode()
11035                 pass
11036             pass
11037
11038         # end of l2_import_export
11039         ## @}
11040
11041         ## @addtogroup l3_blocks
11042         ## @{
11043
11044         ## Create a quadrangle face from four edges. Order of Edges is not
11045         #  important. It is  not necessary that edges share the same vertex.
11046         #  @param E1,E2,E3,E4 Edges for the face bound.
11047         #  @param theName Object name; when specified, this parameter is used
11048         #         for result publication in the study. Otherwise, if automatic
11049         #         publication is switched on, default value is used for result name.
11050         #
11051         #  @return New GEOM.GEOM_Object, containing the created face.
11052         #
11053         #  @ref tui_building_by_blocks_page "Example"
11054         @ManageTransactions("BlocksOp")
11055         def MakeQuad(self, E1, E2, E3, E4, theName=None):
11056             """
11057             Create a quadrangle face from four edges. Order of Edges is not
11058             important. It is  not necessary that edges share the same vertex.
11059
11060             Parameters:
11061                 E1,E2,E3,E4 Edges for the face bound.
11062                 theName Object name; when specified, this parameter is used
11063                         for result publication in the study. Otherwise, if automatic
11064                         publication is switched on, default value is used for result name.
11065
11066             Returns:
11067                 New GEOM.GEOM_Object, containing the created face.
11068
11069             Example of usage:
11070                 qface1 = geompy.MakeQuad(edge1, edge2, edge3, edge4)
11071             """
11072             # Example: see GEOM_Spanner.py
11073             anObj = self.BlocksOp.MakeQuad(E1, E2, E3, E4)
11074             RaiseIfFailed("MakeQuad", self.BlocksOp)
11075             self._autoPublish(anObj, theName, "quad")
11076             return anObj
11077
11078         ## Create a quadrangle face on two edges.
11079         #  The missing edges will be built by creating the shortest ones.
11080         #  @param E1,E2 Two opposite edges for the face.
11081         #  @param theName Object name; when specified, this parameter is used
11082         #         for result publication in the study. Otherwise, if automatic
11083         #         publication is switched on, default value is used for result name.
11084         #
11085         #  @return New GEOM.GEOM_Object, containing the created face.
11086         #
11087         #  @ref tui_building_by_blocks_page "Example"
11088         @ManageTransactions("BlocksOp")
11089         def MakeQuad2Edges(self, E1, E2, theName=None):
11090             """
11091             Create a quadrangle face on two edges.
11092             The missing edges will be built by creating the shortest ones.
11093
11094             Parameters:
11095                 E1,E2 Two opposite edges for the face.
11096                 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             Returns:
11101                 New GEOM.GEOM_Object, containing the created face.
11102
11103             Example of usage:
11104                 # create vertices
11105                 p1 = geompy.MakeVertex(  0.,   0.,   0.)
11106                 p2 = geompy.MakeVertex(150.,  30.,   0.)
11107                 p3 = geompy.MakeVertex(  0., 120.,  50.)
11108                 p4 = geompy.MakeVertex(  0.,  40.,  70.)
11109                 # create edges
11110                 edge1 = geompy.MakeEdge(p1, p2)
11111                 edge2 = geompy.MakeEdge(p3, p4)
11112                 # create a quadrangle face from two edges
11113                 qface2 = geompy.MakeQuad2Edges(edge1, edge2)
11114             """
11115             # Example: see GEOM_Spanner.py
11116             anObj = self.BlocksOp.MakeQuad2Edges(E1, E2)
11117             RaiseIfFailed("MakeQuad2Edges", self.BlocksOp)
11118             self._autoPublish(anObj, theName, "quad")
11119             return anObj
11120
11121         ## Create a quadrangle face with specified corners.
11122         #  The missing edges will be built by creating the shortest ones.
11123         #  @param V1,V2,V3,V4 Corner vertices for the face.
11124         #  @param theName Object name; when specified, this parameter is used
11125         #         for result publication in the study. Otherwise, if automatic
11126         #         publication is switched on, default value is used for result name.
11127         #
11128         #  @return New GEOM.GEOM_Object, containing the created face.
11129         #
11130         #  @ref tui_building_by_blocks_page "Example 1"
11131         #  \n @ref swig_MakeQuad4Vertices "Example 2"
11132         @ManageTransactions("BlocksOp")
11133         def MakeQuad4Vertices(self, V1, V2, V3, V4, theName=None):
11134             """
11135             Create a quadrangle face with specified corners.
11136             The missing edges will be built by creating the shortest ones.
11137
11138             Parameters:
11139                 V1,V2,V3,V4 Corner vertices for the face.
11140                 theName Object name; when specified, this parameter is used
11141                         for result publication in the study. Otherwise, if automatic
11142                         publication is switched on, default value is used for result name.
11143
11144             Returns:
11145                 New GEOM.GEOM_Object, containing the created face.
11146
11147             Example of usage:
11148                 # create vertices
11149                 p1 = geompy.MakeVertex(  0.,   0.,   0.)
11150                 p2 = geompy.MakeVertex(150.,  30.,   0.)
11151                 p3 = geompy.MakeVertex(  0., 120.,  50.)
11152                 p4 = geompy.MakeVertex(  0.,  40.,  70.)
11153                 # create a quadrangle from four points in its corners
11154                 qface3 = geompy.MakeQuad4Vertices(p1, p2, p3, p4)
11155             """
11156             # Example: see GEOM_Spanner.py
11157             anObj = self.BlocksOp.MakeQuad4Vertices(V1, V2, V3, V4)
11158             RaiseIfFailed("MakeQuad4Vertices", self.BlocksOp)
11159             self._autoPublish(anObj, theName, "quad")
11160             return anObj
11161
11162         ## Create a hexahedral solid, bounded by the six given faces. Order of
11163         #  faces is not important. It is  not necessary that Faces share the same edge.
11164         #  @param F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
11165         #  @param theName Object name; when specified, this parameter is used
11166         #         for result publication in the study. Otherwise, if automatic
11167         #         publication is switched on, default value is used for result name.
11168         #
11169         #  @return New GEOM.GEOM_Object, containing the created solid.
11170         #
11171         #  @ref tui_building_by_blocks_page "Example 1"
11172         #  \n @ref swig_MakeHexa "Example 2"
11173         @ManageTransactions("BlocksOp")
11174         def MakeHexa(self, F1, F2, F3, F4, F5, F6, theName=None):
11175             """
11176             Create a hexahedral solid, bounded by the six given faces. Order of
11177             faces is not important. It is  not necessary that Faces share the same edge.
11178
11179             Parameters:
11180                 F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
11181                 theName Object name; when specified, this parameter is used
11182                         for result publication in the study. Otherwise, if automatic
11183                         publication is switched on, default value is used for result name.
11184
11185             Returns:
11186                 New GEOM.GEOM_Object, containing the created solid.
11187
11188             Example of usage:
11189                 solid = geompy.MakeHexa(qface1, qface2, qface3, qface4, qface5, qface6)
11190             """
11191             # Example: see GEOM_Spanner.py
11192             anObj = self.BlocksOp.MakeHexa(F1, F2, F3, F4, F5, F6)
11193             RaiseIfFailed("MakeHexa", self.BlocksOp)
11194             self._autoPublish(anObj, theName, "hexa")
11195             return anObj
11196
11197         ## Create a hexahedral solid between two given faces.
11198         #  The missing faces will be built by creating the smallest ones.
11199         #  @param F1,F2 Two opposite faces for the hexahedral solid.
11200         #  @param theName Object name; when specified, this parameter is used
11201         #         for result publication in the study. Otherwise, if automatic
11202         #         publication is switched on, default value is used for result name.
11203         #
11204         #  @return New GEOM.GEOM_Object, containing the created solid.
11205         #
11206         #  @ref tui_building_by_blocks_page "Example 1"
11207         #  \n @ref swig_MakeHexa2Faces "Example 2"
11208         @ManageTransactions("BlocksOp")
11209         def MakeHexa2Faces(self, F1, F2, theName=None):
11210             """
11211             Create a hexahedral solid between two given faces.
11212             The missing faces will be built by creating the smallest ones.
11213
11214             Parameters:
11215                 F1,F2 Two opposite faces for the hexahedral solid.
11216                 theName Object name; when specified, this parameter is used
11217                         for result publication in the study. Otherwise, if automatic
11218                         publication is switched on, default value is used for result name.
11219
11220             Returns:
11221                 New GEOM.GEOM_Object, containing the created solid.
11222
11223             Example of usage:
11224                 solid1 = geompy.MakeHexa2Faces(qface1, qface2)
11225             """
11226             # Example: see GEOM_Spanner.py
11227             anObj = self.BlocksOp.MakeHexa2Faces(F1, F2)
11228             RaiseIfFailed("MakeHexa2Faces", self.BlocksOp)
11229             self._autoPublish(anObj, theName, "hexa")
11230             return anObj
11231
11232         # end of l3_blocks
11233         ## @}
11234
11235         ## @addtogroup l3_blocks_op
11236         ## @{
11237
11238         ## Get a vertex, found in the given shape by its coordinates.
11239         #  @param theShape Block or a compound of blocks.
11240         #  @param theX,theY,theZ Coordinates of the sought vertex.
11241         #  @param theEpsilon Maximum allowed distance between the resulting
11242         #                    vertex and point with the given coordinates.
11243         #  @param theName Object name; when specified, this parameter is used
11244         #         for result publication in the study. Otherwise, if automatic
11245         #         publication is switched on, default value is used for result name.
11246         #
11247         #  @return New GEOM.GEOM_Object, containing the found vertex.
11248         #
11249         #  @ref swig_GetPoint "Example"
11250         @ManageTransactions("BlocksOp")
11251         def GetPoint(self, theShape, theX, theY, theZ, theEpsilon, theName=None):
11252             """
11253             Get a vertex, found in the given shape by its coordinates.
11254
11255             Parameters:
11256                 theShape Block or a compound of blocks.
11257                 theX,theY,theZ Coordinates of the sought vertex.
11258                 theEpsilon Maximum allowed distance between the resulting
11259                            vertex and point with the given coordinates.
11260                 theName Object name; when specified, this parameter is used
11261                         for result publication in the study. Otherwise, if automatic
11262                         publication is switched on, default value is used for result name.
11263
11264             Returns:
11265                 New GEOM.GEOM_Object, containing the found vertex.
11266
11267             Example of usage:
11268                 pnt = geompy.GetPoint(shape, -50,  50,  50, 0.01)
11269             """
11270             # Example: see GEOM_TestOthers.py
11271             anObj = self.BlocksOp.GetPoint(theShape, theX, theY, theZ, theEpsilon)
11272             RaiseIfFailed("GetPoint", self.BlocksOp)
11273             self._autoPublish(anObj, theName, "vertex")
11274             return anObj
11275
11276         ## Find a vertex of the given shape, which has minimal distance to the given point.
11277         #  @param theShape Any shape.
11278         #  @param thePoint Point, close to the desired vertex.
11279         #  @param theName Object name; when specified, this parameter is used
11280         #         for result publication in the study. Otherwise, if automatic
11281         #         publication is switched on, default value is used for result name.
11282         #
11283         #  @return New GEOM.GEOM_Object, containing the found vertex.
11284         #
11285         #  @ref swig_GetVertexNearPoint "Example"
11286         @ManageTransactions("BlocksOp")
11287         def GetVertexNearPoint(self, theShape, thePoint, theName=None):
11288             """
11289             Find a vertex of the given shape, which has minimal distance to the given point.
11290
11291             Parameters:
11292                 theShape Any shape.
11293                 thePoint Point, close to the desired vertex.
11294                 theName Object name; when specified, this parameter is used
11295                         for result publication in the study. Otherwise, if automatic
11296                         publication is switched on, default value is used for result name.
11297
11298             Returns:
11299                 New GEOM.GEOM_Object, containing the found vertex.
11300
11301             Example of usage:
11302                 pmidle = geompy.MakeVertex(50, 0, 50)
11303                 edge1 = geompy.GetEdgeNearPoint(blocksComp, pmidle)
11304             """
11305             # Example: see GEOM_TestOthers.py
11306             anObj = self.BlocksOp.GetVertexNearPoint(theShape, thePoint)
11307             RaiseIfFailed("GetVertexNearPoint", self.BlocksOp)
11308             self._autoPublish(anObj, theName, "vertex")
11309             return anObj
11310
11311         ## Get an edge, found in the given shape by two given vertices.
11312         #  @param theShape Block or a compound of blocks.
11313         #  @param thePoint1,thePoint2 Points, close to the ends of the desired edge.
11314         #  @param theName Object name; when specified, this parameter is used
11315         #         for result publication in the study. Otherwise, if automatic
11316         #         publication is switched on, default value is used for result name.
11317         #
11318         #  @return New GEOM.GEOM_Object, containing the found edge.
11319         #
11320         #  @ref swig_GetEdge "Example"
11321         @ManageTransactions("BlocksOp")
11322         def GetEdge(self, theShape, thePoint1, thePoint2, theName=None):
11323             """
11324             Get an edge, found in the given shape by two given vertices.
11325
11326             Parameters:
11327                 theShape Block or a compound of blocks.
11328                 thePoint1,thePoint2 Points, close to the ends of the desired edge.
11329                 theName Object name; when specified, this parameter is used
11330                         for result publication in the study. Otherwise, if automatic
11331                         publication is switched on, default value is used for result name.
11332
11333             Returns:
11334                 New GEOM.GEOM_Object, containing the found edge.
11335             """
11336             # Example: see GEOM_Spanner.py
11337             anObj = self.BlocksOp.GetEdge(theShape, thePoint1, thePoint2)
11338             RaiseIfFailed("GetEdge", self.BlocksOp)
11339             self._autoPublish(anObj, theName, "edge")
11340             return anObj
11341
11342         ## Find an edge of the given shape, which has minimal distance to the given point.
11343         #  @param theShape Block or a compound of blocks.
11344         #  @param thePoint Point, close to the desired edge.
11345         #  @param theName Object name; when specified, this parameter is used
11346         #         for result publication in the study. Otherwise, if automatic
11347         #         publication is switched on, default value is used for result name.
11348         #
11349         #  @return New GEOM.GEOM_Object, containing the found edge.
11350         #
11351         #  @ref swig_GetEdgeNearPoint "Example"
11352         @ManageTransactions("BlocksOp")
11353         def GetEdgeNearPoint(self, theShape, thePoint, theName=None):
11354             """
11355             Find an edge of the given shape, which has minimal distance to the given point.
11356
11357             Parameters:
11358                 theShape Block or a compound of blocks.
11359                 thePoint Point, close to the desired edge.
11360                 theName Object name; when specified, this parameter is used
11361                         for result publication in the study. Otherwise, if automatic
11362                         publication is switched on, default value is used for result name.
11363
11364             Returns:
11365                 New GEOM.GEOM_Object, containing the found edge.
11366             """
11367             # Example: see GEOM_TestOthers.py
11368             anObj = self.BlocksOp.GetEdgeNearPoint(theShape, thePoint)
11369             RaiseIfFailed("GetEdgeNearPoint", self.BlocksOp)
11370             self._autoPublish(anObj, theName, "edge")
11371             return anObj
11372
11373         ## Returns a face, found in the given shape by four given corner vertices.
11374         #  @param theShape Block or a compound of blocks.
11375         #  @param thePoint1,thePoint2,thePoint3,thePoint4 Points, close to the corners of the desired face.
11376         #  @param theName Object name; when specified, this parameter is used
11377         #         for result publication in the study. Otherwise, if automatic
11378         #         publication is switched on, default value is used for result name.
11379         #
11380         #  @return New GEOM.GEOM_Object, containing the found face.
11381         #
11382         #  @ref swig_todo "Example"
11383         @ManageTransactions("BlocksOp")
11384         def GetFaceByPoints(self, theShape, thePoint1, thePoint2, thePoint3, thePoint4, theName=None):
11385             """
11386             Returns a face, found in the given shape by four given corner vertices.
11387
11388             Parameters:
11389                 theShape Block or a compound of blocks.
11390                 thePoint1,thePoint2,thePoint3,thePoint4 Points, close to the corners of the desired face.
11391                 theName Object name; when specified, this parameter is used
11392                         for result publication in the study. Otherwise, if automatic
11393                         publication is switched on, default value is used for result name.
11394
11395             Returns:
11396                 New GEOM.GEOM_Object, containing the found face.
11397             """
11398             # Example: see GEOM_Spanner.py
11399             anObj = self.BlocksOp.GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4)
11400             RaiseIfFailed("GetFaceByPoints", self.BlocksOp)
11401             self._autoPublish(anObj, theName, "face")
11402             return anObj
11403
11404         ## Get a face of block, found in the given shape by two given edges.
11405         #  @param theShape Block or a compound of blocks.
11406         #  @param theEdge1,theEdge2 Edges, close to the edges of the desired face.
11407         #  @param theName Object name; when specified, this parameter is used
11408         #         for result publication in the study. Otherwise, if automatic
11409         #         publication is switched on, default value is used for result name.
11410         #
11411         #  @return New GEOM.GEOM_Object, containing the found face.
11412         #
11413         #  @ref swig_todo "Example"
11414         @ManageTransactions("BlocksOp")
11415         def GetFaceByEdges(self, theShape, theEdge1, theEdge2, theName=None):
11416             """
11417             Get a face of block, found in the given shape by two given edges.
11418
11419             Parameters:
11420                 theShape Block or a compound of blocks.
11421                 theEdge1,theEdge2 Edges, close to the edges of the desired face.
11422                 theName Object name; when specified, this parameter is used
11423                         for result publication in the study. Otherwise, if automatic
11424                         publication is switched on, default value is used for result name.
11425
11426             Returns:
11427                 New GEOM.GEOM_Object, containing the found face.
11428             """
11429             # Example: see GEOM_Spanner.py
11430             anObj = self.BlocksOp.GetFaceByEdges(theShape, theEdge1, theEdge2)
11431             RaiseIfFailed("GetFaceByEdges", self.BlocksOp)
11432             self._autoPublish(anObj, theName, "face")
11433             return anObj
11434
11435         ## Find a face, opposite to the given one in the given block.
11436         #  @param theBlock Must be a hexahedral solid.
11437         #  @param theFace Face of \a theBlock, opposite to the desired face.
11438         #  @param theName Object name; when specified, this parameter is used
11439         #         for result publication in the study. Otherwise, if automatic
11440         #         publication is switched on, default value is used for result name.
11441         #
11442         #  @return New GEOM.GEOM_Object, containing the found face.
11443         #
11444         #  @ref swig_GetOppositeFace "Example"
11445         @ManageTransactions("BlocksOp")
11446         def GetOppositeFace(self, theBlock, theFace, theName=None):
11447             """
11448             Find a face, opposite to the given one in the given block.
11449
11450             Parameters:
11451                 theBlock Must be a hexahedral solid.
11452                 theFace Face of theBlock, opposite to the desired face.
11453                 theName Object name; when specified, this parameter is used
11454                         for result publication in the study. Otherwise, if automatic
11455                         publication is switched on, default value is used for result name.
11456
11457             Returns:
11458                 New GEOM.GEOM_Object, containing the found face.
11459             """
11460             # Example: see GEOM_Spanner.py
11461             anObj = self.BlocksOp.GetOppositeFace(theBlock, theFace)
11462             RaiseIfFailed("GetOppositeFace", self.BlocksOp)
11463             self._autoPublish(anObj, theName, "face")
11464             return anObj
11465
11466         ## Find a face of the given shape, which has minimal distance to the given point.
11467         #  @param theShape Block or a compound of blocks.
11468         #  @param thePoint Point, close to the desired face.
11469         #  @param theName Object name; when specified, this parameter is used
11470         #         for result publication in the study. Otherwise, if automatic
11471         #         publication is switched on, default value is used for result name.
11472         #
11473         #  @return New GEOM.GEOM_Object, containing the found face.
11474         #
11475         #  @ref swig_GetFaceNearPoint "Example"
11476         @ManageTransactions("BlocksOp")
11477         def GetFaceNearPoint(self, theShape, thePoint, theName=None):
11478             """
11479             Find a face of the given shape, which has minimal distance to the given point.
11480
11481             Parameters:
11482                 theShape Block or a compound of blocks.
11483                 thePoint Point, close to the desired face.
11484                 theName Object name; when specified, this parameter is used
11485                         for result publication in the study. Otherwise, if automatic
11486                         publication is switched on, default value is used for result name.
11487
11488             Returns:
11489                 New GEOM.GEOM_Object, containing the found face.
11490             """
11491             # Example: see GEOM_Spanner.py
11492             anObj = self.BlocksOp.GetFaceNearPoint(theShape, thePoint)
11493             RaiseIfFailed("GetFaceNearPoint", self.BlocksOp)
11494             self._autoPublish(anObj, theName, "face")
11495             return anObj
11496
11497         ## Find a face of block, whose outside normale has minimal angle with the given vector.
11498         #  @param theBlock Block or a compound of blocks.
11499         #  @param theVector Vector, close to the normale of the desired face.
11500         #  @param theName Object name; when specified, this parameter is used
11501         #         for result publication in the study. Otherwise, if automatic
11502         #         publication is switched on, default value is used for result name.
11503         #
11504         #  @return New GEOM.GEOM_Object, containing the found face.
11505         #
11506         #  @ref swig_todo "Example"
11507         @ManageTransactions("BlocksOp")
11508         def GetFaceByNormale(self, theBlock, theVector, theName=None):
11509             """
11510             Find a face of block, whose outside normale has minimal angle with the given vector.
11511
11512             Parameters:
11513                 theBlock Block or a compound of blocks.
11514                 theVector Vector, close to the normale of the desired face.
11515                 theName Object name; when specified, this parameter is used
11516                         for result publication in the study. Otherwise, if automatic
11517                         publication is switched on, default value is used for result name.
11518
11519             Returns:
11520                 New GEOM.GEOM_Object, containing the found face.
11521             """
11522             # Example: see GEOM_Spanner.py
11523             anObj = self.BlocksOp.GetFaceByNormale(theBlock, theVector)
11524             RaiseIfFailed("GetFaceByNormale", self.BlocksOp)
11525             self._autoPublish(anObj, theName, "face")
11526             return anObj
11527
11528         ## Find all sub-shapes of type \a theShapeType of the given shape,
11529         #  which have minimal distance to the given point.
11530         #  @param theShape Any shape.
11531         #  @param thePoint Point, close to the desired shape.
11532         #  @param theShapeType Defines what kind of sub-shapes is searched GEOM::shape_type
11533         #  @param theTolerance The tolerance for distances comparison. All shapes
11534         #                      with distances to the given point in interval
11535         #                      [minimal_distance, minimal_distance + theTolerance] will be gathered.
11536         #  @param theName Object name; when specified, this parameter is used
11537         #         for result publication in the study. Otherwise, if automatic
11538         #         publication is switched on, default value is used for result name.
11539         #
11540         #  @return New GEOM_Object, containing a group of all found shapes.
11541         #
11542         #  @ref swig_GetShapesNearPoint "Example"
11543         @ManageTransactions("BlocksOp")
11544         def GetShapesNearPoint(self, theShape, thePoint, theShapeType, theTolerance = 1e-07, theName=None):
11545             """
11546             Find all sub-shapes of type theShapeType of the given shape,
11547             which have minimal distance to the given point.
11548
11549             Parameters:
11550                 theShape Any shape.
11551                 thePoint Point, close to the desired shape.
11552                 theShapeType Defines what kind of sub-shapes is searched (see GEOM::shape_type)
11553                 theTolerance The tolerance for distances comparison. All shapes
11554                                 with distances to the given point in interval
11555                                 [minimal_distance, minimal_distance + theTolerance] will be gathered.
11556                 theName Object name; when specified, this parameter is used
11557                         for result publication in the study. Otherwise, if automatic
11558                         publication is switched on, default value is used for result name.
11559
11560             Returns:
11561                 New GEOM_Object, containing a group of all found shapes.
11562             """
11563             # Example: see GEOM_TestOthers.py
11564             anObj = self.BlocksOp.GetShapesNearPoint(theShape, thePoint, theShapeType, theTolerance)
11565             RaiseIfFailed("GetShapesNearPoint", self.BlocksOp)
11566             self._autoPublish(anObj, theName, "group")
11567             return anObj
11568
11569         # end of l3_blocks_op
11570         ## @}
11571
11572         ## @addtogroup l4_blocks_measure
11573         ## @{
11574
11575         ## Check, if the compound of blocks is given.
11576         #  To be considered as a compound of blocks, the
11577         #  given shape must satisfy the following conditions:
11578         #  - Each element of the compound should be a Block (6 faces and 12 edges).
11579         #  - A connection between two Blocks should be an entire quadrangle face or an entire edge.
11580         #  - The compound should be connexe.
11581         #  - The glue between two quadrangle faces should be applied.
11582         #  @param theCompound The compound to check.
11583         #  @return TRUE, if the given shape is a compound of blocks.
11584         #  If theCompound is not valid, prints all discovered errors.
11585         #
11586         #  @ref tui_measurement_tools_page "Example 1"
11587         #  \n @ref swig_CheckCompoundOfBlocks "Example 2"
11588         @ManageTransactions("BlocksOp")
11589         def CheckCompoundOfBlocks(self,theCompound):
11590             """
11591             Check, if the compound of blocks is given.
11592             To be considered as a compound of blocks, the
11593             given shape must satisfy the following conditions:
11594             - Each element of the compound should be a Block (6 faces and 12 edges).
11595             - A connection between two Blocks should be an entire quadrangle face or an entire edge.
11596             - The compound should be connexe.
11597             - The glue between two quadrangle faces should be applied.
11598
11599             Parameters:
11600                 theCompound The compound to check.
11601
11602             Returns:
11603                 TRUE, if the given shape is a compound of blocks.
11604                 If theCompound is not valid, prints all discovered errors.
11605             """
11606             # Example: see GEOM_Spanner.py
11607             (IsValid, BCErrors) = self.BlocksOp.CheckCompoundOfBlocks(theCompound)
11608             RaiseIfFailed("CheckCompoundOfBlocks", self.BlocksOp)
11609             if IsValid == 0:
11610                 Descr = self.BlocksOp.PrintBCErrors(theCompound, BCErrors)
11611                 print Descr
11612             return IsValid
11613
11614         ## Retrieve all non blocks solids and faces from \a theShape.
11615         #  @param theShape The shape to explore.
11616         #  @param theName Object name; when specified, this parameter is used
11617         #         for result publication in the study. Otherwise, if automatic
11618         #         publication is switched on, default value is used for result name.
11619         #
11620         #  @return A tuple of two GEOM_Objects. The first object is a group of all
11621         #          non block solids (= not 6 faces, or with 6 faces, but with the
11622         #          presence of non-quadrangular faces). The second object is a
11623         #          group of all non quadrangular faces.
11624         #
11625         #  @ref tui_measurement_tools_page "Example 1"
11626         #  \n @ref swig_GetNonBlocks "Example 2"
11627         @ManageTransactions("BlocksOp")
11628         def GetNonBlocks (self, theShape, theName=None):
11629             """
11630             Retrieve all non blocks solids and faces from theShape.
11631
11632             Parameters:
11633                 theShape The shape to explore.
11634                 theName Object name; when specified, this parameter is used
11635                         for result publication in the study. Otherwise, if automatic
11636                         publication is switched on, default value is used for result name.
11637
11638             Returns:
11639                 A tuple of two GEOM_Objects. The first object is a group of all
11640                 non block solids (= not 6 faces, or with 6 faces, but with the
11641                 presence of non-quadrangular faces). The second object is a
11642                 group of all non quadrangular faces.
11643
11644             Usage:
11645                 (res_sols, res_faces) = geompy.GetNonBlocks(myShape1)
11646             """
11647             # Example: see GEOM_Spanner.py
11648             aTuple = self.BlocksOp.GetNonBlocks(theShape)
11649             RaiseIfFailed("GetNonBlocks", self.BlocksOp)
11650             self._autoPublish(aTuple, theName, ("groupNonHexas", "groupNonQuads"))
11651             return aTuple
11652
11653         ## Remove all seam and degenerated edges from \a theShape.
11654         #  Unite faces and edges, sharing one surface. It means that
11655         #  this faces must have references to one C++ surface object (handle).
11656         #  @param theShape The compound or single solid to remove irregular edges from.
11657         #  @param doUnionFaces If True, then unite faces. If False (the default value),
11658         #         do not unite faces.
11659         #  @param theName Object name; when specified, this parameter is used
11660         #         for result publication in the study. Otherwise, if automatic
11661         #         publication is switched on, default value is used for result name.
11662         #
11663         #  @return Improved shape.
11664         #
11665         #  @ref swig_RemoveExtraEdges "Example"
11666         @ManageTransactions("BlocksOp")
11667         def RemoveExtraEdges(self, theShape, doUnionFaces=False, theName=None):
11668             """
11669             Remove all seam and degenerated edges from theShape.
11670             Unite faces and edges, sharing one surface. It means that
11671             this faces must have references to one C++ surface object (handle).
11672
11673             Parameters:
11674                 theShape The compound or single solid to remove irregular edges from.
11675                 doUnionFaces If True, then unite faces. If False (the default value),
11676                              do not unite faces.
11677                 theName Object name; when specified, this parameter is used
11678                         for result publication in the study. Otherwise, if automatic
11679                         publication is switched on, default value is used for result name.
11680
11681             Returns:
11682                 Improved shape.
11683             """
11684             # Example: see GEOM_TestOthers.py
11685             nbFacesOptimum = -1 # -1 means do not unite faces
11686             if doUnionFaces is True: nbFacesOptimum = 0 # 0 means unite faces
11687             anObj = self.BlocksOp.RemoveExtraEdges(theShape, nbFacesOptimum)
11688             RaiseIfFailed("RemoveExtraEdges", self.BlocksOp)
11689             self._autoPublish(anObj, theName, "removeExtraEdges")
11690             return anObj
11691
11692         ## Performs union faces of \a theShape
11693         #  Unite faces sharing one surface. It means that
11694         #  these faces must have references to one C++ surface object (handle).
11695         #  @param theShape The compound or single solid that contains faces
11696         #         to perform union.
11697         #  @param theName Object name; when specified, this parameter is used
11698         #         for result publication in the study. Otherwise, if automatic
11699         #         publication is switched on, default value is used for result name.
11700         #
11701         #  @return Improved shape.
11702         #
11703         #  @ref swig_UnionFaces "Example"
11704         @ManageTransactions("BlocksOp")
11705         def UnionFaces(self, theShape, theName=None):
11706             """
11707             Performs union faces of theShape.
11708             Unite faces sharing one surface. It means that
11709             these faces must have references to one C++ surface object (handle).
11710
11711             Parameters:
11712                 theShape The compound or single solid that contains faces
11713                          to perform union.
11714                 theName Object name; when specified, this parameter is used
11715                         for result publication in the study. Otherwise, if automatic
11716                         publication is switched on, default value is used for result name.
11717
11718             Returns:
11719                 Improved shape.
11720             """
11721             # Example: see GEOM_TestOthers.py
11722             anObj = self.BlocksOp.UnionFaces(theShape)
11723             RaiseIfFailed("UnionFaces", self.BlocksOp)
11724             self._autoPublish(anObj, theName, "unionFaces")
11725             return anObj
11726
11727         ## Check, if the given shape is a blocks compound.
11728         #  Fix all detected errors.
11729         #    \note Single block can be also fixed by this method.
11730         #  @param theShape The compound to check and improve.
11731         #  @param theName Object name; when specified, this parameter is used
11732         #         for result publication in the study. Otherwise, if automatic
11733         #         publication is switched on, default value is used for result name.
11734         #
11735         #  @return Improved compound.
11736         #
11737         #  @ref swig_CheckAndImprove "Example"
11738         @ManageTransactions("BlocksOp")
11739         def CheckAndImprove(self, theShape, theName=None):
11740             """
11741             Check, if the given shape is a blocks compound.
11742             Fix all detected errors.
11743
11744             Note:
11745                 Single block can be also fixed by this method.
11746
11747             Parameters:
11748                 theShape The compound to check and improve.
11749                 theName Object name; when specified, this parameter is used
11750                         for result publication in the study. Otherwise, if automatic
11751                         publication is switched on, default value is used for result name.
11752
11753             Returns:
11754                 Improved compound.
11755             """
11756             # Example: see GEOM_TestOthers.py
11757             anObj = self.BlocksOp.CheckAndImprove(theShape)
11758             RaiseIfFailed("CheckAndImprove", self.BlocksOp)
11759             self._autoPublish(anObj, theName, "improved")
11760             return anObj
11761
11762         # end of l4_blocks_measure
11763         ## @}
11764
11765         ## @addtogroup l3_blocks_op
11766         ## @{
11767
11768         ## Get all the blocks, contained in the given compound.
11769         #  @param theCompound The compound to explode.
11770         #  @param theMinNbFaces If solid has lower number of faces, it is not a block.
11771         #  @param theMaxNbFaces If solid has higher number of faces, it is not a block.
11772         #  @param theName Object name; when specified, this parameter is used
11773         #         for result publication in the study. Otherwise, if automatic
11774         #         publication is switched on, default value is used for result name.
11775         #
11776         #  @note If theMaxNbFaces = 0, the maximum number of faces is not restricted.
11777         #
11778         #  @return List of GEOM.GEOM_Object, containing the retrieved blocks.
11779         #
11780         #  @ref tui_explode_on_blocks "Example 1"
11781         #  \n @ref swig_MakeBlockExplode "Example 2"
11782         @ManageTransactions("BlocksOp")
11783         def MakeBlockExplode(self, theCompound, theMinNbFaces, theMaxNbFaces, theName=None):
11784             """
11785             Get all the blocks, contained in the given compound.
11786
11787             Parameters:
11788                 theCompound The compound to explode.
11789                 theMinNbFaces If solid has lower number of faces, it is not a block.
11790                 theMaxNbFaces If solid has higher number of faces, it is not a block.
11791                 theName Object name; when specified, this parameter is used
11792                         for result publication in the study. Otherwise, if automatic
11793                         publication is switched on, default value is used for result name.
11794
11795             Note:
11796                 If theMaxNbFaces = 0, the maximum number of faces is not restricted.
11797
11798             Returns:
11799                 List of GEOM.GEOM_Object, containing the retrieved blocks.
11800             """
11801             # Example: see GEOM_TestOthers.py
11802             theMinNbFaces,theMaxNbFaces,Parameters = ParseParameters(theMinNbFaces,theMaxNbFaces)
11803             aList = self.BlocksOp.ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces)
11804             RaiseIfFailed("ExplodeCompoundOfBlocks", self.BlocksOp)
11805             for anObj in aList:
11806                 anObj.SetParameters(Parameters)
11807                 pass
11808             self._autoPublish(aList, theName, "block")
11809             return aList
11810
11811         ## Find block, containing the given point inside its volume or on boundary.
11812         #  @param theCompound Compound, to find block in.
11813         #  @param thePoint Point, close to the desired block. If the point lays on
11814         #         boundary between some blocks, we return block with nearest center.
11815         #  @param theName Object name; when specified, this parameter is used
11816         #         for result publication in the study. Otherwise, if automatic
11817         #         publication is switched on, default value is used for result name.
11818         #
11819         #  @return New GEOM.GEOM_Object, containing the found block.
11820         #
11821         #  @ref swig_todo "Example"
11822         @ManageTransactions("BlocksOp")
11823         def GetBlockNearPoint(self, theCompound, thePoint, theName=None):
11824             """
11825             Find block, containing the given point inside its volume or on boundary.
11826
11827             Parameters:
11828                 theCompound Compound, to find block in.
11829                 thePoint Point, close to the desired block. If the point lays on
11830                          boundary between some blocks, we return block with nearest center.
11831                 theName Object name; when specified, this parameter is used
11832                         for result publication in the study. Otherwise, if automatic
11833                         publication is switched on, default value is used for result name.
11834
11835             Returns:
11836                 New GEOM.GEOM_Object, containing the found block.
11837             """
11838             # Example: see GEOM_Spanner.py
11839             anObj = self.BlocksOp.GetBlockNearPoint(theCompound, thePoint)
11840             RaiseIfFailed("GetBlockNearPoint", self.BlocksOp)
11841             self._autoPublish(anObj, theName, "block")
11842             return anObj
11843
11844         ## Find block, containing all the elements, passed as the parts, or maximum quantity of them.
11845         #  @param theCompound Compound, to find block in.
11846         #  @param theParts List of faces and/or edges and/or vertices to be parts of the found block.
11847         #  @param theName Object name; when specified, this parameter is used
11848         #         for result publication in the study. Otherwise, if automatic
11849         #         publication is switched on, default value is used for result name.
11850         #
11851         #  @return New GEOM.GEOM_Object, containing the found block.
11852         #
11853         #  @ref swig_GetBlockByParts "Example"
11854         @ManageTransactions("BlocksOp")
11855         def GetBlockByParts(self, theCompound, theParts, theName=None):
11856             """
11857              Find block, containing all the elements, passed as the parts, or maximum quantity of them.
11858
11859              Parameters:
11860                 theCompound Compound, to find block in.
11861                 theParts List of faces and/or edges and/or vertices to be parts of the found block.
11862                 theName Object name; when specified, this parameter is used
11863                         for result publication in the study. Otherwise, if automatic
11864                         publication is switched on, default value is used for result name.
11865
11866             Returns:
11867                 New GEOM_Object, containing the found block.
11868             """
11869             # Example: see GEOM_TestOthers.py
11870             anObj = self.BlocksOp.GetBlockByParts(theCompound, theParts)
11871             RaiseIfFailed("GetBlockByParts", self.BlocksOp)
11872             self._autoPublish(anObj, theName, "block")
11873             return anObj
11874
11875         ## Return all blocks, containing all the elements, passed as the parts.
11876         #  @param theCompound Compound, to find blocks in.
11877         #  @param theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
11878         #  @param theName Object name; when specified, this parameter is used
11879         #         for result publication in the study. Otherwise, if automatic
11880         #         publication is switched on, default value is used for result name.
11881         #
11882         #  @return List of GEOM.GEOM_Object, containing the found blocks.
11883         #
11884         #  @ref swig_todo "Example"
11885         @ManageTransactions("BlocksOp")
11886         def GetBlocksByParts(self, theCompound, theParts, theName=None):
11887             """
11888             Return all blocks, containing all the elements, passed as the parts.
11889
11890             Parameters:
11891                 theCompound Compound, to find blocks in.
11892                 theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
11893                 theName Object name; when specified, this parameter is used
11894                         for result publication in the study. Otherwise, if automatic
11895                         publication is switched on, default value is used for result name.
11896
11897             Returns:
11898                 List of GEOM.GEOM_Object, containing the found blocks.
11899             """
11900             # Example: see GEOM_Spanner.py
11901             aList = self.BlocksOp.GetBlocksByParts(theCompound, theParts)
11902             RaiseIfFailed("GetBlocksByParts", self.BlocksOp)
11903             self._autoPublish(aList, theName, "block")
11904             return aList
11905
11906         ## Multi-transformate block and glue the result.
11907         #  Transformation is defined so, as to superpose direction faces.
11908         #  @param Block Hexahedral solid to be multi-transformed.
11909         #  @param DirFace1 ID of First direction face.
11910         #  @param DirFace2 ID of Second direction face.
11911         #  @param NbTimes Quantity of transformations to be done.
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         #  @note Unique ID of sub-shape can be obtained, using method GetSubShapeID().
11917         #
11918         #  @return New GEOM.GEOM_Object, containing the result shape.
11919         #
11920         #  @ref tui_multi_transformation "Example"
11921         @ManageTransactions("BlocksOp")
11922         def MakeMultiTransformation1D(self, Block, DirFace1, DirFace2, NbTimes, theName=None):
11923             """
11924             Multi-transformate block and glue the result.
11925             Transformation is defined so, as to superpose direction faces.
11926
11927             Parameters:
11928                 Block Hexahedral solid to be multi-transformed.
11929                 DirFace1 ID of First direction face.
11930                 DirFace2 ID of Second direction face.
11931                 NbTimes Quantity of transformations to be done.
11932                 theName Object name; when specified, this parameter is used
11933                         for result publication in the study. Otherwise, if automatic
11934                         publication is switched on, default value is used for result name.
11935
11936             Note:
11937                 Unique ID of sub-shape can be obtained, using method GetSubShapeID().
11938
11939             Returns:
11940                 New GEOM.GEOM_Object, containing the result shape.
11941             """
11942             # Example: see GEOM_Spanner.py
11943             DirFace1,DirFace2,NbTimes,Parameters = ParseParameters(DirFace1,DirFace2,NbTimes)
11944             anObj = self.BlocksOp.MakeMultiTransformation1D(Block, DirFace1, DirFace2, NbTimes)
11945             RaiseIfFailed("MakeMultiTransformation1D", self.BlocksOp)
11946             anObj.SetParameters(Parameters)
11947             self._autoPublish(anObj, theName, "transformed")
11948             return anObj
11949
11950         ## Multi-transformate block and glue the result.
11951         #  @param Block Hexahedral solid to be multi-transformed.
11952         #  @param DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
11953         #  @param DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
11954         #  @param NbTimesU,NbTimesV Quantity of transformations to be done.
11955         #  @param theName Object name; when specified, this parameter is used
11956         #         for result publication in the study. Otherwise, if automatic
11957         #         publication is switched on, default value is used for result name.
11958         #
11959         #  @return New GEOM.GEOM_Object, containing the result shape.
11960         #
11961         #  @ref tui_multi_transformation "Example"
11962         @ManageTransactions("BlocksOp")
11963         def MakeMultiTransformation2D(self, Block, DirFace1U, DirFace2U, NbTimesU,
11964                                       DirFace1V, DirFace2V, NbTimesV, theName=None):
11965             """
11966             Multi-transformate block and glue the result.
11967
11968             Parameters:
11969                 Block Hexahedral solid to be multi-transformed.
11970                 DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
11971                 DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
11972                 NbTimesU,NbTimesV Quantity of transformations to be done.
11973                 theName Object name; when specified, this parameter is used
11974                         for result publication in the study. Otherwise, if automatic
11975                         publication is switched on, default value is used for result name.
11976
11977             Returns:
11978                 New GEOM.GEOM_Object, containing the result shape.
11979             """
11980             # Example: see GEOM_Spanner.py
11981             DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV,Parameters = ParseParameters(
11982               DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV)
11983             anObj = self.BlocksOp.MakeMultiTransformation2D(Block, DirFace1U, DirFace2U, NbTimesU,
11984                                                             DirFace1V, DirFace2V, NbTimesV)
11985             RaiseIfFailed("MakeMultiTransformation2D", self.BlocksOp)
11986             anObj.SetParameters(Parameters)
11987             self._autoPublish(anObj, theName, "transformed")
11988             return anObj
11989
11990         ## Build all possible propagation groups.
11991         #  Propagation group is a set of all edges, opposite to one (main)
11992         #  edge of this group directly or through other opposite edges.
11993         #  Notion of Opposite Edge make sence only on quadrangle face.
11994         #  @param theShape Shape to build propagation groups on.
11995         #  @param theName Object name; when specified, this parameter is used
11996         #         for result publication in the study. Otherwise, if automatic
11997         #         publication is switched on, default value is used for result name.
11998         #
11999         #  @return List of GEOM.GEOM_Object, each of them is a propagation group.
12000         #
12001         #  @ref swig_Propagate "Example"
12002         @ManageTransactions("BlocksOp")
12003         def Propagate(self, theShape, theName=None):
12004             """
12005             Build all possible propagation groups.
12006             Propagation group is a set of all edges, opposite to one (main)
12007             edge of this group directly or through other opposite edges.
12008             Notion of Opposite Edge make sence only on quadrangle face.
12009
12010             Parameters:
12011                 theShape Shape to build propagation groups on.
12012                 theName Object name; when specified, this parameter is used
12013                         for result publication in the study. Otherwise, if automatic
12014                         publication is switched on, default value is used for result name.
12015
12016             Returns:
12017                 List of GEOM.GEOM_Object, each of them is a propagation group.
12018             """
12019             # Example: see GEOM_TestOthers.py
12020             listChains = self.BlocksOp.Propagate(theShape)
12021             RaiseIfFailed("Propagate", self.BlocksOp)
12022             self._autoPublish(listChains, theName, "propagate")
12023             return listChains
12024
12025         # end of l3_blocks_op
12026         ## @}
12027
12028         ## @addtogroup l3_groups
12029         ## @{
12030
12031         ## Creates a new group which will store sub-shapes of theMainShape
12032         #  @param theMainShape is a GEOM object on which the group is selected
12033         #  @param theShapeType defines a shape type of the group (see GEOM::shape_type)
12034         #  @param theName Object name; when specified, this parameter is used
12035         #         for result publication in the study. Otherwise, if automatic
12036         #         publication is switched on, default value is used for result name.
12037         #
12038         #  @return a newly created GEOM group (GEOM.GEOM_Object)
12039         #
12040         #  @ref tui_working_with_groups_page "Example 1"
12041         #  \n @ref swig_CreateGroup "Example 2"
12042         @ManageTransactions("GroupOp")
12043         def CreateGroup(self, theMainShape, theShapeType, theName=None):
12044             """
12045             Creates a new group which will store sub-shapes of theMainShape
12046
12047             Parameters:
12048                theMainShape is a GEOM object on which the group is selected
12049                theShapeType defines a shape type of the group:"COMPOUND", "COMPSOLID",
12050                             "SOLID", "SHELL", "FACE", "WIRE", "EDGE", "VERTEX", "SHAPE".
12051                 theName Object name; when specified, this parameter is used
12052                         for result publication in the study. Otherwise, if automatic
12053                         publication is switched on, default value is used for result name.
12054
12055             Returns:
12056                a newly created GEOM group
12057
12058             Example of usage:
12059                 group = geompy.CreateGroup(Box, geompy.ShapeType["FACE"])
12060
12061             """
12062             # Example: see GEOM_TestOthers.py
12063             anObj = self.GroupOp.CreateGroup(theMainShape, theShapeType)
12064             RaiseIfFailed("CreateGroup", self.GroupOp)
12065             self._autoPublish(anObj, theName, "group")
12066             return anObj
12067
12068         ## Adds a sub-object with ID theSubShapeId to the group
12069         #  @param theGroup is a GEOM group to which the new sub-shape is added
12070         #  @param theSubShapeID is a sub-shape ID in the main object.
12071         #  \note Use method GetSubShapeID() to get an unique ID of the sub-shape
12072         #
12073         #  @ref tui_working_with_groups_page "Example"
12074         @ManageTransactions("GroupOp")
12075         def AddObject(self,theGroup, theSubShapeID):
12076             """
12077             Adds a sub-object with ID theSubShapeId to the group
12078
12079             Parameters:
12080                 theGroup       is a GEOM group to which the new sub-shape is added
12081                 theSubShapeID  is a sub-shape ID in the main object.
12082
12083             Note:
12084                 Use method GetSubShapeID() to get an unique ID of the sub-shape
12085             """
12086             # Example: see GEOM_TestOthers.py
12087             self.GroupOp.AddObject(theGroup, theSubShapeID)
12088             if self.GroupOp.GetErrorCode() != "PAL_ELEMENT_ALREADY_PRESENT":
12089                 RaiseIfFailed("AddObject", self.GroupOp)
12090                 pass
12091             pass
12092
12093         ## Removes a sub-object with ID \a theSubShapeId from the group
12094         #  @param theGroup is a GEOM group from which the new sub-shape is removed
12095         #  @param theSubShapeID is a sub-shape ID in the main object.
12096         #  \note Use method GetSubShapeID() to get an unique ID of the sub-shape
12097         #
12098         #  @ref tui_working_with_groups_page "Example"
12099         @ManageTransactions("GroupOp")
12100         def RemoveObject(self,theGroup, theSubShapeID):
12101             """
12102             Removes a sub-object with ID theSubShapeId from the group
12103
12104             Parameters:
12105                 theGroup is a GEOM group from which the new sub-shape is removed
12106                 theSubShapeID is a sub-shape ID in the main object.
12107
12108             Note:
12109                 Use method GetSubShapeID() to get an unique ID of the sub-shape
12110             """
12111             # Example: see GEOM_TestOthers.py
12112             self.GroupOp.RemoveObject(theGroup, theSubShapeID)
12113             RaiseIfFailed("RemoveObject", self.GroupOp)
12114             pass
12115
12116         ## Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12117         #  @param theGroup is a GEOM group to which the new sub-shapes are added.
12118         #  @param theSubShapes is a list of sub-shapes to be added.
12119         #
12120         #  @ref tui_working_with_groups_page "Example"
12121         @ManageTransactions("GroupOp")
12122         def UnionList (self,theGroup, theSubShapes):
12123             """
12124             Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12125
12126             Parameters:
12127                 theGroup is a GEOM group to which the new sub-shapes are added.
12128                 theSubShapes is a list of sub-shapes to be added.
12129             """
12130             # Example: see GEOM_TestOthers.py
12131             self.GroupOp.UnionList(theGroup, theSubShapes)
12132             RaiseIfFailed("UnionList", self.GroupOp)
12133             pass
12134
12135         ## Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12136         #  @param theGroup is a GEOM group to which the new sub-shapes are added.
12137         #  @param theSubShapes is a list of indices of sub-shapes to be added.
12138         #
12139         #  @ref swig_UnionIDs "Example"
12140         @ManageTransactions("GroupOp")
12141         def UnionIDs(self,theGroup, theSubShapes):
12142             """
12143             Adds to the group all the given shapes. No errors, if some shapes are alredy included.
12144
12145             Parameters:
12146                 theGroup is a GEOM group to which the new sub-shapes are added.
12147                 theSubShapes is a list of indices of sub-shapes to be added.
12148             """
12149             # Example: see GEOM_TestOthers.py
12150             self.GroupOp.UnionIDs(theGroup, theSubShapes)
12151             RaiseIfFailed("UnionIDs", self.GroupOp)
12152             pass
12153
12154         ## Removes from the group all the given shapes. No errors, if some shapes are not included.
12155         #  @param theGroup is a GEOM group from which the sub-shapes are removed.
12156         #  @param theSubShapes is a list of sub-shapes to be removed.
12157         #
12158         #  @ref tui_working_with_groups_page "Example"
12159         @ManageTransactions("GroupOp")
12160         def DifferenceList (self,theGroup, theSubShapes):
12161             """
12162             Removes from the group all the given shapes. No errors, if some shapes are not included.
12163
12164             Parameters:
12165                 theGroup is a GEOM group from which the sub-shapes are removed.
12166                 theSubShapes is a list of sub-shapes to be removed.
12167             """
12168             # Example: see GEOM_TestOthers.py
12169             self.GroupOp.DifferenceList(theGroup, theSubShapes)
12170             RaiseIfFailed("DifferenceList", self.GroupOp)
12171             pass
12172
12173         ## Removes from the group all the given shapes. No errors, if some shapes are not included.
12174         #  @param theGroup is a GEOM group from which the sub-shapes are removed.
12175         #  @param theSubShapes is a list of indices of sub-shapes to be removed.
12176         #
12177         #  @ref swig_DifferenceIDs "Example"
12178         @ManageTransactions("GroupOp")
12179         def DifferenceIDs(self,theGroup, theSubShapes):
12180             """
12181             Removes from the group all the given shapes. No errors, if some shapes are not included.
12182
12183             Parameters:
12184                 theGroup is a GEOM group from which the sub-shapes are removed.
12185                 theSubShapes is a list of indices of sub-shapes to be removed.
12186             """
12187             # Example: see GEOM_TestOthers.py
12188             self.GroupOp.DifferenceIDs(theGroup, theSubShapes)
12189             RaiseIfFailed("DifferenceIDs", self.GroupOp)
12190             pass
12191
12192         ## Union of two groups.
12193         #  New group is created. It will contain all entities
12194         #  which are present in groups theGroup1 and theGroup2.
12195         #  @param theGroup1, theGroup2 are the initial GEOM groups
12196         #                              to create the united group from.
12197         #  @param theName Object name; when specified, this parameter is used
12198         #         for result publication in the study. Otherwise, if automatic
12199         #         publication is switched on, default value is used for result name.
12200         #
12201         #  @return a newly created GEOM group.
12202         #
12203         #  @ref tui_union_groups_anchor "Example"
12204         @ManageTransactions("GroupOp")
12205         def UnionGroups (self, theGroup1, theGroup2, theName=None):
12206             """
12207             Union of two groups.
12208             New group is created. It will contain all entities
12209             which are present in groups theGroup1 and theGroup2.
12210
12211             Parameters:
12212                 theGroup1, theGroup2 are the initial GEOM groups
12213                                      to create the united group from.
12214                 theName Object name; when specified, this parameter is used
12215                         for result publication in the study. Otherwise, if automatic
12216                         publication is switched on, default value is used for result name.
12217
12218             Returns:
12219                 a newly created GEOM group.
12220             """
12221             # Example: see GEOM_TestOthers.py
12222             aGroup = self.GroupOp.UnionGroups(theGroup1, theGroup2)
12223             RaiseIfFailed("UnionGroups", self.GroupOp)
12224             self._autoPublish(aGroup, theName, "group")
12225             return aGroup
12226
12227         ## Intersection of two groups.
12228         #  New group is created. It will contain only those entities
12229         #  which are present in both groups theGroup1 and theGroup2.
12230         #  @param theGroup1, theGroup2 are the initial GEOM groups to get common part of.
12231         #  @param theName Object name; when specified, this parameter is used
12232         #         for result publication in the study. Otherwise, if automatic
12233         #         publication is switched on, default value is used for result name.
12234         #
12235         #  @return a newly created GEOM group.
12236         #
12237         #  @ref tui_intersect_groups_anchor "Example"
12238         @ManageTransactions("GroupOp")
12239         def IntersectGroups (self, theGroup1, theGroup2, theName=None):
12240             """
12241             Intersection of two groups.
12242             New group is created. It will contain only those entities
12243             which are present in both groups theGroup1 and theGroup2.
12244
12245             Parameters:
12246                 theGroup1, theGroup2 are the initial GEOM groups to get common part of.
12247                 theName Object name; when specified, this parameter is used
12248                         for result publication in the study. Otherwise, if automatic
12249                         publication is switched on, default value is used for result name.
12250
12251             Returns:
12252                 a newly created GEOM group.
12253             """
12254             # Example: see GEOM_TestOthers.py
12255             aGroup = self.GroupOp.IntersectGroups(theGroup1, theGroup2)
12256             RaiseIfFailed("IntersectGroups", self.GroupOp)
12257             self._autoPublish(aGroup, theName, "group")
12258             return aGroup
12259
12260         ## Cut of two groups.
12261         #  New group is created. It will contain entities which are
12262         #  present in group theGroup1 but are not present in group theGroup2.
12263         #  @param theGroup1 is a GEOM group to include elements of.
12264         #  @param theGroup2 is a GEOM group to exclude elements of.
12265         #  @param theName Object name; when specified, this parameter is used
12266         #         for result publication in the study. Otherwise, if automatic
12267         #         publication is switched on, default value is used for result name.
12268         #
12269         #  @return a newly created GEOM group.
12270         #
12271         #  @ref tui_cut_groups_anchor "Example"
12272         @ManageTransactions("GroupOp")
12273         def CutGroups (self, theGroup1, theGroup2, theName=None):
12274             """
12275             Cut of two groups.
12276             New group is created. It will contain entities which are
12277             present in group theGroup1 but are not present in group theGroup2.
12278
12279             Parameters:
12280                 theGroup1 is a GEOM group to include elements of.
12281                 theGroup2 is a GEOM group to exclude elements of.
12282                 theName Object name; when specified, this parameter is used
12283                         for result publication in the study. Otherwise, if automatic
12284                         publication is switched on, default value is used for result name.
12285
12286             Returns:
12287                 a newly created GEOM group.
12288             """
12289             # Example: see GEOM_TestOthers.py
12290             aGroup = self.GroupOp.CutGroups(theGroup1, theGroup2)
12291             RaiseIfFailed("CutGroups", self.GroupOp)
12292             self._autoPublish(aGroup, theName, "group")
12293             return aGroup
12294
12295         ## Union of list of groups.
12296         #  New group is created. It will contain all entities that are
12297         #  present in groups listed in theGList.
12298         #  @param theGList is a list of GEOM groups to create the united group from.
12299         #  @param theName Object name; when specified, this parameter is used
12300         #         for result publication in the study. Otherwise, if automatic
12301         #         publication is switched on, default value is used for result name.
12302         #
12303         #  @return a newly created GEOM group.
12304         #
12305         #  @ref tui_union_groups_anchor "Example"
12306         @ManageTransactions("GroupOp")
12307         def UnionListOfGroups (self, theGList, theName=None):
12308             """
12309             Union of list of groups.
12310             New group is created. It will contain all entities that are
12311             present in groups listed in theGList.
12312
12313             Parameters:
12314                 theGList is a list of GEOM groups to create the united group from.
12315                 theName Object name; when specified, this parameter is used
12316                         for result publication in the study. Otherwise, if automatic
12317                         publication is switched on, default value is used for result name.
12318
12319             Returns:
12320                 a newly created GEOM group.
12321             """
12322             # Example: see GEOM_TestOthers.py
12323             aGroup = self.GroupOp.UnionListOfGroups(theGList)
12324             RaiseIfFailed("UnionListOfGroups", self.GroupOp)
12325             self._autoPublish(aGroup, theName, "group")
12326             return aGroup
12327
12328         ## Cut of lists of groups.
12329         #  New group is created. It will contain only entities
12330         #  which are present in groups listed in theGList.
12331         #  @param theGList is a list of GEOM groups to include elements of.
12332         #  @param theName Object name; when specified, this parameter is used
12333         #         for result publication in the study. Otherwise, if automatic
12334         #         publication is switched on, default value is used for result name.
12335         #
12336         #  @return a newly created GEOM group.
12337         #
12338         #  @ref tui_intersect_groups_anchor "Example"
12339         @ManageTransactions("GroupOp")
12340         def IntersectListOfGroups (self, theGList, theName=None):
12341             """
12342             Cut of lists of groups.
12343             New group is created. It will contain only entities
12344             which are present in groups listed in theGList.
12345
12346             Parameters:
12347                 theGList is a list of GEOM groups to include elements of.
12348                 theName Object name; when specified, this parameter is used
12349                         for result publication in the study. Otherwise, if automatic
12350                         publication is switched on, default value is used for result name.
12351
12352             Returns:
12353                 a newly created GEOM group.
12354             """
12355             # Example: see GEOM_TestOthers.py
12356             aGroup = self.GroupOp.IntersectListOfGroups(theGList)
12357             RaiseIfFailed("IntersectListOfGroups", self.GroupOp)
12358             self._autoPublish(aGroup, theName, "group")
12359             return aGroup
12360
12361         ## Cut of lists of groups.
12362         #  New group is created. It will contain only entities
12363         #  which are present in groups listed in theGList1 but
12364         #  are not present in groups from theGList2.
12365         #  @param theGList1 is a list of GEOM groups to include elements of.
12366         #  @param theGList2 is a list of GEOM groups to exclude elements of.
12367         #  @param theName Object name; when specified, this parameter is used
12368         #         for result publication in the study. Otherwise, if automatic
12369         #         publication is switched on, default value is used for result name.
12370         #
12371         #  @return a newly created GEOM group.
12372         #
12373         #  @ref tui_cut_groups_anchor "Example"
12374         @ManageTransactions("GroupOp")
12375         def CutListOfGroups (self, theGList1, theGList2, theName=None):
12376             """
12377             Cut of lists of groups.
12378             New group is created. It will contain only entities
12379             which are present in groups listed in theGList1 but
12380             are not present in groups from theGList2.
12381
12382             Parameters:
12383                 theGList1 is a list of GEOM groups to include elements of.
12384                 theGList2 is a list of GEOM groups to exclude elements of.
12385                 theName Object name; when specified, this parameter is used
12386                         for result publication in the study. Otherwise, if automatic
12387                         publication is switched on, default value is used for result name.
12388
12389             Returns:
12390                 a newly created GEOM group.
12391             """
12392             # Example: see GEOM_TestOthers.py
12393             aGroup = self.GroupOp.CutListOfGroups(theGList1, theGList2)
12394             RaiseIfFailed("CutListOfGroups", self.GroupOp)
12395             self._autoPublish(aGroup, theName, "group")
12396             return aGroup
12397
12398         ## Returns a list of sub-objects ID stored in the group
12399         #  @param theGroup is a GEOM group for which a list of IDs is requested
12400         #
12401         #  @ref swig_GetObjectIDs "Example"
12402         @ManageTransactions("GroupOp")
12403         def GetObjectIDs(self,theGroup):
12404             """
12405             Returns a list of sub-objects ID stored in the group
12406
12407             Parameters:
12408                 theGroup is a GEOM group for which a list of IDs is requested
12409             """
12410             # Example: see GEOM_TestOthers.py
12411             ListIDs = self.GroupOp.GetObjects(theGroup)
12412             RaiseIfFailed("GetObjects", self.GroupOp)
12413             return ListIDs
12414
12415         ## Returns a type of sub-objects stored in the group
12416         #  @param theGroup is a GEOM group which type is returned.
12417         #
12418         #  @ref swig_GetType "Example"
12419         @ManageTransactions("GroupOp")
12420         def GetType(self,theGroup):
12421             """
12422             Returns a type of sub-objects stored in the group
12423
12424             Parameters:
12425                 theGroup is a GEOM group which type is returned.
12426             """
12427             # Example: see GEOM_TestOthers.py
12428             aType = self.GroupOp.GetType(theGroup)
12429             RaiseIfFailed("GetType", self.GroupOp)
12430             return aType
12431
12432         ## Convert a type of geom object from id to string value
12433         #  @param theId is a GEOM obect type id.
12434         #  @return type of geom object (POINT, VECTOR, PLANE, LINE, TORUS, ... )
12435         #  @ref swig_GetType "Example"
12436         def ShapeIdToType(self, theId):
12437             """
12438             Convert a type of geom object from id to string value
12439
12440             Parameters:
12441                 theId is a GEOM obect type id.
12442
12443             Returns:
12444                 type of geom object (POINT, VECTOR, PLANE, LINE, TORUS, ... )
12445             """
12446             if theId == 0:
12447                 return "COPY"
12448             if theId == 1:
12449                 return "IMPORT"
12450             if theId == 2:
12451                 return "POINT"
12452             if theId == 3:
12453                 return "VECTOR"
12454             if theId == 4:
12455                 return "PLANE"
12456             if theId == 5:
12457                 return "LINE"
12458             if theId == 6:
12459                 return "TORUS"
12460             if theId == 7:
12461                 return "BOX"
12462             if theId == 8:
12463                 return "CYLINDER"
12464             if theId == 9:
12465                 return "CONE"
12466             if theId == 10:
12467                 return "SPHERE"
12468             if theId == 11:
12469                 return "PRISM"
12470             if theId == 12:
12471                 return "REVOLUTION"
12472             if theId == 13:
12473                 return "BOOLEAN"
12474             if theId == 14:
12475                 return "PARTITION"
12476             if theId == 15:
12477                 return "POLYLINE"
12478             if theId == 16:
12479                 return "CIRCLE"
12480             if theId == 17:
12481                 return "SPLINE"
12482             if theId == 18:
12483                 return "ELLIPSE"
12484             if theId == 19:
12485                 return "CIRC_ARC"
12486             if theId == 20:
12487                 return "FILLET"
12488             if theId == 21:
12489                 return "CHAMFER"
12490             if theId == 22:
12491                 return "EDGE"
12492             if theId == 23:
12493                 return "WIRE"
12494             if theId == 24:
12495                 return "FACE"
12496             if theId == 25:
12497                 return "SHELL"
12498             if theId == 26:
12499                 return "SOLID"
12500             if theId == 27:
12501                 return "COMPOUND"
12502             if theId == 28:
12503                 return "SUBSHAPE"
12504             if theId == 29:
12505                 return "PIPE"
12506             if theId == 30:
12507                 return "ARCHIMEDE"
12508             if theId == 31:
12509                 return "FILLING"
12510             if theId == 32:
12511                 return "EXPLODE"
12512             if theId == 33:
12513                 return "GLUED"
12514             if theId == 34:
12515                 return "SKETCHER"
12516             if theId == 35:
12517                 return "CDG"
12518             if theId == 36:
12519                 return "FREE_BOUNDS"
12520             if theId == 37:
12521                 return "GROUP"
12522             if theId == 38:
12523                 return "BLOCK"
12524             if theId == 39:
12525                 return "MARKER"
12526             if theId == 40:
12527                 return "THRUSECTIONS"
12528             if theId == 41:
12529                 return "COMPOUNDFILTER"
12530             if theId == 42:
12531                 return "SHAPES_ON_SHAPE"
12532             if theId == 43:
12533                 return "ELLIPSE_ARC"
12534             if theId == 44:
12535                 return "3DSKETCHER"
12536             if theId == 45:
12537                 return "FILLET_2D"
12538             if theId == 46:
12539                 return "FILLET_1D"
12540             if theId == 201:
12541                 return "PIPETSHAPE"
12542             return "Shape Id not exist."
12543
12544         ## Returns a main shape associated with the group
12545         #  @param theGroup is a GEOM group for which a main shape object is requested
12546         #  @return a GEOM object which is a main shape for theGroup
12547         #
12548         #  @ref swig_GetMainShape "Example"
12549         @ManageTransactions("GroupOp")
12550         def GetMainShape(self,theGroup):
12551             """
12552             Returns a main shape associated with the group
12553
12554             Parameters:
12555                 theGroup is a GEOM group for which a main shape object is requested
12556
12557             Returns:
12558                 a GEOM object which is a main shape for theGroup
12559
12560             Example of usage: BoxCopy = geompy.GetMainShape(CreateGroup)
12561             """
12562             # Example: see GEOM_TestOthers.py
12563             anObj = self.GroupOp.GetMainShape(theGroup)
12564             RaiseIfFailed("GetMainShape", self.GroupOp)
12565             return anObj
12566
12567         ## Create group of edges of theShape, whose length is in range [min_length, max_length].
12568         #  If include_min/max == 0, edges with length == min/max_length will not be included in result.
12569         #  @param theShape given shape (see GEOM.GEOM_Object)
12570         #  @param min_length minimum length of edges of theShape
12571         #  @param max_length maximum length of edges of theShape
12572         #  @param include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
12573         #  @param include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
12574         #  @param theName Object name; when specified, this parameter is used
12575         #         for result publication in the study. Otherwise, if automatic
12576         #         publication is switched on, default value is used for result name.
12577         #
12578         #  @return a newly created GEOM group of edges
12579         #
12580         #  @@ref swig_todo "Example"
12581         def GetEdgesByLength (self, theShape, min_length, max_length, include_min = 1, include_max = 1, theName=None):
12582             """
12583             Create group of edges of theShape, whose length is in range [min_length, max_length].
12584             If include_min/max == 0, edges with length == min/max_length will not be included in result.
12585
12586             Parameters:
12587                 theShape given shape
12588                 min_length minimum length of edges of theShape
12589                 max_length maximum length of edges of theShape
12590                 include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
12591                 include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
12592                 theName Object name; when specified, this parameter is used
12593                         for result publication in the study. Otherwise, if automatic
12594                         publication is switched on, default value is used for result name.
12595
12596              Returns:
12597                 a newly created GEOM group of edges.
12598             """
12599             edges = self.SubShapeAll(theShape, self.ShapeType["EDGE"])
12600             edges_in_range = []
12601             for edge in edges:
12602                 Props = self.BasicProperties(edge)
12603                 if min_length <= Props[0] and Props[0] <= max_length:
12604                     if (not include_min) and (min_length == Props[0]):
12605                         skip = 1
12606                     else:
12607                         if (not include_max) and (Props[0] == max_length):
12608                             skip = 1
12609                         else:
12610                             edges_in_range.append(edge)
12611
12612             if len(edges_in_range) <= 0:
12613                 print "No edges found by given criteria"
12614                 return None
12615
12616             # note: auto-publishing is done in self.CreateGroup()
12617             group_edges = self.CreateGroup(theShape, self.ShapeType["EDGE"], theName)
12618             self.UnionList(group_edges, edges_in_range)
12619
12620             return group_edges
12621
12622         ## Create group of edges of selected shape, whose length is in range [min_length, max_length].
12623         #  If include_min/max == 0, edges with length == min/max_length will not be included in result.
12624         #  @param min_length minimum length of edges of selected shape
12625         #  @param max_length maximum length of edges of selected shape
12626         #  @param include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
12627         #  @param include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
12628         #  @return a newly created GEOM group of edges
12629         #  @ref swig_todo "Example"
12630         def SelectEdges (self, min_length, max_length, include_min = 1, include_max = 1):
12631             """
12632             Create group of edges of selected shape, whose length is in range [min_length, max_length].
12633             If include_min/max == 0, edges with length == min/max_length will not be included in result.
12634
12635             Parameters:
12636                 min_length minimum length of edges of selected shape
12637                 max_length maximum length of edges of selected shape
12638                 include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
12639                 include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
12640
12641              Returns:
12642                 a newly created GEOM group of edges.
12643             """
12644             nb_selected = sg.SelectedCount()
12645             if nb_selected < 1:
12646                 print "Select a shape before calling this function, please."
12647                 return 0
12648             if nb_selected > 1:
12649                 print "Only one shape must be selected"
12650                 return 0
12651
12652             id_shape = sg.getSelected(0)
12653             shape = IDToObject( id_shape )
12654
12655             group_edges = self.GetEdgesByLength(shape, min_length, max_length, include_min, include_max)
12656
12657             left_str  = " < "
12658             right_str = " < "
12659             if include_min: left_str  = " <= "
12660             if include_max: right_str  = " <= "
12661
12662             self.addToStudyInFather(shape, group_edges, "Group of edges with " + `min_length`
12663                                     + left_str + "length" + right_str + `max_length`)
12664
12665             sg.updateObjBrowser(1)
12666
12667             return group_edges
12668
12669         # end of l3_groups
12670         ## @}
12671
12672         #@@ insert new functions before this line @@ do not remove this line @@#
12673
12674         ## Create a copy of the given object
12675         #
12676         #  @param theOriginal geometry object for copy
12677         #  @param theName Object name; when specified, this parameter is used
12678         #         for result publication in the study. Otherwise, if automatic
12679         #         publication is switched on, default value is used for result name.
12680         #
12681         #  @return New GEOM_Object, containing the copied shape.
12682         #
12683         #  @ingroup l1_geomBuilder_auxiliary
12684         #  @ref swig_MakeCopy "Example"
12685         @ManageTransactions("InsertOp")
12686         def MakeCopy(self, theOriginal, theName=None):
12687             """
12688             Create a copy of the given object
12689
12690             Parameters:
12691                 theOriginal geometry object for copy
12692                 theName Object name; when specified, this parameter is used
12693                         for result publication in the study. Otherwise, if automatic
12694                         publication is switched on, default value is used for result name.
12695
12696             Returns:
12697                 New GEOM_Object, containing the copied shape.
12698
12699             Example of usage: Copy = geompy.MakeCopy(Box)
12700             """
12701             # Example: see GEOM_TestAll.py
12702             anObj = self.InsertOp.MakeCopy(theOriginal)
12703             RaiseIfFailed("MakeCopy", self.InsertOp)
12704             self._autoPublish(anObj, theName, "copy")
12705             return anObj
12706
12707         ## Add Path to load python scripts from
12708         #  @param Path a path to load python scripts from
12709         #  @ingroup l1_geomBuilder_auxiliary
12710         def addPath(self,Path):
12711             """
12712             Add Path to load python scripts from
12713
12714             Parameters:
12715                 Path a path to load python scripts from
12716             """
12717             if (sys.path.count(Path) < 1):
12718                 sys.path.append(Path)
12719                 pass
12720             pass
12721
12722         ## Load marker texture from the file
12723         #  @param Path a path to the texture file
12724         #  @return unique texture identifier
12725         #  @ingroup l1_geomBuilder_auxiliary
12726         @ManageTransactions("InsertOp")
12727         def LoadTexture(self, Path):
12728             """
12729             Load marker texture from the file
12730
12731             Parameters:
12732                 Path a path to the texture file
12733
12734             Returns:
12735                 unique texture identifier
12736             """
12737             # Example: see GEOM_TestAll.py
12738             ID = self.InsertOp.LoadTexture(Path)
12739             RaiseIfFailed("LoadTexture", self.InsertOp)
12740             return ID
12741
12742         ## Get internal name of the object based on its study entry
12743         #  @note This method does not provide an unique identifier of the geometry object.
12744         #  @note This is internal function of GEOM component, though it can be used outside it for
12745         #  appropriate reason (e.g. for identification of geometry object).
12746         #  @param obj geometry object
12747         #  @return unique object identifier
12748         #  @ingroup l1_geomBuilder_auxiliary
12749         def getObjectID(self, obj):
12750             """
12751             Get internal name of the object based on its study entry.
12752             Note: this method does not provide an unique identifier of the geometry object.
12753             It is an internal function of GEOM component, though it can be used outside GEOM for
12754             appropriate reason (e.g. for identification of geometry object).
12755
12756             Parameters:
12757                 obj geometry object
12758
12759             Returns:
12760                 unique object identifier
12761             """
12762             ID = ""
12763             entry = salome.ObjectToID(obj)
12764             if entry is not None:
12765                 lst = entry.split(":")
12766                 if len(lst) > 0:
12767                     ID = lst[-1] # -1 means last item in the list
12768                     return "GEOM_" + ID
12769             return ID
12770
12771
12772
12773         ## Add marker texture. @a Width and @a Height parameters
12774         #  specify width and height of the texture in pixels.
12775         #  If @a RowData is @c True, @a Texture parameter should represent texture data
12776         #  packed into the byte array. If @a RowData is @c False (default), @a Texture
12777         #  parameter should be unpacked string, in which '1' symbols represent opaque
12778         #  pixels and '0' represent transparent pixels of the texture bitmap.
12779         #
12780         #  @param Width texture width in pixels
12781         #  @param Height texture height in pixels
12782         #  @param Texture texture data
12783         #  @param RowData if @c True, @a Texture data are packed in the byte stream
12784         #  @return unique texture identifier
12785         #  @ingroup l1_geomBuilder_auxiliary
12786         @ManageTransactions("InsertOp")
12787         def AddTexture(self, Width, Height, Texture, RowData=False):
12788             """
12789             Add marker texture. Width and Height parameters
12790             specify width and height of the texture in pixels.
12791             If RowData is True, Texture parameter should represent texture data
12792             packed into the byte array. If RowData is False (default), Texture
12793             parameter should be unpacked string, in which '1' symbols represent opaque
12794             pixels and '0' represent transparent pixels of the texture bitmap.
12795
12796             Parameters:
12797                 Width texture width in pixels
12798                 Height texture height in pixels
12799                 Texture texture data
12800                 RowData if True, Texture data are packed in the byte stream
12801
12802             Returns:
12803                 return unique texture identifier
12804             """
12805             if not RowData: Texture = PackData(Texture)
12806             ID = self.InsertOp.AddTexture(Width, Height, Texture)
12807             RaiseIfFailed("AddTexture", self.InsertOp)
12808             return ID
12809
12810         ## Creates a new folder object. It is a container for any GEOM objects.
12811         #  @param Name name of the container
12812         #  @param Father parent object. If None,
12813         #         folder under 'Geometry' root object will be created.
12814         #  @return a new created folder
12815         #  @ingroup l1_publish_data
12816         def NewFolder(self, Name, Father=None):
12817             """
12818             Create a new folder object. It is an auxiliary container for any GEOM objects.
12819
12820             Parameters:
12821                 Name name of the container
12822                 Father parent object. If None,
12823                 folder under 'Geometry' root object will be created.
12824
12825             Returns:
12826                 a new created folder
12827             """
12828             if not Father: Father = self.father
12829             return self.CreateFolder(Name, Father)
12830
12831         ## Move object to the specified folder
12832         #  @param Object object to move
12833         #  @param Folder target folder
12834         #  @ingroup l1_publish_data
12835         def PutToFolder(self, Object, Folder):
12836             """
12837             Move object to the specified folder
12838
12839             Parameters:
12840                 Object object to move
12841                 Folder target folder
12842             """
12843             self.MoveToFolder(Object, Folder)
12844             pass
12845
12846         ## Move list of objects to the specified folder
12847         #  @param ListOfSO list of objects to move
12848         #  @param Folder target folder
12849         #  @ingroup l1_publish_data
12850         def PutListToFolder(self, ListOfSO, Folder):
12851             """
12852             Move list of objects to the specified folder
12853
12854             Parameters:
12855                 ListOfSO list of objects to move
12856                 Folder target folder
12857             """
12858             self.MoveListToFolder(ListOfSO, Folder)
12859             pass
12860
12861         ## @addtogroup l2_field
12862         ## @{
12863
12864         ## Creates a field
12865         #  @param shape the shape the field lies on
12866         #  @param name the field name
12867         #  @param type type of field data: 0 - bool, 1 - int, 2 - double, 3 - string
12868         #  @param dimension dimension of the shape the field lies on
12869         #         0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
12870         #  @param componentNames names of components
12871         #  @return a created field
12872         @ManageTransactions("FieldOp")
12873         def CreateField(self, shape, name, type, dimension, componentNames):
12874             """
12875             Creates a field
12876
12877             Parameters:
12878                 shape the shape the field lies on
12879                 name  the field name
12880                 type  type of field data
12881                 dimension dimension of the shape the field lies on
12882                           0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
12883                 componentNames names of components
12884
12885             Returns:
12886                 a created field
12887             """
12888             if isinstance( type, int ):
12889                 if type < 0 or type > 3:
12890                     raise RuntimeError, "CreateField : Error: data type must be within [0-3] range"
12891                 type = [GEOM.FDT_Bool,GEOM.FDT_Int,GEOM.FDT_Double,GEOM.FDT_String][type]
12892
12893             f = self.FieldOp.CreateField( shape, name, type, dimension, componentNames)
12894             RaiseIfFailed("CreateField", self.FieldOp)
12895             global geom
12896             geom._autoPublish( f, "", name)
12897             return f
12898
12899         ## Removes a field from the GEOM component
12900         #  @param field the field to remove
12901         def RemoveField(self, field):
12902             "Removes a field from the GEOM component"
12903             global geom
12904             if isinstance( field, GEOM._objref_GEOM_Field ):
12905                 geom.RemoveObject( field )
12906             elif isinstance( field, geomField ):
12907                 geom.RemoveObject( field.field )
12908             else:
12909                 raise RuntimeError, "RemoveField() : the object is not a field"
12910             return
12911
12912         ## Returns number of fields on a shape
12913         @ManageTransactions("FieldOp")
12914         def CountFields(self, shape):
12915             "Returns number of fields on a shape"
12916             nb = self.FieldOp.CountFields( shape )
12917             RaiseIfFailed("CountFields", self.FieldOp)
12918             return nb
12919
12920         ## Returns all fields on a shape
12921         @ManageTransactions("FieldOp")
12922         def GetFields(self, shape):
12923             "Returns all fields on a shape"
12924             ff = self.FieldOp.GetFields( shape )
12925             RaiseIfFailed("GetFields", self.FieldOp)
12926             return ff
12927
12928         ## Returns a field on a shape by its name
12929         @ManageTransactions("FieldOp")
12930         def GetField(self, shape, name):
12931             "Returns a field on a shape by its name"
12932             f = self.FieldOp.GetField( shape, name )
12933             RaiseIfFailed("GetField", self.FieldOp)
12934             return f
12935
12936         # end of l2_field
12937         ## @}
12938
12939
12940 import omniORB
12941 # Register the new proxy for GEOM_Gen
12942 omniORB.registerObjref(GEOM._objref_GEOM_Gen._NP_RepositoryId, geomBuilder)
12943
12944
12945 ## Field on Geometry
12946 #  @ingroup l2_field
12947 class geomField( GEOM._objref_GEOM_Field ):
12948
12949     def __init__(self):
12950         GEOM._objref_GEOM_Field.__init__(self)
12951         self.field = GEOM._objref_GEOM_Field
12952         return
12953
12954     ## Returns the shape the field lies on
12955     def getShape(self):
12956         "Returns the shape the field lies on"
12957         return self.field.GetShape(self)
12958
12959     ## Returns the field name
12960     def getName(self):
12961         "Returns the field name"
12962         return self.field.GetName(self)
12963
12964     ## Returns type of field data as integer [0-3]
12965     def getType(self):
12966         "Returns type of field data"
12967         return self.field.GetDataType(self)._v
12968
12969     ## Returns type of field data:
12970     #  one of GEOM.FDT_Bool, GEOM.FDT_Int, GEOM.FDT_Double, GEOM.FDT_String
12971     def getTypeEnum(self):
12972         "Returns type of field data"
12973         return self.field.GetDataType(self)
12974
12975     ## Returns dimension of the shape the field lies on:
12976     #  0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
12977     def getDimension(self):
12978         """Returns dimension of the shape the field lies on:
12979         0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape"""
12980         return self.field.GetDimension(self)
12981
12982     ## Returns names of components
12983     def getComponents(self):
12984         "Returns names of components"
12985         return self.field.GetComponents(self)
12986
12987     ## Adds a time step to the field
12988     #  @param step the time step number further used as the step identifier
12989     #  @param stamp the time step time
12990     #  @param values the values of the time step
12991     def addStep(self, step, stamp, values):
12992         "Adds a time step to the field"
12993         stp = self.field.AddStep( self, step, stamp )
12994         if not stp:
12995             raise RuntimeError, \
12996                   "Field.addStep() : Error: step %s already exists in this field"%step
12997         global geom
12998         geom._autoPublish( stp, "", "Step %s, %s"%(step,stamp))
12999         self.setValues( step, values )
13000         return stp
13001
13002     ## Remove a time step from the field
13003     def removeStep(self,step):
13004         "Remove a time step from the field"
13005         stepSO = None
13006         try:
13007             stepObj = self.field.GetStep( self, step )
13008             if stepObj:
13009                 stepSO = geom.myStudy.FindObjectID( stepObj.GetStudyEntry() )
13010         except:
13011             #import traceback
13012             #traceback.print_exc()
13013             pass
13014         self.field.RemoveStep( self, step )
13015         if stepSO:
13016             geom.myBuilder.RemoveObjectWithChildren( stepSO )
13017         return
13018
13019     ## Returns number of time steps in the field
13020     def countSteps(self):
13021         "Returns number of time steps in the field"
13022         return self.field.CountSteps(self)
13023
13024     ## Returns a list of time step IDs in the field
13025     def getSteps(self):
13026         "Returns a list of time step IDs in the field"
13027         return self.field.GetSteps(self)
13028
13029     ## Returns a time step by its ID
13030     def getStep(self,step):
13031         "Returns a time step by its ID"
13032         stp = self.field.GetStep(self, step)
13033         if not stp:
13034             raise RuntimeError, "Step %s is missing from this field"%step
13035         return stp
13036
13037     ## Returns the time of the field step
13038     def getStamp(self,step):
13039         "Returns the time of the field step"
13040         return self.getStep(step).GetStamp()
13041
13042     ## Changes the time of the field step
13043     def setStamp(self, step, stamp):
13044         "Changes the time of the field step"
13045         return self.getStep(step).SetStamp(stamp)
13046
13047     ## Returns values of the field step
13048     def getValues(self, step):
13049         "Returns values of the field step"
13050         return self.getStep(step).GetValues()
13051
13052     ## Changes values of the field step
13053     def setValues(self, step, values):
13054         "Changes values of the field step"
13055         stp = self.getStep(step)
13056         errBeg = "Field.setValues(values) : Error: "
13057         try:
13058             ok = stp.SetValues( values )
13059         except Exception, e:
13060             excStr = str(e)
13061             if excStr.find("WrongPythonType") > 0:
13062                 raise RuntimeError, errBeg +\
13063                       "wrong type of values, %s values are expected"%str(self.getTypeEnum())[4:]
13064             raise RuntimeError, errBeg + str(e)
13065         if not ok:
13066             nbOK = self.field.GetArraySize(self)
13067             nbKO = len(values)
13068             if nbOK != nbKO:
13069                 raise RuntimeError, errBeg + "len(values) must be %s but not %s"%(nbOK,nbKO)
13070             else:
13071                 raise RuntimeError, errBeg + "failed"
13072         return
13073
13074     pass # end of class geomField
13075
13076 # Register the new proxy for GEOM_Field
13077 omniORB.registerObjref(GEOM._objref_GEOM_Field._NP_RepositoryId, geomField)
13078
13079
13080 ## Create a new geomBuilder instance.The geomBuilder class provides the Python
13081 #  interface to GEOM operations.
13082 #
13083 #  Typical use is:
13084 #  \code
13085 #    import salome
13086 #    salome.salome_init()
13087 #    from salome.geom import geomBuilder
13088 #    geompy = geomBuilder.New(salome.myStudy)
13089 #  \endcode
13090 #  @param  study     SALOME study, generally obtained by salome.myStudy.
13091 #  @param  instance  CORBA proxy of GEOM Engine. If None, the default Engine is used.
13092 #  @return geomBuilder instance
13093 def New( study, instance=None):
13094     """
13095     Create a new geomBuilder instance.The geomBuilder class provides the Python
13096     interface to GEOM operations.
13097
13098     Typical use is:
13099         import salome
13100         salome.salome_init()
13101         from salome.geom import geomBuilder
13102         geompy = geomBuilder.New(salome.myStudy)
13103
13104     Parameters:
13105         study     SALOME study, generally obtained by salome.myStudy.
13106         instance  CORBA proxy of GEOM Engine. If None, the default Engine is used.
13107     Returns:
13108         geomBuilder instance
13109     """
13110     #print "New geomBuilder ", study, instance
13111     global engine
13112     global geom
13113     global doLcc
13114     engine = instance
13115     if engine is None:
13116       doLcc = True
13117     geom = geomBuilder()
13118     assert isinstance(geom,geomBuilder), "Geom engine class is %s but should be geomBuilder.geomBuilder. Import geomBuilder before creating the instance."%geom.__class__
13119     geom.init_geom(study)
13120     return geom
13121
13122
13123 # Register methods from the plug-ins in the geomBuilder class 
13124 plugins_var = os.environ.get( "GEOM_PluginsList" )
13125
13126 plugins = None
13127 if plugins_var is not None:
13128     plugins = plugins_var.split( ":" )
13129     plugins=filter(lambda x: len(x)>0, plugins)
13130 if plugins is not None:
13131     for pluginName in plugins:
13132         pluginBuilderName = pluginName + "Builder"
13133         try:
13134             exec( "from salome.%s.%s import *" % (pluginName, pluginBuilderName))
13135         except Exception, e:
13136             from salome_utils import verbose
13137             print "Exception while loading %s: %s" % ( pluginBuilderName, e )
13138             continue
13139         exec( "from salome.%s import %s" % (pluginName, pluginBuilderName))
13140         plugin = eval( pluginBuilderName )
13141         
13142         # add methods from plugin module to the geomBuilder class
13143         for k in dir( plugin ):
13144             if k[0] == '_': continue
13145             method = getattr( plugin, k )
13146             if type( method ).__name__ == 'function':
13147                 if not hasattr( geomBuilder, k ):
13148                     setattr( geomBuilder, k, method )
13149                 pass
13150             pass
13151         del pluginName
13152         pass
13153     pass