Salome HOME
[bos #40619][CEA] Add Fuzzy parameter to partition and boolean operators
[modules/geom.git] / src / GEOM_SWIG / geomBuilder.py
1 #  -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2024  CEA, EDF, 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()
56 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100) # box is not published in the study yet
57 ## geompy.addToStudy(box, "box")             # explicit publishing
58 ## @endcode
59 ##
60 ## Last two lines can be replaced by one-line instruction:
61 ##
62 ## @code
63 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100, theName="box") # box is published in the study with "box" name
64 ## @endcode
65 ##
66 ## ... or simply
67 ##
68 ## @code
69 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100, "box") # box is published in the study with "box" name
70 ## @endcode
71 ##
72 ## Note, that some functions produce more than one geometrical objects. For example,
73 ## \ref geomBuilder.geomBuilder.GetNonBlocks() "GetNonBlocks()" function returns two objects:
74 ## group of all non-hexa solids and group of all non-quad faces.
75 ## For such functions it is possible to specify separate names for results.
76 ##
77 ## For example
78 ##
79 ## @code
80 ## # create and publish cylinder
81 ## cyl = geompy.MakeCylinderRH(100, 100, "cylinder")
82 ## # get non blocks from cylinder
83 ## g1, g2 = geompy.GetNonBlocks(cyl, theName="nonblock")
84 ## @endcode
85 ##
86 ## Above example will publish both result compounds (first with non-hexa solids and
87 ## second with non-quad faces) as two items, both named "nonblock".
88 ## However, if second command is invoked as
89 ##
90 ## @code
91 ## g1, g2 = geompy.GetNonBlocks(cyl, theName=("nonhexa", "nonquad"))
92 ## @endcode
93 ##
94 ## ... the first compound will be published with "nonhexa" name, and second will be named "nonquad".
95 ##
96 ## Automatic publication of all results can be also enabled/disabled by means of the function
97 ## \ref geomBuilder.geomBuilder.addToStudyAuto() "addToStudyAuto()". The automatic publishing
98 ## is managed by the numeric parameter passed to this function:
99 ## - if @a maxNbSubShapes = 0, automatic publishing is disabled.
100 ## - if @a maxNbSubShapes = -1 (default), automatic publishing is enabled and
101 ##   maximum number of sub-shapes allowed for publishing is unlimited; any negative
102 ##   value passed as parameter has the same effect.
103 ## - if @a maxNbSubShapes is any positive value, automatic publishing is enabled and
104 ##   maximum number of sub-shapes allowed for publishing is set to specified value.
105 ##
106 ## When automatic publishing is enabled, you even do not need to pass @a theName parameter
107 ## to the functions creating objects, instead default names will be used. However, you
108 ## can always change the behavior, by passing explicit name to the @a theName parameter
109 ## and it will be used instead default one.
110 ## The publishing of the collections of objects will be done according to the above
111 ## mentioned rules (maximum allowed number of sub-shapes).
112 ##
113 ## For example:
114 ##
115 ## @code
116 ## import salome
117 ## from salome.geom import geomBuilder
118 ## geompy = geomBuilder.New()
119 ## geompy.addToStudyAuto() # enable automatic publication
120 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100)
121 ## # the box is created and published in the study with default name
122 ## geompy.addToStudyAuto(5) # set max allowed number of sub-shapes to 5
123 ## vertices = geompy.SubShapeAll(box, geomBuilder.ShapeType['VERTEX'])
124 ## # only 5 first vertices will be published, with default names
125 ## print len(vertices)
126 ## # note, that result value still contains all 8 vertices
127 ## geompy.addToStudyAuto(-1) # disable automatic publication
128 ## @endcode
129 ##
130 ## This feature can be used, for example, for debugging purposes.
131 ##
132 ## @note
133 ## - Use automatic publication feature with caution. When it is enabled, any function of
134 ##   \ref geomBuilder.geomBuilder "geomBuilder" class publishes the results in the study,
135 ##   that can lead to the huge size of the study data tree.
136 ##   For example, repeating call of \ref geomBuilder.geomBuilder.SubShapeAll() "SubShapeAll()"
137 ##   command on the same main shape each time will publish all child objects, that will lead
138 ##   to a lot of duplicated items in the study.
139 ## - Sub-shapes are automatically published as child items of the parent main shape in the study if main
140 ##   shape was also published before. Otherwise, sub-shapes are published as top-level objects.
141 ## - Some functions of \ref geomBuilder.geomBuilder "geomBuilder" class do not have
142 ##   \a theName parameter (and, thus, do not support automatic publication).
143 ##   For example, some transformation operations like
144 ##   \ref geomBuilder.geomBuilder.TranslateDXDYDZ() "TranslateDXDYDZ()".
145 ##   Refer to the documentation to check if some function has such possibility.
146 ##
147 ## It is possible to customize the representation of the geometrical
148 ## data in the data tree; this can be done by using folders. A folder can
149 ## be created in the study tree using function
150 ## \ref geomBuilder.geomBuilder.NewFolder() "NewFolder()"
151 ## (by default it is created under the "Geometry" root object).
152 ## As soon as folder is created, any published geometry object
153 ## can be moved into it.
154 ##
155 ## For example:
156 ##
157 ## @code
158 ## import salome
159 ## from salome.geom import geomBuilder
160 ## geompy = geomBuilder.New()
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 ##   @defgroup l2_testing       Testing
241
242 ## @}
243
244 import omniORB
245
246 # initialize SALOME session in try/except block
247 # to avoid problems in some cases, e.g. when generating documentation
248 try:
249     import salome
250     salome.salome_init()
251     from salome import *
252 except:
253     pass
254
255 from salome_notebook import *
256
257 import GEOM
258 import math
259 import os
260 import functools
261
262 from salome.geom.gsketcher import Sketcher3D, Sketcher2D, Polyline2D
263 from salome.geom.canonicalrecognition import CanonicalRecognition
264 from salome.geom.conformity import CheckConformity
265 from salome.geom.proximity import ShapeProximity
266
267 # In case the omniORBpy EnumItem class does not fully support Python 3
268 # (for instance in version 4.2.1-2), the comparison ordering methods must be
269 # defined
270 #
271 try:
272     GEOM.COMPOUND < GEOM.SOLID
273 except TypeError:
274     def enumitem_eq(self, other):
275         try:
276             if isinstance(other, omniORB.EnumItem):
277                 if other._parent_id == self._parent_id:
278                     return self._v == other._v
279                 else:
280                     return self._parent_id == other._parent_id
281             else:
282                 return id(self) == id(other)
283         except:
284             return id(self) == id(other)
285
286     def enumitem_lt(self, other):
287         try:
288             if isinstance(other, omniORB.EnumItem):
289                 if other._parent_id == self._parent_id:
290                     return self._v < other._v
291                 else:
292                     return self._parent_id < other._parent_id
293             else:
294                 return id(self) < id(other)
295         except:
296             return id(self) < id(other)
297
298     def enumitem_le(self, other):
299         try:
300             if isinstance(other, omniORB.EnumItem):
301                 if other._parent_id == self._parent_id:
302                     return self._v <= other._v
303                 else:
304                     return self._parent_id <= other._parent_id
305             else:
306                 return id(self) <= id(other)
307         except:
308             return id(self) <= id(other)
309
310     def enumitem_gt(self, other):
311         try:
312             if isinstance(other, omniORB.EnumItem):
313                 if other._parent_id == self._parent_id:
314                     return self._v > other._v
315                 else:
316                     return self._parent_id > other._parent_id
317             else:
318                 return id(self) > id(other)
319         except:
320             return id(self) > id(other)
321
322     def enumitem_ge(self, other):
323         try:
324             if isinstance(other, omniORB.EnumItem):
325                 if other._parent_id == self._parent_id:
326                     return self._v >= other._v
327                 else:
328                     return self._parent_id >= other._parent_id
329             else:
330                 return id(self) >= id(other)
331         except:
332             return id(self) >= id(other)
333
334     GEOM.omniORB.EnumItem.__eq__ = enumitem_eq
335     GEOM.omniORB.EnumItem.__lt__ = enumitem_lt
336     GEOM.omniORB.EnumItem.__le__ = enumitem_le
337     GEOM.omniORB.EnumItem.__gt__ = enumitem_gt
338     GEOM.omniORB.EnumItem.__ge__ = enumitem_ge
339     omniORB.EnumItem.__eq__ = enumitem_eq
340     omniORB.EnumItem.__lt__ = enumitem_lt
341     omniORB.EnumItem.__le__ = enumitem_le
342     omniORB.EnumItem.__gt__ = enumitem_gt
343     omniORB.EnumItem.__ge__ = enumitem_ge
344
345 # service function
346 def _toListOfNames(_names, _size=-1):
347     l = []
348     import types
349     if type(_names) in [list, tuple]:
350         for i in _names: l.append(i)
351     elif _names:
352         l.append(_names)
353     if l and len(l) < _size:
354         for i in range(len(l), _size): l.append("%s_%d"%(l[0],i))
355     return l
356
357 # Decorator function to manage transactions for all geometric operations.
358 def ManageTransactions(theOpeName):
359     def MTDecorator(theFunction):
360         # To keep the original function name an documentation.
361         @functools.wraps(theFunction)
362         def OpenCallClose(self, *args, **kwargs):
363             # Open transaction
364             anOperation = getattr(self, theOpeName)
365             anOperation.StartOperation()
366             try:
367                 # Call the function
368                 res = theFunction(self, *args, **kwargs)
369                 # Commit transaction
370                 anOperation.FinishOperation()
371                 return res
372             except:
373                 # Abort transaction
374                 anOperation.AbortOperation()
375                 raise
376         return OpenCallClose
377     return MTDecorator
378
379 ## Raise an Error, containing the Method_name, if Operation is Failed
380 ## @ingroup l1_geomBuilder_auxiliary
381 def RaiseIfFailed (Method_name, Operation):
382     if not Operation.IsDone() and Operation.GetErrorCode() != "NOT_FOUND_ANY":
383         raise RuntimeError(Method_name + " : " + Operation.GetErrorCode())
384
385 def PrintOrRaise(message, raiseException=False):
386     if raiseException:
387         raise RuntimeError(message)
388     else:
389         print(message)
390
391 ## Return list of variables value from salome notebook
392 ## @ingroup l1_geomBuilder_auxiliary
393 def ParseParameters(*parameters):
394     Result = []
395     StringResult = []
396     for parameter in parameters:
397         if isinstance(parameter, list):
398             lResults = ParseParameters(*parameter)
399             if len(lResults) > 0:
400                 Result.append(lResults[:-1])
401                 StringResult += lResults[-1].split(":")
402                 pass
403             pass
404         else:
405             if isinstance(parameter,str):
406                 if notebook.isVariable(parameter):
407                     Result.append(notebook.get(parameter))
408                 else:
409                     raise RuntimeError("Variable with name '" + parameter + "' doesn't exist!!!")
410                 pass
411             else:
412                 Result.append(parameter)
413                 pass
414             StringResult.append(str(parameter))
415             pass
416         pass
417     if Result:
418         Result.append(":".join(StringResult))
419     else:
420         Result = ":".join(StringResult)
421     return Result
422
423 ## Return list of variables value from salome notebook
424 ## @ingroup l1_geomBuilder_auxiliary
425 def ParseList(list):
426     Result = []
427     StringResult = ""
428     for parameter in list:
429         if isinstance(parameter,str) and notebook.isVariable(parameter):
430             Result.append(str(notebook.get(parameter)))
431             pass
432         else:
433             Result.append(str(parameter))
434             pass
435
436         StringResult = StringResult + str(parameter)
437         StringResult = StringResult + ":"
438         pass
439     StringResult = StringResult[:len(StringResult)-1]
440     return Result, StringResult
441
442 ## Return list of variables value from salome notebook
443 ## @ingroup l1_geomBuilder_auxiliary
444 def ParseSketcherCommand(command):
445     Result = ""
446     StringResult = ""
447     sections = command.split(":")
448     for section in sections:
449         parameters = section.split(" ")
450         paramIndex = 1
451         for parameter in parameters:
452             if paramIndex > 1 and parameter.find("'") != -1:
453                 parameter = parameter.replace("'","")
454                 if notebook.isVariable(parameter):
455                     Result = Result + str(notebook.get(parameter)) + " "
456                     pass
457                 else:
458                     raise RuntimeError("Variable with name '" + parameter + "' doesn't exist!!!")
459                     pass
460                 pass
461             else:
462                 Result = Result + str(parameter) + " "
463                 pass
464             if paramIndex > 1:
465                 StringResult = StringResult + parameter
466                 StringResult = StringResult + ":"
467                 pass
468             paramIndex = paramIndex + 1
469             pass
470         Result = Result[:len(Result)-1] + ":"
471         pass
472     Result = Result[:len(Result)-1]
473     return Result, StringResult
474
475 ## Helper function which can be used to pack the passed string to the byte data.
476 ## Only '1' an '0' symbols are valid for the string. The missing bits are replaced by zeroes.
477 ## If the string contains invalid symbol (neither '1' nor '0'), the function raises an exception.
478 ## For example,
479 ## \code
480 ## val = PackData("10001110") # val = 0xAE
481 ## val = PackData("1")        # val = 0x80
482 ## \endcode
483 ## @param data unpacked data - a string containing '1' and '0' symbols
484 ## @return data packed to the byte stream
485 ## @ingroup l1_geomBuilder_auxiliary
486 def PackData(data):
487     """
488     Helper function which can be used to pack the passed string to the byte data.
489     Only '1' an '0' symbols are valid for the string. The missing bits are replaced by zeroes.
490     If the string contains invalid symbol (neither '1' nor '0'), the function raises an exception.
491
492     Parameters:
493         data unpacked data - a string containing '1' and '0' symbols
494
495     Returns:
496         data packed to the byte stream
497
498     Example of usage:
499         val = PackData("10001110") # val = 0xAE
500         val = PackData("1")        # val = 0x80
501     """
502     bytes = len(data)/8
503     if len(data)%8: bytes += 1
504     res = ""
505     for b in range(bytes):
506         d = data[b*8:(b+1)*8]
507         val = 0
508         for i in range(8):
509             val *= 2
510             if i < len(d):
511                 if d[i] == "1": val += 1
512                 elif d[i] != "0":
513                     raise "Invalid symbol %s" % d[i]
514                 pass
515             pass
516         res += chr(val)
517         pass
518     return res
519
520 ## Read bitmap texture from the text file.
521 ## In that file, any non-zero symbol represents '1' opaque pixel of the bitmap.
522 ## A zero symbol ('0') represents transparent pixel of the texture bitmap.
523 ## The function returns width and height of the pixmap in pixels and byte stream representing
524 ## texture bitmap itself.
525 ##
526 ## This function can be used to read the texture to the byte stream in order to pass it to
527 ## the AddTexture() function of geomBuilder class.
528 ## For example,
529 ## \code
530 ## from salome.geom import geomBuilder
531 ## geompy = geomBuilder.New()
532 ## texture = geompy.readtexture('mytexture.dat')
533 ## texture = geompy.AddTexture(*texture)
534 ## obj.SetMarkerTexture(texture)
535 ## \endcode
536 ## @param fname texture file name
537 ## @return sequence of tree values: texture's width, height in pixels and its byte stream
538 ## @ingroup l1_geomBuilder_auxiliary
539 def ReadTexture(fname):
540     """
541     Read bitmap texture from the text file.
542     In that file, any non-zero symbol represents '1' opaque pixel of the bitmap.
543     A zero symbol ('0') represents transparent pixel of the texture bitmap.
544     The function returns width and height of the pixmap in pixels and byte stream representing
545     texture bitmap itself.
546     This function can be used to read the texture to the byte stream in order to pass it to
547     the AddTexture() function of geomBuilder class.
548
549     Parameters:
550         fname texture file name
551
552     Returns:
553         sequence of tree values: texture's width, height in pixels and its byte stream
554
555     Example of usage:
556         from salome.geom import geomBuilder
557         geompy = geomBuilder.New()
558         texture = geompy.readtexture('mytexture.dat')
559         texture = geompy.AddTexture(*texture)
560         obj.SetMarkerTexture(texture)
561     """
562     try:
563         f = open(fname)
564         lines = [ l.strip() for l in f.readlines()]
565         f.close()
566         maxlen = 0
567         if lines: maxlen = max([len(x) for x in lines])
568         lenbytes = maxlen/8
569         if maxlen%8: lenbytes += 1
570         bytedata=""
571         for line in lines:
572             if len(line)%8:
573                 lenline = (len(line)/8+1)*8
574                 pass
575             else:
576                 lenline = (len(line)/8)*8
577                 pass
578             for i in range(lenline/8):
579                 byte=""
580                 for j in range(8):
581                     if i*8+j < len(line) and line[i*8+j] != "0": byte += "1"
582                     else: byte += "0"
583                     pass
584                 bytedata += PackData(byte)
585                 pass
586             for i in range(lenline/8, lenbytes):
587                 bytedata += PackData("0")
588             pass
589         return lenbytes*8, len(lines), bytedata
590     except:
591         pass
592     return 0, 0, ""
593
594 ## Returns a long value from enumeration type
595 #  Can be used for CORBA enumerator types like GEOM.shape_type
596 #  @param theItem enumeration type
597 #  @ingroup l1_geomBuilder_auxiliary
598 def EnumToLong(theItem):
599     """
600     Returns a long value from enumeration type
601     Can be used for CORBA enumerator types like geomBuilder.ShapeType
602
603     Parameters:
604         theItem enumeration type
605     """
606     ret = theItem
607     if hasattr(theItem, "_v"): ret = theItem._v
608     return ret
609
610 ## Pack an argument into a list
611 def ToList( arg ):
612     if isinstance( arg, list ):
613         return arg
614     if hasattr( arg, "__getitem__" ):
615         return list( arg )
616     return [ arg ]
617
618 ## Information about closed/unclosed state of shell or wire
619 #  @ingroup l1_geomBuilder_auxiliary
620 class info:
621     """
622     Information about closed/unclosed state of shell or wire
623     """
624     UNKNOWN  = 0
625     CLOSED   = 1
626     UNCLOSED = 2
627
628 ## Private class used to bind calls of plugin operations to geomBuilder
629 class PluginOperation:
630   def __init__(self, operation, function):
631     self.operation = operation
632     self.function = function
633     pass
634
635   @ManageTransactions("operation")
636   def __call__(self, *args):
637     res = self.function(self.operation, *args)
638     RaiseIfFailed(self.function.__name__, self.operation)
639     return res
640
641 # Warning: geom is a singleton
642 geom = None
643 engine = None
644 doLcc = False
645 created = False
646
647 class geomBuilder(GEOM._objref_GEOM_Gen):
648
649         ## Enumeration ShapeType as a dictionary. \n
650         ## Topological types of shapes (like Open Cascade types). See GEOM::shape_type for details.
651         #  @ingroup l1_geomBuilder_auxiliary
652         ShapeType = {"AUTO":-1, "COMPOUND":0, "COMPSOLID":1, "SOLID":2, "SHELL":3, "FACE":4, "WIRE":5, "EDGE":6, "VERTEX":7, "SHAPE":8, "FLAT":9}
653
654         ## Kinds of shape in terms of <VAR>GEOM.GEOM_IKindOfShape.shape_kind</VAR> enumeration
655         #  and a list of parameters, describing the shape.
656         #  List of parameters, describing the shape:
657         #  - COMPOUND:            [nb_solids  nb_faces  nb_edges  nb_vertices]
658         #  - COMPSOLID:           [nb_solids  nb_faces  nb_edges  nb_vertices]
659         #
660         #  - SHELL:       [info.CLOSED / info.UNCLOSED  nb_faces  nb_edges  nb_vertices]
661         #
662         #  - WIRE:        [info.CLOSED / info.UNCLOSED nb_edges  nb_vertices]
663         #
664         #  - SPHERE:       [xc yc zc            R]
665         #  - CYLINDER:     [xb yb zb  dx dy dz  R         H]
666         #  - BOX:          [xc yc zc                      ax ay az]
667         #  - ROTATED_BOX:  [xc yc zc  zx zy zz  xx xy xz  ax ay az]
668         #  - TORUS:        [xc yc zc  dx dy dz  R_1  R_2]
669         #  - CONE:         [xb yb zb  dx dy dz  R_1  R_2  H]
670         #  - POLYHEDRON:                       [nb_faces  nb_edges  nb_vertices]
671         #  - SOLID:                            [nb_faces  nb_edges  nb_vertices]
672         #
673         #  - SPHERE2D:     [xc yc zc            R]
674         #  - CYLINDER2D:   [xb yb zb  dx dy dz  R         H]
675         #  - TORUS2D:      [xc yc zc  dx dy dz  R_1  R_2]
676         #  - CONE2D:       [xc yc zc  dx dy dz  R_1  R_2  H]
677         #  - DISK_CIRCLE:  [xc yc zc  dx dy dz  R]
678         #  - DISK_ELLIPSE: [xc yc zc  dx dy dz  R_1  R_2]
679         #  - POLYGON:      [xo yo zo  dx dy dz            nb_edges  nb_vertices]
680         #  - PLANE:        [xo yo zo  dx dy dz]
681         #  - PLANAR:       [xo yo zo  dx dy dz            nb_edges  nb_vertices]
682         #  - FACE:                                       [nb_edges  nb_vertices]
683         #
684         #  - CIRCLE:       [xc yc zc  dx dy dz  R]
685         #  - ARC_CIRCLE:   [xc yc zc  dx dy dz  R         x1 y1 z1  x2 y2 z2]
686         #  - ELLIPSE:      [xc yc zc  dx dy dz  R_1  R_2  v1x v1y v1z  v2x v2y v2z]
687         #  - ARC_ELLIPSE:  [xc yc zc  dx dy dz  R_1  R_2  x1 y1 z1  x2 y2 z2  v1x v1y v1z  v2x v2y v2z]
688         #  - LINE:         [xo yo zo  dx dy dz]
689         #  - SEGMENT:      [x1 y1 z1  x2 y2 z2]
690         #  - CRV_BSPLINE:  [periodicity degree nb_poles nb_knots nb_weights nb_multiplicities  xi yi zi  ki  wi  mi]
691         #  - CRV_BEZIER:   [nb_poles nb_weights  xi yi zi  wi]
692         #  - HYPERBOLA:    [xc yc zc  dx dy dz  R_1  R_2  v1x v1y v1z  v2x v2y v2z]
693         #  - PARABOLA:     [xc yc zc  dx dy dz  F  v1x v1y v1z  v2x v2y v2z]
694         #  - EDGE:                                                 [nb_vertices]
695         #
696         #  - VERTEX:       [x  y  z]
697         #
698         #  - LCS:          [x y z  xx xy xz  yx yy yz  zx zy zz]
699         #  @ingroup l1_geomBuilder_auxiliary
700         kind = GEOM.GEOM_IKindOfShape
701
702         def __new__(cls, *args):
703             global engine
704             global geom
705             global doLcc
706             global created
707             #print "==== __new__ ", engine, geom, doLcc, created
708             if geom is None:
709                 # geom engine is either retrieved from engine, or created
710                 geom = engine
711                 # Following test avoids a recursive loop
712                 if doLcc:
713                     if geom is not None:
714                         # geom engine not created: existing engine found
715                         doLcc = False
716                     if doLcc and not created:
717                         doLcc = False
718                         # FindOrLoadComponent called:
719                         # 1. CORBA resolution of server
720                         # 2. the __new__ method is called again
721                         #print "==== FindOrLoadComponent ", engine, geom, doLcc, created
722                         geom = lcc.FindOrLoadComponent( "FactoryServer", "GEOM" )
723                         #print "====1 ",geom
724                 else:
725                     # FindOrLoadComponent not called
726                     if geom is None:
727                         # geomBuilder instance is created from lcc.FindOrLoadComponent
728                         #print "==== super ", engine, geom, doLcc, created
729                         geom = super(geomBuilder,cls).__new__(cls)
730                         #print "====2 ",geom
731                     else:
732                         # geom engine not created: existing engine found
733                         #print "==== existing ", engine, geom, doLcc, created
734                         pass
735                 #print "return geom 1 ", geom
736                 return geom
737
738             #print "return geom 2 ", geom
739             return geom
740
741         def __init__(self, *args):
742             global created
743             #print "-------- geomBuilder __init__ --- ", created, self
744             if not created:
745               created = True
746               GEOM._objref_GEOM_Gen.__init__(self, *args)
747               self.myMaxNbSubShapesAllowed = 0 # auto-publishing is disabled by default
748               self.myBuilder = None
749               self.BasicOp  = None
750               self.CurvesOp = None
751               self.PrimOp   = None
752               self.ShapesOp = None
753               self.HealOp   = None
754               self.InsertOp = None
755               self.BoolOp   = None
756               self.TrsfOp   = None
757               self.LocalOp  = None
758               self.MeasuOp  = None
759               self.BlocksOp = None
760               self.GroupOp  = None
761               self.FieldOp  = None
762               self.TestOp   = None
763             pass
764
765         ## Process object publication in the study, as follows:
766         #  - if @a theName is specified (not None), the object is published in the study
767         #    with this name, not taking into account "auto-publishing" option;
768         #  - if @a theName is NOT specified, the object is published in the study
769         #    (using default name, which can be customized using @a theDefaultName parameter)
770         #    only if auto-publishing is switched on.
771         #
772         #  @param theObj  object, a subject for publishing
773         #  @param theName object name for study
774         #  @param theDefaultName default name for the auto-publishing
775         #
776         #  @sa addToStudyAuto()
777         def _autoPublish(self, theObj, theName, theDefaultName="noname"):
778             # ---
779             def _item_name(_names, _defname, _idx=-1):
780                 if not _names: _names = _defname
781                 if type(_names) in [list, tuple]:
782                     if _idx >= 0:
783                         if _idx >= len(_names) or not _names[_idx]:
784                             if type(_defname) not in [list, tuple]:
785                                 _name = "%s_%d"%(_defname, _idx+1)
786                             elif len(_defname) > 0 and _idx >= 0 and _idx < len(_defname):
787                                 _name = _defname[_idx]
788                             else:
789                                 _name = "%noname_%d"%(dn, _idx+1)
790                             pass
791                         else:
792                             _name = _names[_idx]
793                         pass
794                     else:
795                         # must be wrong  usage
796                         _name = _names[0]
797                     pass
798                 else:
799                     if _idx >= 0:
800                         _name = "%s_%d"%(_names, _idx+1)
801                     else:
802                         _name = _names
803                     pass
804                 return _name
805             # ---
806             def _publish( _name, _obj ):
807                 fatherObj = None
808                 if isinstance( _obj, GEOM._objref_GEOM_Field ):
809                     fatherObj = _obj.GetShape()
810                 elif isinstance( _obj, GEOM._objref_GEOM_FieldStep ):
811                     fatherObj = _obj.GetField()
812                 elif not _obj.IsMainShape():
813                     fatherObj = _obj.GetMainShape()
814                     pass
815                 if fatherObj and fatherObj.GetStudyEntry():
816                     self.addToStudyInFather(fatherObj, _obj, _name)
817                 else:
818                     self.addToStudy(_obj, _name)
819                     pass
820                 return
821             # ---
822             if not theObj:
823                 return # null object
824             if not theName and not self.myMaxNbSubShapesAllowed:
825                 return # nothing to do: auto-publishing is disabled
826             if not theName and not theDefaultName:
827                 return # neither theName nor theDefaultName is given
828             import types
829             if type(theObj) in [list, tuple]:
830                 # list of objects is being published
831                 idx = 0
832                 for obj in theObj:
833                     if not obj: continue # bad object
834                     name = _item_name(theName, theDefaultName, idx)
835                     _publish( name, obj )
836                     idx = idx+1
837                     if not theName and idx == self.myMaxNbSubShapesAllowed: break
838                     pass
839                 pass
840             else:
841                 # single object is published
842                 name = _item_name(theName, theDefaultName)
843                 _publish( name, theObj )
844             pass
845
846         ## @addtogroup l1_geomBuilder_auxiliary
847         ## @{
848         def init_geom(self):
849             self.myStudy = salome.myStudy
850             self.myBuilder = self.myStudy.NewBuilder()
851
852             # load data from the study file, if necessary
853             component = self.myStudy.FindComponent("GEOM")
854             if component:
855                 self.myBuilder.LoadWith(component, self)
856
857             self.BasicOp  = self.GetIBasicOperations    ()
858             self.CurvesOp = self.GetICurvesOperations   ()
859             self.PrimOp   = self.GetI3DPrimOperations   ()
860             self.ShapesOp = self.GetIShapesOperations   ()
861             self.HealOp   = self.GetIHealingOperations  ()
862             self.InsertOp = self.GetIInsertOperations   ()
863             self.BoolOp   = self.GetIBooleanOperations  ()
864             self.TrsfOp   = self.GetITransformOperations()
865             self.LocalOp  = self.GetILocalOperations    ()
866             self.MeasuOp  = self.GetIMeasureOperations  ()
867             self.BlocksOp = self.GetIBlocksOperations   ()
868             self.GroupOp  = self.GetIGroupOperations    ()
869             self.FieldOp  = self.GetIFieldOperations    ()
870             self.TestOp   = self.GetITestOperations     ()
871
872             notebook.myStudy = self.myStudy
873             pass
874
875         def GetPluginOperations(self, libraryName):
876             op = GEOM._objref_GEOM_Gen.GetPluginOperations(self, libraryName)
877             return op
878
879         ## Enable / disable results auto-publishing
880         #
881         #  The automatic publishing is managed in the following way:
882         #  - if @a maxNbSubShapes = 0, automatic publishing is disabled.
883         #  - if @a maxNbSubShapes = -1 (default), automatic publishing is enabled and
884         #  maximum number of sub-shapes allowed for publishing is unlimited; any negative
885         #  value passed as parameter has the same effect.
886         #  - if @a maxNbSubShapes is any positive value, automatic publishing is enabled and
887         #  maximum number of sub-shapes allowed for publishing is set to specified value.
888         #
889         #  @param maxNbSubShapes maximum number of sub-shapes allowed for publishing.
890         #  @ingroup l1_publish_data
891         def addToStudyAuto(self, maxNbSubShapes=-1):
892             """
893             Enable / disable results auto-publishing
894
895             The automatic publishing is managed in the following way:
896             - if @a maxNbSubShapes = 0, automatic publishing is disabled;
897             - if @a maxNbSubShapes = -1 (default), automatic publishing is enabled and
898             maximum number of sub-shapes allowed for publishing is unlimited; any negative
899             value passed as parameter has the same effect.
900             - if @a maxNbSubShapes is any positive value, automatic publishing is enabled and
901             maximum number of sub-shapes allowed for publishing is set to this value.
902
903             Parameters:
904                 maxNbSubShapes maximum number of sub-shapes allowed for publishing.
905
906             Example of usage:
907                 geompy.addToStudyAuto()   # enable auto-publishing
908                 geompy.MakeBoxDXDYDZ(100) # box is created and published with default name
909                 geompy.addToStudyAuto(0)  # disable auto-publishing
910             """
911             self.myMaxNbSubShapesAllowed = max(-1, maxNbSubShapes)
912             pass
913
914         ## Dump component to the Python script
915         #  This method overrides IDL function to allow default values for the parameters.
916         def DumpPython(self, theIsPublished=True, theIsMultiFile=True):
917             """
918             Dump component to the Python script
919             This method overrides IDL function to allow default values for the parameters.
920             """
921             return GEOM._objref_GEOM_Gen.DumpPython(self, theIsPublished, theIsMultiFile)
922
923         ## Get name for sub-shape aSubObj of shape aMainObj
924         #
925         # @ref swig_SubShapeName "Example"
926         @ManageTransactions("ShapesOp")
927         def SubShapeName(self,aSubObj, aMainObj):
928             """
929             Get name for sub-shape aSubObj of shape aMainObj
930             """
931             # Example: see GEOM_TestAll.py
932
933             #aSubId  = orb.object_to_string(aSubObj)
934             #aMainId = orb.object_to_string(aMainObj)
935             #index = gg.getIndexTopology(aSubId, aMainId)
936             #name = gg.getShapeTypeString(aSubId) + "_%d"%(index)
937             index = self.ShapesOp.GetTopologyIndex(aMainObj, aSubObj)
938             name = self.ShapesOp.GetShapeTypeString(aSubObj) + "_%d"%(index)
939             return name
940
941         ## Publish in study aShape with name aName
942         #
943         #  \param aShape the shape to be published
944         #  \param aName  the name for the shape
945         #  \param doRestoreSubShapes if True, finds and publishes also
946         #         sub-shapes of <VAR>aShape</VAR>, corresponding to its arguments
947         #         and published sub-shapes of arguments
948         #  \param theArgs,theFindMethod,theInheritFirstArg see RestoreSubShapes() for
949         #                                                  these arguments description
950         #  \return study entry of the published shape in form of string
951         #
952         #  @ingroup l1_publish_data
953         #  @ref swig_all_addtostudy "Example"
954         def addToStudy(self, aShape, aName, doRestoreSubShapes=False,
955                        theArgs=[], theFindMethod=GEOM.FSM_GetInPlace, theInheritFirstArg=False):
956             """
957             Publish in study aShape with name aName
958
959             Parameters:
960                 aShape the shape to be published
961                 aName  the name for the shape
962                 doRestoreSubShapes if True, finds and publishes also
963                                    sub-shapes of aShape, corresponding to its arguments
964                                    and published sub-shapes of arguments
965                 theArgs,theFindMethod,theInheritFirstArg see geompy.RestoreSubShapes() for
966                                                          these arguments description
967
968             Returns:
969                 study entry of the published shape in form of string
970
971             Example of usage:
972                 id_block1 = geompy.addToStudy(Block1, "Block 1")
973             """
974             # Example: see GEOM_TestAll.py
975             try:
976                 aSObject = self.AddInStudy(aShape, aName, None)
977                 if aSObject and aName: aSObject.SetAttrString("AttributeName", aName)
978                 if doRestoreSubShapes:
979                     self.RestoreSubShapesSO(aSObject, theArgs,
980                                             theFindMethod, theInheritFirstArg, True )
981             except:
982                 print("addToStudy() failed")
983                 return ""
984             return aShape.GetStudyEntry()
985
986         ## Publish in study aShape with name aName as sub-object of previously published aFather
987         #  \param aFather previously published object
988         #  \param aShape the shape to be published as sub-object of <VAR>aFather</VAR>
989         #  \param aName  the name for the shape
990         #
991         #  \return study entry of the published shape in form of string
992         #
993         #  @ingroup l1_publish_data
994         #  @ref swig_all_addtostudyInFather "Example"
995         def addToStudyInFather(self, aFather, aShape, aName):
996             """
997             Publish in study aShape with name aName as sub-object of previously published aFather
998
999             Parameters:
1000                 aFather previously published object
1001                 aShape the shape to be published as sub-object of aFather
1002                 aName  the name for the shape
1003
1004             Returns:
1005                 study entry of the published shape in form of string
1006             """
1007             # Example: see GEOM_TestAll.py
1008             try:
1009                 aSObject = self.AddInStudy(aShape, aName, aFather)
1010                 if aSObject and aName: aSObject.SetAttrString("AttributeName", aName)
1011             except:
1012                 print("addToStudyInFather() failed")
1013                 return ""
1014             return aShape.GetStudyEntry()
1015
1016         ## Unpublish object in study
1017         #
1018         #  \param obj the object to be unpublished
1019         def hideInStudy(self, obj):
1020             """
1021             Unpublish object in study
1022
1023             Parameters:
1024                 obj the object to be unpublished
1025             """
1026             ior = salome.orb.object_to_string(obj)
1027             aSObject = self.myStudy.FindObjectIOR(ior)
1028             if aSObject is not None:
1029                 genericAttribute = self.myBuilder.FindOrCreateAttribute(aSObject, "AttributeDrawable")
1030                 drwAttribute = genericAttribute._narrow(SALOMEDS.AttributeDrawable)
1031                 drwAttribute.SetDrawable(False)
1032                 # hide references if any
1033                 vso = self.myStudy.FindDependances(aSObject);
1034                 for refObj in vso :
1035                     genericAttribute = self.myBuilder.FindOrCreateAttribute(refObj, "AttributeDrawable")
1036                     drwAttribute = genericAttribute._narrow(SALOMEDS.AttributeDrawable)
1037                     drwAttribute.SetDrawable(False)
1038                     pass
1039                 pass
1040
1041         # end of l1_geomBuilder_auxiliary
1042         ## @}
1043
1044         ## @addtogroup l3_restore_ss
1045         ## @{
1046
1047         ## Publish sub-shapes, standing for arguments and sub-shapes of arguments
1048         #  To be used from python scripts out of addToStudy() (non-default usage)
1049         #  \param theObject published GEOM.GEOM_Object, arguments of which will be published
1050         #  \param theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
1051         #                   If this list is empty, all operation arguments will be published
1052         #  \param theFindMethod method to search sub-shapes, corresponding to arguments and
1053         #                       their sub-shapes. Value from enumeration GEOM.find_shape_method.
1054         #  \param theInheritFirstArg set properties of the first argument for <VAR>theObject</VAR>.
1055         #                            Do not publish sub-shapes in place of arguments, but only
1056         #                            in place of sub-shapes of the first argument,
1057         #                            because the whole shape corresponds to the first argument.
1058         #                            Mainly to be used after transformations, but it also can be
1059         #                            useful after partition with one object shape, and some other
1060         #                            operations, where only the first argument has to be considered.
1061         #                            If theObject has only one argument shape, this flag is automatically
1062         #                            considered as True, not regarding really passed value.
1063         #  \param theAddPrefix add prefix "from_" to names of restored sub-shapes,
1064         #                      and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1065         #  \return list of published sub-shapes
1066         #
1067         #  @ref tui_restore_prs_params "Example"
1068         def RestoreSubShapes (self, theObject, theArgs=[], theFindMethod=GEOM.FSM_GetInPlace,
1069                               theInheritFirstArg=False, theAddPrefix=True):
1070             """
1071             Publish sub-shapes, standing for arguments and sub-shapes of arguments
1072             To be used from python scripts out of geompy.addToStudy (non-default usage)
1073
1074             Parameters:
1075                 theObject published GEOM.GEOM_Object, arguments of which will be published
1076                 theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
1077                           If this list is empty, all operation arguments will be published
1078                 theFindMethod method to search sub-shapes, corresponding to arguments and
1079                               their sub-shapes. Value from enumeration GEOM.find_shape_method.
1080                 theInheritFirstArg set properties of the first argument for theObject.
1081                                    Do not publish sub-shapes in place of arguments, but only
1082                                    in place of sub-shapes of the first argument,
1083                                    because the whole shape corresponds to the first argument.
1084                                    Mainly to be used after transformations, but it also can be
1085                                    useful after partition with one object shape, and some other
1086                                    operations, where only the first argument has to be considered.
1087                                    If theObject has only one argument shape, this flag is automatically
1088                                    considered as True, not regarding really passed value.
1089                 theAddPrefix add prefix "from_" to names of restored sub-shapes,
1090                              and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1091             Returns:
1092                 list of published sub-shapes
1093             """
1094             # Example: see GEOM_TestAll.py
1095             return self.RestoreSubShapesO(theObject, theArgs,
1096                                           theFindMethod, theInheritFirstArg, theAddPrefix)
1097
1098         ## Publish sub-shapes, standing for arguments and sub-shapes of arguments
1099         #  To be used from python scripts out of addToStudy() (non-default usage)
1100         #  \param theObject published GEOM.GEOM_Object, arguments of which will be published
1101         #  \param theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
1102         #                   If this list is empty, all operation arguments will be published
1103         #  \param theFindMethod method to search sub-shapes, corresponding to arguments and
1104         #                       their sub-shapes. Value from enumeration GEOM::find_shape_method.
1105         #  \param theInheritFirstArg set properties of the first argument for <VAR>theObject</VAR>.
1106         #                            Do not publish sub-shapes in place of arguments, but only
1107         #                            in place of sub-shapes of the first argument,
1108         #                            because the whole shape corresponds to the first argument.
1109         #                            Mainly to be used after transformations, but it also can be
1110         #                            useful after partition with one object shape, and some other
1111         #                            operations, where only the first argument has to be considered.
1112         #                            If theObject has only one argument shape, this flag is automatically
1113         #                            considered as True, not regarding really passed value.
1114         #  \param theAddPrefix add prefix "from_" to names of restored sub-shapes,
1115         #                      and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1116         #  \return list of published sub-shapes
1117         #
1118         #  @ref tui_restore_prs_params "Example"
1119         def RestoreGivenSubShapes (self, theObject, theArgs=[], theFindMethod=GEOM.FSM_GetInPlace,
1120                                    theInheritFirstArg=False, theAddPrefix=True):
1121             """
1122             Publish sub-shapes, standing for arguments and sub-shapes of arguments
1123             To be used from python scripts out of geompy.addToStudy() (non-default usage)
1124
1125             Parameters:
1126                 theObject published GEOM.GEOM_Object, arguments of which will be published
1127                 theArgs   list of GEOM.GEOM_Object, operation arguments to be published.
1128                           If this list is empty, all operation arguments will be published
1129                 theFindMethod method to search sub-shapes, corresponding to arguments and
1130                               their sub-shapes. Value from enumeration GEOM::find_shape_method.
1131                 theInheritFirstArg set properties of the first argument for theObject.
1132                                    Do not publish sub-shapes in place of arguments, but only
1133                                    in place of sub-shapes of the first argument,
1134                                    because the whole shape corresponds to the first argument.
1135                                    Mainly to be used after transformations, but it also can be
1136                                    useful after partition with one object shape, and some other
1137                                    operations, where only the first argument has to be considered.
1138                                    If theObject has only one argument shape, this flag is automatically
1139                                    considered as True, not regarding really passed value.
1140                 theAddPrefix add prefix "from_" to names of restored sub-shapes,
1141                              and prefix "from_subshapes_of_" to names of partially restored sub-shapes.
1142
1143             Returns:
1144                 list of published sub-shapes
1145             """
1146             # Example: see GEOM_TestAll.py
1147             return self.RestoreGivenSubShapesO(theObject, theArgs,
1148                                                theFindMethod, theInheritFirstArg, theAddPrefix)
1149
1150         # end of l3_restore_ss
1151         ## @}
1152
1153         ## @addtogroup l3_basic_go
1154         ## @{
1155
1156         ## Create point by three coordinates.
1157         #  @param theX The X coordinate of the point.
1158         #  @param theY The Y coordinate of the point.
1159         #  @param theZ The Z coordinate of the point.
1160         #  @param theName Object name; when specified, this parameter is used
1161         #         for result publication in the study. Otherwise, if automatic
1162         #         publication is switched on, default value is used for result name.
1163         #
1164         #  @return New GEOM.GEOM_Object, containing the created point.
1165         #
1166         #  @ref tui_creation_point "Example"
1167         @ManageTransactions("BasicOp")
1168         def MakeVertex(self, theX, theY, theZ, theName=None):
1169             """
1170             Create point by three coordinates.
1171
1172             Parameters:
1173                 theX The X coordinate of the point.
1174                 theY The Y coordinate of the point.
1175                 theZ The Z coordinate of the point.
1176                 theName Object name; when specified, this parameter is used
1177                         for result publication in the study. Otherwise, if automatic
1178                         publication is switched on, default value is used for result name.
1179
1180             Returns:
1181                 New GEOM.GEOM_Object, containing the created point.
1182             """
1183             # Example: see GEOM_TestAll.py
1184             theX,theY,theZ,Parameters = ParseParameters(theX, theY, theZ)
1185             anObj = self.BasicOp.MakePointXYZ(theX, theY, theZ)
1186             RaiseIfFailed("MakePointXYZ", self.BasicOp)
1187             anObj.SetParameters(Parameters)
1188             self._autoPublish(anObj, theName, "vertex")
1189             return anObj
1190
1191         ## Create a point, distant from the referenced point
1192         #  on the given distances along the coordinate axes.
1193         #  @param theReference The referenced point.
1194         #  @param theX Displacement from the referenced point along OX axis.
1195         #  @param theY Displacement from the referenced point along OY axis.
1196         #  @param theZ Displacement from the referenced point along OZ axis.
1197         #  @param theName Object name; when specified, this parameter is used
1198         #         for result publication in the study. Otherwise, if automatic
1199         #         publication is switched on, default value is used for result name.
1200         #
1201         #  @return New GEOM.GEOM_Object, containing the created point.
1202         #
1203         #  @ref tui_creation_point "Example"
1204         @ManageTransactions("BasicOp")
1205         def MakeVertexWithRef(self, theReference, theX, theY, theZ, theName=None):
1206             """
1207             Create a point, distant from the referenced point
1208             on the given distances along the coordinate axes.
1209
1210             Parameters:
1211                 theReference The referenced point.
1212                 theX Displacement from the referenced point along OX axis.
1213                 theY Displacement from the referenced point along OY axis.
1214                 theZ Displacement from the referenced point along OZ axis.
1215                 theName Object name; when specified, this parameter is used
1216                         for result publication in the study. Otherwise, if automatic
1217                         publication is switched on, default value is used for result name.
1218
1219             Returns:
1220                 New GEOM.GEOM_Object, containing the created point.
1221             """
1222             # Example: see GEOM_TestAll.py
1223             theX,theY,theZ,Parameters = ParseParameters(theX, theY, theZ)
1224             anObj = self.BasicOp.MakePointWithReference(theReference, theX, theY, theZ)
1225             RaiseIfFailed("MakePointWithReference", self.BasicOp)
1226             anObj.SetParameters(Parameters)
1227             self._autoPublish(anObj, theName, "vertex")
1228             return anObj
1229
1230         ## Create a point, corresponding to the given parameter on the given curve.
1231         #  @param theRefCurve The referenced curve.
1232         #  @param theParameter Value of parameter on the referenced curve.
1233         #  @param takeOrientationIntoAccount flag that tells if it is necessary
1234         #         to take the curve's orientation into account for the
1235         #         operation. I.e. if this flag is set, the results for the same
1236         #         parameters (except the value 0.5) is different for forward
1237         #         and reversed curves. If it is not set the result is the same.
1238         #  @param theName Object name; when specified, this parameter is used
1239         #         for result publication in the study. Otherwise, if automatic
1240         #         publication is switched on, default value is used for result name.
1241         #
1242         #  @return New GEOM.GEOM_Object, containing the created point.
1243         #
1244         #  @ref tui_creation_point "Example"
1245         @ManageTransactions("BasicOp")
1246         def MakeVertexOnCurve(self, theRefCurve, theParameter,
1247                               takeOrientationIntoAccount=False, theName=None):
1248             """
1249             Create a point, corresponding to the given parameter on the given curve.
1250
1251             Parameters:
1252                 theRefCurve The referenced curve.
1253                 theParameter Value of parameter on the referenced curve.
1254                 takeOrientationIntoAccount flag that tells if it is necessary
1255                         to take the curve's orientation into account for the
1256                         operation. I.e. if this flag is set, the results for
1257                         the same parameters (except the value 0.5) is different
1258                         for forward and reversed curves. If it is not set
1259                         the result is the same.
1260                 theName Object name; when specified, this parameter is used
1261                         for result publication in the study. Otherwise, if automatic
1262                         publication is switched on, default value is used for result name.
1263
1264             Returns:
1265                 New GEOM.GEOM_Object, containing the created point.
1266
1267             Example of usage:
1268                 p_on_arc = geompy.MakeVertexOnCurve(Arc, 0.25)
1269             """
1270             # Example: see GEOM_TestAll.py
1271             theParameter, takeOrientationIntoAccount, Parameters = ParseParameters(
1272                 theParameter, takeOrientationIntoAccount)
1273             anObj = self.BasicOp.MakePointOnCurve(theRefCurve, theParameter,
1274                                                   takeOrientationIntoAccount)
1275             RaiseIfFailed("MakePointOnCurve", self.BasicOp)
1276             anObj.SetParameters(Parameters)
1277             self._autoPublish(anObj, theName, "vertex")
1278             return anObj
1279
1280         ## Create a point by projection give coordinates on the given curve
1281         #  @param theRefCurve The referenced curve.
1282         #  @param theX X-coordinate in 3D space
1283         #  @param theY Y-coordinate in 3D space
1284         #  @param theZ Z-coordinate in 3D space
1285         #  @param theName Object name; when specified, this parameter is used
1286         #         for result publication in the study. Otherwise, if automatic
1287         #         publication is switched on, default value is used for result name.
1288         #
1289         #  @return New GEOM.GEOM_Object, containing the created point.
1290         #
1291         #  @ref tui_creation_point "Example"
1292         @ManageTransactions("BasicOp")
1293         def MakeVertexOnCurveByCoord(self, theRefCurve, theX, theY, theZ, theName=None):
1294             """
1295             Create a point by projection give coordinates on the given curve
1296
1297             Parameters:
1298                 theRefCurve The referenced curve.
1299                 theX X-coordinate in 3D space
1300                 theY Y-coordinate in 3D space
1301                 theZ Z-coordinate in 3D space
1302                 theName Object name; when specified, this parameter is used
1303                         for result publication in the study. Otherwise, if automatic
1304                         publication is switched on, default value is used for result name.
1305
1306             Returns:
1307                 New GEOM.GEOM_Object, containing the created point.
1308
1309             Example of usage:
1310                 p_on_arc3 = geompy.MakeVertexOnCurveByCoord(Arc, 100, -10, 10)
1311             """
1312             # Example: see GEOM_TestAll.py
1313             theX, theY, theZ, Parameters = ParseParameters(theX, theY, theZ)
1314             anObj = self.BasicOp.MakePointOnCurveByCoord(theRefCurve, theX, theY, theZ)
1315             RaiseIfFailed("MakeVertexOnCurveByCoord", self.BasicOp)
1316             anObj.SetParameters(Parameters)
1317             self._autoPublish(anObj, theName, "vertex")
1318             return anObj
1319
1320         ## Create a point, corresponding to the given length on the given curve.
1321         #  @param theRefCurve The referenced curve.
1322         #  @param theLength Length on the referenced curve. It can be negative.
1323         #  @param theStartPoint Point allowing to choose the direction for the calculation
1324         #                       of the length. If None, start from the first point of theRefCurve.
1325         #  @param theName Object name; when specified, this parameter is used
1326         #         for result publication in the study. Otherwise, if automatic
1327         #         publication is switched on, default value is used for result name.
1328         #
1329         #  @return New GEOM.GEOM_Object, containing the created point.
1330         #
1331         #  @ref tui_creation_point "Example"
1332         @ManageTransactions("BasicOp")
1333         def MakeVertexOnCurveByLength(self, theRefCurve, theLength, theStartPoint = None, theName=None):
1334             """
1335             Create a point, corresponding to the given length on the given curve.
1336
1337             Parameters:
1338                 theRefCurve The referenced curve.
1339                 theLength Length on the referenced curve. It can be negative.
1340                 theStartPoint Point allowing to choose the direction for the calculation
1341                               of the length. If None, start from the first point of theRefCurve.
1342                 theName Object name; when specified, this parameter is used
1343                         for result publication in the study. Otherwise, if automatic
1344                         publication is switched on, default value is used for result name.
1345
1346             Returns:
1347                 New GEOM.GEOM_Object, containing the created point.
1348             """
1349             # Example: see GEOM_TestAll.py
1350             theLength, Parameters = ParseParameters(theLength)
1351             anObj = self.BasicOp.MakePointOnCurveByLength(theRefCurve, theLength, theStartPoint)
1352             RaiseIfFailed("MakePointOnCurveByLength", self.BasicOp)
1353             anObj.SetParameters(Parameters)
1354             self._autoPublish(anObj, theName, "vertex")
1355             return anObj
1356
1357         ## Create a point, corresponding to the given parameters on the
1358         #    given surface.
1359         #  @param theRefSurf The referenced surface.
1360         #  @param theUParameter Value of U-parameter on the referenced surface.
1361         #  @param theVParameter Value of V-parameter on the referenced surface.
1362         #  @param 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         #  @return New GEOM.GEOM_Object, containing the created point.
1367         #
1368         #  @ref swig_MakeVertexOnSurface "Example"
1369         @ManageTransactions("BasicOp")
1370         def MakeVertexOnSurface(self, theRefSurf, theUParameter, theVParameter, theName=None):
1371             """
1372             Create a point, corresponding to the given parameters on the
1373             given surface.
1374
1375             Parameters:
1376                 theRefSurf The referenced surface.
1377                 theUParameter Value of U-parameter on the referenced surface.
1378                 theVParameter Value of V-parameter on the referenced surface.
1379                 theName Object name; when specified, this parameter is used
1380                         for result publication in the study. Otherwise, if automatic
1381                         publication is switched on, default value is used for result name.
1382
1383             Returns:
1384                 New GEOM.GEOM_Object, containing the created point.
1385
1386             Example of usage:
1387                 p_on_face = geompy.MakeVertexOnSurface(Face, 0.1, 0.8)
1388             """
1389             theUParameter, theVParameter, Parameters = ParseParameters(theUParameter, theVParameter)
1390             # Example: see GEOM_TestAll.py
1391             anObj = self.BasicOp.MakePointOnSurface(theRefSurf, theUParameter, theVParameter)
1392             RaiseIfFailed("MakePointOnSurface", self.BasicOp)
1393             anObj.SetParameters(Parameters);
1394             self._autoPublish(anObj, theName, "vertex")
1395             return anObj
1396
1397         ## Create a point by projection give coordinates on the given surface
1398         #  @param theRefSurf The referenced surface.
1399         #  @param theX X-coordinate in 3D space
1400         #  @param theY Y-coordinate in 3D space
1401         #  @param theZ Z-coordinate in 3D space
1402         #  @param theName Object name; when specified, this parameter is used
1403         #         for result publication in the study. Otherwise, if automatic
1404         #         publication is switched on, default value is used for result name.
1405         #
1406         #  @return New GEOM.GEOM_Object, containing the created point.
1407         #
1408         #  @ref swig_MakeVertexOnSurfaceByCoord "Example"
1409         @ManageTransactions("BasicOp")
1410         def MakeVertexOnSurfaceByCoord(self, theRefSurf, theX, theY, theZ, theName=None):
1411             """
1412             Create a point by projection give coordinates on the given surface
1413
1414             Parameters:
1415                 theRefSurf The referenced surface.
1416                 theX X-coordinate in 3D space
1417                 theY Y-coordinate in 3D space
1418                 theZ Z-coordinate in 3D space
1419                 theName Object name; when specified, this parameter is used
1420                         for result publication in the study. Otherwise, if automatic
1421                         publication is switched on, default value is used for result name.
1422
1423             Returns:
1424                 New GEOM.GEOM_Object, containing the created point.
1425
1426             Example of usage:
1427                 p_on_face2 = geompy.MakeVertexOnSurfaceByCoord(Face, 0., 0., 0.)
1428             """
1429             theX, theY, theZ, Parameters = ParseParameters(theX, theY, theZ)
1430             # Example: see GEOM_TestAll.py
1431             anObj = self.BasicOp.MakePointOnSurfaceByCoord(theRefSurf, theX, theY, theZ)
1432             RaiseIfFailed("MakeVertexOnSurfaceByCoord", self.BasicOp)
1433             anObj.SetParameters(Parameters);
1434             self._autoPublish(anObj, theName, "vertex")
1435             return anObj
1436
1437         ## Create a point, which lays on the given face.
1438         #  The point will lay in arbitrary place of the face.
1439         #  The only condition on it is a non-zero distance to the face boundary.
1440         #  Such point can be used to uniquely identify the face inside any
1441         #  shape in case, when the shape does not contain overlapped faces.
1442         #  @param theFace The referenced face.
1443         #  @param theName Object name; when specified, this parameter is used
1444         #         for result publication in the study. Otherwise, if automatic
1445         #         publication is switched on, default value is used for result name.
1446         #
1447         #  @return New GEOM.GEOM_Object, containing the created point.
1448         #
1449         #  @ref swig_MakeVertexInsideFace "Example"
1450         @ManageTransactions("BasicOp")
1451         def MakeVertexInsideFace (self, theFace, theNumberOfPnts=1, theName=None):
1452             """
1453             Create a point, which lays on the given face.
1454             The point will lay in arbitrary place of the face.
1455             The only condition on it is a non-zero distance to the face boundary.
1456             Such point can be used to uniquely identify the face inside any
1457             shape in case, when the shape does not contain overlapped faces.
1458
1459             Parameters:
1460                 theFace The referenced face.
1461                 theNumberOfPnts The number of points we want to get, 1 by default.
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 point.
1468
1469             Example of usage:
1470                 p_on_face = geompy.MakeVertexInsideFace(Face)
1471             """
1472             # Example: see GEOM_TestAll.py
1473             anObj = self.BasicOp.MakePointOnFace(theFace, theNumberOfPnts)
1474             RaiseIfFailed("MakeVertexInsideFace", self.BasicOp)
1475             self._autoPublish(anObj, theName, "vertex")
1476             return anObj
1477
1478         ## Create a point on intersection of two lines.
1479         #  @param theRefLine1, theRefLine2 The referenced lines.
1480         #  @param theName Object name; when specified, this parameter is used
1481         #         for result publication in the study. Otherwise, if automatic
1482         #         publication is switched on, default value is used for result name.
1483         #
1484         #  @return New GEOM.GEOM_Object, containing the created point.
1485         #
1486         #  @ref swig_MakeVertexOnLinesIntersection "Example"
1487         @ManageTransactions("BasicOp")
1488         def MakeVertexOnLinesIntersection(self, theRefLine1, theRefLine2, theName=None):
1489             """
1490             Create a point on intersection of two lines.
1491
1492             Parameters:
1493                 theRefLine1, theRefLine2 The referenced lines.
1494                 theName Object name; when specified, this parameter is used
1495                         for result publication in the study. Otherwise, if automatic
1496                         publication is switched on, default value is used for result name.
1497
1498             Returns:
1499                 New GEOM.GEOM_Object, containing the created point.
1500             """
1501             # Example: see GEOM_TestAll.py
1502             anObj = self.BasicOp.MakePointOnLinesIntersection(theRefLine1, theRefLine2)
1503             RaiseIfFailed("MakePointOnLinesIntersection", self.BasicOp)
1504             self._autoPublish(anObj, theName, "vertex")
1505             return anObj
1506
1507         ## Create a tangent, corresponding to the given parameter on the given curve.
1508         #  @param theRefCurve The referenced curve.
1509         #  @param theParameter Value of parameter on the referenced curve.
1510         #  @param theName Object name; when specified, this parameter is used
1511         #         for result publication in the study. Otherwise, if automatic
1512         #         publication is switched on, default value is used for result name.
1513         #
1514         #  @return New GEOM.GEOM_Object, containing the created tangent.
1515         #
1516         #  @ref swig_MakeTangentOnCurve "Example"
1517         @ManageTransactions("BasicOp")
1518         def MakeTangentOnCurve(self, theRefCurve, theParameter, theName=None):
1519             """
1520             Create a tangent, corresponding to the given parameter on the given curve.
1521
1522             Parameters:
1523                 theRefCurve The referenced curve.
1524                 theParameter Value of parameter on the referenced curve.
1525                 theName Object name; when specified, this parameter is used
1526                         for result publication in the study. Otherwise, if automatic
1527                         publication is switched on, default value is used for result name.
1528
1529             Returns:
1530                 New GEOM.GEOM_Object, containing the created tangent.
1531
1532             Example of usage:
1533                 tan_on_arc = geompy.MakeTangentOnCurve(Arc, 0.7)
1534             """
1535             anObj = self.BasicOp.MakeTangentOnCurve(theRefCurve, theParameter)
1536             RaiseIfFailed("MakeTangentOnCurve", self.BasicOp)
1537             self._autoPublish(anObj, theName, "tangent")
1538             return anObj
1539
1540         ## Create a tangent plane, corresponding to the given parameter on the given face.
1541         #  @param theFace The face for which tangent plane should be built.
1542         #  @param theParameterV vertical value of the center point (0.0 - 1.0).
1543         #  @param theParameterU horisontal value of the center point (0.0 - 1.0).
1544         #  @param theTrimSize the size of plane.
1545         #  @param theName Object name; when specified, this parameter is used
1546         #         for result publication in the study. Otherwise, if automatic
1547         #         publication is switched on, default value is used for result name.
1548         #
1549         #  @return New GEOM.GEOM_Object, containing the created tangent.
1550         #
1551         #  @ref swig_MakeTangentPlaneOnFace "Example"
1552         @ManageTransactions("BasicOp")
1553         def MakeTangentPlaneOnFace(self, theFace, theParameterU, theParameterV, theTrimSize, theName=None):
1554             """
1555             Create a tangent plane, corresponding to the given parameter on the given face.
1556
1557             Parameters:
1558                 theFace The face for which tangent plane should be built.
1559                 theParameterV vertical value of the center point (0.0 - 1.0).
1560                 theParameterU horisontal value of the center point (0.0 - 1.0).
1561                 theTrimSize the size of plane.
1562                 theName Object name; when specified, this parameter is used
1563                         for result publication in the study. Otherwise, if automatic
1564                         publication is switched on, default value is used for result name.
1565
1566            Returns:
1567                 New GEOM.GEOM_Object, containing the created tangent.
1568
1569            Example of usage:
1570                 an_on_face = geompy.MakeTangentPlaneOnFace(tan_extrusion, 0.7, 0.5, 150)
1571             """
1572             anObj = self.BasicOp.MakeTangentPlaneOnFace(theFace, theParameterU, theParameterV, theTrimSize)
1573             RaiseIfFailed("MakeTangentPlaneOnFace", self.BasicOp)
1574             self._autoPublish(anObj, theName, "tangent")
1575             return anObj
1576
1577         ## Create a vector with the given components.
1578         #  @param theDX X component of the vector.
1579         #  @param theDY Y component of the vector.
1580         #  @param theDZ Z component of the vector.
1581         #  @param theName Object name; when specified, this parameter is used
1582         #         for result publication in the study. Otherwise, if automatic
1583         #         publication is switched on, default value is used for result name.
1584         #
1585         #  @return New GEOM.GEOM_Object, containing the created vector.
1586         #
1587         #  @ref tui_creation_vector "Example"
1588         @ManageTransactions("BasicOp")
1589         def MakeVectorDXDYDZ(self, theDX, theDY, theDZ, theName=None):
1590             """
1591             Create a vector with the given components.
1592
1593             Parameters:
1594                 theDX X component of the vector.
1595                 theDY Y component of the vector.
1596                 theDZ Z component of the vector.
1597                 theName Object name; when specified, this parameter is used
1598                         for result publication in the study. Otherwise, if automatic
1599                         publication is switched on, default value is used for result name.
1600
1601             Returns:
1602                 New GEOM.GEOM_Object, containing the created vector.
1603             """
1604             # Example: see GEOM_TestAll.py
1605             theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
1606             anObj = self.BasicOp.MakeVectorDXDYDZ(theDX, theDY, theDZ)
1607             RaiseIfFailed("MakeVectorDXDYDZ", self.BasicOp)
1608             anObj.SetParameters(Parameters)
1609             self._autoPublish(anObj, theName, "vector")
1610             return anObj
1611
1612         ## Create a vector between two points.
1613         #  @param thePnt1 Start point for the vector.
1614         #  @param thePnt2 End point for the vector.
1615         #  @param theName Object name; when specified, this parameter is used
1616         #         for result publication in the study. Otherwise, if automatic
1617         #         publication is switched on, default value is used for result name.
1618         #
1619         #  @return New GEOM.GEOM_Object, containing the created vector.
1620         #
1621         #  @ref tui_creation_vector "Example"
1622         @ManageTransactions("BasicOp")
1623         def MakeVector(self, thePnt1, thePnt2, theName=None):
1624             """
1625             Create a vector between two points.
1626
1627             Parameters:
1628                 thePnt1 Start point for the vector.
1629                 thePnt2 End point for the vector.
1630                 theName Object name; when specified, this parameter is used
1631                         for result publication in the study. Otherwise, if automatic
1632                         publication is switched on, default value is used for result name.
1633
1634             Returns:
1635                 New GEOM.GEOM_Object, containing the created vector.
1636             """
1637             # Example: see GEOM_TestAll.py
1638             anObj = self.BasicOp.MakeVectorTwoPnt(thePnt1, thePnt2)
1639             RaiseIfFailed("MakeVectorTwoPnt", self.BasicOp)
1640             self._autoPublish(anObj, theName, "vector")
1641             return anObj
1642
1643         ## Create a line, passing through the given point
1644         #  and parallel to the given direction
1645         #  @param thePnt Point. The resulting line will pass through it.
1646         #  @param theDir Direction. The resulting line will be parallel to it.
1647         #  @param theName Object name; when specified, this parameter is used
1648         #         for result publication in the study. Otherwise, if automatic
1649         #         publication is switched on, default value is used for result name.
1650         #
1651         #  @return New GEOM.GEOM_Object, containing the created line.
1652         #
1653         #  @ref tui_creation_line "Example"
1654         @ManageTransactions("BasicOp")
1655         def MakeLine(self, thePnt, theDir, theName=None):
1656             """
1657             Create a line, passing through the given point
1658             and parallel to the given direction
1659
1660             Parameters:
1661                 thePnt Point. The resulting line will pass through it.
1662                 theDir Direction. The resulting line will be parallel to it.
1663                 theName Object name; when specified, this parameter is used
1664                         for result publication in the study. Otherwise, if automatic
1665                         publication is switched on, default value is used for result name.
1666
1667             Returns:
1668                 New GEOM.GEOM_Object, containing the created line.
1669             """
1670             # Example: see GEOM_TestAll.py
1671             anObj = self.BasicOp.MakeLine(thePnt, theDir)
1672             RaiseIfFailed("MakeLine", self.BasicOp)
1673             self._autoPublish(anObj, theName, "line")
1674             return anObj
1675
1676         ## Create a line, passing through the given points
1677         #  @param thePnt1 First of two points, defining the line.
1678         #  @param thePnt2 Second of two points, defining the line.
1679         #  @param theName Object name; when specified, this parameter is used
1680         #         for result publication in the study. Otherwise, if automatic
1681         #         publication is switched on, default value is used for result name.
1682         #
1683         #  @return New GEOM.GEOM_Object, containing the created line.
1684         #
1685         #  @ref tui_creation_line "Example"
1686         @ManageTransactions("BasicOp")
1687         def MakeLineTwoPnt(self, thePnt1, thePnt2, theName=None):
1688             """
1689             Create a line, passing through the given points
1690
1691             Parameters:
1692                 thePnt1 First of two points, defining the line.
1693                 thePnt2 Second of two points, defining the line.
1694                 theName Object name; when specified, this parameter is used
1695                         for result publication in the study. Otherwise, if automatic
1696                         publication is switched on, default value is used for result name.
1697
1698             Returns:
1699                 New GEOM.GEOM_Object, containing the created line.
1700             """
1701             # Example: see GEOM_TestAll.py
1702             anObj = self.BasicOp.MakeLineTwoPnt(thePnt1, thePnt2)
1703             RaiseIfFailed("MakeLineTwoPnt", self.BasicOp)
1704             self._autoPublish(anObj, theName, "line")
1705             return anObj
1706
1707         ## Create a line on two faces intersection.
1708         #  @param theFace1 First of two faces, defining the line.
1709         #  @param theFace2 Second of two faces, defining the line.
1710         #  @param theName Object name; when specified, this parameter is used
1711         #         for result publication in the study. Otherwise, if automatic
1712         #         publication is switched on, default value is used for result name.
1713         #
1714         #  @return New GEOM.GEOM_Object, containing the created line.
1715         #
1716         #  @ref swig_MakeLineTwoFaces "Example"
1717         @ManageTransactions("BasicOp")
1718         def MakeLineTwoFaces(self, theFace1, theFace2, theName=None):
1719             """
1720             Create a line on two faces intersection.
1721
1722             Parameters:
1723                 theFace1 First of two faces, defining the line.
1724                 theFace2 Second of two faces, defining the line.
1725                 theName Object name; when specified, this parameter is used
1726                         for result publication in the study. Otherwise, if automatic
1727                         publication is switched on, default value is used for result name.
1728
1729             Returns:
1730                 New GEOM.GEOM_Object, containing the created line.
1731             """
1732             # Example: see GEOM_TestAll.py
1733             anObj = self.BasicOp.MakeLineTwoFaces(theFace1, theFace2)
1734             RaiseIfFailed("MakeLineTwoFaces", self.BasicOp)
1735             self._autoPublish(anObj, theName, "line")
1736             return anObj
1737
1738         ## Create a plane, passing through the given point
1739         #  and normal to the given vector.
1740         #  @param thePnt Point, the plane has to pass through.
1741         #  @param theVec Vector, defining the plane normal direction.
1742         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1743         #  @param theName Object name; when specified, this parameter is used
1744         #         for result publication in the study. Otherwise, if automatic
1745         #         publication is switched on, default value is used for result name.
1746         #
1747         #  @return New GEOM.GEOM_Object, containing the created plane.
1748         #
1749         #  @ref tui_creation_plane "Example"
1750         @ManageTransactions("BasicOp")
1751         def MakePlane(self, thePnt, theVec, theTrimSize, theName=None):
1752             """
1753             Create a plane, passing through the given point
1754             and normal to the given vector.
1755
1756             Parameters:
1757                 thePnt Point, the plane has to pass through.
1758                 theVec Vector, defining the plane normal direction.
1759                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1760                 theName Object name; when specified, this parameter is used
1761                         for result publication in the study. Otherwise, if automatic
1762                         publication is switched on, default value is used for result name.
1763
1764             Returns:
1765                 New GEOM.GEOM_Object, containing the created plane.
1766             """
1767             # Example: see GEOM_TestAll.py
1768             theTrimSize, Parameters = ParseParameters(theTrimSize);
1769             anObj = self.BasicOp.MakePlanePntVec(thePnt, theVec, theTrimSize)
1770             RaiseIfFailed("MakePlanePntVec", self.BasicOp)
1771             anObj.SetParameters(Parameters)
1772             self._autoPublish(anObj, theName, "plane")
1773             return anObj
1774
1775         ## Create a plane, passing through the three given points
1776         #  @param thePnt1 First of three points, defining the plane.
1777         #  @param thePnt2 Second of three points, defining the plane.
1778         #  @param thePnt3 Third of three points, defining the plane.
1779         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1780         #  @param theName Object name; when specified, this parameter is used
1781         #         for result publication in the study. Otherwise, if automatic
1782         #         publication is switched on, default value is used for result name.
1783         #
1784         #  @return New GEOM.GEOM_Object, containing the created plane.
1785         #
1786         #  @ref tui_creation_plane "Example"
1787         @ManageTransactions("BasicOp")
1788         def MakePlaneThreePnt(self, thePnt1, thePnt2, thePnt3, theTrimSize, theName=None):
1789             """
1790             Create a plane, passing through the three given points
1791
1792             Parameters:
1793                 thePnt1 First of three points, defining the plane.
1794                 thePnt2 Second of three points, defining the plane.
1795                 thePnt3 Third of three points, defining the plane.
1796                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1797                 theName Object name; when specified, this parameter is used
1798                         for result publication in the study. Otherwise, if automatic
1799                         publication is switched on, default value is used for result name.
1800
1801             Returns:
1802                 New GEOM.GEOM_Object, containing the created plane.
1803             """
1804             # Example: see GEOM_TestAll.py
1805             theTrimSize, Parameters = ParseParameters(theTrimSize);
1806             anObj = self.BasicOp.MakePlaneThreePnt(thePnt1, thePnt2, thePnt3, theTrimSize)
1807             RaiseIfFailed("MakePlaneThreePnt", self.BasicOp)
1808             anObj.SetParameters(Parameters)
1809             self._autoPublish(anObj, theName, "plane")
1810             return anObj
1811
1812         ## Create a plane, similar to the existing one, but with another size of representing face.
1813         #  @param theFace Referenced plane or LCS(Marker).
1814         #  @param theTrimSize New half size of a side of quadrangle face, representing the plane.
1815         #  @param theName Object name; when specified, this parameter is used
1816         #         for result publication in the study. Otherwise, if automatic
1817         #         publication is switched on, default value is used for result name.
1818         #
1819         #  @return New GEOM.GEOM_Object, containing the created plane.
1820         #
1821         #  @ref tui_creation_plane "Example"
1822         @ManageTransactions("BasicOp")
1823         def MakePlaneFace(self, theFace, theTrimSize, theName=None):
1824             """
1825             Create a plane, similar to the existing one, but with another size of representing face.
1826
1827             Parameters:
1828                 theFace Referenced plane or LCS(Marker).
1829                 theTrimSize New half size of a side of quadrangle face, representing the plane.
1830                 theName Object name; when specified, this parameter is used
1831                         for result publication in the study. Otherwise, if automatic
1832                         publication is switched on, default value is used for result name.
1833
1834             Returns:
1835                 New GEOM.GEOM_Object, containing the created plane.
1836             """
1837             # Example: see GEOM_TestAll.py
1838             theTrimSize, Parameters = ParseParameters(theTrimSize);
1839             anObj = self.BasicOp.MakePlaneFace(theFace, theTrimSize)
1840             RaiseIfFailed("MakePlaneFace", self.BasicOp)
1841             anObj.SetParameters(Parameters)
1842             self._autoPublish(anObj, theName, "plane")
1843             return anObj
1844
1845         ## Create a plane, passing through the 2 vectors
1846         #  with center in a start point of the first vector.
1847         #  @param theVec1 Vector, defining center point and plane direction.
1848         #  @param theVec2 Vector, defining the plane normal direction.
1849         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1850         #  @param theName Object name; when specified, this parameter is used
1851         #         for result publication in the study. Otherwise, if automatic
1852         #         publication is switched on, default value is used for result name.
1853         #
1854         #  @return New GEOM.GEOM_Object, containing the created plane.
1855         #
1856         #  @ref tui_creation_plane "Example"
1857         @ManageTransactions("BasicOp")
1858         def MakePlane2Vec(self, theVec1, theVec2, theTrimSize, theName=None):
1859             """
1860             Create a plane, passing through the 2 vectors
1861             with center in a start point of the first vector.
1862
1863             Parameters:
1864                 theVec1 Vector, defining center point and plane direction.
1865                 theVec2 Vector, defining the plane normal direction.
1866                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1867                 theName Object name; when specified, this parameter is used
1868                         for result publication in the study. Otherwise, if automatic
1869                         publication is switched on, default value is used for result name.
1870
1871             Returns:
1872                 New GEOM.GEOM_Object, containing the created plane.
1873             """
1874             # Example: see GEOM_TestAll.py
1875             theTrimSize, Parameters = ParseParameters(theTrimSize);
1876             anObj = self.BasicOp.MakePlane2Vec(theVec1, theVec2, theTrimSize)
1877             RaiseIfFailed("MakePlane2Vec", self.BasicOp)
1878             anObj.SetParameters(Parameters)
1879             self._autoPublish(anObj, theName, "plane")
1880             return anObj
1881
1882         ## Create a plane, based on a Local coordinate system.
1883         #  @param theLCS  coordinate system, defining plane.
1884         #  @param theTrimSize Half size of a side of quadrangle face, representing the plane.
1885         #  @param theOrientation OXY, OYZ or OZX orientation - (1, 2 or 3)
1886         #  @param theName Object name; when specified, this parameter is used
1887         #         for result publication in the study. Otherwise, if automatic
1888         #         publication is switched on, default value is used for result name.
1889         #
1890         #  @return New GEOM.GEOM_Object, containing the created plane.
1891         #
1892         #  @ref tui_creation_plane "Example"
1893         @ManageTransactions("BasicOp")
1894         def MakePlaneLCS(self, theLCS, theTrimSize, theOrientation, theName=None):
1895             """
1896             Create a plane, based on a Local coordinate system.
1897
1898            Parameters:
1899                 theLCS  coordinate system, defining plane.
1900                 theTrimSize Half size of a side of quadrangle face, representing the plane.
1901                 theOrientation OXY, OYZ or OZX orientation - (1, 2 or 3)
1902                 theName Object name; when specified, this parameter is used
1903                         for result publication in the study. Otherwise, if automatic
1904                         publication is switched on, default value is used for result name.
1905
1906             Returns:
1907                 New GEOM.GEOM_Object, containing the created plane.
1908             """
1909             # Example: see GEOM_TestAll.py
1910             theTrimSize, Parameters = ParseParameters(theTrimSize);
1911             anObj = self.BasicOp.MakePlaneLCS(theLCS, theTrimSize, theOrientation)
1912             RaiseIfFailed("MakePlaneLCS", self.BasicOp)
1913             anObj.SetParameters(Parameters)
1914             self._autoPublish(anObj, theName, "plane")
1915             return anObj
1916
1917         ## Create a local coordinate system.
1918         #  @param OX,OY,OZ Three coordinates of coordinate system origin.
1919         #  @param XDX,XDY,XDZ Three components of OX direction
1920         #  @param YDX,YDY,YDZ Three components of OY direction
1921         #  @param theName Object name; when specified, this parameter is used
1922         #         for result publication in the study. Otherwise, if automatic
1923         #         publication is switched on, default value is used for result name.
1924         #
1925         #  @return New GEOM.GEOM_Object, containing the created coordinate system.
1926         #
1927         #  @ref swig_MakeMarker "Example"
1928         @ManageTransactions("BasicOp")
1929         def MakeMarker(self, OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ, theName=None):
1930             """
1931             Create a local coordinate system.
1932
1933             Parameters:
1934                 OX,OY,OZ Three coordinates of coordinate system origin.
1935                 XDX,XDY,XDZ Three components of OX direction
1936                 YDX,YDY,YDZ Three components of OY direction
1937                 theName Object name; when specified, this parameter is used
1938                         for result publication in the study. Otherwise, if automatic
1939                         publication is switched on, default value is used for result name.
1940
1941             Returns:
1942                 New GEOM.GEOM_Object, containing the created coordinate system.
1943             """
1944             # Example: see GEOM_TestAll.py
1945             OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ, Parameters = ParseParameters(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ);
1946             anObj = self.BasicOp.MakeMarker(OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ)
1947             RaiseIfFailed("MakeMarker", self.BasicOp)
1948             anObj.SetParameters(Parameters)
1949             self._autoPublish(anObj, theName, "lcs")
1950             return anObj
1951
1952         ## Create a local coordinate system from shape.
1953         #  @param theShape The initial shape to detect the coordinate system.
1954         #  @param theName Object name; when specified, this parameter is used
1955         #         for result publication in the study. Otherwise, if automatic
1956         #         publication is switched on, default value is used for result name.
1957         #
1958         #  @return New GEOM.GEOM_Object, containing the created coordinate system.
1959         #
1960         #  @ref tui_creation_lcs "Example"
1961         @ManageTransactions("BasicOp")
1962         def MakeMarkerFromShape(self, theShape, theName=None):
1963             """
1964             Create a local coordinate system from shape.
1965
1966             Parameters:
1967                 theShape The initial shape to detect the coordinate system.
1968                 theName Object name; when specified, this parameter is used
1969                         for result publication in the study. Otherwise, if automatic
1970                         publication is switched on, default value is used for result name.
1971
1972             Returns:
1973                 New GEOM.GEOM_Object, containing the created coordinate system.
1974             """
1975             anObj = self.BasicOp.MakeMarkerFromShape(theShape)
1976             RaiseIfFailed("MakeMarkerFromShape", self.BasicOp)
1977             self._autoPublish(anObj, theName, "lcs")
1978             return anObj
1979
1980         ## Create a local coordinate system from point and two vectors.
1981         #  @param theOrigin Point of coordinate system origin.
1982         #  @param theXVec Vector of X direction
1983         #  @param theYVec Vector of Y direction
1984         #  @param theName Object name; when specified, this parameter is used
1985         #         for result publication in the study. Otherwise, if automatic
1986         #         publication is switched on, default value is used for result name.
1987         #
1988         #  @return New GEOM.GEOM_Object, containing the created coordinate system.
1989         #
1990         #  @ref tui_creation_lcs "Example"
1991         @ManageTransactions("BasicOp")
1992         def MakeMarkerPntTwoVec(self, theOrigin, theXVec, theYVec, theName=None):
1993             """
1994             Create a local coordinate system from point and two vectors.
1995
1996             Parameters:
1997                 theOrigin Point of coordinate system origin.
1998                 theXVec Vector of X direction
1999                 theYVec Vector of Y direction
2000                 theName Object name; when specified, this parameter is used
2001                         for result publication in the study. Otherwise, if automatic
2002                         publication is switched on, default value is used for result name.
2003
2004             Returns:
2005                 New GEOM.GEOM_Object, containing the created coordinate system.
2006
2007             """
2008             anObj = self.BasicOp.MakeMarkerPntTwoVec(theOrigin, theXVec, theYVec)
2009             RaiseIfFailed("MakeMarkerPntTwoVec", self.BasicOp)
2010             self._autoPublish(anObj, theName, "lcs")
2011             return anObj
2012
2013         # end of l3_basic_go
2014         ## @}
2015
2016         ## @addtogroup l4_curves
2017         ## @{
2018
2019         ##  Create an arc of circle, passing through three given points.
2020         #  @param thePnt1 Start point of the arc.
2021         #  @param thePnt2 Middle point of the arc.
2022         #  @param thePnt3 End point of the arc.
2023         #  @param theName Object name; when specified, this parameter is used
2024         #         for result publication in the study. Otherwise, if automatic
2025         #         publication is switched on, default value is used for result name.
2026         #
2027         #  @return New GEOM.GEOM_Object, containing the created arc.
2028         #
2029         #  @ref swig_MakeArc "Example"
2030         @ManageTransactions("CurvesOp")
2031         def MakeArc(self, thePnt1, thePnt2, thePnt3, theName=None):
2032             """
2033             Create an arc of circle, passing through three given points.
2034
2035             Parameters:
2036                 thePnt1 Start point of the arc.
2037                 thePnt2 Middle point of the arc.
2038                 thePnt3 End point of the arc.
2039                 theName Object name; when specified, this parameter is used
2040                         for result publication in the study. Otherwise, if automatic
2041                         publication is switched on, default value is used for result name.
2042
2043             Returns:
2044                 New GEOM.GEOM_Object, containing the created arc.
2045             """
2046             # Example: see GEOM_TestAll.py
2047             anObj = self.CurvesOp.MakeArc(thePnt1, thePnt2, thePnt3)
2048             RaiseIfFailed("MakeArc", self.CurvesOp)
2049             self._autoPublish(anObj, theName, "arc")
2050             return anObj
2051
2052         ##  Create an arc of circle from a center and 2 points.
2053         #  @param thePnt1 Center of the arc
2054         #  @param thePnt2 Start point of the arc. (Gives also the radius of the arc)
2055         #  @param thePnt3 End point of the arc (Gives also a direction)
2056         #  @param theSense Orientation of the arc
2057         #  @param theName Object name; when specified, this parameter is used
2058         #         for result publication in the study. Otherwise, if automatic
2059         #         publication is switched on, default value is used for result name.
2060         #
2061         #  @return New GEOM.GEOM_Object, containing the created arc.
2062         #
2063         #  @ref swig_MakeArc "Example"
2064         @ManageTransactions("CurvesOp")
2065         def MakeArcCenter(self, thePnt1, thePnt2, thePnt3, theSense=False, theName=None):
2066             """
2067             Create an arc of circle from a center and 2 points.
2068
2069             Parameters:
2070                 thePnt1 Center of the arc
2071                 thePnt2 Start point of the arc. (Gives also the radius of the arc)
2072                 thePnt3 End point of the arc (Gives also a direction)
2073                 theSense Orientation of the arc
2074                 theName Object name; when specified, this parameter is used
2075                         for result publication in the study. Otherwise, if automatic
2076                         publication is switched on, default value is used for result name.
2077
2078             Returns:
2079                 New GEOM.GEOM_Object, containing the created arc.
2080             """
2081             # Example: see GEOM_TestAll.py
2082             anObj = self.CurvesOp.MakeArcCenter(thePnt1, thePnt2, thePnt3, theSense)
2083             RaiseIfFailed("MakeArcCenter", self.CurvesOp)
2084             self._autoPublish(anObj, theName, "arc")
2085             return anObj
2086
2087         ##  Create an arc of ellipse, of center and two points.
2088         #  @param theCenter Center of the arc.
2089         #  @param thePnt1 defines major radius of the arc by distance from Pnt1 to Pnt2.
2090         #  @param thePnt2 defines plane of ellipse and minor radius as distance from Pnt3 to line from Pnt1 to Pnt2.
2091         #  @param theName Object name; when specified, this parameter is used
2092         #         for result publication in the study. Otherwise, if automatic
2093         #         publication is switched on, default value is used for result name.
2094         #
2095         #  @return New GEOM.GEOM_Object, containing the created arc.
2096         #
2097         #  @ref swig_MakeArc "Example"
2098         @ManageTransactions("CurvesOp")
2099         def MakeArcOfEllipse(self, theCenter, thePnt1, thePnt2, theName=None):
2100             """
2101             Create an arc of ellipse, of center and two points.
2102
2103             Parameters:
2104                 theCenter Center of the arc.
2105                 thePnt1 defines major radius of the arc by distance from Pnt1 to Pnt2.
2106                 thePnt2 defines plane of ellipse and minor radius as distance from Pnt3 to line from Pnt1 to Pnt2.
2107                 theName Object name; when specified, this parameter is used
2108                         for result publication in the study. Otherwise, if automatic
2109                         publication is switched on, default value is used for result name.
2110
2111             Returns:
2112                 New GEOM.GEOM_Object, containing the created arc.
2113             """
2114             # Example: see GEOM_TestAll.py
2115             anObj = self.CurvesOp.MakeArcOfEllipse(theCenter, thePnt1, thePnt2)
2116             RaiseIfFailed("MakeArcOfEllipse", self.CurvesOp)
2117             self._autoPublish(anObj, theName, "arc")
2118             return anObj
2119
2120         ## Create a circle with given center, normal vector and radius.
2121         #  @param thePnt Circle center.
2122         #  @param theVec Vector, normal to the plane of the circle.
2123         #  @param theR Circle radius.
2124         #  @param theName Object name; when specified, this parameter is used
2125         #         for result publication in the study. Otherwise, if automatic
2126         #         publication is switched on, default value is used for result name.
2127         #
2128         #  @return New GEOM.GEOM_Object, containing the created circle.
2129         #
2130         #  @ref tui_creation_circle "Example"
2131         @ManageTransactions("CurvesOp")
2132         def MakeCircle(self, thePnt, theVec, theR, theName=None):
2133             """
2134             Create a circle with given center, normal vector and radius.
2135
2136             Parameters:
2137                 thePnt Circle center.
2138                 theVec Vector, normal to the plane of the circle.
2139                 theR Circle radius.
2140                 theName Object name; when specified, this parameter is used
2141                         for result publication in the study. Otherwise, if automatic
2142                         publication is switched on, default value is used for result name.
2143
2144             Returns:
2145                 New GEOM.GEOM_Object, containing the created circle.
2146             """
2147             # Example: see GEOM_TestAll.py
2148             theR, Parameters = ParseParameters(theR)
2149             anObj = self.CurvesOp.MakeCirclePntVecR(thePnt, theVec, theR)
2150             RaiseIfFailed("MakeCirclePntVecR", self.CurvesOp)
2151             anObj.SetParameters(Parameters)
2152             self._autoPublish(anObj, theName, "circle")
2153             return anObj
2154
2155         ## Create a circle with given radius.
2156         #  Center of the circle will be in the origin of global
2157         #  coordinate system and normal vector will be codirected with Z axis
2158         #  @param theR Circle radius.
2159         #  @param theName Object name; when specified, this parameter is used
2160         #         for result publication in the study. Otherwise, if automatic
2161         #         publication is switched on, default value is used for result name.
2162         #
2163         #  @return New GEOM.GEOM_Object, containing the created circle.
2164         @ManageTransactions("CurvesOp")
2165         def MakeCircleR(self, theR, theName=None):
2166             """
2167             Create a circle with given radius.
2168             Center of the circle will be in the origin of global
2169             coordinate system and normal vector will be codirected with Z axis
2170
2171             Parameters:
2172                 theR Circle radius.
2173                 theName Object name; when specified, this parameter is used
2174                         for result publication in the study. Otherwise, if automatic
2175                         publication is switched on, default value is used for result name.
2176
2177             Returns:
2178                 New GEOM.GEOM_Object, containing the created circle.
2179             """
2180             anObj = self.CurvesOp.MakeCirclePntVecR(None, None, theR)
2181             RaiseIfFailed("MakeCirclePntVecR", self.CurvesOp)
2182             self._autoPublish(anObj, theName, "circle")
2183             return anObj
2184
2185         ## Create a circle, passing through three given points
2186         #  @param thePnt1,thePnt2,thePnt3 Points, defining the circle.
2187         #  @param theName Object name; when specified, this parameter is used
2188         #         for result publication in the study. Otherwise, if automatic
2189         #         publication is switched on, default value is used for result name.
2190         #
2191         #  @return New GEOM.GEOM_Object, containing the created circle.
2192         #
2193         #  @ref tui_creation_circle "Example"
2194         @ManageTransactions("CurvesOp")
2195         def MakeCircleThreePnt(self, thePnt1, thePnt2, thePnt3, theName=None):
2196             """
2197             Create a circle, passing through three given points
2198
2199             Parameters:
2200                 thePnt1,thePnt2,thePnt3 Points, defining the circle.
2201                 theName Object name; when specified, this parameter is used
2202                         for result publication in the study. Otherwise, if automatic
2203                         publication is switched on, default value is used for result name.
2204
2205             Returns:
2206                 New GEOM.GEOM_Object, containing the created circle.
2207             """
2208             # Example: see GEOM_TestAll.py
2209             anObj = self.CurvesOp.MakeCircleThreePnt(thePnt1, thePnt2, thePnt3)
2210             RaiseIfFailed("MakeCircleThreePnt", self.CurvesOp)
2211             self._autoPublish(anObj, theName, "circle")
2212             return anObj
2213
2214         ## Create a circle, with given point1 as center,
2215         #  passing through the point2 as radius and laying in the plane,
2216         #  defined by all three given points.
2217         #  @param thePnt1,thePnt2,thePnt3 Points, defining the circle.
2218         #  @param theName Object name; when specified, this parameter is used
2219         #         for result publication in the study. Otherwise, if automatic
2220         #         publication is switched on, default value is used for result name.
2221         #
2222         #  @return New GEOM.GEOM_Object, containing the created circle.
2223         #
2224         #  @ref swig_MakeCircle "Example"
2225         @ManageTransactions("CurvesOp")
2226         def MakeCircleCenter2Pnt(self, thePnt1, thePnt2, thePnt3, theName=None):
2227             """
2228             Create a circle, with given point1 as center,
2229             passing through the point2 as radius and laying in the plane,
2230             defined by all three given points.
2231
2232             Parameters:
2233                 thePnt1,thePnt2,thePnt3 Points, defining the circle.
2234                 theName Object name; when specified, this parameter is used
2235                         for result publication in the study. Otherwise, if automatic
2236                         publication is switched on, default value is used for result name.
2237
2238             Returns:
2239                 New GEOM.GEOM_Object, containing the created circle.
2240             """
2241             # Example: see GEOM_example6.py
2242             anObj = self.CurvesOp.MakeCircleCenter2Pnt(thePnt1, thePnt2, thePnt3)
2243             RaiseIfFailed("MakeCircleCenter2Pnt", self.CurvesOp)
2244             self._autoPublish(anObj, theName, "circle")
2245             return anObj
2246
2247         ## Create an ellipse with given center, normal vector and radiuses.
2248         #  @param thePnt Ellipse center.
2249         #  @param theVec Vector, normal to the plane of the ellipse.
2250         #  @param theRMajor Major ellipse radius.
2251         #  @param theRMinor Minor ellipse radius.
2252         #  @param theVecMaj Vector, direction of the ellipse's main axis.
2253         #  @param theName Object name; when specified, this parameter is used
2254         #         for result publication in the study. Otherwise, if automatic
2255         #         publication is switched on, default value is used for result name.
2256         #
2257         #  @return New GEOM.GEOM_Object, containing the created ellipse.
2258         #
2259         #  @ref tui_creation_ellipse "Example"
2260         @ManageTransactions("CurvesOp")
2261         def MakeEllipse(self, thePnt, theVec, theRMajor, theRMinor, theVecMaj=None, theName=None):
2262             """
2263             Create an ellipse with given center, normal vector and radiuses.
2264
2265             Parameters:
2266                 thePnt Ellipse center.
2267                 theVec Vector, normal to the plane of the ellipse.
2268                 theRMajor Major ellipse radius.
2269                 theRMinor Minor ellipse radius.
2270                 theVecMaj Vector, direction of the ellipse's main axis.
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 ellipse.
2277             """
2278             # Example: see GEOM_TestAll.py
2279             theRMajor, theRMinor, Parameters = ParseParameters(theRMajor, theRMinor)
2280             if theVecMaj is not None:
2281                 anObj = self.CurvesOp.MakeEllipseVec(thePnt, theVec, theRMajor, theRMinor, theVecMaj)
2282             else:
2283                 anObj = self.CurvesOp.MakeEllipse(thePnt, theVec, theRMajor, theRMinor)
2284                 pass
2285             RaiseIfFailed("MakeEllipse", self.CurvesOp)
2286             anObj.SetParameters(Parameters)
2287             self._autoPublish(anObj, theName, "ellipse")
2288             return anObj
2289
2290         ## Create an ellipse with given radiuses.
2291         #  Center of the ellipse will be in the origin of global
2292         #  coordinate system and normal vector will be codirected with Z axis
2293         #  @param theRMajor Major ellipse radius.
2294         #  @param theRMinor Minor ellipse radius.
2295         #  @param theName Object name; when specified, this parameter is used
2296         #         for result publication in the study. Otherwise, if automatic
2297         #         publication is switched on, default value is used for result name.
2298         #
2299         #  @return New GEOM.GEOM_Object, containing the created ellipse.
2300         @ManageTransactions("CurvesOp")
2301         def MakeEllipseRR(self, theRMajor, theRMinor, theName=None):
2302             """
2303             Create an ellipse with given radiuses.
2304             Center of the ellipse will be in the origin of global
2305             coordinate system and normal vector will be codirected with Z axis
2306
2307             Parameters:
2308                 theRMajor Major ellipse radius.
2309                 theRMinor Minor ellipse radius.
2310                 theName Object name; when specified, this parameter is used
2311                         for result publication in the study. Otherwise, if automatic
2312                         publication is switched on, default value is used for result name.
2313
2314             Returns:
2315             New GEOM.GEOM_Object, containing the created ellipse.
2316             """
2317             anObj = self.CurvesOp.MakeEllipse(None, None, theRMajor, theRMinor)
2318             RaiseIfFailed("MakeEllipse", self.CurvesOp)
2319             self._autoPublish(anObj, theName, "ellipse")
2320             return anObj
2321
2322         ## Create a polyline on the set of points.
2323         #  @param thePoints Sequence of points for the polyline.
2324         #  @param theIsClosed If True, build a closed wire.
2325         #  @param theName Object name; when specified, this parameter is used
2326         #         for result publication in the study. Otherwise, if automatic
2327         #         publication is switched on, default value is used for result name.
2328         #
2329         #  @return New GEOM.GEOM_Object, containing the created polyline.
2330         #
2331         #  @ref tui_creation_curve "Example"
2332         @ManageTransactions("CurvesOp")
2333         def MakePolyline(self, thePoints, theIsClosed=False, theName=None):
2334             """
2335             Create a polyline on the set of points.
2336
2337             Parameters:
2338                 thePoints Sequence of points for the polyline.
2339                 theIsClosed If True, build a closed wire.
2340                 theName Object name; when specified, this parameter is used
2341                         for result publication in the study. Otherwise, if automatic
2342                         publication is switched on, default value is used for result name.
2343
2344             Returns:
2345                 New GEOM.GEOM_Object, containing the created polyline.
2346             """
2347             # Example: see GEOM_TestAll.py
2348             anObj = self.CurvesOp.MakePolyline(thePoints, theIsClosed)
2349             RaiseIfFailed("MakePolyline", self.CurvesOp)
2350             self._autoPublish(anObj, theName, "polyline")
2351             return anObj
2352
2353         ## Create bezier curve on the set of points.
2354         #  @param thePoints Sequence of points for the bezier curve.
2355         #  @param theIsClosed If True, build a closed curve.
2356         #  @param theName Object name; when specified, this parameter is used
2357         #         for result publication in the study. Otherwise, if automatic
2358         #         publication is switched on, default value is used for result name.
2359         #
2360         #  @return New GEOM.GEOM_Object, containing the created bezier curve.
2361         #
2362         #  @ref tui_creation_curve "Example"
2363         @ManageTransactions("CurvesOp")
2364         def MakeBezier(self, thePoints, theIsClosed=False, theName=None):
2365             """
2366             Create bezier curve on the set of points.
2367
2368             Parameters:
2369                 thePoints Sequence of points for the bezier curve.
2370                 theIsClosed If True, build a closed curve.
2371                 theName Object name; when specified, this parameter is used
2372                         for result publication in the study. Otherwise, if automatic
2373                         publication is switched on, default value is used for result name.
2374
2375             Returns:
2376                 New GEOM.GEOM_Object, containing the created bezier curve.
2377             """
2378             # Example: see GEOM_TestAll.py
2379             anObj = self.CurvesOp.MakeSplineBezier(thePoints, theIsClosed)
2380             RaiseIfFailed("MakeSplineBezier", self.CurvesOp)
2381             self._autoPublish(anObj, theName, "bezier")
2382             return anObj
2383
2384         ## Create B-Spline curve on the set of points.
2385         #  @param thePoints Sequence of points for the B-Spline curve.
2386         #  @param theIsClosed If True, build a closed curve.
2387         #  @param theDoReordering If TRUE, the algo does not follow the order of
2388         #                         \a thePoints but searches for the closest vertex.
2389         #  @param theName Object name; when specified, this parameter is used
2390         #         for result publication in the study. Otherwise, if automatic
2391         #         publication is switched on, default value is used for result name.
2392         #
2393         #  @return New GEOM.GEOM_Object, containing the created B-Spline curve.
2394         #
2395         #  @ref tui_creation_curve "Example"
2396         @ManageTransactions("CurvesOp")
2397         def MakeInterpol(self, thePoints, theIsClosed=False, theDoReordering=False, theName=None):
2398             """
2399             Create B-Spline curve on the set of points.
2400
2401             Parameters:
2402                 thePoints Sequence of points for the B-Spline curve.
2403                 theIsClosed If True, build a closed curve.
2404                 theDoReordering If True, the algo does not follow the order of
2405                                 thePoints but searches for the closest vertex.
2406                 theName Object name; when specified, this parameter is used
2407                         for result publication in the study. Otherwise, if automatic
2408                         publication is switched on, default value is used for result name.
2409
2410             Returns:
2411                 New GEOM.GEOM_Object, containing the created B-Spline curve.
2412             """
2413             # Example: see GEOM_TestAll.py
2414             anObj = self.CurvesOp.MakeSplineInterpolation(thePoints, theIsClosed, theDoReordering)
2415             RaiseIfFailed("MakeInterpol", self.CurvesOp)
2416             self._autoPublish(anObj, theName, "bspline")
2417             return anObj
2418
2419         ## Create B-Spline curve on the set of points.
2420         #  @param thePoints Sequence of points for the B-Spline curve.
2421         #  @param theFirstVec Vector object, defining the curve direction at its first point.
2422         #  @param theLastVec Vector object, defining the curve direction at its last point.
2423         #  @param theName Object name; when specified, this parameter is used
2424         #         for result publication in the study. Otherwise, if automatic
2425         #         publication is switched on, default value is used for result name.
2426         #
2427         #  @return New GEOM.GEOM_Object, containing the created B-Spline curve.
2428         #
2429         #  @ref tui_creation_curve "Example"
2430         @ManageTransactions("CurvesOp")
2431         def MakeInterpolWithTangents(self, thePoints, theFirstVec, theLastVec, theName=None):
2432             """
2433             Create B-Spline curve on the set of points.
2434
2435             Parameters:
2436                 thePoints Sequence of points for the B-Spline curve.
2437                 theFirstVec Vector object, defining the curve direction at its first point.
2438                 theLastVec Vector object, defining the curve direction at its last point.
2439                 theName Object name; when specified, this parameter is used
2440                         for result publication in the study. Otherwise, if automatic
2441                         publication is switched on, default value is used for result name.
2442
2443             Returns:
2444                 New GEOM.GEOM_Object, containing the created B-Spline curve.
2445             """
2446             # Example: see GEOM_TestAll.py
2447             anObj = self.CurvesOp.MakeSplineInterpolWithTangents(thePoints, theFirstVec, theLastVec)
2448             RaiseIfFailed("MakeInterpolWithTangents", self.CurvesOp)
2449             self._autoPublish(anObj, theName, "bspline")
2450             return anObj
2451
2452         ## Creates a curve using the parametric definition of the basic points.
2453         #  @param thexExpr parametric equation of the coordinates X.
2454         #  @param theyExpr parametric equation of the coordinates Y.
2455         #  @param thezExpr parametric equation of the coordinates Z.
2456         #  @param theParamMin the minimal value of the parameter.
2457         #  @param theParamMax the maximum value of the parameter.
2458         #  @param theParamStep the number of steps if theNewMethod = True, else step value of the parameter.
2459         #  @param theCurveType the type of the curve,
2460         #         one of GEOM.Polyline, GEOM.Bezier, GEOM.Interpolation.
2461         #  @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.
2462         #  @param theName Object name; when specified, this parameter is used
2463         #         for result publication in the study. Otherwise, if automatic
2464         #         publication is switched on, default value is used for result name.
2465         #
2466         #  @return New GEOM.GEOM_Object, containing the created curve.
2467         #
2468         #  @ref tui_creation_curve "Example"
2469         @ManageTransactions("CurvesOp")
2470         def MakeCurveParametric(self, thexExpr, theyExpr, thezExpr,
2471                                 theParamMin, theParamMax, theParamStep, theCurveType, theNewMethod=False, theName=None ):
2472             """
2473             Creates a curve using the parametric definition of the basic points.
2474
2475             Parameters:
2476                 thexExpr parametric equation of the coordinates X.
2477                 theyExpr parametric equation of the coordinates Y.
2478                 thezExpr parametric equation of the coordinates Z.
2479                 theParamMin the minimal value of the parameter.
2480                 theParamMax the maximum value of the parameter.
2481                 theParamStep the number of steps if theNewMethod = True, else step value of the parameter.
2482                 theCurveType the type of the curve,
2483                              one of GEOM.Polyline, GEOM.Bezier, GEOM.Interpolation.
2484                 theNewMethod flag for switching to the new method if the flag is set to false a deprecated
2485                              method is used which can lead to a bug.
2486                 theName Object name; when specified, this parameter is used
2487                         for result publication in the study. Otherwise, if automatic
2488                         publication is switched on, default value is used for result name.
2489
2490             Returns:
2491                 New GEOM.GEOM_Object, containing the created curve.
2492             """
2493             theParamMin,theParamMax,theParamStep,Parameters = ParseParameters(theParamMin,theParamMax,theParamStep)
2494             if theNewMethod:
2495               anObj = self.CurvesOp.MakeCurveParametricNew(thexExpr,theyExpr,thezExpr,theParamMin,theParamMax,theParamStep,theCurveType)
2496             else:
2497               anObj = self.CurvesOp.MakeCurveParametric(thexExpr,theyExpr,thezExpr,theParamMin,theParamMax,theParamStep,theCurveType)
2498             RaiseIfFailed("MakeCurveParametric", self.CurvesOp)
2499             anObj.SetParameters(Parameters)
2500             self._autoPublish(anObj, theName, "curve")
2501             return anObj
2502
2503         ## Create an isoline curve on a face.
2504         #  @param theFace the face for which an isoline is created.
2505         #  @param IsUIsoline True for U-isoline creation; False for V-isoline
2506         #         creation.
2507         #  @param theParameter the U parameter for U-isoline or V parameter
2508         #         for V-isoline.
2509         #  @param theName Object name; when specified, this parameter is used
2510         #         for result publication in the study. Otherwise, if automatic
2511         #         publication is switched on, default value is used for result name.
2512         #
2513         #  @return New GEOM.GEOM_Object, containing the created isoline edge or
2514         #          a compound of edges.
2515         #
2516         #  @ref tui_creation_curve "Example"
2517         @ManageTransactions("CurvesOp")
2518         def MakeIsoline(self, theFace, IsUIsoline, theParameter, theName=None):
2519             """
2520             Create an isoline curve on a face.
2521
2522             Parameters:
2523                 theFace the face for which an isoline is created.
2524                 IsUIsoline True for U-isoline creation; False for V-isoline
2525                            creation.
2526                 theParameter the U parameter for U-isoline or V parameter
2527                              for V-isoline.
2528                 theName Object name; when specified, this parameter is used
2529                         for result publication in the study. Otherwise, if automatic
2530                         publication is switched on, default value is used for result name.
2531
2532             Returns:
2533                 New GEOM.GEOM_Object, containing the created isoline edge or a
2534                 compound of edges.
2535             """
2536             # Example: see GEOM_TestAll.py
2537             anObj = self.CurvesOp.MakeIsoline(theFace, IsUIsoline, theParameter)
2538             RaiseIfFailed("MakeIsoline", self.CurvesOp)
2539             if IsUIsoline:
2540                 self._autoPublish(anObj, theName, "U-Isoline")
2541             else:
2542                 self._autoPublish(anObj, theName, "V-Isoline")
2543             return anObj
2544
2545         # end of l4_curves
2546         ## @}
2547
2548         ## @addtogroup l3_sketcher
2549         ## @{
2550
2551         ## Create a sketcher (wire or face), following the textual description,
2552         #  passed through <VAR>theCommand</VAR> argument. \n
2553         #  Edges of the resulting wire or face will be arcs of circles and/or linear segments. \n
2554         #  Format of the description string have to be the following:
2555         #
2556         #  "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"
2557         #
2558         #  Where:
2559         #  - x1, y1 are coordinates of the first sketcher point (zero by default),
2560         #  - CMD is one of
2561         #     - "R angle" : Set the direction by angle
2562         #     - "D dx dy" : Set the direction by DX & DY
2563         #     .
2564         #       \n
2565         #     - "TT x y" : Create segment by point at X & Y
2566         #     - "T dx dy" : Create segment by point with DX & DY
2567         #     - "L length" : Create segment by direction & Length
2568         #     - "IX x" : Create segment by direction & Intersect. X
2569         #     - "IY y" : Create segment by direction & Intersect. Y
2570         #     .
2571         #       \n
2572         #     - "C radius length" : Create arc by direction, radius and length(in degree)
2573         #     - "AA x y": Create arc by point at X & Y
2574         #     - "A dx dy" : Create arc by point with DX & DY
2575         #     - "UU x y radius flag1": Create arc by point at X & Y with given radiUs
2576         #     - "U dx dy radius flag1" : Create arc by point with DX & DY with given radiUs
2577         #     - "EE x y xc yc flag1 flag2": Create arc by point at X & Y with given cEnter coordinates
2578         #     - "E dx dy dxc dyc radius flag1 flag2" : Create arc by point with DX & DY with given cEnter coordinates
2579         #     .
2580         #       \n
2581         #     - "WW" : Close Wire (to finish)
2582         #     - "WF" : Close Wire and build face (to finish)
2583         #     .
2584         #        \n
2585         #  - Flag1 (= reverse) is 0 or 2 ...
2586         #     - if 0 the drawn arc is the one of lower angle (< Pi)
2587         #     - if 2 the drawn arc ius the one of greater angle (> Pi)
2588         #     .
2589         #        \n
2590         #  - Flag2 (= control tolerance) is 0 or 1 ...
2591         #     - if 0 the specified end point can be at a distance of the arc greater than the tolerance (10^-7)
2592         #     - if 1 the wire is built only if the end point is on the arc
2593         #       with a tolerance of 10^-7 on the distance else the creation fails
2594         #
2595         #  @param theCommand String, defining the sketcher in local
2596         #                    coordinates of the working plane.
2597         #  @param theWorkingPlane Nine double values, defining origin,
2598         #                         OZ and OX directions of the working plane.
2599         #  @param theName Object name; when specified, this parameter is used
2600         #         for result publication in the study. Otherwise, if automatic
2601         #         publication is switched on, default value is used for result name.
2602         #
2603         #  @return New GEOM.GEOM_Object, containing the created wire.
2604         #
2605         #  @ref tui_sketcher_page "Example"
2606         @ManageTransactions("CurvesOp")
2607         def MakeSketcher(self, theCommand, theWorkingPlane = [0,0,0, 0,0,1, 1,0,0], theName=None):
2608             """
2609             Create a sketcher (wire or face), following the textual description, passed
2610             through theCommand argument.
2611             Edges of the resulting wire or face will be arcs of circles and/or linear segments.
2612             Format of the description string have to be the following:
2613                 "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"
2614             Where:
2615             - x1, y1 are coordinates of the first sketcher point (zero by default),
2616             - CMD is one of
2617                - "R angle" : Set the direction by angle
2618                - "D dx dy" : Set the direction by DX & DY
2619
2620                - "TT x y" : Create segment by point at X & Y
2621                - "T dx dy" : Create segment by point with DX & DY
2622                - "L length" : Create segment by direction & Length
2623                - "IX x" : Create segment by direction & Intersect. X
2624                - "IY y" : Create segment by direction & Intersect. Y
2625
2626                - "C radius length" : Create arc by direction, radius and length(in degree)
2627                - "AA x y": Create arc by point at X & Y
2628                - "A dx dy" : Create arc by point with DX & DY
2629                - "UU x y radius flag1": Create arc by point at X & Y with given radiUs
2630                - "U dx dy radius flag1" : Create arc by point with DX & DY with given radiUs
2631                - "EE x y xc yc flag1 flag2": Create arc by point at X & Y with given cEnter coordinates
2632                - "E dx dy dxc dyc radius flag1 flag2" : Create arc by point with DX & DY with given cEnter coordinates
2633
2634                - "WW" : Close Wire (to finish)
2635                - "WF" : Close Wire and build face (to finish)
2636
2637             - Flag1 (= reverse) is 0 or 2 ...
2638                - if 0 the drawn arc is the one of lower angle (< Pi)
2639                - if 2 the drawn arc ius the one of greater angle (> Pi)
2640
2641             - Flag2 (= control tolerance) is 0 or 1 ...
2642                - if 0 the specified end point can be at a distance of the arc greater than the tolerance (10^-7)
2643                - if 1 the wire is built only if the end point is on the arc
2644                  with a tolerance of 10^-7 on the distance else the creation fails
2645
2646             Parameters:
2647                 theCommand String, defining the sketcher in local
2648                            coordinates of the working plane.
2649                 theWorkingPlane Nine double values, defining origin,
2650                                 OZ and OX directions of the working plane.
2651                 theName Object name; when specified, this parameter is used
2652                         for result publication in the study. Otherwise, if automatic
2653                         publication is switched on, default value is used for result name.
2654
2655             Returns:
2656                 New GEOM.GEOM_Object, containing the created wire.
2657             """
2658             # Example: see GEOM_TestAll.py
2659             theCommand,Parameters = ParseSketcherCommand(theCommand)
2660             anObj = self.CurvesOp.MakeSketcher(theCommand, theWorkingPlane)
2661             RaiseIfFailed("MakeSketcher", self.CurvesOp)
2662             anObj.SetParameters(Parameters)
2663             self._autoPublish(anObj, theName, "wire")
2664             return anObj
2665
2666         ## Create a sketcher (wire or face), following the textual description,
2667         #  passed through <VAR>theCommand</VAR> argument. \n
2668         #  For format of the description string see MakeSketcher() method.\n
2669         #  @param theCommand String, defining the sketcher in local
2670         #                    coordinates of the working plane.
2671         #  @param theWorkingPlane Planar Face or LCS(Marker) of the working plane.
2672         #  @param theName Object name; when specified, this parameter is used
2673         #         for result publication in the study. Otherwise, if automatic
2674         #         publication is switched on, default value is used for result name.
2675         #
2676         #  @return New GEOM.GEOM_Object, containing the created wire.
2677         #
2678         #  @ref tui_sketcher_page "Example"
2679         @ManageTransactions("CurvesOp")
2680         def MakeSketcherOnPlane(self, theCommand, theWorkingPlane, theName=None):
2681             """
2682             Create a sketcher (wire or face), following the textual description,
2683             passed through theCommand argument.
2684             For format of the description string see geompy.MakeSketcher() method.
2685
2686             Parameters:
2687                 theCommand String, defining the sketcher in local
2688                            coordinates of the working plane.
2689                 theWorkingPlane Planar Face or LCS(Marker) of the working plane.
2690                 theName Object name; when specified, this parameter is used
2691                         for result publication in the study. Otherwise, if automatic
2692                         publication is switched on, default value is used for result name.
2693
2694             Returns:
2695                 New GEOM.GEOM_Object, containing the created wire.
2696             """
2697             theCommand,Parameters = ParseSketcherCommand(theCommand)
2698             anObj = self.CurvesOp.MakeSketcherOnPlane(theCommand, theWorkingPlane)
2699             RaiseIfFailed("MakeSketcherOnPlane", self.CurvesOp)
2700             anObj.SetParameters(Parameters)
2701             self._autoPublish(anObj, theName, "wire")
2702             return anObj
2703
2704         ## Obtain a 2D sketcher interface
2705         #  @return An instance of @ref gsketcher.Sketcher2D "Sketcher2D" interface
2706         def Sketcher2D (self):
2707             """
2708             Obtain a 2D sketcher interface.
2709
2710             Example of usage:
2711                sk = geompy.Sketcher2D()
2712                sk.addPoint(20, 20)
2713                sk.addSegmentRelative(15, 70)
2714                sk.addSegmentPerpY(50)
2715                sk.addArcRadiusRelative(25, 15, 14.5, 0)
2716                sk.addArcCenterAbsolute(1, 1, 50, 50, 0, 0)
2717                sk.addArcDirectionRadiusLength(20, 20, 101, 162.13)
2718                sk.close()
2719                Sketch_1 = sk.wire(geomObj_1)
2720             """
2721             sk = Sketcher2D (self)
2722             return sk
2723
2724         ## Create a sketcher wire, following the numerical description,
2725         #  passed through <VAR>theCoordinates</VAR> argument. \n
2726         #  @param theCoordinates double values, defining points to create a wire,
2727         #                                                      passing from it.
2728         #  @param theName Object name; when specified, this parameter is used
2729         #         for result publication in the study. Otherwise, if automatic
2730         #         publication is switched on, default value is used for result name.
2731         #
2732         #  @return New GEOM.GEOM_Object, containing the created wire.
2733         #
2734         #  @ref tui_3dsketcher_page "Example"
2735         @ManageTransactions("CurvesOp")
2736         def Make3DSketcher(self, theCoordinates, theName=None):
2737             """
2738             Create a sketcher wire, following the numerical description,
2739             passed through theCoordinates argument.
2740
2741             Parameters:
2742                 theCoordinates double values, defining points to create a wire,
2743                                passing from it.
2744                 theName Object name; when specified, this parameter is used
2745                         for result publication in the study. Otherwise, if automatic
2746                         publication is switched on, default value is used for result name.
2747
2748             Returns:
2749                 New GEOM_Object, containing the created wire.
2750             """
2751             theCoordinates,Parameters = ParseParameters(theCoordinates)
2752             anObj = self.CurvesOp.Make3DSketcher(theCoordinates)
2753             RaiseIfFailed("Make3DSketcher", self.CurvesOp)
2754             anObj.SetParameters(Parameters)
2755             self._autoPublish(anObj, theName, "wire")
2756             return anObj
2757
2758         ## Obtain a 3D sketcher interface
2759         #  @return An instance of @ref gsketcher.Sketcher3D "Sketcher3D" interface
2760         #
2761         #  @ref tui_3dsketcher_page "Example"
2762         def Sketcher3D (self):
2763             """
2764             Obtain a 3D sketcher interface.
2765
2766             Example of usage:
2767                 sk = geompy.Sketcher3D()
2768                 sk.addPointsAbsolute(0,0,0, 70,0,0)
2769                 sk.addPointsRelative(0, 0, 130)
2770                 sk.addPointAnglesLength("OXY", 50, 0, 100)
2771                 sk.addPointAnglesLength("OXZ", 30, 80, 130)
2772                 sk.close()
2773                 a3D_Sketcher_1 = sk.wire()
2774             """
2775             sk = Sketcher3D (self)
2776             return sk
2777
2778         ## Obtain a 2D polyline creation interface
2779         #  @return An instance of @ref gsketcher.Polyline2D "Polyline2D" interface
2780         #
2781         #  @ref tui_3dsketcher_page "Example"
2782         def Polyline2D (self):
2783             """
2784             Obtain a 2D polyline creation interface.
2785
2786             Example of usage:
2787                 pl = geompy.Polyline2D()
2788                 pl.addSection("section 1", GEOM.Polyline, True)
2789                 pl.addPoints(0, 0, 10, 0, 10, 10)
2790                 pl.addSection("section 2", GEOM.Interpolation, False)
2791                 pl.addPoints(20, 0, 30, 0, 30, 10)
2792                 resultObj = pl.result(WorkingPlane)
2793             """
2794             pl = Polyline2D (self)
2795             return pl
2796
2797         # end of l3_sketcher
2798         ## @}
2799
2800         ## @addtogroup l3_3d_primitives
2801         ## @{
2802
2803         ## Create a box by coordinates of two opposite vertices.
2804         #
2805         #  @param x1,y1,z1 double values, defining first point it.
2806         #  @param x2,y2,z2 double values, defining first point it.
2807         #  @param theName Object name; when specified, this parameter is used
2808         #         for result publication in the study. Otherwise, if automatic
2809         #         publication is switched on, default value is used for result name.
2810         #
2811         #  @return New GEOM.GEOM_Object, containing the created box.
2812         #
2813         #  @ref tui_creation_box "Example"
2814         def MakeBox(self, x1, y1, z1, x2, y2, z2, theName=None):
2815             """
2816             Create a box by coordinates of two opposite vertices.
2817
2818             Parameters:
2819                 x1,y1,z1 double values, defining first point.
2820                 x2,y2,z2 double values, defining second point.
2821                 theName Object name; when specified, this parameter is used
2822                         for result publication in the study. Otherwise, if automatic
2823                         publication is switched on, default value is used for result name.
2824
2825             Returns:
2826                 New GEOM.GEOM_Object, containing the created box.
2827             """
2828             # Example: see GEOM_TestAll.py
2829             pnt1 = self.MakeVertex(x1,y1,z1)
2830             pnt2 = self.MakeVertex(x2,y2,z2)
2831             # note: auto-publishing is done in self.MakeBoxTwoPnt()
2832             return self.MakeBoxTwoPnt(pnt1, pnt2, theName)
2833
2834         ## Create a box with specified dimensions along the coordinate axes
2835         #  and with edges, parallel to the coordinate axes.
2836         #  Center of the box will be at point (DX/2, DY/2, DZ/2).
2837         #  @param theDX Length of Box edges, parallel to OX axis.
2838         #  @param theDY Length of Box edges, parallel to OY axis.
2839         #  @param theDZ Length of Box edges, parallel to OZ axis.
2840         #  @param theName Object name; when specified, this parameter is used
2841         #         for result publication in the study. Otherwise, if automatic
2842         #         publication is switched on, default value is used for result name.
2843         #
2844         #  @return New GEOM.GEOM_Object, containing the created box.
2845         #
2846         #  @ref tui_creation_box "Example"
2847         @ManageTransactions("PrimOp")
2848         def MakeBoxDXDYDZ(self, theDX, theDY, theDZ, theName=None):
2849             """
2850             Create a box with specified dimensions along the coordinate axes
2851             and with edges, parallel to the coordinate axes.
2852             Center of the box will be at point (DX/2, DY/2, DZ/2).
2853
2854             Parameters:
2855                 theDX Length of Box edges, parallel to OX axis.
2856                 theDY Length of Box edges, parallel to OY axis.
2857                 theDZ Length of Box edges, parallel to OZ axis.
2858                 theName Object name; when specified, this parameter is used
2859                         for result publication in the study. Otherwise, if automatic
2860                         publication is switched on, default value is used for result name.
2861
2862             Returns:
2863                 New GEOM.GEOM_Object, containing the created box.
2864             """
2865             # Example: see GEOM_TestAll.py
2866             theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
2867             anObj = self.PrimOp.MakeBoxDXDYDZ(theDX, theDY, theDZ)
2868             RaiseIfFailed("MakeBoxDXDYDZ", self.PrimOp)
2869             anObj.SetParameters(Parameters)
2870             self._autoPublish(anObj, theName, "box")
2871             return anObj
2872
2873         ## Create a box with two specified opposite vertices,
2874         #  and with edges, parallel to the coordinate axes
2875         #  @param thePnt1 First of two opposite vertices.
2876         #  @param thePnt2 Second of two opposite vertices.
2877         #  @param theName Object name; when specified, this parameter is used
2878         #         for result publication in the study. Otherwise, if automatic
2879         #         publication is switched on, default value is used for result name.
2880         #
2881         #  @return New GEOM.GEOM_Object, containing the created box.
2882         #
2883         #  @ref tui_creation_box "Example"
2884         @ManageTransactions("PrimOp")
2885         def MakeBoxTwoPnt(self, thePnt1, thePnt2, theName=None):
2886             """
2887             Create a box with two specified opposite vertices,
2888             and with edges, parallel to the coordinate axes
2889
2890             Parameters:
2891                 thePnt1 First of two opposite vertices.
2892                 thePnt2 Second of two opposite vertices.
2893                 theName Object name; when specified, this parameter is used
2894                         for result publication in the study. Otherwise, if automatic
2895                         publication is switched on, default value is used for result name.
2896
2897             Returns:
2898                 New GEOM.GEOM_Object, containing the created box.
2899             """
2900             # Example: see GEOM_TestAll.py
2901             anObj = self.PrimOp.MakeBoxTwoPnt(thePnt1, thePnt2)
2902             RaiseIfFailed("MakeBoxTwoPnt", self.PrimOp)
2903             self._autoPublish(anObj, theName, "box")
2904             return anObj
2905
2906         ## Create a face with specified dimensions with edges parallel to coordinate axes.
2907         #  @param theH height of Face.
2908         #  @param theW width of Face.
2909         #  @param theOrientation face orientation: 1-OXY, 2-OYZ, 3-OZX
2910         #  @param theName Object name; when specified, this parameter is used
2911         #         for result publication in the study. Otherwise, if automatic
2912         #         publication is switched on, default value is used for result name.
2913         #
2914         #  @return New GEOM.GEOM_Object, containing the created face.
2915         #
2916         #  @ref tui_creation_face "Example"
2917         @ManageTransactions("PrimOp")
2918         def MakeFaceHW(self, theH, theW, theOrientation, theName=None):
2919             """
2920             Create a face with specified dimensions with edges parallel to coordinate axes.
2921
2922             Parameters:
2923                 theH height of Face.
2924                 theW width of Face.
2925                 theOrientation face orientation: 1-OXY, 2-OYZ, 3-OZX
2926                 theName Object name; when specified, this parameter is used
2927                         for result publication in the study. Otherwise, if automatic
2928                         publication is switched on, default value is used for result name.
2929
2930             Returns:
2931                 New GEOM.GEOM_Object, containing the created face.
2932             """
2933             # Example: see GEOM_TestAll.py
2934             theH,theW,Parameters = ParseParameters(theH, theW)
2935             anObj = self.PrimOp.MakeFaceHW(theH, theW, theOrientation)
2936             RaiseIfFailed("MakeFaceHW", self.PrimOp)
2937             anObj.SetParameters(Parameters)
2938             self._autoPublish(anObj, theName, "rectangle")
2939             return anObj
2940
2941         ## Create a face from another plane and two sizes,
2942         #  vertical size and horisontal size.
2943         #  @param theObj   Normale vector to the creating face or
2944         #  the face object.
2945         #  @param theH     Height (vertical size).
2946         #  @param theW     Width (horisontal size).
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 face.
2952         #
2953         #  @ref tui_creation_face "Example"
2954         @ManageTransactions("PrimOp")
2955         def MakeFaceObjHW(self, theObj, theH, theW, theName=None):
2956             """
2957             Create a face from another plane and two sizes,
2958             vertical size and horisontal size.
2959
2960             Parameters:
2961                 theObj   Normale vector to the creating face or
2962                          the face object.
2963                 theH     Height (vertical size).
2964                 theW     Width (horisontal size).
2965                 theName Object name; when specified, this parameter is used
2966                         for result publication in the study. Otherwise, if automatic
2967                         publication is switched on, default value is used for result name.
2968
2969             Returns:
2970                 New GEOM_Object, containing the created face.
2971             """
2972             # Example: see GEOM_TestAll.py
2973             theH,theW,Parameters = ParseParameters(theH, theW)
2974             anObj = self.PrimOp.MakeFaceObjHW(theObj, theH, theW)
2975             RaiseIfFailed("MakeFaceObjHW", self.PrimOp)
2976             anObj.SetParameters(Parameters)
2977             self._autoPublish(anObj, theName, "rectangle")
2978             return anObj
2979
2980         ## Create a disk with given center, normal vector and radius.
2981         #  @param thePnt Disk center.
2982         #  @param theVec Vector, normal to the plane of the disk.
2983         #  @param theR Disk radius.
2984         #  @param theName Object name; when specified, this parameter is used
2985         #         for result publication in the study. Otherwise, if automatic
2986         #         publication is switched on, default value is used for result name.
2987         #
2988         #  @return New GEOM.GEOM_Object, containing the created disk.
2989         #
2990         #  @ref tui_creation_disk "Example"
2991         @ManageTransactions("PrimOp")
2992         def MakeDiskPntVecR(self, thePnt, theVec, theR, theName=None):
2993             """
2994             Create a disk with given center, normal vector and radius.
2995
2996             Parameters:
2997                 thePnt Disk center.
2998                 theVec Vector, normal to the plane of the disk.
2999                 theR Disk radius.
3000                 theName Object name; when specified, this parameter is used
3001                         for result publication in the study. Otherwise, if automatic
3002                         publication is switched on, default value is used for result name.
3003
3004             Returns:
3005                 New GEOM.GEOM_Object, containing the created disk.
3006             """
3007             # Example: see GEOM_TestAll.py
3008             theR,Parameters = ParseParameters(theR)
3009             anObj = self.PrimOp.MakeDiskPntVecR(thePnt, theVec, theR)
3010             RaiseIfFailed("MakeDiskPntVecR", self.PrimOp)
3011             anObj.SetParameters(Parameters)
3012             self._autoPublish(anObj, theName, "disk")
3013             return anObj
3014
3015         ## Create a disk, passing through three given points
3016         #  @param thePnt1,thePnt2,thePnt3 Points, defining the disk.
3017         #  @param theName Object name; when specified, this parameter is used
3018         #         for result publication in the study. Otherwise, if automatic
3019         #         publication is switched on, default value is used for result name.
3020         #
3021         #  @return New GEOM.GEOM_Object, containing the created disk.
3022         #
3023         #  @ref tui_creation_disk "Example"
3024         @ManageTransactions("PrimOp")
3025         def MakeDiskThreePnt(self, thePnt1, thePnt2, thePnt3, theName=None):
3026             """
3027             Create a disk, passing through three given points
3028
3029             Parameters:
3030                 thePnt1,thePnt2,thePnt3 Points, defining the disk.
3031                 theName Object name; when specified, this parameter is used
3032                         for result publication in the study. Otherwise, if automatic
3033                         publication is switched on, default value is used for result name.
3034
3035             Returns:
3036                 New GEOM.GEOM_Object, containing the created disk.
3037             """
3038             # Example: see GEOM_TestAll.py
3039             anObj = self.PrimOp.MakeDiskThreePnt(thePnt1, thePnt2, thePnt3)
3040             RaiseIfFailed("MakeDiskThreePnt", self.PrimOp)
3041             self._autoPublish(anObj, theName, "disk")
3042             return anObj
3043
3044         ## Create a disk with specified dimensions along OX-OY coordinate axes.
3045         #  @param theR Radius of Face.
3046         #  @param theOrientation set the orientation belong axis OXY or OYZ or OZX
3047         #  @param theName Object name; when specified, this parameter is used
3048         #         for result publication in the study. Otherwise, if automatic
3049         #         publication is switched on, default value is used for result name.
3050         #
3051         #  @return New GEOM.GEOM_Object, containing the created disk.
3052         #
3053         #  @ref tui_creation_face "Example"
3054         @ManageTransactions("PrimOp")
3055         def MakeDiskR(self, theR, theOrientation, theName=None):
3056             """
3057             Create a disk with specified dimensions along OX-OY coordinate axes.
3058
3059             Parameters:
3060                 theR Radius of Face.
3061                 theOrientation set the orientation belong axis OXY or OYZ or OZX
3062                 theName Object name; when specified, this parameter is used
3063                         for result publication in the study. Otherwise, if automatic
3064                         publication is switched on, default value is used for result name.
3065
3066             Returns:
3067                 New GEOM.GEOM_Object, containing the created disk.
3068
3069             Example of usage:
3070                 Disk3 = geompy.MakeDiskR(100., 1)
3071             """
3072             # Example: see GEOM_TestAll.py
3073             theR,Parameters = ParseParameters(theR)
3074             anObj = self.PrimOp.MakeDiskR(theR, theOrientation)
3075             RaiseIfFailed("MakeDiskR", self.PrimOp)
3076             anObj.SetParameters(Parameters)
3077             self._autoPublish(anObj, theName, "disk")
3078             return anObj
3079
3080         ## Create a cylinder with given base point, axis, radius and height.
3081         #  @param thePnt Central point of cylinder base.
3082         #  @param theAxis Cylinder axis.
3083         #  @param theR Cylinder radius.
3084         #  @param theH Cylinder height.
3085         #  @param theName Object name; when specified, this parameter is used
3086         #         for result publication in the study. Otherwise, if automatic
3087         #         publication is switched on, default value is used for result name.
3088         #
3089         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3090         #
3091         #  @ref tui_creation_cylinder "Example"
3092         @ManageTransactions("PrimOp")
3093         def MakeCylinder(self, thePnt, theAxis, theR, theH, theName=None):
3094             """
3095             Create a cylinder with given base point, axis, radius and height.
3096
3097             Parameters:
3098                 thePnt Central point of cylinder base.
3099                 theAxis Cylinder axis.
3100                 theR Cylinder radius.
3101                 theH Cylinder height.
3102                 theName Object name; when specified, this parameter is used
3103                         for result publication in the study. Otherwise, if automatic
3104                         publication is switched on, default value is used for result name.
3105
3106             Returns:
3107                 New GEOM.GEOM_Object, containing the created cylinder.
3108             """
3109             # Example: see GEOM_TestAll.py
3110             theR,theH,Parameters = ParseParameters(theR, theH)
3111             anObj = self.PrimOp.MakeCylinderPntVecRH(thePnt, theAxis, theR, theH)
3112             RaiseIfFailed("MakeCylinderPntVecRH", self.PrimOp)
3113             anObj.SetParameters(Parameters)
3114             self._autoPublish(anObj, theName, "cylinder")
3115             return anObj
3116             
3117         ## Create a portion of cylinder with given base point, axis, radius, height and angle.
3118         #  @param thePnt Central point of cylinder base.
3119         #  @param theAxis Cylinder axis.
3120         #  @param theR Cylinder radius.
3121         #  @param theH Cylinder height.
3122         #  @param theA Cylinder angle in radians.
3123         #  @param theName Object name; when specified, this parameter is used
3124         #         for result publication in the study. Otherwise, if automatic
3125         #         publication is switched on, default value is used for result name.
3126         #
3127         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3128         #
3129         #  @ref tui_creation_cylinder "Example"
3130         @ManageTransactions("PrimOp")
3131         def MakeCylinderA(self, thePnt, theAxis, theR, theH, theA, theName=None):
3132             """
3133             Create a portion of cylinder with given base point, axis, radius, height and angle.
3134
3135             Parameters:
3136                 thePnt Central point of cylinder base.
3137                 theAxis Cylinder axis.
3138                 theR Cylinder radius.
3139                 theH Cylinder height.
3140                 theA Cylinder angle in radians.
3141                 theName Object name; when specified, this parameter is used
3142                         for result publication in the study. Otherwise, if automatic
3143                         publication is switched on, default value is used for result name.
3144
3145             Returns:
3146                 New GEOM.GEOM_Object, containing the created cylinder.
3147             """
3148             # Example: see GEOM_TestAll.py
3149             flag = False
3150             if isinstance(theA,str):
3151                 flag = True
3152             theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
3153             if flag:
3154                 theA = theA*math.pi/180.
3155             if theA<=0. or theA>=2*math.pi:
3156                 raise ValueError("The angle parameter should be strictly between 0 and 2*pi.")
3157             anObj = self.PrimOp.MakeCylinderPntVecRHA(thePnt, theAxis, theR, theH, theA)
3158             RaiseIfFailed("MakeCylinderPntVecRHA", self.PrimOp)
3159             anObj.SetParameters(Parameters)
3160             self._autoPublish(anObj, theName, "cylinder")
3161             return anObj
3162
3163         ## Create a cylinder with given radius and height at
3164         #  the origin of coordinate system. Axis of the cylinder
3165         #  will be collinear to the OZ axis of the coordinate system.
3166         #  @param theR Cylinder radius.
3167         #  @param theH Cylinder height.
3168         #  @param theName Object name; when specified, this parameter is used
3169         #         for result publication in the study. Otherwise, if automatic
3170         #         publication is switched on, default value is used for result name.
3171         #
3172         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3173         #
3174         #  @ref tui_creation_cylinder "Example"
3175         @ManageTransactions("PrimOp")
3176         def MakeCylinderRH(self, theR, theH, theName=None):
3177             """
3178             Create a cylinder with given radius and height at
3179             the origin of coordinate system. Axis of the cylinder
3180             will be collinear to the OZ axis of the coordinate system.
3181
3182             Parameters:
3183                 theR Cylinder radius.
3184                 theH Cylinder height.
3185                 theName Object name; when specified, this parameter is used
3186                         for result publication in the study. Otherwise, if automatic
3187                         publication is switched on, default value is used for result name.
3188
3189             Returns:
3190                 New GEOM.GEOM_Object, containing the created cylinder.
3191             """
3192             # Example: see GEOM_TestAll.py
3193             theR,theH,Parameters = ParseParameters(theR, theH)
3194             anObj = self.PrimOp.MakeCylinderRH(theR, theH)
3195             RaiseIfFailed("MakeCylinderRH", self.PrimOp)
3196             anObj.SetParameters(Parameters)
3197             self._autoPublish(anObj, theName, "cylinder")
3198             return anObj
3199             
3200         ## Create a portion of cylinder with given radius, height and angle at
3201         #  the origin of coordinate system. Axis of the cylinder
3202         #  will be collinear to the OZ axis of the coordinate system.
3203         #  @param theR Cylinder radius.
3204         #  @param theH Cylinder height.
3205         #  @param theA Cylinder angle in radians.
3206         #  @param theName Object name; when specified, this parameter is used
3207         #         for result publication in the study. Otherwise, if automatic
3208         #         publication is switched on, default value is used for result name.
3209         #
3210         #  @return New GEOM.GEOM_Object, containing the created cylinder.
3211         #
3212         #  @ref tui_creation_cylinder "Example"
3213         @ManageTransactions("PrimOp")
3214         def MakeCylinderRHA(self, theR, theH, theA, theName=None):
3215             """
3216             Create a portion of cylinder with given radius, height and angle at
3217             the origin of coordinate system. Axis of the cylinder
3218             will be collinear to the OZ axis of the coordinate system.
3219
3220             Parameters:
3221                 theR Cylinder radius.
3222                 theH Cylinder height.
3223                 theA Cylinder angle in radians.
3224                 theName Object name; when specified, this parameter is used
3225                         for result publication in the study. Otherwise, if automatic
3226                         publication is switched on, default value is used for result name.
3227
3228             Returns:
3229                 New GEOM.GEOM_Object, containing the created cylinder.
3230             """
3231             # Example: see GEOM_TestAll.py
3232             flag = False
3233             if isinstance(theA,str):
3234                 flag = True
3235             theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
3236             if flag:
3237                 theA = theA*math.pi/180.
3238             if theA<=0. or theA>=2*math.pi:
3239                 raise ValueError("The angle parameter should be strictly between 0 and 2*pi.")
3240             anObj = self.PrimOp.MakeCylinderRHA(theR, theH, theA)
3241             RaiseIfFailed("MakeCylinderRHA", self.PrimOp)
3242             anObj.SetParameters(Parameters)
3243             self._autoPublish(anObj, theName, "cylinder")
3244             return anObj
3245
3246         ## Create a sphere with given center and radius.
3247         #  @param thePnt Sphere center.
3248         #  @param theR Sphere radius.
3249         #  @param theName Object name; when specified, this parameter is used
3250         #         for result publication in the study. Otherwise, if automatic
3251         #         publication is switched on, default value is used for result name.
3252         #
3253         #  @return New GEOM.GEOM_Object, containing the created sphere.
3254         #
3255         #  @ref tui_creation_sphere "Example"
3256         @ManageTransactions("PrimOp")
3257         def MakeSpherePntR(self, thePnt, theR, theName=None):
3258             """
3259             Create a sphere with given center and radius.
3260
3261             Parameters:
3262                 thePnt Sphere center.
3263                 theR Sphere radius.
3264                 theName Object name; when specified, this parameter is used
3265                         for result publication in the study. Otherwise, if automatic
3266                         publication is switched on, default value is used for result name.
3267
3268             Returns:
3269                 New GEOM.GEOM_Object, containing the created sphere.
3270             """
3271             # Example: see GEOM_TestAll.py
3272             theR,Parameters = ParseParameters(theR)
3273             anObj = self.PrimOp.MakeSpherePntR(thePnt, theR)
3274             RaiseIfFailed("MakeSpherePntR", self.PrimOp)
3275             anObj.SetParameters(Parameters)
3276             self._autoPublish(anObj, theName, "sphere")
3277             return anObj
3278
3279         ## Create a sphere with given center and radius.
3280         #  @param x,y,z Coordinates of sphere center.
3281         #  @param theR Sphere radius.
3282         #  @param theName Object name; when specified, this parameter is used
3283         #         for result publication in the study. Otherwise, if automatic
3284         #         publication is switched on, default value is used for result name.
3285         #
3286         #  @return New GEOM.GEOM_Object, containing the created sphere.
3287         #
3288         #  @ref tui_creation_sphere "Example"
3289         def MakeSphere(self, x, y, z, theR, theName=None):
3290             """
3291             Create a sphere with given center and radius.
3292
3293             Parameters:
3294                 x,y,z Coordinates of sphere center.
3295                 theR Sphere radius.
3296                 theName Object name; when specified, this parameter is used
3297                         for result publication in the study. Otherwise, if automatic
3298                         publication is switched on, default value is used for result name.
3299
3300             Returns:
3301                 New GEOM.GEOM_Object, containing the created sphere.
3302             """
3303             # Example: see GEOM_TestAll.py
3304             point = self.MakeVertex(x, y, z)
3305             # note: auto-publishing is done in self.MakeSpherePntR()
3306             anObj = self.MakeSpherePntR(point, theR, theName)
3307             return anObj
3308
3309         ## Create a sphere with given radius at the origin of coordinate system.
3310         #  @param theR Sphere radius.
3311         #  @param theName Object name; when specified, this parameter is used
3312         #         for result publication in the study. Otherwise, if automatic
3313         #         publication is switched on, default value is used for result name.
3314         #
3315         #  @return New GEOM.GEOM_Object, containing the created sphere.
3316         #
3317         #  @ref tui_creation_sphere "Example"
3318         @ManageTransactions("PrimOp")
3319         def MakeSphereR(self, theR, theName=None):
3320             """
3321             Create a sphere with given radius at the origin of coordinate system.
3322
3323             Parameters:
3324                 theR Sphere radius.
3325                 theName Object name; when specified, this parameter is used
3326                         for result publication in the study. Otherwise, if automatic
3327                         publication is switched on, default value is used for result name.
3328
3329             Returns:
3330                 New GEOM.GEOM_Object, containing the created sphere.
3331             """
3332             # Example: see GEOM_TestAll.py
3333             theR,Parameters = ParseParameters(theR)
3334             anObj = self.PrimOp.MakeSphereR(theR)
3335             RaiseIfFailed("MakeSphereR", self.PrimOp)
3336             anObj.SetParameters(Parameters)
3337             self._autoPublish(anObj, theName, "sphere")
3338             return anObj
3339
3340         ## Create a cone with given base point, axis, height and radiuses.
3341         #  @param thePnt Central point of the first cone base.
3342         #  @param theAxis Cone axis.
3343         #  @param theR1 Radius of the first cone base.
3344         #  @param theR2 Radius of the second cone base.
3345         #    \note If both radiuses are non-zero, the cone will be truncated.
3346         #    \note If the radiuses are equal, a cylinder will be created instead.
3347         #  @param theH Cone height.
3348         #  @param 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         #  @return New GEOM.GEOM_Object, containing the created cone.
3353         #
3354         #  @ref tui_creation_cone "Example"
3355         @ManageTransactions("PrimOp")
3356         def MakeCone(self, thePnt, theAxis, theR1, theR2, theH, theName=None):
3357             """
3358             Create a cone with given base point, axis, height and radiuses.
3359
3360             Parameters:
3361                 thePnt Central point of the first cone base.
3362                 theAxis Cone axis.
3363                 theR1 Radius of the first cone base.
3364                 theR2 Radius of the second cone base.
3365                 theH Cone height.
3366                 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             Note:
3371                 If both radiuses are non-zero, the cone will be truncated.
3372                 If the radiuses are equal, a cylinder will be created instead.
3373
3374             Returns:
3375                 New GEOM.GEOM_Object, containing the created cone.
3376             """
3377             # Example: see GEOM_TestAll.py
3378             theR1,theR2,theH,Parameters = ParseParameters(theR1,theR2,theH)
3379             anObj = self.PrimOp.MakeConePntVecR1R2H(thePnt, theAxis, theR1, theR2, theH)
3380             RaiseIfFailed("MakeConePntVecR1R2H", self.PrimOp)
3381             anObj.SetParameters(Parameters)
3382             self._autoPublish(anObj, theName, "cone")
3383             return anObj
3384
3385         ## Create a cone with given height and radiuses at
3386         #  the origin of coordinate system. Axis of the cone will
3387         #  be collinear to the OZ axis of the coordinate system.
3388         #  @param theR1 Radius of the first cone base.
3389         #  @param theR2 Radius of the second cone base.
3390         #    \note If both radiuses are non-zero, the cone will be truncated.
3391         #    \note If the radiuses are equal, a cylinder will be created instead.
3392         #  @param theH Cone height.
3393         #  @param theName Object name; when specified, this parameter is used
3394         #         for result publication in the study. Otherwise, if automatic
3395         #         publication is switched on, default value is used for result name.
3396         #
3397         #  @return New GEOM.GEOM_Object, containing the created cone.
3398         #
3399         #  @ref tui_creation_cone "Example"
3400         @ManageTransactions("PrimOp")
3401         def MakeConeR1R2H(self, theR1, theR2, theH, theName=None):
3402             """
3403             Create a cone with given height and radiuses at
3404             the origin of coordinate system. Axis of the cone will
3405             be collinear to the OZ axis of the coordinate system.
3406
3407             Parameters:
3408                 theR1 Radius of the first cone base.
3409                 theR2 Radius of the second cone base.
3410                 theH Cone height.
3411                 theName Object name; when specified, this parameter is used
3412                         for result publication in the study. Otherwise, if automatic
3413                         publication is switched on, default value is used for result name.
3414
3415             Note:
3416                 If both radiuses are non-zero, the cone will be truncated.
3417                 If the radiuses are equal, a cylinder will be created instead.
3418
3419             Returns:
3420                 New GEOM.GEOM_Object, containing the created cone.
3421             """
3422             # Example: see GEOM_TestAll.py
3423             theR1,theR2,theH,Parameters = ParseParameters(theR1,theR2,theH)
3424             anObj = self.PrimOp.MakeConeR1R2H(theR1, theR2, theH)
3425             RaiseIfFailed("MakeConeR1R2H", self.PrimOp)
3426             anObj.SetParameters(Parameters)
3427             self._autoPublish(anObj, theName, "cone")
3428             return anObj
3429
3430         ## Create a torus with given center, normal vector and radiuses.
3431         #  @param thePnt Torus central point.
3432         #  @param theVec Torus axis of symmetry.
3433         #  @param theRMajor Torus major radius.
3434         #  @param theRMinor Torus minor radius.
3435         #  @param theName Object name; when specified, this parameter is used
3436         #         for result publication in the study. Otherwise, if automatic
3437         #         publication is switched on, default value is used for result name.
3438         #
3439         #  @return New GEOM.GEOM_Object, containing the created torus.
3440         #
3441         #  @ref tui_creation_torus "Example"
3442         @ManageTransactions("PrimOp")
3443         def MakeTorus(self, thePnt, theVec, theRMajor, theRMinor, theName=None):
3444             """
3445             Create a torus with given center, normal vector and radiuses.
3446
3447             Parameters:
3448                 thePnt Torus central point.
3449                 theVec Torus axis of symmetry.
3450                 theRMajor Torus major radius.
3451                 theRMinor Torus minor radius.
3452                 theName Object name; when specified, this parameter is used
3453                         for result publication in the study. Otherwise, if automatic
3454                         publication is switched on, default value is used for result name.
3455
3456            Returns:
3457                 New GEOM.GEOM_Object, containing the created torus.
3458             """
3459             # Example: see GEOM_TestAll.py
3460             theRMajor,theRMinor,Parameters = ParseParameters(theRMajor,theRMinor)
3461             anObj = self.PrimOp.MakeTorusPntVecRR(thePnt, theVec, theRMajor, theRMinor)
3462             RaiseIfFailed("MakeTorusPntVecRR", self.PrimOp)
3463             anObj.SetParameters(Parameters)
3464             self._autoPublish(anObj, theName, "torus")
3465             return anObj
3466
3467         ## Create a torus with given radiuses at the origin of coordinate system.
3468         #  @param theRMajor Torus major radius.
3469         #  @param theRMinor Torus minor radius.
3470         #  @param theName Object name; when specified, this parameter is used
3471         #         for result publication in the study. Otherwise, if automatic
3472         #         publication is switched on, default value is used for result name.
3473         #
3474         #  @return New GEOM.GEOM_Object, containing the created torus.
3475         #
3476         #  @ref tui_creation_torus "Example"
3477         @ManageTransactions("PrimOp")
3478         def MakeTorusRR(self, theRMajor, theRMinor, theName=None):
3479             """
3480            Create a torus with given radiuses at the origin of coordinate system.
3481
3482            Parameters:
3483                 theRMajor Torus major radius.
3484                 theRMinor Torus minor radius.
3485                 theName Object name; when specified, this parameter is used
3486                         for result publication in the study. Otherwise, if automatic
3487                         publication is switched on, default value is used for result name.
3488
3489            Returns:
3490                 New GEOM.GEOM_Object, containing the created torus.
3491             """
3492             # Example: see GEOM_TestAll.py
3493             theRMajor,theRMinor,Parameters = ParseParameters(theRMajor,theRMinor)
3494             anObj = self.PrimOp.MakeTorusRR(theRMajor, theRMinor)
3495             RaiseIfFailed("MakeTorusRR", self.PrimOp)
3496             anObj.SetParameters(Parameters)
3497             self._autoPublish(anObj, theName, "torus")
3498             return anObj
3499
3500         # end of l3_3d_primitives
3501         ## @}
3502
3503         ## @addtogroup l3_complex
3504         ## @{
3505
3506         ## Create a shape by extrusion of the base shape along a vector, defined by two points.
3507         #  @param theBase Base shape to be extruded.
3508         #  @param thePoint1 First end of extrusion vector.
3509         #  @param thePoint2 Second end of extrusion vector.
3510         #  @param theScaleFactor Use it to make prism with scaled second base.
3511         #                        Nagative value means not scaled second base.
3512         #  @param theName Object name; when specified, this parameter is used
3513         #         for result publication in the study. Otherwise, if automatic
3514         #         publication is switched on, default value is used for result name.
3515         #
3516         #  @return New GEOM.GEOM_Object, containing the created prism.
3517         #
3518         #  @ref tui_creation_prism "Example"
3519         @ManageTransactions("PrimOp")
3520         def MakePrism(self, theBase, thePoint1, thePoint2, theScaleFactor = -1.0, theName=None):
3521             """
3522             Create a shape by extrusion of the base shape along a vector, defined by two points.
3523
3524             Parameters:
3525                 theBase Base shape to be extruded.
3526                 thePoint1 First end of extrusion vector.
3527                 thePoint2 Second end of extrusion vector.
3528                 theScaleFactor Use it to make prism with scaled second base.
3529                                Nagative value means not scaled second base.
3530                 theName Object name; when specified, this parameter is used
3531                         for result publication in the study. Otherwise, if automatic
3532                         publication is switched on, default value is used for result name.
3533
3534             Returns:
3535                 New GEOM.GEOM_Object, containing the created prism.
3536             """
3537             # Example: see GEOM_TestAll.py
3538             anObj = None
3539             Parameters = ""
3540             if theScaleFactor > 0:
3541                 theScaleFactor,Parameters = ParseParameters(theScaleFactor)
3542                 anObj = self.PrimOp.MakePrismTwoPntWithScaling(theBase, thePoint1, thePoint2, theScaleFactor)
3543             else:
3544                 anObj = self.PrimOp.MakePrismTwoPnt(theBase, thePoint1, thePoint2)
3545             RaiseIfFailed("MakePrismTwoPnt", self.PrimOp)
3546             anObj.SetParameters(Parameters)
3547             self._autoPublish(anObj, theName, "prism")
3548             return anObj
3549
3550         ## Create a shape by extrusion of the base shape along a
3551         #  vector, defined by two points, in 2 Ways (forward/backward).
3552         #  @param theBase Base shape to be extruded.
3553         #  @param thePoint1 First end of extrusion vector.
3554         #  @param thePoint2 Second end of extrusion vector.
3555         #  @param theName Object name; when specified, this parameter is used
3556         #         for result publication in the study. Otherwise, if automatic
3557         #         publication is switched on, default value is used for result name.
3558         #
3559         #  @return New GEOM.GEOM_Object, containing the created prism.
3560         #
3561         #  @ref tui_creation_prism "Example"
3562         @ManageTransactions("PrimOp")
3563         def MakePrism2Ways(self, theBase, thePoint1, thePoint2, theName=None):
3564             """
3565             Create a shape by extrusion of the base shape along a
3566             vector, defined by two points, in 2 Ways (forward/backward).
3567
3568             Parameters:
3569                 theBase Base shape to be extruded.
3570                 thePoint1 First end of extrusion vector.
3571                 thePoint2 Second end of extrusion vector.
3572                 theName Object name; when specified, this parameter is used
3573                         for result publication in the study. Otherwise, if automatic
3574                         publication is switched on, default value is used for result name.
3575
3576             Returns:
3577                 New GEOM.GEOM_Object, containing the created prism.
3578             """
3579             # Example: see GEOM_TestAll.py
3580             anObj = self.PrimOp.MakePrismTwoPnt2Ways(theBase, thePoint1, thePoint2)
3581             RaiseIfFailed("MakePrismTwoPnt", self.PrimOp)
3582             self._autoPublish(anObj, theName, "prism")
3583             return anObj
3584
3585         ## Create a shape by extrusion of the base shape along the vector,
3586         #  i.e. all the space, transfixed by the base shape during its translation
3587         #  along the vector on the given distance.
3588         #  @param theBase Base shape to be extruded.
3589         #  @param theVec Direction of extrusion.
3590         #  @param theH Prism dimension along theVec.
3591         #  @param theScaleFactor Use it to make prism with scaled second base.
3592         #                        Negative value means not scaled second base.
3593         #  @param theName Object name; when specified, this parameter is used
3594         #         for result publication in the study. Otherwise, if automatic
3595         #         publication is switched on, default value is used for result name.
3596         #
3597         #  @return New GEOM.GEOM_Object, containing the created prism.
3598         #
3599         #  @ref tui_creation_prism "Example"
3600         @ManageTransactions("PrimOp")
3601         def MakePrismVecH(self, theBase, theVec, theH, theScaleFactor = -1.0, theName=None):
3602             """
3603             Create a shape by extrusion of the base shape along the vector,
3604             i.e. all the space, transfixed by the base shape during its translation
3605             along the vector on the given distance.
3606
3607             Parameters:
3608                 theBase Base shape to be extruded.
3609                 theVec Direction of extrusion.
3610                 theH Prism dimension along theVec.
3611                 theScaleFactor Use it to make prism with scaled second base.
3612                                Negative value means not scaled second base.
3613                 theName Object name; when specified, this parameter is used
3614                         for result publication in the study. Otherwise, if automatic
3615                         publication is switched on, default value is used for result name.
3616
3617             Returns:
3618                 New GEOM.GEOM_Object, containing the created prism.
3619             """
3620             # Example: see GEOM_TestAll.py
3621             anObj = None
3622             Parameters = ""
3623             if theScaleFactor > 0:
3624                 theH,theScaleFactor,Parameters = ParseParameters(theH,theScaleFactor)
3625                 anObj = self.PrimOp.MakePrismVecHWithScaling(theBase, theVec, theH, theScaleFactor)
3626             else:
3627                 theH,Parameters = ParseParameters(theH)
3628                 anObj = self.PrimOp.MakePrismVecH(theBase, theVec, theH)
3629             RaiseIfFailed("MakePrismVecH", self.PrimOp)
3630             anObj.SetParameters(Parameters)
3631             self._autoPublish(anObj, theName, "prism")
3632             return anObj
3633
3634         ## Create a shape by extrusion of the base shape along the vector,
3635         #  i.e. all the space, transfixed by the base shape during its translation
3636         #  along the vector on the given distance in 2 Ways (forward/backward).
3637         #  @param theBase Base shape to be extruded.
3638         #  @param theVec Direction of extrusion.
3639         #  @param theH Prism dimension along theVec in forward direction.
3640         #  @param theName Object name; when specified, this parameter is used
3641         #         for result publication in the study. Otherwise, if automatic
3642         #         publication is switched on, default value is used for result name.
3643         #
3644         #  @return New GEOM.GEOM_Object, containing the created prism.
3645         #
3646         #  @ref tui_creation_prism "Example"
3647         @ManageTransactions("PrimOp")
3648         def MakePrismVecH2Ways(self, theBase, theVec, theH, theName=None):
3649             """
3650             Create a shape by extrusion of the base shape along the vector,
3651             i.e. all the space, transfixed by the base shape during its translation
3652             along the vector on the given distance in 2 Ways (forward/backward).
3653
3654             Parameters:
3655                 theBase Base shape to be extruded.
3656                 theVec Direction of extrusion.
3657                 theH Prism dimension along theVec in forward direction.
3658                 theName Object name; when specified, this parameter is used
3659                         for result publication in the study. Otherwise, if automatic
3660                         publication is switched on, default value is used for result name.
3661
3662             Returns:
3663                 New GEOM.GEOM_Object, containing the created prism.
3664             """
3665             # Example: see GEOM_TestAll.py
3666             theH,Parameters = ParseParameters(theH)
3667             anObj = self.PrimOp.MakePrismVecH2Ways(theBase, theVec, theH)
3668             RaiseIfFailed("MakePrismVecH2Ways", self.PrimOp)
3669             anObj.SetParameters(Parameters)
3670             self._autoPublish(anObj, theName, "prism")
3671             return anObj
3672
3673         ## Create a shape by extrusion of the base shape along the dx, dy, dz direction
3674         #  @param theBase Base shape to be extruded.
3675         #  @param theDX, theDY, theDZ Directions of extrusion.
3676         #  @param theScaleFactor Use it to make prism with scaled second base.
3677         #                        Nagative value means not scaled second base.
3678         #  @param theName Object name; when specified, this parameter is used
3679         #         for result publication in the study. Otherwise, if automatic
3680         #         publication is switched on, default value is used for result name.
3681         #
3682         #  @return New GEOM.GEOM_Object, containing the created prism.
3683         #
3684         #  @ref tui_creation_prism "Example"
3685         @ManageTransactions("PrimOp")
3686         def MakePrismDXDYDZ(self, theBase, theDX, theDY, theDZ, theScaleFactor = -1.0, theName=None):
3687             """
3688             Create a shape by extrusion of the base shape along the dx, dy, dz direction
3689
3690             Parameters:
3691                 theBase Base shape to be extruded.
3692                 theDX, theDY, theDZ Directions of extrusion.
3693                 theScaleFactor Use it to make prism with scaled second base.
3694                                Nagative value means not scaled second base.
3695                 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             Returns:
3700                 New GEOM.GEOM_Object, containing the created prism.
3701             """
3702             # Example: see GEOM_TestAll.py
3703             anObj = None
3704             Parameters = ""
3705             if theScaleFactor > 0:
3706                 theDX,theDY,theDZ,theScaleFactor,Parameters = ParseParameters(theDX, theDY, theDZ, theScaleFactor)
3707                 anObj = self.PrimOp.MakePrismDXDYDZWithScaling(theBase, theDX, theDY, theDZ, theScaleFactor)
3708             else:
3709                 theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
3710                 anObj = self.PrimOp.MakePrismDXDYDZ(theBase, theDX, theDY, theDZ)
3711             RaiseIfFailed("MakePrismDXDYDZ", self.PrimOp)
3712             anObj.SetParameters(Parameters)
3713             self._autoPublish(anObj, theName, "prism")
3714             return anObj
3715
3716         ## Create a shape by extrusion of the base shape along the dx, dy, dz direction
3717         #  i.e. all the space, transfixed by the base shape during its translation
3718         #  along the vector on the given distance in 2 Ways (forward/backward).
3719         #  @param theBase Base shape to be extruded.
3720         #  @param theDX, theDY, theDZ Directions of extrusion.
3721         #  @param theName Object name; when specified, this parameter is used
3722         #         for result publication in the study. Otherwise, if automatic
3723         #         publication is switched on, default value is used for result name.
3724         #
3725         #  @return New GEOM.GEOM_Object, containing the created prism.
3726         #
3727         #  @ref tui_creation_prism "Example"
3728         @ManageTransactions("PrimOp")
3729         def MakePrismDXDYDZ2Ways(self, theBase, theDX, theDY, theDZ, theName=None):
3730             """
3731             Create a shape by extrusion of the base shape along the dx, dy, dz direction
3732             i.e. all the space, transfixed by the base shape during its translation
3733             along the vector on the given distance in 2 Ways (forward/backward).
3734
3735             Parameters:
3736                 theBase Base shape to be extruded.
3737                 theDX, theDY, theDZ Directions of extrusion.
3738                 theName Object name; when specified, this parameter is used
3739                         for result publication in the study. Otherwise, if automatic
3740                         publication is switched on, default value is used for result name.
3741
3742             Returns:
3743                 New GEOM.GEOM_Object, containing the created prism.
3744             """
3745             # Example: see GEOM_TestAll.py
3746             theDX,theDY,theDZ,Parameters = ParseParameters(theDX, theDY, theDZ)
3747             anObj = self.PrimOp.MakePrismDXDYDZ2Ways(theBase, theDX, theDY, theDZ)
3748             RaiseIfFailed("MakePrismDXDYDZ2Ways", self.PrimOp)
3749             anObj.SetParameters(Parameters)
3750             self._autoPublish(anObj, theName, "prism")
3751             return anObj
3752
3753         ## Create a shape by revolution of the base shape around the axis
3754         #  on the given angle, i.e. all the space, transfixed by the base
3755         #  shape during its rotation around the axis on the given angle.
3756         #  @param theBase Base shape to be rotated.
3757         #  @param theAxis Rotation axis.
3758         #  @param theAngle Rotation angle in radians.
3759         #  @param theName Object name; when specified, this parameter is used
3760         #         for result publication in the study. Otherwise, if automatic
3761         #         publication is switched on, default value is used for result name.
3762         #
3763         #  @return New GEOM.GEOM_Object, containing the created revolution.
3764         #
3765         #  @ref tui_creation_revolution "Example"
3766         @ManageTransactions("PrimOp")
3767         def MakeRevolution(self, theBase, theAxis, theAngle, theName=None):
3768             """
3769             Create a shape by revolution of the base shape around the axis
3770             on the given angle, i.e. all the space, transfixed by the base
3771             shape during its rotation around the axis on the given angle.
3772
3773             Parameters:
3774                 theBase Base shape to be rotated.
3775                 theAxis Rotation axis.
3776                 theAngle Rotation angle in radians.
3777                 theName Object name; when specified, this parameter is used
3778                         for result publication in the study. Otherwise, if automatic
3779                         publication is switched on, default value is used for result name.
3780
3781             Returns:
3782                 New GEOM.GEOM_Object, containing the created revolution.
3783             """
3784             # Example: see GEOM_TestAll.py
3785             theAngle,Parameters = ParseParameters(theAngle)
3786             anObj = self.PrimOp.MakeRevolutionAxisAngle(theBase, theAxis, theAngle)
3787             RaiseIfFailed("MakeRevolutionAxisAngle", self.PrimOp)
3788             anObj.SetParameters(Parameters)
3789             self._autoPublish(anObj, theName, "revolution")
3790             return anObj
3791
3792         ## Create a shape by revolution of the base shape around the axis
3793         #  on the given angle, i.e. all the space, transfixed by the base
3794         #  shape during its rotation around the axis on the given angle in
3795         #  both directions (forward/backward)
3796         #  @param theBase Base shape to be rotated.
3797         #  @param theAxis Rotation axis.
3798         #  @param theAngle Rotation angle in radians.
3799         #  @param theName Object name; when specified, this parameter is used
3800         #         for result publication in the study. Otherwise, if automatic
3801         #         publication is switched on, default value is used for result name.
3802         #
3803         #  @return New GEOM.GEOM_Object, containing the created revolution.
3804         #
3805         #  @ref tui_creation_revolution "Example"
3806         @ManageTransactions("PrimOp")
3807         def MakeRevolution2Ways(self, theBase, theAxis, theAngle, theName=None):
3808             """
3809             Create a shape by revolution of the base shape around the axis
3810             on the given angle, i.e. all the space, transfixed by the base
3811             shape during its rotation around the axis on the given angle in
3812             both directions (forward/backward).
3813
3814             Parameters:
3815                 theBase Base shape to be rotated.
3816                 theAxis Rotation axis.
3817                 theAngle Rotation angle in radians.
3818                 theName Object name; when specified, this parameter is used
3819                         for result publication in the study. Otherwise, if automatic
3820                         publication is switched on, default value is used for result name.
3821
3822             Returns:
3823                 New GEOM.GEOM_Object, containing the created revolution.
3824             """
3825             theAngle,Parameters = ParseParameters(theAngle)
3826             anObj = self.PrimOp.MakeRevolutionAxisAngle2Ways(theBase, theAxis, theAngle)
3827             RaiseIfFailed("MakeRevolutionAxisAngle2Ways", self.PrimOp)
3828             anObj.SetParameters(Parameters)
3829             self._autoPublish(anObj, theName, "revolution")
3830             return anObj
3831
3832         ## Create a face from a given set of contours.
3833         #  @param theContours either a list or a compound of edges/wires.
3834         #  @param theMinDeg a minimal degree of BSpline surface to create.
3835         #  @param theMaxDeg a maximal degree of BSpline surface to create.
3836         #  @param theTol2D a 2d tolerance to be reached.
3837         #  @param theTol3D a 3d tolerance to be reached.
3838         #  @param theNbIter a number of iteration of approximation algorithm.
3839         #  @param theMethod Kind of method to perform filling operation
3840         #         (see GEOM.filling_oper_method enum).
3841         #  @param isApprox if True, BSpline curves are generated in the process
3842         #                  of surface construction. By default it is False, that means
3843         #                  the surface is created using given curves. The usage of
3844         #                  Approximation makes the algorithm work slower, but allows
3845         #                  building the surface for rather complex cases.
3846         #  @param theName Object name; when specified, this parameter is used
3847         #         for result publication in the study. Otherwise, if automatic
3848         #         publication is switched on, default value is used for result name.
3849         #
3850         #  @return New GEOM.GEOM_Object (face), containing the created filling surface.
3851         #
3852         #  @ref tui_creation_filling "Example"
3853         @ManageTransactions("PrimOp")
3854         def MakeFilling(self, theContours, theMinDeg=2, theMaxDeg=5, theTol2D=0.0001,
3855                         theTol3D=0.0001, theNbIter=0, theMethod=GEOM.FOM_Default, isApprox=0, theName=None):
3856             """
3857             Create a face from a given set of contours.
3858
3859             Parameters:
3860                 theContours either a list or a compound of edges/wires.
3861                 theMinDeg a minimal degree of BSpline surface to create.
3862                 theMaxDeg a maximal degree of BSpline surface to create.
3863                 theTol2D a 2d tolerance to be reached.
3864                 theTol3D a 3d tolerance to be reached.
3865                 theNbIter a number of iteration of approximation algorithm.
3866                 theMethod Kind of method to perform filling operation
3867                           (see GEOM.filling_oper_method enum).
3868                 isApprox if True, BSpline curves are generated in the process
3869                          of surface construction. By default it is False, that means
3870                          the surface is created using given curves. The usage of
3871                          Approximation makes the algorithm work slower, but allows
3872                          building the surface for rather complex cases.
3873                 theName Object name; when specified, this parameter is used
3874                         for result publication in the study. Otherwise, if automatic
3875                         publication is switched on, default value is used for result name.
3876
3877             Returns:
3878                 New GEOM.GEOM_Object (face), containing the created filling surface.
3879
3880             Example of usage:
3881                 filling = geompy.MakeFilling(compound, 2, 5, 0.0001, 0.0001, 5)
3882             """
3883             # Example: see GEOM_TestAll.py
3884             theMinDeg,theMaxDeg,theTol2D,theTol3D,theNbIter,Parameters = ParseParameters(theMinDeg, theMaxDeg, theTol2D, theTol3D, theNbIter)
3885             anObj = self.PrimOp.MakeFilling(ToList(theContours), theMinDeg, theMaxDeg,
3886                                             theTol2D, theTol3D, theNbIter,
3887                                             theMethod, isApprox)
3888             RaiseIfFailed("MakeFilling", self.PrimOp)
3889             anObj.SetParameters(Parameters)
3890             self._autoPublish(anObj, theName, "filling")
3891             return anObj
3892
3893
3894         ## Create a face from a given set of contours.
3895         #  This method corresponds to MakeFilling() with isApprox=True.
3896         #  @param theContours either a list or a compound of edges/wires.
3897         #  @param theMinDeg a minimal degree of BSpline surface to create.
3898         #  @param theMaxDeg a maximal degree of BSpline surface to create.
3899         #  @param theTol3D a 3d tolerance to be reached.
3900         #  @param theName Object name; when specified, this parameter is used
3901         #         for result publication in the study. Otherwise, if automatic
3902         #         publication is switched on, default value is used for result name.
3903         #
3904         #  @return New GEOM.GEOM_Object (face), containing the created filling surface.
3905         #
3906         #  @ref tui_creation_filling "Example"
3907         @ManageTransactions("PrimOp")
3908         def MakeFillingNew(self, theContours, theMinDeg=2, theMaxDeg=5, theTol3D=0.0001, theName=None):
3909             """
3910             Create a filling from the given compound of contours.
3911             This method corresponds to MakeFilling() with isApprox=True.
3912
3913             Parameters:
3914                 theContours either a list or a compound of edges/wires.
3915                 theMinDeg a minimal degree of BSpline surface to create.
3916                 theMaxDeg a maximal degree of BSpline surface to create.
3917                 theTol3D a 3d tolerance to be reached.
3918                 theName Object name; when specified, this parameter is used
3919                         for result publication in the study. Otherwise, if automatic
3920                         publication is switched on, default value is used for result name.
3921
3922             Returns:
3923                 New GEOM.GEOM_Object (face), containing the created filling surface.
3924
3925             Example of usage:
3926                 filling = geompy.MakeFillingNew(compound, 2, 5, 0.0001)
3927             """
3928             # Example: see GEOM_TestAll.py
3929             theMinDeg,theMaxDeg,theTol3D,Parameters = ParseParameters(theMinDeg, theMaxDeg, theTol3D)
3930             anObj = self.PrimOp.MakeFilling(ToList(theContours), theMinDeg, theMaxDeg,
3931                                             0, theTol3D, 0, GEOM.FOM_Default, True)
3932             RaiseIfFailed("MakeFillingNew", self.PrimOp)
3933             anObj.SetParameters(Parameters)
3934             self._autoPublish(anObj, theName, "filling")
3935             return anObj
3936
3937         ## Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
3938         #  @param theSeqSections - set of specified sections.
3939         #  @param theModeSolid - mode defining building solid or shell
3940         #  @param thePreci - precision 3D used for smoothing
3941         #  @param theRuled - mode defining type of the result surfaces (ruled or smoothed).
3942         #  @param theName Object name; when specified, this parameter is used
3943         #         for result publication in the study. Otherwise, if automatic
3944         #         publication is switched on, default value is used for result name.
3945         #
3946         #  @return New GEOM.GEOM_Object, containing the created shell or solid.
3947         #
3948         #  @ref swig_todo "Example"
3949         @ManageTransactions("PrimOp")
3950         def MakeThruSections(self, theSeqSections, theModeSolid, thePreci, theRuled, theName=None):
3951             """
3952             Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
3953
3954             Parameters:
3955                 theSeqSections - set of specified sections.
3956                 theModeSolid - mode defining building solid or shell
3957                 thePreci - precision 3D used for smoothing
3958                 theRuled - mode defining type of the result surfaces (ruled or smoothed).
3959                 theName Object name; when specified, this parameter is used
3960                         for result publication in the study. Otherwise, if automatic
3961                         publication is switched on, default value is used for result name.
3962
3963             Returns:
3964                 New GEOM.GEOM_Object, containing the created shell or solid.
3965             """
3966             # Example: see GEOM_TestAll.py
3967             anObj = self.PrimOp.MakeThruSections(theSeqSections,theModeSolid,thePreci,theRuled)
3968             RaiseIfFailed("MakeThruSections", self.PrimOp)
3969             self._autoPublish(anObj, theName, "filling")
3970             return anObj
3971
3972         ## Create a shape by extrusion of the base shape along
3973         #  the path shape. The path shape can be a wire or an edge. It is
3974         #  possible to generate groups along with the result by means of
3975         #  setting the flag \a IsGenerateGroups.<BR>
3976         #  If \a thePath is a closed edge or wire and \a IsGenerateGroups is
3977         #  set, an error is occurred. If \a thePath is not closed edge/wire,
3978         #  the following groups are returned:
3979         #  - If \a theBase is unclosed edge or wire: "Down", "Up", "Side1",
3980         #    "Side2";
3981         #  - If \a theBase is closed edge or wire, face or shell: "Down", "Up",
3982         #    "Other".
3983         #  .
3984         #  "Down" and "Up" groups contain:
3985         #  - Edges if \a theBase is edge or wire;
3986         #  - Faces if \a theBase is face or shell.<BR>
3987         #  .
3988         #  "Side1" and "Side2" groups contain edges generated from the first
3989         #  and last vertices of \a theBase. The first and last vertices are
3990         #  determined taking into account edge/wire orientation.<BR>
3991         #  "Other" group represents faces generated from the bounding edges of
3992         #  \a theBase.
3993         #
3994         #  @param theBase Base shape to be extruded.
3995         #  @param thePath Path shape to extrude the base shape along it.
3996         #  @param IsGenerateGroups flag that tells if it is necessary to
3997         #         create groups. It is equal to False by default.
3998         #  @param theName Object name; when specified, this parameter is used
3999         #         for result publication in the study. Otherwise, if automatic
4000         #         publication is switched on, default value is used for result name.
4001         #
4002         #  @return New GEOM.GEOM_Object, containing the created pipe if 
4003         #          \a IsGenerateGroups is not set. Otherwise it returns a
4004         #          list of GEOM.GEOM_Object. Its first element is the created pipe, the
4005         #          remaining ones are created groups.
4006         #
4007         #  @ref tui_creation_pipe "Example"
4008         @ManageTransactions("PrimOp")
4009         def MakePipe(self, theBase, thePath,
4010                      IsGenerateGroups=False, theName=None):
4011             """
4012             Create a shape by extrusion of the base shape along
4013             the path shape. The path shape can be a wire or an edge. It is
4014             possible to generate groups along with the result by means of
4015             setting the flag IsGenerateGroups.
4016             If thePath is a closed edge or wire and IsGenerateGroups is
4017             set, an error is occurred. If thePath is not closed edge/wire,
4018             the following groups are returned:
4019             - If theBase is unclosed edge or wire: "Down", "Up", "Side1",
4020               "Side2";
4021             - If theBase is closed edge or wire, face or shell: "Down", "Up",
4022               "Other".
4023             "Down" and "Up" groups contain:
4024             - Edges if theBase is edge or wire;
4025             - Faces if theBase is face or shell.
4026             "Side1" and "Side2" groups contain edges generated from the first
4027             and last vertices of theBase. The first and last vertices are
4028             determined taking into account edge/wire orientation.
4029             "Other" group represents faces generated from the bounding edges of
4030             theBase.
4031
4032             Parameters:
4033                 theBase Base shape to be extruded.
4034                 thePath Path shape to extrude the base shape along it.
4035                 IsGenerateGroups flag that tells if it is necessary to
4036                         create groups. It is equal to False by default.
4037                 theName Object name; when specified, this parameter is used
4038                         for result publication in the study. Otherwise, if automatic
4039                         publication is switched on, default value is used for result name.
4040
4041             Returns:
4042                 New GEOM.GEOM_Object, containing the created pipe if 
4043                 IsGenerateGroups is not set. Otherwise it returns a
4044                 list of GEOM.GEOM_Object. Its first element is the created pipe, the
4045                 remaining ones are created groups.
4046             """
4047             # Example: see GEOM_TestAll.py
4048             aList = self.PrimOp.MakePipe(theBase, thePath, IsGenerateGroups)
4049             RaiseIfFailed("MakePipe", self.PrimOp)
4050
4051             if IsGenerateGroups:
4052               self._autoPublish(aList, theName, "pipe")
4053               return aList
4054
4055             self._autoPublish(aList[0], theName, "pipe")
4056             return aList[0]
4057
4058         ## Create a shape by extrusion of the profile shape along
4059         #  the path shape. The path shape can be a wire or an edge.
4060         #  the several profiles can be specified in the several locations of path.
4061         #  It is possible to generate groups along with the result by means of
4062         #  setting the flag \a IsGenerateGroups. For detailed information on
4063         #  groups that can be created please see the method MakePipe().
4064         #  @param theSeqBases - list of  Bases shape to be extruded.
4065         #  @param theLocations - list of locations on the path corresponding
4066         #                        specified list of the Bases shapes. Number of locations
4067         #                        should be equal to number of bases or list of locations can be empty.
4068         #  @param thePath - Path shape to extrude the base shape along it.
4069         #  @param theWithContact - the mode defining that the section is translated to be in
4070         #                          contact with the spine.
4071         #  @param theWithCorrection - defining that the section is rotated to be
4072         #                             orthogonal to the spine tangent in the correspondent point
4073         #  @param IsGenerateGroups - flag that tells if it is necessary to
4074         #                          create groups. It is equal to False by default.
4075         #  @param theName Object name; when specified, this parameter is used
4076         #         for result publication in the study. Otherwise, if automatic
4077         #         publication is switched on, default value is used for result name.
4078         #
4079         #  @return New GEOM.GEOM_Object, containing the created pipe if 
4080         #          \a IsGenerateGroups is not set. Otherwise it returns new
4081         #          GEOM.ListOfGO. Its first element is the created pipe, the
4082         #          remaining ones are created groups.
4083         #
4084         #  @ref tui_creation_pipe_with_diff_sec "Example"
4085         @ManageTransactions("PrimOp")
4086         def MakePipeWithDifferentSections(self, theSeqBases,
4087                                           theLocations, thePath,
4088                                           theWithContact, theWithCorrection,
4089                                           IsGenerateGroups=False, theName=None):
4090             """
4091             Create a shape by extrusion of the profile shape along
4092             the path shape. The path shape can be a wire or an edge.
4093             the several profiles can be specified in the several locations of path.
4094             It is possible to generate groups along with the result by means of
4095             setting the flag IsGenerateGroups. For detailed information on
4096             groups that can be created please see the method geompy.MakePipe().
4097
4098             Parameters:
4099                 theSeqBases - list of  Bases shape to be extruded.
4100                 theLocations - list of locations on the path corresponding
4101                                specified list of the Bases shapes. Number of locations
4102                                should be equal to number of bases or list of locations can be empty.
4103                 thePath - Path shape to extrude the base shape along it.
4104                 theWithContact - the mode defining that the section is translated to be in
4105                                  contact with the spine(0/1)
4106                 theWithCorrection - defining that the section is rotated to be
4107                                     orthogonal to the spine tangent in the correspondent point (0/1)
4108                 IsGenerateGroups - flag that tells if it is necessary to
4109                                  create groups. It is equal to False by default.
4110                 theName Object name; when specified, this parameter is used
4111                         for result publication in the study. Otherwise, if automatic
4112                         publication is switched on, default value is used for result name.
4113
4114             Returns:
4115                 New GEOM.GEOM_Object, containing the created pipe if 
4116                 IsGenerateGroups is not set. Otherwise it returns new
4117                 GEOM.ListOfGO. Its first element is the created pipe, the
4118                 remaining ones are created groups.
4119             """
4120             aList = self.PrimOp.MakePipeWithDifferentSections(theSeqBases,
4121                                                               theLocations, thePath,
4122                                                               theWithContact, theWithCorrection,
4123                                                               False, IsGenerateGroups)
4124             RaiseIfFailed("MakePipeWithDifferentSections", self.PrimOp)
4125
4126             if IsGenerateGroups:
4127               self._autoPublish(aList, theName, "pipe")
4128               return aList
4129
4130             self._autoPublish(aList[0], theName, "pipe")
4131             return aList[0]
4132
4133         ## Create a shape by extrusion of the profile shape along
4134         #  the path shape. This function is a version of
4135         #  MakePipeWithDifferentSections() with the same parameters, except
4136         #  eliminated theWithContact and theWithCorrection. So it is
4137         #  possible to find the description of all parameters is in this
4138         #  method. The difference is that this method performs the operation
4139         #  step by step, i.e. it creates pipes between each pair of neighbor
4140         #  sections and fuses them into a single shape.
4141         #
4142         #  @ref tui_creation_pipe_with_diff_sec "Example"
4143         @ManageTransactions("PrimOp")
4144         def MakePipeWithDifferentSectionsBySteps(self, theSeqBases,
4145                                                  theLocations, thePath,
4146                                                  IsGenerateGroups=False, theName=None):
4147             """
4148             Create a shape by extrusion of the profile shape along
4149             the path shape. This function is a version of
4150             MakePipeWithDifferentSections() with the same parameters, except
4151             eliminated theWithContact and theWithCorrection. So it is
4152             possible to find the description of all parameters is in this
4153             method. The difference is that this method performs the operation
4154             step by step, i.e. it creates pipes between each pair of neighbor
4155             sections and fuses them into a single shape.
4156             """
4157             aList = self.PrimOp.MakePipeWithDifferentSections(theSeqBases,
4158                                                               theLocations, thePath,
4159                                                               False, False,
4160                                                               True, IsGenerateGroups)
4161             RaiseIfFailed("MakePipeWithDifferentSectionsBySteps", self.PrimOp)
4162
4163             if IsGenerateGroups:
4164               self._autoPublish(aList, theName, "pipe")
4165               return aList
4166
4167             self._autoPublish(aList[0], theName, "pipe")
4168             return aList[0]
4169
4170         ## Create a shape by extrusion of the profile shape along
4171         #  the path shape. The path shape can be a wire or an edge.
4172         #  the several profiles can be specified in the several locations of path.
4173         #  It is possible to generate groups along with the result by means of
4174         #  setting the flag \a IsGenerateGroups. For detailed information on
4175         #  groups that can be created please see the method MakePipe().
4176         #  @param theSeqBases - list of  Bases shape to be extruded. Base shape must be
4177         #                       shell or face. If number of faces in neighbour sections
4178         #                       aren't coincided result solid between such sections will
4179         #                       be created using external boundaries of this shells.
4180         #  @param theSeqSubBases - list of corresponding sub-shapes of section shapes.
4181         #                          This list is used for searching correspondences between
4182         #                          faces in the sections. Size of this list must be equal
4183         #                          to size of list of base shapes.
4184         #  @param theLocations - list of locations on the path corresponding
4185         #                        specified list of the Bases shapes. Number of locations
4186         #                        should be equal to number of bases. First and last
4187         #                        locations must be coincided with first and last vertexes
4188         #                        of path correspondingly.
4189         #  @param thePath - Path shape to extrude the base shape along it.
4190         #  @param theWithContact - the mode defining that the section is translated to be in
4191         #                          contact with the spine.
4192         #  @param theWithCorrection - defining that the section is rotated to be
4193         #                             orthogonal to the spine tangent in the correspondent point
4194         #  @param IsGenerateGroups - flag that tells if it is necessary to
4195         #                          create groups. It is equal to False by default.
4196         #  @param theName Object name; when specified, this parameter is used
4197         #         for result publication in the study. Otherwise, if automatic
4198         #         publication is switched on, default value is used for result name.
4199         #
4200         #  @return New GEOM.GEOM_Object, containing the created solids if 
4201         #          \a IsGenerateGroups is not set. Otherwise it returns new
4202         #          GEOM.ListOfGO. Its first element is the created solids, the
4203         #          remaining ones are created groups.
4204         #
4205         #  @ref tui_creation_pipe_with_shell_sec "Example"
4206         @ManageTransactions("PrimOp")
4207         def MakePipeWithShellSections(self, theSeqBases, theSeqSubBases,
4208                                       theLocations, thePath,
4209                                       theWithContact, theWithCorrection,
4210                                       IsGenerateGroups=False, theName=None):
4211             """
4212             Create a shape by extrusion of the profile shape along
4213             the path shape. The path shape can be a wire or an edge.
4214             the several profiles can be specified in the several locations of path.
4215             It is possible to generate groups along with the result by means of
4216             setting the flag IsGenerateGroups. For detailed information on
4217             groups that can be created please see the method geompy.MakePipe().
4218
4219             Parameters:
4220                 theSeqBases - list of  Bases shape to be extruded. Base shape must be
4221                               shell or face. If number of faces in neighbour sections
4222                               aren't coincided result solid between such sections will
4223                               be created using external boundaries of this shells.
4224                 theSeqSubBases - list of corresponding sub-shapes of section shapes.
4225                                  This list is used for searching correspondences between
4226                                  faces in the sections. Size of this list must be equal
4227                                  to size of list of base shapes.
4228                 theLocations - list of locations on the path corresponding
4229                                specified list of the Bases shapes. Number of locations
4230                                should be equal to number of bases. First and last
4231                                locations must be coincided with first and last vertexes
4232                                of path correspondingly.
4233                 thePath - Path shape to extrude the base shape along it.
4234                 theWithContact - the mode defining that the section is translated to be in
4235                                  contact with the spine (0/1)
4236                 theWithCorrection - defining that the section is rotated to be
4237                                     orthogonal to the spine tangent in the correspondent point (0/1)
4238                 IsGenerateGroups - flag that tells if it is necessary to
4239                                  create groups. It is equal to False by default.
4240                 theName Object name; when specified, this parameter is used
4241                         for result publication in the study. Otherwise, if automatic
4242                         publication is switched on, default value is used for result name.
4243
4244             Returns:
4245                 New GEOM.GEOM_Object, containing the created solids if 
4246                 IsGenerateGroups is not set. Otherwise it returns new
4247                 GEOM.ListOfGO. Its first element is the created solids, the
4248                 remaining ones are created groups.
4249             """
4250             aList = self.PrimOp.MakePipeWithShellSections(theSeqBases, theSeqSubBases,
4251                                                           theLocations, thePath,
4252                                                           theWithContact, theWithCorrection,
4253                                                           IsGenerateGroups)
4254             RaiseIfFailed("MakePipeWithShellSections", self.PrimOp)
4255
4256             if IsGenerateGroups:
4257               self._autoPublish(aList, theName, "pipe")
4258               return aList
4259
4260             self._autoPublish(aList[0], theName, "pipe")
4261             return aList[0]
4262
4263         ## Create a shape by extrusion of the profile shape along
4264         #  the path shape. This function is used only for debug pipe
4265         #  functionality - it is a version of function MakePipeWithShellSections()
4266         #  which give a possibility to receive information about
4267         #  creating pipe between each pair of sections step by step.
4268         @ManageTransactions("PrimOp")
4269         def MakePipeWithShellSectionsBySteps(self, theSeqBases, theSeqSubBases,
4270                                              theLocations, thePath,
4271                                              theWithContact, theWithCorrection,
4272                                              IsGenerateGroups=False, theName=None):
4273             """
4274             Create a shape by extrusion of the profile shape along
4275             the path shape. This function is used only for debug pipe
4276             functionality - it is a version of previous function
4277             geompy.MakePipeWithShellSections() which give a possibility to
4278             receive information about creating pipe between each pair of
4279             sections step by step.
4280             """
4281             res = []
4282             nbsect = len(theSeqBases)
4283             nbsubsect = len(theSeqSubBases)
4284             #print "nbsect = ",nbsect
4285             for i in range(1,nbsect):
4286                 #print "  i = ",i
4287                 tmpSeqBases = [ theSeqBases[i-1], theSeqBases[i] ]
4288                 tmpLocations = [ theLocations[i-1], theLocations[i] ]
4289                 tmpSeqSubBases = []
4290                 if nbsubsect>0: tmpSeqSubBases = [ theSeqSubBases[i-1], theSeqSubBases[i] ]
4291                 aList = self.PrimOp.MakePipeWithShellSections(tmpSeqBases, tmpSeqSubBases,
4292                                                               tmpLocations, thePath,
4293                                                               theWithContact, theWithCorrection,
4294                                                               IsGenerateGroups)
4295                 if self.PrimOp.IsDone() == 0:
4296                     print("Problems with pipe creation between ",i," and ",i+1," sections")
4297                     RaiseIfFailed("MakePipeWithShellSections", self.PrimOp)
4298                     break
4299                 else:
4300                     print("Pipe between ",i," and ",i+1," sections is OK")
4301                     res.append(aList[0])
4302                     pass
4303                 pass
4304
4305             resc = self.MakeCompound(res)
4306             #resc = self.MakeSewing(res, 0.001)
4307             #print "resc: ",resc
4308             self._autoPublish(resc, theName, "pipe")
4309             return resc
4310
4311         ## Create solids between given sections.
4312         #  It is possible to generate groups along with the result by means of
4313         #  setting the flag \a IsGenerateGroups. For detailed information on
4314         #  groups that can be created please see the method MakePipe().
4315         #  @param theSeqBases - list of sections (shell or face).
4316         #  @param theLocations - list of corresponding vertexes
4317         #  @param IsGenerateGroups - flag that tells if it is necessary to
4318         #         create groups. It is equal to False by default.
4319         #  @param theName Object name; when specified, this parameter is used
4320         #         for result publication in the study. Otherwise, if automatic
4321         #         publication is switched on, default value is used for result name.
4322         #
4323         #  @return New GEOM.GEOM_Object, containing the created solids if 
4324         #          \a IsGenerateGroups is not set. Otherwise it returns new
4325         #          GEOM.ListOfGO. Its first element is the created solids, the
4326         #          remaining ones are created groups.
4327         #
4328         #  @ref tui_creation_pipe_without_path "Example"
4329         @ManageTransactions("PrimOp")
4330         def MakePipeShellsWithoutPath(self, theSeqBases, theLocations,
4331                                       IsGenerateGroups=False, theName=None):
4332             """
4333             Create solids between given sections.
4334             It is possible to generate groups along with the result by means of
4335             setting the flag IsGenerateGroups. For detailed information on
4336             groups that can be created please see the method geompy.MakePipe().
4337
4338             Parameters:
4339                 theSeqBases - list of sections (shell or face).
4340                 theLocations - list of corresponding vertexes
4341                 IsGenerateGroups - flag that tells if it is necessary to
4342                                  create groups. It is equal to False by default.
4343                 theName Object name; when specified, this parameter is used
4344                         for result publication in the study. Otherwise, if automatic
4345                         publication is switched on, default value is used for result name.
4346
4347             Returns:
4348                 New GEOM.GEOM_Object, containing the created solids if 
4349                 IsGenerateGroups is not set. Otherwise it returns new
4350                 GEOM.ListOfGO. Its first element is the created solids, the
4351                 remaining ones are created groups.
4352             """
4353             aList = self.PrimOp.MakePipeShellsWithoutPath(theSeqBases, theLocations,
4354                                                           IsGenerateGroups)
4355             RaiseIfFailed("MakePipeShellsWithoutPath", self.PrimOp)
4356
4357             if IsGenerateGroups:
4358               self._autoPublish(aList, theName, "pipe")
4359               return aList
4360
4361             self._autoPublish(aList[0], theName, "pipe")
4362             return aList[0]
4363
4364         ## Create a shape by extrusion of the base shape along
4365         #  the path shape with constant bi-normal direction along the given vector.
4366         #  The path shape can be a wire or an edge.
4367         #  It is possible to generate groups along with the result by means of
4368         #  setting the flag \a IsGenerateGroups. For detailed information on
4369         #  groups that can be created please see the method MakePipe().
4370         #  @param theBase Base shape to be extruded.
4371         #  @param thePath Path shape to extrude the base shape along it.
4372         #  @param theVec Vector defines a constant binormal direction to keep the
4373         #                same angle between the direction and the sections
4374         #                along the sweep surface.
4375         #  @param IsGenerateGroups flag that tells if it is necessary to
4376         #         create groups. It is equal to False by default.
4377         #  @param theName Object name; when specified, this parameter is used
4378         #         for result publication in the study. Otherwise, if automatic
4379         #         publication is switched on, default value is used for result name.
4380         #
4381         #  @return New GEOM.GEOM_Object, containing the created pipe if 
4382         #          \a IsGenerateGroups is not set. Otherwise it returns new
4383         #          GEOM.ListOfGO. Its first element is the created pipe, the
4384         #          remaining ones are created groups.
4385         #
4386         #  @ref tui_creation_pipe "Example"
4387         @ManageTransactions("PrimOp")
4388         def MakePipeBiNormalAlongVector(self, theBase, thePath, theVec,
4389                                         IsGenerateGroups=False, theName=None):
4390             """
4391             Create a shape by extrusion of the base shape along
4392             the path shape with constant bi-normal direction along the given vector.
4393             The path shape can be a wire or an edge.
4394             It is possible to generate groups along with the result by means of
4395             setting the flag IsGenerateGroups. For detailed information on
4396             groups that can be created please see the method geompy.MakePipe().
4397
4398             Parameters:
4399                 theBase Base shape to be extruded.
4400                 thePath Path shape to extrude the base shape along it.
4401                 theVec Vector defines a constant binormal direction to keep the
4402                        same angle between the direction and the sections
4403                        along the sweep surface.
4404                 IsGenerateGroups flag that tells if it is necessary to
4405                                  create groups. It is equal to False by default.
4406                 theName Object name; when specified, this parameter is used
4407                         for result publication in the study. Otherwise, if automatic
4408                         publication is switched on, default value is used for result name.
4409
4410             Returns:
4411                 New GEOM.GEOM_Object, containing the created pipe if 
4412                 IsGenerateGroups is not set. Otherwise it returns new
4413                 GEOM.ListOfGO. Its first element is the created pipe, the
4414                 remaining ones are created groups.
4415             """
4416             # Example: see GEOM_TestAll.py
4417             aList = self.PrimOp.MakePipeBiNormalAlongVector(theBase, thePath,
4418                           theVec, IsGenerateGroups)
4419             RaiseIfFailed("MakePipeBiNormalAlongVector", self.PrimOp)
4420
4421             if IsGenerateGroups:
4422               self._autoPublish(aList, theName, "pipe")
4423               return aList
4424
4425             self._autoPublish(aList[0], theName, "pipe")
4426             return aList[0]
4427
4428         ## Makes a thick solid from a shape. If the input is a surface shape
4429         #  (face or shell) the result is a thick solid. If an input shape is
4430         #  a solid the result is a hollowed solid with removed faces.
4431         #  @param theShape Face or Shell to get thick solid or solid to get
4432         #         hollowed solid.
4433         #  @param theThickness Thickness of the resulting solid
4434         #  @param theFacesIDs the list of face IDs to be removed from the
4435         #         result. It is ignored if \a theShape is a face or a shell.
4436         #         It is empty by default. 
4437         #  @param theInside If true the thickness is applied towards inside
4438         #  @param theName Object name; when specified, this parameter is used
4439         #         for result publication in the study. Otherwise, if automatic
4440         #         publication is switched on, default value is used for result name.
4441         #
4442         #  @return New GEOM.GEOM_Object, containing the created solid
4443         #
4444         #  @ref tui_creation_thickness "Example"
4445         @ManageTransactions("PrimOp")
4446         def MakeThickSolid(self, theShape, theThickness,
4447                            theFacesIDs=[], theInside=False, theName=None):
4448             """
4449             Make a thick solid from a shape. If the input is a surface shape
4450             (face or shell) the result is a thick solid. If an input shape is
4451             a solid the result is a hollowed solid with removed faces.
4452
4453             Parameters:
4454                  theShape Face or Shell to get thick solid or solid to get
4455                           hollowed solid.
4456                  theThickness Thickness of the resulting solid
4457                  theFacesIDs the list of face IDs to be removed from the
4458                           result. It is ignored if theShape is a face or a
4459                           shell. It is empty by default. 
4460                  theInside If true the thickness is applied towards inside
4461                  theName Object name; when specified, this parameter is used
4462                          for result publication in the study. Otherwise, if automatic
4463                          publication is switched on, default value is used for result name.
4464
4465             Returns:
4466                 New GEOM.GEOM_Object, containing the created solid
4467             """
4468             # Example: see GEOM_TestAll.py
4469             theThickness,Parameters = ParseParameters(theThickness)
4470             anObj = self.PrimOp.MakeThickening(theShape, theFacesIDs,
4471                                                theThickness, True, theInside)
4472             RaiseIfFailed("MakeThickSolid", self.PrimOp)
4473             anObj.SetParameters(Parameters)
4474             self._autoPublish(anObj, theName, "thickSolid")
4475             return anObj
4476
4477
4478         ## Modifies a shape to make it a thick solid. If the input is a surface
4479         #  shape (face or shell) the result is a thick solid. If an input shape
4480         #  is a solid the result is a hollowed solid with removed faces.
4481         #  @param theShape Face or Shell to get thick solid or solid to get
4482         #         hollowed solid.
4483         #  @param theThickness Thickness of the resulting solid
4484         #  @param theFacesIDs the list of face IDs to be removed from the
4485         #         result. It is ignored if \a theShape is a face or a shell.
4486         #         It is empty by default. 
4487         #  @param theInside If true the thickness is applied towards inside
4488         #
4489         #  @return The modified shape
4490         #
4491         #  @ref tui_creation_thickness "Example"
4492         @ManageTransactions("PrimOp")
4493         def Thicken(self, theShape, theThickness, theFacesIDs=[], theInside=False):
4494             """
4495             Modifies a shape to make it a thick solid. If the input is a
4496             surface shape (face or shell) the result is a thick solid. If
4497             an input shape is a solid the result is a hollowed solid with
4498             removed faces.
4499
4500             Parameters:
4501                 theShape Face or Shell to get thick solid or solid to get
4502                          hollowed solid.
4503                 theThickness Thickness of the resulting solid
4504                 theFacesIDs the list of face IDs to be removed from the
4505                          result. It is ignored if \a theShape is a face or
4506                          a shell. It is empty by default. 
4507                 theInside If true the thickness is applied towards inside
4508
4509             Returns:
4510                 The modified shape
4511             """
4512             # Example: see GEOM_TestAll.py
4513             theThickness,Parameters = ParseParameters(theThickness)
4514             anObj = self.PrimOp.MakeThickening(theShape, theFacesIDs,
4515                                                theThickness, False, theInside)
4516             RaiseIfFailed("Thicken", self.PrimOp)
4517             anObj.SetParameters(Parameters)
4518             return anObj
4519
4520         ## Build a middle path of a pipe-like shape.
4521         #  The path shape can be a wire or an edge.
4522         #  @param theShape It can be closed or unclosed pipe-like shell
4523         #                  or a pipe-like solid.
4524         #  @param theBase1, theBase2 Two bases of the supposed pipe. This
4525         #                            should be wires or faces of theShape.
4526         #  @param theName Object name; when specified, this parameter is used
4527         #         for result publication in the study. Otherwise, if automatic
4528         #         publication is switched on, default value is used for result name.
4529         #
4530         #  @note It is not assumed that exact or approximate copy of theShape
4531         #        can be obtained by applying existing Pipe operation on the
4532         #        resulting "Path" wire taking theBase1 as the base - it is not
4533         #        always possible; though in some particular cases it might work
4534         #        it is not guaranteed. Thus, RestorePath function should not be
4535         #        considered as an exact reverse operation of the Pipe.
4536         #
4537         #  @return New GEOM.GEOM_Object, containing an edge or wire that represent
4538         #                                source pipe's "path".
4539         #
4540         #  @ref tui_creation_pipe_path "Example"
4541         @ManageTransactions("PrimOp")
4542         def RestorePath (self, theShape, theBase1, theBase2, theName=None):
4543             """
4544             Build a middle path of a pipe-like shape.
4545             The path shape can be a wire or an edge.
4546
4547             Parameters:
4548                 theShape It can be closed or unclosed pipe-like shell
4549                          or a pipe-like solid.
4550                 theBase1, theBase2 Two bases of the supposed pipe. This
4551                                    should be wires or faces of theShape.
4552                 theName Object name; when specified, this parameter is used
4553                         for result publication in the study. Otherwise, if automatic
4554                         publication is switched on, default value is used for result name.
4555
4556             Returns:
4557                 New GEOM_Object, containing an edge or wire that represent
4558                                  source pipe's path.
4559             """
4560             anObj = self.PrimOp.RestorePath(theShape, theBase1, theBase2)
4561             RaiseIfFailed("RestorePath", self.PrimOp)
4562             self._autoPublish(anObj, theName, "path")
4563             return anObj
4564
4565         ## Build a middle path of a pipe-like shape.
4566         #  The path shape can be a wire or an edge.
4567         #  @param theShape It can be closed or unclosed pipe-like shell
4568         #                  or a pipe-like solid.
4569         #  @param listEdges1, listEdges2 Two bases of the supposed pipe. This
4570         #                                should be lists of edges of theShape.
4571         #  @param theName Object name; when specified, this parameter is used
4572         #         for result publication in the study. Otherwise, if automatic
4573         #         publication is switched on, default value is used for result name.
4574         #
4575         #  @note It is not assumed that exact or approximate copy of theShape
4576         #        can be obtained by applying existing Pipe operation on the
4577         #        resulting "Path" wire taking theBase1 as the base - it is not
4578         #        always possible; though in some particular cases it might work
4579         #        it is not guaranteed. Thus, RestorePath function should not be
4580         #        considered as an exact reverse operation of the Pipe.
4581         #
4582         #  @return New GEOM.GEOM_Object, containing an edge or wire that represent
4583         #                                source pipe's "path".
4584         #
4585         #  @ref tui_creation_pipe_path "Example"
4586         @ManageTransactions("PrimOp")
4587         def RestorePathEdges (self, theShape, listEdges1, listEdges2, theName=None):
4588             """
4589             Build a middle path of a pipe-like shape.
4590             The path shape can be a wire or an edge.
4591
4592             Parameters:
4593                 theShape It can be closed or unclosed pipe-like shell
4594                          or a pipe-like solid.
4595                 listEdges1, listEdges2 Two bases of the supposed pipe. This
4596                                        should be lists of edges of theShape.
4597                 theName Object name; when specified, this parameter is used
4598                         for result publication in the study. Otherwise, if automatic
4599                         publication is switched on, default value is used for result name.
4600
4601             Returns:
4602                 New GEOM_Object, containing an edge or wire that represent
4603                                  source pipe's path.
4604             """
4605             anObj = self.PrimOp.RestorePathEdges(theShape, listEdges1, listEdges2)
4606             RaiseIfFailed("RestorePath", self.PrimOp)
4607             self._autoPublish(anObj, theName, "path")
4608             return anObj
4609
4610         # end of l3_complex
4611         ## @}
4612
4613         ## @addtogroup l3_basic_go
4614         ## @{
4615
4616         ## Create a linear edge with specified ends.
4617         #  @param thePnt1 Point for the first end of edge.
4618         #  @param thePnt2 Point for the second end of edge.
4619         #  @param theName Object name; when specified, this parameter is used
4620         #         for result publication in the study. Otherwise, if automatic
4621         #         publication is switched on, default value is used for result name.
4622         #
4623         #  @return New GEOM.GEOM_Object, containing the created edge.
4624         #
4625         #  @ref tui_creation_edge "Example"
4626         @ManageTransactions("ShapesOp")
4627         def MakeEdge(self, thePnt1, thePnt2, theName=None):
4628             """
4629             Create a linear edge with specified ends.
4630
4631             Parameters:
4632                 thePnt1 Point for the first end of edge.
4633                 thePnt2 Point for the second end of edge.
4634                 theName Object name; when specified, this parameter is used
4635                         for result publication in the study. Otherwise, if automatic
4636                         publication is switched on, default value is used for result name.
4637
4638             Returns:
4639                 New GEOM.GEOM_Object, containing the created edge.
4640             """
4641             # Example: see GEOM_TestAll.py
4642             anObj = self.ShapesOp.MakeEdge(thePnt1, thePnt2)
4643             RaiseIfFailed("MakeEdge", self.ShapesOp)
4644             self._autoPublish(anObj, theName, "edge")
4645             return anObj
4646
4647         ## Create a new edge, corresponding to the given length on the given curve.
4648         #  @param theRefCurve The referenced curve (edge).
4649         #  @param theLength Length on the referenced curve. It can be negative.
4650         #  @param theStartPoint Any point can be selected for it, the new edge will begin
4651         #                       at the end of \a theRefCurve, close to the selected point.
4652         #                       If None, start from the first point of \a theRefCurve.
4653         #  @param theName Object name; when specified, this parameter is used
4654         #         for result publication in the study. Otherwise, if automatic
4655         #         publication is switched on, default value is used for result name.
4656         #
4657         #  @return New GEOM.GEOM_Object, containing the created edge.
4658         #
4659         #  @ref tui_creation_edge "Example"
4660         @ManageTransactions("ShapesOp")
4661         def MakeEdgeOnCurveByLength(self, theRefCurve, theLength, theStartPoint = None, theName=None):
4662             """
4663             Create a new edge, corresponding to the given length on the given curve.
4664
4665             Parameters:
4666                 theRefCurve The referenced curve (edge).
4667                 theLength Length on the referenced curve. It can be negative.
4668                 theStartPoint Any point can be selected for it, the new edge will begin
4669                               at the end of theRefCurve, close to the selected point.
4670                               If None, start from the first point of theRefCurve.
4671                 theName Object name; when specified, this parameter is used
4672                         for result publication in the study. Otherwise, if automatic
4673                         publication is switched on, default value is used for result name.
4674
4675             Returns:
4676                 New GEOM.GEOM_Object, containing the created edge.
4677             """
4678             # Example: see GEOM_TestAll.py
4679             theLength, Parameters = ParseParameters(theLength)
4680             anObj = self.ShapesOp.MakeEdgeOnCurveByLength(theRefCurve, theLength, theStartPoint)
4681             RaiseIfFailed("MakeEdgeOnCurveByLength", self.ShapesOp)
4682             anObj.SetParameters(Parameters)
4683             self._autoPublish(anObj, theName, "edge")
4684             return anObj
4685
4686         ## Create an edge from specified wire.
4687         #  @param theWire source Wire
4688         #  @param theLinearTolerance linear tolerance value (default = 1e-07)
4689         #  @param theAngularTolerance angular tolerance value (default = 1e-12)
4690         #  @param theName Object name; when specified, this parameter is used
4691         #         for result publication in the study. Otherwise, if automatic
4692         #         publication is switched on, default value is used for result name.
4693         #
4694         #  @return New GEOM.GEOM_Object, containing the created edge.
4695         #
4696         #  @ref tui_creation_edge "Example"
4697         @ManageTransactions("ShapesOp")
4698         def MakeEdgeWire(self, theWire, theLinearTolerance = 1e-07, theAngularTolerance = 1e-12, theName=None):
4699             """
4700             Create an edge from specified wire.
4701
4702             Parameters:
4703                 theWire source Wire
4704                 theLinearTolerance linear tolerance value (default = 1e-07)
4705                 theAngularTolerance angular tolerance value (default = 1e-12)
4706                 theName Object name; when specified, this parameter is used
4707                         for result publication in the study. Otherwise, if automatic
4708                         publication is switched on, default value is used for result name.
4709
4710             Returns:
4711                 New GEOM.GEOM_Object, containing the created edge.
4712             """
4713             # Example: see GEOM_TestAll.py
4714             anObj = self.ShapesOp.MakeEdgeWire(theWire, theLinearTolerance, theAngularTolerance)
4715             RaiseIfFailed("MakeEdgeWire", self.ShapesOp)
4716             self._autoPublish(anObj, theName, "edge")
4717             return anObj
4718
4719         ## Create a wire from the set of edges and wires.
4720         #  @param theEdgesAndWires List of edges and/or wires.
4721         #  @param theTolerance Maximum distance between vertices, that will be merged.
4722         #                      Values less than 1e-07 are equivalent to 1e-07 (Precision::Confusion())
4723         #  @param theName Object name; when specified, this parameter is used
4724         #         for result publication in the study. Otherwise, if automatic
4725         #         publication is switched on, default value is used for result name.
4726         #
4727         #  @return New GEOM.GEOM_Object, containing the created wire.
4728         #
4729         #  @ref tui_creation_wire "Example"
4730         @ManageTransactions("ShapesOp")
4731         def MakeWire(self, theEdgesAndWires, theTolerance = 1e-07, theName=None):
4732             """
4733             Create a wire from the set of edges and wires.
4734
4735             Parameters:
4736                 theEdgesAndWires List of edges and/or wires.
4737                 theTolerance Maximum distance between vertices, that will be merged.
4738                              Values less than 1e-07 are equivalent to 1e-07 (Precision::Confusion()).
4739                 theName Object name; when specified, this parameter is used
4740                         for result publication in the study. Otherwise, if automatic
4741                         publication is switched on, default value is used for result name.
4742
4743             Returns:
4744                 New GEOM.GEOM_Object, containing the created wire.
4745             """
4746             # Example: see GEOM_TestAll.py
4747             anObj = self.ShapesOp.MakeWire(theEdgesAndWires, theTolerance)
4748             RaiseIfFailed("MakeWire", self.ShapesOp)
4749             self._autoPublish(anObj, theName, "wire")
4750             return anObj
4751
4752         ## Create a face on the given wire.
4753         #  @param theWire closed Wire or Edge to build the face on.
4754         #  @param isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4755         #                        If the tolerance of the obtained planar face is less
4756         #                        than 1e-06, this face will be returned, otherwise the
4757         #                        algorithm tries to build any suitable face on the given
4758         #                        wire and prints a warning message.
4759         #  @param theName Object name; when specified, this parameter is used
4760         #         for result publication in the study. Otherwise, if automatic
4761         #         publication is switched on, default value is used for result name.
4762         #
4763         #  @return New GEOM.GEOM_Object, containing the created face (compound of faces).
4764         #
4765         #  @ref tui_creation_face "Example"
4766         @ManageTransactions("ShapesOp")
4767         def MakeFace(self, theWire, isPlanarWanted, theName=None, raiseException=False):
4768             """
4769             Create a face on the given wire.
4770
4771             Parameters:
4772                 theWire closed Wire or Edge to build the face on.
4773                 isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4774                                If the tolerance of the obtained planar face is less
4775                                than 1e-06, this face will be returned, otherwise the
4776                                algorithm tries to build any suitable face on the given
4777                                wire and prints a warning message.
4778                 theName Object name; when specified, this parameter is used
4779                         for result publication in the study. Otherwise, if automatic
4780                         publication is switched on, default value is used for result name.
4781
4782             Returns:
4783                 New GEOM.GEOM_Object, containing the created face (compound of faces).
4784             """
4785             # Example: see GEOM_TestAll.py
4786             anObj = self.ShapesOp.MakeFace(theWire, isPlanarWanted)
4787             if isPlanarWanted and anObj is not None and self.ShapesOp.GetErrorCode() == "MAKE_FACE_TOLERANCE_TOO_BIG":
4788                 PrintOrRaise("WARNING: Cannot build a planar face: required tolerance is too big. Non-planar face is built.",raiseException)
4789             else:
4790                 RaiseIfFailed("MakeFace", self.ShapesOp)
4791             self._autoPublish(anObj, theName, "face")
4792             return anObj
4793
4794         ## Create a face on the given wires set.
4795         #  @param theWires List of closed wires or edges to build the face on.
4796         #  @param isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4797         #                        If the tolerance of the obtained planar face is less
4798         #                        than 1e-06, this face will be returned, otherwise the
4799         #                        algorithm tries to build any suitable face on the given
4800         #                        wire and prints a warning message.
4801         #  @param theName Object name; when specified, this parameter is used
4802         #         for result publication in the study. Otherwise, if automatic
4803         #         publication is switched on, default value is used for result name.
4804         #
4805         #  @return New GEOM.GEOM_Object, containing the created face (compound of faces).
4806         #
4807         #  @ref tui_creation_face "Example"
4808         @ManageTransactions("ShapesOp")
4809         def MakeFaceWires(self, theWires, isPlanarWanted, theName=None, raiseException=False):
4810             """
4811             Create a face on the given wires set.
4812
4813             Parameters:
4814                 theWires List of closed wires or edges to build the face on.
4815                 isPlanarWanted If TRUE, the algorithm tries to build a planar face.
4816                                If the tolerance of the obtained planar face is less
4817                                than 1e-06, this face will be returned, otherwise the
4818                                algorithm tries to build any suitable face on the given
4819                                wire and prints a warning message.
4820                 theName Object name; when specified, this parameter is used
4821                         for result publication in the study. Otherwise, if automatic
4822                         publication is switched on, default value is used for result name.
4823
4824             Returns:
4825                 New GEOM.GEOM_Object, containing the created face (compound of faces).
4826             """
4827             # Example: see GEOM_TestAll.py
4828             anObj = self.ShapesOp.MakeFaceWires(ToList(theWires), isPlanarWanted)
4829             if isPlanarWanted and anObj is not None and self.ShapesOp.GetErrorCode() == "MAKE_FACE_TOLERANCE_TOO_BIG":
4830                 PrintOrRaise("WARNING: Cannot build a planar face: required tolerance is too big. Non-planar face is built.",raiseException)
4831             else:
4832                 RaiseIfFailed("MakeFaceWires", self.ShapesOp)
4833             self._autoPublish(anObj, theName, "face")
4834             return anObj
4835
4836         ## See MakeFaceWires() method for details.
4837         #
4838         #  @ref tui_creation_face "Example 1"
4839         #  \n @ref swig_MakeFaces  "Example 2"
4840         def MakeFaces(self, theWires, isPlanarWanted, theName=None):
4841             """
4842             See geompy.MakeFaceWires() method for details.
4843             """
4844             # Example: see GEOM_TestOthers.py
4845             # note: auto-publishing is done in self.MakeFaceWires()
4846             anObj = self.MakeFaceWires(theWires, isPlanarWanted, theName)
4847             return anObj
4848
4849         ## Create a face based on a surface from given face bounded
4850         #  by given wire.
4851         #  @param theFace the face whose surface is used to create a new face.
4852         #  @param theWire the wire that will bound a new face.
4853         #  @param theName Object name; when specified, this parameter is used
4854         #         for result publication in the study. Otherwise, if automatic
4855         #         publication is switched on, default value is used for result name.
4856         #
4857         #  @return New GEOM.GEOM_Object, containing the created face.
4858         #
4859         #  @ref tui_creation_face "Example"
4860         @ManageTransactions("ShapesOp")
4861         def MakeFaceFromSurface(self, theFace, theWire, theName=None):
4862             """
4863             Create a face based on a surface from given face bounded
4864             by given wire.
4865
4866             Parameters:
4867                 theFace the face whose surface is used to create a new face.
4868                 theWire the wire that will bound a new face.
4869                 theName Object name; when specified, this parameter is used
4870                         for result publication in the study. Otherwise, if automatic
4871                         publication is switched on, default value is used for result name.
4872
4873             Returns:
4874                 New GEOM.GEOM_Object, containing the created face.
4875             """
4876             # Example: see GEOM_TestAll.py
4877             anObj = self.ShapesOp.MakeFaceFromSurface(theFace, theWire)
4878             RaiseIfFailed("MakeFaceFromSurface", self.ShapesOp)
4879             self._autoPublish(anObj, theName, "face")
4880             return anObj
4881           
4882         ## Create a face from a set of edges with the given constraints.
4883         #  @param theConstraints List of edges and constraint faces (as a sequence of a Edge + Face couples):
4884         #         - edges should form a closed wire;
4885         #         - for each edge, constraint face is optional: if a constraint face is missing
4886         #           for some edge, this means that there no constraint associated with this edge.
4887         #  @param theName Object name; when specified, this parameter is used
4888         #         for result publication in the study. Otherwise, if automatic
4889         #         publication is switched on, default value is used for result name.
4890         # 
4891         # @return New GEOM.GEOM_Object, containing the created face.
4892         # 
4893         # @ref tui_creation_face "Example"
4894         @ManageTransactions("ShapesOp")
4895         def MakeFaceWithConstraints(self, theConstraints, theName=None):
4896             """
4897             Create a face from a set of edges with the given constraints.
4898
4899             Parameters:
4900                 theConstraints List of edges and constraint faces (as a sequence of a Edge + Face couples):
4901                         - edges should form a closed wire;
4902                         - for each edge, constraint face is optional: if a constraint face is missing
4903                           for some edge, this means that there no constraint associated with this edge.
4904                 theName Object name; when specified, this parameter is used
4905                         for result publication in the study. Otherwise, if automatic
4906                         publication is switched on, default value is used for result name.
4907
4908             Returns:
4909                 New GEOM.GEOM_Object, containing the created face.
4910             """
4911             # Example: see GEOM_TestAll.py
4912             anObj = self.ShapesOp.MakeFaceWithConstraints(theConstraints)
4913             if anObj is None:
4914                 RaiseIfFailed("MakeFaceWithConstraints", self.ShapesOp)
4915             self._autoPublish(anObj, theName, "face")
4916             return anObj
4917
4918         ## Create a shell from the set of faces, shells and/or compounds of faces.
4919         #  @param theFacesAndShells List of faces, shells and/or compounds of faces.
4920         #  @param theName Object name; when specified, this parameter is used
4921         #         for result publication in the study. Otherwise, if automatic
4922         #         publication is switched on, default value is used for result name.
4923         #
4924         #  @return New GEOM.GEOM_Object, containing the created shell (compound of shells).
4925         #
4926         #  @ref tui_creation_shell "Example"
4927         @ManageTransactions("ShapesOp")
4928         def MakeShell(self, theFacesAndShells, theName=None):
4929             """
4930             Create a shell from the set of faces and shells.
4931
4932             Parameters:
4933                 theFacesAndShells List of faces and/or shells.
4934                 theName Object name; when specified, this parameter is used
4935                         for result publication in the study. Otherwise, if automatic
4936                         publication is switched on, default value is used for result name.
4937
4938             Returns:
4939                 New GEOM.GEOM_Object, containing the created shell (compound of shells).
4940             """
4941             # Example: see GEOM_TestAll.py
4942             anObj = self.ShapesOp.MakeShell( ToList( theFacesAndShells ))
4943             RaiseIfFailed("MakeShell", self.ShapesOp)
4944             self._autoPublish(anObj, theName, "shell")
4945             return anObj
4946
4947         ## Create a solid, bounded by the given shells.
4948         #  @param theShells Sequence of bounding shells.
4949         #  @param theName Object name; when specified, this parameter is used
4950         #         for result publication in the study. Otherwise, if automatic
4951         #         publication is switched on, default value is used for result name.
4952         #
4953         #  @return New GEOM.GEOM_Object, containing the created solid.
4954         #
4955         #  @ref tui_creation_solid "Example"
4956         @ManageTransactions("ShapesOp")
4957         def MakeSolid(self, theShells, theName=None):
4958             """
4959             Create a solid, bounded by the given shells.
4960
4961             Parameters:
4962                 theShells Sequence of bounding shells.
4963                 theName Object name; when specified, this parameter is used
4964                         for result publication in the study. Otherwise, if automatic
4965                         publication is switched on, default value is used for result name.
4966
4967             Returns:
4968                 New GEOM.GEOM_Object, containing the created solid.
4969             """
4970             # Example: see GEOM_TestAll.py
4971             theShells = ToList(theShells)
4972             if len(theShells) == 1:
4973                 descr = self._IsGoodForSolid(theShells[0])
4974                 #if len(descr) > 0:
4975                 #    raise RuntimeError, "MakeSolidShells : " + descr
4976                 if descr == "WRN_SHAPE_UNCLOSED":
4977                     raise RuntimeError("MakeSolidShells : Unable to create solid from unclosed shape")
4978             anObj = self.ShapesOp.MakeSolidShells(theShells)
4979             RaiseIfFailed("MakeSolidShells", self.ShapesOp)
4980             self._autoPublish(anObj, theName, "solid")
4981             return anObj
4982
4983         ## Create a compound of the given shapes.
4984         #  @param theShapes List of shapes to put in compound.
4985         #  @param theName Object name; when specified, this parameter is used
4986         #         for result publication in the study. Otherwise, if automatic
4987         #         publication is switched on, default value is used for result name.
4988         #
4989         #  @return New GEOM.GEOM_Object, containing the created compound.
4990         #
4991         #  @ref tui_creation_compound "Example"
4992         @ManageTransactions("ShapesOp")
4993         def MakeCompound(self, theShapes, theName=None):
4994             """
4995             Create a compound of the given shapes.
4996
4997             Parameters:
4998                 theShapes List of shapes to put in compound.
4999                 theName Object name; when specified, this parameter is used
5000                         for result publication in the study. Otherwise, if automatic
5001                         publication is switched on, default value is used for result name.
5002
5003             Returns:
5004                 New GEOM.GEOM_Object, containing the created compound.
5005             """
5006             # Example: see GEOM_TestAll.py
5007             anObj = self.ShapesOp.MakeCompound(ToList(theShapes))
5008             RaiseIfFailed("MakeCompound", self.ShapesOp)
5009             self._autoPublish(anObj, theName, "compound")
5010             return anObj
5011         
5012         ## Create a solid (or solids) from the set of faces and/or shells.
5013         #  @param theFacesOrShells List of faces and/or shells.
5014         #  @param isIntersect If TRUE, forces performing intersections
5015         #         between arguments; otherwise (default) intersection is not performed.
5016         #  @param theName Object name; when specified, this parameter is used
5017         #         for result publication in the study. Otherwise, if automatic
5018         #         publication is switched on, default value is used for result name.
5019         #
5020         #  @return New GEOM.GEOM_Object, containing the created solid (or compound of solids).
5021         #
5022         #  @ref tui_creation_solid_from_faces "Example"
5023         @ManageTransactions("ShapesOp")
5024         def MakeSolidFromConnectedFaces(self, theFacesOrShells, isIntersect = False, theName=None):
5025             """
5026             Create a solid (or solids) from the set of connected faces and/or shells.
5027
5028             Parameters:
5029                 theFacesOrShells List of faces and/or shells.
5030                 isIntersect If TRUE, forces performing intersections
5031                         between arguments; otherwise (default) intersection is not performed
5032                 theName Object name; when specified, this parameter is used.
5033                         for result publication in the study. Otherwise, if automatic
5034                         publication is switched on, default value is used for result name.
5035
5036             Returns:
5037                 New GEOM.GEOM_Object, containing the created solid (or compound of solids).
5038             """
5039             # Example: see GEOM_TestAll.py
5040             anObj = self.ShapesOp.MakeSolidFromConnectedFaces(theFacesOrShells, isIntersect)
5041             RaiseIfFailed("MakeSolidFromConnectedFaces", self.ShapesOp)
5042             self._autoPublish(anObj, theName, "solid")
5043             return anObj
5044
5045         # end of l3_basic_go
5046         ## @}
5047
5048         ## @addtogroup l2_measure
5049         ## @{
5050
5051         ## Gives quantity of faces in the given shape.
5052         #  @param theShape Shape to count faces of.
5053         #  @return Quantity of faces.
5054         #
5055         #  @ref swig_NumberOf "Example"
5056         @ManageTransactions("ShapesOp")
5057         def NumberOfFaces(self, theShape):
5058             """
5059             Gives quantity of faces in the given shape.
5060
5061             Parameters:
5062                 theShape Shape to count faces of.
5063
5064             Returns:
5065                 Quantity of faces.
5066             """
5067             # Example: see GEOM_TestOthers.py
5068             nb_faces = self.ShapesOp.NumberOfFaces(theShape)
5069             RaiseIfFailed("NumberOfFaces", self.ShapesOp)
5070             return nb_faces
5071
5072         ## Gives quantity of edges in the given shape.
5073         #  @param theShape Shape to count edges of.
5074         #  @return Quantity of edges.
5075         #
5076         #  @ref swig_NumberOf "Example"
5077         @ManageTransactions("ShapesOp")
5078         def NumberOfEdges(self, theShape):
5079             """
5080             Gives quantity of edges in the given shape.
5081
5082             Parameters:
5083                 theShape Shape to count edges of.
5084
5085             Returns:
5086                 Quantity of edges.
5087             """
5088             # Example: see GEOM_TestOthers.py
5089             nb_edges = self.ShapesOp.NumberOfEdges(theShape)
5090             RaiseIfFailed("NumberOfEdges", self.ShapesOp)
5091             return nb_edges
5092
5093         ## Gives quantity of sub-shapes of type theShapeType in the given shape.
5094         #  @param theShape Shape to count sub-shapes of.
5095         #  @param theShapeType Type of sub-shapes to count (see ShapeType())
5096         #  @return Quantity of sub-shapes of given type.
5097         #
5098         #  @ref swig_NumberOf "Example"
5099         @ManageTransactions("ShapesOp")
5100         def NumberOfSubShapes(self, theShape, theShapeType):
5101             """
5102             Gives quantity of sub-shapes of type theShapeType in the given shape.
5103
5104             Parameters:
5105                 theShape Shape to count sub-shapes of.
5106                 theShapeType Type of sub-shapes to count (see geompy.ShapeType)
5107
5108             Returns:
5109                 Quantity of sub-shapes of given type.
5110             """
5111             # Example: see GEOM_TestOthers.py
5112             nb_ss = self.ShapesOp.NumberOfSubShapes(theShape, theShapeType)
5113             RaiseIfFailed("NumberOfSubShapes", self.ShapesOp)
5114             return nb_ss
5115
5116         ## Gives quantity of solids in the given shape.
5117         #  @param theShape Shape to count solids in.
5118         #  @return Quantity of solids.
5119         #
5120         #  @ref swig_NumberOf "Example"
5121         @ManageTransactions("ShapesOp")
5122         def NumberOfSolids(self, theShape):
5123             """
5124             Gives quantity of solids in the given shape.
5125
5126             Parameters:
5127                 theShape Shape to count solids in.
5128
5129             Returns:
5130                 Quantity of solids.
5131             """
5132             # Example: see GEOM_TestOthers.py
5133             nb_solids = self.ShapesOp.NumberOfSubShapes(theShape, self.ShapeType["SOLID"])
5134             RaiseIfFailed("NumberOfSolids", self.ShapesOp)
5135             return nb_solids
5136
5137         # end of l2_measure
5138         ## @}
5139
5140         ## @addtogroup l3_healing
5141         ## @{
5142
5143         ## Reverses an orientation the given shape.
5144         #  @param theShape Shape to be reversed.
5145         #  @param 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         #  @return The reversed copy of theShape.
5150         #
5151         #  @ref swig_ChangeOrientation "Example"
5152         @ManageTransactions("ShapesOp")
5153         def ChangeOrientation(self, theShape, theName=None):
5154             """
5155             Reverses an orientation the given shape.
5156
5157             Parameters:
5158                 theShape Shape to be reversed.
5159                 theName Object name; when specified, this parameter is used
5160                         for result publication in the study. Otherwise, if automatic
5161                         publication is switched on, default value is used for result name.
5162
5163             Returns:
5164                 The reversed copy of theShape.
5165             """
5166             # Example: see GEOM_TestAll.py
5167             anObj = self.ShapesOp.ChangeOrientation(theShape)
5168             RaiseIfFailed("ChangeOrientation", self.ShapesOp)
5169             self._autoPublish(anObj, theName, "reversed")
5170             return anObj
5171
5172         ## See ChangeOrientation() method for details.
5173         #
5174         #  @ref swig_OrientationChange "Example"
5175         def OrientationChange(self, theShape, theName=None):
5176             """
5177             See geompy.ChangeOrientation method for details.
5178             """
5179             # Example: see GEOM_TestOthers.py
5180             # note: auto-publishing is done in self.ChangeOrientation()
5181             anObj = self.ChangeOrientation(theShape, theName)
5182             return anObj
5183
5184         # end of l3_healing
5185         ## @}
5186
5187         ## @addtogroup l4_obtain
5188         ## @{
5189
5190         ## Retrieve all free faces from the given shape.
5191         #  Free face is a face, which is not shared between two shells of the shape.
5192         #  @param theShape Shape to find free faces in.
5193         #  @return List of IDs of all free faces, contained in theShape.
5194         #
5195         #  @ref tui_free_faces_page "Example"
5196         @ManageTransactions("ShapesOp")
5197         def GetFreeFacesIDs(self,theShape):
5198             """
5199             Retrieve all free faces from the given shape.
5200             Free face is a face, which is not shared between two shells of the shape.
5201
5202             Parameters:
5203                 theShape Shape to find free faces in.
5204
5205             Returns:
5206                 List of IDs of all free faces, contained in theShape.
5207             """
5208             # Example: see GEOM_TestOthers.py
5209             anIDs = self.ShapesOp.GetFreeFacesIDs(theShape)
5210             RaiseIfFailed("GetFreeFacesIDs", self.ShapesOp)
5211             return anIDs
5212
5213         ## Get all sub-shapes of theShape1 of the given type, shared with theShape2.
5214         #  @param theShape1 Shape to find sub-shapes in.
5215         #  @param theShape2 Shape to find shared sub-shapes with.
5216         #  @param theShapeType Type of sub-shapes to be retrieved.
5217         #  @param theName Object name; when specified, this parameter is used
5218         #         for result publication in the study. Otherwise, if automatic
5219         #         publication is switched on, default value is used for result name.
5220         #
5221         #  @return List of sub-shapes of theShape1, shared with theShape2.
5222         #
5223         #  @ref swig_GetSharedShapes "Example"
5224         @ManageTransactions("ShapesOp")
5225         def GetSharedShapes(self, theShape1, theShape2, theShapeType, theName=None):
5226             """
5227             Get all sub-shapes of theShape1 of the given type, shared with theShape2.
5228
5229             Parameters:
5230                 theShape1 Shape to find sub-shapes in.
5231                 theShape2 Shape to find shared sub-shapes with.
5232                 theShapeType Type of sub-shapes to be retrieved.
5233                 theName Object name; when specified, this parameter is used
5234                         for result publication in the study. Otherwise, if automatic
5235                         publication is switched on, default value is used for result name.
5236
5237             Returns:
5238                 List of sub-shapes of theShape1, shared with theShape2.
5239             """
5240             # Example: see GEOM_TestOthers.py
5241             aList = self.ShapesOp.GetSharedShapes(theShape1, theShape2, theShapeType)
5242             RaiseIfFailed("GetSharedShapes", self.ShapesOp)
5243             self._autoPublish(aList, theName, "shared")
5244             return aList
5245
5246         ## Get sub-shapes, shared by input shapes.
5247         #  @param theShapes Either a list or compound of shapes to find common sub-shapes of.
5248         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType()).
5249         #  @param theMultiShare Specifies what type of shares should be checked:
5250         #         - @c True (default): search sub-shapes from 1st input shape shared with all other input shapes;
5251         #         - @c False: causes to search sub-shapes shared between couples of input shapes.
5252         #  @param theName Object name; when specified, this parameter is used
5253         #         for result publication in the study. Otherwise, if automatic
5254         #         publication is switched on, default value is used for result name.
5255         #
5256         #  @note If @a theShapes contains single compound, the shares between all possible couples of 
5257         #        its top-level shapes are returned; otherwise, only shares between 1st input shape
5258         #        and all rest input shapes are returned.
5259         #
5260         #  @return List of all found sub-shapes.
5261         #
5262         #  Examples:
5263         #  - @ref tui_shared_shapes "Example 1"
5264         #  - @ref swig_GetSharedShapes "Example 2"
5265         @ManageTransactions("ShapesOp")
5266         def GetSharedShapesMulti(self, theShapes, theShapeType, theMultiShare=True, theName=None):
5267             """
5268             Get sub-shapes, shared by input shapes.
5269
5270             Parameters:
5271                 theShapes Either a list or compound of shapes to find common sub-shapes of.
5272                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType).
5273                 theMultiShare Specifies what type of shares should be checked:
5274                   - True (default): search sub-shapes from 1st input shape shared with all other input shapes;
5275                   - False: causes to search sub-shapes shared between couples of input shapes.
5276                 theName Object name; when specified, this parameter is used
5277                         for result publication in the study. Otherwise, if automatic
5278                         publication is switched on, default value is used for result name.
5279
5280             Note: if theShapes contains single compound, the shares between all possible couples of 
5281                   its top-level shapes are returned; otherwise, only shares between 1st input shape
5282                   and all rest input shapes are returned.
5283
5284             Returns:
5285                 List of all found sub-shapes.
5286             """
5287             # Example: see GEOM_TestOthers.py
5288             aList = self.ShapesOp.GetSharedShapesMulti(ToList(theShapes), theShapeType, theMultiShare)
5289             RaiseIfFailed("GetSharedShapesMulti", self.ShapesOp)
5290             self._autoPublish(aList, theName, "shared")
5291             return aList
5292
5293         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5294         #  situated relatively the specified plane by the certain way,
5295         #  defined through <VAR>theState</VAR> parameter.
5296         #  @param theShape Shape to find sub-shapes of.
5297         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5298         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5299         #                direction and location of the plane to find shapes on.
5300         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5301         #  @param theName Object name; when specified, this parameter is used
5302         #         for result publication in the study. Otherwise, if automatic
5303         #         publication is switched on, default value is used for result name.
5304         #
5305         #  @return List of all found sub-shapes.
5306         #
5307         #  @ref swig_GetShapesOnPlane "Example"
5308         @ManageTransactions("ShapesOp")
5309         def GetShapesOnPlane(self, theShape, theShapeType, theAx1, theState, theName=None):
5310             """
5311             Find in theShape all sub-shapes of type theShapeType,
5312             situated relatively the specified plane by the certain way,
5313             defined through theState parameter.
5314
5315             Parameters:
5316                 theShape Shape to find sub-shapes of.
5317                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5318                 theAx1 Vector (or line, or linear edge), specifying normal
5319                        direction and location of the plane to find shapes on.
5320                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5321                 theName Object name; when specified, this parameter is used
5322                         for result publication in the study. Otherwise, if automatic
5323                         publication is switched on, default value is used for result name.
5324
5325             Returns:
5326                 List of all found sub-shapes.
5327             """
5328             # Example: see GEOM_TestOthers.py
5329             aList = self.ShapesOp.GetShapesOnPlane(theShape, theShapeType, theAx1, theState)
5330             RaiseIfFailed("GetShapesOnPlane", self.ShapesOp)
5331             self._autoPublish(aList, theName, "shapeOnPlane")
5332             return aList
5333
5334         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5335         #  situated relatively the specified plane by the certain way,
5336         #  defined through <VAR>theState</VAR> parameter.
5337         #  @param theShape Shape to find sub-shapes of.
5338         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5339         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5340         #                direction and location of the plane to find shapes on.
5341         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5342         #
5343         #  @return List of all found sub-shapes indices.
5344         #
5345         #  @ref swig_GetShapesOnPlaneIDs "Example"
5346         @ManageTransactions("ShapesOp")
5347         def GetShapesOnPlaneIDs(self, theShape, theShapeType, theAx1, theState):
5348             """
5349             Find in theShape all sub-shapes of type theShapeType,
5350             situated relatively the specified plane by the certain way,
5351             defined through theState parameter.
5352
5353             Parameters:
5354                 theShape Shape to find sub-shapes of.
5355                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5356                 theAx1 Vector (or line, or linear edge), specifying normal
5357                        direction and location of the plane to find shapes on.
5358                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5359
5360             Returns:
5361                 List of all found sub-shapes indices.
5362             """
5363             # Example: see GEOM_TestOthers.py
5364             aList = self.ShapesOp.GetShapesOnPlaneIDs(theShape, theShapeType, theAx1, theState)
5365             RaiseIfFailed("GetShapesOnPlaneIDs", self.ShapesOp)
5366             return aList
5367
5368         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5369         #  situated relatively the specified plane by the certain way,
5370         #  defined through <VAR>theState</VAR> parameter.
5371         #  @param theShape Shape to find sub-shapes of.
5372         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5373         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5374         #                direction of the plane to find shapes on.
5375         #  @param thePnt Point specifying location of the plane to find shapes on.
5376         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5377         #  @param theName Object name; when specified, this parameter is used
5378         #         for result publication in the study. Otherwise, if automatic
5379         #         publication is switched on, default value is used for result name.
5380         #
5381         #  @return List of all found sub-shapes.
5382         #
5383         #  @ref swig_GetShapesOnPlaneWithLocation "Example"
5384         @ManageTransactions("ShapesOp")
5385         def GetShapesOnPlaneWithLocation(self, theShape, theShapeType, theAx1, thePnt, theState, theName=None):
5386             """
5387             Find in theShape all sub-shapes of type theShapeType,
5388             situated relatively the specified plane by the certain way,
5389             defined through theState parameter.
5390
5391             Parameters:
5392                 theShape Shape to find sub-shapes of.
5393                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5394                 theAx1 Vector (or line, or linear edge), specifying normal
5395                        direction and location of the plane to find shapes on.
5396                 thePnt Point specifying location of the plane to find shapes on.
5397                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5398                 theName Object name; when specified, this parameter is used
5399                         for result publication in the study. Otherwise, if automatic
5400                         publication is switched on, default value is used for result name.
5401
5402             Returns:
5403                 List of all found sub-shapes.
5404             """
5405             # Example: see GEOM_TestOthers.py
5406             aList = self.ShapesOp.GetShapesOnPlaneWithLocation(theShape, theShapeType,
5407                                                                theAx1, thePnt, theState)
5408             RaiseIfFailed("GetShapesOnPlaneWithLocation", self.ShapesOp)
5409             self._autoPublish(aList, theName, "shapeOnPlane")
5410             return aList
5411
5412         ## Find in <VAR>theShape</VAR> all sub-shapes of type <VAR>theShapeType</VAR>,
5413         #  situated relatively the specified plane by the certain way,
5414         #  defined through <VAR>theState</VAR> parameter.
5415         #  @param theShape Shape to find sub-shapes of.
5416         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5417         #  @param theAx1 Vector (or line, or linear edge), specifying normal
5418         #                direction of the plane to find shapes on.
5419         #  @param thePnt Point specifying location of the plane to find shapes on.
5420         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5421         #
5422         #  @return List of all found sub-shapes indices.
5423         #
5424         #  @ref swig_GetShapesOnPlaneWithLocationIDs "Example"
5425         @ManageTransactions("ShapesOp")
5426         def GetShapesOnPlaneWithLocationIDs(self, theShape, theShapeType, theAx1, thePnt, theState):
5427             """
5428             Find in theShape all sub-shapes of type theShapeType,
5429             situated relatively the specified plane by the certain way,
5430             defined through theState parameter.
5431
5432             Parameters:
5433                 theShape Shape to find sub-shapes of.
5434                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5435                 theAx1 Vector (or line, or linear edge), specifying normal
5436                        direction and location of the plane to find shapes on.
5437                 thePnt Point specifying location of the plane to find shapes on.
5438                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5439
5440             Returns:
5441                 List of all found sub-shapes indices.
5442             """
5443             # Example: see GEOM_TestOthers.py
5444             aList = self.ShapesOp.GetShapesOnPlaneWithLocationIDs(theShape, theShapeType,
5445                                                                   theAx1, thePnt, theState)
5446             RaiseIfFailed("GetShapesOnPlaneWithLocationIDs", self.ShapesOp)
5447             return aList
5448
5449         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5450         #  the specified cylinder by the certain way, defined through \a theState parameter.
5451         #  @param theShape Shape to find sub-shapes of.
5452         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5453         #  @param theAxis Vector (or line, or linear edge), specifying
5454         #                 axis of the cylinder to find shapes on.
5455         #  @param theRadius Radius of the cylinder to find shapes on.
5456         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5457         #  @param theName Object name; when specified, this parameter is used
5458         #         for result publication in the study. Otherwise, if automatic
5459         #         publication is switched on, default value is used for result name.
5460         #
5461         #  @return List of all found sub-shapes.
5462         #
5463         #  @ref swig_GetShapesOnCylinder "Example"
5464         @ManageTransactions("ShapesOp")
5465         def GetShapesOnCylinder(self, theShape, theShapeType, theAxis, theRadius, theState, theName=None):
5466             """
5467             Find in theShape all sub-shapes of type theShapeType, situated relatively
5468             the specified cylinder by the certain way, defined through theState parameter.
5469
5470             Parameters:
5471                 theShape Shape to find sub-shapes of.
5472                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5473                 theAxis Vector (or line, or linear edge), specifying
5474                         axis of the cylinder to find shapes on.
5475                 theRadius Radius of the cylinder to find shapes on.
5476                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5477                 theName Object name; when specified, this parameter is used
5478                         for result publication in the study. Otherwise, if automatic
5479                         publication is switched on, default value is used for result name.
5480
5481             Returns:
5482                 List of all found sub-shapes.
5483             """
5484             # Example: see GEOM_TestOthers.py
5485             aList = self.ShapesOp.GetShapesOnCylinder(theShape, theShapeType, theAxis, theRadius, theState)
5486             RaiseIfFailed("GetShapesOnCylinder", self.ShapesOp)
5487             self._autoPublish(aList, theName, "shapeOnCylinder")
5488             return aList
5489
5490         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5491         #  the specified cylinder by the certain way, defined through \a theState parameter.
5492         #  @param theShape Shape to find sub-shapes of.
5493         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5494         #  @param theAxis Vector (or line, or linear edge), specifying
5495         #                 axis of the cylinder to find shapes on.
5496         #  @param theRadius Radius of the cylinder to find shapes on.
5497         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5498         #
5499         #  @return List of all found sub-shapes indices.
5500         #
5501         #  @ref swig_GetShapesOnCylinderIDs "Example"
5502         @ManageTransactions("ShapesOp")
5503         def GetShapesOnCylinderIDs(self, theShape, theShapeType, theAxis, theRadius, theState):
5504             """
5505             Find in theShape all sub-shapes of type theShapeType, situated relatively
5506             the specified cylinder by the certain way, defined through theState parameter.
5507
5508             Parameters:
5509                 theShape Shape to find sub-shapes of.
5510                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5511                 theAxis Vector (or line, or linear edge), specifying
5512                         axis of the cylinder to find shapes on.
5513                 theRadius Radius of the cylinder to find shapes on.
5514                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5515
5516             Returns:
5517                 List of all found sub-shapes indices.
5518             """
5519             # Example: see GEOM_TestOthers.py
5520             aList = self.ShapesOp.GetShapesOnCylinderIDs(theShape, theShapeType, theAxis, theRadius, theState)
5521             RaiseIfFailed("GetShapesOnCylinderIDs", self.ShapesOp)
5522             return aList
5523
5524         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5525         #  the specified cylinder by the certain way, defined through \a theState parameter.
5526         #  @param theShape Shape to find sub-shapes of.
5527         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5528         #  @param theAxis Vector (or line, or linear edge), specifying
5529         #                 axis of the cylinder to find shapes on.
5530         #  @param thePnt Point specifying location of the bottom of the cylinder.
5531         #  @param theRadius Radius of the cylinder to find shapes on.
5532         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5533         #  @param theName Object name; when specified, this parameter is used
5534         #         for result publication in the study. Otherwise, if automatic
5535         #         publication is switched on, default value is used for result name.
5536         #
5537         #  @return List of all found sub-shapes.
5538         #
5539         #  @ref swig_GetShapesOnCylinderWithLocation "Example"
5540         @ManageTransactions("ShapesOp")
5541         def GetShapesOnCylinderWithLocation(self, theShape, theShapeType, theAxis, thePnt, theRadius, theState, theName=None):
5542             """
5543             Find in theShape all sub-shapes of type theShapeType, situated relatively
5544             the specified cylinder by the certain way, defined through theState parameter.
5545
5546             Parameters:
5547                 theShape Shape to find sub-shapes of.
5548                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5549                 theAxis Vector (or line, or linear edge), specifying
5550                         axis of the cylinder to find shapes on.
5551                 theRadius Radius of the cylinder to find shapes on.
5552                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5553                 theName Object name; when specified, this parameter is used
5554                         for result publication in the study. Otherwise, if automatic
5555                         publication is switched on, default value is used for result name.
5556
5557             Returns:
5558                 List of all found sub-shapes.
5559             """
5560             # Example: see GEOM_TestOthers.py
5561             aList = self.ShapesOp.GetShapesOnCylinderWithLocation(theShape, theShapeType, theAxis, thePnt, theRadius, theState)
5562             RaiseIfFailed("GetShapesOnCylinderWithLocation", self.ShapesOp)
5563             self._autoPublish(aList, theName, "shapeOnCylinder")
5564             return aList
5565
5566         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5567         #  the specified cylinder by the certain way, defined through \a theState parameter.
5568         #  @param theShape Shape to find sub-shapes of.
5569         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5570         #  @param theAxis Vector (or line, or linear edge), specifying
5571         #                 axis of the cylinder to find shapes on.
5572         #  @param thePnt Point specifying location of the bottom of the cylinder.
5573         #  @param theRadius Radius of the cylinder to find shapes on.
5574         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5575         #
5576         #  @return List of all found sub-shapes indices
5577         #
5578         #  @ref swig_GetShapesOnCylinderWithLocationIDs "Example"
5579         @ManageTransactions("ShapesOp")
5580         def GetShapesOnCylinderWithLocationIDs(self, theShape, theShapeType, theAxis, thePnt, theRadius, theState):
5581             """
5582             Find in theShape all sub-shapes of type theShapeType, situated relatively
5583             the specified cylinder by the certain way, defined through theState parameter.
5584
5585             Parameters:
5586                 theShape Shape to find sub-shapes of.
5587                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5588                 theAxis Vector (or line, or linear edge), specifying
5589                         axis of the cylinder to find shapes on.
5590                 theRadius Radius of the cylinder to find shapes on.
5591                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5592
5593             Returns:
5594                 List of all found sub-shapes indices.
5595             """
5596             # Example: see GEOM_TestOthers.py
5597             aList = self.ShapesOp.GetShapesOnCylinderWithLocationIDs(theShape, theShapeType, theAxis, thePnt, theRadius, theState)
5598             RaiseIfFailed("GetShapesOnCylinderWithLocationIDs", self.ShapesOp)
5599             return aList
5600
5601         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5602         #  the specified sphere by the certain way, defined through \a theState parameter.
5603         #  @param theShape Shape to find sub-shapes of.
5604         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5605         #  @param theCenter Point, specifying center of the sphere to find shapes on.
5606         #  @param theRadius Radius of the sphere to find shapes on.
5607         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5608         #  @param theName Object name; when specified, this parameter is used
5609         #         for result publication in the study. Otherwise, if automatic
5610         #         publication is switched on, default value is used for result name.
5611         #
5612         #  @return List of all found sub-shapes.
5613         #
5614         #  @ref swig_GetShapesOnSphere "Example"
5615         @ManageTransactions("ShapesOp")
5616         def GetShapesOnSphere(self, theShape, theShapeType, theCenter, theRadius, theState, theName=None):
5617             """
5618             Find in theShape all sub-shapes of type theShapeType, situated relatively
5619             the specified sphere by the certain way, defined through theState parameter.
5620
5621             Parameters:
5622                 theShape Shape to find sub-shapes of.
5623                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5624                 theCenter Point, specifying center of the sphere to find shapes on.
5625                 theRadius Radius of the sphere to find shapes on.
5626                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5627                 theName Object name; when specified, this parameter is used
5628                         for result publication in the study. Otherwise, if automatic
5629                         publication is switched on, default value is used for result name.
5630
5631             Returns:
5632                 List of all found sub-shapes.
5633             """
5634             # Example: see GEOM_TestOthers.py
5635             aList = self.ShapesOp.GetShapesOnSphere(theShape, theShapeType, theCenter, theRadius, theState)
5636             RaiseIfFailed("GetShapesOnSphere", self.ShapesOp)
5637             self._autoPublish(aList, theName, "shapeOnSphere")
5638             return aList
5639
5640         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5641         #  the specified sphere by the certain way, defined through \a theState parameter.
5642         #  @param theShape Shape to find sub-shapes of.
5643         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5644         #  @param theCenter Point, specifying center of the sphere to find shapes on.
5645         #  @param theRadius Radius of the sphere to find shapes on.
5646         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5647         #
5648         #  @return List of all found sub-shapes indices.
5649         #
5650         #  @ref swig_GetShapesOnSphereIDs "Example"
5651         @ManageTransactions("ShapesOp")
5652         def GetShapesOnSphereIDs(self, theShape, theShapeType, theCenter, theRadius, theState):
5653             """
5654             Find in theShape all sub-shapes of type theShapeType, situated relatively
5655             the specified sphere by the certain way, defined through theState parameter.
5656
5657             Parameters:
5658                 theShape Shape to find sub-shapes of.
5659                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5660                 theCenter Point, specifying center of the sphere to find shapes on.
5661                 theRadius Radius of the sphere to find shapes on.
5662                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5663
5664             Returns:
5665                 List of all found sub-shapes indices.
5666             """
5667             # Example: see GEOM_TestOthers.py
5668             aList = self.ShapesOp.GetShapesOnSphereIDs(theShape, theShapeType, theCenter, theRadius, theState)
5669             RaiseIfFailed("GetShapesOnSphereIDs", self.ShapesOp)
5670             return aList
5671
5672         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5673         #  the specified quadrangle by the certain way, defined through \a theState parameter.
5674         #  @param theShape Shape to find sub-shapes of.
5675         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5676         #  @param theTopLeftPoint Point, specifying top left corner of a quadrangle
5677         #  @param theTopRightPoint Point, specifying top right corner of a quadrangle
5678         #  @param theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5679         #  @param theBottomRightPoint Point, specifying bottom right corner of a quadrangle
5680         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5681         #  @param theName Object name; when specified, this parameter is used
5682         #         for result publication in the study. Otherwise, if automatic
5683         #         publication is switched on, default value is used for result name.
5684         #
5685         #  @return List of all found sub-shapes.
5686         #
5687         #  @ref swig_GetShapesOnQuadrangle "Example"
5688         @ManageTransactions("ShapesOp")
5689         def GetShapesOnQuadrangle(self, theShape, theShapeType,
5690                                   theTopLeftPoint, theTopRightPoint,
5691                                   theBottomLeftPoint, theBottomRightPoint, theState, theName=None):
5692             """
5693             Find in theShape all sub-shapes of type theShapeType, situated relatively
5694             the specified quadrangle by the certain way, defined through theState parameter.
5695
5696             Parameters:
5697                 theShape Shape to find sub-shapes of.
5698                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5699                 theTopLeftPoint Point, specifying top left corner of a quadrangle
5700                 theTopRightPoint Point, specifying top right corner of a quadrangle
5701                 theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5702                 theBottomRightPoint Point, specifying bottom right corner of a quadrangle
5703                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5704                 theName Object name; when specified, this parameter is used
5705                         for result publication in the study. Otherwise, if automatic
5706                         publication is switched on, default value is used for result name.
5707
5708             Returns:
5709                 List of all found sub-shapes.
5710             """
5711             # Example: see GEOM_TestOthers.py
5712             aList = self.ShapesOp.GetShapesOnQuadrangle(theShape, theShapeType,
5713                                                         theTopLeftPoint, theTopRightPoint,
5714                                                         theBottomLeftPoint, theBottomRightPoint, theState)
5715             RaiseIfFailed("GetShapesOnQuadrangle", self.ShapesOp)
5716             self._autoPublish(aList, theName, "shapeOnQuadrangle")
5717             return aList
5718
5719         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5720         #  the specified quadrangle by the certain way, defined through \a theState parameter.
5721         #  @param theShape Shape to find sub-shapes of.
5722         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5723         #  @param theTopLeftPoint Point, specifying top left corner of a quadrangle
5724         #  @param theTopRightPoint Point, specifying top right corner of a quadrangle
5725         #  @param theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5726         #  @param theBottomRightPoint Point, specifying bottom right corner of a quadrangle
5727         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5728         #
5729         #  @return List of all found sub-shapes indices.
5730         #
5731         #  @ref swig_GetShapesOnQuadrangleIDs "Example"
5732         @ManageTransactions("ShapesOp")
5733         def GetShapesOnQuadrangleIDs(self, theShape, theShapeType,
5734                                      theTopLeftPoint, theTopRightPoint,
5735                                      theBottomLeftPoint, theBottomRightPoint, theState):
5736             """
5737             Find in theShape all sub-shapes of type theShapeType, situated relatively
5738             the specified quadrangle by the certain way, defined through theState parameter.
5739
5740             Parameters:
5741                 theShape Shape to find sub-shapes of.
5742                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5743                 theTopLeftPoint Point, specifying top left corner of a quadrangle
5744                 theTopRightPoint Point, specifying top right corner of a quadrangle
5745                 theBottomLeftPoint Point, specifying bottom left corner of a quadrangle
5746                 theBottomRightPoint Point, specifying bottom right corner of a quadrangle
5747                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5748
5749             Returns:
5750                 List of all found sub-shapes indices.
5751             """
5752
5753             # Example: see GEOM_TestOthers.py
5754             aList = self.ShapesOp.GetShapesOnQuadrangleIDs(theShape, theShapeType,
5755                                                            theTopLeftPoint, theTopRightPoint,
5756                                                            theBottomLeftPoint, theBottomRightPoint, theState)
5757             RaiseIfFailed("GetShapesOnQuadrangleIDs", self.ShapesOp)
5758             return aList
5759
5760         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5761         #  the specified \a theBox by the certain way, defined through \a theState parameter.
5762         #  @param theBox Shape for relative comparing.
5763         #  @param theShape Shape to find sub-shapes of.
5764         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5765         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5766         #  @param theName Object name; when specified, this parameter is used
5767         #         for result publication in the study. Otherwise, if automatic
5768         #         publication is switched on, default value is used for result name.
5769         #
5770         #  @return List of all found sub-shapes.
5771         #
5772         #  @ref swig_GetShapesOnBox "Example"
5773         @ManageTransactions("ShapesOp")
5774         def GetShapesOnBox(self, theBox, theShape, theShapeType, theState, theName=None):
5775             """
5776             Find in theShape all sub-shapes of type theShapeType, situated relatively
5777             the specified theBox by the certain way, defined through theState parameter.
5778
5779             Parameters:
5780                 theBox Shape for relative comparing.
5781                 theShape Shape to find sub-shapes of.
5782                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5783                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5784                 theName Object name; when specified, this parameter is used
5785                         for result publication in the study. Otherwise, if automatic
5786                         publication is switched on, default value is used for result name.
5787
5788             Returns:
5789                 List of all found sub-shapes.
5790             """
5791             # Example: see GEOM_TestOthers.py
5792             aList = self.ShapesOp.GetShapesOnBox(theBox, theShape, theShapeType, theState)
5793             RaiseIfFailed("GetShapesOnBox", self.ShapesOp)
5794             self._autoPublish(aList, theName, "shapeOnBox")
5795             return aList
5796
5797         ## Find in \a theShape all sub-shapes of type \a theShapeType, situated relatively
5798         #  the specified \a theBox by the certain way, defined through \a theState parameter.
5799         #  @param theBox Shape for relative comparing.
5800         #  @param theShape Shape to find sub-shapes of.
5801         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5802         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5803         #
5804         #  @return List of all found sub-shapes indices.
5805         #
5806         #  @ref swig_GetShapesOnBoxIDs "Example"
5807         @ManageTransactions("ShapesOp")
5808         def GetShapesOnBoxIDs(self, theBox, theShape, theShapeType, theState):
5809             """
5810             Find in theShape all sub-shapes of type theShapeType, situated relatively
5811             the specified theBox by the certain way, defined through theState parameter.
5812
5813             Parameters:
5814                 theBox Shape for relative comparing.
5815                 theShape Shape to find sub-shapes of.
5816                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5817                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5818
5819             Returns:
5820                 List of all found sub-shapes indices.
5821             """
5822             # Example: see GEOM_TestOthers.py
5823             aList = self.ShapesOp.GetShapesOnBoxIDs(theBox, theShape, theShapeType, theState)
5824             RaiseIfFailed("GetShapesOnBoxIDs", self.ShapesOp)
5825             return aList
5826
5827         ## Find in \a theShape all sub-shapes of type \a theShapeType,
5828         #  situated relatively the specified \a theCheckShape by the
5829         #  certain way, defined through \a theState parameter.
5830         #  @param theCheckShape Shape for relative comparing. It must be a solid.
5831         #  @param theShape Shape to find sub-shapes of.
5832         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5833         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5834         #  @param theName Object name; when specified, this parameter is used
5835         #         for result publication in the study. Otherwise, if automatic
5836         #         publication is switched on, default value is used for result name.
5837         #
5838         #  @return List of all found sub-shapes.
5839         #
5840         #  @ref swig_GetShapesOnShape "Example"
5841         @ManageTransactions("ShapesOp")
5842         def GetShapesOnShape(self, theCheckShape, theShape, theShapeType, theState, theName=None):
5843             """
5844             Find in theShape all sub-shapes of type theShapeType,
5845             situated relatively the specified theCheckShape by the
5846             certain way, defined through theState parameter.
5847
5848             Parameters:
5849                 theCheckShape Shape for relative comparing. It must be a solid.
5850                 theShape Shape to find sub-shapes of.
5851                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5852                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5853                 theName Object name; when specified, this parameter is used
5854                         for result publication in the study. Otherwise, if automatic
5855                         publication is switched on, default value is used for result name.
5856
5857             Returns:
5858                 List of all found sub-shapes.
5859             """
5860             # Example: see GEOM_TestOthers.py
5861             aList = self.ShapesOp.GetShapesOnShape(theCheckShape, theShape,
5862                                                    theShapeType, theState)
5863             RaiseIfFailed("GetShapesOnShape", self.ShapesOp)
5864             self._autoPublish(aList, theName, "shapeOnShape")
5865             return aList
5866
5867         ## Find in \a theShape all sub-shapes of type \a theShapeType,
5868         #  situated relatively the specified \a theCheckShape by the
5869         #  certain way, defined through \a theState parameter.
5870         #  @param theCheckShape Shape for relative comparing. It must be a solid.
5871         #  @param theShape Shape to find sub-shapes of.
5872         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5873         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5874         #  @param theName Object name; when specified, this parameter is used
5875         #         for result publication in the study. Otherwise, if automatic
5876         #         publication is switched on, default value is used for result name.
5877         #
5878         #  @return All found sub-shapes as compound.
5879         #
5880         #  @ref swig_GetShapesOnShapeAsCompound "Example"
5881         @ManageTransactions("ShapesOp")
5882         def GetShapesOnShapeAsCompound(self, theCheckShape, theShape, theShapeType, theState, theName=None):
5883             """
5884             Find in theShape all sub-shapes of type theShapeType,
5885             situated relatively the specified theCheckShape by the
5886             certain way, defined through theState parameter.
5887
5888             Parameters:
5889                 theCheckShape Shape for relative comparing. It must be a solid.
5890                 theShape Shape to find sub-shapes of.
5891                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5892                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5893                 theName Object name; when specified, this parameter is used
5894                         for result publication in the study. Otherwise, if automatic
5895                         publication is switched on, default value is used for result name.
5896
5897             Returns:
5898                 All found sub-shapes as compound.
5899             """
5900             # Example: see GEOM_TestOthers.py
5901             anObj = self.ShapesOp.GetShapesOnShapeAsCompound(theCheckShape, theShape,
5902                                                              theShapeType, theState)
5903             RaiseIfFailed("GetShapesOnShapeAsCompound", self.ShapesOp)
5904             self._autoPublish(anObj, theName, "shapeOnShape")
5905             return anObj
5906
5907         ## Find in \a theShape all sub-shapes of type \a theShapeType,
5908         #  situated relatively the specified \a theCheckShape by the
5909         #  certain way, defined through \a theState parameter.
5910         #  @param theCheckShape Shape for relative comparing. It must be a solid.
5911         #  @param theShape Shape to find sub-shapes of.
5912         #  @param theShapeType Type of sub-shapes to be retrieved (see ShapeType())
5913         #  @param theState The state of the sub-shapes to find (see GEOM::shape_state)
5914         #
5915         #  @return List of all found sub-shapes indices.
5916         #
5917         #  @ref swig_GetShapesOnShapeIDs "Example"
5918         @ManageTransactions("ShapesOp")
5919         def GetShapesOnShapeIDs(self, theCheckShape, theShape, theShapeType, theState):
5920             """
5921             Find in theShape all sub-shapes of type theShapeType,
5922             situated relatively the specified theCheckShape by the
5923             certain way, defined through theState parameter.
5924
5925             Parameters:
5926                 theCheckShape Shape for relative comparing. It must be a solid.
5927                 theShape Shape to find sub-shapes of.
5928                 theShapeType Type of sub-shapes to be retrieved (see geompy.ShapeType)
5929                 theState The state of the sub-shapes to find (see GEOM::shape_state)
5930
5931             Returns:
5932                 List of all found sub-shapes indices.
5933             """
5934             # Example: see GEOM_TestOthers.py
5935             aList = self.ShapesOp.GetShapesOnShapeIDs(theCheckShape, theShape,
5936                                                       theShapeType, theState)
5937             RaiseIfFailed("GetShapesOnShapeIDs", self.ShapesOp)
5938             return aList
5939
5940         ## Get sub-shape(s) of theShapeWhere, which are
5941         #  coincident with \a theShapeWhat or could be a part of it.
5942         #  @param theShapeWhere Shape to find sub-shapes of.
5943         #  @param theShapeWhat Shape, specifying what to find.
5944         #  @param isNewImplementation implementation of GetInPlace functionality
5945         #             (default = False, old alghorithm based on shape properties)
5946         #  @param theName Object name; when specified, this parameter is used
5947         #         for result publication in the study. Otherwise, if automatic
5948         #         publication is switched on, default value is used for result name.
5949         #
5950         #  @return Compound which includes all found sub-shapes if they have different types; 
5951         #          or group of all found shapes of the equal type; or a single found sub-shape.
5952         #
5953         #  @note This function has a restriction on argument shapes.
5954         #        If \a theShapeWhere has curved parts with significantly
5955         #        outstanding centres (i.e. the mass centre of a part is closer to
5956         #        \a theShapeWhat than to the part), such parts will not be found.
5957         #        @image html get_in_place_lost_part.png
5958         #
5959         #  @ref swig_GetInPlace "Example"
5960         @ManageTransactions("ShapesOp")
5961         def GetInPlace(self, theShapeWhere, theShapeWhat, isNewImplementation = False, theName=None):
5962             """
5963             Get sub-shape(s) of theShapeWhere, which are
5964             coincident with  theShapeWhat or could be a part of it.
5965
5966             Parameters:
5967                 theShapeWhere Shape to find sub-shapes of.
5968                 theShapeWhat Shape, specifying what to find.
5969                 isNewImplementation Implementation of GetInPlace functionality
5970                                     (default = False, old alghorithm based on shape properties)
5971                 theName Object name; when specified, this parameter is used
5972                         for result publication in the study. Otherwise, if automatic
5973                         publication is switched on, default value is used for result name.
5974
5975             Returns:
5976                 Compound which includes all found sub-shapes if they have different types; 
5977                 or group of all found shapes of the equal type; or a single found sub-shape.
5978
5979
5980             Note:
5981                 This function has a restriction on argument shapes.
5982                 If theShapeWhere has curved parts with significantly
5983                 outstanding centres (i.e. the mass centre of a part is closer to
5984                 theShapeWhat than to the part), such parts will not be found.
5985             """
5986             # Example: see GEOM_TestOthers.py
5987             anObj = None
5988             if isNewImplementation:
5989                 anObj = self.ShapesOp.GetInPlace(theShapeWhere, theShapeWhat)
5990             else:
5991                 anObj = self.ShapesOp.GetInPlaceOld(theShapeWhere, theShapeWhat)
5992                 pass
5993             RaiseIfFailed("GetInPlace", self.ShapesOp)
5994             self._autoPublish(anObj, theName, "inplace")
5995             return anObj
5996
5997         ## Get sub-shape(s) of \a theShapeWhere, which are
5998         #  coincident with \a theShapeWhat or could be a part of it.
5999         #
6000         #  Implementation of this method is based on a saved history of an operation,
6001         #  produced \a theShapeWhere. The \a theShapeWhat must be among this operation's
6002         #  arguments (an argument shape or a sub-shape of an argument shape).
6003         #  The operation could be the Partition or one of boolean operations,
6004         #  performed on simple shapes (not on compounds).
6005         #
6006         #  @param theShapeWhere Shape to find sub-shapes of.
6007         #  @param theShapeWhat Shape, specifying what to find (must be in the
6008         #                      building history of the ShapeWhere).
6009         #  @param theName Object name; when specified, this parameter is used
6010         #         for result publication in the study. Otherwise, if automatic
6011         #         publication is switched on, default value is used for result name.
6012         #
6013         #  @return Compound which includes all found sub-shapes if they have different types; 
6014         #          or group of all found shapes of the equal type; or a single found sub-shape.
6015         #
6016         #  @ref swig_GetInPlace "Example"
6017         @ManageTransactions("ShapesOp")
6018         def GetInPlaceByHistory(self, theShapeWhere, theShapeWhat, theName=None):
6019             """
6020             Implementation of this method is based on a saved history of an operation,
6021             produced theShapeWhere. The theShapeWhat must be among this operation's
6022             arguments (an argument shape or a sub-shape of an argument shape).
6023             The operation could be the Partition or one of boolean operations,
6024             performed on simple shapes (not on compounds).
6025
6026             Parameters:
6027                 theShapeWhere Shape to find sub-shapes of.
6028                 theShapeWhat Shape, specifying what to find (must be in the
6029                                 building history of the ShapeWhere).
6030                 theName Object name; when specified, this parameter is used
6031                         for result publication in the study. Otherwise, if automatic
6032                         publication is switched on, default value is used for result name.
6033
6034             Returns:
6035                 Compound which includes all found sub-shapes if they have different types; 
6036                 or group of all found shapes of the equal type; or a single found sub-shape.
6037             """
6038             # Example: see GEOM_TestOthers.py
6039             anObj = self.ShapesOp.GetInPlaceByHistory(theShapeWhere, theShapeWhat)
6040             RaiseIfFailed("GetInPlaceByHistory", self.ShapesOp)
6041             self._autoPublish(anObj, theName, "inplace")
6042             return anObj
6043
6044         ## A sort of GetInPlace functionality, returning IDs of sub-shapes.
6045         #  For each sub-shape ID of @a theShapeWhat return a list of corresponding sub-shape
6046         #  IDs of @a theShapeWhere.
6047         #  For example, if theShapeWhat is a box and theShapeWhere is this box cut into 
6048         #  two parts by a plane, then the result can be as this: 
6049         #    len( result_list ) = 35,
6050         #    result_list[ 1 ] = [ 2, 36 ], which means that the box  (ID 1) turned into two
6051         #  solids with IDs 2 and 36 within theShapeWhere
6052         #
6053         #  @param theShapeWhere Shape to find sub-shapes of.
6054         #  @param theShapeWhat Shape, specifying what to find.
6055         #  @return List of lists of sub-shape IDS of theShapeWhere.
6056         def GetInPlaceMap(self, theShapeWhere, theShapeWhat):
6057             """
6058             A sort of GetInPlace functionality, returning IDs of sub-shapes.
6059             For each sub-shape ID of @a theShapeWhat return a list of corresponding sub-shape
6060             IDs of @a theShapeWhere.
6061             For example, if theShapeWhat is a box and theShapeWhere is this box cut into 
6062             two parts by a plane, then the result can be as this: 
6063               len( result_list ) = 35,
6064               result_list[ 1 ] = [ 2, 36 ], which means that the box (ID 1) turned into two
6065             solids with IDs 2 and 36 within theShapeWhere
6066
6067             Parameters:
6068                 theShapeWhere Shape to find sub-shapes of.
6069                 theShapeWhat Shape, specifying what to find.
6070
6071             Returns:
6072                 List of lists of sub-shape IDS of theShapeWhere.
6073             """
6074             return self.ShapesOp.GetInPlaceMap(theShapeWhere, theShapeWhat)
6075
6076         ## Get sub-shape of theShapeWhere, which is
6077         #  equal to \a theShapeWhat.
6078         #  @param theShapeWhere Shape to find sub-shape of.
6079         #  @param theShapeWhat Shape, specifying what to find.
6080         #  @param theName Object name; when specified, this parameter is used
6081         #         for result publication in the study. Otherwise, if automatic
6082         #         publication is switched on, default value is used for result name.
6083         #
6084         #  @return New GEOM.GEOM_Object for found sub-shape.
6085         #
6086         #  @ref swig_GetSame "Example"
6087         @ManageTransactions("ShapesOp")
6088         def GetSame(self, theShapeWhere, theShapeWhat, theName=None):
6089             """
6090             Get sub-shape of theShapeWhere, which is
6091             equal to theShapeWhat.
6092
6093             Parameters:
6094                 theShapeWhere Shape to find sub-shape of.
6095                 theShapeWhat Shape, specifying what to find.
6096                 theName Object name; when specified, this parameter is used
6097                         for result publication in the study. Otherwise, if automatic
6098                         publication is switched on, default value is used for result name.
6099
6100             Returns:
6101                 New GEOM.GEOM_Object for found sub-shape.
6102             """
6103             anObj = self.ShapesOp.GetSame(theShapeWhere, theShapeWhat)
6104             RaiseIfFailed("GetSame", self.ShapesOp)
6105             self._autoPublish(anObj, theName, "sameShape")
6106             return anObj
6107
6108
6109         ## Get sub-shape indices of theShapeWhere, which is
6110         #  equal to \a theShapeWhat.
6111         #  @param theShapeWhere Shape to find sub-shape of.
6112         #  @param theShapeWhat Shape, specifying what to find.
6113         #  @return List of all found sub-shapes indices.
6114         #
6115         #  @ref swig_GetSame "Example"
6116         @ManageTransactions("ShapesOp")
6117         def GetSameIDs(self, theShapeWhere, theShapeWhat):
6118             """
6119             Get sub-shape indices of theShapeWhere, which is
6120             equal to theShapeWhat.
6121
6122             Parameters:
6123                 theShapeWhere Shape to find sub-shape of.
6124                 theShapeWhat Shape, specifying what to find.
6125
6126             Returns:
6127                 List of all found sub-shapes indices.
6128             """
6129             anObj = self.ShapesOp.GetSameIDs(theShapeWhere, theShapeWhat)
6130             RaiseIfFailed("GetSameIDs", self.ShapesOp)
6131             return anObj
6132
6133         ## Resize the input edge with the new Min and Max parameters.
6134         #  The input edge parameters range is [0, 1]. If theMin parameter is
6135         #  negative, the input edge is extended, otherwise it is shrinked by
6136         #  theMin parameter. If theMax is greater than 1, the edge is extended,
6137         #  otherwise it is shrinked by theMax parameter.
6138         #  @param theEdge the input edge to be resized.
6139         #  @param theMin the minimal parameter value.
6140         #  @param theMax the maximal parameter value.
6141         #  @param theName Object name; when specified, this parameter is used
6142         #         for result publication in the study. Otherwise, if automatic
6143         #         publication is switched on, default value is used for result name.
6144         #  @return New GEOM.GEOM_Object, containing the created edge.
6145         #
6146         #  @ref tui_extend "Example"
6147         @ManageTransactions("ShapesOp")
6148         def ExtendEdge(self, theEdge, theMin, theMax, theName=None):
6149             """
6150             Resize the input edge with the new Min and Max parameters.
6151             The input edge parameters range is [0, 1]. If theMin parameter is
6152             negative, the input edge is extended, otherwise it is shrinked by
6153             theMin parameter. If theMax is greater than 1, the edge is extended,
6154             otherwise it is shrinked by theMax parameter.
6155
6156             Parameters:
6157                 theEdge the input edge to be resized.
6158                 theMin the minimal parameter value.
6159                 theMax the maximal parameter value.
6160                 theName Object name; when specified, this parameter is used
6161                         for result publication in the study. Otherwise, if automatic
6162                         publication is switched on, default value is used for result name.
6163
6164             Returns:
6165                 New GEOM.GEOM_Object, containing the created edge.
6166             """
6167             theMin, theMax, Parameters = ParseParameters(theMin, theMax)
6168             anObj = self.ShapesOp.ExtendEdge(theEdge, theMin, theMax)
6169             RaiseIfFailed("ExtendEdge", self.ShapesOp)
6170             anObj.SetParameters(Parameters)
6171             self._autoPublish(anObj, theName, "edge")
6172             return anObj
6173
6174         ## Resize the input face with the new UMin, UMax, VMin and VMax
6175         #  parameters. The input face U and V parameters range is [0, 1]. If
6176         #  theUMin parameter is negative, the input face is extended, otherwise
6177         #  it is shrinked along U direction by theUMin parameter. If theUMax is
6178         #  greater than 1, the face is extended, otherwise it is shrinked along
6179         #  U direction by theUMax parameter. So as for theVMin, theVMax and
6180         #  V direction of the input face.
6181         #  @param theFace the input face to be resized.
6182         #  @param theUMin the minimal U parameter value.
6183         #  @param theUMax the maximal U parameter value.
6184         #  @param theVMin the minimal V parameter value.
6185         #  @param theVMax the maximal V parameter value.
6186         #  @param theName Object name; when specified, this parameter is used
6187         #         for result publication in the study. Otherwise, if automatic
6188         #         publication is switched on, default value is used for result name.
6189         #  @return New GEOM.GEOM_Object, containing the created face.
6190         #
6191         #  @ref tui_extend "Example"
6192         @ManageTransactions("ShapesOp")
6193         def ExtendFace(self, theFace, theUMin, theUMax,
6194                        theVMin, theVMax, theName=None):
6195             """
6196             Resize the input face with the new UMin, UMax, VMin and VMax
6197             parameters. The input face U and V parameters range is [0, 1]. If
6198             theUMin parameter is negative, the input face is extended, otherwise
6199             it is shrinked along U direction by theUMin parameter. If theUMax is
6200             greater than 1, the face is extended, otherwise it is shrinked along
6201             U direction by theUMax parameter. So as for theVMin, theVMax and
6202             V direction of the input face.
6203
6204             Parameters:
6205                 theFace the input face to be resized.
6206                 theUMin the minimal U parameter value.
6207                 theUMax the maximal U parameter value.
6208                 theVMin the minimal V parameter value.
6209                 theVMax the maximal V parameter value.
6210                 theName Object name; when specified, this parameter is used
6211                         for result publication in the study. Otherwise, if automatic
6212                         publication is switched on, default value is used for result name.
6213
6214             Returns:
6215                 New GEOM.GEOM_Object, containing the created face.
6216             """
6217             theUMin, theUMax, theVMin, theVMax, Parameters = ParseParameters(theUMin, theUMax, theVMin, theVMax)
6218             anObj = self.ShapesOp.ExtendFace(theFace, theUMin, theUMax,
6219                                              theVMin, theVMax)
6220             RaiseIfFailed("ExtendFace", self.ShapesOp)
6221             anObj.SetParameters(Parameters)
6222             self._autoPublish(anObj, theName, "face")
6223             return anObj
6224
6225         ## This function takes some face as input parameter and creates new
6226         #  GEOM_Object, i.e. topological shape by extracting underlying surface
6227         #  of the source face and limiting it by the Umin, Umax, Vmin, Vmax
6228         #  parameters of the source face (in the parametrical space).
6229         #  @param theFace the input face.
6230         #  @param theName Object name; when specified, this parameter is used
6231         #         for result publication in the study. Otherwise, if automatic
6232         #         publication is switched on, default value is used for result name.
6233         #  @return New GEOM.GEOM_Object, containing the created face.
6234         #
6235         #  @ref tui_creation_surface "Example"
6236         @ManageTransactions("ShapesOp")
6237         def MakeSurfaceFromFace(self, theFace, theName=None):
6238             """
6239             This function takes some face as input parameter and creates new
6240             GEOM_Object, i.e. topological shape by extracting underlying surface
6241             of the source face and limiting it by the Umin, Umax, Vmin, Vmax
6242             parameters of the source face (in the parametrical space).
6243
6244             Parameters:
6245                 theFace the input face.
6246                 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             Returns:
6251                 New GEOM.GEOM_Object, containing the created face.
6252             """
6253             anObj = self.ShapesOp.MakeSurfaceFromFace(theFace)
6254             RaiseIfFailed("MakeSurfaceFromFace", self.ShapesOp)
6255             self._autoPublish(anObj, theName, "surface")
6256             return anObj
6257
6258         # end of l4_obtain
6259         ## @}
6260
6261         ## @addtogroup l4_access
6262         ## @{
6263
6264         ## Obtain a composite sub-shape of <VAR>aShape</VAR>, composed from sub-shapes
6265         #  of aShape, selected by their unique IDs inside <VAR>aShape</VAR>
6266         #  @param aShape Shape to get sub-shape of.
6267         #  @param ListOfID List of sub-shapes indices.
6268         #  @param theName Object name; when specified, this parameter is used
6269         #         for result publication in the study. Otherwise, if automatic
6270         #         publication is switched on, default value is used for result name.
6271         #
6272         #  @return Found sub-shape.
6273         #
6274         #  @ref swig_all_decompose "Example"
6275         def GetSubShape(self, aShape, ListOfID, theName=None):
6276             """
6277             Obtain a composite sub-shape of aShape, composed from sub-shapes
6278             of aShape, selected by their unique IDs inside aShape
6279
6280             Parameters:
6281                 aShape Shape to get sub-shape of.
6282                 ListOfID List of sub-shapes indices.
6283                 theName Object name; when specified, this parameter is used
6284                         for result publication in the study. Otherwise, if automatic
6285                         publication is switched on, default value is used for result name.
6286
6287             Returns:
6288                 Found sub-shape.
6289             """
6290             # Example: see GEOM_TestAll.py
6291             anObj = self.AddSubShape(aShape,ListOfID)
6292             self._autoPublish(anObj, theName, "subshape")
6293             return anObj
6294
6295         ## Obtain unique ID of sub-shape <VAR>aSubShape</VAR> inside <VAR>aShape</VAR>
6296         #  of aShape, selected by their unique IDs inside <VAR>aShape</VAR>
6297         #  @param aShape Shape to get sub-shape of.
6298         #  @param aSubShape Sub-shapes of aShape.
6299         #  @return ID of found sub-shape.
6300         #
6301         #  @ref swig_all_decompose "Example"
6302         @ManageTransactions("LocalOp")
6303         def GetSubShapeID(self, aShape, aSubShape):
6304             """
6305             Obtain unique ID of sub-shape aSubShape inside aShape
6306             of aShape, selected by their unique IDs inside aShape
6307
6308             Parameters:
6309                aShape Shape to get sub-shape of.
6310                aSubShape Sub-shapes of aShape.
6311
6312             Returns:
6313                ID of found sub-shape.
6314             """
6315             # Example: see GEOM_TestAll.py
6316             anID = self.LocalOp.GetSubShapeIndex(aShape, aSubShape)
6317             RaiseIfFailed("GetSubShapeIndex", self.LocalOp)
6318             return anID
6319
6320         ## Obtain unique IDs of sub-shapes <VAR>aSubShapes</VAR> inside <VAR>aShape</VAR>
6321         #  This function is provided for performance purpose. The complexity is O(n) with n
6322         #  the number of subobjects of aShape
6323         #  @param aShape Shape to get sub-shape of.
6324         #  @param aSubShapes Sub-shapes of aShape.
6325         #  @return list of IDs of found sub-shapes.
6326         #
6327         #  @ref swig_all_decompose "Example"
6328         @ManageTransactions("ShapesOp")
6329         def GetSubShapesIDs(self, aShape, aSubShapes):
6330             """
6331             Obtain a list of IDs of sub-shapes aSubShapes inside aShape
6332             This function is provided for performance purpose. The complexity is O(n) with n
6333             the number of subobjects of aShape
6334
6335             Parameters:
6336                aShape Shape to get sub-shape of.
6337                aSubShapes Sub-shapes of aShape.
6338
6339             Returns:
6340                List of IDs of found sub-shape.
6341             """
6342             # Example: see GEOM_TestAll.py
6343             anIDs = self.ShapesOp.GetSubShapesIndices(aShape, aSubShapes)
6344             RaiseIfFailed("GetSubShapesIndices", self.ShapesOp)
6345             return anIDs
6346
6347         # end of l4_access
6348         ## @}
6349
6350         ## @addtogroup l4_decompose
6351         ## @{
6352
6353         ## Get all sub-shapes and groups of \a theShape,
6354         #  that were created already by any other methods.
6355         #  @param theShape Any shape.
6356         #  @param theGroupsOnly If this parameter is TRUE, only groups will be
6357         #                       returned, else all found sub-shapes and groups.
6358         #  @return List of existing sub-objects of \a theShape.
6359         #
6360         #  @ref swig_all_decompose "Example"
6361         @ManageTransactions("ShapesOp")
6362         def GetExistingSubObjects(self, theShape, theGroupsOnly = False):
6363             """
6364             Get all sub-shapes and groups of theShape,
6365             that were created already by any other methods.
6366
6367             Parameters:
6368                 theShape Any shape.
6369                 theGroupsOnly If this parameter is TRUE, only groups will be
6370                                  returned, else all found sub-shapes and groups.
6371
6372             Returns:
6373                 List of existing sub-objects of theShape.
6374             """
6375             # Example: see GEOM_TestAll.py
6376             ListObj = self.ShapesOp.GetExistingSubObjects(theShape, theGroupsOnly)
6377             RaiseIfFailed("GetExistingSubObjects", self.ShapesOp)
6378             return ListObj
6379
6380         ## Get all groups of \a theShape,
6381         #  that were created already by any other methods.
6382         #  @param theShape Any shape.
6383         #  @return List of existing groups of \a theShape.
6384         #
6385         #  @ref swig_all_decompose "Example"
6386         @ManageTransactions("ShapesOp")
6387         def GetGroups(self, theShape):
6388             """
6389             Get all groups of theShape,
6390             that were created already by any other methods.
6391
6392             Parameters:
6393                 theShape Any shape.
6394
6395             Returns:
6396                 List of existing groups of theShape.
6397             """
6398             # Example: see GEOM_TestAll.py
6399             ListObj = self.ShapesOp.GetExistingSubObjects(theShape, True)
6400             RaiseIfFailed("GetExistingSubObjects", self.ShapesOp)
6401             return ListObj
6402
6403         ## Explode a shape on sub-shapes of a given type.
6404         #  If the shape itself matches the type, it is also returned.
6405         #  @param aShape Shape to be exploded.
6406         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6407         #  @param theName Object name; when specified, this parameter is used
6408         #         for result publication in the study. Otherwise, if automatic
6409         #         publication is switched on, default value is used for result name.
6410         #
6411         #  @return List of sub-shapes of type theShapeType, contained in theShape.
6412         #
6413         #  @ref swig_all_decompose "Example"
6414         @ManageTransactions("ShapesOp")
6415         def SubShapeAll(self, aShape, aType, theName=None):
6416             """
6417             Explode a shape on sub-shapes of a given type.
6418             If the shape itself matches the type, it is also returned.
6419
6420             Parameters:
6421                 aShape Shape to be exploded.
6422                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6423                 theName Object name; when specified, this parameter is used
6424                         for result publication in the study. Otherwise, if automatic
6425                         publication is switched on, default value is used for result name.
6426
6427             Returns:
6428                 List of sub-shapes of type theShapeType, contained in theShape.
6429             """
6430             # Example: see GEOM_TestAll.py
6431             ListObj = self.ShapesOp.MakeAllSubShapes(aShape, EnumToLong( aType ), False)
6432             RaiseIfFailed("SubShapeAll", self.ShapesOp)
6433             self._autoPublish(ListObj, theName, "subshape")
6434             return ListObj
6435
6436         ## Explode a shape on sub-shapes of a given type.
6437         #  @param aShape Shape to be exploded.
6438         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6439         #  @return List of IDs of sub-shapes.
6440         #
6441         #  @ref swig_all_decompose "Example"
6442         @ManageTransactions("ShapesOp")
6443         def SubShapeAllIDs(self, aShape, aType):
6444             """
6445             Explode a shape on sub-shapes of a given type.
6446
6447             Parameters:
6448                 aShape Shape to be exploded (see geompy.ShapeType)
6449                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6450
6451             Returns:
6452                 List of IDs of sub-shapes.
6453             """
6454             ListObj = self.ShapesOp.GetAllSubShapesIDs(aShape, EnumToLong( aType ), False)
6455             RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
6456             return ListObj
6457
6458         ## Obtain a compound of sub-shapes of <VAR>aShape</VAR>,
6459         #  selected by their indices in list of all sub-shapes of type <VAR>aType</VAR>.
6460         #  Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6461         #  @param aShape Shape to get sub-shape of.
6462         #  @param ListOfInd List of sub-shapes indices.
6463         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6464         #  @param theName Object name; when specified, this parameter is used
6465         #         for result publication in the study. Otherwise, if automatic
6466         #         publication is switched on, default value is used for result name.
6467         #
6468         #  @return A compound of sub-shapes of aShape.
6469         #
6470         #  @ref swig_all_decompose "Example"
6471         def SubShape(self, aShape, aType, ListOfInd, theName=None):
6472             """
6473             Obtain a compound of sub-shapes of aShape,
6474             selected by their indices in list of all sub-shapes of type aType.
6475             Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6476
6477             Parameters:
6478                 aShape Shape to get sub-shape of.
6479                 ListOfID List of sub-shapes indices.
6480                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6481                 theName Object name; when specified, this parameter is used
6482                         for result publication in the study. Otherwise, if automatic
6483                         publication is switched on, default value is used for result name.
6484
6485             Returns:
6486                 A compound of sub-shapes of aShape.
6487             """
6488             # Example: see GEOM_TestAll.py
6489             ListOfIDs = []
6490             AllShapeIDsList = self.SubShapeAllIDs(aShape, EnumToLong( aType ))
6491             for ind in ListOfInd:
6492                 ListOfIDs.append(AllShapeIDsList[ind - 1])
6493             # note: auto-publishing is done in self.GetSubShape()
6494             anObj = self.GetSubShape(aShape, ListOfIDs, theName)
6495             return anObj
6496
6497         ## Explode a shape on sub-shapes of a given type.
6498         #  Sub-shapes will be sorted taking into account their gravity centers,
6499         #  to provide stable order of sub-shapes. Please see
6500         #  @ref sorting_shapes_page "Description of Sorting Shapes Algorithm".
6501         #  If the shape itself matches the type, it is also returned.
6502         #  @param aShape Shape to be exploded.
6503         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6504         #  @param theName Object name; when specified, this parameter is used
6505         #         for result publication in the study. Otherwise, if automatic
6506         #         publication is switched on, default value is used for result name.
6507         #
6508         #  @return List of sub-shapes of type theShapeType, contained in theShape.
6509         #
6510         #  @ref swig_SubShapeAllSorted "Example"
6511         @ManageTransactions("ShapesOp")
6512         def SubShapeAllSortedCentres(self, aShape, aType, theName=None):
6513             """
6514             Explode a shape on sub-shapes of a given type.
6515             Sub-shapes will be sorted taking into account their gravity centers,
6516             to provide stable order of sub-shapes.
6517             If the shape itself matches the type, it is also returned.
6518
6519             Parameters:
6520                 aShape Shape to be exploded.
6521                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6522                 theName Object name; when specified, this parameter is used
6523                         for result publication in the study. Otherwise, if automatic
6524                         publication is switched on, default value is used for result name.
6525
6526             Returns:
6527                 List of sub-shapes of type theShapeType, contained in theShape.
6528             """
6529             # Example: see GEOM_TestAll.py
6530             ListObj = self.ShapesOp.MakeAllSubShapes(aShape, EnumToLong( aType ), True)
6531             RaiseIfFailed("SubShapeAllSortedCentres", self.ShapesOp)
6532             self._autoPublish(ListObj, theName, "subshape")
6533             return ListObj
6534
6535         ## Explode a shape on sub-shapes of a given type.
6536         #  Sub-shapes will be sorted taking into account their gravity centers,
6537         #  to provide stable order of sub-shapes. Please see
6538         #  @ref sorting_shapes_page "Description of Sorting Shapes Algorithm".
6539         #  @param aShape Shape to be exploded.
6540         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6541         #  @return List of IDs of sub-shapes.
6542         #
6543         #  @ref swig_all_decompose "Example"
6544         @ManageTransactions("ShapesOp")
6545         def SubShapeAllSortedCentresIDs(self, aShape, aType):
6546             """
6547             Explode a shape on sub-shapes of a given type.
6548             Sub-shapes will be sorted taking into account their gravity centers,
6549             to provide stable order of sub-shapes.
6550
6551             Parameters:
6552                 aShape Shape to be exploded.
6553                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6554
6555             Returns:
6556                 List of IDs of sub-shapes.
6557             """
6558             ListIDs = self.ShapesOp.GetAllSubShapesIDs(aShape, EnumToLong( aType ), True)
6559             RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
6560             return ListIDs
6561
6562         ## Obtain a compound of sub-shapes of <VAR>aShape</VAR>,
6563         #  selected by they indices in sorted list of all sub-shapes of type <VAR>aType</VAR>.
6564         #  Please see @ref sorting_shapes_page "Description of Sorting Shapes Algorithm".
6565         #  Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6566         #  @param aShape Shape to get sub-shape of.
6567         #  @param ListOfInd List of sub-shapes indices.
6568         #  @param aType Type of sub-shapes to be retrieved (see ShapeType())
6569         #  @param theName Object name; when specified, this parameter is used
6570         #         for result publication in the study. Otherwise, if automatic
6571         #         publication is switched on, default value is used for result name.
6572         #
6573         #  @return A compound of sub-shapes of aShape.
6574         #
6575         #  @ref swig_all_decompose "Example"
6576         def SubShapeSortedCentres(self, aShape, aType, ListOfInd, theName=None):
6577             """
6578             Obtain a compound of sub-shapes of aShape,
6579             selected by they indices in sorted list of all sub-shapes of type aType.
6580             Each index is in range [1, Nb_Sub-Shapes_Of_Given_Type]
6581
6582             Parameters:
6583                 aShape Shape to get sub-shape of.
6584                 ListOfID List of sub-shapes indices.
6585                 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6586                 theName Object name; when specified, this parameter is used
6587                         for result publication in the study. Otherwise, if automatic
6588                         publication is switched on, default value is used for result name.
6589
6590             Returns:
6591                 A compound of sub-shapes of aShape.
6592             """
6593             # Example: see GEOM_TestAll.py
6594             ListOfIDs = []
6595             AllShapeIDsList = self.SubShapeAllSortedCentresIDs(aShape, EnumToLong( aType ))
6596             for ind in ListOfInd:
6597                 ListOfIDs.append(AllShapeIDsList[ind - 1])
6598             # note: auto-publishing is done in self.GetSubShape()
6599             anObj = self.GetSubShape(aShape, ListOfIDs, theName)
6600             return anObj
6601
6602         ## Extract shapes (excluding the main shape) of given type.
6603         #  @param aShape The shape.
6604         #  @param aType  The shape type (see ShapeType())
6605         #  @param isSorted Boolean flag to switch sorting on/off. Please see
6606         #         @ref sorting_shapes_page "Description of Sorting Shapes Algorithm".
6607         #  @param theName Object name; when specified, this parameter is used
6608         #         for result publication in the study. Otherwise, if automatic
6609         #         publication is switched on, default value is used for result name.
6610         #
6611         #  @return List of sub-shapes of type aType, contained in aShape.
6612         #
6613         #  @ref swig_FilletChamfer "Example"
6614         @ManageTransactions("ShapesOp")
6615         def ExtractShapes(self, aShape, aType, isSorted = False, theName=None):
6616             """
6617             Extract shapes (excluding the main shape) of given type.
6618
6619             Parameters:
6620                 aShape The shape.
6621                 aType  The shape type (see geompy.ShapeType)
6622                 isSorted Boolean flag to switch sorting on/off.
6623                 theName Object name; when specified, this parameter is used
6624                         for result publication in the study. Otherwise, if automatic
6625                         publication is switched on, default value is used for result name.
6626
6627             Returns:
6628                 List of sub-shapes of type aType, contained in aShape.
6629             """
6630             # Example: see GEOM_TestAll.py
6631             ListObj = self.ShapesOp.ExtractSubShapes(aShape, EnumToLong( aType ), isSorted)
6632             RaiseIfFailed("ExtractSubShapes", self.ShapesOp)
6633             self._autoPublish(ListObj, theName, "subshape")
6634             return ListObj
6635
6636         ## Get a set of sub-shapes defined by their unique IDs inside <VAR>aShape</VAR>
6637         #  @param aShape Main shape.
6638         #  @param anIDs List of unique IDs of sub-shapes inside <VAR>aShape</VAR>.
6639         #  @param theName Object name; when specified, this parameter is used
6640         #         for result publication in the study. Otherwise, if automatic
6641         #         publication is switched on, default value is used for result name.
6642         #  @return List of GEOM.GEOM_Object, corresponding to found sub-shapes.
6643         #
6644         #  @ref swig_all_decompose "Example"
6645         @ManageTransactions("ShapesOp")
6646         def SubShapes(self, aShape, anIDs, theName=None):
6647             """
6648             Get a set of sub-shapes defined by their unique IDs inside theMainShape
6649
6650             Parameters:
6651                 aShape Main shape.
6652                 anIDs List of unique IDs of sub-shapes inside theMainShape.
6653                 theName Object name; when specified, this parameter is used
6654                         for result publication in the study. Otherwise, if automatic
6655                         publication is switched on, default value is used for result name.
6656
6657             Returns:
6658                 List of GEOM.GEOM_Object, corresponding to found sub-shapes.
6659             """
6660             # Example: see GEOM_TestAll.py
6661             ListObj = self.ShapesOp.MakeSubShapes(aShape, anIDs)
6662             RaiseIfFailed("SubShapes", self.ShapesOp)
6663             self._autoPublish(ListObj, theName, "subshape")
6664             return ListObj
6665
6666         ## Explode a shape into edges sorted in a row from a starting point.
6667         #  @param theShape the shape to be exploded on edges.
6668         #  @param theStartPoint the starting point.
6669         #  @param theName Object name; when specified, this parameter is used
6670         #         for result publication in the study. Otherwise, if automatic
6671         #         publication is switched on, default value is used for result name.
6672         #  @return List of GEOM.GEOM_Object that is actually an ordered list
6673         #          of edges sorted in a row from a starting point.
6674         #
6675         #  @ref swig_GetSubShapeEdgeSorted "Example"
6676         @ManageTransactions("ShapesOp")
6677         def GetSubShapeEdgeSorted(self, theShape, theStartPoint, theName=None):
6678             """
6679             Explode a shape into edges sorted in a row from a starting point.
6680
6681             Parameters:
6682                 theShape the shape to be exploded on edges.
6683                 theStartPoint the starting point.
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                 List of GEOM.GEOM_Object that is actually an ordered list
6690                 of edges sorted in a row from a starting point.
6691             """
6692             # Example: see GEOM_TestAll.py
6693             ListObj = self.ShapesOp.GetSubShapeEdgeSorted(theShape, theStartPoint)
6694             RaiseIfFailed("GetSubShapeEdgeSorted", self.ShapesOp)
6695             self._autoPublish(ListObj, theName, "SortedEdges")
6696             return ListObj
6697
6698         ##
6699         # Return the list of subshapes that satisfies a certain tolerance
6700         # criterion. The user defines the type of shapes to be returned, the
6701         # condition and the tolerance value. The operation is defined for
6702         # faces, edges and vertices only. E.g. for theShapeType FACE,
6703         # theCondition GEOM::CC_GT and theTolerance 1.e-7 this method returns
6704         # all faces of theShape that have tolerances greater then 1.e7.
6705         #
6706         #  @param theShape the shape to be exploded
6707         #  @param theShapeType the type of sub-shapes to be returned (see
6708         #         ShapeType()). Can have the values FACE, EDGE and VERTEX only.
6709         #  @param theCondition the condition type (see GEOM::comparison_condition).
6710         #  @param theTolerance the tolerance filter.
6711         #  @param theName Object name; when specified, this parameter is used
6712         #         for result publication in the study. Otherwise, if automatic
6713         #         publication is switched on, default value is used for result name.
6714         #  @return the list of shapes that satisfy the conditions.
6715         #
6716         #  @ref swig_GetSubShapesWithTolerance "Example"
6717         @ManageTransactions("ShapesOp")
6718         def GetSubShapesWithTolerance(self, theShape, theShapeType,
6719                                       theCondition, theTolerance, theName=None):
6720             """
6721             Return the list of subshapes that satisfies a certain tolerance
6722             criterion. The user defines the type of shapes to be returned, the
6723             condition and the tolerance value. The operation is defined for
6724             faces, edges and vertices only. E.g. for theShapeType FACE,
6725             theCondition GEOM::CC_GT and theTolerance 1.e-7 this method returns
6726             all faces of theShape that have tolerances greater then 1.e7.
6727             
6728             Parameters:
6729                 theShape the shape to be exploded
6730                 theShapeType the type of sub-shapes to be returned (see
6731                              ShapeType()). Can have the values FACE,
6732                              EDGE and VERTEX only.
6733                 theCondition the condition type (see GEOM::comparison_condition).
6734                 theTolerance the tolerance filter.
6735                 theName Object name; when specified, this parameter is used
6736                         for result publication in the study. Otherwise, if automatic
6737                         publication is switched on, default value is used for result name.
6738
6739             Returns:
6740                 The list of shapes that satisfy the conditions.
6741             """
6742             # Example: see GEOM_TestAll.py
6743             ListObj = self.ShapesOp.GetSubShapesWithTolerance(theShape, EnumToLong(theShapeType),
6744                                                               theCondition, theTolerance)
6745             RaiseIfFailed("GetSubShapesWithTolerance", self.ShapesOp)
6746             self._autoPublish(ListObj, theName, "SubShapeWithTolerance")
6747             return ListObj
6748
6749         ## Check if the object is a sub-object of another GEOM object.
6750         #  @param aSubObject Checked sub-object (or its parent object, in case if
6751         #         \a theSubObjectIndex is non-zero).
6752         #  @param anObject An object that is checked for ownership (or its parent object,
6753         #         in case if \a theObjectIndex is non-zero).
6754         #  @param aSubObjectIndex When non-zero, specifies a sub-shape index that
6755         #         identifies a sub-object within its parent specified via \a theSubObject.
6756         #  @param anObjectIndex When non-zero, specifies a sub-shape index that
6757         #         identifies an object within its parent specified via \a theObject.
6758         #  @return TRUE, if the given object contains sub-object.
6759         @ManageTransactions("ShapesOp")
6760         def IsSubShapeBelongsTo(self, aSubObject, anObject, aSubObjectIndex = 0, anObjectIndex = 0):
6761             """
6762             Check if the object is a sub-object of another GEOM object.
6763             
6764             Parameters:
6765                 aSubObject Checked sub-object (or its parent object, in case if
6766                     \a theSubObjectIndex is non-zero).
6767                 anObject An object that is checked for ownership (or its parent object,
6768                     in case if \a theObjectIndex is non-zero).
6769                 aSubObjectIndex When non-zero, specifies a sub-shape index that
6770                     identifies a sub-object within its parent specified via \a theSubObject.
6771                 anObjectIndex When non-zero, specifies a sub-shape index that
6772                     identifies an object within its parent specified via \a theObject.
6773
6774             Returns
6775                 TRUE, if the given object contains sub-object.
6776             """
6777             IsOk = self.ShapesOp.IsSubShapeBelongsTo(aSubObject, aSubObjectIndex, anObject, anObjectIndex)
6778             RaiseIfFailed("IsSubShapeBelongsTo", self.ShapesOp)
6779             return IsOk
6780
6781         ## Perform extraction of sub-shapes from the main shape.
6782         #
6783         #  @param theShape the main shape
6784         #  @param theListOfID the list of sub-shape IDs to be extracted from
6785         #         the main shape.
6786         #  @return New GEOM.GEOM_Object, containing the shape without
6787         #          extracted sub-shapes.
6788         #
6789         #  @ref swig_MakeExtraction "Example"
6790         @ManageTransactions("ShapesOp")
6791         def MakeExtraction(self, theShape, theListOfID, theName=None):
6792             """
6793             Perform extraction of sub-shapes from the main shape.
6794
6795             Parameters:
6796                 theShape the main shape
6797                 theListOfID the list of sub-shape IDs to be extracted from
6798                             the main shape.
6799
6800             Returns
6801                 New GEOM.GEOM_Object, containing the shape without
6802                 extracted sub-shapes.
6803             """
6804             # Example: see GEOM_TestAll.py
6805             (anObj, aStat) = self.ShapesOp.MakeExtraction(theShape, theListOfID)
6806             RaiseIfFailed("MakeExtraction", self.ShapesOp)
6807             self._autoPublish(anObj, theName, "Extraction")
6808             return anObj
6809
6810         # end of l4_decompose
6811         ## @}
6812
6813         ## @addtogroup l4_decompose_d
6814         ## @{
6815
6816         ## Deprecated method
6817         #  It works like SubShapeAllSortedCentres(), but wrongly
6818         #  defines centres of faces, shells and solids.
6819         @ManageTransactions("ShapesOp")
6820         def SubShapeAllSorted(self, aShape, aType, theName=None):
6821             """
6822             Deprecated method
6823             It works like geompy.SubShapeAllSortedCentres, but wrongly
6824             defines centres of faces, shells and solids.
6825             """
6826             ListObj = self.ShapesOp.MakeExplode(aShape, EnumToLong( aType ), True)
6827             RaiseIfFailed("MakeExplode", self.ShapesOp)
6828             self._autoPublish(ListObj, theName, "subshape")
6829             return ListObj
6830
6831         ## Deprecated method
6832         #  It works like SubShapeAllSortedCentresIDs(), but wrongly
6833         #  defines centres of faces, shells and solids.
6834         @ManageTransactions("ShapesOp")
6835         def SubShapeAllSortedIDs(self, aShape, aType):
6836             """
6837             Deprecated method
6838             It works like geompy.SubShapeAllSortedCentresIDs, but wrongly
6839             defines centres of faces, shells and solids.
6840             """
6841             ListIDs = self.ShapesOp.SubShapeAllIDs(aShape, EnumToLong( aType ), True)
6842             RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
6843             return ListIDs
6844
6845         ## Deprecated method
6846         #  It works like SubShapeSortedCentres(), but has a bug
6847         #  (wrongly defines centres of faces, shells and solids).
6848         def SubShapeSorted(self, aShape, aType, ListOfInd, theName=None):
6849             """
6850             Deprecated method
6851             It works like geompy.SubShapeSortedCentres, but has a bug
6852             (wrongly defines centres of faces, shells and solids).
6853             """
6854             ListOfIDs = []
6855             AllShapeIDsList = self.SubShapeAllSortedIDs(aShape, EnumToLong( aType ))
6856             for ind in ListOfInd:
6857                 ListOfIDs.append(AllShapeIDsList[ind - 1])
6858             # note: auto-publishing is done in self.GetSubShape()
6859             anObj = self.GetSubShape(aShape, ListOfIDs, theName)
6860             return anObj
6861
6862         # end of l4_decompose_d
6863         ## @}
6864
6865         ## @addtogroup l3_healing
6866         ## @{
6867
6868         ## Apply a sequence of Shape Healing operators to the given object.
6869         #  @param theShape Shape to be processed.
6870         #  @param theOperators List of names of operators ("FixShape", "SplitClosedFaces", etc.).
6871         #  @param theParameters List of names of parameters
6872         #                    ("FixShape.Tolerance3d", "SplitClosedFaces.NbSplitPoints", etc.).
6873         #  @param theValues List of values of parameters, in the same order
6874         #                    as parameters are listed in <VAR>theParameters</VAR> list.
6875         #  @param theName Object name; when specified, this parameter is used
6876         #         for result publication in the study. Otherwise, if automatic
6877         #         publication is switched on, default value is used for result name.
6878         #
6879         #  <b> Operators and Parameters: </b> \n
6880         #
6881         #  * \b FixShape - corrects invalid shapes. \n
6882         #  - \b FixShape.Tolerance3d - work tolerance for detection of the problems and correction of them. \n
6883         #  - \b FixShape.MaxTolerance3d - maximal possible tolerance of the shape after correction. \n
6884         #
6885         #  * \b FixFaceSize - removes small faces, such as spots and strips.\n
6886         #  - \b FixFaceSize.Tolerance - defines minimum possible face size. \n
6887         #  - \b DropSmallEdges - removes edges, which merge with neighbouring edges. \n
6888         #  - \b DropSmallEdges.Tolerance3d - defines minimum possible distance between two parallel edges.\n
6889         #  - \b DropSmallSolids - either removes small solids or merges them with neighboring ones. \n
6890         #  - \b DropSmallSolids.WidthFactorThreshold - defines maximum value of <em>2V/S</em> of a solid which is considered small, where \a V is volume and \a S is surface area of the solid. \n
6891         #  - \b DropSmallSolids.VolumeThreshold - defines maximum volume of a solid which is considered small. If the both tolerances are privided a solid is considered small if it meets the both criteria. \n
6892         #  - \b DropSmallSolids.MergeSolids - if "1", small solids are removed; if "0" small solids are merged to adjacent non-small solids or left untouched if cannot be merged. \n
6893         #
6894         #  * \b SplitAngle - splits faces based on conical surfaces, surfaces of revolution and cylindrical
6895         #    surfaces in segments using a certain angle. \n
6896         #  - \b SplitAngle.Angle - the central angle of the resulting segments (i.e. we obtain two segments
6897         #    if Angle=180, four if Angle=90, etc). \n
6898         #  - \b SplitAngle.MaxTolerance - maximum possible tolerance among the resulting segments.\n
6899         #
6900         #  * \b SplitClosedFaces - splits closed faces in segments.
6901         #    The number of segments depends on the number of splitting points.\n
6902         #  - \b SplitClosedFaces.NbSplitPoints - the number of splitting points.\n
6903         #
6904         #  * \b SplitContinuity - splits shapes to reduce continuities of curves and surfaces.\n
6905         #  - \b SplitContinuity.Tolerance3d - 3D tolerance for correction of geometry.\n
6906         #  - \b SplitContinuity.SurfaceContinuity - required continuity for surfaces.\n
6907         #  - \b SplitContinuity.CurveContinuity - required continuity for curves.\n
6908         #   This and the previous parameters can take the following values:\n
6909         #   \b Parametric \b Continuity \n
6910         #   \b C0 (Positional Continuity): curves are joined (the end positions of curves or surfaces
6911         #   are coincidental. The curves or surfaces may still meet at an angle, giving rise to a sharp corner or edge).\n
6912         #   \b C1 (Tangential Continuity): first derivatives are equal (the end vectors of curves or surfaces are parallel,
6913         #    ruling out sharp edges).\n
6914         #   \b C2 (Curvature Continuity): first and second derivatives are equal (the end vectors of curves or surfaces
6915         #       are of the same magnitude).\n
6916         #   \b CN N-th derivatives are equal (both the direction and the magnitude of the Nth derivatives of curves
6917         #    or surfaces (d/du C(u)) are the same at junction. \n
6918         #   \b Geometric \b Continuity \n
6919         #   \b G1: first derivatives are proportional at junction.\n
6920         #   The curve tangents thus have the same direction, but not necessarily the same magnitude.
6921         #      i.e., C1'(1) = (a,b,c) and C2'(0) = (k*a, k*b, k*c).\n
6922         #   \b G2: first and second derivatives are proportional at junction.
6923         #   As the names imply, geometric continuity requires the geometry to be continuous, while parametric
6924         #    continuity requires that the underlying parameterization was continuous as well.
6925         #   Parametric continuity of order n implies geometric continuity of order n, but not vice-versa.\n
6926         #
6927         #  * \b BsplineRestriction - converts curves and surfaces to Bsplines and processes them with the following parameters:\n
6928         #  - \b BSplineRestriction.SurfaceMode - approximation of surfaces if restriction is necessary.\n
6929         #  - \b BSplineRestriction.Curve3dMode - conversion of any 3D curve to BSpline and approximation.\n
6930         #  - \b BSplineRestriction.Curve2dMode - conversion of any 2D curve to BSpline and approximation.\n
6931         #  - \b BSplineRestriction.Tolerance3d - defines the possibility of surfaces and 3D curves approximation
6932         #       with the specified parameters.\n
6933         #  - \b BSplineRestriction.Tolerance2d - defines the possibility of surfaces and 2D curves approximation
6934         #       with the specified parameters.\n
6935         #  - \b BSplineRestriction.RequiredDegree - required degree of the resulting BSplines.\n
6936         #  - \b BSplineRestriction.RequiredNbSegments - required maximum number of segments of resultant BSplines.\n
6937         #  - \b BSplineRestriction.Continuity3d - continuity of the resulting surfaces and 3D curves.\n
6938         #  - \b BSplineRestriction.Continuity2d - continuity of the resulting 2D curves.\n
6939         #
6940         #  * \b ToBezier - converts curves and surfaces of any type to Bezier curves and surfaces.\n
6941         #  - \b ToBezier.SurfaceMode - if checked in, allows conversion of surfaces.\n
6942         #  - \b ToBezier.Curve3dMode - if checked in, allows conversion of 3D curves.\n
6943         #  - \b ToBezier.Curve2dMode - if checked in, allows conversion of 2D curves.\n
6944         #  - \b ToBezier.MaxTolerance - defines tolerance for detection and correction of problems.\n
6945         #
6946         #  * \b SameParameter - fixes edges of 2D and 3D curves not having the same parameter.\n
6947         #  - \b SameParameter.Tolerance3d - defines tolerance for fixing of edges.\n
6948         #
6949         #
6950         #  @return New GEOM.GEOM_Object, containing processed shape.
6951         #
6952         #  \n @ref tui_shape_processing "Example"
6953         @ManageTransactions("HealOp")
6954         def ProcessShape(self, theShape, theOperators, theParameters, theValues, theName=None):
6955             """
6956             Apply a sequence of Shape Healing operators to the given object.
6957
6958             Parameters:
6959                 theShape Shape to be processed.
6960                 theValues List of values of parameters, in the same order
6961                           as parameters are listed in theParameters list.
6962                 theOperators List of names of operators ('FixShape', 'SplitClosedFaces', etc.).
6963                 theParameters List of names of parameters
6964                               ('FixShape.Tolerance3d', 'SplitClosedFaces.NbSplitPoints', etc.).
6965                 theName Object name; when specified, this parameter is used
6966                         for result publication in the study. Otherwise, if automatic
6967                         publication is switched on, default value is used for result name.
6968
6969                 Operators and Parameters:
6970
6971                  * FixShape - corrects invalid shapes.
6972                      * FixShape.Tolerance3d - work tolerance for detection of the problems and correction of them.
6973                      * FixShape.MaxTolerance3d - maximal possible tolerance of the shape after correction.
6974                  * FixFaceSize - removes small faces, such as spots and strips.
6975                      * FixFaceSize.Tolerance - defines minimum possible face size.
6976                  * DropSmallEdges - removes edges, which merge with neighbouring edges.
6977                      * DropSmallEdges.Tolerance3d - defines minimum possible distance between two parallel edges.
6978                  * DropSmallSolids - either removes small solids or merges them with neighboring ones.
6979                      * DropSmallSolids.WidthFactorThreshold - defines maximum value of 2V/S of a solid which is considered small, where V is volume and S is surface area of the solid.
6980                      * DropSmallSolids.VolumeThreshold - defines maximum volume of a solid which is considered small. If the both tolerances are privided a solid is considered small if it meets the both criteria.
6981                      * DropSmallSolids.MergeSolids - if '1', small solids are removed; if '0' small solids are merged to adjacent non-small solids or left untouched if cannot be merged.
6982
6983                  * SplitAngle - splits faces based on conical surfaces, surfaces of revolution and cylindrical surfaces
6984                                 in segments using a certain angle.
6985                      * SplitAngle.Angle - the central angle of the resulting segments (i.e. we obtain two segments
6986                                           if Angle=180, four if Angle=90, etc).
6987                      * SplitAngle.MaxTolerance - maximum possible tolerance among the resulting segments.
6988                  * SplitClosedFaces - splits closed faces in segments. The number of segments depends on the number of
6989                                       splitting points.
6990                      * SplitClosedFaces.NbSplitPoints - the number of splitting points.
6991                  * SplitContinuity - splits shapes to reduce continuities of curves and surfaces.
6992                      * SplitContinuity.Tolerance3d - 3D tolerance for correction of geometry.
6993                      * SplitContinuity.SurfaceContinuity - required continuity for surfaces.
6994                      * SplitContinuity.CurveContinuity - required continuity for curves.
6995                        This and the previous parameters can take the following values:
6996
6997                        Parametric Continuity:
6998                        C0 (Positional Continuity): curves are joined (the end positions of curves or surfaces are
6999                                                    coincidental. The curves or surfaces may still meet at an angle,
7000                                                    giving rise to a sharp corner or edge).
7001                        C1 (Tangential Continuity): first derivatives are equal (the end vectors of curves or surfaces
7002                                                    are parallel, ruling out sharp edges).
7003                        C2 (Curvature Continuity): first and second derivatives are equal (the end vectors of curves
7004                                                   or surfaces are of the same magnitude).
7005                        CN N-th derivatives are equal (both the direction and the magnitude of the Nth derivatives of
7006                           curves or surfaces (d/du C(u)) are the same at junction.
7007
7008                        Geometric Continuity:
7009                        G1: first derivatives are proportional at junction.
7010                            The curve tangents thus have the same direction, but not necessarily the same magnitude.
7011                            i.e., C1'(1) = (a,b,c) and C2'(0) = (k*a, k*b, k*c).
7012                        G2: first and second derivatives are proportional at junction. As the names imply,
7013                            geometric continuity requires the geometry to be continuous, while parametric continuity requires
7014                            that the underlying parameterization was continuous as well. Parametric continuity of order n implies
7015                            geometric continuity of order n, but not vice-versa.
7016                  * BsplineRestriction - converts curves and surfaces to Bsplines and processes them with the following parameters:
7017                      * BSplineRestriction.SurfaceMode - approximation of surfaces if restriction is necessary.
7018                      * BSplineRestriction.Curve3dMode - conversion of any 3D curve to BSpline and approximation.
7019                      * BSplineRestriction.Curve2dMode - conversion of any 2D curve to BSpline and approximation.
7020                      * BSplineRestriction.Tolerance3d - defines the possibility of surfaces and 3D curves approximation with
7021                                                         the specified parameters.
7022                      * BSplineRestriction.Tolerance2d - defines the possibility of surfaces and 2D curves approximation with
7023                                                         the specified parameters.
7024                      * BSplineRestriction.RequiredDegree - required degree of the resulting BSplines.
7025                      * BSplineRestriction.RequiredNbSegments - required maximum number of segments of resultant BSplines.
7026                      * BSplineRestriction.Continuity3d - continuity of the resulting surfaces and 3D curves.
7027                      * BSplineRestriction.Continuity2d - continuity of the resulting 2D curves.
7028                  * ToBezier - converts curves and surfaces of any type to Bezier curves and surfaces.
7029                      * ToBezier.SurfaceMode - if checked in, allows conversion of surfaces.
7030                      * ToBezier.Curve3dMode - if checked in, allows conversion of 3D curves.
7031                      * ToBezier.Curve2dMode - if checked in, allows conversion of 2D curves.
7032                      * ToBezier.MaxTolerance - defines tolerance for detection and correction of problems.
7033                  * SameParameter - fixes edges of 2D and 3D curves not having the same parameter.
7034                      * SameParameter.Tolerance3d - defines tolerance for fixing of edges.
7035
7036             Returns:
7037                 New GEOM.GEOM_Object, containing processed shape.
7038
7039             Note: For more information look through SALOME Geometry User's Guide->
7040                   -> Introduction to Geometry-> Repairing Operations-> Shape Processing
7041             """
7042             # Example: see GEOM_TestHealing.py
7043             theValues,Parameters = ParseList(theValues)
7044             anObj = self.HealOp.ProcessShape(theShape, theOperators, theParameters, theValues)
7045             # To avoid script failure in case of good argument shape
7046             if self.HealOp.GetErrorCode() == "ShHealOper_NotError_msg":
7047                 return theShape
7048             RaiseIfFailed("ProcessShape", self.HealOp)
7049             for string in (theOperators + theParameters):
7050                 Parameters = ":" + Parameters
7051                 pass
7052             anObj.SetParameters(Parameters)
7053             self._autoPublish(anObj, theName, "healed")
7054             return anObj
7055
7056         ## Remove faces from the given object (shape).
7057         #  @param theObject Shape to be processed.
7058         #  @param theFaces Indices of faces to be removed, if EMPTY then the method
7059         #                  removes ALL faces of the given object.
7060         #  @param theName Object name; when specified, this parameter is used
7061         #         for result publication in the study. Otherwise, if automatic
7062         #         publication is switched on, default value is used for result name.
7063         #
7064         #  @return New GEOM.GEOM_Object, containing processed shape.
7065         #
7066         #  @ref tui_suppress_faces "Example"
7067         @ManageTransactions("HealOp")
7068         def SuppressFaces(self, theObject, theFaces, theName=None):
7069             """
7070             Remove faces from the given object (shape).
7071
7072             Parameters:
7073                 theObject Shape to be processed.
7074                 theFaces Indices of faces to be removed, if EMPTY then the method
7075                          removes ALL faces of the given object.
7076                 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             Returns:
7081                 New GEOM.GEOM_Object, containing processed shape.
7082             """
7083             # Example: see GEOM_TestHealing.py
7084             anObj = self.HealOp.SuppressFaces(theObject, theFaces)
7085             RaiseIfFailed("SuppressFaces", self.HealOp)
7086             self._autoPublish(anObj, theName, "suppressFaces")
7087             return anObj
7088
7089         ## Sewing of faces into a single shell.
7090         #  @param ListShape Shapes to be processed.
7091         #  @param theTolerance Required tolerance value.
7092         #  @param AllowNonManifold Flag that allows non-manifold sewing.
7093         #  @param theName Object name; when specified, this parameter is used
7094         #         for result publication in the study. Otherwise, if automatic
7095         #         publication is switched on, default value is used for result name.
7096         #
7097         #  @return New GEOM.GEOM_Object, containing a result shell.
7098         #
7099         #  @ref tui_sewing "Example"
7100         def MakeSewing(self, ListShape, theTolerance, AllowNonManifold=False, theName=None):
7101             """
7102             Sewing of faces into a single shell.
7103
7104             Parameters:
7105                 ListShape Shapes to be processed.
7106                 theTolerance Required tolerance value.
7107                 AllowNonManifold Flag that allows non-manifold sewing.
7108                 theName Object name; when specified, this parameter is used
7109                         for result publication in the study. Otherwise, if automatic
7110                         publication is switched on, default value is used for result name.
7111
7112             Returns:
7113                 New GEOM.GEOM_Object, containing containing a result shell.
7114             """
7115             # Example: see GEOM_TestHealing.py
7116             # note: auto-publishing is done in self.Sew()
7117             anObj = self.Sew(ListShape, theTolerance, AllowNonManifold, theName)
7118             return anObj
7119
7120         ## Sewing of faces into a single shell.
7121         #  @param ListShape Shapes to be processed.
7122         #  @param theTolerance Required tolerance value.
7123         #  @param AllowNonManifold Flag that allows non-manifold sewing.
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         #  @return New GEOM.GEOM_Object, containing a result shell.
7129         @ManageTransactions("HealOp")
7130         def Sew(self, ListShape, theTolerance, AllowNonManifold=False, theName=None):
7131             """
7132             Sewing of faces into a single shell.
7133
7134             Parameters:
7135                 ListShape Shapes to be processed.
7136                 theTolerance Required tolerance value.
7137                 AllowNonManifold Flag that allows non-manifold sewing.
7138                 theName Object name; when specified, this parameter is used
7139                         for result publication in the study. Otherwise, if automatic
7140                         publication is switched on, default value is used for result name.
7141
7142             Returns:
7143                 New GEOM.GEOM_Object, containing a result shell.
7144             """
7145             # Example: see MakeSewing() above
7146             theTolerance,Parameters = ParseParameters(theTolerance)
7147             if AllowNonManifold:
7148                 anObj = self.HealOp.SewAllowNonManifold( ToList( ListShape ), theTolerance)
7149             else:
7150                 anObj = self.HealOp.Sew( ToList( ListShape ), theTolerance)
7151             # To avoid script failure in case of good argument shape
7152             # (Fix of test cases geom/bugs11/L7,L8)
7153             if self.HealOp.GetErrorCode() == "ShHealOper_NotError_msg":
7154                 return anObj
7155             RaiseIfFailed("Sew", self.HealOp)
7156             anObj.SetParameters(Parameters)
7157             self._autoPublish(anObj, theName, "sewed")
7158             return anObj
7159
7160         ## Rebuild the topology of theSolids by removing
7161         #  the faces that are shared by several solids.
7162         #  @param theSolids A compound or a list of solids to be processed.
7163         #  @param theName Object name; when specified, this parameter is used
7164         #         for result publication in the study. Otherwise, if automatic
7165         #         publication is switched on, default value is used for result name.
7166         #
7167         #  @return New GEOM.GEOM_Object, containing processed shape.
7168         #
7169         #  @ref tui_remove_webs "Example"
7170         @ManageTransactions("HealOp")
7171         def RemoveInternalFaces (self, theSolids, theName=None):
7172             """
7173             Rebuild the topology of theSolids by removing
7174             the faces that are shared by several solids.
7175
7176             Parameters:
7177                 theSolids A compound or a list of solids to be processed.
7178                 theName Object name; when specified, this parameter is used
7179                         for result publication in the study. Otherwise, if automatic
7180                         publication is switched on, default value is used for result name.
7181
7182             Returns:
7183                 New GEOM.GEOM_Object, containing processed shape.
7184             """
7185             # Example: see GEOM_TestHealing.py
7186             anObj = self.HealOp.RemoveInternalFaces(ToList(theSolids))
7187             RaiseIfFailed("RemoveInternalFaces", self.HealOp)
7188             self._autoPublish(anObj, theName, "removeWebs")
7189             return anObj
7190
7191         ## Remove internal wires and edges from the given object (face).
7192         #  @param theObject Shape to be processed.
7193         #  @param theWires Indices of wires to be removed, if EMPTY then the method
7194         #                  removes ALL internal wires of the given object.
7195         #  @param theName Object name; when specified, this parameter is used
7196         #         for result publication in the study. Otherwise, if automatic
7197         #         publication is switched on, default value is used for result name.
7198         #
7199         #  @return New GEOM.GEOM_Object, containing processed shape.
7200         #
7201         #  @ref tui_suppress_internal_wires "Example"
7202         @ManageTransactions("HealOp")
7203         def SuppressInternalWires(self, theObject, theWires, theName=None):
7204             """
7205             Remove internal wires and edges from the given object (face).
7206
7207             Parameters:
7208                 theObject Shape to be processed.
7209                 theWires Indices of wires to be removed, if EMPTY then the method
7210                          removes ALL internal wires of the given object.
7211                 theName Object name; when specified, this parameter is used
7212                         for result publication in the study. Otherwise, if automatic
7213                         publication is switched on, default value is used for result name.
7214
7215             Returns:
7216                 New GEOM.GEOM_Object, containing processed shape.
7217             """
7218             # Example: see GEOM_TestHealing.py
7219             anObj = self.HealOp.RemoveIntWires(theObject, theWires)
7220             RaiseIfFailed("RemoveIntWires", self.HealOp)
7221             self._autoPublish(anObj, theName, "suppressWires")
7222             return anObj
7223
7224         ## Remove internal closed contours (holes) from the given object.
7225         #  @param theObject Shape to be processed.
7226         #  @param theWires Indices of wires to be removed, if EMPTY then the method
7227         #                  removes ALL internal holes of the given object
7228         #  @param theName Object name; when specified, this parameter is used
7229         #         for result publication in the study. Otherwise, if automatic
7230         #         publication is switched on, default value is used for result name.
7231         #
7232         #  @return New GEOM.GEOM_Object, containing processed shape.
7233         #
7234         #  @ref tui_suppress_holes "Example"
7235         @ManageTransactions("HealOp")
7236         def SuppressHoles(self, theObject, theWires, theName=None):
7237             """
7238             Remove internal closed contours (holes) from the given object.
7239
7240             Parameters:
7241                 theObject Shape to be processed.
7242                 theWires Indices of wires to be removed, if EMPTY then the method
7243                          removes ALL internal holes of the given object
7244                 theName Object name; when specified, this parameter is used
7245                         for result publication in the study. Otherwise, if automatic
7246                         publication is switched on, default value is used for result name.
7247
7248             Returns:
7249                 New GEOM.GEOM_Object, containing processed shape.
7250             """
7251             # Example: see GEOM_TestHealing.py
7252             anObj = self.HealOp.FillHoles(theObject, theWires)
7253             RaiseIfFailed("FillHoles", self.HealOp)
7254             self._autoPublish(anObj, theName, "suppressHoles")
7255             return anObj
7256
7257         ## Close an open wire.
7258         #  @param theObject Shape to be processed.
7259         #  @param theWires Indexes of edge(s) and wire(s) to be closed within <VAR>theObject</VAR>'s shape,
7260         #                  if [ ], then <VAR>theObject</VAR> itself is a wire.
7261         #  @param isCommonVertex If True  : closure by creation of a common vertex,
7262         #                        If False : closure by creation of an edge between ends.
7263         #  @param theName Object name; when specified, this parameter is used
7264         #         for result publication in the study. Otherwise, if automatic
7265         #         publication is switched on, default value is used for result name.
7266         #
7267         #  @return New GEOM.GEOM_Object, containing processed shape.
7268         #
7269         #  @ref tui_close_contour "Example"
7270         @ManageTransactions("HealOp")
7271         def CloseContour(self,theObject, theWires, isCommonVertex, theName=None):
7272             """
7273             Close an open wire.
7274
7275             Parameters:
7276                 theObject Shape to be processed.
7277                 theWires Indexes of edge(s) and wire(s) to be closed within theObject's shape,
7278                          if [ ], then theObject itself is a wire.
7279                 isCommonVertex If True  : closure by creation of a common vertex,
7280                                If False : closure by creation of an edge between ends.
7281                 theName Object name; when specified, this parameter is used
7282                         for result publication in the study. Otherwise, if automatic
7283                         publication is switched on, default value is used for result name.
7284
7285             Returns:
7286                 New GEOM.GEOM_Object, containing processed shape.
7287             """
7288             # Example: see GEOM_TestHealing.py
7289             anObj = self.HealOp.CloseContour(theObject, theWires, isCommonVertex)
7290             RaiseIfFailed("CloseContour", self.HealOp)
7291             self._autoPublish(anObj, theName, "closeContour")
7292             return anObj
7293
7294         ## Addition of a point to a given edge object.
7295         #  @param theObject Shape to be processed.
7296         #  @param theEdgeIndex Index of edge to be divided within theObject's shape,
7297         #                      if -1, then theObject itself is the edge.
7298         #  @param theValue Value of parameter on edge or length parameter,
7299         #                  depending on \a isByParameter.
7300         #  @param isByParameter If TRUE : \a theValue is treated as a curve parameter [0..1], \n
7301         #                       if FALSE : \a theValue is treated as a length parameter [0..1]
7302         #  @param theName Object name; when specified, this parameter is used
7303         #         for result publication in the study. Otherwise, if automatic
7304         #         publication is switched on, default value is used for result name.
7305         #
7306         #  @return New GEOM.GEOM_Object, containing processed shape.
7307         #
7308         #  @ref tui_add_point_on_edge "Example"
7309         @ManageTransactions("HealOp")
7310         def DivideEdge(self, theObject, theEdgeIndex, theValue, isByParameter, theName=None):
7311             """
7312             Addition of a point to a given edge object.
7313
7314             Parameters:
7315                 theObject Shape to be processed.
7316                 theEdgeIndex Index of edge to be divided within theObject's shape,
7317                              if -1, then theObject itself is the edge.
7318                 theValue Value of parameter on edge or length parameter,
7319                          depending on isByParameter.
7320                 isByParameter If TRUE :  theValue is treated as a curve parameter [0..1],
7321                               if FALSE : theValue is treated as a length parameter [0..1]
7322                 theName Object name; when specified, this parameter is used
7323                         for result publication in the study. Otherwise, if automatic
7324                         publication is switched on, default value is used for result name.
7325
7326             Returns:
7327                 New GEOM.GEOM_Object, containing processed shape.
7328             """
7329             # Example: see GEOM_TestHealing.py
7330             theEdgeIndex,theValue,isByParameter,Parameters = ParseParameters(theEdgeIndex,theValue,isByParameter)
7331             anObj = self.HealOp.DivideEdge(theObject, theEdgeIndex, theValue, isByParameter)
7332             RaiseIfFailed("DivideEdge", self.HealOp)
7333             anObj.SetParameters(Parameters)
7334             self._autoPublish(anObj, theName, "divideEdge")
7335             return anObj
7336
7337         ## Addition of points to a given edge of \a theObject by projecting
7338         #  other points to the given edge.
7339         #  @param theObject Shape to be processed.
7340         #  @param theEdgeIndex Index of edge to be divided within theObject's shape,
7341         #                      if -1, then theObject itself is the edge.
7342         #  @param thePoints List of points to project to theEdgeIndex-th edge.
7343         #  @param theName Object name; when specified, this parameter is used
7344         #         for result publication in the study. Otherwise, if automatic
7345         #         publication is switched on, default value is used for result name.
7346         #
7347         #  @return New GEOM.GEOM_Object, containing processed shape.
7348         #
7349         #  @ref tui_add_point_on_edge "Example"
7350         @ManageTransactions("HealOp")
7351         def DivideEdgeByPoint(self, theObject, theEdgeIndex, thePoints, theName=None):
7352             """
7353             Addition of points to a given edge of \a theObject by projecting
7354             other points to the given edge.
7355
7356             Parameters:
7357                 theObject Shape to be processed.
7358                 theEdgeIndex The edge or its index to be divided within theObject's shape,
7359                              if -1, then theObject itself is the edge.
7360                 thePoints List of points to project to theEdgeIndex-th edge.
7361                 theName Object name; when specified, this parameter is used
7362                         for result publication in the study. Otherwise, if automatic
7363                         publication is switched on, default value is used for result name.
7364
7365             Returns:
7366                 New GEOM.GEOM_Object, containing processed shape.
7367             """
7368             # Example: see GEOM_TestHealing.py
7369             if isinstance( theEdgeIndex, GEOM._objref_GEOM_Object ):
7370                 theEdgeIndex = self.GetSubShapeID( theObject, theEdgeIndex )
7371             anObj = self.HealOp.DivideEdgeByPoint(theObject, theEdgeIndex, ToList( thePoints ))
7372             RaiseIfFailed("DivideEdgeByPoint", self.HealOp)
7373             self._autoPublish(anObj, theName, "divideEdge")
7374             return anObj
7375
7376         ## Suppress the vertices in the wire in case if adjacent edges are C1 continuous.
7377         #  @param theWire Wire to minimize the number of C1 continuous edges in.
7378         #  @param theVertices A list of vertices to suppress. If the list
7379         #                     is empty, all vertices in a wire will be assumed.
7380         #  @param theName Object name; when specified, this parameter is used
7381         #         for result publication in the study. Otherwise, if automatic
7382         #         publication is switched on, default value is used for result name.
7383         #
7384         #  @return New GEOM.GEOM_Object with modified wire.
7385         #
7386         #  @ref tui_fuse_collinear_edges "Example"
7387         @ManageTransactions("HealOp")
7388         def FuseCollinearEdgesWithinWire(self, theWire, theVertices = [], theName=None):
7389             """
7390             Suppress the vertices in the wire in case if adjacent edges are C1 continuous.
7391
7392             Parameters:
7393                 theWire Wire to minimize the number of C1 continuous edges in.
7394                 theVertices A list of vertices to suppress. If the list
7395                             is empty, all vertices in a wire will be assumed.
7396                 theName Object name; when specified, this parameter is used
7397                         for result publication in the study. Otherwise, if automatic
7398                         publication is switched on, default value is used for result name.
7399
7400             Returns:
7401                 New GEOM.GEOM_Object with modified wire.
7402             """
7403             anObj = self.HealOp.FuseCollinearEdgesWithinWire(theWire, theVertices)
7404             RaiseIfFailed("FuseCollinearEdgesWithinWire", self.HealOp)
7405             self._autoPublish(anObj, theName, "fuseEdges")
7406             return anObj
7407
7408         ## Change orientation of the given object. Updates given shape.
7409         #  @param theObject Shape to be processed.
7410         #  @return Updated <var>theObject</var>
7411         #
7412         #  @ref swig_todo "Example"
7413         @ManageTransactions("HealOp")
7414         def ChangeOrientationShell(self,theObject):
7415             """
7416             Change orientation of the given object. Updates given shape.
7417
7418             Parameters:
7419                 theObject Shape to be processed.
7420
7421             Returns:
7422                 Updated theObject
7423             """
7424             theObject = self.HealOp.ChangeOrientation(theObject)
7425             RaiseIfFailed("ChangeOrientation", self.HealOp)
7426             pass
7427
7428         ## Change orientation of the given object.
7429         #  @param theObject Shape to be processed.
7430         #  @param theName Object name; when specified, this parameter is used
7431         #         for result publication in the study. Otherwise, if automatic
7432         #         publication is switched on, default value is used for result name.
7433         #
7434         #  @return New GEOM.GEOM_Object, containing processed shape.
7435         #
7436         #  @ref swig_todo "Example"
7437         @ManageTransactions("HealOp")
7438         def ChangeOrientationShellCopy(self, theObject, theName=None):
7439             """
7440             Change orientation of the given object.
7441
7442             Parameters:
7443                 theObject Shape to be processed.
7444                 theName Object name; when specified, this parameter is used
7445                         for result publication in the study. Otherwise, if automatic
7446                         publication is switched on, default value is used for result name.
7447
7448             Returns:
7449                 New GEOM.GEOM_Object, containing processed shape.
7450             """
7451             anObj = self.HealOp.ChangeOrientationCopy(theObject)
7452             RaiseIfFailed("ChangeOrientationCopy", self.HealOp)
7453             self._autoPublish(anObj, theName, "reversed")
7454             return anObj
7455
7456         ## Try to limit tolerance of the given object by value \a theTolerance.
7457         #  @param theObject Shape to be processed.
7458         #  @param theTolerance Required tolerance value.
7459         #  @param theName Object name; when specified, this parameter is used
7460         #         for result publication in the study. Otherwise, if automatic
7461         #         publication is switched on, default value is used for result name.
7462         #
7463         #  @return New GEOM.GEOM_Object, containing processed shape.
7464         #
7465         #  @ref tui_limit_tolerance "Example"
7466         @ManageTransactions("HealOp")
7467         def LimitTolerance(self, theObject, theTolerance = 1e-07, theName=None):
7468             """
7469             Try to limit tolerance of the given object by value theTolerance.
7470
7471             Parameters:
7472                 theObject Shape to be processed.
7473                 theTolerance Required tolerance value.
7474                 theName Object name; when specified, this parameter is used
7475                         for result publication in the study. Otherwise, if automatic
7476                         publication is switched on, default value is used for result name.
7477
7478             Returns:
7479                 New GEOM.GEOM_Object, containing processed shape.
7480             """
7481             anObj = self.HealOp.LimitTolerance(theObject, theTolerance)
7482             RaiseIfFailed("LimitTolerance", self.HealOp)
7483             self._autoPublish(anObj, theName, "limitTolerance")
7484             return anObj
7485
7486         ## Get a list of wires (wrapped in GEOM.GEOM_Object-s),
7487         #  that constitute a free boundary of the given shape.
7488         #  @param theObject Shape to get free boundary of.
7489         #  @param theName Object name; when specified, this parameter is used
7490         #         for result publication in the study. Otherwise, if automatic
7491         #         publication is switched on, default value is used for result name.
7492         #
7493         #  @return [\a status, \a theClosedWires, \a theOpenWires]
7494         #  \n \a status: FALSE, if an error(s) occurred during the method execution.
7495         #  \n \a theClosedWires: Closed wires on the free boundary of the given shape.
7496         #  \n \a theOpenWires: Open wires on the free boundary of the given shape.
7497         #
7498         #  @ref tui_free_boundaries_page "Example"
7499         @ManageTransactions("HealOp")
7500         def GetFreeBoundary(self, theObject, theName=None):
7501             """
7502             Get a list of wires (wrapped in GEOM.GEOM_Object-s),
7503             that constitute a free boundary of the given shape.
7504
7505             Parameters:
7506                 theObject Shape to get free boundary of.
7507                 theName Object name; when specified, this parameter is used
7508                         for result publication in the study. Otherwise, if automatic
7509                         publication is switched on, default value is used for result name.
7510
7511             Returns:
7512                 [status, theClosedWires, theOpenWires]
7513                  status: FALSE, if an error(s) occurred during the method execution.
7514                  theClosedWires: Closed wires on the free boundary of the given shape.
7515                  theOpenWires: Open wires on the free boundary of the given shape.
7516             """
7517             # Example: see GEOM_TestHealing.py
7518             anObj = self.HealOp.GetFreeBoundary( ToList( theObject ))
7519             RaiseIfFailed("GetFreeBoundary", self.HealOp)
7520             self._autoPublish(anObj[1], theName, "closedWire")
7521             self._autoPublish(anObj[2], theName, "openWire")
7522             return anObj
7523
7524         ## Replace coincident faces in \a theShapes by one face.
7525         #  @param theShapes Initial shapes, either a list or compound of shapes.
7526         #  @param theTolerance Maximum distance between faces, which can be considered as coincident.
7527         #  @param doKeepNonSolids If FALSE, only solids will present in the result,
7528         #                         otherwise all initial shapes.
7529         #  @param theName Object name; when specified, this parameter is used
7530         #         for result publication in the study. Otherwise, if automatic
7531         #         publication is switched on, default value is used for result name.
7532         #
7533         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7534         #
7535         #  @ref tui_glue_faces "Example"
7536         @ManageTransactions("ShapesOp")
7537         def MakeGlueFaces(self, theShapes, theTolerance, doKeepNonSolids=True, theName=None):
7538             """
7539             Replace coincident faces in theShapes by one face.
7540
7541             Parameters:
7542                 theShapes Initial shapes, either a list or compound of shapes.
7543                 theTolerance Maximum distance between faces, which can be considered as coincident.
7544                 doKeepNonSolids If FALSE, only solids will present in the result,
7545                                 otherwise all initial shapes.
7546                 theName Object name; when specified, this parameter is used
7547                         for result publication in the study. Otherwise, if automatic
7548                         publication is switched on, default value is used for result name.
7549
7550             Returns:
7551                 New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7552             """
7553             # Example: see GEOM_Spanner.py
7554             theTolerance,Parameters = ParseParameters(theTolerance)
7555             anObj = self.ShapesOp.MakeGlueFaces(ToList(theShapes), theTolerance, doKeepNonSolids)
7556             if anObj is None:
7557                 raise RuntimeError("MakeGlueFaces : " + self.ShapesOp.GetErrorCode())
7558             anObj.SetParameters(Parameters)
7559             self._autoPublish(anObj, theName, "glueFaces")
7560             return anObj
7561
7562         ## Find coincident faces in \a theShapes for possible gluing.
7563         #  @param theShapes Initial shapes, either a list or compound of shapes.
7564         #  @param theTolerance Maximum distance between faces,
7565         #                      which can be considered as coincident.
7566         #  @param theName Object name; when specified, this parameter is used
7567         #         for result publication in the study. Otherwise, if automatic
7568         #         publication is switched on, default value is used for result name.
7569         #
7570         #  @return GEOM.ListOfGO
7571         #
7572         #  @ref tui_glue_faces "Example"
7573         @ManageTransactions("ShapesOp")
7574         def GetGlueFaces(self, theShapes, theTolerance, theName=None):
7575             """
7576             Find coincident faces in theShapes for possible gluing.
7577
7578             Parameters:
7579                 theShapes Initial shapes, either a list or compound of shapes.
7580                 theTolerance Maximum distance between faces,
7581                              which can be considered as coincident.
7582                 theName Object name; when specified, this parameter is used
7583                         for result publication in the study. Otherwise, if automatic
7584                         publication is switched on, default value is used for result name.
7585
7586             Returns:
7587                 GEOM.ListOfGO
7588             """
7589             anObj = self.ShapesOp.GetGlueFaces(ToList(theShapes), theTolerance)
7590             RaiseIfFailed("GetGlueFaces", self.ShapesOp)
7591             self._autoPublish(anObj, theName, "facesToGlue")
7592             return anObj
7593
7594         ## Replace coincident faces in \a theShapes by one face
7595         #  in compliance with given list of faces
7596         #  @param theShapes Initial shapes, either a list or compound of shapes.
7597         #  @param theTolerance Maximum distance between faces,
7598         #                      which can be considered as coincident.
7599         #  @param theFaces List of faces for gluing.
7600         #  @param doKeepNonSolids If FALSE, only solids will present in the result,
7601         #                         otherwise all initial shapes.
7602         #  @param doGlueAllEdges If TRUE, all coincident edges of <VAR>theShape</VAR>
7603         #                        will be glued, otherwise only the edges,
7604         #                        belonging to <VAR>theFaces</VAR>.
7605         #  @param theName Object name; when specified, this parameter is used
7606         #         for result publication in the study. Otherwise, if automatic
7607         #         publication is switched on, default value is used for result name.
7608         #
7609         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7610         #
7611         #  @ref tui_glue_faces "Example"
7612         @ManageTransactions("ShapesOp")
7613         def MakeGlueFacesByList(self, theShapes, theTolerance, theFaces,
7614                                 doKeepNonSolids=True, doGlueAllEdges=True, theName=None):
7615             """
7616             Replace coincident faces in theShapes by one face
7617             in compliance with given list of faces
7618
7619             Parameters:
7620                 theShapes theShapes Initial shapes, either a list or compound of shapes.
7621                 theTolerance Maximum distance between faces,
7622                              which can be considered as coincident.
7623                 theFaces List of faces for gluing.
7624                 doKeepNonSolids If FALSE, only solids will present in the result,
7625                                 otherwise all initial shapes.
7626                 doGlueAllEdges If TRUE, all coincident edges of theShape
7627                                will be glued, otherwise only the edges,
7628                                belonging to theFaces.
7629                 theName Object name; when specified, this parameter is used
7630                         for result publication in the study. Otherwise, if automatic
7631                         publication is switched on, default value is used for result name.
7632
7633             Returns:
7634                 New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7635             """
7636             anObj = self.ShapesOp.MakeGlueFacesByList(ToList(theShapes), theTolerance, ToList(theFaces),
7637                                                       doKeepNonSolids, doGlueAllEdges)
7638             if anObj is None:
7639                 raise RuntimeError("MakeGlueFacesByList : " + self.ShapesOp.GetErrorCode())
7640             self._autoPublish(anObj, theName, "glueFaces")
7641             return anObj
7642
7643         ## Replace coincident edges in \a theShapes by one edge.
7644         #  @param theShapes Initial shapes, either a list or compound of shapes.
7645         #  @param theTolerance Maximum distance between edges, which can be considered as coincident.
7646         #  @param theName Object name; when specified, this parameter is used
7647         #         for result publication in the study. Otherwise, if automatic
7648         #         publication is switched on, default value is used for result name.
7649         #
7650         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7651         #
7652         #  @ref tui_glue_edges "Example"
7653         @ManageTransactions("ShapesOp")
7654         def MakeGlueEdges(self, theShapes, theTolerance, theName=None):
7655             """
7656             Replace coincident edges in theShapes by one edge.
7657
7658             Parameters:
7659                 theShapes Initial shapes, either a list or compound of shapes.
7660                 theTolerance Maximum distance between edges, which can be considered as coincident.
7661                 theName Object name; when specified, this parameter is used
7662                         for result publication in the study. Otherwise, if automatic
7663                         publication is switched on, default value is used for result name.
7664
7665             Returns:
7666                 New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7667             """
7668             theTolerance,Parameters = ParseParameters(theTolerance)
7669             anObj = self.ShapesOp.MakeGlueEdges(ToList(theShapes), theTolerance)
7670             if anObj is None:
7671                 raise RuntimeError("MakeGlueEdges : " + self.ShapesOp.GetErrorCode())
7672             anObj.SetParameters(Parameters)
7673             self._autoPublish(anObj, theName, "glueEdges")
7674             return anObj
7675
7676         ## Find coincident edges in \a theShapes for possible gluing.
7677         #  @param theShapes Initial shapes, either a list or compound of shapes.
7678         #  @param theTolerance Maximum distance between edges,
7679         #                      which can be considered as coincident.
7680         #  @param theName Object name; when specified, this parameter is used
7681         #         for result publication in the study. Otherwise, if automatic
7682         #         publication is switched on, default value is used for result name.
7683         #
7684         #  @return GEOM.ListOfGO
7685         #
7686         #  @ref tui_glue_edges "Example"
7687         @ManageTransactions("ShapesOp")
7688         def GetGlueEdges(self, theShapes, theTolerance, theName=None):
7689             """
7690             Find coincident edges in theShapes for possible gluing.
7691
7692             Parameters:
7693                 theShapes Initial shapes, either a list or compound of shapes.
7694                 theTolerance Maximum distance between edges,
7695                              which can be considered as coincident.
7696                 theName Object name; when specified, this parameter is used
7697                         for result publication in the study. Otherwise, if automatic
7698                         publication is switched on, default value is used for result name.
7699
7700             Returns:
7701                 GEOM.ListOfGO
7702             """
7703             anObj = self.ShapesOp.GetGlueEdges(ToList(theShapes), theTolerance)
7704             RaiseIfFailed("GetGlueEdges", self.ShapesOp)
7705             self._autoPublish(anObj, theName, "edgesToGlue")
7706             return anObj
7707
7708         ## Replace coincident edges in theShapes by one edge
7709         #  in compliance with given list of edges.
7710         #  @param theShapes Initial shapes, either a list or compound of shapes.
7711         #  @param theTolerance Maximum distance between edges,
7712         #                      which can be considered as coincident.
7713         #  @param theEdges List of edges for gluing.
7714         #  @param theName Object name; when specified, this parameter is used
7715         #         for result publication in the study. Otherwise, if automatic
7716         #         publication is switched on, default value is used for result name.
7717         #
7718         #  @return New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7719         #
7720         #  @ref tui_glue_edges "Example"
7721         @ManageTransactions("ShapesOp")
7722         def MakeGlueEdgesByList(self, theShapes, theTolerance, theEdges, theName=None):
7723             """
7724             Replace coincident edges in theShapes by one edge
7725             in compliance with given list of edges.
7726
7727             Parameters:
7728                 theShapes Initial shapes, either a list or compound of shapes.
7729                 theTolerance Maximum distance between edges,
7730                              which can be considered as coincident.
7731                 theEdges List of edges for gluing.
7732                 theName Object name; when specified, this parameter is used
7733                         for result publication in the study. Otherwise, if automatic
7734                         publication is switched on, default value is used for result name.
7735
7736             Returns:
7737                 New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7738             """
7739             anObj = self.ShapesOp.MakeGlueEdgesByList(ToList(theShapes), theTolerance, theEdges)
7740             if anObj is None:
7741                 raise RuntimeError("MakeGlueEdgesByList : " + self.ShapesOp.GetErrorCode())
7742             self._autoPublish(anObj, theName, "glueEdges")
7743             return anObj
7744
7745         # end of l3_healing
7746         ## @}
7747
7748         ## @addtogroup l3_boolean Boolean Operations
7749         ## @{
7750
7751         # -----------------------------------------------------------------------------
7752         # Boolean (Common, Cut, Fuse, Section)
7753         # -----------------------------------------------------------------------------
7754
7755         ## Perform one of boolean operations on two given shapes.
7756         #  @param theShape1 First argument for boolean operation.
7757         #  @param theShape2 Second argument for boolean operation.
7758         #  @param theOperation Indicates the operation to be done:\n
7759         #                      1 - Common, 2 - Cut, 3 - Fuse, 4 - Section.
7760         #  @param checkSelfInte The flag that tells if the arguments should
7761         #         be checked for self-intersection prior to the operation.
7762         #  @param theName Object name; when specified, this parameter is used
7763         #         for result publication in the study. Otherwise, if automatic
7764         #         publication is switched on, default value is used for result name.
7765         #  @param theFuzzyParam The fuzzy parameter to be used for the boolean
7766         #         operation. If the value is not positive, no fuzzy tolerance will
7767         #         be considered for the boolean operation.
7768         #
7769         #  @note This algorithm doesn't find all types of self-intersections.
7770         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7771         #        vertex/face and edge/face intersections. Face/face
7772         #        intersections detection is switched off as it is a
7773         #        time-consuming operation that gives an impact on performance.
7774         #        To find all self-intersections please use
7775         #        CheckSelfIntersections() method.
7776         #
7777         #  @return New GEOM.GEOM_Object, containing the result shape.
7778         #
7779         #  @ref tui_fuse "Example"
7780         @ManageTransactions("BoolOp")
7781         def MakeBoolean(self, theShape1, theShape2, theOperation, checkSelfInte=False, theName=None, theFuzzyParam=-1):
7782             """
7783             Perform one of boolean operations on two given shapes.
7784
7785             Parameters:
7786                 theShape1 First argument for boolean operation.
7787                 theShape2 Second argument for boolean operation.
7788                 theOperation Indicates the operation to be done:
7789                              1 - Common, 2 - Cut, 3 - Fuse, 4 - Section.
7790                 checkSelfInte The flag that tells if the arguments should
7791                               be checked for self-intersection prior to
7792                               the operation.
7793                 theName Object name; when specified, this parameter is used
7794                         for result publication in the study. Otherwise, if automatic
7795                         publication is switched on, default value is used for result name.
7796                 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
7797                               If the value is not positive, no fuzzy tolerance will be
7798                               considered for the boolean operation.
7799
7800             Note:
7801                     This algorithm doesn't find all types of self-intersections.
7802                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7803                     vertex/face and edge/face intersections. Face/face
7804                     intersections detection is switched off as it is a
7805                     time-consuming operation that gives an impact on performance.
7806                     To find all self-intersections please use
7807                     CheckSelfIntersections() method.
7808
7809             Returns:
7810                 New GEOM.GEOM_Object, containing the result shape.
7811             """
7812             # Example: see GEOM_TestAll.py
7813             anObj = self.BoolOp.MakeBooleanWithFuzzy(theShape1, theShape2, theOperation, checkSelfInte, theFuzzyParam)
7814             RaiseIfFailed("MakeBoolean", self.BoolOp)
7815             def_names = { 1: "common", 2: "cut", 3: "fuse", 4: "section" }
7816             self._autoPublish(anObj, theName, def_names[theOperation])
7817             return anObj
7818
7819         ## Perform Common boolean operation on two given shapes.
7820         #  @param theShape1 First argument for boolean operation.
7821         #  @param theShape2 Second argument for boolean operation.
7822         #  @param checkSelfInte The flag that tells if the arguments should
7823         #         be checked for self-intersection prior to the operation.
7824         #  @param theName Object name; when specified, this parameter is used
7825         #         for result publication in the study. Otherwise, if automatic
7826         #         publication is switched on, default value is used for result name.
7827         #  @param theFuzzyParam The fuzzy parameter to be used for the boolean
7828         #         operation. If the value is not positive, no fuzzy tolerance will
7829         #         be considered for the boolean operation.
7830         #
7831         #  @note This algorithm doesn't find all types of self-intersections.
7832         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7833         #        vertex/face and edge/face intersections. Face/face
7834         #        intersections detection is switched off as it is a
7835         #        time-consuming operation that gives an impact on performance.
7836         #        To find all self-intersections please use
7837         #        CheckSelfIntersections() method.
7838         #
7839         #  @return New GEOM.GEOM_Object, containing the result shape.
7840         #
7841         #  @ref tui_common "Example 1"
7842         #  \n @ref swig_MakeCommon "Example 2"
7843         def MakeCommon(self, theShape1, theShape2, checkSelfInte=False, theName=None, theFuzzyParam=-1):
7844             """
7845             Perform Common boolean operation on two given shapes.
7846
7847             Parameters:
7848                 theShape1 First argument for boolean operation.
7849                 theShape2 Second argument for boolean operation.
7850                 checkSelfInte The flag that tells if the arguments should
7851                               be checked for self-intersection prior to
7852                               the operation.
7853                 theName Object name; when specified, this parameter is used
7854                         for result publication in the study. Otherwise, if automatic
7855                         publication is switched on, default value is used for result name.
7856                 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
7857                               If the value is not positive, no fuzzy tolerance will be
7858                               considered for the boolean operation.
7859
7860             Note:
7861                     This algorithm doesn't find all types of self-intersections.
7862                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7863                     vertex/face and edge/face intersections. Face/face
7864                     intersections detection is switched off as it is a
7865                     time-consuming operation that gives an impact on performance.
7866                     To find all self-intersections please use
7867                     CheckSelfIntersections() method.
7868
7869             Returns:
7870                 New GEOM.GEOM_Object, containing the result shape.
7871             """
7872             # Example: see GEOM_TestOthers.py
7873             # note: auto-publishing is done in self.MakeBoolean()
7874             return self.MakeBoolean(theShape1, theShape2, 1, checkSelfInte, theName, theFuzzyParam)
7875
7876         ## Perform Cut boolean operation on two given shapes.
7877         #  @param theShape1 First argument for boolean operation.
7878         #  @param theShape2 Second argument for boolean operation.
7879         #  @param checkSelfInte The flag that tells if the arguments should
7880         #         be checked for self-intersection prior to the operation.
7881         #  @param theName Object name; when specified, this parameter is used
7882         #         for result publication in the study. Otherwise, if automatic
7883         #         publication is switched on, default value is used for result name.
7884         #  @param theFuzzyParam The fuzzy parameter to be used for the boolean
7885         #         operation. If the value is not positive, no fuzzy tolerance will
7886         #         be considered for the boolean operation.
7887         #
7888         #  @note This algorithm doesn't find all types of self-intersections.
7889         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7890         #        vertex/face and edge/face intersections. Face/face
7891         #        intersections detection is switched off as it is a
7892         #        time-consuming operation that gives an impact on performance.
7893         #        To find all self-intersections please use
7894         #        CheckSelfIntersections() method.
7895         #
7896         #  @return New GEOM.GEOM_Object, containing the result shape.
7897         #
7898         #  @ref tui_cut "Example 1"
7899         #  \n @ref swig_MakeCommon "Example 2"
7900         def MakeCut(self, theShape1, theShape2, checkSelfInte=False, theName=None, theFuzzyParam=-1):
7901             """
7902             Perform Cut boolean operation on two given shapes.
7903
7904             Parameters:
7905                 theShape1 First argument for boolean operation.
7906                 theShape2 Second argument for boolean operation.
7907                 checkSelfInte The flag that tells if the arguments should
7908                               be checked for self-intersection prior to
7909                               the operation.
7910                 theName Object name; when specified, this parameter is used
7911                         for result publication in the study. Otherwise, if automatic
7912                         publication is switched on, default value is used for result name.
7913                 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
7914                               If the value is not positive, no fuzzy tolerance will be
7915                               considered for the boolean operation.
7916
7917             Note:
7918                     This algorithm doesn't find all types of self-intersections.
7919                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7920                     vertex/face and edge/face intersections. Face/face
7921                     intersections detection is switched off as it is a
7922                     time-consuming operation that gives an impact on performance.
7923                     To find all self-intersections please use
7924                     CheckSelfIntersections() method.
7925
7926             Returns:
7927                 New GEOM.GEOM_Object, containing the result shape.
7928
7929             """
7930             # Example: see GEOM_TestOthers.py
7931             # note: auto-publishing is done in self.MakeBoolean()
7932             return self.MakeBoolean(theShape1, theShape2, 2, checkSelfInte, theName, theFuzzyParam)
7933
7934         ## Perform Fuse boolean operation on two given shapes.
7935         #  @param theShape1 First argument for boolean operation.
7936         #  @param theShape2 Second argument for boolean operation.
7937         #  @param checkSelfInte The flag that tells if the arguments should
7938         #         be checked for self-intersection prior to the operation.
7939         #  @param rmExtraEdges The flag that tells if Remove Extra Edges
7940         #         operation should be performed during the operation.
7941         #  @param theName Object name; when specified, this parameter is used
7942         #         for result publication in the study. Otherwise, if automatic
7943         #         publication is switched on, default value is used for result name.
7944         #  @param theFuzzyParam The fuzzy parameter to be used for the boolean
7945         #         operation. If the value is not positive, no fuzzy tolerance will
7946         #         be considered for the boolean operation.
7947         #
7948         #  @note This algorithm doesn't find all types of self-intersections.
7949         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7950         #        vertex/face and edge/face intersections. Face/face
7951         #        intersections detection is switched off as it is a
7952         #        time-consuming operation that gives an impact on performance.
7953         #        To find all self-intersections please use
7954         #        CheckSelfIntersections() method.
7955         #
7956         #  @return New GEOM.GEOM_Object, containing the result shape.
7957         #
7958         #  @ref tui_fuse "Example 1"
7959         #  \n @ref swig_MakeCommon "Example 2"
7960         @ManageTransactions("BoolOp")
7961         def MakeFuse(self, theShape1, theShape2, checkSelfInte=False,
7962                      rmExtraEdges=False, theName=None, theFuzzyParam=-1):
7963             """
7964             Perform Fuse boolean operation on two given shapes.
7965
7966             Parameters:
7967                 theShape1 First argument for boolean operation.
7968                 theShape2 Second argument for boolean operation.
7969                 checkSelfInte The flag that tells if the arguments should
7970                               be checked for self-intersection prior to
7971                               the operation.
7972                 rmExtraEdges The flag that tells if Remove Extra Edges
7973                              operation should be performed during the operation.
7974                 theName Object name; when specified, this parameter is used
7975                         for result publication in the study. Otherwise, if automatic
7976                         publication is switched on, default value is used for result name.
7977                 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
7978                               If the value is not positive, no fuzzy tolerance will be
7979                               considered for the boolean operation.
7980
7981             Note:
7982                     This algorithm doesn't find all types of self-intersections.
7983                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7984                     vertex/face and edge/face intersections. Face/face
7985                     intersections detection is switched off as it is a
7986                     time-consuming operation that gives an impact on performance.
7987                     To find all self-intersections please use
7988                     CheckSelfIntersections() method.
7989
7990             Returns:
7991                 New GEOM.GEOM_Object, containing the result shape.
7992
7993             """
7994             # Example: see GEOM_TestOthers.py
7995             anObj = self.BoolOp.MakeFuseWithFuzzy(theShape1, theShape2, checkSelfInte,
7996                                                   rmExtraEdges, theFuzzyParam)
7997             RaiseIfFailed("MakeFuse", self.BoolOp)
7998             self._autoPublish(anObj, theName, "fuse")
7999             return anObj
8000
8001         ## Perform Section boolean operation on two given shapes.
8002         #  @param theShape1 First argument for boolean operation.
8003         #  @param theShape2 Second argument for boolean operation.
8004         #  @param checkSelfInte The flag that tells if the arguments should
8005         #         be checked for self-intersection prior to the operation.
8006         #         If a self-intersection detected the operation fails.
8007         #  @param theName Object name; when specified, this parameter is used
8008         #         for result publication in the study. Otherwise, if automatic
8009         #         publication is switched on, default value is used for result name.
8010         #  @param theFuzzyParam The fuzzy parameter to be used for the boolean
8011         #         operation. If the value is not positive, no fuzzy tolerance will
8012         #         be considered for the boolean operation.
8013         #  @return New GEOM.GEOM_Object, containing the result shape.
8014         #
8015         #  @ref tui_section "Example 1"
8016         #  \n @ref swig_MakeCommon "Example 2"
8017         def MakeSection(self, theShape1, theShape2, checkSelfInte=False, theName=None, theFuzzyParam=-1):
8018             """
8019             Perform Section boolean operation on two given shapes.
8020
8021             Parameters:
8022                 theShape1 First argument for boolean operation.
8023                 theShape2 Second argument for boolean operation.
8024                 checkSelfInte The flag that tells if the arguments should
8025                               be checked for self-intersection prior to the operation.
8026                               If a self-intersection detected the operation fails.
8027                 theName Object name; when specified, this parameter is used
8028                         for result publication in the study. Otherwise, if automatic
8029                         publication is switched on, default value is used for result name.
8030                 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
8031                               If the value is not positive, no fuzzy tolerance will be
8032                               considered for the boolean operation.
8033             Returns:
8034                 New GEOM.GEOM_Object, containing the result shape.
8035
8036             """
8037             # Example: see GEOM_TestOthers.py
8038             # note: auto-publishing is done in self.MakeBoolean()
8039             return self.MakeBoolean(theShape1, theShape2, 4, checkSelfInte, theName, theFuzzyParam)
8040
8041         ## Perform Fuse boolean operation on the list of shapes.
8042         #  @param theShapesList Shapes to be fused.
8043         #  @param checkSelfInte The flag that tells if the arguments should
8044         #         be checked for self-intersection prior to the operation.
8045         #  @param rmExtraEdges The flag that tells if Remove Extra Edges
8046         #         operation should be performed during the operation.
8047         #  @param theName Object name; when specified, this parameter is used
8048         #         for result publication in the study. Otherwise, if automatic
8049         #         publication is switched on, default value is used for result name.
8050         #  @param theFuzzyParam The fuzzy parameter to be used for the boolean
8051         #         operation. If the value is not positive, no fuzzy tolerance will
8052         #         be considered for the boolean operation.
8053         #
8054         #  @note This algorithm doesn't find all types of self-intersections.
8055         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8056         #        vertex/face and edge/face intersections. Face/face
8057         #        intersections detection is switched off as it is a
8058         #        time-consuming operation that gives an impact on performance.
8059         #        To find all self-intersections please use
8060         #        CheckSelfIntersections() method.
8061         #
8062         #  @return New GEOM.GEOM_Object, containing the result shape.
8063         #
8064         #  @ref tui_fuse "Example 1"
8065         #  \n @ref swig_MakeCommon "Example 2"
8066         @ManageTransactions("BoolOp")
8067         def MakeFuseList(self, theShapesList, checkSelfInte=False,
8068                          rmExtraEdges=False, theName=None, theFuzzyParam=-1):
8069             """
8070             Perform Fuse boolean operation on the list of shapes.
8071
8072             Parameters:
8073                 theShapesList Shapes to be fused.
8074                 checkSelfInte The flag that tells if the arguments should
8075                               be checked for self-intersection prior to
8076                               the operation.
8077                 rmExtraEdges The flag that tells if Remove Extra Edges
8078                              operation should be performed during the operation.
8079                 theName Object name; when specified, this parameter is used
8080                         for result publication in the study. Otherwise, if automatic
8081                         publication is switched on, default value is used for result name.
8082                 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
8083                               If the value is not positive, no fuzzy tolerance will be
8084                               considered for the boolean operation.
8085
8086             Note:
8087                     This algorithm doesn't find all types of self-intersections.
8088                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8089                     vertex/face and edge/face intersections. Face/face
8090                     intersections detection is switched off as it is a
8091                     time-consuming operation that gives an impact on performance.
8092                     To find all self-intersections please use
8093                     CheckSelfIntersections() method.
8094
8095             Returns:
8096                 New GEOM.GEOM_Object, containing the result shape.
8097
8098             """
8099             # Example: see GEOM_TestOthers.py
8100             anObj = self.BoolOp.MakeFuseListWithFuzzy(theShapesList, checkSelfInte,
8101                                                       rmExtraEdges, theFuzzyParam)
8102             RaiseIfFailed("MakeFuseList", self.BoolOp)
8103             self._autoPublish(anObj, theName, "fuse")
8104             return anObj
8105
8106         ## Perform Common boolean operation on the list of shapes.
8107         #  @param theShapesList Shapes for Common operation.
8108         #  @param checkSelfInte The flag that tells if the arguments should
8109         #         be checked for self-intersection prior to the operation.
8110         #  @param theName Object name; when specified, this parameter is used
8111         #         for result publication in the study. Otherwise, if automatic
8112         #         publication is switched on, default value is used for result name.
8113         #  @param theFuzzyParam The fuzzy parameter to be used for the boolean
8114         #         operation. If the value is not positive, no fuzzy tolerance will
8115         #         be considered for the boolean operation.
8116         #
8117         #  @note This algorithm doesn't find all types of self-intersections.
8118         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8119         #        vertex/face and edge/face intersections. Face/face
8120         #        intersections detection is switched off as it is a
8121         #        time-consuming operation that gives an impact on performance.
8122         #        To find all self-intersections please use
8123         #        CheckSelfIntersections() method.
8124         #
8125         #  @return New GEOM.GEOM_Object, containing the result shape.
8126         #
8127         #  @ref tui_common "Example 1"
8128         #  \n @ref swig_MakeCommon "Example 2"
8129         @ManageTransactions("BoolOp")
8130         def MakeCommonList(self, theShapesList, checkSelfInte=False, theName=None, theFuzzyParam=-1):
8131             """
8132             Perform Common boolean operation on the list of shapes.
8133
8134             Parameters:
8135                 theShapesList Shapes for Common operation.
8136                 checkSelfInte The flag that tells if the arguments should
8137                               be checked for self-intersection prior to
8138                               the operation.
8139                 theName Object name; when specified, this parameter is used
8140                         for result publication in the study. Otherwise, if automatic
8141                         publication is switched on, default value is used for result name.
8142                 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
8143                               If the value is not positive, no fuzzy tolerance will be
8144                               considered for the boolean operation.
8145
8146             Note:
8147                     This algorithm doesn't find all types of self-intersections.
8148                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8149                     vertex/face and edge/face intersections. Face/face
8150                     intersections detection is switched off as it is a
8151                     time-consuming operation that gives an impact on performance.
8152                     To find all self-intersections please use
8153                     CheckSelfIntersections() method.
8154
8155             Returns:
8156                 New GEOM.GEOM_Object, containing the result shape.
8157
8158             """
8159             # Example: see GEOM_TestOthers.py
8160             anObj = self.BoolOp.MakeCommonListWithFuzzy(theShapesList, checkSelfInte, theFuzzyParam)
8161             RaiseIfFailed("MakeCommonList", self.BoolOp)
8162             self._autoPublish(anObj, theName, "common")
8163             return anObj
8164
8165         ## Perform Cut boolean operation on one object and the list of tools.
8166         #  @param theMainShape The object of the operation.
8167         #  @param theShapesList The list of tools of the operation.
8168         #  @param checkSelfInte The flag that tells if the arguments should
8169         #         be checked for self-intersection prior to the operation.
8170         #  @param theName Object name; when specified, this parameter is used
8171         #         for result publication in the study. Otherwise, if automatic
8172         #         publication is switched on, default value is used for result name.
8173         #  @param theFuzzyParam The fuzzy parameter to be used for the boolean
8174         #         operation. If the value is not positive, no fuzzy tolerance will
8175         #         be considered for the boolean operation.
8176         #
8177         #  @note This algorithm doesn't find all types of self-intersections.
8178         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8179         #        vertex/face and edge/face intersections. Face/face
8180         #        intersections detection is switched off as it is a
8181         #        time-consuming operation that gives an impact on performance.
8182         #        To find all self-intersections please use
8183         #        CheckSelfIntersections() method.
8184         #
8185         #  @return New GEOM.GEOM_Object, containing the result shape.
8186         #
8187         #  @ref tui_cut "Example 1"
8188         #  \n @ref swig_MakeCommon "Example 2"
8189         @ManageTransactions("BoolOp")
8190         def MakeCutList(self, theMainShape, theShapesList, checkSelfInte=False, theName=None, theFuzzyParam=-1):
8191             """
8192             Perform Cut boolean operation on one object and the list of tools.
8193
8194             Parameters:
8195                 theMainShape The object of the operation.
8196                 theShapesList The list of tools of the operation.
8197                 checkSelfInte The flag that tells if the arguments should
8198                               be checked for self-intersection prior to
8199                               the operation.
8200                 theName Object name; when specified, this parameter is used
8201                         for result publication in the study. Otherwise, if automatic
8202                         publication is switched on, default value is used for result name.
8203                 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
8204                               If the value is not positive, no fuzzy tolerance will be
8205                               considered for the boolean operation.
8206
8207             Note:
8208                     This algorithm doesn't find all types of self-intersections.
8209                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8210                     vertex/face and edge/face intersections. Face/face
8211                     intersections detection is switched off as it is a
8212                     time-consuming operation that gives an impact on performance.
8213                     To find all self-intersections please use
8214                     CheckSelfIntersections() method.
8215
8216             Returns:
8217                 New GEOM.GEOM_Object, containing the result shape.
8218
8219             """
8220             # Example: see GEOM_TestOthers.py
8221             anObj = self.BoolOp.MakeCutListWithFuzzy(theMainShape, theShapesList, checkSelfInte, theFuzzyParam)
8222             RaiseIfFailed("MakeCutList", self.BoolOp)
8223             self._autoPublish(anObj, theName, "cut")
8224             return anObj
8225
8226         # end of l3_boolean
8227         ## @}
8228
8229         ## @addtogroup l3_basic_op
8230         ## @{
8231
8232         ## Perform partition operation.
8233         #  @param ListShapes Shapes to be intersected.
8234         #  @param ListTools Shapes to intersect theShapes.
8235         #  @param Limit Type of resulting shapes (see ShapeType()).\n
8236         #         If this parameter is set to -1 ("Auto"), most appropriate shape limit
8237         #         type will be detected automatically.
8238         #  @param KeepNonlimitShapes if this parameter == 0, then only shapes of
8239         #                             target type (equal to Limit) are kept in the result,
8240         #                             else standalone shapes of lower dimension
8241         #                             are kept also (if they exist).
8242         #  @param theName Object name; when specified, this parameter is used
8243         #         for result publication in the study. Otherwise, if automatic
8244         #         publication is switched on, default value is used for result name.
8245         #  @param theFuzzyParam The fuzzy parameter to be used for the partition
8246         #         operation. If the value is not positive, no fuzzy tolerance will
8247         #         be considered for the partition operation.
8248         #
8249         #  @note Each compound from ListShapes and ListTools will be exploded
8250         #        in order to avoid possible intersection between shapes from this compound.
8251         #
8252         #  After implementation new version of PartitionAlgo (October 2006)
8253         #  other parameters are ignored by current functionality. They are kept
8254         #  in this function only for support old versions.
8255         #      @param ListKeepInside Shapes, outside which the results will be deleted.
8256         #         Each shape from theKeepInside must belong to theShapes also.
8257         #      @param ListRemoveInside Shapes, inside which the results will be deleted.
8258         #         Each shape from theRemoveInside must belong to theShapes also.
8259         #      @param RemoveWebs If TRUE, perform Glue 3D algorithm.
8260         #      @param ListMaterials Material indices for each shape. Make sense,
8261         #         only if theRemoveWebs is TRUE.
8262         #
8263         #  @return New GEOM.GEOM_Object, containing the result shapes.
8264         #
8265         #  @ref tui_partition "Example"
8266         @ManageTransactions("BoolOp")
8267         def MakePartition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
8268                           Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[],
8269                           KeepNonlimitShapes=0, theName=None, theFuzzyParam=-1):
8270             """
8271             Perform partition operation.
8272
8273             Parameters:
8274                 ListShapes Shapes to be intersected.
8275                 ListTools Shapes to intersect theShapes.
8276                 Limit Type of resulting shapes (see geompy.ShapeType)
8277                       If this parameter is set to -1 ("Auto"), most appropriate shape limit
8278                       type will be detected automatically.
8279                 KeepNonlimitShapes if this parameter == 0, then only shapes of
8280                                     target type (equal to Limit) are kept in the result,
8281                                     else standalone shapes of lower dimension
8282                                     are kept also (if they exist).
8283
8284                 theName Object name; when specified, this parameter is used
8285                         for result publication in the study. Otherwise, if automatic
8286                         publication is switched on, default value is used for result name.
8287             Note:
8288                     Each compound from ListShapes and ListTools will be exploded
8289                     in order to avoid possible intersection between shapes from
8290                     this compound.
8291
8292             After implementation new version of PartitionAlgo (October 2006) other
8293             parameters are ignored by current functionality. They are kept in this
8294             function only for support old versions.
8295
8296             Ignored parameters:
8297                 ListKeepInside Shapes, outside which the results will be deleted.
8298                                Each shape from theKeepInside must belong to theShapes also.
8299                 ListRemoveInside Shapes, inside which the results will be deleted.
8300                                  Each shape from theRemoveInside must belong to theShapes also.
8301                 RemoveWebs If TRUE, perform Glue 3D algorithm.
8302                 ListMaterials Material indices for each shape. Make sense, only if theRemoveWebs is TRUE.
8303
8304             Returns:
8305                 New GEOM.GEOM_Object, containing the result shapes.
8306             """
8307             # Example: see GEOM_TestAll.py
8308             if Limit == self.ShapeType["AUTO"]:
8309                 # automatic detection of the most appropriate shape limit type
8310                 lim = GEOM.SHAPE
8311                 for s in ListShapes: lim = min(lim, s.GetMaxShapeType())
8312                 Limit = EnumToLong(lim)
8313                 pass
8314             anObj = self.BoolOp.MakePartitionWithFuzzy(ListShapes, ListTools,
8315                                                        ListKeepInside, ListRemoveInside,
8316                                                        Limit, RemoveWebs, ListMaterials,
8317                                                        KeepNonlimitShapes, theFuzzyParam)
8318             RaiseIfFailed("MakePartition", self.BoolOp)
8319             self._autoPublish(anObj, theName, "partition")
8320             return anObj
8321
8322         ## Perform partition operation.
8323         #  This method may be useful if it is needed to make a partition for
8324         #  compound contains nonintersected shapes. Performance will be better
8325         #  since intersection between shapes from compound is not performed.
8326         #
8327         #  Description of all parameters as in previous method MakePartition().
8328         #  One additional parameter is provided:
8329         #  @param checkSelfInte The flag that tells if the arguments should
8330         #         be checked for self-intersection prior to the operation.
8331         #  @param theFuzzyParam The fuzzy parameter to be used for the partition
8332         #         operation. If the value is not positive, no fuzzy tolerance will
8333         #         be considered for the partition operation.
8334         #
8335         #  @note This algorithm doesn't find all types of self-intersections.
8336         #        It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8337         #        vertex/face and edge/face intersections. Face/face
8338         #        intersections detection is switched off as it is a
8339         #        time-consuming operation that gives an impact on performance.
8340         #        To find all self-intersections please use
8341         #        CheckSelfIntersections() method.
8342         #
8343         #  @note Passed compounds (via ListShapes or via ListTools)
8344         #           have to consist of nonintersecting shapes.
8345         #
8346         #  @return New GEOM.GEOM_Object, containing the result shapes.
8347         #
8348         #  @ref swig_todo "Example"
8349         @ManageTransactions("BoolOp")
8350         def MakePartitionNonSelfIntersectedShape(self, ListShapes, ListTools=[],
8351                                                  ListKeepInside=[], ListRemoveInside=[],
8352                                                  Limit=ShapeType["AUTO"], RemoveWebs=0,
8353                                                  ListMaterials=[], KeepNonlimitShapes=0,
8354                                                  checkSelfInte=False, theName=None,
8355                                                  theFuzzyParam=-1):
8356             """
8357             Perform partition operation.
8358             This method may be useful if it is needed to make a partition for
8359             compound contains nonintersected shapes. Performance will be better
8360             since intersection between shapes from compound is not performed.
8361
8362             Parameters:
8363                 Description of all parameters as in method geompy.MakePartition.
8364                 One additional parameter is provided:
8365                 checkSelfInte The flag that tells if the arguments should
8366                               be checked for self-intersection prior to
8367                               the operation.
8368
8369             Note:
8370                     This algorithm doesn't find all types of self-intersections.
8371                     It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8372                     vertex/face and edge/face intersections. Face/face
8373                     intersections detection is switched off as it is a
8374                     time-consuming operation that gives an impact on performance.
8375                     To find all self-intersections please use
8376                     CheckSelfIntersections() method.
8377
8378             NOTE:
8379                 Passed compounds (via ListShapes or via ListTools)
8380                 have to consist of nonintersecting shapes.
8381
8382             Returns:
8383                 New GEOM.GEOM_Object, containing the result shapes.
8384             """
8385             if Limit == self.ShapeType["AUTO"]:
8386                 # automatic detection of the most appropriate shape limit type
8387                 lim = GEOM.SHAPE
8388                 for s in ListShapes: lim = min(lim, s.GetMaxShapeType())
8389                 Limit = EnumToLong(lim)
8390                 pass
8391             anObj = self.BoolOp.MakePartitionNonSelfIntersectedShapeWithFuzzy(ListShapes, ListTools,
8392                                                                               ListKeepInside, ListRemoveInside,
8393                                                                               Limit, RemoveWebs, ListMaterials,
8394                                                                               KeepNonlimitShapes, checkSelfInte,
8395                                                                               theFuzzyParam)
8396             RaiseIfFailed("MakePartitionNonSelfIntersectedShape", self.BoolOp)
8397             self._autoPublish(anObj, theName, "partition")
8398             return anObj
8399
8400         ## See method MakePartition() for more information.
8401         #
8402         #  @ref tui_partition "Example 1"
8403         #  \n @ref swig_Partition "Example 2"
8404         def Partition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
8405                       Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[],
8406                       KeepNonlimitShapes=0, theName=None, theFuzzyParam=-1):
8407             """
8408             See method geompy.MakePartition for more information.
8409             """
8410             # Example: see GEOM_TestOthers.py
8411             # note: auto-publishing is done in self.MakePartition()
8412             anObj = self.MakePartition(ListShapes, ListTools,
8413                                        ListKeepInside, ListRemoveInside,
8414                                        Limit, RemoveWebs, ListMaterials,
8415                                        KeepNonlimitShapes, theName, theFuzzyParam)
8416             return anObj
8417
8418         ## Perform partition of the Shape with the Plane
8419         #  @param theShape Shape to be intersected.
8420         #  @param thePlane Tool shape, to intersect theShape.
8421         #  @param theName Object name; when specified, this parameter is used
8422         #         for result publication in the study. Otherwise, if automatic
8423         #         publication is switched on, default value is used for result name.
8424         #  @param theFuzzyParam The fuzzy parameter to be used for the partition
8425         #         operation. If the value is not positive, no fuzzy tolerance will
8426         #         be considered for the partition operation.
8427         #
8428         #  @return New GEOM.GEOM_Object, containing the result shape.
8429         #
8430         #  @note This operation is a shortcut to the more general @ref MakePartition
8431         #  operation, where @a theShape specifies single "object" (shape being partitioned)
8432         #  and @a thePlane specifies single "tool" (intersector shape). Other parameters of
8433         #  @ref MakePartition operation have default values:
8434         #  - @a Limit: GEOM::SHAPE (shape limit corresponds to the type of @a theShape)
8435         #  - @a KeepNonlimitShapes: 0
8436         #  - @a KeepInside, @a RemoveInside, @a RemoveWebs,
8437         #    @a Materials (obsolete parameters): empty
8438         #
8439         #  @note I.e. the following two operations are equivalent:
8440         #  @code
8441         #  Result = geompy.MakeHalfPartition(Object, Plane)
8442         #  Result = geompy.MakePartition([Object], [Plane])
8443         #  @endcode
8444         #
8445         #  @sa MakePartition, MakePartitionNonSelfIntersectedShape
8446         #
8447         #  @ref tui_partition "Example"
8448         @ManageTransactions("BoolOp")
8449         def MakeHalfPartition(self, theShape, thePlane, theName=None, theFuzzyParam=-1):
8450             """
8451             Perform partition of the Shape with the Plane
8452
8453             Parameters:
8454                 theShape Shape to be intersected.
8455                 thePlane Tool shape, to intersect theShape.
8456                 theName Object name; when specified, this parameter is used
8457                         for result publication in the study. Otherwise, if automatic
8458                         publication is switched on, default value is used for result name.
8459
8460             Returns:
8461                 New GEOM.GEOM_Object, containing the result shape.
8462          
8463             Note: This operation is a shortcut to the more general MakePartition
8464             operation, where theShape specifies single "object" (shape being partitioned)
8465             and thePlane specifies single "tool" (intersector shape). Other parameters of
8466             MakePartition operation have default values:
8467             - Limit: GEOM::SHAPE (shape limit corresponds to the type of theShape)
8468             - KeepNonlimitShapes: 0
8469             - KeepInside, RemoveInside, RemoveWebs, Materials (obsolete parameters): empty
8470          
8471             I.e. the following two operations are equivalent:
8472               Result = geompy.MakeHalfPartition(Object, Plane)
8473               Result = geompy.MakePartition([Object], [Plane])
8474             """
8475             # Example: see GEOM_TestAll.py
8476             anObj = self.BoolOp.MakeHalfPartitionWithFuzzy(theShape, thePlane, theFuzzyParam)
8477             RaiseIfFailed("MakeHalfPartition", self.BoolOp)
8478             self._autoPublish(anObj, theName, "partition")
8479             return anObj
8480
8481         # end of l3_basic_op
8482         ## @}
8483
8484         ## @addtogroup l3_transform
8485         ## @{
8486
8487         ## Translate the given object along the vector, specified
8488         #  by its end points.
8489         #  @param theObject The object to be translated.
8490         #  @param thePoint1 Start point of translation vector.
8491         #  @param thePoint2 End point of translation vector.
8492         #  @param theCopy Flag used to translate object itself or create a copy.
8493         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8494         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8495         @ManageTransactions("TrsfOp")
8496         def TranslateTwoPoints(self, theObject, thePoint1, thePoint2, theCopy=False):
8497             """
8498             Translate the given object along the vector, specified by its end points.
8499
8500             Parameters:
8501                 theObject The object to be translated.
8502                 thePoint1 Start point of translation vector.
8503                 thePoint2 End point of translation vector.
8504                 theCopy Flag used to translate object itself or create a copy.
8505
8506             Returns:
8507                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8508                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8509             """
8510             if theCopy:
8511                 anObj = self.TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
8512             else:
8513                 anObj = self.TrsfOp.TranslateTwoPoints(theObject, thePoint1, thePoint2)
8514             RaiseIfFailed("TranslateTwoPoints", self.TrsfOp)
8515             return anObj
8516
8517         ## Translate the given object along the vector, specified
8518         #  by its end points, creating its copy before the translation.
8519         #  @param theObject The object to be translated.
8520         #  @param thePoint1 Start point of translation vector.
8521         #  @param thePoint2 End point of translation vector.
8522         #  @param theName Object name; when specified, this parameter is used
8523         #         for result publication in the study. Otherwise, if automatic
8524         #         publication is switched on, default value is used for result name.
8525         #
8526         #  @return New GEOM.GEOM_Object, containing the translated object.
8527         #
8528         #  @ref tui_translation "Example 1"
8529         #  \n @ref swig_MakeTranslationTwoPoints "Example 2"
8530         @ManageTransactions("TrsfOp")
8531         def MakeTranslationTwoPoints(self, theObject, thePoint1, thePoint2, theName=None):
8532             """
8533             Translate the given object along the vector, specified
8534             by its end points, creating its copy before the translation.
8535
8536             Parameters:
8537                 theObject The object to be translated.
8538                 thePoint1 Start point of translation vector.
8539                 thePoint2 End point of translation vector.
8540                 theName Object name; when specified, this parameter is used
8541                         for result publication in the study. Otherwise, if automatic
8542                         publication is switched on, default value is used for result name.
8543
8544             Returns:
8545                 New GEOM.GEOM_Object, containing the translated object.
8546             """
8547             # Example: see GEOM_TestAll.py
8548             anObj = self.TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
8549             RaiseIfFailed("TranslateTwoPointsCopy", self.TrsfOp)
8550             self._autoPublish(anObj, theName, "translated")
8551             return anObj
8552
8553         ## Translate the given object along the vector, specified by its components.
8554         #  @param theObject The object to be translated.
8555         #  @param theDX,theDY,theDZ Components of translation vector.
8556         #  @param theCopy Flag used to translate object itself or create a copy.
8557         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8558         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8559         #
8560         #  @ref tui_translation "Example"
8561         @ManageTransactions("TrsfOp")
8562         def TranslateDXDYDZ(self, theObject, theDX, theDY, theDZ, theCopy=False):
8563             """
8564             Translate the given object along the vector, specified by its components.
8565
8566             Parameters:
8567                 theObject The object to be translated.
8568                 theDX,theDY,theDZ Components of translation vector.
8569                 theCopy Flag used to translate object itself or create a copy.
8570
8571             Returns:
8572                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8573                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8574             """
8575             # Example: see GEOM_TestAll.py
8576             theDX, theDY, theDZ, Parameters = ParseParameters(theDX, theDY, theDZ)
8577             if theCopy:
8578                 anObj = self.TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
8579             else:
8580                 anObj = self.TrsfOp.TranslateDXDYDZ(theObject, theDX, theDY, theDZ)
8581             anObj.SetParameters(Parameters)
8582             RaiseIfFailed("TranslateDXDYDZ", self.TrsfOp)
8583             return anObj
8584
8585         ## Translate the given object along the vector, specified
8586         #  by its components, creating its copy before the translation.
8587         #  @param theObject The object to be translated.
8588         #  @param theDX,theDY,theDZ Components of translation vector.
8589         #  @param theName Object name; when specified, this parameter is used
8590         #         for result publication in the study. Otherwise, if automatic
8591         #         publication is switched on, default value is used for result name.
8592         #
8593         #  @return New GEOM.GEOM_Object, containing the translated object.
8594         #
8595         #  @ref tui_translation "Example"
8596         @ManageTransactions("TrsfOp")
8597         def MakeTranslation(self,theObject, theDX, theDY, theDZ, theName=None):
8598             """
8599             Translate the given object along the vector, specified
8600             by its components, creating its copy before the translation.
8601
8602             Parameters:
8603                 theObject The object to be translated.
8604                 theDX,theDY,theDZ Components of translation vector.
8605                 theName Object name; when specified, this parameter is used
8606                         for result publication in the study. Otherwise, if automatic
8607                         publication is switched on, default value is used for result name.
8608
8609             Returns:
8610                 New GEOM.GEOM_Object, containing the translated object.
8611             """
8612             # Example: see GEOM_TestAll.py
8613             theDX, theDY, theDZ, Parameters = ParseParameters(theDX, theDY, theDZ)
8614             anObj = self.TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
8615             anObj.SetParameters(Parameters)
8616             RaiseIfFailed("TranslateDXDYDZ", self.TrsfOp)
8617             self._autoPublish(anObj, theName, "translated")
8618             return anObj
8619
8620         ## Translate the given object along the given vector.
8621         #  @param theObject The object to be translated.
8622         #  @param theVector The translation vector.
8623         #  @param theCopy Flag used to translate object itself or create a copy.
8624         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8625         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8626         @ManageTransactions("TrsfOp")
8627         def TranslateVector(self, theObject, theVector, theCopy=False):
8628             """
8629             Translate the given object along the given vector.
8630
8631             Parameters:
8632                 theObject The object to be translated.
8633                 theVector The translation vector.
8634                 theCopy Flag used to translate object itself or create a copy.
8635
8636             Returns:
8637                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8638                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8639             """
8640             if theCopy:
8641                 anObj = self.TrsfOp.TranslateVectorCopy(theObject, theVector)
8642             else:
8643                 anObj = self.TrsfOp.TranslateVector(theObject, theVector)
8644             RaiseIfFailed("TranslateVector", self.TrsfOp)
8645             return anObj
8646
8647         ## Translate the given object along the given vector,
8648         #  creating its copy before the translation.
8649         #  @param theObject The object to be translated.
8650         #  @param theVector The translation vector.
8651         #  @param theName Object name; when specified, this parameter is used
8652         #         for result publication in the study. Otherwise, if automatic
8653         #         publication is switched on, default value is used for result name.
8654         #
8655         #  @return New GEOM.GEOM_Object, containing the translated object.
8656         #
8657         #  @ref tui_translation "Example"
8658         @ManageTransactions("TrsfOp")
8659         def MakeTranslationVector(self, theObject, theVector, theName=None):
8660             """
8661             Translate the given object along the given vector,
8662             creating its copy before the translation.
8663
8664             Parameters:
8665                 theObject The object to be translated.
8666                 theVector The translation vector.
8667                 theName Object name; when specified, this parameter is used
8668                         for result publication in the study. Otherwise, if automatic
8669                         publication is switched on, default value is used for result name.
8670
8671             Returns:
8672                 New GEOM.GEOM_Object, containing the translated object.
8673             """
8674             # Example: see GEOM_TestAll.py
8675             anObj = self.TrsfOp.TranslateVectorCopy(theObject, theVector)
8676             RaiseIfFailed("TranslateVectorCopy", self.TrsfOp)
8677             self._autoPublish(anObj, theName, "translated")
8678             return anObj
8679
8680         ## Translate the given object along the given vector on given distance.
8681         #  @param theObject The object to be translated.
8682         #  @param theVector The translation vector.
8683         #  @param theDistance The translation distance.
8684         #  @param theCopy Flag used to translate object itself or create a copy.
8685         #  @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8686         #  new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8687         #
8688         #  @ref tui_translation "Example"
8689         @ManageTransactions("TrsfOp")
8690         def TranslateVectorDistance(self, theObject, theVector, theDistance, theCopy=False):
8691             """
8692             Translate the given object along the given vector on given distance.
8693
8694             Parameters:
8695                 theObject The object to be translated.
8696                 theVector The translation vector.
8697                 theDistance The translation distance.
8698                 theCopy Flag used to translate object itself or create a copy.
8699
8700             Returns:
8701                 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8702                 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8703             """
8704             # Example: see GEOM_TestAll.py
8705             theDistance,Parameters = ParseParameters(theDistance)
8706             anObj = self.TrsfOp.TranslateVectorDistance(theObject, theVector, theDistance, theCopy)
8707             RaiseIfFailed("TranslateVectorDistance", self.TrsfOp)
8708             anObj.SetParameters(Parameters)
8709             return anObj
8710
8711         ## Translate the given object along the given vector on given distance,
8712         #  creating its copy before the translation.
8713         #  @param theObject The object to be translated.
8714         #  @param theVector The translation vector.
8715         #  @param theDistance The translation distance.
8716         #  @param theName Object name; when specified, this parameter is used
8717         #         for result publication in the study. Otherwise, if automatic
8718         #         publication is switched on, default value is used for result name.
8719         #
8720         #  @return New GEOM.GEOM_Object, containing the translated object.
8721         #
8722         #  @ref tui_translation "Example"
8723         @ManageTransactions("TrsfOp")
8724         def MakeTranslationVectorDistance(self, theObject, theVector, theDistance, theName=None):
8725             """
8726             Translate the given object along the given vector on given distance,
8727             creating its copy before the translation.
8728
8729             Parameters:
8730                 theObject The object to be translated.
8731                 theVector The translation vector.
8732                 theDistance The translation distance.
8733                 theName Object name; when specified, this parameter is used
8734                         for result publication in the study. Otherwise, if automatic
8735                         publication is switched on, default value is used for result name.
8736
8737             Returns:
8738                 New GEOM.GEOM_Object, containing the translated object.
8739             """
8740             # Example: see GEOM_TestAll.py
8741             theDistance,Parameters = ParseParameters(theDistance)
8742             anObj = self.TrsfOp.TranslateVectorDistance(theObject, theVector, theDistance, 1)
8743             RaiseIfFailed("TranslateVectorDistance", self.TrsfOp)
8744             anObj.SetParameters(Parameters)
8745             self._autoPublish(anObj, theName, "translated")
8746             return anObj
8747
8748         ## Rotate the given object around the given axis on the given angle.
8749         #  @param theObject The object to be rotated.
8750         #  @param theAxis Rotation axis.
8751         #  @param theAngle Rotation angle in radians.
8752         #  @param theCopy Flag used to rotate object itself or create a copy.
8753         #
8754         #  @return Rotated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8755         #  new GEOM.GEOM_Object, containing the rotated object if @a theCopy flag is @c True.
8756         #
8757         #  @ref tui_rotation "Example"
8758         @ManageTransactions("TrsfOp")
8759         def Rotate(self, theObject, theAxis, theAngle, theCopy=False):
8760             """
8761             Rotate the given object around the given axis on the given angle.
8762
8763             Parameters:
8764                 theObject The object to be rotated.
8765                 theAxis Rotation axis.
8766                 theAngle Rotation angle in radians.
8767                 theCopy Flag used to rotate object itself or create a copy.
8768
8769             Returns:
8770                 Rotated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8771                 new GEOM.GEOM_Object, containing the rotated object if theCopy flag is True.
8772             """
8773             # Example: see GEOM_TestAll.py
8774             flag = False
8775             if isinstance(theAngle,str):
8776                 flag = True
8777             theAngle, Parameters = ParseParameters(theAngle)
8778             if flag:
8779                 theAngle = theAngle*math.pi/180.0
8780             if theCopy:
8781                 anObj = self.TrsfOp.RotateCopy(theObject, theAxis, theAngle)
8782             else:
8783                 anObj = self.TrsfOp.Rotate(theObject, theAxis, theAngle)
8784             RaiseIfFailed("Rotate", self.TrsfOp)
8785             anObj.SetParameters(Parameters)
8786             return anObj
8787
8788         ## Rotate the given object around the given axis
8789         #  on the given angle, creating its copy before the rotation.
8790         #  @param theObject The object to be rotated.
8791         #  @param theAxis Rotation axis.
8792         #  @param theAngle Rotation angle in radians.
8793         #  @param theName Object name; when specified, this parameter is used
8794         #         for result publication in the study. Otherwise, if automatic
8795         #         publication is switched on, default value is used for result name.
8796         #
8797         #  @return New GEOM.GEOM_Object, containing the rotated object.
8798         #
8799         #  @ref tui_rotation "Example"
8800         @ManageTransactions("TrsfOp")
8801         def MakeRotation(self, theObject, theAxis, theAngle, theName=None):
8802             """
8803             Rotate the given object around the given axis
8804             on the given angle, creating its copy before the rotatation.
8805
8806             Parameters:
8807                 theObject The object to be rotated.
8808                 theAxis Rotation axis.
8809                 theAngle Rotation angle in radians.
8810                 theName Object name; when specified, this parameter is used
8811                         for result publication in the study. Otherwise, if automatic
8812                         publication is switched on, default value is used for result name.
8813
8814             Returns:
8815                 New GEOM.GEOM_Object, containing the rotated object.
8816             """
8817             # Example: see GEOM_TestAll.py
8818             flag = False
8819             if isinstance(theAngle,str):
8820                 flag = True
8821             theAngle, Parameters = ParseParameters(theAngle)
8822             if flag:
8823                 theAngle = theAngle*math.pi/180.0
8824             anObj = self.TrsfOp.RotateCopy(theObject, theAxis, theAngle)
8825             RaiseIfFailed("RotateCopy", self.TrsfOp)
8826             anObj.SetParameters(Parameters)
8827             self._autoPublish(anObj, theName, "rotated")
8828             return anObj
8829
8830         ## Rotate given object around vector perpendicular to plane
8831         #  containing three points.
8832         #  @param theObject The object to be rotated.
8833         #  @param theCentPoint central point the axis is the vector perpendicular to the plane
8834         #  containing the three points.
8835         #  @param thePoint1,thePoint2 points in a perpendicular plane of the axis.
8836         #  @param theCopy Flag used to rotate object itself or create a copy.
8837         #  @return Rotated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8838         #  new GEOM.GEOM_Object, containing the rotated object if @a theCopy flag is @c True.
8839         @ManageTransactions("TrsfOp")
8840         def RotateThreePoints(self, theObject, theCentPoint, thePoint1, thePoint2, theCopy=False):
8841             """
8842             Rotate given object around vector perpendicular to plane
8843             containing three points.
8844
8845             Parameters:
8846                 theObject The object to be rotated.
8847                 theCentPoint central point  the axis is the vector perpendicular to the plane
8848                              containing the three points.
8849                 thePoint1,thePoint2 points in a perpendicular plane of the axis.
8850                 theCopy Flag used to rotate object itself or create a copy.
8851
8852             Returns:
8853                 Rotated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8854                 new GEOM.GEOM_Object, containing the rotated object if theCopy flag is True.
8855             """
8856             if theCopy:
8857                 anObj = self.TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
8858             else:
8859                 anObj = self.TrsfOp.RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2)
8860             RaiseIfFailed("RotateThreePoints", self.TrsfOp)
8861             return anObj
8862
8863         ## Rotate given object around vector perpendicular to plane
8864         #  containing three points, creating its copy before the rotatation.
8865         #  @param theObject The object to be rotated.
8866         #  @param theCentPoint central point the axis is the vector perpendicular to the plane
8867         #  containing the three points.
8868         #  @param thePoint1,thePoint2 in a perpendicular plane of the axis.
8869         #  @param theName Object name; when specified, this parameter is used
8870         #         for result publication in the study. Otherwise, if automatic
8871         #         publication is switched on, default value is used for result name.
8872         #
8873         #  @return New GEOM.GEOM_Object, containing the rotated object.
8874         #
8875         #  @ref tui_rotation "Example"
8876         @ManageTransactions("TrsfOp")
8877         def MakeRotationThreePoints(self, theObject, theCentPoint, thePoint1, thePoint2, theName=None):
8878             """
8879             Rotate given object around vector perpendicular to plane
8880             containing three points, creating its copy before the rotatation.
8881
8882             Parameters:
8883                 theObject The object to be rotated.
8884                 theCentPoint central point  the axis is the vector perpendicular to the plane
8885                              containing the three points.
8886                 thePoint1,thePoint2  in a perpendicular plane of the axis.
8887                 theName Object name; when specified, this parameter is used
8888                         for result publication in the study. Otherwise, if automatic
8889                         publication is switched on, default value is used for result name.
8890
8891             Returns:
8892                 New GEOM.GEOM_Object, containing the rotated object.
8893             """
8894             # Example: see GEOM_TestAll.py
8895             anObj = self.TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
8896             RaiseIfFailed("RotateThreePointsCopy", self.TrsfOp)
8897             self._autoPublish(anObj, theName, "rotated")
8898             return anObj
8899
8900         ## Scale the given object by the specified factor.
8901         #  @param theObject The object to be scaled.
8902         #  @param thePoint Center point for scaling.
8903         #                  Passing None for it means scaling relatively the origin of global CS.
8904         #  @param theFactor Scaling factor value.
8905         #  @param theCopy Flag used to scale object itself or create a copy.
8906         #  @return Scaled @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8907         #  new GEOM.GEOM_Object, containing the scaled object if @a theCopy flag is @c True.
8908         @ManageTransactions("TrsfOp")
8909         def Scale(self, theObject, thePoint, theFactor, theCopy=False):
8910             """
8911             Scale the given object by the specified factor.
8912
8913             Parameters:
8914                 theObject The object to be scaled.
8915                 thePoint Center point for scaling.
8916                          Passing None for it means scaling relatively the origin of global CS.
8917                 theFactor Scaling factor value.
8918                 theCopy Flag used to scale object itself or create a copy.
8919
8920             Returns:
8921                 Scaled theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8922                 new GEOM.GEOM_Object, containing the scaled object if theCopy flag is True.
8923             """
8924             # Example: see GEOM_TestAll.py
8925             theFactor, Parameters = ParseParameters(theFactor)
8926             if theCopy:
8927                 anObj = self.TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
8928             else:
8929                 anObj = self.TrsfOp.ScaleShape(theObject, thePoint, theFactor)
8930             RaiseIfFailed("Scale", self.TrsfOp)
8931             anObj.SetParameters(Parameters)
8932             return anObj
8933
8934         ## Scale the given object by the factor, creating its copy before the scaling.
8935         #  @param theObject The object to be scaled.
8936         #  @param thePoint Center point for scaling.
8937         #                  Passing None for it means scaling relatively the origin of global CS.
8938         #  @param theFactor Scaling factor value.
8939         #  @param theName Object name; when specified, this parameter is used
8940         #         for result publication in the study. Otherwise, if automatic
8941         #         publication is switched on, default value is used for result name.
8942         #
8943         #  @return New GEOM.GEOM_Object, containing the scaled shape.
8944         #
8945         #  @ref tui_scale "Example"
8946         @ManageTransactions("TrsfOp")
8947         def MakeScaleTransform(self, theObject, thePoint, theFactor, theName=None):
8948             """
8949             Scale the given object by the factor, creating its copy before the scaling.
8950
8951             Parameters:
8952                 theObject The object to be scaled.
8953                 thePoint Center point for scaling.
8954                          Passing None for it means scaling relatively the origin of global CS.
8955                 theFactor Scaling factor value.
8956                 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             Returns:
8961                 New GEOM.GEOM_Object, containing the scaled shape.
8962             """
8963             # Example: see GEOM_TestAll.py
8964             theFactor, Parameters = ParseParameters(theFactor)
8965             anObj = self.TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
8966             RaiseIfFailed("ScaleShapeCopy", self.TrsfOp)
8967             anObj.SetParameters(Parameters)
8968             self._autoPublish(anObj, theName, "scaled")
8969             return anObj
8970
8971         ## Scale the given object by different factors along coordinate axes.
8972         #  @param theObject The object to be scaled.
8973         #  @param thePoint Center point for scaling.
8974         #                  Passing None for it means scaling relatively the origin of global CS.
8975         #  @param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8976         #  @param theCopy Flag used to scale object itself or create a copy.
8977         #  @return Scaled @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8978         #  new GEOM.GEOM_Object, containing the scaled object if @a theCopy flag is @c True.
8979         @ManageTransactions("TrsfOp")
8980         def ScaleAlongAxes(self, theObject, thePoint, theFactorX, theFactorY, theFactorZ, theCopy=False):
8981             """
8982             Scale the given object by different factors along coordinate axes.
8983
8984             Parameters:
8985                 theObject The object to be scaled.
8986                 thePoint Center point for scaling.
8987                             Passing None for it means scaling relatively the origin of global CS.
8988                 theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8989                 theCopy Flag used to scale object itself or create a copy.
8990
8991             Returns:
8992                 Scaled theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8993                 new GEOM.GEOM_Object, containing the scaled object if theCopy flag is True.
8994             """
8995             # Example: see GEOM_TestAll.py
8996             theFactorX, theFactorY, theFactorZ, Parameters = ParseParameters(theFactorX, theFactorY, theFactorZ)
8997             if theCopy:
8998                 anObj = self.TrsfOp.ScaleShapeAlongAxesCopy(theObject, thePoint,
8999                                                             theFactorX, theFactorY, theFactorZ)
9000             else:
9001                 anObj = self.TrsfOp.ScaleShapeAlongAxes(theObject, thePoint,
9002                                                         theFactorX, theFactorY, theFactorZ)
9003             RaiseIfFailed("ScaleAlongAxes", self.TrsfOp)
9004             anObj.SetParameters(Parameters)
9005             return anObj
9006
9007         ## Scale the given object by different factors along coordinate axes,
9008         #  creating its copy before the scaling.
9009         #  @param theObject The object to be scaled.
9010         #  @param thePoint Center point for scaling.
9011         #                  Passing None for it means scaling relatively the origin of global CS.
9012         #  @param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
9013         #  @param theName Object name; when specified, this parameter is used
9014         #         for result publication in the study. Otherwise, if automatic
9015         #         publication is switched on, default value is used for result name.
9016         #
9017         #  @return New GEOM.GEOM_Object, containing the scaled shape.
9018         #
9019         #  @ref swig_scale "Example"
9020         @ManageTransactions("TrsfOp")
9021         def MakeScaleAlongAxes(self, theObject, thePoint, theFactorX, theFactorY, theFactorZ, theName=None):
9022             """
9023             Scale the given object by different factors along coordinate axes,
9024             creating its copy before the scaling.
9025
9026             Parameters:
9027                 theObject The object to be scaled.
9028                 thePoint Center point for scaling.
9029                             Passing None for it means scaling relatively the origin of global CS.
9030                 theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
9031                 theName Object name; when specified, this parameter is used
9032                         for result publication in the study. Otherwise, if automatic
9033                         publication is switched on, default value is used for result name.
9034
9035             Returns:
9036                 New GEOM.GEOM_Object, containing the scaled shape.
9037             """
9038             # Example: see GEOM_TestAll.py
9039             theFactorX, theFactorY, theFactorZ, Parameters = ParseParameters(theFactorX, theFactorY, theFactorZ)
9040             anObj = self.TrsfOp.ScaleShapeAlongAxesCopy(theObject, thePoint,
9041                                                         theFactorX, theFactorY, theFactorZ)
9042             RaiseIfFailed("MakeScaleAlongAxes", self.TrsfOp)
9043             anObj.SetParameters(Parameters)
9044             self._autoPublish(anObj, theName, "scaled")
9045             return anObj
9046
9047         ## Mirror an object relatively the given plane.
9048         #  @param theObject The object to be mirrored.
9049         #  @param thePlane Plane of symmetry.
9050         #  @param theCopy Flag used to mirror object itself or create a copy.
9051         #  @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9052         #  new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
9053         @ManageTransactions("TrsfOp")
9054         def MirrorByPlane(self, theObject, thePlane, theCopy=False):
9055             """
9056             Mirror an object relatively the given plane.
9057
9058             Parameters:
9059                 theObject The object to be mirrored.
9060                 thePlane Plane of symmetry.
9061                 theCopy Flag used to mirror object itself or create a copy.
9062
9063             Returns:
9064                 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9065                 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
9066             """
9067             if theCopy:
9068                 anObj = self.TrsfOp.MirrorPlaneCopy(theObject, thePlane)
9069             else:
9070                 anObj = self.TrsfOp.MirrorPlane(theObject, thePlane)
9071             RaiseIfFailed("MirrorByPlane", self.TrsfOp)
9072             return anObj
9073
9074         ## Create an object, symmetrical
9075         #  to the given one relatively the given plane.
9076         #  @param theObject The object to be mirrored.
9077         #  @param thePlane Plane of symmetry.
9078         #  @param theName Object name; when specified, this parameter is used
9079         #         for result publication in the study. Otherwise, if automatic
9080         #         publication is switched on, default value is used for result name.
9081         #
9082         #  @return New GEOM.GEOM_Object, containing the mirrored shape.
9083         #
9084         #  @ref tui_mirror "Example"
9085         @ManageTransactions("TrsfOp")
9086         def MakeMirrorByPlane(self, theObject, thePlane, theName=None):
9087             """
9088             Create an object, symmetrical to the given one relatively the given plane.
9089
9090             Parameters:
9091                 theObject The object to be mirrored.
9092                 thePlane Plane of symmetry.
9093                 theName Object name; when specified, this parameter is used
9094                         for result publication in the study. Otherwise, if automatic
9095                         publication is switched on, default value is used for result name.
9096
9097             Returns:
9098                 New GEOM.GEOM_Object, containing the mirrored shape.
9099             """
9100             # Example: see GEOM_TestAll.py
9101             anObj = self.TrsfOp.MirrorPlaneCopy(theObject, thePlane)
9102             RaiseIfFailed("MirrorPlaneCopy", self.TrsfOp)
9103             self._autoPublish(anObj, theName, "mirrored")
9104             return anObj
9105
9106         ## Mirror an object relatively the given axis.
9107         #  @param theObject The object to be mirrored.
9108         #  @param theAxis Axis of symmetry.
9109         #  @param theCopy Flag used to mirror object itself or create a copy.
9110         #  @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9111         #  new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
9112         @ManageTransactions("TrsfOp")
9113         def MirrorByAxis(self, theObject, theAxis, theCopy=False):
9114             """
9115             Mirror an object relatively the given axis.
9116
9117             Parameters:
9118                 theObject The object to be mirrored.
9119                 theAxis Axis of symmetry.
9120                 theCopy Flag used to mirror object itself or create a copy.
9121
9122             Returns:
9123                 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9124                 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
9125             """
9126             if theCopy:
9127                 anObj = self.TrsfOp.MirrorAxisCopy(theObject, theAxis)
9128             else:
9129                 anObj = self.TrsfOp.MirrorAxis(theObject, theAxis)
9130             RaiseIfFailed("MirrorByAxis", self.TrsfOp)
9131             return anObj
9132
9133         ## Create an object, symmetrical
9134         #  to the given one relatively the given axis.
9135         #  @param theObject The object to be mirrored.
9136         #  @param theAxis Axis of symmetry.
9137         #  @param theName Object name; when specified, this parameter is used
9138         #         for result publication in the study. Otherwise, if automatic
9139         #         publication is switched on, default value is used for result name.
9140         #
9141         #  @return New GEOM.GEOM_Object, containing the mirrored shape.
9142         #
9143         #  @ref tui_mirror "Example"
9144         @ManageTransactions("TrsfOp")
9145         def MakeMirrorByAxis(self, theObject, theAxis, theName=None):
9146             """
9147             Create an object, symmetrical to the given one relatively the given axis.
9148
9149             Parameters:
9150                 theObject The object to be mirrored.
9151                 theAxis Axis of symmetry.
9152                 theName Object name; when specified, this parameter is used
9153                         for result publication in the study. Otherwise, if automatic
9154                         publication is switched on, default value is used for result name.
9155
9156             Returns:
9157                 New GEOM.GEOM_Object, containing the mirrored shape.
9158             """
9159             # Example: see GEOM_TestAll.py
9160             anObj = self.TrsfOp.MirrorAxisCopy(theObject, theAxis)
9161             RaiseIfFailed("MirrorAxisCopy", self.TrsfOp)
9162             self._autoPublish(anObj, theName, "mirrored")
9163             return anObj
9164
9165         ## Mirror an object relatively the given point.
9166         #  @param theObject The object to be mirrored.
9167         #  @param thePoint Point of symmetry.
9168         #  @param theCopy Flag used to mirror object itself or create a copy.
9169         #  @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9170         #  new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
9171         @ManageTransactions("TrsfOp")
9172         def MirrorByPoint(self, theObject, thePoint, theCopy=False):
9173             """
9174             Mirror an object relatively the given point.
9175
9176             Parameters:
9177                 theObject The object to be mirrored.
9178                 thePoint Point of symmetry.
9179                 theCopy Flag used to mirror object itself or create a copy.
9180
9181             Returns:
9182                 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9183                 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
9184             """
9185             # Example: see GEOM_TestAll.py
9186             if theCopy:
9187                 anObj = self.TrsfOp.MirrorPointCopy(theObject, thePoint)
9188             else:
9189                 anObj = self.TrsfOp.MirrorPoint(theObject, thePoint)
9190             RaiseIfFailed("MirrorByPoint", self.TrsfOp)
9191             return anObj
9192
9193         ## Create an object, symmetrical
9194         #  to the given one relatively the given point.
9195         #  @param theObject The object to be mirrored.
9196         #  @param thePoint Point of symmetry.
9197         #  @param theName Object name; when specified, this parameter is used
9198         #         for result publication in the study. Otherwise, if automatic
9199         #         publication is switched on, default value is used for result name.
9200         #
9201         #  @return New GEOM.GEOM_Object, containing the mirrored shape.
9202         #
9203         #  @ref tui_mirror "Example"
9204         @ManageTransactions("TrsfOp")
9205         def MakeMirrorByPoint(self, theObject, thePoint, theName=None):
9206             """
9207             Create an object, symmetrical
9208             to the given one relatively the given point.
9209
9210             Parameters:
9211                 theObject The object to be mirrored.
9212                 thePoint Point of symmetry.
9213                 theName Object name; when specified, this parameter is used
9214                         for result publication in the study. Otherwise, if automatic
9215                         publication is switched on, default value is used for result name.
9216
9217             Returns:
9218                 New GEOM.GEOM_Object, containing the mirrored shape.
9219             """
9220             # Example: see GEOM_TestAll.py
9221             anObj = self.TrsfOp.MirrorPointCopy(theObject, thePoint)
9222             RaiseIfFailed("MirrorPointCopy", self.TrsfOp)
9223             self._autoPublish(anObj, theName, "mirrored")
9224             return anObj
9225
9226         ## Modify the location of the given object.
9227         #  @param theObject The object to be displaced.
9228         #  @param theStartLCS Coordinate system to perform displacement from it.\n
9229         #                     If \a theStartLCS is NULL, displacement
9230         #                     will be performed from global CS.\n
9231         #                     If \a theObject itself is used as \a theStartLCS,
9232         #                     its location will be changed to \a theEndLCS.
9233         #  @param theEndLCS Coordinate system to perform displacement to it.
9234         #  @param theCopy Flag used to displace object itself or create a copy.
9235         #  @return Displaced @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9236         #  new GEOM.GEOM_Object, containing the displaced object if @a theCopy flag is @c True.
9237         @ManageTransactions("TrsfOp")
9238         def Position(self, theObject, theStartLCS, theEndLCS, theCopy=False):
9239             """
9240             Modify the Location of the given object by LCS, creating its copy before the setting.
9241
9242             Parameters:
9243                 theObject The object to be displaced.
9244                 theStartLCS Coordinate system to perform displacement from it.
9245                             If theStartLCS is NULL, displacement
9246                             will be performed from global CS.
9247                             If theObject itself is used as theStartLCS,
9248                             its location will be changed to theEndLCS.
9249                 theEndLCS Coordinate system to perform displacement to it.
9250                 theCopy Flag used to displace object itself or create a copy.
9251
9252             Returns:
9253                 Displaced theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9254                 new GEOM.GEOM_Object, containing the displaced object if theCopy flag is True.
9255             """
9256             # Example: see GEOM_TestAll.py
9257             if theCopy:
9258                 anObj = self.TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
9259             else:
9260                 anObj = self.TrsfOp.PositionShape(theObject, theStartLCS, theEndLCS)
9261             RaiseIfFailed("Displace", self.TrsfOp)
9262             return anObj
9263
9264         ## Modify the Location of the given object by LCS,
9265         #  creating its copy before the setting.
9266         #  @param theObject The object to be displaced.
9267         #  @param theStartLCS Coordinate system to perform displacement from it.\n
9268         #                     If \a theStartLCS is NULL, displacement
9269         #                     will be performed from global CS.\n
9270         #                     If \a theObject itself is used as \a theStartLCS,
9271         #                     its location will be changed to \a theEndLCS.
9272         #  @param theEndLCS Coordinate system to perform displacement to it.
9273         #  @param theName Object name; when specified, this parameter is used
9274         #         for result publication in the study. Otherwise, if automatic
9275         #         publication is switched on, default value is used for result name.
9276         #
9277         #  @return New GEOM.GEOM_Object, containing the displaced shape.
9278         #
9279         #  @ref tui_modify_location "Example"
9280         @ManageTransactions("TrsfOp")
9281         def MakePosition(self, theObject, theStartLCS, theEndLCS, theName=None):
9282             """
9283             Modify the Location of the given object by LCS, creating its copy before the setting.
9284
9285             Parameters:
9286                 theObject The object to be displaced.
9287                 theStartLCS Coordinate system to perform displacement from it.
9288                             If theStartLCS is NULL, displacement
9289                             will be performed from global CS.
9290                             If theObject itself is used as theStartLCS,
9291                             its location will be changed to theEndLCS.
9292                 theEndLCS Coordinate system to perform displacement to it.
9293                 theName Object name; when specified, this parameter is used
9294                         for result publication in the study. Otherwise, if automatic
9295                         publication is switched on, default value is used for result name.
9296
9297             Returns:
9298                 New GEOM.GEOM_Object, containing the displaced shape.
9299
9300             Example of usage:
9301                 # create local coordinate systems
9302                 cs1 = geompy.MakeMarker( 0, 0, 0, 1,0,0, 0,1,0)
9303                 cs2 = geompy.MakeMarker(30,40,40, 1,0,0, 0,1,0)
9304                 # modify the location of the given object
9305                 position = geompy.MakePosition(cylinder, cs1, cs2)
9306             """
9307             # Example: see GEOM_TestAll.py
9308             anObj = self.TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
9309             RaiseIfFailed("PositionShapeCopy", self.TrsfOp)
9310             self._autoPublish(anObj, theName, "displaced")
9311             return anObj
9312
9313         ## Modify the Location of the given object by Path.
9314         #  @param  theObject The object to be displaced.
9315         #  @param  thePath Wire or Edge along that the object will be translated.
9316         #  @param  theDistance progress of Path (0 = start location, 1 = end of path location).
9317         #  @param  theCopy is to create a copy objects if true.
9318         #  @param  theReverse  0 - for usual direction, 1 - to reverse path direction.
9319         #  @return Displaced @a theObject (GEOM.GEOM_Object) if @a theCopy is @c False or
9320         #          new GEOM.GEOM_Object, containing the displaced shape if @a theCopy is @c True.
9321         #
9322         #  @ref tui_modify_location "Example"
9323         @ManageTransactions("TrsfOp")
9324         def PositionAlongPath(self,theObject, thePath, theDistance, theCopy, theReverse):
9325             """
9326             Modify the Location of the given object by Path.
9327
9328             Parameters:
9329                  theObject The object to be displaced.
9330                  thePath Wire or Edge along that the object will be translated.
9331                  theDistance progress of Path (0 = start location, 1 = end of path location).
9332                  theCopy is to create a copy objects if true.
9333                  theReverse  0 - for usual direction, 1 - to reverse path direction.
9334
9335             Returns:
9336                  Displaced theObject (GEOM.GEOM_Object) if theCopy is False or
9337                  new GEOM.GEOM_Object, containing the displaced shape if theCopy is True.
9338
9339             Example of usage:
9340                 position = geompy.PositionAlongPath(cylinder, circle, 0.75, 1, 1)
9341             """
9342             # Example: see GEOM_TestAll.py
9343             anObj = self.TrsfOp.PositionAlongPath(theObject, thePath, theDistance, theCopy, theReverse)
9344             RaiseIfFailed("PositionAlongPath", self.TrsfOp)
9345             return anObj
9346
9347         ## Modify the Location of the given object by Path, creating its copy before the operation.
9348         #  @param theObject The object to be displaced.
9349         #  @param thePath Wire or Edge along that the object will be translated.
9350         #  @param theDistance progress of Path (0 = start location, 1 = end of path location).
9351         #  @param theReverse  0 - for usual direction, 1 - to reverse path direction.
9352         #  @param theName Object name; when specified, this parameter is used
9353         #         for result publication in the study. Otherwise, if automatic
9354         #         publication is switched on, default value is used for result name.
9355         #
9356         #  @return New GEOM.GEOM_Object, containing the displaced shape.
9357         @ManageTransactions("TrsfOp")
9358         def MakePositionAlongPath(self, theObject, thePath, theDistance, theReverse, theName=None):
9359             """
9360             Modify the Location of the given object by Path, creating its copy before the operation.
9361
9362             Parameters:
9363                  theObject The object to be displaced.
9364                  thePath Wire or Edge along that the object will be translated.
9365                  theDistance progress of Path (0 = start location, 1 = end of path location).
9366                  theReverse  0 - for usual direction, 1 - to reverse path direction.
9367                  theName Object name; when specified, this parameter is used
9368                          for result publication in the study. Otherwise, if automatic
9369                          publication is switched on, default value is used for result name.
9370
9371             Returns:
9372                 New GEOM.GEOM_Object, containing the displaced shape.
9373             """
9374             # Example: see GEOM_TestAll.py
9375             anObj = self.TrsfOp.PositionAlongPath(theObject, thePath, theDistance, 1, theReverse)
9376             RaiseIfFailed("PositionAlongPath", self.TrsfOp)
9377             self._autoPublish(anObj, theName, "displaced")
9378             return anObj
9379
9380         ## Offset given shape.
9381         #  @param theObject The base object for the offset.
9382         #  @param theOffset Offset value.
9383         #  @param theCopy Flag used to offset object itself or create a copy.
9384         #  @return Modified @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9385         #  new GEOM.GEOM_Object, containing the result of offset operation if @a theCopy flag is @c True.
9386         @ManageTransactions("TrsfOp")
9387         def Offset(self, theObject, theOffset, theCopy=False):
9388             """
9389             Offset given shape.
9390
9391             Parameters:
9392                 theObject The base object for the offset.
9393                 theOffset Offset value.
9394                 theCopy Flag used to offset object itself or create a copy.
9395
9396             Returns:
9397                 Modified theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9398                 new GEOM.GEOM_Object, containing the result of offset operation if theCopy flag is True.
9399             """
9400             theOffset, Parameters = ParseParameters(theOffset)
9401             if theCopy:
9402                 anObj = self.TrsfOp.OffsetShapeCopy(theObject, theOffset, True)
9403             else:
9404                 anObj = self.TrsfOp.OffsetShape(theObject, theOffset, True)
9405             RaiseIfFailed("Offset", self.TrsfOp)
9406             anObj.SetParameters(Parameters)
9407             return anObj
9408
9409         ## Create new object as offset of the given one. Gap between two adjacent
9410         #  offset surfaces is filled by a pipe.
9411         #  @param theObject The base object for the offset.
9412         #  @param theOffset Offset value.
9413         #  @param theName Object name; when specified, this parameter is used
9414         #         for result publication in the study. Otherwise, if automatic
9415         #         publication is switched on, default value is used for result name.
9416         #
9417         #  @return New GEOM.GEOM_Object, containing the offset object.
9418         #
9419         #  @sa MakeOffsetIntersectionJoin
9420         #  @ref tui_offset "Example"
9421         @ManageTransactions("TrsfOp")
9422         def MakeOffset(self, theObject, theOffset, theName=None):
9423             """
9424             Create new object as offset of the given one. Gap between adjacent
9425             offset surfaces is filled by a pipe.
9426
9427             Parameters:
9428                 theObject The base object for the offset.
9429                 theOffset Offset value.
9430                 theName Object name; when specified, this parameter is used
9431                         for result publication in the study. Otherwise, if automatic
9432                         publication is switched on, default value is used for result name.
9433
9434             Returns:
9435                 New GEOM.GEOM_Object, containing the offset object.
9436
9437             Example of usage:
9438                  box = geompy.MakeBox(20, 20, 20, 200, 200, 200)
9439                  # create a new object as offset of the given object
9440                  offset = geompy.MakeOffset(box, 70.)
9441             """
9442             # Example: see GEOM_TestAll.py
9443             theOffset, Parameters = ParseParameters(theOffset)
9444             anObj = self.TrsfOp.OffsetShapeCopy( theObject, theOffset, True )
9445             RaiseIfFailed("OffsetShapeCopy", self.TrsfOp)
9446             anObj.SetParameters(Parameters)
9447             self._autoPublish(anObj, theName, "offset")
9448             return anObj
9449
9450         ## Create new object as offset of the given one. Gap between adjacent
9451         #  offset surfaces is filled by extending and intersecting them.
9452         #  @param theObject The base object for the offset.
9453         #  @param theOffset Offset value.
9454         #  @param theName Object name; when specified, this parameter is used
9455         #         for result publication in the study. Otherwise, if automatic
9456         #         publication is switched on, default value is used for result name.
9457         #
9458         #  @return New GEOM.GEOM_Object, containing the offset object.
9459         #
9460         #  @sa MakeOffset
9461         #  @ref tui_offset "Example"
9462         @ManageTransactions("TrsfOp")
9463         def MakeOffsetIntersectionJoin(self, theObject, theOffset, theName=None):
9464             """
9465             Create new object as offset of the given one. Gap between adjacent
9466             offset surfaces is filled by extending and intersecting them.
9467
9468             Parameters:
9469                 theObject The base object for the offset.
9470                 theOffset Offset value.
9471                 theName Object name; when specified, this parameter is used
9472                         for result publication in the study. Otherwise, if automatic
9473                         publication is switched on, default value is used for result name.
9474
9475             Returns:
9476                 New GEOM.GEOM_Object, containing the offset object.
9477
9478             Example of usage:
9479                  box = geompy.MakeBox(20, 20, 20, 200, 200, 200)
9480                  # create a new box extended by 70
9481                  offset = geompy.MakeOffsetIntersectionJoin(box, 70.)
9482             """
9483             # Example: see GEOM_TestAll.py
9484             theOffset, Parameters = ParseParameters( theOffset )
9485             anObj = self.TrsfOp.OffsetShapeCopy( theObject, theOffset, False )
9486             RaiseIfFailed("OffsetShapeCopy", self.TrsfOp)
9487             anObj.SetParameters(Parameters)
9488             self._autoPublish(anObj, theName, "offset")
9489             return anObj
9490
9491         ## Create new object as projection of the given one on another.
9492         #  @param theSource The source object for the projection. It can be a point, edge or wire.
9493         #         Edge and wire are acceptable if @a theTarget is a face.
9494         #  @param theTarget The target object. It can be planar or cylindrical face, edge or wire.
9495         #  @param theName Object name; when specified, this parameter is used
9496         #         for result publication in the study. Otherwise, if automatic
9497         #         publication is switched on, default value is used for result name.
9498         #
9499         #  @return New GEOM.GEOM_Object, containing the projection.
9500         #
9501         #  @ref tui_projection "Example"
9502         @ManageTransactions("TrsfOp")
9503         def MakeProjection(self, theSource, theTarget, theName=None):
9504             """
9505             Create new object as projection of the given one on another.
9506
9507             Parameters:
9508                 theSource The source object for the projection. It can be a point, edge or wire.
9509                           Edge and wire are acceptable if theTarget is a face.
9510                 theTarget The target object. It can be planar or cylindrical face, edge or wire.
9511                 theName Object name; when specified, this parameter is used
9512                         for result publication in the study. Otherwise, if automatic
9513                         publication is switched on, default value is used for result name.
9514
9515             Returns:
9516                 New GEOM.GEOM_Object, containing the projection.
9517             """
9518             # Example: see GEOM_TestAll.py
9519             anObj = self.TrsfOp.ProjectShapeCopy(theSource, theTarget)
9520             RaiseIfFailed("ProjectShapeCopy", self.TrsfOp)
9521             self._autoPublish(anObj, theName, "projection")
9522             return anObj
9523
9524         ## Create a projection of the given point on a wire or an edge.
9525         #  If there are no solutions or there are 2 or more solutions It throws an
9526         #  exception.
9527         #  @param thePoint the point to be projected.
9528         #  @param theWire the wire. The edge is accepted as well.
9529         #  @param theName Object name; when specified, this parameter is used
9530         #         for result publication in the study. Otherwise, if automatic
9531         #         publication is switched on, default value is used for result name.
9532         #
9533         #  @return [\a u, \a PointOnEdge, \a EdgeInWireIndex]
9534         #  \n \a u: The parameter of projection point on edge.
9535         #  \n \a PointOnEdge: The projection point.
9536         #  \n \a EdgeInWireIndex: The index of an edge in a wire.
9537         #
9538         #  @ref tui_projection "Example"
9539         @ManageTransactions("TrsfOp")
9540         def MakeProjectionOnWire(self, thePoint, theWire, theName=None):
9541             """
9542             Create a projection of the given point on a wire or an edge.
9543             If there are no solutions or there are 2 or more solutions It throws an
9544             exception.
9545
9546             Parameters:
9547                 thePoint the point to be projected.
9548                 theWire the wire. The edge is accepted as well.
9549                 theName Object name; when specified, this parameter is used
9550                         for result publication in the study. Otherwise, if automatic
9551                         publication is switched on, default value is used for result name.
9552
9553             Returns:
9554                 [u, PointOnEdge, EdgeInWireIndex]
9555                  u: The parameter of projection point on edge.
9556                  PointOnEdge: The projection point.
9557                  EdgeInWireIndex: The index of an edge in a wire.
9558             """
9559             # Example: see GEOM_TestAll.py
9560             anObj = self.TrsfOp.ProjectPointOnWire(thePoint, theWire)
9561             RaiseIfFailed("ProjectPointOnWire", self.TrsfOp)
9562             self._autoPublish(anObj[1], theName, "projection")
9563             return anObj
9564
9565         # -----------------------------------------------------------------------------
9566         # Patterns
9567         # -----------------------------------------------------------------------------
9568
9569         ## Translate the given object along the given vector a given number times
9570         #  @param theObject The object to be translated.
9571         #  @param theVector Direction of the translation. DX if None.
9572         #  @param theStep Distance to translate on.
9573         #  @param theNbTimes Quantity of translations to be done.
9574         #  @param theName Object name; when specified, this parameter is used
9575         #         for result publication in the study. Otherwise, if automatic
9576         #         publication is switched on, default value is used for result name.
9577         #
9578         #  @return New GEOM.GEOM_Object, containing compound of all
9579         #          the shapes, obtained after each translation.
9580         #
9581         #  @ref tui_multi_translation "Example"
9582         @ManageTransactions("TrsfOp")
9583         def MakeMultiTranslation1D(self, theObject, theVector, theStep, theNbTimes, theName=None):
9584             """
9585             Translate the given object along the given vector a given number times
9586
9587             Parameters:
9588                 theObject The object to be translated.
9589                 theVector Direction of the translation. DX if None.
9590                 theStep Distance to translate on.
9591                 theNbTimes Quantity of translations to be done.
9592                 theName Object name; when specified, this parameter is used
9593                         for result publication in the study. Otherwise, if automatic
9594                         publication is switched on, default value is used for result name.
9595
9596             Returns:
9597                 New GEOM.GEOM_Object, containing compound of all
9598                 the shapes, obtained after each translation.
9599
9600             Example of usage:
9601                 r1d = geompy.MakeMultiTranslation1D(prism, vect, 20, 4)
9602             """
9603             # Example: see GEOM_TestAll.py
9604             theStep, theNbTimes, Parameters = ParseParameters(theStep, theNbTimes)
9605             anObj = self.TrsfOp.MultiTranslate1D(theObject, theVector, theStep, theNbTimes)
9606             RaiseIfFailed("MultiTranslate1D", self.TrsfOp)
9607             anObj.SetParameters(Parameters)
9608             self._autoPublish(anObj, theName, "multitranslation")
9609             return anObj
9610
9611         ## Conseqently apply two specified translations to theObject specified number of times.
9612         #  @param theObject The object to be translated.
9613         #  @param theVector1 Direction of the first translation. DX if None.
9614         #  @param theStep1 Step of the first translation.
9615         #  @param theNbTimes1 Quantity of translations to be done along theVector1.
9616         #  @param theVector2 Direction of the second translation. DY if None.
9617         #  @param theStep2 Step of the second translation.
9618         #  @param theNbTimes2 Quantity of translations to be done along theVector2.
9619         #  @param theName Object name; when specified, this parameter is used
9620         #         for result publication in the study. Otherwise, if automatic
9621         #         publication is switched on, default value is used for result name.
9622         #
9623         #  @return New GEOM.GEOM_Object, containing compound of all
9624         #          the shapes, obtained after each translation.
9625         #
9626         #  @ref tui_multi_translation "Example"
9627         @ManageTransactions("TrsfOp")
9628         def MakeMultiTranslation2D(self, theObject, theVector1, theStep1, theNbTimes1,
9629                                    theVector2, theStep2, theNbTimes2, theName=None):
9630             """
9631             Conseqently apply two specified translations to theObject specified number of times.
9632
9633             Parameters:
9634                 theObject The object to be translated.
9635                 theVector1 Direction of the first translation. DX if None.
9636                 theStep1 Step of the first translation.
9637                 theNbTimes1 Quantity of translations to be done along theVector1.
9638                 theVector2 Direction of the second translation. DY if None.
9639                 theStep2 Step of the second translation.
9640                 theNbTimes2 Quantity of translations to be done along theVector2.
9641                 theName Object name; when specified, this parameter is used
9642                         for result publication in the study. Otherwise, if automatic
9643                         publication is switched on, default value is used for result name.
9644
9645             Returns:
9646                 New GEOM.GEOM_Object, containing compound of all
9647                 the shapes, obtained after each translation.
9648
9649             Example of usage:
9650                 tr2d = geompy.MakeMultiTranslation2D(prism, vect1, 20, 4, vect2, 80, 3)
9651             """
9652             # Example: see GEOM_TestAll.py
9653             theStep1,theNbTimes1,theStep2,theNbTimes2, Parameters = ParseParameters(theStep1,theNbTimes1,theStep2,theNbTimes2)
9654             anObj = self.TrsfOp.MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
9655                                                  theVector2, theStep2, theNbTimes2)
9656             RaiseIfFailed("MultiTranslate2D", self.TrsfOp)
9657             anObj.SetParameters(Parameters)
9658             self._autoPublish(anObj, theName, "multitranslation")
9659             return anObj
9660
9661         ## Rotate the given object around the given axis a given number times.
9662         #  Rotation angle will be 2*PI/theNbTimes.
9663         #  @param theObject The object to be rotated.
9664         #  @param theAxis The rotation axis. DZ if None.
9665         #  @param theNbTimes Quantity of rotations to be done.
9666         #  @param theName Object name; when specified, this parameter is used
9667         #         for result publication in the study. Otherwise, if automatic
9668         #         publication is switched on, default value is used for result name.
9669         #
9670         #  @return New GEOM.GEOM_Object, containing compound of all the
9671         #          shapes, obtained after each rotation.
9672         #
9673         #  @ref tui_multi_rotation "Example"
9674         @ManageTransactions("TrsfOp")
9675         def MultiRotate1DNbTimes (self, theObject, theAxis, theNbTimes, theName=None):
9676             """
9677             Rotate the given object around the given axis a given number times.
9678             Rotation angle will be 2*PI/theNbTimes.
9679
9680             Parameters:
9681                 theObject The object to be rotated.
9682                 theAxis The rotation axis. DZ if None.
9683                 theNbTimes Quantity of rotations to be done.
9684                 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             Returns:
9689                 New GEOM.GEOM_Object, containing compound of all the
9690                 shapes, obtained after each rotation.
9691
9692             Example of usage:
9693                 rot1d = geompy.MultiRotate1DNbTimes(prism, vect, 4)
9694             """
9695             # Example: see GEOM_TestAll.py
9696             theNbTimes, Parameters = ParseParameters(theNbTimes)
9697             anObj = self.TrsfOp.MultiRotate1D(theObject, theAxis, theNbTimes)
9698             RaiseIfFailed("MultiRotate1DNbTimes", self.TrsfOp)
9699             anObj.SetParameters(Parameters)
9700             self._autoPublish(anObj, theName, "multirotation")
9701             return anObj
9702
9703         ## Rotate the given object around the given axis
9704         #  a given number times on the given angle.
9705         #  @param theObject The object to be rotated.
9706         #  @param theAxis The rotation axis. DZ if None.
9707         #  @param theAngleStep Rotation angle in radians.
9708         #  @param theNbTimes Quantity of rotations to be done.
9709         #  @param theName Object name; when specified, this parameter is used
9710         #         for result publication in the study. Otherwise, if automatic
9711         #         publication is switched on, default value is used for result name.
9712         #
9713         #  @return New GEOM.GEOM_Object, containing compound of all the
9714         #          shapes, obtained after each rotation.
9715         #
9716         #  @ref tui_multi_rotation "Example"
9717         @ManageTransactions("TrsfOp")
9718         def MultiRotate1DByStep(self, theObject, theAxis, theAngleStep, theNbTimes, theName=None):
9719             """
9720             Rotate the given object around the given axis
9721             a given number times on the given angle.
9722
9723             Parameters:
9724                 theObject The object to be rotated.
9725                 theAxis The rotation axis. DZ if None.
9726                 theAngleStep Rotation angle in radians.
9727                 theNbTimes Quantity of rotations to be done.
9728                 theName Object name; when specified, this parameter is used
9729                         for result publication in the study. Otherwise, if automatic
9730                         publication is switched on, default value is used for result name.
9731
9732             Returns:
9733                 New GEOM.GEOM_Object, containing compound of all the
9734                 shapes, obtained after each rotation.
9735
9736             Example of usage:
9737                 rot1d = geompy.MultiRotate1DByStep(prism, vect, math.pi/4, 4)
9738             """
9739             # Example: see GEOM_TestAll.py
9740             theAngleStep, theNbTimes, Parameters = ParseParameters(theAngleStep, theNbTimes)
9741             anObj = self.TrsfOp.MultiRotate1DByStep(theObject, theAxis, theAngleStep, theNbTimes)
9742             RaiseIfFailed("MultiRotate1DByStep", self.TrsfOp)
9743             anObj.SetParameters(Parameters)
9744             self._autoPublish(anObj, theName, "multirotation")
9745             return anObj
9746
9747         ## Rotate the given object around the given axis a given
9748         #  number times and multi-translate each rotation result.
9749         #  Rotation angle will be 2*PI/theNbTimes1.
9750         #  Translation direction passes through center of gravity
9751         #  of rotated shape and its projection on the rotation axis.
9752         #  @param theObject The object to be rotated.
9753         #  @param theAxis Rotation axis. DZ if None.
9754         #  @param theNbTimes1 Quantity of rotations to be done.
9755         #  @param theRadialStep Translation distance.
9756         #  @param theNbTimes2 Quantity of translations to be done.
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 compound of all the
9762         #          shapes, obtained after each transformation.
9763         #
9764         #  @ref tui_multi_rotation "Example"
9765         @ManageTransactions("TrsfOp")
9766         def MultiRotate2DNbTimes(self, theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
9767             """
9768             Rotate the given object around the
9769             given axis on the given angle a given number
9770             times and multi-translate each rotation result.
9771             Translation direction passes through center of gravity
9772             of rotated shape and its projection on the rotation axis.
9773
9774             Parameters:
9775                 theObject The object to be rotated.
9776                 theAxis Rotation axis. DZ if None.
9777                 theNbTimes1 Quantity of rotations to be done.
9778                 theRadialStep Translation distance.
9779                 theNbTimes2 Quantity of translations to be done.
9780                 theName Object name; when specified, this parameter is used
9781                         for result publication in the study. Otherwise, if automatic
9782                         publication is switched on, default value is used for result name.
9783
9784             Returns:
9785                 New GEOM.GEOM_Object, containing compound of all the
9786                 shapes, obtained after each transformation.
9787
9788             Example of usage:
9789                 rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
9790             """
9791             # Example: see GEOM_TestAll.py
9792             theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theNbTimes1, theRadialStep, theNbTimes2)
9793             anObj = self.TrsfOp.MultiRotate2DNbTimes(theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2)
9794             RaiseIfFailed("MultiRotate2DNbTimes", self.TrsfOp)
9795             anObj.SetParameters(Parameters)
9796             self._autoPublish(anObj, theName, "multirotation")
9797             return anObj
9798
9799         ## Rotate the given object around the
9800         #  given axis on the given angle a given number
9801         #  times and multi-translate each rotation result.
9802         #  Translation direction passes through center of gravity
9803         #  of rotated shape and its projection on the rotation axis.
9804         #  @param theObject The object to be rotated.
9805         #  @param theAxis Rotation axis. DZ if None.
9806         #  @param theAngleStep Rotation angle in radians.
9807         #  @param theNbTimes1 Quantity of rotations to be done.
9808         #  @param theRadialStep Translation distance.
9809         #  @param theNbTimes2 Quantity of translations to be done.
9810         #  @param theName Object name; when specified, this parameter is used
9811         #         for result publication in the study. Otherwise, if automatic
9812         #         publication is switched on, default value is used for result name.
9813         #
9814         #  @return New GEOM.GEOM_Object, containing compound of all the
9815         #          shapes, obtained after each transformation.
9816         #
9817         #  @ref tui_multi_rotation "Example"
9818         @ManageTransactions("TrsfOp")
9819         def MultiRotate2DByStep (self, theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
9820             """
9821             Rotate the given object around the
9822             given axis on the given angle a given number
9823             times and multi-translate each rotation result.
9824             Translation direction passes through center of gravity
9825             of rotated shape and its projection on the rotation axis.
9826
9827             Parameters:
9828                 theObject The object to be rotated.
9829                 theAxis Rotation axis. DZ if None.
9830                 theAngleStep Rotation angle in radians.
9831                 theNbTimes1 Quantity of rotations to be done.
9832                 theRadialStep Translation distance.
9833                 theNbTimes2 Quantity of translations to be done.
9834                 theName Object name; when specified, this parameter is used
9835                         for result publication in the study. Otherwise, if automatic
9836                         publication is switched on, default value is used for result name.
9837
9838             Returns:
9839                 New GEOM.GEOM_Object, containing compound of all the
9840                 shapes, obtained after each transformation.
9841
9842             Example of usage:
9843                 rot2d = geompy.MultiRotate2D(prism, vect, math.pi/3, 4, 50, 5)
9844             """
9845             # Example: see GEOM_TestAll.py
9846             theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
9847             anObj = self.TrsfOp.MultiRotate2DByStep(theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
9848             RaiseIfFailed("MultiRotate2DByStep", self.TrsfOp)
9849             anObj.SetParameters(Parameters)
9850             self._autoPublish(anObj, theName, "multirotation")
9851             return anObj
9852
9853         ## The same, as MultiRotate1DNbTimes(), but axis is given by direction and point
9854         #
9855         #  @ref swig_MakeMultiRotation "Example"
9856         def MakeMultiRotation1DNbTimes(self, aShape, aDir, aPoint, aNbTimes, theName=None):
9857             """
9858             The same, as geompy.MultiRotate1DNbTimes, but axis is given by direction and point
9859
9860             Example of usage:
9861                 pz = geompy.MakeVertex(0, 0, 100)
9862                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9863                 MultiRot1D = geompy.MakeMultiRotation1DNbTimes(prism, vy, pz, 6)
9864             """
9865             # Example: see GEOM_TestOthers.py
9866             aVec = self.MakeLine(aPoint,aDir)
9867             # note: auto-publishing is done in self.MultiRotate1D()
9868             anObj = self.MultiRotate1DNbTimes(aShape, aVec, aNbTimes, theName)
9869             return anObj
9870
9871         ## The same, as MultiRotate1DByStep(), but axis is given by direction and point
9872         #
9873         #  @ref swig_MakeMultiRotation "Example"
9874         def MakeMultiRotation1DByStep(self, aShape, aDir, aPoint, anAngle, aNbTimes, theName=None):
9875             """
9876             The same, as geompy.MultiRotate1D, but axis is given by direction and point
9877
9878             Example of usage:
9879                 pz = geompy.MakeVertex(0, 0, 100)
9880                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9881                 MultiRot1D = geompy.MakeMultiRotation1DByStep(prism, vy, pz, math.pi/3, 6)
9882             """
9883             # Example: see GEOM_TestOthers.py
9884             aVec = self.MakeLine(aPoint,aDir)
9885             # note: auto-publishing is done in self.MultiRotate1D()
9886             anObj = self.MultiRotate1DByStep(aShape, aVec, anAngle, aNbTimes, theName)
9887             return anObj
9888
9889         ## The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
9890         #
9891         #  @ref swig_MakeMultiRotation "Example"
9892         def MakeMultiRotation2DNbTimes(self, aShape, aDir, aPoint, nbtimes1, aStep, nbtimes2, theName=None):
9893             """
9894             The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
9895
9896             Example of usage:
9897                 pz = geompy.MakeVertex(0, 0, 100)
9898                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9899                 MultiRot2D = geompy.MakeMultiRotation2DNbTimes(f12, vy, pz, 6, 30, 3)
9900             """
9901             # Example: see GEOM_TestOthers.py
9902             aVec = self.MakeLine(aPoint,aDir)
9903             # note: auto-publishing is done in self.MultiRotate2DNbTimes()
9904             anObj = self.MultiRotate2DNbTimes(aShape, aVec, nbtimes1, aStep, nbtimes2, theName)
9905             return anObj
9906
9907         ## The same, as MultiRotate2DByStep(), but axis is given by direction and point
9908         #
9909         #  @ref swig_MakeMultiRotation "Example"
9910         def MakeMultiRotation2DByStep(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
9911             """
9912             The same, as MultiRotate2DByStep(), but axis is given by direction and point
9913
9914             Example of usage:
9915                 pz = geompy.MakeVertex(0, 0, 100)
9916                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9917                 MultiRot2D = geompy.MakeMultiRotation2DByStep(f12, vy, pz, math.pi/4, 6, 30, 3)
9918             """
9919             # Example: see GEOM_TestOthers.py
9920             aVec = self.MakeLine(aPoint,aDir)
9921             # note: auto-publishing is done in self.MultiRotate2D()
9922             anObj = self.MultiRotate2DByStep(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
9923             return anObj
9924
9925         ##
9926         #  Compute a wire or a face that represents a projection of the source
9927         #  shape onto cylinder. The cylinder's coordinate system is the same
9928         #  as the global coordinate system.
9929         #
9930         #  @param theObject The object to be projected. It can be either
9931         #         a planar wire or a face.
9932         #  @param theRadius The radius of the cylinder.
9933         #  @param theStartAngle The starting angle in radians from
9934         #         the cylinder's X axis around Z axis. The angle from which
9935         #         the projection is started.
9936         #  @param theAngleLength The projection length angle in radians.
9937         #         The angle in which to project the total length of the wire.
9938         #         If it is negative the projection is not scaled and natural
9939         #         wire length is kept for the projection.
9940         #  @param theAngleRotation The desired angle in radians between
9941         #         the tangent vector to the first curve at the first point of
9942         #         the theObject's projection in 2D space and U-direction of
9943         #         cylinder's 2D space.
9944         #  @param theName Object name; when specified, this parameter is used
9945         #         for result publication in the study. Otherwise, if automatic
9946         #         publication is switched on, default value is used for result name.
9947         #
9948         #  @return New GEOM.GEOM_Object, containing the result shape. The result
9949         #         represents a wire or a face that represents a projection of
9950         #         the source shape onto a cylinder.
9951         #
9952         #  @ref tui_projection "Example"
9953         def MakeProjectionOnCylinder (self, theObject, theRadius,
9954                                       theStartAngle=0.0, theAngleLength=-1.0,
9955                                       theAngleRotation=0.0,
9956                                       theName=None):
9957             """
9958             Compute a wire or a face that represents a projection of the source
9959             shape onto cylinder. The cylinder's coordinate system is the same
9960             as the global coordinate system.
9961
9962             Parameters:
9963                 theObject The object to be projected. It can be either
9964                         a planar wire or a face.
9965                 theRadius The radius of the cylinder.
9966                 theStartAngle The starting angle in radians from the cylinder's X axis
9967                         around Z axis. The angle from which the projection is started.
9968                 theAngleLength The projection length angle in radians. The angle in which
9969                         to project the total length of the wire. If it is negative the
9970                         projection is not scaled and natural wire length is kept for
9971                         the projection.
9972                 theAngleRotation The desired angle in radians between
9973                         the tangent vector to the first curve at the first
9974                         point of the theObject's projection in 2D space and
9975                         U-direction of cylinder's 2D space.
9976                 theName Object name; when specified, this parameter is used
9977                         for result publication in the study. Otherwise, if automatic
9978                         publication is switched on, default value is used for result name.
9979
9980             Returns:
9981                 New GEOM.GEOM_Object, containing the result shape. The result
9982                 represents a wire or a face that represents a projection of
9983                 the source shape onto a cylinder.
9984             """
9985             # Example: see GEOM_TestAll.py
9986             flagStartAngle = False
9987             if isinstance(theStartAngle,str):
9988                 flagStartAngle = True
9989             flagAngleLength = False
9990             if isinstance(theAngleLength,str):
9991                 flagAngleLength = True
9992             flagAngleRotation = False
9993             if isinstance(theAngleRotation,str):
9994                 flagAngleRotation = True
9995             theRadius, theStartAngle, theAngleLength, theAngleRotation, Parameters = ParseParameters(
9996               theRadius, theStartAngle, theAngleLength, theAngleRotation)
9997             if flagStartAngle:
9998                 theStartAngle = theStartAngle*math.pi/180.
9999             if flagAngleLength:
10000                 theAngleLength = theAngleLength*math.pi/180.
10001             if flagAngleRotation:
10002                 theAngleRotation = theAngleRotation*math.pi/180.
10003             anObj = self.TrsfOp.MakeProjectionOnCylinder(theObject, theRadius,
10004                 theStartAngle, theAngleLength, theAngleRotation)
10005             RaiseIfFailed("MakeProjectionOnCylinder", self.TrsfOp)
10006             anObj.SetParameters(Parameters)
10007             self._autoPublish(anObj, theName, "projection")
10008             return anObj
10009
10010         # end of l3_transform
10011         ## @}
10012
10013         ## @addtogroup l3_transform_d
10014         ## @{
10015
10016         ## Deprecated method. Use MultiRotate1DNbTimes instead.
10017         def MultiRotate1D(self, theObject, theAxis, theNbTimes, theName=None):
10018             """
10019             Deprecated method. Use MultiRotate1DNbTimes instead.
10020             """
10021             print("The method MultiRotate1D is DEPRECATED. Use MultiRotate1DNbTimes instead.")
10022             return self.MultiRotate1DNbTimes(theObject, theAxis, theNbTimes, theName)
10023
10024         ## The same, as MultiRotate2DByStep(), but theAngle is in degrees.
10025         #  This method is DEPRECATED. Use MultiRotate2DByStep() instead.
10026         @ManageTransactions("TrsfOp")
10027         def MultiRotate2D(self, theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2, theName=None):
10028             """
10029             The same, as MultiRotate2DByStep(), but theAngle is in degrees.
10030             This method is DEPRECATED. Use MultiRotate2DByStep() instead.
10031
10032             Example of usage:
10033                 rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
10034             """
10035             print("The method MultiRotate2D is DEPRECATED. Use MultiRotate2DByStep instead.")
10036             theAngle, theNbTimes1, theStep, theNbTimes2, Parameters = ParseParameters(theAngle, theNbTimes1, theStep, theNbTimes2)
10037             anObj = self.TrsfOp.MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2)
10038             RaiseIfFailed("MultiRotate2D", self.TrsfOp)
10039             anObj.SetParameters(Parameters)
10040             self._autoPublish(anObj, theName, "multirotation")
10041             return anObj
10042
10043         ## The same, as MultiRotate1D(), but axis is given by direction and point
10044         #  This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
10045         def MakeMultiRotation1D(self, aShape, aDir, aPoint, aNbTimes, theName=None):
10046             """
10047             The same, as geompy.MultiRotate1D, but axis is given by direction and point.
10048             This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
10049
10050             Example of usage:
10051                 pz = geompy.MakeVertex(0, 0, 100)
10052                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
10053                 MultiRot1D = geompy.MakeMultiRotation1D(prism, vy, pz, 6)
10054             """
10055             print("The method MakeMultiRotation1D is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.")
10056             aVec = self.MakeLine(aPoint,aDir)
10057             # note: auto-publishing is done in self.MultiRotate1D()
10058             anObj = self.MultiRotate1D(aShape, aVec, aNbTimes, theName)
10059             return anObj
10060
10061         ## The same, as MultiRotate2D(), but axis is given by direction and point
10062         #  This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
10063         def MakeMultiRotation2D(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
10064             """
10065             The same, as MultiRotate2D(), but axis is given by direction and point
10066             This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
10067
10068             Example of usage:
10069                 pz = geompy.MakeVertex(0, 0, 100)
10070                 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
10071                 MultiRot2D = geompy.MakeMultiRotation2D(f12, vy, pz, 45, 6, 30, 3)
10072             """
10073             print("The method MakeMultiRotation2D is DEPRECATED. Use MakeMultiRotation2DByStep instead.")
10074             aVec = self.MakeLine(aPoint,aDir)
10075             # note: auto-publishing is done in self.MultiRotate2D()
10076             anObj = self.MultiRotate2D(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
10077             return anObj
10078
10079         # end of l3_transform_d
10080         ## @}
10081
10082         ## @addtogroup l3_local
10083         ## @{
10084
10085         ## Perform a fillet on all edges of the given shape.
10086         #  @param theShape Shape, to perform fillet on.
10087         #  @param theR Fillet radius.
10088         #  @param theName Object name; when specified, this parameter is used
10089         #         for result publication in the study. Otherwise, if automatic
10090         #         publication is switched on, default value is used for result name.
10091         #
10092         #  @return New GEOM.GEOM_Object, containing the result shape.
10093         #
10094         #  @ref tui_fillet "Example 1"
10095         #  \n @ref swig_MakeFilletAll "Example 2"
10096         @ManageTransactions("LocalOp")
10097         def MakeFilletAll(self, theShape, theR, theName=None):
10098             """
10099             Perform a fillet on all edges of the given shape.
10100
10101             Parameters:
10102                 theShape Shape, to perform fillet on.
10103                 theR Fillet radius.
10104                 theName Object name; when specified, this parameter is used
10105                         for result publication in the study. Otherwise, if automatic
10106                         publication is switched on, default value is used for result name.
10107
10108             Returns:
10109                 New GEOM.GEOM_Object, containing the result shape.
10110
10111             Example of usage:
10112                filletall = geompy.MakeFilletAll(prism, 10.)
10113             """
10114             # Example: see GEOM_TestOthers.py
10115             theR,Parameters = ParseParameters(theR)
10116             anObj = self.LocalOp.MakeFilletAll(theShape, theR)
10117             RaiseIfFailed("MakeFilletAll", self.LocalOp)
10118             anObj.SetParameters(Parameters)
10119             self._autoPublish(anObj, theName, "fillet")
10120             return anObj
10121
10122         ## Perform a fillet on the specified edges/faces of the given shape
10123         #  @param theShape Shape, to perform fillet on.
10124         #  @param theR Fillet radius.
10125         #  @param theShapeType Type of shapes in <VAR>theListShapes</VAR> (see ShapeType())
10126         #  @param theListShapes Global indices of edges/faces to perform fillet on.
10127         #  @param theName Object name; when specified, this parameter is used
10128         #         for result publication in the study. Otherwise, if automatic
10129         #         publication is switched on, default value is used for result name.
10130         #
10131         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10132         #
10133         #  @return New GEOM.GEOM_Object, containing the result shape.
10134         #
10135         #  @ref tui_fillet "Example"
10136         @ManageTransactions("LocalOp")
10137         def MakeFillet(self, theShape, theR, theShapeType, theListShapes, theName=None):
10138             """
10139             Perform a fillet on the specified edges/faces of the given shape
10140
10141             Parameters:
10142                 theShape Shape, to perform fillet on.
10143                 theR Fillet radius.
10144                 theShapeType Type of shapes in theListShapes (see geompy.ShapeTypes)
10145                 theListShapes Global indices of edges/faces to perform fillet on.
10146                 theName Object name; when specified, this parameter is used
10147                         for result publication in the study. Otherwise, if automatic
10148                         publication is switched on, default value is used for result name.
10149
10150             Note:
10151                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10152
10153             Returns:
10154                 New GEOM.GEOM_Object, containing the result shape.
10155
10156             Example of usage:
10157                 # get the list of IDs (IDList) for the fillet
10158                 prism_edges = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["EDGE"])
10159                 IDlist_e = []
10160                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[0]))
10161                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[1]))
10162                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[2]))
10163                 # make a fillet on the specified edges of the given shape
10164                 fillet = geompy.MakeFillet(prism, 10., geompy.ShapeType["EDGE"], IDlist_e)
10165             """
10166             # Example: see GEOM_TestAll.py
10167             theR,Parameters = ParseParameters(theR)
10168             anObj = None
10169             if theShapeType == self.ShapeType["EDGE"]:
10170                 anObj = self.LocalOp.MakeFilletEdges(theShape, theR, theListShapes)
10171                 RaiseIfFailed("MakeFilletEdges", self.LocalOp)
10172             else:
10173                 anObj = self.LocalOp.MakeFilletFaces(theShape, theR, theListShapes)
10174                 RaiseIfFailed("MakeFilletFaces", self.LocalOp)
10175             anObj.SetParameters(Parameters)
10176             self._autoPublish(anObj, theName, "fillet")
10177             return anObj
10178
10179         ## The same that MakeFillet() but with two Fillet Radius R1 and R2
10180         @ManageTransactions("LocalOp")
10181         def MakeFilletR1R2(self, theShape, theR1, theR2, theShapeType, theListShapes, theName=None):
10182             """
10183             The same that geompy.MakeFillet but with two Fillet Radius R1 and R2
10184
10185             Example of usage:
10186                 # get the list of IDs (IDList) for the fillet
10187                 prism_edges = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["EDGE"])
10188                 IDlist_e = []
10189                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[0]))
10190                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[1]))
10191                 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[2]))
10192                 # make a fillet on the specified edges of the given shape
10193                 fillet = geompy.MakeFillet(prism, 10., 15., geompy.ShapeType["EDGE"], IDlist_e)
10194             """
10195             theR1,theR2,Parameters = ParseParameters(theR1,theR2)
10196             anObj = None
10197             if theShapeType == self.ShapeType["EDGE"]:
10198                 anObj = self.LocalOp.MakeFilletEdgesR1R2(theShape, theR1, theR2, theListShapes)
10199                 RaiseIfFailed("MakeFilletEdgesR1R2", self.LocalOp)
10200             else:
10201                 anObj = self.LocalOp.MakeFilletFacesR1R2(theShape, theR1, theR2, theListShapes)
10202                 RaiseIfFailed("MakeFilletFacesR1R2", self.LocalOp)
10203             anObj.SetParameters(Parameters)
10204             self._autoPublish(anObj, theName, "fillet")
10205             return anObj
10206
10207         ## Perform a fillet on the specified edges of the given shape
10208         #  @param theShape  Wire Shape to perform fillet on.
10209         #  @param theR  Fillet radius.
10210         #  @param theListOfVertexes Global indices of vertexes to perform fillet on.
10211         #    \note Global index of sub-shape can be obtained, using method GetSubShapeID()
10212         #    \note The list of vertices could be empty,
10213         #          in this case fillet will done done at all vertices in wire
10214         #  @param doIgnoreSecantVertices If FALSE, fillet radius is always limited
10215         #         by the length of the edges, nearest to the fillet vertex.
10216         #         But sometimes the next edge is C1 continuous with the one, nearest to
10217         #         the fillet point, and such two (or more) edges can be united to allow
10218         #         bigger radius. Set this flag to TRUE to allow collinear edges union,
10219         #         thus ignoring the secant vertex (vertices).
10220         #  @param theName Object name; when specified, this parameter is used
10221         #         for result publication in the study. Otherwise, if automatic
10222         #         publication is switched on, default value is used for result name.
10223         #
10224         #  @return New GEOM.GEOM_Object, containing the result shape.
10225         #
10226         #  @ref tui_fillet2d "Example"
10227         @ManageTransactions("LocalOp")
10228         def MakeFillet1D(self, theShape, theR, theListOfVertexes, doIgnoreSecantVertices = True, theName=None):
10229             """
10230             Perform a fillet on the specified edges of the given shape
10231
10232             Parameters:
10233                 theShape  Wire Shape to perform fillet on.
10234                 theR  Fillet radius.
10235                 theListOfVertexes Global indices of vertexes to perform fillet on.
10236                 doIgnoreSecantVertices If FALSE, fillet radius is always limited
10237                     by the length of the edges, nearest to the fillet vertex.
10238                     But sometimes the next edge is C1 continuous with the one, nearest to
10239                     the fillet point, and such two (or more) edges can be united to allow
10240                     bigger radius. Set this flag to TRUE to allow collinear edges union,
10241                     thus ignoring the secant vertex (vertices).
10242                 theName Object name; when specified, this parameter is used
10243                         for result publication in the study. Otherwise, if automatic
10244                         publication is switched on, default value is used for result name.
10245             Note:
10246                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10247
10248                 The list of vertices could be empty,in this case fillet will done done at all vertices in wire
10249
10250             Returns:
10251                 New GEOM.GEOM_Object, containing the result shape.
10252
10253             Example of usage:
10254                 # create wire
10255                 Wire_1 = geompy.MakeWire([Edge_12, Edge_7, Edge_11, Edge_6, Edge_1,Edge_4])
10256                 # make fillet at given wire vertices with giver radius
10257                 Fillet_1D_1 = geompy.MakeFillet1D(Wire_1, 55, [3, 4, 6, 8, 10])
10258             """
10259             # Example: see GEOM_TestAll.py
10260             theR,doIgnoreSecantVertices,Parameters = ParseParameters(theR,doIgnoreSecantVertices)
10261             anObj = self.LocalOp.MakeFillet1D(theShape, theR, theListOfVertexes, doIgnoreSecantVertices)
10262             RaiseIfFailed("MakeFillet1D", self.LocalOp)
10263             anObj.SetParameters(Parameters)
10264             self._autoPublish(anObj, theName, "fillet")
10265             return anObj
10266
10267         ## Perform a fillet at the specified vertices of the given face/shell.
10268         #  @param theShape Face or Shell shape to perform fillet on.
10269         #  @param theR Fillet radius.
10270         #  @param theListOfVertexes Global indices of vertexes to perform fillet on.
10271         #  @param theName Object name; when specified, this parameter is used
10272         #         for result publication in the study. Otherwise, if automatic
10273         #         publication is switched on, default value is used for result name.
10274         #
10275         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10276         #
10277         #  @return New GEOM.GEOM_Object, containing the result shape.
10278         #
10279         #  @ref tui_fillet2d "Example"
10280         @ManageTransactions("LocalOp")
10281         def MakeFillet2D(self, theShape, theR, theListOfVertexes, theName=None):
10282             """
10283             Perform a fillet at the specified vertices of the given face/shell.
10284
10285             Parameters:
10286                 theShape  Face or Shell shape to perform fillet on.
10287                 theR  Fillet radius.
10288                 theListOfVertexes Global indices of vertexes to perform fillet on.
10289                 theName Object name; when specified, this parameter is used
10290                         for result publication in the study. Otherwise, if automatic
10291                         publication is switched on, default value is used for result name.
10292             Note:
10293                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10294
10295             Returns:
10296                 New GEOM.GEOM_Object, containing the result shape.
10297
10298             Example of usage:
10299                 face = geompy.MakeFaceHW(100, 100, 1)
10300                 fillet2d = geompy.MakeFillet2D(face, 30, [7, 9])
10301             """
10302             # Example: see GEOM_TestAll.py
10303             theR,Parameters = ParseParameters(theR)
10304             anObj = self.LocalOp.MakeFillet2D(theShape, theR, theListOfVertexes)
10305             RaiseIfFailed("MakeFillet2D", self.LocalOp)
10306             anObj.SetParameters(Parameters)
10307             self._autoPublish(anObj, theName, "fillet")
10308             return anObj
10309
10310         ## Perform a symmetric chamfer on all edges of the given shape.
10311         #  @param theShape Shape, to perform chamfer on.
10312         #  @param theD Chamfer size along each face.
10313         #  @param theName Object name; when specified, this parameter is used
10314         #         for result publication in the study. Otherwise, if automatic
10315         #         publication is switched on, default value is used for result name.
10316         #
10317         #  @return New GEOM.GEOM_Object, containing the result shape.
10318         #
10319         #  @ref tui_chamfer "Example 1"
10320         #  \n @ref swig_MakeChamferAll "Example 2"
10321         @ManageTransactions("LocalOp")
10322         def MakeChamferAll(self, theShape, theD, theName=None):
10323             """
10324             Perform a symmetric chamfer on all edges of the given shape.
10325
10326             Parameters:
10327                 theShape Shape, to perform chamfer on.
10328                 theD Chamfer size along each face.
10329                 theName Object name; when specified, this parameter is used
10330                         for result publication in the study. Otherwise, if automatic
10331                         publication is switched on, default value is used for result name.
10332
10333             Returns:
10334                 New GEOM.GEOM_Object, containing the result shape.
10335
10336             Example of usage:
10337                 chamfer_all = geompy.MakeChamferAll(prism, 10.)
10338             """
10339             # Example: see GEOM_TestOthers.py
10340             theD,Parameters = ParseParameters(theD)
10341             anObj = self.LocalOp.MakeChamferAll(theShape, theD)
10342             RaiseIfFailed("MakeChamferAll", self.LocalOp)
10343             anObj.SetParameters(Parameters)
10344             self._autoPublish(anObj, theName, "chamfer")
10345             return anObj
10346
10347         ## Perform a chamfer on edges, common to the specified faces,
10348         #  with distance D1 on the Face1
10349         #  @param theShape Shape, to perform chamfer on.
10350         #  @param theD1 Chamfer size along \a theFace1.
10351         #  @param theD2 Chamfer size along \a theFace2.
10352         #  @param theFace1,theFace2 Global indices of two faces of \a theShape.
10353         #  @param theName Object name; when specified, this parameter is used
10354         #         for result publication in the study. Otherwise, if automatic
10355         #         publication is switched on, default value is used for result name.
10356         #
10357         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10358         #
10359         #  @return New GEOM.GEOM_Object, containing the result shape.
10360         #
10361         #  @ref tui_chamfer "Example"
10362         @ManageTransactions("LocalOp")
10363         def MakeChamferEdge(self, theShape, theD1, theD2, theFace1, theFace2, theName=None):
10364             """
10365             Perform a chamfer on edges, common to the specified faces,
10366             with distance D1 on the Face1
10367
10368             Parameters:
10369                 theShape Shape, to perform chamfer on.
10370                 theD1 Chamfer size along theFace1.
10371                 theD2 Chamfer size along theFace2.
10372                 theFace1,theFace2 Global indices of two faces of theShape.
10373                 theName Object name; when specified, this parameter is used
10374                         for result publication in the study. Otherwise, if automatic
10375                         publication is switched on, default value is used for result name.
10376
10377             Note:
10378                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10379
10380             Returns:
10381                 New GEOM.GEOM_Object, containing the result shape.
10382
10383             Example of usage:
10384                 prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"])
10385                 f_ind_1 = geompy.GetSubShapeID(prism, prism_faces[0])
10386                 f_ind_2 = geompy.GetSubShapeID(prism, prism_faces[1])
10387                 chamfer_e = geompy.MakeChamferEdge(prism, 10., 10., f_ind_1, f_ind_2)
10388             """
10389             # Example: see GEOM_TestAll.py
10390             theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10391             anObj = self.LocalOp.MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2)
10392             RaiseIfFailed("MakeChamferEdge", self.LocalOp)
10393             anObj.SetParameters(Parameters)
10394             self._autoPublish(anObj, theName, "chamfer")
10395             return anObj
10396
10397         ## Perform a chamfer on edges
10398         #  @param theShape Shape, to perform chamfer on.
10399         #  @param theD Chamfer length
10400         #  @param theAngle Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10401         #  @param theFace1,theFace2 Global indices of two faces of \a theShape.
10402         #  @param theName Object name; when specified, this parameter is used
10403         #         for result publication in the study. Otherwise, if automatic
10404         #         publication is switched on, default value is used for result name.
10405         #
10406         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10407         #
10408         #  @return New GEOM.GEOM_Object, containing the result shape.
10409         @ManageTransactions("LocalOp")
10410         def MakeChamferEdgeAD(self, theShape, theD, theAngle, theFace1, theFace2, theName=None):
10411             """
10412             Perform a chamfer on edges
10413
10414             Parameters:
10415                 theShape Shape, to perform chamfer on.
10416                 theD1 Chamfer size along theFace1.
10417                 theAngle Angle of chamfer (angle in radians or a name of variable which defines angle in degrees).
10418                 theFace1,theFace2 Global indices of two faces of theShape.
10419                 theName Object name; when specified, this parameter is used
10420                         for result publication in the study. Otherwise, if automatic
10421                         publication is switched on, default value is used for result name.
10422
10423             Note:
10424                 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10425
10426             Returns:
10427                 New GEOM.GEOM_Object, containing the result shape.
10428
10429             Example of usage:
10430                 prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"])
10431                 f_ind_1 = geompy.GetSubShapeID(prism, prism_faces[0])
10432                 f_ind_2 = geompy.GetSubShapeID(prism, prism_faces[1])
10433                 ang = 30
10434                 chamfer_e = geompy.MakeChamferEdge(prism, 10., ang, f_ind_1, f_ind_2)
10435             """
10436             flag = False
10437             if isinstance(theAngle,str):
10438                 flag = True
10439             theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10440             if flag:
10441                 theAngle = theAngle*math.pi/180.0
10442             anObj = self.LocalOp.MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2)
10443             RaiseIfFailed("MakeChamferEdgeAD", self.LocalOp)
10444             anObj.SetParameters(Parameters)
10445             self._autoPublish(anObj, theName, "chamfer")
10446             return anObj
10447
10448         ## Perform a chamfer on all edges of the specified faces,
10449         #  with distance D1 on the first specified face (if several for one edge)
10450         #  @param theShape Shape, to perform chamfer on.
10451         #  @param theD1 Chamfer size along face from \a theFaces. If both faces,
10452         #               connected to the edge, are in \a theFaces, \a theD1
10453         #               will be get along face, which is nearer to \a theFaces beginning.
10454         #  @param theD2 Chamfer size along another of two faces, connected to the edge.
10455         #  @param theFaces Sequence of global indices of faces of \a theShape.
10456         #  @param theName Object name; when specified, this parameter is used
10457         #         for result publication in the study. Otherwise, if automatic
10458         #         publication is switched on, default value is used for result name.
10459         #
10460         #  @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10461         #
10462         #  @return New GEOM.GEOM_Object, containing the result shape.
10463         #
10464         #  @ref tui_chamfer "Example"
10465         @ManageTransactions("LocalOp")
10466         def MakeChamferFaces(self, theShape, theD1, theD2, theFaces, theName=None):
10467             """
10468             Perform a chamfer on all edges of the specified faces,
10469             with distance D1 on the first specified face (if several for one edge)
10470
10471             Parameters:
10472                 theShape Shape, to perform chamfer on.
10473                 theD1 Chamfer size along face from  theFaces. If both faces,
10474                       connected to the edge, are in theFaces, theD1
10475                       will be get along face, which is nearer to theFaces beginning.
10476                 theD2 Chamfer size along another of two faces, connected to the edge.
10477                 theFaces Sequence of global indices of faces of theShape.
10478                 theName Object name; when specified, this parameter is used
10479                         for result publication in the study. Otherwise, if automatic
10480                         publication is switched on, default value is used for result name.
10481
10482             Note: Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
10483
10484             Returns:
10485                 New GEOM.GEOM_Object, containing the result shape.
10486             """
10487             # Example: see GEOM_TestAll.py
10488             theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10489             anObj = self.LocalOp.MakeChamferFaces(theShape, theD1, theD2, theFaces)
10490             RaiseIfFailed("MakeChamferFaces", self.LocalOp)
10491             anObj.SetParameters(Parameters)
10492             self._autoPublish(anObj, theName, "chamfer")
10493             return anObj
10494
10495         ## The Same that MakeChamferFaces() but with params theD is chamfer length and
10496         #  theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10497         #
10498         #  @ref swig_FilletChamfer "Example"
10499         @ManageTransactions("LocalOp")
10500         def MakeChamferFacesAD(self, theShape, theD, theAngle, theFaces, theName=None):
10501             """
10502             The Same that geompy.MakeChamferFaces but with params theD is chamfer length and
10503             theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10504             """
10505             flag = False
10506             if isinstance(theAngle,str):
10507                 flag = True
10508             theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10509             if flag:
10510                 theAngle = theAngle*math.pi/180.0
10511             anObj = self.LocalOp.MakeChamferFacesAD(theShape, theD, theAngle, theFaces)
10512             RaiseIfFailed("MakeChamferFacesAD", self.LocalOp)
10513             anObj.SetParameters(Parameters)
10514             self._autoPublish(anObj, theName, "chamfer")
10515             return anObj
10516
10517         ## Perform a chamfer on edges,
10518         #  with distance D1 on the first specified face (if several for one edge)
10519         #  @param theShape Shape, to perform chamfer on.
10520         #  @param theD1,theD2 Chamfer size
10521         #  @param theEdges Sequence of edges of \a theShape.
10522         #  @param theName Object name; when specified, this parameter is used
10523         #         for result publication in the study. Otherwise, if automatic
10524         #         publication is switched on, default value is used for result name.
10525         #
10526         #  @return New GEOM.GEOM_Object, containing the result shape.
10527         #
10528         #  @ref swig_FilletChamfer "Example"
10529         @ManageTransactions("LocalOp")
10530         def MakeChamferEdges(self, theShape, theD1, theD2, theEdges, theName=None):
10531             """
10532             Perform a chamfer on edges,
10533             with distance D1 on the first specified face (if several for one edge)
10534
10535             Parameters:
10536                 theShape Shape, to perform chamfer on.
10537                 theD1,theD2 Chamfer size
10538                 theEdges Sequence of edges of theShape.
10539                 theName Object name; when specified, this parameter is used
10540                         for result publication in the study. Otherwise, if automatic
10541                         publication is switched on, default value is used for result name.
10542
10543             Returns:
10544                 New GEOM.GEOM_Object, containing the result shape.
10545             """
10546             theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10547             anObj = self.LocalOp.MakeChamferEdges(theShape, theD1, theD2, theEdges)
10548             RaiseIfFailed("MakeChamferEdges", self.LocalOp)
10549             anObj.SetParameters(Parameters)
10550             self._autoPublish(anObj, theName, "chamfer")
10551             return anObj
10552
10553         ## The Same that MakeChamferEdges() but with params theD is chamfer length and
10554         #  theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10555         @ManageTransactions("LocalOp")
10556         def MakeChamferEdgesAD(self, theShape, theD, theAngle, theEdges, theName=None):
10557             """
10558             The Same that geompy.MakeChamferEdges but with params theD is chamfer length and
10559             theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10560             """
10561             flag = False
10562             if isinstance(theAngle,str):
10563                 flag = True
10564             theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10565             if flag:
10566                 theAngle = theAngle*math.pi/180.0
10567             anObj = self.LocalOp.MakeChamferEdgesAD(theShape, theD, theAngle, theEdges)
10568             RaiseIfFailed("MakeChamferEdgesAD", self.LocalOp)
10569             anObj.SetParameters(Parameters)
10570             self._autoPublish(anObj, theName, "chamfer")
10571             return anObj
10572
10573         ## @sa MakeChamferEdge(), MakeChamferFaces()
10574         #
10575         #  @ref swig_MakeChamfer "Example"
10576         def MakeChamfer(self, aShape, d1, d2, aShapeType, ListShape, theName=None):
10577             """
10578             See geompy.MakeChamferEdge() and geompy.MakeChamferFaces() functions for more information.
10579             """
10580             # Example: see GEOM_TestOthers.py
10581             anObj = None
10582             # note: auto-publishing is done in self.MakeChamferEdge() or self.MakeChamferFaces()
10583             if aShapeType == self.ShapeType["EDGE"]:
10584                 anObj = self.MakeChamferEdge(aShape,d1,d2,ListShape[0],ListShape[1],theName)
10585             else:
10586                 anObj = self.MakeChamferFaces(aShape,d1,d2,ListShape,theName)
10587             return anObj
10588
10589         ## Remove material from a solid by extrusion of the base shape on the given distance.
10590         #  @param theInit Shape to remove material from. It must be a solid or
10591         #  a compound made of a single solid.
10592         #  @param theBase Closed edge or wire defining the base shape to be extruded.
10593         #  @param theH Prism dimension along the normal to theBase
10594         #  @param theAngle Draft angle in degrees.
10595         #  @param theInvert If true material changes the direction
10596         #  @param theName Object name; when specified, this parameter is used
10597         #         for result publication in the study. Otherwise, if automatic
10598         #         publication is switched on, default value is used for result name.
10599         #
10600         #  @return New GEOM.GEOM_Object, containing the initial shape with removed material
10601         #
10602         #  @ref tui_creation_prism "Example"
10603         @ManageTransactions("PrimOp")
10604         def MakeExtrudedCut(self, theInit, theBase, theH, theAngle, theInvert=False, theName=None):
10605             """
10606             Add material to a solid by extrusion of the base shape on the given distance.
10607
10608             Parameters:
10609                 theInit Shape to remove material from. It must be a solid or a compound made of a single solid.
10610                 theBase Closed edge or wire defining the base shape to be extruded.
10611                 theH Prism dimension along the normal to theBase
10612                 theAngle Draft angle in degrees.
10613                 theInvert If true material changes the direction.
10614                 theName Object name; when specified, this parameter is used
10615                         for result publication in the study. Otherwise, if automatic
10616                         publication is switched on, default value is used for result name.
10617
10618             Returns:
10619                 New GEOM.GEOM_Object,  containing the initial shape with removed material.
10620             """
10621             # Example: see GEOM_TestAll.py
10622             theH,theAngle,Parameters = ParseParameters(theH,theAngle)
10623             anObj = self.PrimOp.MakeDraftPrism(theInit, theBase, theH, theAngle, False, theInvert)
10624             RaiseIfFailed("MakeExtrudedBoss", self.PrimOp)
10625             anObj.SetParameters(Parameters)
10626             self._autoPublish(anObj, theName, "extrudedCut")
10627             return anObj
10628
10629         ## Add material to a solid by extrusion of the base shape on the given distance.
10630         #  @param theInit Shape to add material to. It must be a solid or
10631         #  a compound made of a single solid.
10632         #  @param theBase Closed edge or wire defining the base shape to be extruded.
10633         #  @param theH Prism dimension along the normal to theBase
10634         #  @param theAngle Draft angle in degrees.
10635         #  @param theInvert If true material changes the direction
10636         #  @param theName Object name; when specified, this parameter is used
10637         #         for result publication in the study. Otherwise, if automatic
10638         #         publication is switched on, default value is used for result name.
10639         #
10640         #  @return New GEOM.GEOM_Object, containing the initial shape with added material
10641         #
10642         #  @ref tui_creation_prism "Example"
10643         @ManageTransactions("PrimOp")
10644         def MakeExtrudedBoss(self, theInit, theBase, theH, theAngle, theInvert=False, theName=None):
10645             """
10646             Add material to a solid by extrusion of the base shape on the given distance.
10647
10648             Parameters:
10649                 theInit Shape to add material to. It must be a solid or a compound made of a single solid.
10650                 theBase Closed edge or wire defining the base shape to be extruded.
10651                 theH Prism dimension along the normal to theBase
10652                 theAngle Draft angle in degrees.
10653                 theInvert If true material changes the direction.
10654                 theName Object name; when specified, this parameter is used
10655                         for result publication in the study. Otherwise, if automatic
10656                         publication is switched on, default value is used for result name.
10657
10658             Returns:
10659                 New GEOM.GEOM_Object,  containing the initial shape with added material.
10660             """
10661             # Example: see GEOM_TestAll.py
10662             theH,theAngle,Parameters = ParseParameters(theH,theAngle)
10663             anObj = self.PrimOp.MakeDraftPrism(theInit, theBase, theH, theAngle, True, theInvert)
10664             RaiseIfFailed("MakeExtrudedBoss", self.PrimOp)
10665             anObj.SetParameters(Parameters)
10666             self._autoPublish(anObj, theName, "extrudedBoss")
10667             return anObj
10668
10669         # end of l3_local
10670         ## @}
10671
10672         ## @addtogroup l3_basic_op
10673         ## @{
10674
10675         ## Perform an Archimde operation on the given shape with given parameters.
10676         #  The object presenting the resulting face is returned.
10677         #  @param theShape Shape to be put in water.
10678         #  @param theWeight Weight of the shape.
10679         #  @param theWaterDensity Density of the water.
10680         #  @param theMeshDeflection Deflection of the mesh, using to compute the section.
10681         #  @param theName Object name; when specified, this parameter is used
10682         #         for result publication in the study. Otherwise, if automatic
10683         #         publication is switched on, default value is used for result name.
10684         #
10685         #  @return New GEOM.GEOM_Object, containing a section of \a theShape
10686         #          by a plane, corresponding to water level.
10687         #
10688         #  @ref tui_archimede "Example"
10689         @ManageTransactions("LocalOp")
10690         def Archimede(self, theShape, theWeight, theWaterDensity, theMeshDeflection, theName=None):
10691             """
10692             Perform an Archimde operation on the given shape with given parameters.
10693             The object presenting the resulting face is returned.
10694
10695             Parameters:
10696                 theShape Shape to be put in water.
10697                 theWeight Weight of the shape.
10698                 theWaterDensity Density of the water.
10699                 theMeshDeflection Deflection of the mesh, using to compute the section.
10700                 theName Object name; when specified, this parameter is used
10701                         for result publication in the study. Otherwise, if automatic
10702                         publication is switched on, default value is used for result name.
10703
10704             Returns:
10705                 New GEOM.GEOM_Object, containing a section of theShape
10706                 by a plane, corresponding to water level.
10707             """
10708             # Example: see GEOM_TestAll.py
10709             theWeight,theWaterDensity,theMeshDeflection,Parameters = ParseParameters(
10710               theWeight,theWaterDensity,theMeshDeflection)
10711             anObj = self.LocalOp.MakeArchimede(theShape, theWeight, theWaterDensity, theMeshDeflection)
10712             RaiseIfFailed("MakeArchimede", self.LocalOp)
10713             anObj.SetParameters(Parameters)
10714             self._autoPublish(anObj, theName, "archimede")
10715             return anObj
10716
10717         # end of l3_basic_op
10718         ## @}
10719
10720         ## @addtogroup l2_measure
10721         ## @{
10722
10723         ## Get point coordinates
10724         #  @return [x, y, z]
10725         #
10726         #  @ref tui_point_coordinates_page "Example"
10727         @ManageTransactions("MeasuOp")
10728         def PointCoordinates(self,Point):
10729             """
10730             Get point coordinates
10731
10732             Returns:
10733                 [x, y, z]
10734             """
10735             # Example: see GEOM_TestMeasures.py
10736             aTuple = self.MeasuOp.PointCoordinates(Point)
10737             RaiseIfFailed("PointCoordinates", self.MeasuOp)
10738             return aTuple
10739
10740         ## Get vector coordinates
10741         #  @return [x, y, z]
10742         #
10743         #  @ref tui_measurement_tools_page "Example"
10744         def VectorCoordinates(self,Vector):
10745             """
10746             Get vector coordinates
10747
10748             Returns:
10749                 [x, y, z]
10750             """
10751
10752             p1=self.GetFirstVertex(Vector)
10753             p2=self.GetLastVertex(Vector)
10754
10755             X1=self.PointCoordinates(p1)
10756             X2=self.PointCoordinates(p2)
10757
10758             return (X2[0]-X1[0],X2[1]-X1[1],X2[2]-X1[2])
10759
10760
10761         ## Compute cross product
10762         #  @return vector w=u^v
10763         #
10764         #  @ref tui_measurement_tools_page "Example"
10765         def CrossProduct(self, Vector1, Vector2):
10766             """
10767             Compute cross product
10768
10769             Returns: vector w=u^v
10770             """
10771             u=self.VectorCoordinates(Vector1)
10772             v=self.VectorCoordinates(Vector2)
10773             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])
10774
10775             return w
10776
10777         ## Compute cross product
10778         #  @return dot product  p=u.v
10779         #
10780         #  @ref tui_measurement_tools_page "Example"
10781         def DotProduct(self, Vector1, Vector2):
10782             """
10783             Compute cross product
10784
10785             Returns: dot product  p=u.v
10786             """
10787             u=self.VectorCoordinates(Vector1)
10788             v=self.VectorCoordinates(Vector2)
10789             p=u[0]*v[0]+u[1]*v[1]+u[2]*v[2]
10790
10791             return p
10792
10793
10794         ## Get summarized length of all wires,
10795         #  area of surface and volume of the given shape.
10796         #  @param theShape Shape to define properties of.
10797         #  @param theTolerance maximal relative error of area
10798         #         and volume computation.
10799         #  @return [theLength, theSurfArea, theVolume]\n
10800         #  theLength:   Summarized length of all wires of the given shape.\n
10801         #  theSurfArea: Area of surface of the given shape.\n
10802         #  theVolume:   Volume of the given shape.
10803         #
10804         #  @ref tui_basic_properties_page "Example"
10805         @ManageTransactions("MeasuOp")
10806         def BasicProperties(self,theShape, theTolerance=1.e-6):
10807             """
10808             Get summarized length of all wires,
10809             area of surface and volume of the given shape.
10810
10811             Parameters:
10812                 theShape Shape to define properties of.
10813                 theTolerance maximal relative error of area
10814                              and volume computation.
10815
10816             Returns:
10817                 [theLength, theSurfArea, theVolume]
10818                  theLength:   Summarized length of all wires of the given shape.
10819                  theSurfArea: Area of surface of the given shape.
10820                  theVolume:   Volume of the given shape.
10821             """
10822             # Example: see GEOM_TestMeasures.py
10823             aTuple = self.MeasuOp.GetBasicProperties(theShape, theTolerance)
10824             RaiseIfFailed("GetBasicProperties", self.MeasuOp)
10825             return aTuple
10826
10827         ## Get parameters of bounding box of the given shape
10828         #  @param theShape Shape to obtain bounding box of.
10829         #  @param precise TRUE for precise computation; FALSE for fast one.
10830         #  @return [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
10831         #  Xmin,Xmax: Limits of shape along OX axis.
10832         #  Ymin,Ymax: Limits of shape along OY axis.
10833         #  Zmin,Zmax: Limits of shape along OZ axis.
10834         #
10835         #  @ref tui_bounding_box_page "Example"
10836         @ManageTransactions("MeasuOp")
10837         def BoundingBox (self, theShape, precise=False):
10838             """
10839             Get parameters of bounding box of the given shape
10840
10841             Parameters:
10842                 theShape Shape to obtain bounding box of.
10843                 precise TRUE for precise computation; FALSE for fast one.
10844
10845             Returns:
10846                 [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
10847                  Xmin,Xmax: Limits of shape along OX axis.
10848                  Ymin,Ymax: Limits of shape along OY axis.
10849                  Zmin,Zmax: Limits of shape along OZ axis.
10850             """
10851             # Example: see GEOM_TestMeasures.py
10852             aTuple = self.MeasuOp.GetBoundingBox(theShape, precise)
10853             RaiseIfFailed("GetBoundingBox", self.MeasuOp)
10854             return aTuple
10855
10856         ## Get bounding box of the given shape
10857         #  @param theShape Shape to obtain bounding box of.
10858         #  @param precise TRUE for precise computation; FALSE for fast one.
10859         #  @param theName Object name; when specified, this parameter is used
10860         #         for result publication in the study. Otherwise, if automatic
10861         #         publication is switched on, default value is used for result name.
10862         #
10863         #  @return New GEOM.GEOM_Object, containing the created box.
10864         #
10865         #  @ref tui_bounding_box_page "Example"
10866         @ManageTransactions("MeasuOp")
10867         def MakeBoundingBox (self, theShape, precise=False, theName=None):
10868             """
10869             Get bounding box of the given shape
10870
10871             Parameters:
10872                 theShape Shape to obtain bounding box of.
10873                 precise TRUE for precise computation; FALSE for fast one.
10874                 theName Object name; when specified, this parameter is used
10875                         for result publication in the study. Otherwise, if automatic
10876                         publication is switched on, default value is used for result name.
10877
10878             Returns:
10879                 New GEOM.GEOM_Object, containing the created box.
10880             """
10881             # Example: see GEOM_TestMeasures.py
10882             anObj = self.MeasuOp.MakeBoundingBox(theShape, precise)
10883             RaiseIfFailed("MakeBoundingBox", self.MeasuOp)
10884             self._autoPublish(anObj, theName, "bndbox")
10885             return anObj
10886
10887         ## Get inertia matrix and moments of inertia of theShape.
10888         #  @param theShape Shape to calculate inertia of.
10889         #  @return [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
10890         #  I(1-3)(1-3): Components of the inertia matrix of the given shape.
10891         #  Ix,Iy,Iz:    Moments of inertia of the given shape.
10892         #
10893         #  @ref tui_inertia_page "Example"
10894         @ManageTransactions("MeasuOp")
10895         def Inertia(self,theShape):
10896             """
10897             Get inertia matrix and moments of inertia of theShape.
10898
10899             Parameters:
10900                 theShape Shape to calculate inertia of.
10901
10902             Returns:
10903                 [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
10904                  I(1-3)(1-3): Components of the inertia matrix of the given shape.
10905                  Ix,Iy,Iz:    Moments of inertia of the given shape.
10906             """
10907             # Example: see GEOM_TestMeasures.py
10908             aTuple = self.MeasuOp.GetInertia(theShape)
10909             RaiseIfFailed("GetInertia", self.MeasuOp)
10910             return aTuple
10911
10912         ## Get if coords are included in the shape (ST_IN or ST_ON)
10913         #  @param theShape Shape
10914         #  @param coords list of points coordinates [x1, y1, z1, x2, y2, z2, ...]
10915         #  @param tolerance to be used (default is 1.0e-7)
10916         #  @return list_of_boolean = [res1, res2, ...]
10917         @ManageTransactions("MeasuOp")
10918         def AreCoordsInside(self, theShape, coords, tolerance=1.e-7):
10919             """
10920             Get if coords are included in the shape (ST_IN or ST_ON)
10921
10922             Parameters:
10923                 theShape Shape
10924                 coords list of points coordinates [x1, y1, z1, x2, y2, z2, ...]
10925                 tolerance to be used (default is 1.0e-7)
10926
10927             Returns:
10928                 list_of_boolean = [res1, res2, ...]
10929             """
10930             return self.MeasuOp.AreCoordsInside(theShape, coords, tolerance)
10931
10932         ## Get minimal distance between the given shapes.
10933         #  @param theShape1,theShape2 Shapes to find minimal distance between.
10934         #  @return Value of the minimal distance between the given shapes.
10935         #
10936         #  @ref tui_min_distance_page "Example"
10937         @ManageTransactions("MeasuOp")
10938         def MinDistance(self, theShape1, theShape2):
10939             """
10940             Get minimal distance between the given shapes.
10941
10942             Parameters:
10943                 theShape1,theShape2 Shapes to find minimal distance between.
10944
10945             Returns:
10946                 Value of the minimal distance between the given shapes.
10947             """
10948             # Example: see GEOM_TestMeasures.py
10949             aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
10950             RaiseIfFailed("GetMinDistance", self.MeasuOp)
10951             return aTuple[0]
10952
10953         ## Get minimal distance between the given shapes.
10954         #  @param theShape1,theShape2 Shapes to find minimal distance between.
10955         #  @return Value of the minimal distance between the given shapes, in form of list
10956         #          [Distance, DX, DY, DZ].
10957         #
10958         #  @ref tui_min_distance_page "Example"
10959         @ManageTransactions("MeasuOp")
10960         def MinDistanceComponents(self, theShape1, theShape2):
10961             """
10962             Get minimal distance between the given shapes.
10963
10964             Parameters:
10965                 theShape1,theShape2 Shapes to find minimal distance between.
10966
10967             Returns:
10968                 Value of the minimal distance between the given shapes, in form of list
10969                 [Distance, DX, DY, DZ]
10970             """
10971             # Example: see GEOM_TestMeasures.py
10972             aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
10973             RaiseIfFailed("GetMinDistance", self.MeasuOp)
10974             aRes = [aTuple[0], aTuple[4] - aTuple[1], aTuple[5] - aTuple[2], aTuple[6] - aTuple[3]]
10975             return aRes
10976
10977         ## Get closest points of the given shapes.
10978         #  @param theShape1,theShape2 Shapes to find closest points of.
10979         #  @return The number of found solutions (-1 in case of infinite number of
10980         #          solutions) and a list of (X, Y, Z) coordinates for all couples of points.
10981         #
10982         #  @ref tui_min_distance_page "Example"
10983         @ManageTransactions("MeasuOp")
10984         def ClosestPoints (self, theShape1, theShape2):
10985             """
10986             Get closest points of the given shapes.
10987
10988             Parameters:
10989                 theShape1,theShape2 Shapes to find closest points of.
10990
10991             Returns:
10992                 The number of found solutions (-1 in case of infinite number of
10993                 solutions) and a list of (X, Y, Z) coordinates for all couples of points.
10994             """
10995             # Example: see GEOM_TestMeasures.py
10996             aTuple = self.MeasuOp.ClosestPoints(theShape1, theShape2)
10997             RaiseIfFailed("ClosestPoints", self.MeasuOp)
10998             return aTuple
10999
11000         ## Get angle between the given shapes in degrees.
11001         #  @param theShape1,theShape2 Lines or linear edges to find angle between.
11002         #  @note If both arguments are vectors, the angle is computed in accordance
11003         #        with their orientations, otherwise the minimum angle is computed.
11004         #  @return Value of the angle between the given shapes in degrees.
11005         #
11006         #  @ref tui_angle_page "Example"
11007         @ManageTransactions("MeasuOp")
11008         def GetAngle(self, theShape1, theShape2):
11009             """
11010             Get angle between the given shapes in degrees.
11011
11012             Parameters:
11013                 theShape1,theShape2 Lines or linear edges to find angle between.
11014
11015             Note:
11016                 If both arguments are vectors, the angle is computed in accordance
11017                 with their orientations, otherwise the minimum angle is computed.
11018
11019             Returns:
11020                 Value of the angle between the given shapes in degrees.
11021             """
11022             # Example: see GEOM_TestMeasures.py
11023             anAngle = self.MeasuOp.GetAngle(theShape1, theShape2)
11024             RaiseIfFailed("GetAngle", self.MeasuOp)
11025             return anAngle
11026
11027         ## Get angle between the given shapes in radians.
11028         #  @param theShape1,theShape2 Lines or linear edges to find angle between.
11029         #  @note If both arguments are vectors, the angle is computed in accordance
11030         #        with their orientations, otherwise the minimum angle is computed.
11031         #  @return Value of the angle between the given shapes in radians.
11032         #
11033         #  @ref tui_angle_page "Example"
11034         @ManageTransactions("MeasuOp")
11035         def GetAngleRadians(self, theShape1, theShape2):
11036             """
11037             Get angle between the given shapes in radians.
11038
11039             Parameters:
11040                 theShape1,theShape2 Lines or linear edges to find angle between.
11041
11042
11043             Note:
11044                 If both arguments are vectors, the angle is computed in accordance
11045                 with their orientations, otherwise the minimum angle is computed.
11046
11047             Returns:
11048                 Value of the angle between the given shapes in radians.
11049             """
11050             # Example: see GEOM_TestMeasures.py
11051             anAngle = self.MeasuOp.GetAngle(theShape1, theShape2)*math.pi/180.
11052             RaiseIfFailed("GetAngle", self.MeasuOp)
11053             return anAngle
11054
11055         ## Get angle between the given vectors in degrees.
11056         #  @param theShape1,theShape2 Vectors to find angle between.
11057         #  @param theFlag If True, the normal vector is defined by the two vectors cross,
11058         #                 if False, the opposite vector to the normal vector is used.
11059         #  @return Value of the angle between the given vectors in degrees.
11060         #
11061         #  @ref tui_angle_page "Example"
11062         @ManageTransactions("MeasuOp")
11063         def GetAngleVectors(self, theShape1, theShape2, theFlag = True):
11064             """
11065             Get angle between the given vectors in degrees.
11066
11067             Parameters:
11068                 theShape1,theShape2 Vectors to find angle between.
11069                 theFlag If True, the normal vector is defined by the two vectors cross,
11070                         if False, the opposite vector to the normal vector is used.
11071
11072             Returns:
11073                 Value of the angle between the given vectors in degrees.
11074             """
11075             anAngle = self.MeasuOp.GetAngleBtwVectors(theShape1, theShape2)
11076             if not theFlag:
11077                 anAngle = 360. - anAngle
11078             RaiseIfFailed("GetAngleVectors", self.MeasuOp)
11079             return anAngle
11080
11081         ## The same as GetAngleVectors, but the result is in radians.
11082         def GetAngleRadiansVectors(self, theShape1, theShape2, theFlag = True):
11083             """
11084             Get angle between the given vectors in radians.
11085
11086             Parameters:
11087                 theShape1,theShape2 Vectors to find angle between.
11088                 theFlag If True, the normal vector is defined by the two vectors cross,
11089                         if False, the opposite vector to the normal vector is used.
11090
11091             Returns:
11092                 Value of the angle between the given vectors in radians.
11093             """
11094             anAngle = self.GetAngleVectors(theShape1, theShape2, theFlag)*math.pi/180.
11095             return anAngle
11096
11097         ## @name Curve Curvature Measurement
11098         #  Methods for receiving radius of curvature of curves
11099         #  in the given point
11100         ## @{
11101
11102         ## Measure curvature of a curve at a point, set by parameter.
11103         #  @param theCurve a curve.
11104         #  @param theParam parameter.
11105         #  @return radius of curvature of \a theCurve.
11106         #
11107         #  @ref swig_todo "Example"
11108         @ManageTransactions("MeasuOp")
11109         def CurveCurvatureByParam(self, theCurve, theParam):
11110             """
11111             Measure curvature of a curve at a point, set by parameter.
11112
11113             Parameters:
11114                 theCurve a curve.
11115                 theParam parameter.
11116
11117             Returns:
11118                 radius of curvature of theCurve.
11119             """
11120             # Example: see GEOM_TestMeasures.py
11121             aCurv = self.MeasuOp.CurveCurvatureByParam(theCurve,theParam)
11122             RaiseIfFailed("CurveCurvatureByParam", self.MeasuOp)
11123             return aCurv
11124
11125         ## Measure curvature of a curve at a point.
11126         #  @param theCurve a curve.
11127         #  @param thePoint given point.
11128         #  @return radius of curvature of \a theCurve.
11129         #
11130         #  @ref swig_todo "Example"
11131         @ManageTransactions("MeasuOp")
11132         def CurveCurvatureByPoint(self, theCurve, thePoint):
11133             """
11134             Measure curvature of a curve at a point.
11135
11136             Parameters:
11137                 theCurve a curve.
11138                 thePoint given point.
11139
11140             Returns:
11141                 radius of curvature of theCurve.
11142             """
11143             aCurv = self.MeasuOp.CurveCurvatureByPoint(theCurve,thePoint)
11144             RaiseIfFailed("CurveCurvatureByPoint", self.MeasuOp)
11145             return aCurv
11146         ## @}
11147
11148         ## @name Surface Curvature Measurement
11149         #  Methods for receiving max and min radius of curvature of surfaces
11150         #  in the given point
11151         ## @{
11152
11153         ## Measure max radius of curvature of surface.
11154         #  @param theSurf the given surface.
11155         #  @param theUParam Value of U-parameter on the referenced surface.
11156         #  @param theVParam Value of V-parameter on the referenced surface.
11157         #  @return max radius of curvature of theSurf.
11158         #
11159         ## @ref swig_todo "Example"
11160         @ManageTransactions("MeasuOp")
11161         def MaxSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
11162             """
11163             Measure max radius of curvature of surface.
11164
11165             Parameters:
11166                 theSurf the given surface.
11167                 theUParam Value of U-parameter on the referenced surface.
11168                 theVParam Value of V-parameter on the referenced surface.
11169
11170             Returns:
11171                 max radius of curvature of theSurf.
11172             """
11173             # Example: see GEOM_TestMeasures.py
11174             aSurf = self.MeasuOp.MaxSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
11175             RaiseIfFailed("MaxSurfaceCurvatureByParam", self.MeasuOp)
11176             return aSurf
11177
11178         ## Measure max radius of curvature of surface in the given point
11179         #  @param theSurf the given surface.
11180         #  @param thePoint given point.
11181         #  @return max radius of curvature of theSurf.
11182         #
11183         ## @ref swig_todo "Example"
11184         @ManageTransactions("MeasuOp")
11185         def MaxSurfaceCurvatureByPoint(self, theSurf, thePoint):
11186             """
11187             Measure max radius of curvature of surface in the given point.
11188
11189             Parameters:
11190                 theSurf the given surface.
11191                 thePoint given point.
11192
11193             Returns:
11194                 max radius of curvature of theSurf.
11195             """
11196             aSurf = self.MeasuOp.MaxSurfaceCurvatureByPoint(theSurf,thePoint)
11197             RaiseIfFailed("MaxSurfaceCurvatureByPoint", self.MeasuOp)
11198             return aSurf
11199
11200         ## Measure min radius of curvature of surface.
11201         #  @param theSurf the given surface.
11202         #  @param theUParam Value of U-parameter on the referenced surface.
11203         #  @param theVParam Value of V-parameter on the referenced surface.
11204         #  @return min radius of curvature of theSurf.
11205         #
11206         ## @ref swig_todo "Example"
11207         @ManageTransactions("MeasuOp")
11208         def MinSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
11209             """
11210             Measure min radius of curvature of surface.
11211
11212             Parameters:
11213                 theSurf the given surface.
11214                 theUParam Value of U-parameter on the referenced surface.
11215                 theVParam Value of V-parameter on the referenced surface.
11216
11217             Returns:
11218                 Min radius of curvature of theSurf.
11219             """
11220             aSurf = self.MeasuOp.MinSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
11221             RaiseIfFailed("MinSurfaceCurvatureByParam", self.MeasuOp)
11222             return aSurf
11223
11224         ## Measure min radius of curvature of surface in the given point
11225         #  @param theSurf the given surface.
11226         #  @param thePoint given point.
11227         #  @return min radius of curvature of theSurf.
11228         #
11229         ## @ref swig_todo "Example"
11230         @ManageTransactions("MeasuOp")
11231         def MinSurfaceCurvatureByPoint(self, theSurf, thePoint):
11232             """
11233             Measure min radius of curvature of surface in the given point.
11234
11235             Parameters:
11236                 theSurf the given surface.
11237                 thePoint given point.
11238
11239             Returns:
11240                 Min radius of curvature of theSurf.
11241             """
11242             aSurf = self.MeasuOp.MinSurfaceCurvatureByPoint(theSurf,thePoint)
11243             RaiseIfFailed("MinSurfaceCurvatureByPoint", self.MeasuOp)
11244             return aSurf
11245         ## @}
11246
11247         ## Measure curvature radius of surface in the given point along the given direction.
11248         #  @param theSurf the given face.
11249         #  @param thePoint given point.
11250         #  @param theDirection given direction.
11251         #  @param theName Object name; when specified, this parameter is used
11252         #         for result publication in the study. Otherwise, if automatic
11253         #         publication is switched on, default value is used for result name.
11254         #
11255         #  @return New GEOM.GEOM_Object, containing vector of curvature of theSurf.
11256         #          The returned vector is codirectional with the normal to the face
11257         #          in the given point in case of positive curvature value
11258         #          and opposite to the normal in case of negative curvature.
11259         #          The normal of the returned vector is equal to the
11260         #          absolute value of the curvature radius.
11261         #          Null shape is returned in case of infinite radius
11262         #          (zero curvature), for example, in case of flat face.
11263         #
11264         ## @ref swig_CurvatureOnFace "Example"
11265         @ManageTransactions("MeasuOp")
11266         def CurvatureOnFace(self, theSurf, thePoint, theDirection, theName=None):
11267             """
11268             Measure curvature radius of surface in the given point along the given direction.
11269
11270             Parameters:
11271                 theSurf the given face.
11272                 thePoint given point.
11273                 theDirection given direction.
11274                 theName Object name; when specified, this parameter is used
11275                         for result publication in the study. Otherwise, if automatic
11276                         publication is switched on, default value is used for result name.
11277
11278             Returns:
11279                 New GEOM.GEOM_Object, containing vector of curvature of theSurf.
11280                 The returned vector is codirectional with the normal to the face
11281                 in the given point in case of positive curvature value
11282                 and opposite to the normal in case of negative curvature.
11283                 The normal of the returned vector is equal to the
11284                 absolute value of the curvature radius.
11285                 Null shape is returned in case of infinite radius
11286                 (zero curvature), for example, in case of flat face.
11287
11288             Example of usage:
11289                 curvature_1 = geompy.CurvatureOnFace(Face_1, Vertex_1, OX)
11290             """
11291             aVec = self.MeasuOp.SurfaceCurvatureByPointAndDirection(theSurf,thePoint,theDirection)
11292             if self.MeasuOp.GetErrorCode() != "ZERO_CURVATURE":
11293                 RaiseIfFailed("CurvatureOnFace", self.MeasuOp)
11294                 self._autoPublish(aVec, theName, "curvature")
11295             return aVec
11296
11297         ## Convert X,Y,Z points coordinates to UV parameters on the given surface.
11298         #  @param theSurf the given face. It can be also a shell or a compound with one face.
11299         #  @param theXYZlist float list of size 3*N where N is the number of points
11300         #                    for which we want their U,V coordinates.
11301         #                    If the user enters a list of size not divisible by 3
11302         #                    an exception will be thrown.
11303         #  @param theIsNormalized if True, the returned parameters will be in range [0, 1].
11304         #
11305         #  @return list of float of size 2*N.
11306         #
11307         #  @ref tui_xyz_to_uv_page "Example"
11308         @ManageTransactions("MeasuOp")
11309         def XYZtoUV(self, theSurf, theXYZlist, theIsNormalized = True):
11310             """
11311             Convert X,Y,Z points coordinates to UV parameters on the given surface.
11312
11313             Parameters:
11314                 theSurf the given face. It can be also a shell or a compound with one face.
11315                 theXYZlist float list of size 3*N where N is the number of points
11316                            for which we want their U,V coordinates.
11317                            If the user enters a list of size not divisible by 3
11318                            an exception will be thrown.
11319                 theIsNormalized if True, the returned parameters will be in range [0, 1].
11320
11321             Returns:
11322                 list of float of size 2*N.
11323
11324             Example of usage:
11325                 [u1,v1, u2,v2] = geompy.XYZtoUV(Face_1, [0,0,0, 0,10,10])
11326             """
11327             aUVlist = self.MeasuOp.XYZtoUV(theSurf, theXYZlist, theIsNormalized)
11328             RaiseIfFailed("XYZtoUV", self.MeasuOp)
11329             return aUVlist
11330
11331         ## Convert UV parameters on the given surface to 3D points coordinates.
11332         #  @param theSurf the given face. It can be also a shell or a compound with one face.
11333         #  @param theUVlist float list of size 2*N where N is the number of points
11334         #                   for which we want their X,Y,Z coordinates.
11335         #                   If the user enters a list of non-even size
11336         #                   an exception will be thrown.
11337         #  @param theIsNormalized if True, the input parameters are expected to be in range [0, 1].
11338         #
11339         #  @return list of float of size 3*N.
11340         #
11341         #  @ref tui_xyz_to_uv_page "Example"
11342         @ManageTransactions("MeasuOp")
11343         def UVtoXYZ(self, theSurf, theUVlist, theIsNormalized = True):
11344             """
11345             Convert UV parameters on the given surface to 3D points coordinates.
11346
11347             Parameters:
11348                 theSurf the given face. It can be also a shell or a compound with one face.
11349                 theUVlist float list of size 2*N where N is the number of points
11350                           for which we want their X,Y,Z coordinates.
11351                           If the user enters a list of non-even size
11352                           an exception will be thrown.
11353                 theIsNormalized if True, the input parameters are expected to be in range [0, 1].
11354
11355             Returns:
11356                 list of float of size 3*N.
11357
11358             Example of usage:
11359                 [x1,y1,z1, x2,y2,z2] = geompy.UVtoXYZ(Face_1, [0,0, 10,10])
11360             """
11361             aXYZlist = self.MeasuOp.UVtoXYZ(theSurf, theUVlist, theIsNormalized)
11362             RaiseIfFailed("UVtoXYZ", self.MeasuOp)
11363             return aXYZlist
11364
11365         ## Get min and max tolerances of sub-shapes of theShape
11366         #  @param theShape Shape, to get tolerances of.
11367         #  @return [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]\n
11368         #  FaceMin,FaceMax: Min and max tolerances of the faces.\n
11369         #  EdgeMin,EdgeMax: Min and max tolerances of the edges.\n
11370         #  VertMin,VertMax: Min and max tolerances of the vertices.
11371         #
11372         #  @ref tui_tolerance_page "Example"
11373         @ManageTransactions("MeasuOp")
11374         def Tolerance(self,theShape):
11375             """
11376             Get min and max tolerances of sub-shapes of theShape
11377
11378             Parameters:
11379                 theShape Shape, to get tolerances of.
11380
11381             Returns:
11382                 [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]
11383                  FaceMin,FaceMax: Min and max tolerances of the faces.
11384                  EdgeMin,EdgeMax: Min and max tolerances of the edges.
11385                  VertMin,VertMax: Min and max tolerances of the vertices.
11386             """
11387             # Example: see GEOM_TestMeasures.py
11388             aTuple = self.MeasuOp.GetTolerance(theShape)
11389             RaiseIfFailed("GetTolerance", self.MeasuOp)
11390             return aTuple
11391
11392         ## Obtain description of the given shape (number of sub-shapes of each type)
11393         #  @param theShape Shape to be described.
11394         #  @return Description of the given shape.
11395         #
11396         #  @ref tui_whatis_page "Example"
11397         @ManageTransactions("MeasuOp")
11398         def WhatIs(self,theShape):
11399             """
11400             Obtain description of the given shape (number of sub-shapes of each type)
11401
11402             Parameters:
11403                 theShape Shape to be described.
11404
11405             Returns:
11406                 Description of the given shape.
11407             """
11408             # Example: see GEOM_TestMeasures.py
11409             aDescr = self.MeasuOp.WhatIs(theShape)
11410             RaiseIfFailed("WhatIs", self.MeasuOp)
11411             return aDescr
11412
11413         ## Obtain quantity of shapes of the given type in \a theShape.
11414         #  If \a theShape is of type \a theType, it is also counted.
11415         #  @param theShape Shape to be described.
11416         #  @param theType the given ShapeType().
11417         #  @return Quantity of shapes of type \a theType in \a theShape.
11418         #
11419         #  @ref tui_measurement_tools_page "Example"
11420         def NbShapes (self, theShape, theType):
11421             """
11422             Obtain quantity of shapes of the given type in theShape.
11423             If theShape is of type theType, it is also counted.
11424
11425             Parameters:
11426                 theShape Shape to be described.
11427                 theType the given geompy.ShapeType
11428
11429             Returns:
11430                 Quantity of shapes of type theType in theShape.
11431             """
11432             # Example: see GEOM_TestMeasures.py
11433             listSh = self.SubShapeAllIDs(theShape, theType)
11434             Nb = len(listSh)
11435             return Nb
11436
11437         ## Obtain quantity of shapes of each type in \a theShape.
11438         #  The \a theShape is also counted.
11439         #  @param theShape Shape to be described.
11440         #  @return Dictionary of ShapeType() with bound quantities of shapes.
11441         #
11442         #  @ref tui_measurement_tools_page "Example"
11443         def ShapeInfo (self, theShape):
11444             """
11445             Obtain quantity of shapes of each type in theShape.
11446             The theShape is also counted.
11447
11448             Parameters:
11449                 theShape Shape to be described.
11450
11451             Returns:
11452                 Dictionary of geompy.ShapeType with bound quantities of shapes.
11453             """
11454             # Example: see GEOM_TestMeasures.py
11455             aDict = {}
11456             for typeSh in self.ShapeType:
11457                 if typeSh in ( "AUTO", "SHAPE" ): continue
11458                 listSh = self.SubShapeAllIDs(theShape, self.ShapeType[typeSh])
11459                 Nb = len(listSh)
11460                 aDict[typeSh] = Nb
11461                 pass
11462             return aDict
11463
11464         def GetCreationInformation(self, theShape):
11465             res = ''
11466             infos = theShape.GetCreationInformation()
11467             for info in infos:
11468                 # operationName
11469                 opName = info.operationName
11470                 if not opName: opName = "no info available"
11471                 if res: res += "\n"
11472                 res += "Operation: " + opName
11473                 # parameters
11474                 for parVal in info.params:
11475                     res += "\n \t%s = %s" % ( parVal.name, parVal.value )
11476             return res
11477
11478         ## Get a point, situated at the centre of mass of theShape.
11479         #  @param theShape Shape to define centre of mass of.
11480         #  @param theName Object name; when specified, this parameter is used
11481         #         for result publication in the study. Otherwise, if automatic
11482         #         publication is switched on, default value is used for result name.
11483         #
11484         #  @return New GEOM.GEOM_Object, containing the created point.
11485         #
11486         #  @ref tui_center_of_mass_page "Example"
11487         @ManageTransactions("MeasuOp")
11488         def MakeCDG(self, theShape, theName=None):
11489             """
11490             Get a point, situated at the centre of mass of theShape.
11491
11492             Parameters:
11493                 theShape Shape to define centre of mass of.
11494                 theName Object name; when specified, this parameter is used
11495                         for result publication in the study. Otherwise, if automatic
11496                         publication is switched on, default value is used for result name.
11497
11498             Returns:
11499                 New GEOM.GEOM_Object, containing the created point.
11500             """
11501             # Example: see GEOM_TestMeasures.py
11502             anObj = self.MeasuOp.GetCentreOfMass(theShape)
11503             RaiseIfFailed("GetCentreOfMass", self.MeasuOp)
11504             self._autoPublish(anObj, theName, "centerOfMass")
11505             return anObj
11506
11507         ## Get a vertex sub-shape by index.
11508         #  @param theShape Shape to find sub-shape.
11509         #  @param theIndex Index to find vertex by this index (starting from zero)
11510         #  @param theUseOri To consider edge/wire orientation or not
11511         #  @param theName Object name; when specified, this parameter is used
11512         #         for result publication in the study. Otherwise, if automatic
11513         #         publication is switched on, default value is used for result name.
11514         #
11515         #  @return New GEOM.GEOM_Object, containing the created vertex.
11516         #
11517         #  @ref tui_measurement_tools_page "Example"
11518         @ManageTransactions("MeasuOp")
11519         def GetVertexByIndex(self, theShape, theIndex, theUseOri=True, theName=None):
11520             """
11521             Get a vertex sub-shape by index.
11522
11523             Parameters:
11524                 theShape Shape to find sub-shape.
11525                 theIndex Index to find vertex by this index (starting from zero)
11526                 theUseOri To consider edge/wire orientation or not
11527                 theName Object name; when specified, this parameter is used
11528                         for result publication in the study. Otherwise, if automatic
11529                         publication is switched on, default value is used for result name.
11530
11531             Returns:
11532                 New GEOM.GEOM_Object, containing the created vertex.
11533             """
11534             # Example: see GEOM_TestMeasures.py
11535             if isinstance( theUseOri, str ): # theUseOri was inserted before theName
11536                 theUseOri, theName = True, theUseOri
11537             anObj = self.MeasuOp.GetVertexByIndex(theShape, theIndex, theUseOri)
11538             RaiseIfFailed("GetVertexByIndex", self.MeasuOp)
11539             self._autoPublish(anObj, theName, "vertex")
11540             return anObj
11541
11542         ## Get the first vertex of wire/edge depended orientation.
11543         #  @param theShape Shape to find first vertex.
11544         #  @param theName Object name; when specified, this parameter is used
11545         #         for result publication in the study. Otherwise, if automatic
11546         #         publication is switched on, default value is used for result name.
11547         #
11548         #  @return New GEOM.GEOM_Object, containing the created vertex.
11549         #
11550         #  @ref tui_measurement_tools_page "Example"
11551         def GetFirstVertex(self, theShape, theName=None):
11552             """
11553             Get the first vertex of wire/edge depended orientation.
11554
11555             Parameters:
11556                 theShape Shape to find first vertex.
11557                 theName Object name; when specified, this parameter is used
11558                         for result publication in the study. Otherwise, if automatic
11559                         publication is switched on, default value is used for result name.
11560
11561             Returns:
11562                 New GEOM.GEOM_Object, containing the created vertex.
11563             """
11564             # Example: see GEOM_TestMeasures.py
11565             # note: auto-publishing is done in self.GetVertexByIndex()
11566             return self.GetVertexByIndex(theShape, 0, True, theName)
11567
11568         ## Get the last vertex of wire/edge depended orientation.
11569         #  @param theShape Shape to find last vertex.
11570         #  @param theName Object name; when specified, this parameter is used
11571         #         for result publication in the study. Otherwise, if automatic
11572         #         publication is switched on, default value is used for result name.
11573         #
11574         #  @return New GEOM.GEOM_Object, containing the created vertex.
11575         #
11576         #  @ref tui_measurement_tools_page "Example"
11577         def GetLastVertex(self, theShape, theName=None):
11578             """
11579             Get the last vertex of wire/edge depended orientation.
11580
11581             Parameters:
11582                 theShape Shape to find last vertex.
11583                 theName Object name; when specified, this parameter is used
11584                         for result publication in the study. Otherwise, if automatic
11585                         publication is switched on, default value is used for result name.
11586
11587             Returns:
11588                 New GEOM.GEOM_Object, containing the created vertex.
11589             """
11590             # Example: see GEOM_TestMeasures.py
11591             nb_vert =  self.NumberOfSubShapes(theShape, self.ShapeType["VERTEX"])
11592             # note: auto-publishing is done in self.GetVertexByIndex()
11593             return self.GetVertexByIndex(theShape, (nb_vert-1), True, theName)
11594
11595         ## Get a normale to the given face. If the point is not given,
11596         #  the normale is calculated at the center of mass.
11597         #  @param theFace Face to define normale of.
11598         #  @param theOptionalPoint Point to compute the normale at.
11599         #  @param theName Object name; when specified, this parameter is used
11600         #         for result publication in the study. Otherwise, if automatic
11601         #         publication is switched on, default value is used for result name.
11602         #
11603         #  @return New GEOM.GEOM_Object, containing the created vector.
11604         #
11605         #  @ref swig_todo "Example"
11606         @ManageTransactions("MeasuOp")
11607         def GetNormal(self, theFace, theOptionalPoint = None, theName=None):
11608             """
11609             Get a normale to the given face. If the point is not given,
11610             the normale is calculated at the center of mass.
11611
11612             Parameters:
11613                 theFace Face to define normale of.
11614                 theOptionalPoint Point to compute the normale at.
11615                 theName Object name; when specified, this parameter is used
11616                         for result publication in the study. Otherwise, if automatic
11617                         publication is switched on, default value is used for result name.
11618
11619             Returns:
11620                 New GEOM.GEOM_Object, containing the created vector.
11621             """
11622             # Example: see GEOM_TestMeasures.py
11623             anObj = self.MeasuOp.GetNormal(theFace, theOptionalPoint)
11624             RaiseIfFailed("GetNormal", self.MeasuOp)
11625             self._autoPublish(anObj, theName, "normal")
11626             return anObj
11627
11628         ## Print shape errors obtained from CheckShape.
11629         #  @param theShape Shape that was checked.
11630         #  @param theShapeErrors the shape errors obtained by CheckShape.
11631         #  @param theReturnStatus If 0 the description of problem is printed.
11632         #                         If 1 the description of problem is returned.
11633         #  @return If theReturnStatus is equal to 1 the description is returned.
11634         #          Otherwise doesn't return anything.
11635         #
11636         #  @ref tui_check_shape_page "Example"
11637         @ManageTransactions("MeasuOp")
11638         def PrintShapeErrors(self, theShape, theShapeErrors, theReturnStatus = 0):
11639             """
11640             Print shape errors obtained from CheckShape.
11641
11642             Parameters:
11643                 theShape Shape that was checked.
11644                 theShapeErrors the shape errors obtained by CheckShape.
11645                 theReturnStatus If 0 the description of problem is printed.
11646                                 If 1 the description of problem is returned.
11647
11648             Returns:
11649                 If theReturnStatus is equal to 1 the description is returned.
11650                   Otherwise doesn't return anything.
11651             """
11652             # Example: see GEOM_TestMeasures.py
11653             Descr = self.MeasuOp.PrintShapeErrors(theShape, theShapeErrors)
11654             if theReturnStatus == 1:
11655                 return Descr
11656             print(Descr)
11657             pass
11658
11659         ## Check a topology of the given shape.
11660         #  @param theShape Shape to check validity of.
11661         #  @param theIsCheckGeom If FALSE, only the shape's topology will be checked, \n
11662         #                        if TRUE, the shape's geometry will be checked also.
11663         #  @param theReturnStatus If 0 and if theShape is invalid, a description
11664         #                         of problem is printed.
11665         #                         If 1 isValid flag and the description of
11666         #                         problem is returned.
11667         #                         If 2 isValid flag and the list of error data
11668         #                         is returned.
11669         #  @return TRUE, if the shape "seems to be valid".
11670         #          If theShape is invalid, prints a description of problem.
11671         #          If theReturnStatus is equal to 1 the description is returned
11672         #          along with IsValid flag.
11673         #          If theReturnStatus is equal to 2 the list of error data is
11674         #          returned along with IsValid flag.
11675         #
11676         #  @ref tui_check_shape_page "Example"
11677         @ManageTransactions("MeasuOp")
11678         def CheckShape(self,theShape, theIsCheckGeom = 0, theReturnStatus = 0):
11679             """
11680             Check a topology of the given shape.
11681
11682             Parameters:
11683                 theShape Shape to check validity of.
11684                 theIsCheckGeom If FALSE, only the shape's topology will be checked,
11685                                if TRUE, the shape's geometry will be checked also.
11686                 theReturnStatus If 0 and if theShape is invalid, a description
11687                                 of problem is printed.
11688                                 If 1 IsValid flag and the description of
11689                                 problem is returned.
11690                                 If 2 IsValid flag and the list of error data
11691                                 is returned.
11692
11693             Returns:
11694                 TRUE, if the shape "seems to be valid".
11695                 If theShape is invalid, prints a description of problem.
11696                 If theReturnStatus is equal to 1 the description is returned
11697                 along with IsValid flag.
11698                 If theReturnStatus is equal to 2 the list of error data is
11699                 returned along with IsValid flag.
11700             """
11701             # Example: see GEOM_TestMeasures.py
11702             if theIsCheckGeom:
11703                 (IsValid, ShapeErrors) = self.MeasuOp.CheckShapeWithGeometry(theShape)
11704                 RaiseIfFailed("CheckShapeWithGeometry", self.MeasuOp)
11705             else:
11706                 (IsValid, ShapeErrors) = self.MeasuOp.CheckShape(theShape)
11707                 RaiseIfFailed("CheckShape", self.MeasuOp)
11708             if IsValid == 0:
11709                 if theReturnStatus == 0:
11710                     Descr = self.MeasuOp.PrintShapeErrors(theShape, ShapeErrors)
11711                     print(Descr)
11712             if theReturnStatus == 1:
11713               Descr = self.MeasuOp.PrintShapeErrors(theShape, ShapeErrors)
11714               return (IsValid, Descr)
11715             elif theReturnStatus == 2:
11716               return (IsValid, ShapeErrors)
11717             return IsValid
11718
11719         ## Detect self-intersections in the given shape.
11720         #  @param theShape Shape to check.
11721         #  @param theCheckLevel is the level of self-intersection check.
11722         #         Possible input values are:
11723         #         - GEOM.SI_V_V(0) - only V/V interferences
11724         #         - GEOM.SI_V_E(1) - V/V and V/E interferences
11725         #         - GEOM.SI_E_E(2) - V/V, V/E and E/E interferences
11726         #         - GEOM.SI_V_F(3) - V/V, V/E, E/E and V/F interferences
11727         #         - GEOM.SI_E_F(4) - V/V, V/E, E/E, V/F and E/F interferences
11728         #         - GEOM.SI_ALL(5) - all interferences.
11729         #  @return TRUE, if the shape contains no self-intersections.
11730         #
11731         #  @ref tui_check_self_intersections_page "Example"
11732         @ManageTransactions("MeasuOp")
11733         def CheckSelfIntersections(self, theShape, theCheckLevel = GEOM.SI_ALL):
11734             """
11735             Detect self-intersections in the given shape.
11736
11737             Parameters:
11738                 theShape Shape to check.
11739                 theCheckLevel is the level of self-intersection check.
11740                   Possible input values are:
11741                    - GEOM.SI_V_V(0) - only V/V interferences
11742                    - GEOM.SI_V_E(1) - V/V and V/E interferences
11743                    - GEOM.SI_E_E(2) - V/V, V/E and E/E interferences
11744                    - GEOM.SI_V_F(3) - V/V, V/E, E/E and V/F interferences
11745                    - GEOM.SI_E_F(4) - V/V, V/E, E/E, V/F and E/F interferences
11746                    - GEOM.SI_ALL(5) - all interferences.
11747  
11748             Returns:
11749                 TRUE, if the shape contains no self-intersections.
11750             """
11751             # Example: see GEOM_TestMeasures.py
11752             (IsValid, Pairs) = self.MeasuOp.CheckSelfIntersections(theShape, EnumToLong(theCheckLevel))
11753             RaiseIfFailed("CheckSelfIntersections", self.MeasuOp)
11754             return IsValid
11755
11756         ## Detect self-intersections of the given shape with algorithm based on mesh intersections.
11757         #  @param theShape Shape to check.
11758         #  @param theDeflection Linear deflection coefficient that specifies quality of tessellation:
11759         #         - if \a theDeflection <= 0, default deflection 0.001 is used
11760         #  @param theTolerance Specifies a distance between sub-shapes used for detecting gaps:
11761         #         - if \a theTolerance <= 0, algorithm detects intersections (default behavior)
11762         #         - if \a theTolerance > 0, algorithm detects gaps
11763         #  @return TRUE, if the shape contains no self-intersections.
11764         #
11765         #  @ref tui_check_self_intersections_fast_page "Example"
11766         @ManageTransactions("MeasuOp")
11767         def CheckSelfIntersectionsFast(self, theShape, theDeflection = 0.001, theTolerance = 0.0):
11768             """
11769             Detect self-intersections of the given shape with algorithm based on mesh intersections.
11770
11771             Parameters:
11772                 theShape Shape to check.
11773                 theDeflection Linear deflection coefficient that specifies quality of tessellation:
11774                     - if theDeflection <= 0, default deflection 0.001 is used
11775                 theTolerance Specifies a distance between shapes used for detecting gaps:
11776                     - if theTolerance <= 0, algorithm detects intersections (default behavior)
11777                     - if theTolerance > 0, algorithm detects gaps
11778  
11779             Returns:
11780                 TRUE, if the shape contains no self-intersections.
11781             """
11782             # Example: see GEOM_TestMeasures.py
11783             (IsValid, Pairs) = self.MeasuOp.CheckSelfIntersectionsFast(theShape, theDeflection, theTolerance)
11784             RaiseIfFailed("CheckSelfIntersectionsFast", self.MeasuOp)
11785             return IsValid
11786
11787         ## Check boolean and partition operations arguments.
11788         #  @param theShape the argument of an operation to be checked
11789         #  @return TRUE if the argument is valid for a boolean or partition
11790         #          operation; FALSE otherwise.
11791         @ManageTransactions("MeasuOp")
11792         def CheckBOPArguments(self, theShape):
11793             """
11794             Check boolean and partition operations arguments.
11795
11796             Parameters:
11797                 theShape the argument of an operation to be checked
11798
11799             Returns:
11800                 TRUE if the argument is valid for a boolean or partition
11801                 operation; FALSE otherwise.
11802             """
11803             return self.MeasuOp.CheckBOPArguments(theShape)
11804
11805         ## Detect intersections of the given shapes with algorithm based on mesh intersections.
11806         #  @param theShape1 First source object
11807         #  @param theShape2 Second source object
11808         #  @param theTolerance Specifies a distance between shapes used for detecting gaps:
11809         #         - if \a theTolerance <= 0, algorithm detects intersections (default behavior)
11810         #         - if \a theTolerance > 0, algorithm detects gaps
11811         #  @param theDeflection Linear deflection coefficient that specifies quality of tessellation:
11812         #         - if \a theDeflection <= 0, default deflection 0.001 is used
11813         #  @return TRUE, if there are intersections (gaps) between source shapes
11814         #  @return List of sub-shapes IDs from 1st shape that localize intersection.
11815         #  @return List of sub-shapes IDs from 2nd shape that localize intersection.
11816         #
11817         #  @ref tui_fast_intersection_page "Example"
11818         @ManageTransactions("MeasuOp")
11819         def FastIntersect(self, theShape1, theShape2, theTolerance = 0.0, theDeflection = 0.001):
11820             """
11821             Detect intersections of the given shapes with algorithm based on mesh intersections.
11822
11823             Parameters:
11824                 theShape1 First source object
11825                 theShape2 Second source object
11826                 theTolerance Specifies a distance between shapes used for detecting gaps:
11827                     - if theTolerance <= 0, algorithm detects intersections (default behavior)
11828                     - if theTolerance > 0, algorithm detects gaps
11829                 theDeflection Linear deflection coefficient that specifies quality of tessellation:
11830                     - if theDeflection <= 0, default deflection 0.001 is used
11831  
11832             Returns:
11833                 TRUE, if there are intersections (gaps) between source shapes
11834                 List of sub-shapes IDs from 1st shape that localize intersection.
11835                 List of sub-shapes IDs from 2nd shape that localize intersection.
11836             """
11837             # Example: see GEOM_TestMeasures.py
11838             IsOk, Res1, Res2 = self.MeasuOp.FastIntersect(theShape1, theShape2, theTolerance, theDeflection)
11839             RaiseIfFailed("FastIntersect", self.MeasuOp)
11840             return IsOk, Res1, Res2
11841
11842         ## Get position (LCS) of theShape.
11843         #
11844         #  Origin of the LCS is situated at the shape's center of mass.
11845         #  Axes of the LCS are obtained from shape's location or,
11846         #  if the shape is a planar face, from position of its plane.
11847         #
11848         #  @param theShape Shape to calculate position of.
11849         #  @return [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
11850         #          Ox,Oy,Oz: Coordinates of shape's LCS origin.
11851         #          Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
11852         #          Xx,Xy,Xz: Coordinates of shape's LCS X direction.
11853         #
11854         #  @ref swig_todo "Example"
11855         @ManageTransactions("MeasuOp")
11856         def GetPosition(self,theShape):
11857             """
11858             Get position (LCS) of theShape.
11859             Origin of the LCS is situated at the shape's center of mass.
11860             Axes of the LCS are obtained from shape's location or,
11861             if the shape is a planar face, from position of its plane.
11862
11863             Parameters:
11864                 theShape Shape to calculate position of.
11865
11866             Returns:
11867                 [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
11868                  Ox,Oy,Oz: Coordinates of shape's LCS origin.
11869                  Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
11870                  Xx,Xy,Xz: Coordinates of shape's LCS X direction.
11871             """
11872             # Example: see GEOM_TestMeasures.py
11873             aTuple = self.MeasuOp.GetPosition(theShape)
11874             RaiseIfFailed("GetPosition", self.MeasuOp)
11875             return aTuple
11876
11877         ## Get kind of theShape.
11878         #
11879         #  @param theShape Shape to get a kind of.
11880         #  @return Returns a kind of shape in terms of <VAR>GEOM.GEOM_IKindOfShape.shape_kind</VAR> enumeration
11881         #          and a list of parameters, describing the shape.
11882         #  @note  Concrete meaning of each value, returned via \a theIntegers
11883         #         or \a theDoubles list depends on the kind() of the shape.
11884         #
11885         #  @ref swig_todo "Example"
11886         @ManageTransactions("MeasuOp")
11887         def KindOfShape(self,theShape):
11888             """
11889             Get kind of theShape.
11890
11891             Parameters:
11892                 theShape Shape to get a kind of.
11893
11894             Returns:
11895                 a kind of shape in terms of GEOM_IKindOfShape.shape_kind enumeration
11896                     and a list of parameters, describing the shape.
11897             Note:
11898                 Concrete meaning of each value, returned via theIntegers
11899                 or theDoubles list depends on the geompy.kind of the shape
11900             """
11901             # Example: see GEOM_TestMeasures.py
11902             aRoughTuple = self.MeasuOp.KindOfShape(theShape)
11903             RaiseIfFailed("KindOfShape", self.MeasuOp)
11904
11905             aKind  = aRoughTuple[0]
11906             anInts = aRoughTuple[1]
11907             aDbls  = aRoughTuple[2]
11908
11909             # Now there is no exception from this rule:
11910             aKindTuple = [aKind] + aDbls + anInts
11911
11912             # If they are we will regroup parameters for such kind of shape.
11913             # For example:
11914             #if aKind == kind.SOME_KIND:
11915             #    #  SOME_KIND     int int double int double double
11916             #    aKindTuple = [aKind, anInts[0], anInts[1], aDbls[0], anInts[2], aDbls[1], aDbls[2]]
11917             if aKind == self.kind.CRV_BSPLINE:
11918                aKindTuple = [aKind] + anInts[:6] + aDbls + anInts[6:]
11919             elif aKind == self.kind.CRV_BEZIER:
11920                aKindTuple = [aKind] + anInts[:2] + aDbls + anInts[2:]
11921
11922             return aKindTuple
11923
11924         ## The function takes a single face with holes and returns a list of faces,
11925         #  first of them is the original face without holes, and the other faces are placed
11926         #  on the same surface as the original face but bounded by each hole wire.
11927         #  If the original face has no holes, it will be returned as an output
11928         #  @param theShape Face to perform operation on.
11929         #
11930         #  @return GEOM.ListOfGO, list created faces, where first of them is the original face without holes
11931         @ManageTransactions("MeasuOp")
11932         def PatchFace(self, theShape):
11933             """
11934             The function takes a single face with holes and returns a list of faces,
11935             first of them is the original face without holes, and the other faces are placed
11936             on the same surface as the original face but bounded by each hole wire.
11937             If the original face has no holes, it will be returned as an output
11938
11939             Parameters:
11940                 theShape  Face to perform operation on.
11941
11942             Returns:
11943                 GEOM.ListOfGO, list created faces, where first of them is the original face without holes
11944
11945             Example of usage:
11946                 Circle_1 = geompy.MakeCircle(None, None, 190)
11947                 Circle_2 = geompy.MakeCircle(None, None, 100)
11948                 Face_1 = geompy.MakeFaceWires([Circle_1], 1)
11949                 Face_2 = geompy.MakeFaceWires([Circle_2], 1)
11950                 Cut_1 = geompy.MakeCutList(Face_1, [Face_2], True)
11951                 faces = geompy.PatchFace(Cut_1)
11952             """
11953             aList = self.MeasuOp.PatchFace(theShape)
11954             RaiseIfFailed("PatchFace", self.MeasuOp)
11955             return aList
11956
11957         ## Returns the string that describes if the shell is good for solid.
11958         #  This is a support method for MakeSolid.
11959         #
11960         #  @param theShell the shell to be checked.
11961         #  @return Returns a string that describes the shell validity for
11962         #          solid construction.
11963         @ManageTransactions("MeasuOp")
11964         def _IsGoodForSolid(self, theShell):
11965             """
11966             Returns the string that describes if the shell is good for solid.
11967             This is a support method for MakeSolid.
11968
11969             Parameter:
11970                 theShell the shell to be checked.
11971
11972             Returns:
11973                 Returns a string that describes the shell validity for
11974                 solid construction.
11975             """
11976             aDescr = self.MeasuOp.IsGoodForSolid(theShell)
11977             return aDescr
11978
11979         ## Obtain a canonical recognition interface.
11980         #  @return An instance of
11981         #          @ref canonicalrecognition.CanonicalRecognition "CanonicalRecognition" interface
11982         #
11983         #  @ref tui_3dsketcher_page "Example"
11984         def CanonicalRecognition (self):
11985             """
11986             Obtain a canonical recognition interface.
11987
11988             Example of usage:
11989                 cr = geompy.CanonicalRecognition()
11990                 cr.isLine(aLine, tolerance)
11991             """
11992             cr = CanonicalRecognition (self)
11993             return cr
11994
11995         # end of l2_measure
11996         ## @}
11997
11998         ## @addtogroup l2_import_export
11999         ## @{
12000
12001         ## Import a shape from the BREP, IGES, STEP or other file
12002         #  (depends on given format) with given name.
12003         #
12004         #  Note: this function is deprecated, it is kept for backward compatibility only
12005         #  Use Import<FormatName> instead, where <FormatName> is a name of desirable format to import.
12006         #
12007         #  @param theFileName The file, containing the shape.
12008         #  @param theFormatName Specify format for the file reading.
12009         #         Available formats can be obtained with InsertOp.ImportTranslators() method.
12010         #         If format 'IGES_SCALE' is used instead of 'IGES' or
12011         #            format 'STEP_SCALE' is used instead of 'STEP',
12012         #            length unit will be set to 'meter' and result model will be scaled.
12013         #  @param theName Object name; when specified, this parameter is used
12014         #         for result publication in the study. Otherwise, if automatic
12015         #         publication is switched on, default value is used for result name.
12016         #
12017         #  @return New GEOM.GEOM_Object, containing the imported shape.
12018         #          If material names are imported it returns the list of
12019         #          objects. The first one is the imported object followed by
12020         #          material groups.
12021         #  @note Auto publishing is allowed for the shape itself. Imported
12022         #        material groups are not automatically published.
12023         #
12024         #  @ref swig_Import_Export "Example"
12025         @ManageTransactions("InsertOp")
12026         def ImportFile(self, theFileName, theFormatName, theName=None):
12027             """
12028             Import a shape from the BREP, IGES, STEP or other file
12029             (depends on given format) with given name.
12030
12031             Note: this function is deprecated, it is kept for backward compatibility only
12032             Use Import<FormatName> instead, where <FormatName> is a name of desirable format to import.
12033
12034             Parameters: 
12035                 theFileName The file, containing the shape.
12036                 theFormatName Specify format for the file reading.
12037                     Available formats can be obtained with geompy.InsertOp.ImportTranslators() method.
12038                     If format 'IGES_SCALE' is used instead of 'IGES' or
12039                        format 'STEP_SCALE' is used instead of 'STEP',
12040                        length unit will be set to 'meter' and result model will be scaled.
12041                 theName Object name; when specified, this parameter is used
12042                         for result publication in the study. Otherwise, if automatic
12043                         publication is switched on, default value is used for result name.
12044
12045             Returns:
12046                 New GEOM.GEOM_Object, containing the imported shape.
12047                 If material names are imported it returns the list of
12048                 objects. The first one is the imported object followed by
12049                 material groups.
12050             Note:
12051                 Auto publishing is allowed for the shape itself. Imported
12052                 material groups are not automatically published.
12053             """
12054             # Example: see GEOM_TestOthers.py
12055             print("""
12056             WARNING: Function ImportFile is deprecated, use Import<FormatName> instead,
12057             where <FormatName> is a name of desirable format for importing.
12058             """)
12059             aListObj = self.InsertOp.ImportFile(theFileName, theFormatName)
12060             RaiseIfFailed("ImportFile", self.InsertOp)
12061             aNbObj = len(aListObj)
12062             if aNbObj > 0:
12063                 self._autoPublish(aListObj[0], theName, "imported")
12064             if aNbObj == 1:
12065                 return aListObj[0]
12066             return aListObj
12067
12068         ## Deprecated analog of ImportFile()
12069         def Import(self, theFileName, theFormatName, theName=None):
12070             """
12071             Deprecated analog of geompy.ImportFile, kept for backward compatibility only.
12072             """
12073             # note: auto-publishing is done in self.ImportFile()
12074             return self.ImportFile(theFileName, theFormatName, theName)
12075
12076         ## Read a shape from the binary stream, containing its bounding representation (BRep).
12077         #
12078         #  @note As the byte-stream representing the shape data can be quite large, this method
12079         #  is not automatically dumped to the Python script with the DumpStudy functionality;
12080         #  so please use this method carefully, only for strong reasons.
12081         #  
12082         #  @note GEOM.GEOM_Object.GetShapeStream() method can be used to obtain the shape's
12083         #  data stream.
12084         #
12085         #  @param theStream The BRep binary stream.
12086         #  @param theName Object name; when specified, this parameter is used
12087         #         for result publication in the study. Otherwise, if automatic
12088         #         publication is switched on, default value is used for result name.
12089         #
12090         #  @return New GEOM_Object, containing the shape, read from theStream.
12091         #
12092         #  @ref swig_Import_Export "Example"
12093         @ManageTransactions("InsertOp")
12094         def RestoreShape (self, theStream, theName=None):
12095             """
12096             Read a shape from the binary stream, containing its bounding representation (BRep).
12097
12098             Note:
12099                 shape.GetShapeStream() method can be used to obtain the shape's BRep stream.
12100
12101             Parameters:
12102                 theStream The BRep binary stream.
12103                 theName Object name; when specified, this parameter is used
12104                         for result publication in the study. Otherwise, if automatic
12105                         publication is switched on, default value is used for result name.
12106
12107             Returns:
12108                 New GEOM_Object, containing the shape, read from theStream.
12109             """
12110             # Example: see GEOM_TestOthers.py
12111             if not theStream:
12112                 # this is the workaround to ignore invalid case when data stream is empty
12113                 if int(os.getenv("GEOM_IGNORE_RESTORE_SHAPE", "0")) > 0:
12114                     print("WARNING: Result of RestoreShape is a NULL shape!")
12115                     return None
12116             anObj = self.InsertOp.RestoreShape(theStream)
12117             RaiseIfFailed("RestoreShape", self.InsertOp)
12118             self._autoPublish(anObj, theName, "restored")
12119             return anObj
12120
12121         ## Export the given shape into a file with given name.
12122         #
12123         #  Note: this function is deprecated, it is kept for backward compatibility only
12124         #  Use Export<FormatName> instead, where <FormatName> is a name of desirable format to export.
12125         #
12126         #  @param theObject Shape to be stored in the file.
12127         #  @param theFileName Name of the file to store the given shape in.
12128         #  @param theFormatName Specify format for the shape storage.
12129         #         Available formats can be obtained with
12130         #         geompy.InsertOp.ExportTranslators()[0] method.
12131         #
12132         #  @ref swig_Import_Export "Example"
12133         @ManageTransactions("InsertOp")
12134         def Export(self, theObject, theFileName, theFormatName):
12135             """
12136             Export the given shape into a file with given name.
12137
12138             Note: this function is deprecated, it is kept for backward compatibility only
12139             Use Export<FormatName> instead, where <FormatName> is a name of desirable format to export.
12140             
12141             Parameters: 
12142                 theObject Shape to be stored in the file.
12143                 theFileName Name of the file to store the given shape in.
12144                 theFormatName Specify format for the shape storage.
12145                               Available formats can be obtained with
12146                               geompy.InsertOp.ExportTranslators()[0] method.
12147             """
12148             # Example: see GEOM_TestOthers.py
12149             print("""
12150             WARNING: Function Export is deprecated, use Export<FormatName> instead,
12151             where <FormatName> is a name of desirable format for exporting.
12152             """)
12153             self.InsertOp.Export(theObject, theFileName, theFormatName)
12154             if self.InsertOp.IsDone() == 0:
12155                 raise RuntimeError("Export : " + self.InsertOp.GetErrorCode())
12156                 pass
12157             pass
12158
12159         # end of l2_import_export
12160         ## @}
12161
12162         ## @addtogroup l3_blocks
12163         ## @{
12164
12165         ## Create a quadrangle face from four edges. Order of Edges is not
12166         #  important. It is not necessary that edges share the same vertex.
12167         #  @param E1,E2,E3,E4 Edges for the face bound.
12168         #  @param theName Object name; when specified, this parameter is used
12169         #         for result publication in the study. Otherwise, if automatic
12170         #         publication is switched on, default value is used for result name.
12171         #
12172         #  @return New GEOM.GEOM_Object, containing the created face.
12173         #
12174         #  @ref tui_building_by_blocks_page "Example"
12175         @ManageTransactions("BlocksOp")
12176         def MakeQuad(self, E1, E2, E3, E4, theName=None):
12177             """
12178             Create a quadrangle face from four edges. Order of Edges is not
12179             important. It is not necessary that edges share the same vertex.
12180
12181             Parameters:
12182                 E1,E2,E3,E4 Edges for the face bound.
12183                 theName Object name; when specified, this parameter is used
12184                         for result publication in the study. Otherwise, if automatic
12185                         publication is switched on, default value is used for result name.
12186
12187             Returns:
12188                 New GEOM.GEOM_Object, containing the created face.
12189
12190             Example of usage:
12191                 qface1 = geompy.MakeQuad(edge1, edge2, edge3, edge4)
12192             """
12193             # Example: see GEOM_Spanner.py
12194             anObj = self.BlocksOp.MakeQuad(E1, E2, E3, E4)
12195             RaiseIfFailed("MakeQuad", self.BlocksOp)
12196             self._autoPublish(anObj, theName, "quad")
12197             return anObj
12198
12199         ## Create a quadrangle face on two edges.
12200         #  The missing edges will be built by creating the shortest ones.
12201         #  @param E1,E2 Two opposite edges for the face.
12202         #  @param theName Object name; when specified, this parameter is used
12203         #         for result publication in the study. Otherwise, if automatic
12204         #         publication is switched on, default value is used for result name.
12205         #
12206         #  @return New GEOM.GEOM_Object, containing the created face.
12207         #
12208         #  @ref tui_building_by_blocks_page "Example"
12209         @ManageTransactions("BlocksOp")
12210         def MakeQuad2Edges(self, E1, E2, theName=None):
12211             """
12212             Create a quadrangle face on two edges.
12213             The missing edges will be built by creating the shortest ones.
12214
12215             Parameters:
12216                 E1,E2 Two opposite edges for the face.
12217                 theName Object name; when specified, this parameter is used
12218                         for result publication in the study. Otherwise, if automatic
12219                         publication is switched on, default value is used for result name.
12220
12221             Returns:
12222                 New GEOM.GEOM_Object, containing the created face.
12223
12224             Example of usage:
12225                 # create vertices
12226                 p1 = geompy.MakeVertex(  0.,   0.,   0.)
12227                 p2 = geompy.MakeVertex(150.,  30.,   0.)
12228                 p3 = geompy.MakeVertex(  0., 120.,  50.)
12229                 p4 = geompy.MakeVertex(  0.,  40.,  70.)
12230                 # create edges
12231                 edge1 = geompy.MakeEdge(p1, p2)
12232                 edge2 = geompy.MakeEdge(p3, p4)
12233                 # create a quadrangle face from two edges
12234                 qface2 = geompy.MakeQuad2Edges(edge1, edge2)
12235             """
12236             # Example: see GEOM_Spanner.py
12237             anObj = self.BlocksOp.MakeQuad2Edges(E1, E2)
12238             RaiseIfFailed("MakeQuad2Edges", self.BlocksOp)
12239             self._autoPublish(anObj, theName, "quad")
12240             return anObj
12241
12242         ## Create a quadrangle face with specified corners.
12243         #  The missing edges will be built by creating the shortest ones.
12244         #  @param V1,V2,V3,V4 Corner vertices for the face.
12245         #  @param theName Object name; when specified, this parameter is used
12246         #         for result publication in the study. Otherwise, if automatic
12247         #         publication is switched on, default value is used for result name.
12248         #
12249         #  @return New GEOM.GEOM_Object, containing the created face.
12250         #
12251         #  @ref tui_building_by_blocks_page "Example 1"
12252         #  \n @ref swig_MakeQuad4Vertices "Example 2"
12253         @ManageTransactions("BlocksOp")
12254         def MakeQuad4Vertices(self, V1, V2, V3, V4, theName=None):
12255             """
12256             Create a quadrangle face with specified corners.
12257             The missing edges will be built by creating the shortest ones.
12258
12259             Parameters:
12260                 V1,V2,V3,V4 Corner vertices for the face.
12261                 theName Object name; when specified, this parameter is used
12262                         for result publication in the study. Otherwise, if automatic
12263                         publication is switched on, default value is used for result name.
12264
12265             Returns:
12266                 New GEOM.GEOM_Object, containing the created face.
12267
12268             Example of usage:
12269                 # create vertices
12270                 p1 = geompy.MakeVertex(  0.,   0.,   0.)
12271                 p2 = geompy.MakeVertex(150.,  30.,   0.)
12272                 p3 = geompy.MakeVertex(  0., 120.,  50.)
12273                 p4 = geompy.MakeVertex(  0.,  40.,  70.)
12274                 # create a quadrangle from four points in its corners
12275                 qface3 = geompy.MakeQuad4Vertices(p1, p2, p3, p4)
12276             """
12277             # Example: see GEOM_Spanner.py
12278             anObj = self.BlocksOp.MakeQuad4Vertices(V1, V2, V3, V4)
12279             RaiseIfFailed("MakeQuad4Vertices", self.BlocksOp)
12280             self._autoPublish(anObj, theName, "quad")
12281             return anObj
12282
12283         ## Create a hexahedral solid, bounded by the six given faces. Order of
12284         #  faces is not important. It is not necessary that Faces share the same edge.
12285         #  @param F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
12286         #  @param theName Object name; when specified, this parameter is used
12287         #         for result publication in the study. Otherwise, if automatic
12288         #         publication is switched on, default value is used for result name.
12289         #
12290         #  @return New GEOM.GEOM_Object, containing the created solid.
12291         #
12292         #  @ref tui_building_by_blocks_page "Example 1"
12293         #  \n @ref swig_MakeHexa "Example 2"
12294         @ManageTransactions("BlocksOp")
12295         def MakeHexa(self, F1, F2, F3, F4, F5, F6, theName=None):
12296             """
12297             Create a hexahedral solid, bounded by the six given faces. Order of
12298             faces is not important. It is not necessary that Faces share the same edge.
12299
12300             Parameters:
12301                 F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
12302                 theName Object name; when specified, this parameter is used
12303                         for result publication in the study. Otherwise, if automatic
12304                         publication is switched on, default value is used for result name.
12305
12306             Returns:
12307                 New GEOM.GEOM_Object, containing the created solid.
12308
12309             Example of usage:
12310                 solid = geompy.MakeHexa(qface1, qface2, qface3, qface4, qface5, qface6)
12311             """
12312             # Example: see GEOM_Spanner.py
12313             anObj = self.BlocksOp.MakeHexa(F1, F2, F3, F4, F5, F6)
12314             RaiseIfFailed("MakeHexa", self.BlocksOp)
12315             self._autoPublish(anObj, theName, "hexa")
12316             return anObj
12317
12318         ## Create a hexahedral solid between two given faces.
12319         #  The missing faces will be built by creating the smallest ones.
12320         #  @param F1,F2 Two opposite faces for the hexahedral solid.
12321         #  @param theName Object name; when specified, this parameter is used
12322         #         for result publication in the study. Otherwise, if automatic
12323         #         publication is switched on, default value is used for result name.
12324         #
12325         #  @return New GEOM.GEOM_Object, containing the created solid.
12326         #
12327         #  @ref tui_building_by_blocks_page "Example 1"
12328         #  \n @ref swig_MakeHexa2Faces "Example 2"
12329         @ManageTransactions("BlocksOp")
12330         def MakeHexa2Faces(self, F1, F2, theName=None):
12331             """
12332             Create a hexahedral solid between two given faces.
12333             The missing faces will be built by creating the smallest ones.
12334
12335             Parameters:
12336                 F1,F2 Two opposite faces for the hexahedral solid.
12337                 theName Object name; when specified, this parameter is used
12338                         for result publication in the study. Otherwise, if automatic
12339                         publication is switched on, default value is used for result name.
12340
12341             Returns:
12342                 New GEOM.GEOM_Object, containing the created solid.
12343
12344             Example of usage:
12345                 solid1 = geompy.MakeHexa2Faces(qface1, qface2)
12346             """
12347             # Example: see GEOM_Spanner.py
12348             anObj = self.BlocksOp.MakeHexa2Faces(F1, F2)
12349             RaiseIfFailed("MakeHexa2Faces", self.BlocksOp)
12350             self._autoPublish(anObj, theName, "hexa")
12351             return anObj
12352
12353         # end of l3_blocks
12354         ## @}
12355
12356         ## @addtogroup l3_blocks_op
12357         ## @{
12358
12359         ## Get a vertex, found in the given shape by its coordinates.
12360         #  @param theShape Block or a compound of blocks.
12361         #  @param theX,theY,theZ Coordinates of the sought vertex.
12362         #  @param theEpsilon Maximum allowed distance between the resulting
12363         #                    vertex and point with the given coordinates.
12364         #  @param theName Object name; when specified, this parameter is used
12365         #         for result publication in the study. Otherwise, if automatic
12366         #         publication is switched on, default value is used for result name.
12367         #
12368         #  @return New GEOM.GEOM_Object, containing the found vertex.
12369         #
12370         #  @ref swig_GetPoint "Example"
12371         @ManageTransactions("BlocksOp")
12372         def GetPoint(self, theShape, theX, theY, theZ, theEpsilon, theName=None):
12373             """
12374             Get a vertex, found in the given shape by its coordinates.
12375
12376             Parameters:
12377                 theShape Block or a compound of blocks.
12378                 theX,theY,theZ Coordinates of the sought vertex.
12379                 theEpsilon Maximum allowed distance between the resulting
12380                            vertex and point with the given coordinates.
12381                 theName Object name; when specified, this parameter is used
12382                         for result publication in the study. Otherwise, if automatic
12383                         publication is switched on, default value is used for result name.
12384
12385             Returns:
12386                 New GEOM.GEOM_Object, containing the found vertex.
12387
12388             Example of usage:
12389                 pnt = geompy.GetPoint(shape, -50,  50,  50, 0.01)
12390             """
12391             # Example: see GEOM_TestOthers.py
12392             anObj = self.BlocksOp.GetPoint(theShape, theX, theY, theZ, theEpsilon)
12393             RaiseIfFailed("GetPoint", self.BlocksOp)
12394             self._autoPublish(anObj, theName, "vertex")
12395             return anObj
12396
12397         ## Find a vertex of the given shape, which has minimal distance to the given point.
12398         #  @param theShape Any shape.
12399         #  @param thePoint Point, close to the desired vertex.
12400         #  @param theName Object name; when specified, this parameter is used
12401         #         for result publication in the study. Otherwise, if automatic
12402         #         publication is switched on, default value is used for result name.
12403         #
12404         #  @return New GEOM.GEOM_Object, containing the found vertex.
12405         #
12406         #  @ref swig_GetVertexNearPoint "Example"
12407         @ManageTransactions("BlocksOp")
12408         def GetVertexNearPoint(self, theShape, thePoint, theName=None):
12409             """
12410             Find a vertex of the given shape, which has minimal distance to the given point.
12411
12412             Parameters:
12413                 theShape Any shape.
12414                 thePoint Point, close to the desired vertex.
12415                 theName Object name; when specified, this parameter is used
12416                         for result publication in the study. Otherwise, if automatic
12417                         publication is switched on, default value is used for result name.
12418
12419             Returns:
12420                 New GEOM.GEOM_Object, containing the found vertex.
12421
12422             Example of usage:
12423                 pmidle = geompy.MakeVertex(50, 0, 50)
12424                 edge1 = geompy.GetEdgeNearPoint(blocksComp, pmidle)
12425             """
12426             # Example: see GEOM_TestOthers.py
12427             anObj = self.BlocksOp.GetVertexNearPoint(theShape, thePoint)
12428             RaiseIfFailed("GetVertexNearPoint", self.BlocksOp)
12429             self._autoPublish(anObj, theName, "vertex")
12430             return anObj
12431
12432         ## Get an edge, found in the given shape by two given vertices.
12433         #  @param theShape Block or a compound of blocks.
12434         #  @param thePoint1,thePoint2 Points, close to the ends of the desired edge.
12435         #  @param theName Object name; when specified, this parameter is used
12436         #         for result publication in the study. Otherwise, if automatic
12437         #         publication is switched on, default value is used for result name.
12438         #
12439         #  @return New GEOM.GEOM_Object, containing the found edge.
12440         #
12441         #  @ref swig_GetEdge "Example"
12442         @ManageTransactions("BlocksOp")
12443         def GetEdge(self, theShape, thePoint1, thePoint2, theName=None):
12444             """
12445             Get an edge, found in the given shape by two given vertices.
12446
12447             Parameters:
12448                 theShape Block or a compound of blocks.
12449                 thePoint1,thePoint2 Points, close to the ends of the desired edge.
12450                 theName Object name; when specified, this parameter is used
12451                         for result publication in the study. Otherwise, if automatic
12452                         publication is switched on, default value is used for result name.
12453
12454             Returns:
12455                 New GEOM.GEOM_Object, containing the found edge.
12456             """
12457             # Example: see GEOM_Spanner.py
12458             anObj = self.BlocksOp.GetEdge(theShape, thePoint1, thePoint2)
12459             RaiseIfFailed("GetEdge", self.BlocksOp)
12460             self._autoPublish(anObj, theName, "edge")
12461             return anObj
12462
12463         ## Find an edge of the given shape, which has minimal distance to the given point.
12464         #  @param theShape Block or a compound of blocks.
12465         #  @param thePoint Point, close to the desired edge.
12466         #  @param theName Object name; when specified, this parameter is used
12467         #         for result publication in the study. Otherwise, if automatic
12468         #         publication is switched on, default value is used for result name.
12469         #
12470         #  @return New GEOM.GEOM_Object, containing the found edge.
12471         #
12472         #  @ref swig_GetEdgeNearPoint "Example"
12473         @ManageTransactions("BlocksOp")
12474         def GetEdgeNearPoint(self, theShape, thePoint, theName=None):
12475             """
12476             Find an edge of the given shape, which has minimal distance to the given point.
12477
12478             Parameters:
12479                 theShape Block or a compound of blocks.
12480                 thePoint Point, close to the desired edge.
12481                 theName Object name; when specified, this parameter is used
12482                         for result publication in the study. Otherwise, if automatic
12483                         publication is switched on, default value is used for result name.
12484
12485             Returns:
12486                 New GEOM.GEOM_Object, containing the found edge.
12487             """
12488             # Example: see GEOM_TestOthers.py
12489             anObj = self.BlocksOp.GetEdgeNearPoint(theShape, thePoint)
12490             RaiseIfFailed("GetEdgeNearPoint", self.BlocksOp)
12491             self._autoPublish(anObj, theName, "edge")
12492             return anObj
12493
12494         ## Returns a face, found in the given shape by four given corner vertices.
12495         #  @param theShape Block or a compound of blocks.
12496         #  @param thePoint1,thePoint2,thePoint3,thePoint4 Points, close to the corners of the desired face.
12497         #  @param theName Object name; when specified, this parameter is used
12498         #         for result publication in the study. Otherwise, if automatic
12499         #         publication is switched on, default value is used for result name.
12500         #
12501         #  @return New GEOM.GEOM_Object, containing the found face.
12502         #
12503         #  @ref swig_todo "Example"
12504         @ManageTransactions("BlocksOp")
12505         def GetFaceByPoints(self, theShape, thePoint1, thePoint2, thePoint3, thePoint4, theName=None):
12506             """
12507             Returns a face, found in the given shape by four given corner vertices.
12508
12509             Parameters:
12510                 theShape Block or a compound of blocks.
12511                 thePoint1,thePoint2,thePoint3,thePoint4 Points, close to the corners of the desired face.
12512                 theName Object name; when specified, this parameter is used
12513                         for result publication in the study. Otherwise, if automatic
12514                         publication is switched on, default value is used for result name.
12515
12516             Returns:
12517                 New GEOM.GEOM_Object, containing the found face.
12518             """
12519             # Example: see GEOM_Spanner.py
12520             anObj = self.BlocksOp.GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4)
12521             RaiseIfFailed("GetFaceByPoints", self.BlocksOp)
12522             self._autoPublish(anObj, theName, "face")
12523             return anObj
12524
12525         ## Get a face of block, found in the given shape by two given edges.
12526         #  @param theShape Block or a compound of blocks.
12527         #  @param theEdge1,theEdge2 Edges, close to the edges of the desired face.
12528         #  @param theName Object name; when specified, this parameter is used
12529         #         for result publication in the study. Otherwise, if automatic
12530         #         publication is switched on, default value is used for result name.
12531         #
12532         #  @return New GEOM.GEOM_Object, containing the found face.
12533         #
12534         #  @ref swig_todo "Example"
12535         @ManageTransactions("BlocksOp")
12536         def GetFaceByEdges(self, theShape, theEdge1, theEdge2, theName=None):
12537             """
12538             Get a face of block, found in the given shape by two given edges.
12539
12540             Parameters:
12541                 theShape Block or a compound of blocks.
12542                 theEdge1,theEdge2 Edges, close to the edges of the desired face.
12543                 theName Object name; when specified, this parameter is used
12544                         for result publication in the study. Otherwise, if automatic
12545                         publication is switched on, default value is used for result name.
12546
12547             Returns:
12548                 New GEOM.GEOM_Object, containing the found face.
12549             """
12550             # Example: see GEOM_Spanner.py
12551             anObj = self.BlocksOp.GetFaceByEdges(theShape, theEdge1, theEdge2)
12552             RaiseIfFailed("GetFaceByEdges", self.BlocksOp)
12553             self._autoPublish(anObj, theName, "face")
12554             return anObj
12555
12556         ## Find a face, opposite to the given one in the given block.
12557         #  @param theBlock Must be a hexahedral solid.
12558         #  @param theFace Face of \a theBlock, opposite to the desired face.
12559         #  @param theName Object name; when specified, this parameter is used
12560         #         for result publication in the study. Otherwise, if automatic
12561         #         publication is switched on, default value is used for result name.
12562         #
12563         #  @return New GEOM.GEOM_Object, containing the found face.
12564         #
12565         #  @ref swig_GetOppositeFace "Example"
12566         @ManageTransactions("BlocksOp")
12567         def GetOppositeFace(self, theBlock, theFace, theName=None):
12568             """
12569             Find a face, opposite to the given one in the given block.
12570
12571             Parameters:
12572                 theBlock Must be a hexahedral solid.
12573                 theFace Face of theBlock, opposite to the desired face.
12574                 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             Returns:
12579                 New GEOM.GEOM_Object, containing the found face.
12580             """
12581             # Example: see GEOM_Spanner.py
12582             anObj = self.BlocksOp.GetOppositeFace(theBlock, theFace)
12583             RaiseIfFailed("GetOppositeFace", self.BlocksOp)
12584             self._autoPublish(anObj, theName, "face")
12585             return anObj
12586
12587         ## Find a face of the given shape, which has minimal distance to the given point.
12588         #  @param theShape Block or a compound of blocks.
12589         #  @param thePoint Point, close to the desired face.
12590         #  @param theName Object name; when specified, this parameter is used
12591         #         for result publication in the study. Otherwise, if automatic
12592         #         publication is switched on, default value is used for result name.
12593         #
12594         #  @return New GEOM.GEOM_Object, containing the found face.
12595         #
12596         #  @ref swig_GetFaceNearPoint "Example"
12597         @ManageTransactions("BlocksOp")
12598         def GetFaceNearPoint(self, theShape, thePoint, theName=None):
12599             """
12600             Find a face of the given shape, which has minimal distance to the given point.
12601
12602             Parameters:
12603                 theShape Block or a compound of blocks.
12604                 thePoint Point, close to the desired face.
12605                 theName Object name; when specified, this parameter is used
12606                         for result publication in the study. Otherwise, if automatic
12607                         publication is switched on, default value is used for result name.
12608
12609             Returns:
12610                 New GEOM.GEOM_Object, containing the found face.
12611             """
12612             # Example: see GEOM_Spanner.py
12613             anObj = self.BlocksOp.GetFaceNearPoint(theShape, thePoint)
12614             RaiseIfFailed("GetFaceNearPoint", self.BlocksOp)
12615             self._autoPublish(anObj, theName, "face")
12616             return anObj
12617
12618         ## Find a face of block, whose outside normale has minimal angle with the given vector.
12619         #  @param theBlock Block or a compound of blocks.
12620         #  @param theVector Vector, close to the normale of the desired face.
12621         #  @param theName Object name; when specified, this parameter is used
12622         #         for result publication in the study. Otherwise, if automatic
12623         #         publication is switched on, default value is used for result name.
12624         #
12625         #  @return New GEOM.GEOM_Object, containing the found face.
12626         #
12627         #  @ref swig_todo "Example"
12628         @ManageTransactions("BlocksOp")
12629         def GetFaceByNormale(self, theBlock, theVector, theName=None):
12630             """
12631             Find a face of block, whose outside normale has minimal angle with the given vector.
12632
12633             Parameters:
12634                 theBlock Block or a compound of blocks.
12635                 theVector Vector, close to the normale of the desired face.
12636                 theName Object name; when specified, this parameter is used
12637                         for result publication in the study. Otherwise, if automatic
12638                         publication is switched on, default value is used for result name.
12639
12640             Returns:
12641                 New GEOM.GEOM_Object, containing the found face.
12642             """
12643             # Example: see GEOM_Spanner.py
12644             anObj = self.BlocksOp.GetFaceByNormale(theBlock, theVector)
12645             RaiseIfFailed("GetFaceByNormale", self.BlocksOp)
12646             self._autoPublish(anObj, theName, "face")
12647             return anObj
12648
12649         ## Find all sub-shapes of type \a theShapeType of the given shape,
12650         #  which have minimal distance to the given point.
12651         #  @param theShape Any shape.
12652         #  @param thePoint Point, close to the desired shape.
12653         #  @param theShapeType Defines what kind of sub-shapes is searched GEOM::shape_type
12654         #  @param theTolerance The tolerance for distances comparison. All shapes
12655         #                      with distances to the given point in interval
12656         #                      [minimal_distance, minimal_distance + theTolerance] will be gathered.
12657         #  @param theName Object name; when specified, this parameter is used
12658         #         for result publication in the study. Otherwise, if automatic
12659         #         publication is switched on, default value is used for result name.
12660         #
12661         #  @return New GEOM_Object, containing a group of all found shapes.
12662         #
12663         #  @ref swig_GetShapesNearPoint "Example"
12664         @ManageTransactions("BlocksOp")
12665         def GetShapesNearPoint(self, theShape, thePoint, theShapeType, theTolerance = 1e-07, theName=None):
12666             """
12667             Find all sub-shapes of type theShapeType of the given shape,
12668             which have minimal distance to the given point.
12669
12670             Parameters:
12671                 theShape Any shape.
12672                 thePoint Point, close to the desired shape.
12673                 theShapeType Defines what kind of sub-shapes is searched (see GEOM::shape_type)
12674                 theTolerance The tolerance for distances comparison. All shapes
12675                                 with distances to the given point in interval
12676                                 [minimal_distance, minimal_distance + theTolerance] will be gathered.
12677                 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             Returns:
12682                 New GEOM_Object, containing a group of all found shapes.
12683             """
12684             # Example: see GEOM_TestOthers.py
12685             anObj = self.BlocksOp.GetShapesNearPoint(theShape, thePoint, theShapeType, theTolerance)
12686             RaiseIfFailed("GetShapesNearPoint", self.BlocksOp)
12687             self._autoPublish(anObj, theName, "group")
12688             return anObj
12689
12690         # end of l3_blocks_op
12691         ## @}
12692
12693         ## @addtogroup l4_blocks_measure
12694         ## @{
12695
12696         ## Check, if the compound of blocks is given.
12697         #  To be considered as a compound of blocks, the
12698         #  given shape must satisfy the following conditions:
12699         #  - Each element of the compound should be a Block (6 faces).
12700         #  - Each face should be a quadrangle, i.e. it should have only 1 wire
12701         #       with 4 edges. If <VAR>theIsUseC1</VAR> is set to True and
12702         #       there are more than 4 edges in the only wire of a face,
12703         #       this face is considered to be quadrangle if it has 4 bounds
12704         #       (1 or more edge) of C1 continuity.
12705         #  - A connection between two Blocks should be an entire quadrangle face or an entire edge.
12706         #  - The compound should be connexe.
12707         #  - The glue between two quadrangle faces should be applied.
12708         #  @param theCompound The compound to check.
12709         #  @param theIsUseC1 Flag to check if there are 4 bounds on a face
12710         #         taking into account C1 continuity.
12711         #  @param theAngTolerance the angular tolerance to check if two neighbor
12712         #         edges are codirectional in the common vertex with this
12713         #         tolerance. This parameter is used only if
12714         #         <VAR>theIsUseC1</VAR> is set to True.
12715         #  @return TRUE, if the given shape is a compound of blocks.
12716         #  If theCompound is not valid, prints all discovered errors.
12717         #
12718         #  @ref tui_check_compound_of_blocks_page "Example 1"
12719         #  \n @ref swig_CheckCompoundOfBlocks "Example 2"
12720         @ManageTransactions("BlocksOp")
12721         def CheckCompoundOfBlocks(self,theCompound, theIsUseC1 = False,
12722                                   theAngTolerance = 1.e-12):
12723             """
12724             Check, if the compound of blocks is given.
12725             To be considered as a compound of blocks, the
12726             given shape must satisfy the following conditions:
12727             - Each element of the compound should be a Block (6 faces).
12728             - Each face should be a quadrangle, i.e. it should have only 1 wire
12729                  with 4 edges. If theIsUseC1 is set to True and
12730                  there are more than 4 edges in the only wire of a face,
12731                  this face is considered to be quadrangle if it has 4 bounds
12732                  (1 or more edge) of C1 continuity.
12733             - A connection between two Blocks should be an entire quadrangle face or an entire edge.
12734             - The compound should be connexe.
12735             - The glue between two quadrangle faces should be applied.
12736
12737             Parameters:
12738                 theCompound The compound to check.
12739                 theIsUseC1 Flag to check if there are 4 bounds on a face
12740                            taking into account C1 continuity.
12741                 theAngTolerance the angular tolerance to check if two neighbor
12742                            edges are codirectional in the common vertex with this
12743                            tolerance. This parameter is used only if
12744                            theIsUseC1 is set to True.
12745
12746             Returns:
12747                 TRUE, if the given shape is a compound of blocks.
12748                 If theCompound is not valid, prints all discovered errors.
12749             """
12750             # Example: see GEOM_Spanner.py
12751             aTolerance = -1.0
12752             if theIsUseC1:
12753                 aTolerance = theAngTolerance
12754             (IsValid, BCErrors) = self.BlocksOp.CheckCompoundOfBlocks(theCompound, aTolerance)
12755             RaiseIfFailed("CheckCompoundOfBlocks", self.BlocksOp)
12756             if IsValid == 0:
12757                 Descr = self.BlocksOp.PrintBCErrors(theCompound, BCErrors)
12758                 print(Descr)
12759             return IsValid
12760
12761         ## Retrieve all non blocks solids and faces from \a theShape.
12762         #  @param theShape The shape to explore.
12763         #  @param theIsUseC1 Flag to check if there are 4 bounds on a face
12764         #         taking into account C1 continuity.
12765         #  @param theAngTolerance the angular tolerance to check if two neighbor
12766         #         edges are codirectional in the common vertex with this
12767         #         tolerance. This parameter is used only if
12768         #         <VAR>theIsUseC1</VAR> is set to True.
12769         #  @param theName Object name; when specified, this parameter is used
12770         #         for result publication in the study. Otherwise, if automatic
12771         #         publication is switched on, default value is used for result name.
12772         #
12773         #  @return A tuple of two GEOM_Objects. The first object is a group of all
12774         #          non block solids (= not 6 faces, or with 6 faces, but with the
12775         #          presence of non-quadrangular faces). The second object is a
12776         #          group of all non quadrangular faces (= faces with more then
12777         #          1 wire or, if <VAR>theIsUseC1</VAR> is set to True, faces
12778         #          with 1 wire with not 4 edges that do not form 4 bounds of
12779         #          C1 continuity).
12780         #
12781         #  @ref tui_get_non_blocks_page "Example 1"
12782         #  \n @ref swig_GetNonBlocks "Example 2"
12783         @ManageTransactions("BlocksOp")
12784         def GetNonBlocks (self, theShape, theIsUseC1 = False,
12785                           theAngTolerance = 1.e-12, theName=None):
12786             """
12787             Retrieve all non blocks solids and faces from theShape.
12788
12789             Parameters:
12790                 theShape The shape to explore.
12791                 theIsUseC1 Flag to check if there are 4 bounds on a face
12792                            taking into account C1 continuity.
12793                 theAngTolerance the angular tolerance to check if two neighbor
12794                            edges are codirectional in the common vertex with this
12795                            tolerance. This parameter is used only if
12796                            theIsUseC1 is set to True.
12797                 theName Object name; when specified, this parameter is used
12798                         for result publication in the study. Otherwise, if automatic
12799                         publication is switched on, default value is used for result name.
12800
12801             Returns:
12802                 A tuple of two GEOM_Objects. The first object is a group of all
12803                 non block solids (= not 6 faces, or with 6 faces, but with the
12804                 presence of non-quadrangular faces). The second object is a
12805                 group of all non quadrangular faces (= faces with more then
12806                 1 wire or, if <VAR>theIsUseC1</VAR> is set to True, faces
12807                 with 1 wire with not 4 edges that do not form 4 bounds of
12808                 C1 continuity).
12809
12810             Usage:
12811                 (res_sols, res_faces) = geompy.GetNonBlocks(myShape1)
12812             """
12813             # Example: see GEOM_Spanner.py
12814             aTolerance = -1.0
12815             if theIsUseC1:
12816                 aTolerance = theAngTolerance
12817             aTuple = self.BlocksOp.GetNonBlocks(theShape, aTolerance)
12818             RaiseIfFailed("GetNonBlocks", self.BlocksOp)
12819             self._autoPublish(aTuple, theName, ("groupNonHexas", "groupNonQuads"))
12820             return aTuple
12821
12822         ## Remove all seam and degenerated edges from \a theShape.
12823         #  Unite faces and edges, sharing one surface. It means that
12824         #  this faces must have references to one C++ surface object (handle).
12825         #  @param theShape The compound or single solid to remove irregular edges from.
12826         #  @param doUnionFaces If True, then unite faces. If False (the default value),
12827         #         do not unite faces.
12828         #  @param theName Object name; when specified, this parameter is used
12829         #         for result publication in the study. Otherwise, if automatic
12830         #         publication is switched on, default value is used for result name.
12831         #
12832         #  @return Improved shape.
12833         #
12834         #  @ref swig_RemoveExtraEdges "Example"
12835         @ManageTransactions("BlocksOp")
12836         def RemoveExtraEdges(self, theShape, doUnionFaces=False, theName=None):
12837             """
12838             Remove all seam and degenerated edges from theShape.
12839             Unite faces and edges, sharing one surface. It means that
12840             this faces must have references to one C++ surface object (handle).
12841
12842             Parameters:
12843                 theShape The compound or single solid to remove irregular edges from.
12844                 doUnionFaces If True, then unite faces. If False (the default value),
12845                              do not unite faces.
12846                 theName Object name; when specified, this parameter is used
12847                         for result publication in the study. Otherwise, if automatic
12848                         publication is switched on, default value is used for result name.
12849
12850             Returns:
12851                 Improved shape.
12852             """
12853             # Example: see GEOM_TestOthers.py
12854             nbFacesOptimum = -1 # -1 means do not unite faces
12855             if doUnionFaces is True: nbFacesOptimum = 0 # 0 means unite faces
12856             anObj = self.BlocksOp.RemoveExtraEdges(theShape, nbFacesOptimum)
12857             RaiseIfFailed("RemoveExtraEdges", self.BlocksOp)
12858             self._autoPublish(anObj, theName, "removeExtraEdges")
12859             return anObj
12860
12861         ## Performs union faces of \a theShape
12862         #  Unite faces sharing one surface. It means that
12863         #  these faces must have references to one C++ surface object (handle).
12864         #  @param theShape The compound or single solid that contains faces
12865         #         to perform union.
12866         #  @param theName Object name; when specified, this parameter is used
12867         #         for result publication in the study. Otherwise, if automatic
12868         #         publication is switched on, default value is used for result name.
12869         #
12870         #  @return Improved shape.
12871         #
12872         #  @ref swig_UnionFaces "Example"
12873         @ManageTransactions("BlocksOp")
12874         def UnionFaces(self, theShape, theName=None):
12875             """
12876             Performs union faces of theShape.
12877             Unite faces sharing one surface. It means that
12878             these faces must have references to one C++ surface object (handle).
12879
12880             Parameters:
12881                 theShape The compound or single solid that contains faces
12882                          to perform union.
12883                 theName Object name; when specified, this parameter is used
12884                         for result publication in the study. Otherwise, if automatic
12885                         publication is switched on, default value is used for result name.
12886
12887             Returns:
12888                 Improved shape.
12889             """
12890             # Example: see GEOM_TestOthers.py
12891             anObj = self.BlocksOp.UnionFaces(theShape)
12892             RaiseIfFailed("UnionFaces", self.BlocksOp)
12893             self._autoPublish(anObj, theName, "unionFaces")
12894             return anObj
12895
12896         ## Check, if the given shape is a blocks compound.
12897         #  Fix all detected errors.
12898         #    \note Single block can be also fixed by this method.
12899         #  @param theShape The compound to check and improve.
12900         #  @param theName Object name; when specified, this parameter is used
12901         #         for result publication in the study. Otherwise, if automatic
12902         #         publication is switched on, default value is used for result name.
12903         #
12904         #  @return Improved compound.
12905         #
12906         #  @ref swig_CheckAndImprove "Example"
12907         @ManageTransactions("BlocksOp")
12908         def CheckAndImprove(self, theShape, theName=None):
12909             """
12910             Check, if the given shape is a blocks compound.
12911             Fix all detected errors.
12912
12913             Note:
12914                 Single block can be also fixed by this method.
12915
12916             Parameters:
12917                 theShape The compound to check and improve.
12918                 theName Object name; when specified, this parameter is used
12919                         for result publication in the study. Otherwise, if automatic
12920                         publication is switched on, default value is used for result name.
12921
12922             Returns:
12923                 Improved compound.
12924             """
12925             # Example: see GEOM_TestOthers.py
12926             anObj = self.BlocksOp.CheckAndImprove(theShape)
12927             RaiseIfFailed("CheckAndImprove", self.BlocksOp)
12928             self._autoPublish(anObj, theName, "improved")
12929             return anObj
12930
12931         # end of l4_blocks_measure
12932         ## @}
12933
12934         ## @addtogroup l3_blocks_op
12935         ## @{
12936
12937         ## Get all the blocks, contained in the given compound.
12938         #  @param theCompound The compound to explode.
12939         #  @param theMinNbFaces If solid has lower number of faces, it is not a block.
12940         #  @param theMaxNbFaces If solid has higher number of faces, it is not a block.
12941         #  @param theName Object name; when specified, this parameter is used
12942         #         for result publication in the study. Otherwise, if automatic
12943         #         publication is switched on, default value is used for result name.
12944         #
12945         #  @note If theMaxNbFaces = 0, the maximum number of faces is not restricted.
12946         #
12947         #  @return List of GEOM.GEOM_Object, containing the retrieved blocks.
12948         #
12949         #  @ref tui_explode_on_blocks "Example 1"
12950         #  \n @ref swig_MakeBlockExplode "Example 2"
12951         @ManageTransactions("BlocksOp")
12952         def MakeBlockExplode(self, theCompound, theMinNbFaces, theMaxNbFaces, theName=None):
12953             """
12954             Get all the blocks, contained in the given compound.
12955
12956             Parameters:
12957                 theCompound The compound to explode.
12958                 theMinNbFaces If solid has lower number of faces, it is not a block.
12959                 theMaxNbFaces If solid has higher number of faces, it is not a block.
12960                 theName Object name; when specified, this parameter is used
12961                         for result publication in the study. Otherwise, if automatic
12962                         publication is switched on, default value is used for result name.
12963
12964             Note:
12965                 If theMaxNbFaces = 0, the maximum number of faces is not restricted.
12966
12967             Returns:
12968                 List of GEOM.GEOM_Object, containing the retrieved blocks.
12969             """
12970             # Example: see GEOM_TestOthers.py
12971             theMinNbFaces,theMaxNbFaces,Parameters = ParseParameters(theMinNbFaces,theMaxNbFaces)
12972             aList = self.BlocksOp.ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces)
12973             RaiseIfFailed("ExplodeCompoundOfBlocks", self.BlocksOp)
12974             for anObj in aList:
12975                 anObj.SetParameters(Parameters)
12976                 pass
12977             self._autoPublish(aList, theName, "block")
12978             return aList
12979
12980         ## Find block, containing the given point inside its volume or on boundary.
12981         #  @param theCompound Compound, to find block in.
12982         #  @param thePoint Point, close to the desired block. If the point lays on
12983         #         boundary between some blocks, we return block with nearest center.
12984         #  @param theName Object name; when specified, this parameter is used
12985         #         for result publication in the study. Otherwise, if automatic
12986         #         publication is switched on, default value is used for result name.
12987         #
12988         #  @return New GEOM.GEOM_Object, containing the found block.
12989         #
12990         #  @ref swig_todo "Example"
12991         @ManageTransactions("BlocksOp")
12992         def GetBlockNearPoint(self, theCompound, thePoint, theName=None):
12993             """
12994             Find block, containing the given point inside its volume or on boundary.
12995
12996             Parameters:
12997                 theCompound Compound, to find block in.
12998                 thePoint Point, close to the desired block. If the point lays on
12999                          boundary between some blocks, we return block with nearest center.
13000                 theName Object name; when specified, this parameter is used
13001                         for result publication in the study. Otherwise, if automatic
13002                         publication is switched on, default value is used for result name.
13003
13004             Returns:
13005                 New GEOM.GEOM_Object, containing the found block.
13006             """
13007             # Example: see GEOM_Spanner.py
13008             anObj = self.BlocksOp.GetBlockNearPoint(theCompound, thePoint)
13009             RaiseIfFailed("GetBlockNearPoint", self.BlocksOp)
13010             self._autoPublish(anObj, theName, "block")
13011             return anObj
13012
13013         ## Find block, containing all the elements, passed as the parts, or maximum quantity of them.
13014         #  @param theCompound Compound, to find block in.
13015         #  @param theParts List of faces and/or edges and/or vertices to be parts of the found block.
13016         #  @param theName Object name; when specified, this parameter is used
13017         #         for result publication in the study. Otherwise, if automatic
13018         #         publication is switched on, default value is used for result name.
13019         #
13020         #  @return New GEOM.GEOM_Object, containing the found block.
13021         #
13022         #  @ref swig_GetBlockByParts "Example"
13023         @ManageTransactions("BlocksOp")
13024         def GetBlockByParts(self, theCompound, theParts, theName=None):
13025             """
13026              Find block, containing all the elements, passed as the parts, or maximum quantity of them.
13027
13028              Parameters:
13029                 theCompound Compound, to find block in.
13030                 theParts List of faces and/or edges and/or vertices to be parts of the found block.
13031                 theName Object name; when specified, this parameter is used
13032                         for result publication in the study. Otherwise, if automatic
13033                         publication is switched on, default value is used for result name.
13034
13035             Returns:
13036                 New GEOM_Object, containing the found block.
13037             """
13038             # Example: see GEOM_TestOthers.py
13039             anObj = self.BlocksOp.GetBlockByParts(theCompound, theParts)
13040             RaiseIfFailed("GetBlockByParts", self.BlocksOp)
13041             self._autoPublish(anObj, theName, "block")
13042             return anObj
13043
13044         ## Return all blocks, containing all the elements, passed as the parts.
13045         #  @param theCompound Compound, to find blocks in.
13046         #  @param theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
13047         #  @param theName Object name; when specified, this parameter is used
13048         #         for result publication in the study. Otherwise, if automatic
13049         #         publication is switched on, default value is used for result name.
13050         #
13051         #  @return List of GEOM.GEOM_Object, containing the found blocks.
13052         #
13053         #  @ref swig_todo "Example"
13054         @ManageTransactions("BlocksOp")
13055         def GetBlocksByParts(self, theCompound, theParts, theName=None):
13056             """
13057             Return all blocks, containing all the elements, passed as the parts.
13058
13059             Parameters:
13060                 theCompound Compound, to find blocks in.
13061                 theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
13062                 theName Object name; when specified, this parameter is used
13063                         for result publication in the study. Otherwise, if automatic
13064                         publication is switched on, default value is used for result name.
13065
13066             Returns:
13067                 List of GEOM.GEOM_Object, containing the found blocks.
13068             """
13069             # Example: see GEOM_Spanner.py
13070             aList = self.BlocksOp.GetBlocksByParts(theCompound, theParts)
13071             RaiseIfFailed("GetBlocksByParts", self.BlocksOp)
13072             self._autoPublish(aList, theName, "block")
13073             return aList
13074
13075         ## Multi-transformate block and glue the result.
13076         #  Transformation is defined so, as to superpose direction faces.
13077         #  @param Block Hexahedral solid to be multi-transformed.
13078         #  @param DirFace1 ID of First direction face.
13079         #  @param DirFace2 ID of Second direction face.
13080         #  @param NbTimes Quantity of transformations to be done.
13081         #  @param theName Object name; when specified, this parameter is used
13082         #         for result publication in the study. Otherwise, if automatic
13083         #         publication is switched on, default value is used for result name.
13084         #
13085         #  @note Unique ID of sub-shape can be obtained, using method GetSubShapeID().
13086         #
13087         #  @return New GEOM.GEOM_Object, containing the result shape.
13088         #
13089         #  @ref tui_multi_transformation "Example"
13090         @ManageTransactions("BlocksOp")
13091         def MakeMultiTransformation1D(self, Block, DirFace1, DirFace2, NbTimes, theName=None):
13092             """
13093             Multi-transformate block and glue the result.
13094             Transformation is defined so, as to superpose direction faces.
13095
13096             Parameters:
13097                 Block Hexahedral solid to be multi-transformed.
13098                 DirFace1 ID of First direction face.
13099                 DirFace2 ID of Second direction face.
13100                 NbTimes Quantity of transformations to be done.
13101                 theName Object name; when specified, this parameter is used
13102                         for result publication in the study. Otherwise, if automatic
13103                         publication is switched on, default value is used for result name.
13104
13105             Note:
13106                 Unique ID of sub-shape can be obtained, using method GetSubShapeID().
13107
13108             Returns:
13109                 New GEOM.GEOM_Object, containing the result shape.
13110             """
13111             # Example: see GEOM_Spanner.py
13112             DirFace1,DirFace2,NbTimes,Parameters = ParseParameters(DirFace1,DirFace2,NbTimes)
13113             anObj = self.BlocksOp.MakeMultiTransformation1D(Block, DirFace1, DirFace2, NbTimes)
13114             RaiseIfFailed("MakeMultiTransformation1D", self.BlocksOp)
13115             anObj.SetParameters(Parameters)
13116             self._autoPublish(anObj, theName, "transformed")
13117             return anObj
13118
13119         ## Multi-transformate block and glue the result.
13120         #  @param Block Hexahedral solid to be multi-transformed.
13121         #  @param DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
13122         #  @param DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
13123         #  @param NbTimesU,NbTimesV Quantity of transformations to be done.
13124         #  @param theName Object name; when specified, this parameter is used
13125         #         for result publication in the study. Otherwise, if automatic
13126         #         publication is switched on, default value is used for result name.
13127         #
13128         #  @return New GEOM.GEOM_Object, containing the result shape.
13129         #
13130         #  @ref tui_multi_transformation "Example"
13131         @ManageTransactions("BlocksOp")
13132         def MakeMultiTransformation2D(self, Block, DirFace1U, DirFace2U, NbTimesU,
13133                                       DirFace1V, DirFace2V, NbTimesV, theName=None):
13134             """
13135             Multi-transformate block and glue the result.
13136
13137             Parameters:
13138                 Block Hexahedral solid to be multi-transformed.
13139                 DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
13140                 DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
13141                 NbTimesU,NbTimesV Quantity of transformations to be done.
13142                 theName Object name; when specified, this parameter is used
13143                         for result publication in the study. Otherwise, if automatic
13144                         publication is switched on, default value is used for result name.
13145
13146             Returns:
13147                 New GEOM.GEOM_Object, containing the result shape.
13148             """
13149             # Example: see GEOM_Spanner.py
13150             DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV,Parameters = ParseParameters(
13151               DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV)
13152             anObj = self.BlocksOp.MakeMultiTransformation2D(Block, DirFace1U, DirFace2U, NbTimesU,
13153                                                             DirFace1V, DirFace2V, NbTimesV)
13154             RaiseIfFailed("MakeMultiTransformation2D", self.BlocksOp)
13155             anObj.SetParameters(Parameters)
13156             self._autoPublish(anObj, theName, "transformed")
13157             return anObj
13158
13159         ## Build all possible propagation groups.
13160         #  Propagation group is a set of all edges, opposite to one (main)
13161         #  edge of this group directly or through other opposite edges.
13162         #  Notion of Opposite Edge make sense only on quadrangle face.
13163         #  @param theShape Shape to build propagation groups on.
13164         #  @param theName Object name; when specified, this parameter is used
13165         #         for result publication in the study. Otherwise, if automatic
13166         #         publication is switched on, default value is used for result name.
13167         #
13168         #  @return List of GEOM.GEOM_Object, each of them is a propagation group.
13169         #
13170         #  @ref swig_Propagate "Example"
13171         @ManageTransactions("BlocksOp")
13172         def Propagate(self, theShape, theName=None):
13173             """
13174             Build all possible propagation groups.
13175             Propagation group is a set of all edges, opposite to one (main)
13176             edge of this group directly or through other opposite edges.
13177             Notion of Opposite Edge make sense only on quadrangle face.
13178
13179             Parameters:
13180                 theShape Shape to build propagation groups on.
13181                 theName Object name; when specified, this parameter is used
13182                         for result publication in the study. Otherwise, if automatic
13183                         publication is switched on, default value is used for result name.
13184
13185             Returns:
13186                 List of GEOM.GEOM_Object, each of them is a propagation group.
13187             """
13188             # Example: see GEOM_TestOthers.py
13189             listChains = self.BlocksOp.Propagate(theShape)
13190             RaiseIfFailed("Propagate", self.BlocksOp)
13191             self._autoPublish(listChains, theName, "propagate")
13192             return listChains
13193
13194         # end of l3_blocks_op
13195         ## @}
13196
13197         ## @addtogroup l3_groups
13198         ## @{
13199
13200         ## Creates a new group which will store sub-shapes of theMainShape
13201         #  @param theMainShape is a GEOM object on which the group is selected
13202         #  @param theShapeType defines a shape type of the group (see GEOM::shape_type)
13203         #  @param theName Object name; when specified, this parameter is used
13204         #         for result publication in the study. Otherwise, if automatic
13205         #         publication is switched on, default value is used for result name.
13206         #
13207         #  @return a newly created GEOM group (GEOM.GEOM_Object)
13208         #
13209         #  @ref tui_working_with_groups_page "Example 1"
13210         #  \n @ref swig_CreateGroup "Example 2"
13211         @ManageTransactions("GroupOp")
13212         def CreateGroup(self, theMainShape, theShapeType, theName=None):
13213             """
13214             Creates a new group which will store sub-shapes of theMainShape
13215
13216             Parameters:
13217                theMainShape is a GEOM object on which the group is selected
13218                theShapeType defines a shape type of the group:"COMPOUND", "COMPSOLID",
13219                             "SOLID", "SHELL", "FACE", "WIRE", "EDGE", "VERTEX", "SHAPE".
13220                 theName Object name; when specified, this parameter is used
13221                         for result publication in the study. Otherwise, if automatic
13222                         publication is switched on, default value is used for result name.
13223
13224             Returns:
13225                a newly created GEOM group
13226
13227             Example of usage:
13228                 group = geompy.CreateGroup(Box, geompy.ShapeType["FACE"])
13229
13230             """
13231             # Example: see GEOM_TestOthers.py
13232             anObj = self.GroupOp.CreateGroup(theMainShape, theShapeType)
13233             RaiseIfFailed("CreateGroup", self.GroupOp)
13234             self._autoPublish(anObj, theName, "group")
13235             return anObj
13236
13237         ## Adds a sub-object with ID theSubShapeId to the group
13238         #  @param theGroup is a GEOM group to which the new sub-shape is added
13239         #  @param theSubShapeID is a sub-shape ID in the main object.
13240         #  \note Use method GetSubShapeID() to get an unique ID of the sub-shape
13241         #
13242         #  @ref tui_working_with_groups_page "Example"
13243         @ManageTransactions("GroupOp")
13244         def AddObject(self,theGroup, theSubShapeID):
13245             """
13246             Adds a sub-object with ID theSubShapeId to the group
13247
13248             Parameters:
13249                 theGroup       is a GEOM group to which the new sub-shape is added
13250                 theSubShapeID  is a sub-shape ID in the main object.
13251
13252             Note:
13253                 Use method GetSubShapeID() to get an unique ID of the sub-shape
13254             """
13255             # Example: see GEOM_TestOthers.py
13256             self.GroupOp.AddObject(theGroup, theSubShapeID)
13257             if self.GroupOp.GetErrorCode() != "PAL_ELEMENT_ALREADY_PRESENT":
13258                 RaiseIfFailed("AddObject", self.GroupOp)
13259                 pass
13260             pass
13261
13262         ## Removes a sub-object with ID \a theSubShapeId from the group
13263         #  @param theGroup is a GEOM group from which the new sub-shape is removed
13264         #  @param theSubShapeID is a sub-shape ID in the main object.
13265         #  \note Use method GetSubShapeID() to get an unique ID of the sub-shape
13266         #
13267         #  @ref tui_working_with_groups_page "Example"
13268         @ManageTransactions("GroupOp")
13269         def RemoveObject(self,theGroup, theSubShapeID):
13270             """
13271             Removes a sub-object with ID theSubShapeId from the group
13272
13273             Parameters:
13274                 theGroup is a GEOM group from which the new sub-shape is removed
13275                 theSubShapeID is a sub-shape ID in the main object.
13276
13277             Note:
13278                 Use method GetSubShapeID() to get an unique ID of the sub-shape
13279             """
13280             # Example: see GEOM_TestOthers.py
13281             self.GroupOp.RemoveObject(theGroup, theSubShapeID)
13282             RaiseIfFailed("RemoveObject", self.GroupOp)
13283             pass
13284
13285         ## Adds to the group all the given shapes. No errors, if some shapes are already included.
13286         #  @param theGroup is a GEOM group to which the new sub-shapes are added.
13287         #  @param theSubShapes is a list of sub-shapes to be added.
13288         #
13289         #  @ref tui_working_with_groups_page "Example"
13290         @ManageTransactions("GroupOp")
13291         def UnionList (self,theGroup, theSubShapes):
13292             """
13293             Adds to the group all the given shapes. No errors, if some shapes are already included.
13294
13295             Parameters:
13296                 theGroup is a GEOM group to which the new sub-shapes are added.
13297                 theSubShapes is a list of sub-shapes to be added.
13298             """
13299             # Example: see GEOM_TestOthers.py
13300             self.GroupOp.UnionList(theGroup, theSubShapes)
13301             RaiseIfFailed("UnionList", self.GroupOp)
13302             pass
13303
13304         ## Adds to the group all the given shapes. No errors, if some shapes are already included.
13305         #  @param theGroup is a GEOM group to which the new sub-shapes are added.
13306         #  @param theSubShapes is a list of indices of sub-shapes to be added.
13307         #
13308         #  @ref swig_UnionIDs "Example"
13309         @ManageTransactions("GroupOp")
13310         def UnionIDs(self,theGroup, theSubShapes):
13311             """
13312             Adds to the group all the given shapes. No errors, if some shapes are already included.
13313
13314             Parameters:
13315                 theGroup is a GEOM group to which the new sub-shapes are added.
13316                 theSubShapes is a list of indices of sub-shapes to be added.
13317             """
13318             # Example: see GEOM_TestOthers.py
13319             self.GroupOp.UnionIDs(theGroup, theSubShapes)
13320             RaiseIfFailed("UnionIDs", self.GroupOp)
13321             pass
13322
13323         ## Removes from the group all the given shapes. No errors, if some shapes are not included.
13324         #  @param theGroup is a GEOM group from which the sub-shapes are removed.
13325         #  @param theSubShapes is a list of sub-shapes to be removed.
13326         #
13327         #  @ref tui_working_with_groups_page "Example"
13328         @ManageTransactions("GroupOp")
13329         def DifferenceList (self,theGroup, theSubShapes):
13330             """
13331             Removes from the group all the given shapes. No errors, if some shapes are not included.
13332
13333             Parameters:
13334                 theGroup is a GEOM group from which the sub-shapes are removed.
13335                 theSubShapes is a list of sub-shapes to be removed.
13336             """
13337             # Example: see GEOM_TestOthers.py
13338             self.GroupOp.DifferenceList(theGroup, theSubShapes)
13339             RaiseIfFailed("DifferenceList", self.GroupOp)
13340             pass
13341
13342         ## Removes from the group all the given shapes. No errors, if some shapes are not included.
13343         #  @param theGroup is a GEOM group from which the sub-shapes are removed.
13344         #  @param theSubShapes is a list of indices of sub-shapes to be removed.
13345         #
13346         #  @ref swig_DifferenceIDs "Example"
13347         @ManageTransactions("GroupOp")
13348         def DifferenceIDs(self,theGroup, theSubShapes):
13349             """
13350             Removes from the group all the given shapes. No errors, if some shapes are not included.
13351
13352             Parameters:
13353                 theGroup is a GEOM group from which the sub-shapes are removed.
13354                 theSubShapes is a list of indices of sub-shapes to be removed.
13355             """
13356             # Example: see GEOM_TestOthers.py
13357             self.GroupOp.DifferenceIDs(theGroup, theSubShapes)
13358             RaiseIfFailed("DifferenceIDs", self.GroupOp)
13359             pass
13360
13361         ## Union of two groups.
13362         #  New group is created. It will contain all entities
13363         #  which are present in groups theGroup1 and theGroup2.
13364         #  @param theGroup1, theGroup2 are the initial GEOM groups
13365         #                              to create the united group from.
13366         #  @param theName Object name; when specified, this parameter is used
13367         #         for result publication in the study. Otherwise, if automatic
13368         #         publication is switched on, default value is used for result name.
13369         #
13370         #  @return a newly created GEOM group.
13371         #
13372         #  @ref tui_union_groups_anchor "Example"
13373         @ManageTransactions("GroupOp")
13374         def UnionGroups (self, theGroup1, theGroup2, theName=None):
13375             """
13376             Union of two groups.
13377             New group is created. It will contain all entities
13378             which are present in groups theGroup1 and theGroup2.
13379
13380             Parameters:
13381                 theGroup1, theGroup2 are the initial GEOM groups
13382                                      to create the united group from.
13383                 theName Object name; when specified, this parameter is used
13384                         for result publication in the study. Otherwise, if automatic
13385                         publication is switched on, default value is used for result name.
13386
13387             Returns:
13388                 a newly created GEOM group.
13389             """
13390             # Example: see GEOM_TestOthers.py
13391             aGroup = self.GroupOp.UnionGroups(theGroup1, theGroup2)
13392             RaiseIfFailed("UnionGroups", self.GroupOp)
13393             self._autoPublish(aGroup, theName, "group")
13394             return aGroup
13395
13396         ## Intersection of two groups.
13397         #  New group is created. It will contain only those entities
13398         #  which are present in both groups theGroup1 and theGroup2.
13399         #  @param theGroup1, theGroup2 are the initial GEOM groups to get common part of.
13400         #  @param theName Object name; when specified, this parameter is used
13401         #         for result publication in the study. Otherwise, if automatic
13402         #         publication is switched on, default value is used for result name.
13403         #
13404         #  @return a newly created GEOM group.
13405         #
13406         #  @ref tui_intersect_groups_anchor "Example"
13407         @ManageTransactions("GroupOp")
13408         def IntersectGroups (self, theGroup1, theGroup2, theName=None):
13409             """
13410             Intersection of two groups.
13411             New group is created. It will contain only those entities
13412             which are present in both groups theGroup1 and theGroup2.
13413
13414             Parameters:
13415                 theGroup1, theGroup2 are the initial GEOM groups to get common part of.
13416                 theName Object name; when specified, this parameter is used
13417                         for result publication in the study. Otherwise, if automatic
13418                         publication is switched on, default value is used for result name.
13419
13420             Returns:
13421                 a newly created GEOM group.
13422             """
13423             # Example: see GEOM_TestOthers.py
13424             aGroup = self.GroupOp.IntersectGroups(theGroup1, theGroup2)
13425             RaiseIfFailed("IntersectGroups", self.GroupOp)
13426             self._autoPublish(aGroup, theName, "group")
13427             return aGroup
13428
13429         ## Cut of two groups.
13430         #  New group is created. It will contain entities which are
13431         #  present in group theGroup1 but are not present in group theGroup2.
13432         #  @param theGroup1 is a GEOM group to include elements of.
13433         #  @param theGroup2 is a GEOM group to exclude elements of.
13434         #  @param theName Object name; when specified, this parameter is used
13435         #         for result publication in the study. Otherwise, if automatic
13436         #         publication is switched on, default value is used for result name.
13437         #
13438         #  @return a newly created GEOM group.
13439         #
13440         #  @ref tui_cut_groups_anchor "Example"
13441         @ManageTransactions("GroupOp")
13442         def CutGroups (self, theGroup1, theGroup2, theName=None):
13443             """
13444             Cut of two groups.
13445             New group is created. It will contain entities which are
13446             present in group theGroup1 but are not present in group theGroup2.
13447
13448             Parameters:
13449                 theGroup1 is a GEOM group to include elements of.
13450                 theGroup2 is a GEOM group to exclude elements of.
13451                 theName Object name; when specified, this parameter is used
13452                         for result publication in the study. Otherwise, if automatic
13453                         publication is switched on, default value is used for result name.
13454
13455             Returns:
13456                 a newly created GEOM group.
13457             """
13458             # Example: see GEOM_TestOthers.py
13459             aGroup = self.GroupOp.CutGroups(theGroup1, theGroup2)
13460             RaiseIfFailed("CutGroups", self.GroupOp)
13461             self._autoPublish(aGroup, theName, "group")
13462             return aGroup
13463
13464         ## Union of list of groups.
13465         #  New group is created. It will contain all entities that are
13466         #  present in groups listed in theGList.
13467         #  @param theGList is a list of GEOM groups to create the united group from.
13468         #  @param theName Object name; when specified, this parameter is used
13469         #         for result publication in the study. Otherwise, if automatic
13470         #         publication is switched on, default value is used for result name.
13471         #
13472         #  @return a newly created GEOM group.
13473         #
13474         #  @ref tui_union_groups_anchor "Example"
13475         @ManageTransactions("GroupOp")
13476         def UnionListOfGroups (self, theGList, theName=None):
13477             """
13478             Union of list of groups.
13479             New group is created. It will contain all entities that are
13480             present in groups listed in theGList.
13481
13482             Parameters:
13483                 theGList is a list of GEOM groups to create the united group from.
13484                 theName Object name; when specified, this parameter is used
13485                         for result publication in the study. Otherwise, if automatic
13486                         publication is switched on, default value is used for result name.
13487
13488             Returns:
13489                 a newly created GEOM group.
13490             """
13491             # Example: see GEOM_TestOthers.py
13492             aGroup = self.GroupOp.UnionListOfGroups(theGList)
13493             RaiseIfFailed("UnionListOfGroups", self.GroupOp)
13494             self._autoPublish(aGroup, theName, "group")
13495             return aGroup
13496
13497         ## Cut of lists of groups.
13498         #  New group is created. It will contain only entities
13499         #  which are present in groups listed in theGList.
13500         #  @param theGList is a list of GEOM groups to include elements of.
13501         #  @param theName Object name; when specified, this parameter is used
13502         #         for result publication in the study. Otherwise, if automatic
13503         #         publication is switched on, default value is used for result name.
13504         #
13505         #  @return a newly created GEOM group.
13506         #
13507         #  @ref tui_intersect_groups_anchor "Example"
13508         @ManageTransactions("GroupOp")
13509         def IntersectListOfGroups (self, theGList, theName=None):
13510             """
13511             Cut of lists of groups.
13512             New group is created. It will contain only entities
13513             which are present in groups listed in theGList.
13514
13515             Parameters:
13516                 theGList is a list of GEOM groups to include elements of.
13517                 theName Object name; when specified, this parameter is used
13518                         for result publication in the study. Otherwise, if automatic
13519                         publication is switched on, default value is used for result name.
13520
13521             Returns:
13522                 a newly created GEOM group.
13523             """
13524             # Example: see GEOM_TestOthers.py
13525             aGroup = self.GroupOp.IntersectListOfGroups(theGList)
13526             RaiseIfFailed("IntersectListOfGroups", self.GroupOp)
13527             self._autoPublish(aGroup, theName, "group")
13528             return aGroup
13529
13530         ## Cut of lists of groups.
13531         #  New group is created. It will contain only entities
13532         #  which are present in groups listed in theGList1 but
13533         #  are not present in groups from theGList2.
13534         #  @param theGList1 is a list of GEOM groups to include elements of.
13535         #  @param theGList2 is a list of GEOM groups to exclude elements of.
13536         #  @param theName Object name; when specified, this parameter is used
13537         #         for result publication in the study. Otherwise, if automatic
13538         #         publication is switched on, default value is used for result name.
13539         #
13540         #  @return a newly created GEOM group.
13541         #
13542         #  @ref tui_cut_groups_anchor "Example"
13543         @ManageTransactions("GroupOp")
13544         def CutListOfGroups (self, theGList1, theGList2, theName=None):
13545             """
13546             Cut of lists of groups.
13547             New group is created. It will contain only entities
13548             which are present in groups listed in theGList1 but
13549             are not present in groups from theGList2.
13550
13551             Parameters:
13552                 theGList1 is a list of GEOM groups to include elements of.
13553                 theGList2 is a list of GEOM groups to exclude elements of.
13554                 theName Object name; when specified, this parameter is used
13555                         for result publication in the study. Otherwise, if automatic
13556                         publication is switched on, default value is used for result name.
13557
13558             Returns:
13559                 a newly created GEOM group.
13560             """
13561             # Example: see GEOM_TestOthers.py
13562             aGroup = self.GroupOp.CutListOfGroups(theGList1, theGList2)
13563             RaiseIfFailed("CutListOfGroups", self.GroupOp)
13564             self._autoPublish(aGroup, theName, "group")
13565             return aGroup
13566
13567         ## Returns a list of sub-objects ID stored in the group
13568         #  @param theGroup is a GEOM group for which a list of IDs is requested
13569         #
13570         #  @ref swig_GetObjectIDs "Example"
13571         @ManageTransactions("GroupOp")
13572         def GetObjectIDs(self,theGroup):
13573             """
13574             Returns a list of sub-objects ID stored in the group
13575
13576             Parameters:
13577                 theGroup is a GEOM group for which a list of IDs is requested
13578             """
13579             # Example: see GEOM_TestOthers.py
13580             ListIDs = self.GroupOp.GetObjects(theGroup)
13581             RaiseIfFailed("GetObjects", self.GroupOp)
13582             return ListIDs
13583
13584         ## Returns a type of sub-objects stored in the group
13585         #  @param theGroup is a GEOM group which type is returned.
13586         #
13587         #  @ref swig_GetType "Example"
13588         @ManageTransactions("GroupOp")
13589         def GetType(self,theGroup):
13590             """
13591             Returns a type of sub-objects stored in the group
13592
13593             Parameters:
13594                 theGroup is a GEOM group which type is returned.
13595             """
13596             # Example: see GEOM_TestOthers.py
13597             aType = self.GroupOp.GetType(theGroup)
13598             RaiseIfFailed("GetType", self.GroupOp)
13599             return aType
13600
13601         ## Convert a type of geom object from id to string value
13602         #  @param theId is a GEOM object type id.
13603         #  @return type of geom object (POINT, VECTOR, PLANE, LINE, TORUS, ... )
13604         #  @ref swig_GetType "Example"
13605         def ShapeIdToType(self, theId):
13606             """
13607             Convert a type of geom object from id to string value
13608
13609             Parameters:
13610                 theId is a GEOM object type id.
13611
13612             Returns:
13613                 type of geom object (POINT, VECTOR, PLANE, LINE, TORUS, ... )
13614             """
13615             if theId == 0:
13616                 return "COPY"
13617             if theId == 1:
13618                 return "IMPORT"
13619             if theId == 2:
13620                 return "POINT"
13621             if theId == 3:
13622                 return "VECTOR"
13623             if theId == 4:
13624                 return "PLANE"
13625             if theId == 5:
13626                 return "LINE"
13627             if theId == 6:
13628                 return "TORUS"
13629             if theId == 7:
13630                 return "BOX"
13631             if theId == 8:
13632                 return "CYLINDER"
13633             if theId == 9:
13634                 return "CONE"
13635             if theId == 10:
13636                 return "SPHERE"
13637             if theId == 11:
13638                 return "PRISM"
13639             if theId == 12:
13640                 return "REVOLUTION"
13641             if theId == 13:
13642                 return "BOOLEAN"
13643             if theId == 14:
13644                 return "PARTITION"
13645             if theId == 15:
13646                 return "POLYLINE"
13647             if theId == 16:
13648                 return "CIRCLE"
13649             if theId == 17:
13650                 return "SPLINE"
13651             if theId == 18:
13652                 return "ELLIPSE"
13653             if theId == 19:
13654                 return "CIRC_ARC"
13655             if theId == 20:
13656                 return "FILLET"
13657             if theId == 21:
13658                 return "CHAMFER"
13659             if theId == 22:
13660                 return "EDGE"
13661             if theId == 23:
13662                 return "WIRE"
13663             if theId == 24:
13664                 return "FACE"
13665             if theId == 25:
13666                 return "SHELL"
13667             if theId == 26:
13668                 return "SOLID"
13669             if theId == 27:
13670                 return "COMPOUND"
13671             if theId == 28:
13672                 return "SUBSHAPE"
13673             if theId == 29:
13674                 return "PIPE"
13675             if theId == 30:
13676                 return "ARCHIMEDE"
13677             if theId == 31:
13678                 return "FILLING"
13679             if theId == 32:
13680                 return "EXPLODE"
13681             if theId == 33:
13682                 return "GLUED"
13683             if theId == 34:
13684                 return "SKETCHER"
13685             if theId == 35:
13686                 return "CDG"
13687             if theId == 36:
13688                 return "FREE_BOUNDS"
13689             if theId == 37:
13690                 return "GROUP"
13691             if theId == 38:
13692                 return "BLOCK"
13693             if theId == 39:
13694                 return "MARKER"
13695             if theId == 40:
13696                 return "THRUSECTIONS"
13697             if theId == 41:
13698                 return "COMPOUNDFILTER"
13699             if theId == 42:
13700                 return "SHAPES_ON_SHAPE"
13701             if theId == 43:
13702                 return "ELLIPSE_ARC"
13703             if theId == 44:
13704                 return "3DSKETCHER"
13705             if theId == 45:
13706                 return "FILLET_2D"
13707             if theId == 46:
13708                 return "FILLET_1D"
13709             if theId == 201:
13710                 return "PIPETSHAPE"
13711             return "Shape Id not exist."
13712
13713         ## Returns a main shape associated with the group
13714         #  @param theGroup is a GEOM group for which a main shape object is requested
13715         #  @return a GEOM object which is a main shape for theGroup
13716         #
13717         #  @ref swig_GetMainShape "Example"
13718         @ManageTransactions("GroupOp")
13719         def GetMainShape(self,theGroup):
13720             """
13721             Returns a main shape associated with the group
13722
13723             Parameters:
13724                 theGroup is a GEOM group for which a main shape object is requested
13725
13726             Returns:
13727                 a GEOM object which is a main shape for theGroup
13728
13729             Example of usage: BoxCopy = geompy.GetMainShape(CreateGroup)
13730             """
13731             # Example: see GEOM_TestOthers.py
13732             anObj = self.GroupOp.GetMainShape(theGroup)
13733             RaiseIfFailed("GetMainShape", self.GroupOp)
13734             return anObj
13735
13736         ## Create group of edges of theShape, whose length is in range [min_length, max_length].
13737         #  If include_min/max == 0, edges with length == min/max_length will not be included in result.
13738         #  @param theShape given shape (see GEOM.GEOM_Object)
13739         #  @param min_length minimum length of edges of theShape
13740         #  @param max_length maximum length of edges of theShape
13741         #  @param include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13742         #  @param include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13743         #  @param theName Object name; when specified, this parameter is used
13744         #         for result publication in the study. Otherwise, if automatic
13745         #         publication is switched on, default value is used for result name.
13746         #
13747         #  @return a newly created GEOM group of edges
13748         #
13749         #  @@ref swig_todo "Example"
13750         def GetEdgesByLength (self, theShape, min_length, max_length, include_min = 1, include_max = 1, theName=None):
13751             """
13752             Create group of edges of theShape, whose length is in range [min_length, max_length].
13753             If include_min/max == 0, edges with length == min/max_length will not be included in result.
13754
13755             Parameters:
13756                 theShape given shape
13757                 min_length minimum length of edges of theShape
13758                 max_length maximum length of edges of theShape
13759                 include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13760                 include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13761                 theName Object name; when specified, this parameter is used
13762                         for result publication in the study. Otherwise, if automatic
13763                         publication is switched on, default value is used for result name.
13764
13765              Returns:
13766                 a newly created GEOM group of edges.
13767             """
13768             edges = self.SubShapeAll(theShape, self.ShapeType["EDGE"])
13769             edges_in_range = []
13770             for edge in edges:
13771                 Props = self.BasicProperties(edge)
13772                 if min_length <= Props[0] and Props[0] <= max_length:
13773                     if (not include_min) and (min_length == Props[0]):
13774                         skip = 1
13775                     else:
13776                         if (not include_max) and (Props[0] == max_length):
13777                             skip = 1
13778                         else:
13779                             edges_in_range.append(edge)
13780
13781             if len(edges_in_range) <= 0:
13782                 print("No edges found by given criteria")
13783                 return None
13784
13785             # note: auto-publishing is done in self.CreateGroup()
13786             group_edges = self.CreateGroup(theShape, self.ShapeType["EDGE"], theName)
13787             self.UnionList(group_edges, edges_in_range)
13788
13789             return group_edges
13790
13791         ## Create group of edges of selected shape, whose length is in range [min_length, max_length].
13792         #  If include_min/max == 0, edges with length == min/max_length will not be included in result.
13793         #  @param min_length minimum length of edges of selected shape
13794         #  @param max_length maximum length of edges of selected shape
13795         #  @param include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13796         #  @param include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13797         #  @return a newly created GEOM group of edges
13798         #  @ref swig_todo "Example"
13799         def SelectEdges (self, min_length, max_length, include_min = 1, include_max = 1):
13800             """
13801             Create group of edges of selected shape, whose length is in range [min_length, max_length].
13802             If include_min/max == 0, edges with length == min/max_length will not be included in result.
13803
13804             Parameters:
13805                 min_length minimum length of edges of selected shape
13806                 max_length maximum length of edges of selected shape
13807                 include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13808                 include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13809
13810              Returns:
13811                 a newly created GEOM group of edges.
13812             """
13813             nb_selected = sg.SelectedCount()
13814             if nb_selected < 1:
13815                 print("Select a shape before calling this function, please.")
13816                 return 0
13817             if nb_selected > 1:
13818                 print("Only one shape must be selected")
13819                 return 0
13820
13821             id_shape = sg.getSelected(0)
13822             shape = IDToObject( id_shape )
13823
13824             group_edges = self.GetEdgesByLength(shape, min_length, max_length, include_min, include_max)
13825
13826             left_str  = " < "
13827             right_str = " < "
13828             if include_min: left_str  = " <= "
13829             if include_max: right_str  = " <= "
13830
13831             self.addToStudyInFather(shape, group_edges, "Group of edges with " + repr(min_length)
13832                                     + left_str + "length" + right_str + repr(max_length))
13833
13834             sg.updateObjBrowser()
13835
13836             return group_edges
13837
13838         # end of l3_groups
13839         ## @}
13840
13841         #@@ insert new functions before this line @@ do not remove this line @@#
13842
13843         ## Create a copy of the given object
13844         #
13845         #  @param theOriginal geometry object for copy
13846         #  @param theName Object name; when specified, this parameter is used
13847         #         for result publication in the study. Otherwise, if automatic
13848         #         publication is switched on, default value is used for result name.
13849         #
13850         #  @return New GEOM_Object, containing the copied shape.
13851         #
13852         #  @ingroup l1_geomBuilder_auxiliary
13853         #  @ref swig_MakeCopy "Example"
13854         @ManageTransactions("InsertOp")
13855         def MakeCopy(self, theOriginal, theName=None):
13856             """
13857             Create a copy of the given object
13858
13859             Parameters:
13860                 theOriginal geometry object for copy
13861                 theName Object name; when specified, this parameter is used
13862                         for result publication in the study. Otherwise, if automatic
13863                         publication is switched on, default value is used for result name.
13864
13865             Returns:
13866                 New GEOM_Object, containing the copied shape.
13867
13868             Example of usage: Copy = geompy.MakeCopy(Box)
13869             """
13870             # Example: see GEOM_TestAll.py
13871             anObj = self.InsertOp.MakeCopy(theOriginal)
13872             RaiseIfFailed("MakeCopy", self.InsertOp)
13873             self._autoPublish(anObj, theName, "copy")
13874             return anObj
13875
13876         ## Add Path to load python scripts from
13877         #  @param Path a path to load python scripts from
13878         #  @ingroup l1_geomBuilder_auxiliary
13879         def addPath(self,Path):
13880             """
13881             Add Path to load python scripts from
13882
13883             Parameters:
13884                 Path a path to load python scripts from
13885             """
13886             if (sys.path.count(Path) < 1):
13887                 sys.path.append(Path)
13888                 pass
13889             pass
13890
13891         ## Load marker texture from the file
13892         #  @param Path a path to the texture file
13893         #  @return unique texture identifier
13894         #  @ingroup l1_geomBuilder_auxiliary
13895         @ManageTransactions("InsertOp")
13896         def LoadTexture(self, Path):
13897             """
13898             Load marker texture from the file
13899
13900             Parameters:
13901                 Path a path to the texture file
13902
13903             Returns:
13904                 unique texture identifier
13905             """
13906             # Example: see GEOM_TestAll.py
13907             ID = self.InsertOp.LoadTexture(Path)
13908             RaiseIfFailed("LoadTexture", self.InsertOp)
13909             return ID
13910
13911         ## Get internal name of the object based on its study entry
13912         #  @note This method does not provide an unique identifier of the geometry object.
13913         #  @note This is internal function of GEOM component, though it can be used outside it for
13914         #  appropriate reason (e.g. for identification of geometry object).
13915         #  @param obj geometry object
13916         #  @return unique object identifier
13917         #  @ingroup l1_geomBuilder_auxiliary
13918         def getObjectID(self, obj):
13919             """
13920             Get internal name of the object based on its study entry.
13921             Note: this method does not provide an unique identifier of the geometry object.
13922             It is an internal function of GEOM component, though it can be used outside GEOM for
13923             appropriate reason (e.g. for identification of geometry object).
13924
13925             Parameters:
13926                 obj geometry object
13927
13928             Returns:
13929                 unique object identifier
13930             """
13931             ID = ""
13932             entry = salome.ObjectToID(obj)
13933             if entry is not None:
13934                 lst = entry.split(":")
13935                 if len(lst) > 0:
13936                     ID = lst[-1] # -1 means last item in the list
13937                     return "GEOM_" + ID
13938             return ID
13939
13940
13941
13942         ## Add marker texture. @a Width and @a Height parameters
13943         #  specify width and height of the texture in pixels.
13944         #  If @a RowData is @c True, @a Texture parameter should represent texture data
13945         #  packed into the byte array. If @a RowData is @c False (default), @a Texture
13946         #  parameter should be unpacked string, in which '1' symbols represent opaque
13947         #  pixels and '0' represent transparent pixels of the texture bitmap.
13948         #
13949         #  @param Width texture width in pixels
13950         #  @param Height texture height in pixels
13951         #  @param Texture texture data
13952         #  @param RowData if @c True, @a Texture data are packed in the byte stream
13953         #  @return unique texture identifier
13954         #  @ingroup l1_geomBuilder_auxiliary
13955         @ManageTransactions("InsertOp")
13956         def AddTexture(self, Width, Height, Texture, RowData=False):
13957             """
13958             Add marker texture. Width and Height parameters
13959             specify width and height of the texture in pixels.
13960             If RowData is True, Texture parameter should represent texture data
13961             packed into the byte array. If RowData is False (default), Texture
13962             parameter should be unpacked string, in which '1' symbols represent opaque
13963             pixels and '0' represent transparent pixels of the texture bitmap.
13964
13965             Parameters:
13966                 Width texture width in pixels
13967                 Height texture height in pixels
13968                 Texture texture data
13969                 RowData if True, Texture data are packed in the byte stream
13970
13971             Returns:
13972                 return unique texture identifier
13973             """
13974             if not RowData: Texture = PackData(Texture)
13975             ID = self.InsertOp.AddTexture(Width, Height, Texture)
13976             RaiseIfFailed("AddTexture", self.InsertOp)
13977             return ID
13978
13979         ## Transfer not topological data from one GEOM object to another.
13980         #
13981         #  @param theObjectFrom the source object of non-topological data
13982         #  @param theObjectTo the destination object of non-topological data
13983         #  @param theFindMethod method to search sub-shapes of theObjectFrom
13984         #         in shape theObjectTo. Possible values are: GEOM.FSM_GetInPlace,
13985         #         GEOM.FSM_GetInPlaceByHistory and GEOM.FSM_GetInPlace_Old.
13986         #         Other values of GEOM.find_shape_method are not supported.
13987         #
13988         #  @return True in case of success; False otherwise.
13989         #
13990         #  @ingroup l1_geomBuilder_auxiliary
13991         #
13992         #  @ref swig_TransferData "Example"
13993         @ManageTransactions("InsertOp")
13994         def TransferData(self, theObjectFrom, theObjectTo,
13995                          theFindMethod=GEOM.FSM_GetInPlace):
13996             """
13997             Transfer not topological data from one GEOM object to another.
13998
13999             Parameters:
14000                 theObjectFrom the source object of non-topological data
14001                 theObjectTo the destination object of non-topological data
14002                 theFindMethod method to search sub-shapes of theObjectFrom
14003                               in shape theObjectTo. Possible values are:
14004                               GEOM.FSM_GetInPlace, GEOM.FSM_GetInPlaceByHistory
14005                               and GEOM.FSM_GetInPlace_Old. Other values of
14006                               GEOM.find_shape_method are not supported.
14007
14008             Returns:
14009                 True in case of success; False otherwise.
14010
14011             # Example: see GEOM_TestOthers.py
14012             """
14013             # Example: see GEOM_TestAll.py
14014             isOk = self.InsertOp.TransferData(theObjectFrom,
14015                                                theObjectTo, theFindMethod)
14016             RaiseIfFailed("TransferData", self.InsertOp)
14017             return isOk
14018
14019         ## Creates a new folder object. It is a container for any GEOM objects.
14020         #  @param Name name of the container
14021         #  @param Father parent object. If None,
14022         #         folder under 'Geometry' root object will be created.
14023         #  @return a new created folder
14024         #  @ingroup l1_publish_data
14025         def NewFolder(self, Name, Father=None):
14026             """
14027             Create a new folder object. It is an auxiliary container for any GEOM objects.
14028
14029             Parameters:
14030                 Name name of the container
14031                 Father parent object. If None,
14032                 folder under 'Geometry' root object will be created.
14033
14034             Returns:
14035                 a new created folder
14036             """
14037             return self.CreateFolder(Name, Father)
14038
14039         ## Move object to the specified folder
14040         #  @param Object object to move
14041         #  @param Folder target folder
14042         #  @ingroup l1_publish_data
14043         def PutToFolder(self, Object, Folder):
14044             """
14045             Move object to the specified folder
14046
14047             Parameters:
14048                 Object object to move
14049                 Folder target folder
14050             """
14051             self.MoveToFolder(Object, Folder)
14052             pass
14053
14054         ## Move list of objects to the specified folder
14055         #  @param ListOfSO list of objects to move
14056         #  @param Folder target folder
14057         #  @ingroup l1_publish_data
14058         def PutListToFolder(self, ListOfSO, Folder):
14059             """
14060             Move list of objects to the specified folder
14061
14062             Parameters:
14063                 ListOfSO list of objects to move
14064                 Folder target folder
14065             """
14066             self.MoveListToFolder(ListOfSO, Folder)
14067             pass
14068
14069         ## @addtogroup l2_field
14070         ## @{
14071
14072         ## Creates a field
14073         #  @param shape the shape the field lies on
14074         #  @param name the field name
14075         #  @param type type of field data: 0 - bool, 1 - int, 2 - double, 3 - string
14076         #  @param dimension dimension of the shape the field lies on
14077         #         0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
14078         #  @param componentNames names of components
14079         #  @return a created field
14080         @ManageTransactions("FieldOp")
14081         def CreateField(self, shape, name, type, dimension, componentNames):
14082             """
14083             Creates a field
14084
14085             Parameters:
14086                 shape the shape the field lies on
14087                 name  the field name
14088                 type  type of field data
14089                 dimension dimension of the shape the field lies on
14090                           0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
14091                 componentNames names of components
14092
14093             Returns:
14094                 a created field
14095             """
14096             if isinstance( type, int ):
14097                 if type < 0 or type > 3:
14098                     raise RuntimeError("CreateField : Error: data type must be within [0-3] range")
14099                 type = [GEOM.FDT_Bool,GEOM.FDT_Int,GEOM.FDT_Double,GEOM.FDT_String][type]
14100
14101             f = self.FieldOp.CreateField( shape, name, type, dimension, componentNames)
14102             RaiseIfFailed("CreateField", self.FieldOp)
14103             global geom
14104             geom._autoPublish( f, "", name)
14105             return f
14106
14107         ## Removes a field from the GEOM component
14108         #  @param field the field to remove
14109         def RemoveField(self, field):
14110             "Removes a field from the GEOM component"
14111             global geom
14112             if isinstance( field, GEOM._objref_GEOM_Field ):
14113                 geom.RemoveObject( field )
14114             elif isinstance( field, geomField ):
14115                 geom.RemoveObject( field.field )
14116             else:
14117                 raise RuntimeError("RemoveField() : the object is not a field")
14118             return
14119
14120         ## Returns number of fields on a shape
14121         @ManageTransactions("FieldOp")
14122         def CountFields(self, shape):
14123             "Returns number of fields on a shape"
14124             nb = self.FieldOp.CountFields( shape )
14125             RaiseIfFailed("CountFields", self.FieldOp)
14126             return nb
14127
14128         ## Returns all fields on a shape
14129         @ManageTransactions("FieldOp")
14130         def GetFields(self, shape):
14131             "Returns all fields on a shape"
14132             ff = self.FieldOp.GetFields( shape )
14133             RaiseIfFailed("GetFields", self.FieldOp)
14134             return ff
14135
14136         ## Returns a field on a shape by its name
14137         @ManageTransactions("FieldOp")
14138         def GetField(self, shape, name):
14139             "Returns a field on a shape by its name"
14140             f = self.FieldOp.GetField( shape, name )
14141             RaiseIfFailed("GetField", self.FieldOp)
14142             return f
14143
14144         # end of l2_field
14145         ## @}
14146
14147         ## @addtogroup l2_testing
14148         ## @{
14149
14150         ## Build a mesh on the given shape.
14151         # @param shape the source shape
14152         # @param linear_deflection linear deflection coefficient
14153         # @param is_relative says if given value of deflection is relative to shape's bounding box
14154         # @param angular_deflection angular deflection for edges in degrees
14155         # @return True in case of success; otherwise False.
14156         @ManageTransactions("TestOp")
14157         def Tesselate(self, shape, linear_deflection=0, is_relative=True, angular_deflection=0):
14158             """Build a mesh on the given shape.
14159
14160             Parameters:
14161                 shape the source shape
14162                 linear_deflection linear deflection coefficient
14163                 is_relative says if given value of deflection is relative to shape's bounding box
14164                 angular_deflection angular deflection for edges in degrees
14165
14166             Returns:
14167                 True in case of success; otherwise False.
14168             """
14169             if angular_deflection > 0:
14170                 angular_deflection = angular_deflection * math.pi / 180.
14171             r = self.TestOp.Tesselate(shape, linear_deflection, is_relative, angular_deflection)
14172             RaiseIfFailed("Tesselate", self.TestOp)
14173             return r
14174
14175         ## Obtain a shape checker
14176         #  @return An instance of @ref conformity.CheckConformity "CheckConformity" interface
14177         #
14178         #  @ref tui_conformity_page "Example"
14179         def CheckConformity (self, shape):
14180             """
14181             Obtain a shape checker.
14182
14183             Example of usage:
14184                 conf = geompy.CheckConformity(shape)
14185                 valid = conf.isValid()
14186                 si2d = conf.selfIntersected2D()
14187                 dist = conf.distantShapes()
14188                 small = conf.smallEdges()
14189                 interfer = cc.interferingSubshapes()
14190             """
14191             conf = CheckConformity (shape, self)
14192             return conf
14193
14194         ## Obtain a shape proximity calculator
14195         #  @return An instance of @ref proximity.ShapeProximity "ShapeProximity" interface
14196         #
14197         #  @ref tui_proximity_page "Example"
14198         def ShapeProximity (self):
14199             """
14200             Obtain a shape proximity calculator.
14201
14202             Example of usage:
14203                 prox = geompy.ShapeProximity()
14204                 value = prox.proximity(shape1, shape2)
14205             """
14206             prox = ShapeProximity (self)
14207             return prox
14208
14209         # end of l2_testing
14210         ## @}
14211
14212
14213 # Register the new proxy for GEOM_Gen
14214 omniORB.registerObjref(GEOM._objref_GEOM_Gen._NP_RepositoryId, geomBuilder)
14215
14216
14217 ## Field on Geometry
14218 #  @ingroup l2_field
14219 class geomField( GEOM._objref_GEOM_Field ):
14220
14221     def __init__(self, *args):
14222         GEOM._objref_GEOM_Field.__init__(self, *args)
14223         self.field = GEOM._objref_GEOM_Field
14224         return
14225
14226     ## Returns the shape the field lies on
14227     def getShape(self):
14228         "Returns the shape the field lies on"
14229         return self.field.GetShape(self)
14230
14231     ## Returns the field name
14232     def getName(self):
14233         "Returns the field name"
14234         return self.field.GetName(self)
14235
14236     ## Returns type of field data as integer [0-3]
14237     def getType(self):
14238         "Returns type of field data"
14239         return EnumToLong(self.field.GetDataType(self))
14240
14241     ## Returns type of field data:
14242     #  one of GEOM.FDT_Bool, GEOM.FDT_Int, GEOM.FDT_Double, GEOM.FDT_String
14243     def getTypeEnum(self):
14244         "Returns type of field data"
14245         return self.field.GetDataType(self)
14246
14247     ## Returns dimension of the shape the field lies on:
14248     #  0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
14249     def getDimension(self):
14250         """Returns dimension of the shape the field lies on:
14251         0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape"""
14252         return self.field.GetDimension(self)
14253
14254     ## Returns names of components
14255     def getComponents(self):
14256         "Returns names of components"
14257         return self.field.GetComponents(self)
14258
14259     ## Adds a time step to the field
14260     #  @param step the time step number further used as the step identifier
14261     #  @param stamp the time step time
14262     #  @param values the values of the time step
14263     def addStep(self, step, stamp, values):
14264         "Adds a time step to the field"
14265         stp = self.field.AddStep( self, step, stamp )
14266         if not stp:
14267             raise RuntimeError("Field.addStep() : Error: step %s already exists in this field"%step)
14268         global geom
14269         geom._autoPublish( stp, "", "Step %s, %s"%(step,stamp))
14270         self.setValues( step, values )
14271         return stp
14272
14273     ## Remove a time step from the field
14274     def removeStep(self,step):
14275         "Remove a time step from the field"
14276         stepSO = None
14277         try:
14278             stepObj = self.field.GetStep( self, step )
14279             if stepObj:
14280                 stepSO = geom.myStudy.FindObjectID( stepObj.GetStudyEntry() )
14281         except:
14282             #import traceback
14283             #traceback.print_exc()
14284             pass
14285         self.field.RemoveStep( self, step )
14286         if stepSO:
14287             geom.myBuilder.RemoveObjectWithChildren( stepSO )
14288         return
14289
14290     ## Returns number of time steps in the field
14291     def countSteps(self):
14292         "Returns number of time steps in the field"
14293         return self.field.CountSteps(self)
14294
14295     ## Returns a list of time step IDs in the field
14296     def getSteps(self):
14297         "Returns a list of time step IDs in the field"
14298         return self.field.GetSteps(self)
14299
14300     ## Returns a time step by its ID
14301     def getStep(self,step):
14302         "Returns a time step by its ID"
14303         stp = self.field.GetStep(self, step)
14304         if not stp:
14305             raise RuntimeError("Step %s is missing from this field"%step)
14306         return stp
14307
14308     ## Returns the time of the field step
14309     def getStamp(self,step):
14310         "Returns the time of the field step"
14311         return self.getStep(step).GetStamp()
14312
14313     ## Changes the time of the field step
14314     def setStamp(self, step, stamp):
14315         "Changes the time of the field step"
14316         return self.getStep(step).SetStamp(stamp)
14317
14318     ## Returns values of the field step
14319     def getValues(self, step):
14320         "Returns values of the field step"
14321         return self.getStep(step).GetValues()
14322
14323     ## Changes values of the field step
14324     def setValues(self, step, values):
14325         "Changes values of the field step"
14326         stp = self.getStep(step)
14327         errBeg = "Field.setValues(values) : Error: "
14328         try:
14329             ok = stp.SetValues( values )
14330         except Exception as e:
14331             excStr = str(e)
14332             if excStr.find("WrongPythonType") > 0:
14333                 raise RuntimeError(errBeg +\
14334                       "wrong type of values, %s values are expected"%str(self.getTypeEnum())[4:])
14335             raise RuntimeError(errBeg + str(e))
14336         if not ok:
14337             nbOK = self.field.GetArraySize(self)
14338             nbKO = len(values)
14339             if nbOK != nbKO:
14340                 raise RuntimeError(errBeg + "len(values) must be %s but not %s"%(nbOK,nbKO))
14341             else:
14342                 raise RuntimeError(errBeg + "failed")
14343         return
14344
14345     pass # end of class geomField
14346
14347 # Register the new proxy for GEOM_Field
14348 omniORB.registerObjref(GEOM._objref_GEOM_Field._NP_RepositoryId, geomField)
14349
14350
14351 ## Create a new geomBuilder instance.The geomBuilder class provides the Python
14352 #  interface to GEOM operations.
14353 #
14354 #  Typical use is:
14355 #  \code
14356 #    import salome
14357 #    salome.salome_init()
14358 #    from salome.geom import geomBuilder
14359 #    geompy = geomBuilder.New()
14360 #  \endcode
14361 #  @param  instance  CORBA proxy of GEOM Engine. If None, the default Engine is used.
14362 #  @return geomBuilder instance
14363 def New( instance=None):
14364     """
14365     Create a new geomBuilder instance.The geomBuilder class provides the Python
14366     interface to GEOM operations.
14367
14368     Typical use is:
14369         import salome
14370         salome.salome_init()
14371         from salome.geom import geomBuilder
14372         geompy = geomBuilder.New()
14373
14374     Parameters:
14375         instance  CORBA proxy of GEOM Engine. If None, the default Engine is used.
14376     Returns:
14377         geomBuilder instance
14378     """
14379     #print "New geomBuilder ", study, instance
14380     global engine
14381     global geom
14382     global doLcc
14383     if instance and isinstance( instance, SALOMEDS._objref_Study ):
14384         import sys
14385         sys.stderr.write("Warning: 'study' argument is no more needed in geomBuilder.New(). Consider updating your script!!!\n\n")
14386         instance = None
14387     engine = instance
14388     if engine is None:
14389       doLcc = True
14390     geom = geomBuilder()
14391     assert isinstance(geom,geomBuilder), "Geom engine class is %s but should be geomBuilder.geomBuilder. Import geomBuilder before creating the instance."%geom.__class__
14392     geom.init_geom()
14393     return geom
14394
14395
14396 # Register methods from the plug-ins in the geomBuilder class 
14397 plugins_var = os.environ.get( "GEOM_PluginsList" )
14398
14399 plugins = None
14400 if plugins_var is not None:
14401     plugins = plugins_var.split( ":" )
14402     plugins=[x for x in plugins if len(x)>0]
14403 if plugins is not None:
14404     for pluginName in plugins:
14405         pluginBuilderName = pluginName + "Builder"
14406         try:
14407             exec( "from salome.%s.%s import *" % (pluginName, pluginBuilderName))
14408         except Exception as e:
14409             from salome_utils import verbose
14410             print("Exception while loading %s: %s" % ( pluginBuilderName, e ))
14411             continue
14412         exec( "from salome.%s import %s" % (pluginName, pluginBuilderName))
14413         plugin = eval( pluginBuilderName )
14414         
14415         # add methods from plugin module to the geomBuilder class
14416         for k in dir( plugin ):
14417             if k[0] == '_': continue
14418             method = getattr( plugin, k )
14419             if type( method ).__name__ == 'function':
14420                 if not hasattr( geomBuilder, k ):
14421                     setattr( geomBuilder, k, method )
14422                 pass
14423             pass
14424         del pluginName
14425         pass
14426     pass