1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE
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.
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.
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
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 # GEOM GEOM_SWIG : binding of C++ implementation with Python
22 # File : geomBuilder.py
23 # Author : Paul RASCLE, EDF
27 \namespace geomBuilder
28 \brief Module geomBuilder
32 ## @defgroup geomBuilder geomBuilder Python module
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()"
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.
50 ## For example, consider the following Python script:
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
60 ## Last two lines can be replaced by one-line instruction:
63 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100, theName="box") # box is published in the study with "box" name
69 ## box = geompy.MakeBoxDXDYDZ(100, 100, 100, "box") # box is published in the study with "box" name
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.
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")
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
91 ## g1, g2 = geompy.GetNonBlocks(cyl, theName=("nonhexa", "nonquad"))
94 ## ... the first compound will be published with "nonhexa" name, and second will be named "nonquad".
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.
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).
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
130 ## This feature can be used, for example, for debugging purposes.
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.
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.
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
169 ## Subfolders are also can be created by specifying another folder as a parent:
172 ## subfolder = geompy.NewFolder("3D", folder)
173 ## # "3D" folder was created under "Primitives" folder
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.
187 ## \defgroup l1_publish_data
188 ## \defgroup l1_geomBuilder_auxiliary
189 ## \defgroup l1_geomBuilder_purpose
192 ## @defgroup l1_publish_data Publishing results in SALOME study
194 ## @defgroup l1_geomBuilder_auxiliary Auxiliary data structures and methods
196 ## @defgroup l1_geomBuilder_purpose All package methods, grouped by their purpose
198 ## @defgroup l2_import_export Importing/exporting geometrical objects
199 ## @defgroup l2_creating Creating geometrical objects
201 ## @defgroup l3_basic_go Creating Basic Geometric Objects
203 ## @defgroup l4_curves Creating Curves
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
211 ## @defgroup l4_blocks_measure Check and Improve
214 ## @defgroup l3_sketcher Sketcher
215 ## @defgroup l3_advanced Creating Advanced Geometrical Objects
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
226 ## @defgroup l2_transforming Transforming geometrical objects
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
238 ## @defgroup l2_measure Using measurement tools
239 ## @defgroup l2_field Field on Geometry
240 ## @defgroup l2_testing Testing
246 # initialize SALOME session in try/except block
247 # to avoid problems in some cases, e.g. when generating documentation
255 from salome_notebook import *
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
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
272 GEOM.COMPOUND < GEOM.SOLID
274 def enumitem_eq(self, other):
276 if isinstance(other, omniORB.EnumItem):
277 if other._parent_id == self._parent_id:
278 return self._v == other._v
280 return self._parent_id == other._parent_id
282 return id(self) == id(other)
284 return id(self) == id(other)
286 def enumitem_lt(self, other):
288 if isinstance(other, omniORB.EnumItem):
289 if other._parent_id == self._parent_id:
290 return self._v < other._v
292 return self._parent_id < other._parent_id
294 return id(self) < id(other)
296 return id(self) < id(other)
298 def enumitem_le(self, other):
300 if isinstance(other, omniORB.EnumItem):
301 if other._parent_id == self._parent_id:
302 return self._v <= other._v
304 return self._parent_id <= other._parent_id
306 return id(self) <= id(other)
308 return id(self) <= id(other)
310 def enumitem_gt(self, other):
312 if isinstance(other, omniORB.EnumItem):
313 if other._parent_id == self._parent_id:
314 return self._v > other._v
316 return self._parent_id > other._parent_id
318 return id(self) > id(other)
320 return id(self) > id(other)
322 def enumitem_ge(self, other):
324 if isinstance(other, omniORB.EnumItem):
325 if other._parent_id == self._parent_id:
326 return self._v >= other._v
328 return self._parent_id >= other._parent_id
330 return id(self) >= id(other)
332 return id(self) >= id(other)
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
346 def _toListOfNames(_names, _size=-1):
349 if type(_names) in [list, tuple]:
350 for i in _names: l.append(i)
353 if l and len(l) < _size:
354 for i in range(len(l), _size): l.append("%s_%d"%(l[0],i))
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):
364 anOperation = getattr(self, theOpeName)
365 anOperation.StartOperation()
368 res = theFunction(self, *args, **kwargs)
370 anOperation.FinishOperation()
374 anOperation.AbortOperation()
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())
385 def PrintOrRaise(message, raiseException=False):
387 raise RuntimeError(message)
391 ## Return list of variables value from salome notebook
392 ## @ingroup l1_geomBuilder_auxiliary
393 def ParseParameters(*parameters):
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(":")
405 if isinstance(parameter,str):
406 if notebook.isVariable(parameter):
407 Result.append(notebook.get(parameter))
409 raise RuntimeError("Variable with name '" + parameter + "' doesn't exist!!!")
412 Result.append(parameter)
414 StringResult.append(str(parameter))
418 Result.append(":".join(StringResult))
420 Result = ":".join(StringResult)
423 ## Return list of variables value from salome notebook
424 ## @ingroup l1_geomBuilder_auxiliary
428 for parameter in list:
429 if isinstance(parameter,str) and notebook.isVariable(parameter):
430 Result.append(str(notebook.get(parameter)))
433 Result.append(str(parameter))
436 StringResult = StringResult + str(parameter)
437 StringResult = StringResult + ":"
439 StringResult = StringResult[:len(StringResult)-1]
440 return Result, StringResult
442 ## Return list of variables value from salome notebook
443 ## @ingroup l1_geomBuilder_auxiliary
444 def ParseSketcherCommand(command):
447 sections = command.split(":")
448 for section in sections:
449 parameters = section.split(" ")
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)) + " "
458 raise RuntimeError("Variable with name '" + parameter + "' doesn't exist!!!")
462 Result = Result + str(parameter) + " "
465 StringResult = StringResult + parameter
466 StringResult = StringResult + ":"
468 paramIndex = paramIndex + 1
470 Result = Result[:len(Result)-1] + ":"
472 Result = Result[:len(Result)-1]
473 return Result, StringResult
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.
480 ## val = PackData("10001110") # val = 0xAE
481 ## val = PackData("1") # val = 0x80
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
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.
493 data unpacked data - a string containing '1' and '0' symbols
496 data packed to the byte stream
499 val = PackData("10001110") # val = 0xAE
500 val = PackData("1") # val = 0x80
503 if len(data)%8: bytes += 1
505 for b in range(bytes):
506 d = data[b*8:(b+1)*8]
511 if d[i] == "1": val += 1
513 raise "Invalid symbol %s" % d[i]
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.
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.
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)
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):
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.
550 fname texture file name
553 sequence of tree values: texture's width, height in pixels and its byte stream
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)
564 lines = [ l.strip() for l in f.readlines()]
567 if lines: maxlen = max([len(x) for x in lines])
569 if maxlen%8: lenbytes += 1
573 lenline = (len(line)/8+1)*8
576 lenline = (len(line)/8)*8
578 for i in range(lenline/8):
581 if i*8+j < len(line) and line[i*8+j] != "0": byte += "1"
584 bytedata += PackData(byte)
586 for i in range(lenline/8, lenbytes):
587 bytedata += PackData("0")
589 return lenbytes*8, len(lines), bytedata
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):
600 Returns a long value from enumeration type
601 Can be used for CORBA enumerator types like geomBuilder.ShapeType
604 theItem enumeration type
607 if hasattr(theItem, "_v"): ret = theItem._v
610 ## Pack an argument into a list
612 if isinstance( arg, list ):
614 if hasattr( arg, "__getitem__" ):
618 ## Information about closed/unclosed state of shell or wire
619 # @ingroup l1_geomBuilder_auxiliary
622 Information about closed/unclosed state of shell or wire
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
635 @ManageTransactions("operation")
636 def __call__(self, *args):
637 res = self.function(self.operation, *args)
638 RaiseIfFailed(self.function.__name__, self.operation)
641 # Warning: geom is a singleton
647 class geomBuilder(GEOM._objref_GEOM_Gen):
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}
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]
660 # - SHELL: [info.CLOSED / info.UNCLOSED nb_faces nb_edges nb_vertices]
662 # - WIRE: [info.CLOSED / info.UNCLOSED nb_edges nb_vertices]
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]
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]
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]
698 # - LCS: [x y z xx xy xz yx yy yz zx zy zz]
699 # @ingroup l1_geomBuilder_auxiliary
700 kind = GEOM.GEOM_IKindOfShape
702 def __new__(cls, *args):
707 #print "==== __new__ ", engine, geom, doLcc, created
709 # geom engine is either retrieved from engine, or created
711 # Following test avoids a recursive loop
714 # geom engine not created: existing engine found
716 if doLcc and not created:
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" )
725 # FindOrLoadComponent not called
727 # geomBuilder instance is created from lcc.FindOrLoadComponent
728 #print "==== super ", engine, geom, doLcc, created
729 geom = super(geomBuilder,cls).__new__(cls)
732 # geom engine not created: existing engine found
733 #print "==== existing ", engine, geom, doLcc, created
735 #print "return geom 1 ", geom
738 #print "return geom 2 ", geom
741 def __init__(self, *args):
743 #print "-------- geomBuilder __init__ --- ", created, self
746 GEOM._objref_GEOM_Gen.__init__(self, *args)
747 self.myMaxNbSubShapesAllowed = 0 # auto-publishing is disabled by default
748 self.myBuilder = None
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.
772 # @param theObj object, a subject for publishing
773 # @param theName object name for study
774 # @param theDefaultName default name for the auto-publishing
776 # @sa addToStudyAuto()
777 def _autoPublish(self, theObj, theName, theDefaultName="noname"):
779 def _item_name(_names, _defname, _idx=-1):
780 if not _names: _names = _defname
781 if type(_names) in [list, tuple]:
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]
789 _name = "%noname_%d"%(dn, _idx+1)
795 # must be wrong usage
800 _name = "%s_%d"%(_names, _idx+1)
806 def _publish( _name, _obj ):
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()
815 if fatherObj and fatherObj.GetStudyEntry():
816 self.addToStudyInFather(fatherObj, _obj, _name)
818 self.addToStudy(_obj, _name)
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
829 if type(theObj) in [list, tuple]:
830 # list of objects is being published
833 if not obj: continue # bad object
834 name = _item_name(theName, theDefaultName, idx)
835 _publish( name, obj )
837 if not theName and idx == self.myMaxNbSubShapesAllowed: break
841 # single object is published
842 name = _item_name(theName, theDefaultName)
843 _publish( name, theObj )
846 ## @addtogroup l1_geomBuilder_auxiliary
849 self.myStudy = salome.myStudy
850 self.myBuilder = self.myStudy.NewBuilder()
852 # load data from the study file, if necessary
853 component = self.myStudy.FindComponent("GEOM")
855 self.myBuilder.LoadWith(component, self)
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 ()
872 notebook.myStudy = self.myStudy
875 def GetPluginOperations(self, libraryName):
876 op = GEOM._objref_GEOM_Gen.GetPluginOperations(self, libraryName)
879 ## Enable / disable results auto-publishing
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.
889 # @param maxNbSubShapes maximum number of sub-shapes allowed for publishing.
890 # @ingroup l1_publish_data
891 def addToStudyAuto(self, maxNbSubShapes=-1):
893 Enable / disable results auto-publishing
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.
904 maxNbSubShapes maximum number of sub-shapes allowed for publishing.
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
911 self.myMaxNbSubShapesAllowed = max(-1, maxNbSubShapes)
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):
918 Dump component to the Python script
919 This method overrides IDL function to allow default values for the parameters.
921 return GEOM._objref_GEOM_Gen.DumpPython(self, theIsPublished, theIsMultiFile)
923 ## Get name for sub-shape aSubObj of shape aMainObj
925 # @ref swig_SubShapeName "Example"
926 @ManageTransactions("ShapesOp")
927 def SubShapeName(self,aSubObj, aMainObj):
929 Get name for sub-shape aSubObj of shape aMainObj
931 # Example: see GEOM_TestAll.py
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)
941 ## Publish in study aShape with name aName
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
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):
957 Publish in study aShape with name aName
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
969 study entry of the published shape in form of string
972 id_block1 = geompy.addToStudy(Block1, "Block 1")
974 # Example: see GEOM_TestAll.py
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 )
982 print("addToStudy() failed")
984 return aShape.GetStudyEntry()
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
991 # \return study entry of the published shape in form of string
993 # @ingroup l1_publish_data
994 # @ref swig_all_addtostudyInFather "Example"
995 def addToStudyInFather(self, aFather, aShape, aName):
997 Publish in study aShape with name aName as sub-object of previously published aFather
1000 aFather previously published object
1001 aShape the shape to be published as sub-object of aFather
1002 aName the name for the shape
1005 study entry of the published shape in form of string
1007 # Example: see GEOM_TestAll.py
1009 aSObject = self.AddInStudy(aShape, aName, aFather)
1010 if aSObject and aName: aSObject.SetAttrString("AttributeName", aName)
1012 print("addToStudyInFather() failed")
1014 return aShape.GetStudyEntry()
1016 ## Unpublish object in study
1018 # \param obj the object to be unpublished
1019 def hideInStudy(self, obj):
1021 Unpublish object in study
1024 obj the object to be unpublished
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);
1035 genericAttribute = self.myBuilder.FindOrCreateAttribute(refObj, "AttributeDrawable")
1036 drwAttribute = genericAttribute._narrow(SALOMEDS.AttributeDrawable)
1037 drwAttribute.SetDrawable(False)
1041 # end of l1_geomBuilder_auxiliary
1044 ## @addtogroup l3_restore_ss
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
1067 # @ref tui_restore_prs_params "Example"
1068 def RestoreSubShapes (self, theObject, theArgs=[], theFindMethod=GEOM.FSM_GetInPlace,
1069 theInheritFirstArg=False, theAddPrefix=True):
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)
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.
1092 list of published sub-shapes
1094 # Example: see GEOM_TestAll.py
1095 return self.RestoreSubShapesO(theObject, theArgs,
1096 theFindMethod, theInheritFirstArg, theAddPrefix)
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
1118 # @ref tui_restore_prs_params "Example"
1119 def RestoreGivenSubShapes (self, theObject, theArgs=[], theFindMethod=GEOM.FSM_GetInPlace,
1120 theInheritFirstArg=False, theAddPrefix=True):
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)
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.
1144 list of published sub-shapes
1146 # Example: see GEOM_TestAll.py
1147 return self.RestoreGivenSubShapesO(theObject, theArgs,
1148 theFindMethod, theInheritFirstArg, theAddPrefix)
1150 # end of l3_restore_ss
1153 ## @addtogroup l3_basic_go
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.
1164 # @return New GEOM.GEOM_Object, containing the created point.
1166 # @ref tui_creation_point "Example"
1167 @ManageTransactions("BasicOp")
1168 def MakeVertex(self, theX, theY, theZ, theName=None):
1170 Create point by three coordinates.
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.
1181 New GEOM.GEOM_Object, containing the created point.
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")
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.
1201 # @return New GEOM.GEOM_Object, containing the created point.
1203 # @ref tui_creation_point "Example"
1204 @ManageTransactions("BasicOp")
1205 def MakeVertexWithRef(self, theReference, theX, theY, theZ, theName=None):
1207 Create a point, distant from the referenced point
1208 on the given distances along the coordinate axes.
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.
1220 New GEOM.GEOM_Object, containing the created point.
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")
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.
1242 # @return New GEOM.GEOM_Object, containing the created point.
1244 # @ref tui_creation_point "Example"
1245 @ManageTransactions("BasicOp")
1246 def MakeVertexOnCurve(self, theRefCurve, theParameter,
1247 takeOrientationIntoAccount=False, theName=None):
1249 Create a point, corresponding to the given parameter on the given curve.
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.
1265 New GEOM.GEOM_Object, containing the created point.
1268 p_on_arc = geompy.MakeVertexOnCurve(Arc, 0.25)
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")
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.
1289 # @return New GEOM.GEOM_Object, containing the created point.
1291 # @ref tui_creation_point "Example"
1292 @ManageTransactions("BasicOp")
1293 def MakeVertexOnCurveByCoord(self, theRefCurve, theX, theY, theZ, theName=None):
1295 Create a point by projection give coordinates on the given curve
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.
1307 New GEOM.GEOM_Object, containing the created point.
1310 p_on_arc3 = geompy.MakeVertexOnCurveByCoord(Arc, 100, -10, 10)
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")
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.
1329 # @return New GEOM.GEOM_Object, containing the created point.
1331 # @ref tui_creation_point "Example"
1332 @ManageTransactions("BasicOp")
1333 def MakeVertexOnCurveByLength(self, theRefCurve, theLength, theStartPoint = None, theName=None):
1335 Create a point, corresponding to the given length on the given curve.
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.
1347 New GEOM.GEOM_Object, containing the created point.
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")
1357 ## Create a point, corresponding to the given parameters on the
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.
1366 # @return New GEOM.GEOM_Object, containing the created point.
1368 # @ref swig_MakeVertexOnSurface "Example"
1369 @ManageTransactions("BasicOp")
1370 def MakeVertexOnSurface(self, theRefSurf, theUParameter, theVParameter, theName=None):
1372 Create a point, corresponding to the given parameters on the
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.
1384 New GEOM.GEOM_Object, containing the created point.
1387 p_on_face = geompy.MakeVertexOnSurface(Face, 0.1, 0.8)
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")
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.
1406 # @return New GEOM.GEOM_Object, containing the created point.
1408 # @ref swig_MakeVertexOnSurfaceByCoord "Example"
1409 @ManageTransactions("BasicOp")
1410 def MakeVertexOnSurfaceByCoord(self, theRefSurf, theX, theY, theZ, theName=None):
1412 Create a point by projection give coordinates on the given surface
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.
1424 New GEOM.GEOM_Object, containing the created point.
1427 p_on_face2 = geompy.MakeVertexOnSurfaceByCoord(Face, 0., 0., 0.)
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")
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.
1447 # @return New GEOM.GEOM_Object, containing the created point.
1449 # @ref swig_MakeVertexInsideFace "Example"
1450 @ManageTransactions("BasicOp")
1451 def MakeVertexInsideFace (self, theFace, theNumberOfPnts=1, theName=None):
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.
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.
1467 New GEOM.GEOM_Object, containing the created point.
1470 p_on_face = geompy.MakeVertexInsideFace(Face)
1472 # Example: see GEOM_TestAll.py
1473 anObj = self.BasicOp.MakePointOnFace(theFace, theNumberOfPnts)
1474 RaiseIfFailed("MakeVertexInsideFace", self.BasicOp)
1475 self._autoPublish(anObj, theName, "vertex")
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.
1484 # @return New GEOM.GEOM_Object, containing the created point.
1486 # @ref swig_MakeVertexOnLinesIntersection "Example"
1487 @ManageTransactions("BasicOp")
1488 def MakeVertexOnLinesIntersection(self, theRefLine1, theRefLine2, theName=None):
1490 Create a point on intersection of two lines.
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.
1499 New GEOM.GEOM_Object, containing the created point.
1501 # Example: see GEOM_TestAll.py
1502 anObj = self.BasicOp.MakePointOnLinesIntersection(theRefLine1, theRefLine2)
1503 RaiseIfFailed("MakePointOnLinesIntersection", self.BasicOp)
1504 self._autoPublish(anObj, theName, "vertex")
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.
1514 # @return New GEOM.GEOM_Object, containing the created tangent.
1516 # @ref swig_MakeTangentOnCurve "Example"
1517 @ManageTransactions("BasicOp")
1518 def MakeTangentOnCurve(self, theRefCurve, theParameter, theName=None):
1520 Create a tangent, corresponding to the given parameter on the given curve.
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.
1530 New GEOM.GEOM_Object, containing the created tangent.
1533 tan_on_arc = geompy.MakeTangentOnCurve(Arc, 0.7)
1535 anObj = self.BasicOp.MakeTangentOnCurve(theRefCurve, theParameter)
1536 RaiseIfFailed("MakeTangentOnCurve", self.BasicOp)
1537 self._autoPublish(anObj, theName, "tangent")
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.
1549 # @return New GEOM.GEOM_Object, containing the created tangent.
1551 # @ref swig_MakeTangentPlaneOnFace "Example"
1552 @ManageTransactions("BasicOp")
1553 def MakeTangentPlaneOnFace(self, theFace, theParameterU, theParameterV, theTrimSize, theName=None):
1555 Create a tangent plane, corresponding to the given parameter on the given face.
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.
1567 New GEOM.GEOM_Object, containing the created tangent.
1570 an_on_face = geompy.MakeTangentPlaneOnFace(tan_extrusion, 0.7, 0.5, 150)
1572 anObj = self.BasicOp.MakeTangentPlaneOnFace(theFace, theParameterU, theParameterV, theTrimSize)
1573 RaiseIfFailed("MakeTangentPlaneOnFace", self.BasicOp)
1574 self._autoPublish(anObj, theName, "tangent")
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.
1585 # @return New GEOM.GEOM_Object, containing the created vector.
1587 # @ref tui_creation_vector "Example"
1588 @ManageTransactions("BasicOp")
1589 def MakeVectorDXDYDZ(self, theDX, theDY, theDZ, theName=None):
1591 Create a vector with the given components.
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.
1602 New GEOM.GEOM_Object, containing the created vector.
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")
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.
1619 # @return New GEOM.GEOM_Object, containing the created vector.
1621 # @ref tui_creation_vector "Example"
1622 @ManageTransactions("BasicOp")
1623 def MakeVector(self, thePnt1, thePnt2, theName=None):
1625 Create a vector between two points.
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.
1635 New GEOM.GEOM_Object, containing the created vector.
1637 # Example: see GEOM_TestAll.py
1638 anObj = self.BasicOp.MakeVectorTwoPnt(thePnt1, thePnt2)
1639 RaiseIfFailed("MakeVectorTwoPnt", self.BasicOp)
1640 self._autoPublish(anObj, theName, "vector")
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.
1651 # @return New GEOM.GEOM_Object, containing the created line.
1653 # @ref tui_creation_line "Example"
1654 @ManageTransactions("BasicOp")
1655 def MakeLine(self, thePnt, theDir, theName=None):
1657 Create a line, passing through the given point
1658 and parallel to the given direction
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.
1668 New GEOM.GEOM_Object, containing the created line.
1670 # Example: see GEOM_TestAll.py
1671 anObj = self.BasicOp.MakeLine(thePnt, theDir)
1672 RaiseIfFailed("MakeLine", self.BasicOp)
1673 self._autoPublish(anObj, theName, "line")
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.
1683 # @return New GEOM.GEOM_Object, containing the created line.
1685 # @ref tui_creation_line "Example"
1686 @ManageTransactions("BasicOp")
1687 def MakeLineTwoPnt(self, thePnt1, thePnt2, theName=None):
1689 Create a line, passing through the given points
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.
1699 New GEOM.GEOM_Object, containing the created line.
1701 # Example: see GEOM_TestAll.py
1702 anObj = self.BasicOp.MakeLineTwoPnt(thePnt1, thePnt2)
1703 RaiseIfFailed("MakeLineTwoPnt", self.BasicOp)
1704 self._autoPublish(anObj, theName, "line")
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.
1714 # @return New GEOM.GEOM_Object, containing the created line.
1716 # @ref swig_MakeLineTwoFaces "Example"
1717 @ManageTransactions("BasicOp")
1718 def MakeLineTwoFaces(self, theFace1, theFace2, theName=None):
1720 Create a line on two faces intersection.
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.
1730 New GEOM.GEOM_Object, containing the created line.
1732 # Example: see GEOM_TestAll.py
1733 anObj = self.BasicOp.MakeLineTwoFaces(theFace1, theFace2)
1734 RaiseIfFailed("MakeLineTwoFaces", self.BasicOp)
1735 self._autoPublish(anObj, theName, "line")
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.
1747 # @return New GEOM.GEOM_Object, containing the created plane.
1749 # @ref tui_creation_plane "Example"
1750 @ManageTransactions("BasicOp")
1751 def MakePlane(self, thePnt, theVec, theTrimSize, theName=None):
1753 Create a plane, passing through the given point
1754 and normal to the given vector.
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.
1765 New GEOM.GEOM_Object, containing the created plane.
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")
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.
1784 # @return New GEOM.GEOM_Object, containing the created plane.
1786 # @ref tui_creation_plane "Example"
1787 @ManageTransactions("BasicOp")
1788 def MakePlaneThreePnt(self, thePnt1, thePnt2, thePnt3, theTrimSize, theName=None):
1790 Create a plane, passing through the three given points
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.
1802 New GEOM.GEOM_Object, containing the created plane.
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")
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.
1819 # @return New GEOM.GEOM_Object, containing the created plane.
1821 # @ref tui_creation_plane "Example"
1822 @ManageTransactions("BasicOp")
1823 def MakePlaneFace(self, theFace, theTrimSize, theName=None):
1825 Create a plane, similar to the existing one, but with another size of representing face.
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.
1835 New GEOM.GEOM_Object, containing the created plane.
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")
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.
1854 # @return New GEOM.GEOM_Object, containing the created plane.
1856 # @ref tui_creation_plane "Example"
1857 @ManageTransactions("BasicOp")
1858 def MakePlane2Vec(self, theVec1, theVec2, theTrimSize, theName=None):
1860 Create a plane, passing through the 2 vectors
1861 with center in a start point of the first vector.
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.
1872 New GEOM.GEOM_Object, containing the created plane.
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")
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.
1890 # @return New GEOM.GEOM_Object, containing the created plane.
1892 # @ref tui_creation_plane "Example"
1893 @ManageTransactions("BasicOp")
1894 def MakePlaneLCS(self, theLCS, theTrimSize, theOrientation, theName=None):
1896 Create a plane, based on a Local coordinate system.
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.
1907 New GEOM.GEOM_Object, containing the created plane.
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")
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.
1925 # @return New GEOM.GEOM_Object, containing the created coordinate system.
1927 # @ref swig_MakeMarker "Example"
1928 @ManageTransactions("BasicOp")
1929 def MakeMarker(self, OX,OY,OZ, XDX,XDY,XDZ, YDX,YDY,YDZ, theName=None):
1931 Create a local coordinate system.
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.
1942 New GEOM.GEOM_Object, containing the created coordinate system.
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")
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.
1958 # @return New GEOM.GEOM_Object, containing the created coordinate system.
1960 # @ref tui_creation_lcs "Example"
1961 @ManageTransactions("BasicOp")
1962 def MakeMarkerFromShape(self, theShape, theName=None):
1964 Create a local coordinate system from shape.
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.
1973 New GEOM.GEOM_Object, containing the created coordinate system.
1975 anObj = self.BasicOp.MakeMarkerFromShape(theShape)
1976 RaiseIfFailed("MakeMarkerFromShape", self.BasicOp)
1977 self._autoPublish(anObj, theName, "lcs")
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.
1988 # @return New GEOM.GEOM_Object, containing the created coordinate system.
1990 # @ref tui_creation_lcs "Example"
1991 @ManageTransactions("BasicOp")
1992 def MakeMarkerPntTwoVec(self, theOrigin, theXVec, theYVec, theName=None):
1994 Create a local coordinate system from point and two vectors.
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.
2005 New GEOM.GEOM_Object, containing the created coordinate system.
2008 anObj = self.BasicOp.MakeMarkerPntTwoVec(theOrigin, theXVec, theYVec)
2009 RaiseIfFailed("MakeMarkerPntTwoVec", self.BasicOp)
2010 self._autoPublish(anObj, theName, "lcs")
2013 # end of l3_basic_go
2016 ## @addtogroup l4_curves
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.
2027 # @return New GEOM.GEOM_Object, containing the created arc.
2029 # @ref swig_MakeArc "Example"
2030 @ManageTransactions("CurvesOp")
2031 def MakeArc(self, thePnt1, thePnt2, thePnt3, theName=None):
2033 Create an arc of circle, passing through three given points.
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.
2044 New GEOM.GEOM_Object, containing the created arc.
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")
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.
2061 # @return New GEOM.GEOM_Object, containing the created arc.
2063 # @ref swig_MakeArc "Example"
2064 @ManageTransactions("CurvesOp")
2065 def MakeArcCenter(self, thePnt1, thePnt2, thePnt3, theSense=False, theName=None):
2067 Create an arc of circle from a center and 2 points.
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.
2079 New GEOM.GEOM_Object, containing the created arc.
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")
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.
2095 # @return New GEOM.GEOM_Object, containing the created arc.
2097 # @ref swig_MakeArc "Example"
2098 @ManageTransactions("CurvesOp")
2099 def MakeArcOfEllipse(self, theCenter, thePnt1, thePnt2, theName=None):
2101 Create an arc of ellipse, of center and two points.
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.
2112 New GEOM.GEOM_Object, containing the created arc.
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")
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.
2128 # @return New GEOM.GEOM_Object, containing the created circle.
2130 # @ref tui_creation_circle "Example"
2131 @ManageTransactions("CurvesOp")
2132 def MakeCircle(self, thePnt, theVec, theR, theName=None):
2134 Create a circle with given center, normal vector and radius.
2137 thePnt Circle center.
2138 theVec Vector, normal to the plane of the circle.
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.
2145 New GEOM.GEOM_Object, containing the created circle.
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")
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.
2163 # @return New GEOM.GEOM_Object, containing the created circle.
2164 @ManageTransactions("CurvesOp")
2165 def MakeCircleR(self, theR, theName=None):
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
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.
2178 New GEOM.GEOM_Object, containing the created circle.
2180 anObj = self.CurvesOp.MakeCirclePntVecR(None, None, theR)
2181 RaiseIfFailed("MakeCirclePntVecR", self.CurvesOp)
2182 self._autoPublish(anObj, theName, "circle")
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.
2191 # @return New GEOM.GEOM_Object, containing the created circle.
2193 # @ref tui_creation_circle "Example"
2194 @ManageTransactions("CurvesOp")
2195 def MakeCircleThreePnt(self, thePnt1, thePnt2, thePnt3, theName=None):
2197 Create a circle, passing through three given points
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.
2206 New GEOM.GEOM_Object, containing the created circle.
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")
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.
2222 # @return New GEOM.GEOM_Object, containing the created circle.
2224 # @ref swig_MakeCircle "Example"
2225 @ManageTransactions("CurvesOp")
2226 def MakeCircleCenter2Pnt(self, thePnt1, thePnt2, thePnt3, theName=None):
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.
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.
2239 New GEOM.GEOM_Object, containing the created circle.
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")
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.
2257 # @return New GEOM.GEOM_Object, containing the created ellipse.
2259 # @ref tui_creation_ellipse "Example"
2260 @ManageTransactions("CurvesOp")
2261 def MakeEllipse(self, thePnt, theVec, theRMajor, theRMinor, theVecMaj=None, theName=None):
2263 Create an ellipse with given center, normal vector and radiuses.
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.
2276 New GEOM.GEOM_Object, containing the created ellipse.
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)
2283 anObj = self.CurvesOp.MakeEllipse(thePnt, theVec, theRMajor, theRMinor)
2285 RaiseIfFailed("MakeEllipse", self.CurvesOp)
2286 anObj.SetParameters(Parameters)
2287 self._autoPublish(anObj, theName, "ellipse")
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.
2299 # @return New GEOM.GEOM_Object, containing the created ellipse.
2300 @ManageTransactions("CurvesOp")
2301 def MakeEllipseRR(self, theRMajor, theRMinor, theName=None):
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
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.
2315 New GEOM.GEOM_Object, containing the created ellipse.
2317 anObj = self.CurvesOp.MakeEllipse(None, None, theRMajor, theRMinor)
2318 RaiseIfFailed("MakeEllipse", self.CurvesOp)
2319 self._autoPublish(anObj, theName, "ellipse")
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.
2329 # @return New GEOM.GEOM_Object, containing the created polyline.
2331 # @ref tui_creation_curve "Example"
2332 @ManageTransactions("CurvesOp")
2333 def MakePolyline(self, thePoints, theIsClosed=False, theName=None):
2335 Create a polyline on the set of points.
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.
2345 New GEOM.GEOM_Object, containing the created polyline.
2347 # Example: see GEOM_TestAll.py
2348 anObj = self.CurvesOp.MakePolyline(thePoints, theIsClosed)
2349 RaiseIfFailed("MakePolyline", self.CurvesOp)
2350 self._autoPublish(anObj, theName, "polyline")
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.
2360 # @return New GEOM.GEOM_Object, containing the created bezier curve.
2362 # @ref tui_creation_curve "Example"
2363 @ManageTransactions("CurvesOp")
2364 def MakeBezier(self, thePoints, theIsClosed=False, theName=None):
2366 Create bezier curve on the set of points.
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.
2376 New GEOM.GEOM_Object, containing the created bezier curve.
2378 # Example: see GEOM_TestAll.py
2379 anObj = self.CurvesOp.MakeSplineBezier(thePoints, theIsClosed)
2380 RaiseIfFailed("MakeSplineBezier", self.CurvesOp)
2381 self._autoPublish(anObj, theName, "bezier")
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.
2393 # @return New GEOM.GEOM_Object, containing the created B-Spline curve.
2395 # @ref tui_creation_curve "Example"
2396 @ManageTransactions("CurvesOp")
2397 def MakeInterpol(self, thePoints, theIsClosed=False, theDoReordering=False, theName=None):
2399 Create B-Spline curve on the set of points.
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.
2411 New GEOM.GEOM_Object, containing the created B-Spline curve.
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")
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.
2427 # @return New GEOM.GEOM_Object, containing the created B-Spline curve.
2429 # @ref tui_creation_curve "Example"
2430 @ManageTransactions("CurvesOp")
2431 def MakeInterpolWithTangents(self, thePoints, theFirstVec, theLastVec, theName=None):
2433 Create B-Spline curve on the set of points.
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.
2444 New GEOM.GEOM_Object, containing the created B-Spline curve.
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")
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.
2466 # @return New GEOM.GEOM_Object, containing the created curve.
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 ):
2473 Creates a curve using the parametric definition of the basic points.
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.
2491 New GEOM.GEOM_Object, containing the created curve.
2493 theParamMin,theParamMax,theParamStep,Parameters = ParseParameters(theParamMin,theParamMax,theParamStep)
2495 anObj = self.CurvesOp.MakeCurveParametricNew(thexExpr,theyExpr,thezExpr,theParamMin,theParamMax,theParamStep,theCurveType)
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")
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
2507 # @param theParameter the U parameter for U-isoline or V parameter
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.
2513 # @return New GEOM.GEOM_Object, containing the created isoline edge or
2514 # a compound of edges.
2516 # @ref tui_creation_curve "Example"
2517 @ManageTransactions("CurvesOp")
2518 def MakeIsoline(self, theFace, IsUIsoline, theParameter, theName=None):
2520 Create an isoline curve on a face.
2523 theFace the face for which an isoline is created.
2524 IsUIsoline True for U-isoline creation; False for V-isoline
2526 theParameter the U parameter for U-isoline or V parameter
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.
2533 New GEOM.GEOM_Object, containing the created isoline edge or a
2536 # Example: see GEOM_TestAll.py
2537 anObj = self.CurvesOp.MakeIsoline(theFace, IsUIsoline, theParameter)
2538 RaiseIfFailed("MakeIsoline", self.CurvesOp)
2540 self._autoPublish(anObj, theName, "U-Isoline")
2542 self._autoPublish(anObj, theName, "V-Isoline")
2548 ## @addtogroup l3_sketcher
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:
2556 # "Sketcher[:F x1 y1]:CMD[:CMD[:CMD...]]"
2559 # - x1, y1 are coordinates of the first sketcher point (zero by default),
2561 # - "R angle" : Set the direction by angle
2562 # - "D dx dy" : Set the direction by DX & DY
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
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
2581 # - "WW" : Close Wire (to finish)
2582 # - "WF" : Close Wire and build face (to finish)
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)
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
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.
2603 # @return New GEOM.GEOM_Object, containing the created wire.
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):
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...]]"
2615 - x1, y1 are coordinates of the first sketcher point (zero by default),
2617 - "R angle" : Set the direction by angle
2618 - "D dx dy" : Set the direction by DX & DY
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
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
2634 - "WW" : Close Wire (to finish)
2635 - "WF" : Close Wire and build face (to finish)
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)
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
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.
2656 New GEOM.GEOM_Object, containing the created wire.
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")
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.
2676 # @return New GEOM.GEOM_Object, containing the created wire.
2678 # @ref tui_sketcher_page "Example"
2679 @ManageTransactions("CurvesOp")
2680 def MakeSketcherOnPlane(self, theCommand, theWorkingPlane, theName=None):
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.
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.
2695 New GEOM.GEOM_Object, containing the created wire.
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")
2704 ## Obtain a 2D sketcher interface
2705 # @return An instance of @ref gsketcher.Sketcher2D "Sketcher2D" interface
2706 def Sketcher2D (self):
2708 Obtain a 2D sketcher interface.
2711 sk = geompy.Sketcher2D()
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)
2719 Sketch_1 = sk.wire(geomObj_1)
2721 sk = Sketcher2D (self)
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,
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.
2732 # @return New GEOM.GEOM_Object, containing the created wire.
2734 # @ref tui_3dsketcher_page "Example"
2735 @ManageTransactions("CurvesOp")
2736 def Make3DSketcher(self, theCoordinates, theName=None):
2738 Create a sketcher wire, following the numerical description,
2739 passed through theCoordinates argument.
2742 theCoordinates double values, defining points to create a wire,
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.
2749 New GEOM_Object, containing the created wire.
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")
2758 ## Obtain a 3D sketcher interface
2759 # @return An instance of @ref gsketcher.Sketcher3D "Sketcher3D" interface
2761 # @ref tui_3dsketcher_page "Example"
2762 def Sketcher3D (self):
2764 Obtain a 3D sketcher interface.
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)
2773 a3D_Sketcher_1 = sk.wire()
2775 sk = Sketcher3D (self)
2778 ## Obtain a 2D polyline creation interface
2779 # @return An instance of @ref gsketcher.Polyline2D "Polyline2D" interface
2781 # @ref tui_3dsketcher_page "Example"
2782 def Polyline2D (self):
2784 Obtain a 2D polyline creation interface.
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)
2794 pl = Polyline2D (self)
2797 # end of l3_sketcher
2800 ## @addtogroup l3_3d_primitives
2803 ## Create a box by coordinates of two opposite vertices.
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.
2811 # @return New GEOM.GEOM_Object, containing the created box.
2813 # @ref tui_creation_box "Example"
2814 def MakeBox(self, x1, y1, z1, x2, y2, z2, theName=None):
2816 Create a box by coordinates of two opposite vertices.
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.
2826 New GEOM.GEOM_Object, containing the created box.
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)
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.
2844 # @return New GEOM.GEOM_Object, containing the created box.
2846 # @ref tui_creation_box "Example"
2847 @ManageTransactions("PrimOp")
2848 def MakeBoxDXDYDZ(self, theDX, theDY, theDZ, theName=None):
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).
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.
2863 New GEOM.GEOM_Object, containing the created box.
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")
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.
2881 # @return New GEOM.GEOM_Object, containing the created box.
2883 # @ref tui_creation_box "Example"
2884 @ManageTransactions("PrimOp")
2885 def MakeBoxTwoPnt(self, thePnt1, thePnt2, theName=None):
2887 Create a box with two specified opposite vertices,
2888 and with edges, parallel to the coordinate axes
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.
2898 New GEOM.GEOM_Object, containing the created box.
2900 # Example: see GEOM_TestAll.py
2901 anObj = self.PrimOp.MakeBoxTwoPnt(thePnt1, thePnt2)
2902 RaiseIfFailed("MakeBoxTwoPnt", self.PrimOp)
2903 self._autoPublish(anObj, theName, "box")
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.
2914 # @return New GEOM.GEOM_Object, containing the created face.
2916 # @ref tui_creation_face "Example"
2917 @ManageTransactions("PrimOp")
2918 def MakeFaceHW(self, theH, theW, theOrientation, theName=None):
2920 Create a face with specified dimensions with edges parallel to coordinate axes.
2923 theH height 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.
2931 New GEOM.GEOM_Object, containing the created face.
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")
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
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.
2951 # @return New GEOM.GEOM_Object, containing the created face.
2953 # @ref tui_creation_face "Example"
2954 @ManageTransactions("PrimOp")
2955 def MakeFaceObjHW(self, theObj, theH, theW, theName=None):
2957 Create a face from another plane and two sizes,
2958 vertical size and horisontal size.
2961 theObj Normale vector to the creating face or
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.
2970 New GEOM_Object, containing the created face.
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")
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.
2988 # @return New GEOM.GEOM_Object, containing the created disk.
2990 # @ref tui_creation_disk "Example"
2991 @ManageTransactions("PrimOp")
2992 def MakeDiskPntVecR(self, thePnt, theVec, theR, theName=None):
2994 Create a disk with given center, normal vector and radius.
2998 theVec Vector, normal to the plane of the disk.
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.
3005 New GEOM.GEOM_Object, containing the created disk.
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")
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.
3021 # @return New GEOM.GEOM_Object, containing the created disk.
3023 # @ref tui_creation_disk "Example"
3024 @ManageTransactions("PrimOp")
3025 def MakeDiskThreePnt(self, thePnt1, thePnt2, thePnt3, theName=None):
3027 Create a disk, passing through three given points
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.
3036 New GEOM.GEOM_Object, containing the created disk.
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")
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.
3051 # @return New GEOM.GEOM_Object, containing the created disk.
3053 # @ref tui_creation_face "Example"
3054 @ManageTransactions("PrimOp")
3055 def MakeDiskR(self, theR, theOrientation, theName=None):
3057 Create a disk with specified dimensions along OX-OY coordinate axes.
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.
3067 New GEOM.GEOM_Object, containing the created disk.
3070 Disk3 = geompy.MakeDiskR(100., 1)
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")
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.
3089 # @return New GEOM.GEOM_Object, containing the created cylinder.
3091 # @ref tui_creation_cylinder "Example"
3092 @ManageTransactions("PrimOp")
3093 def MakeCylinder(self, thePnt, theAxis, theR, theH, theName=None):
3095 Create a cylinder with given base point, axis, radius and height.
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.
3107 New GEOM.GEOM_Object, containing the created cylinder.
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")
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.
3127 # @return New GEOM.GEOM_Object, containing the created cylinder.
3129 # @ref tui_creation_cylinder "Example"
3130 @ManageTransactions("PrimOp")
3131 def MakeCylinderA(self, thePnt, theAxis, theR, theH, theA, theName=None):
3133 Create a portion of cylinder with given base point, axis, radius, height and angle.
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.
3146 New GEOM.GEOM_Object, containing the created cylinder.
3148 # Example: see GEOM_TestAll.py
3150 if isinstance(theA,str):
3152 theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
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")
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.
3172 # @return New GEOM.GEOM_Object, containing the created cylinder.
3174 # @ref tui_creation_cylinder "Example"
3175 @ManageTransactions("PrimOp")
3176 def MakeCylinderRH(self, theR, theH, theName=None):
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.
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.
3190 New GEOM.GEOM_Object, containing the created cylinder.
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")
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.
3210 # @return New GEOM.GEOM_Object, containing the created cylinder.
3212 # @ref tui_creation_cylinder "Example"
3213 @ManageTransactions("PrimOp")
3214 def MakeCylinderRHA(self, theR, theH, theA, theName=None):
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.
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.
3229 New GEOM.GEOM_Object, containing the created cylinder.
3231 # Example: see GEOM_TestAll.py
3233 if isinstance(theA,str):
3235 theR,theH,theA,Parameters = ParseParameters(theR, theH, theA)
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")
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.
3253 # @return New GEOM.GEOM_Object, containing the created sphere.
3255 # @ref tui_creation_sphere "Example"
3256 @ManageTransactions("PrimOp")
3257 def MakeSpherePntR(self, thePnt, theR, theName=None):
3259 Create a sphere with given center and radius.
3262 thePnt Sphere center.
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.
3269 New GEOM.GEOM_Object, containing the created sphere.
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")
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.
3286 # @return New GEOM.GEOM_Object, containing the created sphere.
3288 # @ref tui_creation_sphere "Example"
3289 def MakeSphere(self, x, y, z, theR, theName=None):
3291 Create a sphere with given center and radius.
3294 x,y,z Coordinates of sphere center.
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.
3301 New GEOM.GEOM_Object, containing the created sphere.
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)
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.
3315 # @return New GEOM.GEOM_Object, containing the created sphere.
3317 # @ref tui_creation_sphere "Example"
3318 @ManageTransactions("PrimOp")
3319 def MakeSphereR(self, theR, theName=None):
3321 Create a sphere with given radius at the origin of coordinate system.
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.
3330 New GEOM.GEOM_Object, containing the created sphere.
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")
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.
3352 # @return New GEOM.GEOM_Object, containing the created cone.
3354 # @ref tui_creation_cone "Example"
3355 @ManageTransactions("PrimOp")
3356 def MakeCone(self, thePnt, theAxis, theR1, theR2, theH, theName=None):
3358 Create a cone with given base point, axis, height and radiuses.
3361 thePnt Central point of the first cone base.
3363 theR1 Radius of the first cone base.
3364 theR2 Radius of the second cone base.
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.
3371 If both radiuses are non-zero, the cone will be truncated.
3372 If the radiuses are equal, a cylinder will be created instead.
3375 New GEOM.GEOM_Object, containing the created cone.
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")
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.
3397 # @return New GEOM.GEOM_Object, containing the created cone.
3399 # @ref tui_creation_cone "Example"
3400 @ManageTransactions("PrimOp")
3401 def MakeConeR1R2H(self, theR1, theR2, theH, theName=None):
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.
3408 theR1 Radius of the first cone base.
3409 theR2 Radius of the second cone base.
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.
3416 If both radiuses are non-zero, the cone will be truncated.
3417 If the radiuses are equal, a cylinder will be created instead.
3420 New GEOM.GEOM_Object, containing the created cone.
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")
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.
3439 # @return New GEOM.GEOM_Object, containing the created torus.
3441 # @ref tui_creation_torus "Example"
3442 @ManageTransactions("PrimOp")
3443 def MakeTorus(self, thePnt, theVec, theRMajor, theRMinor, theName=None):
3445 Create a torus with given center, normal vector and radiuses.
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.
3457 New GEOM.GEOM_Object, containing the created torus.
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")
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.
3474 # @return New GEOM.GEOM_Object, containing the created torus.
3476 # @ref tui_creation_torus "Example"
3477 @ManageTransactions("PrimOp")
3478 def MakeTorusRR(self, theRMajor, theRMinor, theName=None):
3480 Create a torus with given radiuses at the origin of coordinate system.
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.
3490 New GEOM.GEOM_Object, containing the created torus.
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")
3500 # end of l3_3d_primitives
3503 ## @addtogroup l3_complex
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.
3516 # @return New GEOM.GEOM_Object, containing the created prism.
3518 # @ref tui_creation_prism "Example"
3519 @ManageTransactions("PrimOp")
3520 def MakePrism(self, theBase, thePoint1, thePoint2, theScaleFactor = -1.0, theName=None):
3522 Create a shape by extrusion of the base shape along a vector, defined by two points.
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.
3535 New GEOM.GEOM_Object, containing the created prism.
3537 # Example: see GEOM_TestAll.py
3540 if theScaleFactor > 0:
3541 theScaleFactor,Parameters = ParseParameters(theScaleFactor)
3542 anObj = self.PrimOp.MakePrismTwoPntWithScaling(theBase, thePoint1, thePoint2, theScaleFactor)
3544 anObj = self.PrimOp.MakePrismTwoPnt(theBase, thePoint1, thePoint2)
3545 RaiseIfFailed("MakePrismTwoPnt", self.PrimOp)
3546 anObj.SetParameters(Parameters)
3547 self._autoPublish(anObj, theName, "prism")
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.
3559 # @return New GEOM.GEOM_Object, containing the created prism.
3561 # @ref tui_creation_prism "Example"
3562 @ManageTransactions("PrimOp")
3563 def MakePrism2Ways(self, theBase, thePoint1, thePoint2, theName=None):
3565 Create a shape by extrusion of the base shape along a
3566 vector, defined by two points, in 2 Ways (forward/backward).
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.
3577 New GEOM.GEOM_Object, containing the created prism.
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")
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.
3597 # @return New GEOM.GEOM_Object, containing the created prism.
3599 # @ref tui_creation_prism "Example"
3600 @ManageTransactions("PrimOp")
3601 def MakePrismVecH(self, theBase, theVec, theH, theScaleFactor = -1.0, theName=None):
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.
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.
3618 New GEOM.GEOM_Object, containing the created prism.
3620 # Example: see GEOM_TestAll.py
3623 if theScaleFactor > 0:
3624 theH,theScaleFactor,Parameters = ParseParameters(theH,theScaleFactor)
3625 anObj = self.PrimOp.MakePrismVecHWithScaling(theBase, theVec, theH, theScaleFactor)
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")
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.
3644 # @return New GEOM.GEOM_Object, containing the created prism.
3646 # @ref tui_creation_prism "Example"
3647 @ManageTransactions("PrimOp")
3648 def MakePrismVecH2Ways(self, theBase, theVec, theH, theName=None):
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).
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.
3663 New GEOM.GEOM_Object, containing the created prism.
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")
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.
3682 # @return New GEOM.GEOM_Object, containing the created prism.
3684 # @ref tui_creation_prism "Example"
3685 @ManageTransactions("PrimOp")
3686 def MakePrismDXDYDZ(self, theBase, theDX, theDY, theDZ, theScaleFactor = -1.0, theName=None):
3688 Create a shape by extrusion of the base shape along the dx, dy, dz direction
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.
3700 New GEOM.GEOM_Object, containing the created prism.
3702 # Example: see GEOM_TestAll.py
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)
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")
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.
3725 # @return New GEOM.GEOM_Object, containing the created prism.
3727 # @ref tui_creation_prism "Example"
3728 @ManageTransactions("PrimOp")
3729 def MakePrismDXDYDZ2Ways(self, theBase, theDX, theDY, theDZ, theName=None):
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).
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.
3743 New GEOM.GEOM_Object, containing the created prism.
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")
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.
3763 # @return New GEOM.GEOM_Object, containing the created revolution.
3765 # @ref tui_creation_revolution "Example"
3766 @ManageTransactions("PrimOp")
3767 def MakeRevolution(self, theBase, theAxis, theAngle, theName=None):
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.
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.
3782 New GEOM.GEOM_Object, containing the created revolution.
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")
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.
3803 # @return New GEOM.GEOM_Object, containing the created revolution.
3805 # @ref tui_creation_revolution "Example"
3806 @ManageTransactions("PrimOp")
3807 def MakeRevolution2Ways(self, theBase, theAxis, theAngle, theName=None):
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).
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.
3823 New GEOM.GEOM_Object, containing the created revolution.
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")
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.
3850 # @return New GEOM.GEOM_Object (face), containing the created filling surface.
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):
3857 Create a face from a given set of contours.
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.
3878 New GEOM.GEOM_Object (face), containing the created filling surface.
3881 filling = geompy.MakeFilling(compound, 2, 5, 0.0001, 0.0001, 5)
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")
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.
3904 # @return New GEOM.GEOM_Object (face), containing the created filling surface.
3906 # @ref tui_creation_filling "Example"
3907 @ManageTransactions("PrimOp")
3908 def MakeFillingNew(self, theContours, theMinDeg=2, theMaxDeg=5, theTol3D=0.0001, theName=None):
3910 Create a filling from the given compound of contours.
3911 This method corresponds to MakeFilling() with isApprox=True.
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.
3923 New GEOM.GEOM_Object (face), containing the created filling surface.
3926 filling = geompy.MakeFillingNew(compound, 2, 5, 0.0001)
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")
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.
3946 # @return New GEOM.GEOM_Object, containing the created shell or solid.
3948 # @ref swig_todo "Example"
3949 @ManageTransactions("PrimOp")
3950 def MakeThruSections(self, theSeqSections, theModeSolid, thePreci, theRuled, theName=None):
3952 Create a shell or solid passing through set of sections.Sections should be wires,edges or vertices.
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.
3964 New GEOM.GEOM_Object, containing the created shell or solid.
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")
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",
3981 # - If \a theBase is closed edge or wire, face or shell: "Down", "Up",
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>
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
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.
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.
4007 # @ref tui_creation_pipe "Example"
4008 @ManageTransactions("PrimOp")
4009 def MakePipe(self, theBase, thePath,
4010 IsGenerateGroups=False, theName=None):
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",
4021 - If theBase is closed edge or wire, face or shell: "Down", "Up",
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
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.
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.
4047 # Example: see GEOM_TestAll.py
4048 aList = self.PrimOp.MakePipe(theBase, thePath, IsGenerateGroups)
4049 RaiseIfFailed("MakePipe", self.PrimOp)
4051 if IsGenerateGroups:
4052 self._autoPublish(aList, theName, "pipe")
4055 self._autoPublish(aList[0], theName, "pipe")
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.
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.
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):
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().
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.
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.
4120 aList = self.PrimOp.MakePipeWithDifferentSections(theSeqBases,
4121 theLocations, thePath,
4122 theWithContact, theWithCorrection,
4123 False, IsGenerateGroups)
4124 RaiseIfFailed("MakePipeWithDifferentSections", self.PrimOp)
4126 if IsGenerateGroups:
4127 self._autoPublish(aList, theName, "pipe")
4130 self._autoPublish(aList[0], theName, "pipe")
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.
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):
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.
4157 aList = self.PrimOp.MakePipeWithDifferentSections(theSeqBases,
4158 theLocations, thePath,
4160 True, IsGenerateGroups)
4161 RaiseIfFailed("MakePipeWithDifferentSectionsBySteps", self.PrimOp)
4163 if IsGenerateGroups:
4164 self._autoPublish(aList, theName, "pipe")
4167 self._autoPublish(aList[0], theName, "pipe")
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.
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.
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):
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().
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.
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.
4250 aList = self.PrimOp.MakePipeWithShellSections(theSeqBases, theSeqSubBases,
4251 theLocations, thePath,
4252 theWithContact, theWithCorrection,
4254 RaiseIfFailed("MakePipeWithShellSections", self.PrimOp)
4256 if IsGenerateGroups:
4257 self._autoPublish(aList, theName, "pipe")
4260 self._autoPublish(aList[0], theName, "pipe")
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):
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.
4282 nbsect = len(theSeqBases)
4283 nbsubsect = len(theSeqSubBases)
4284 #print "nbsect = ",nbsect
4285 for i in range(1,nbsect):
4287 tmpSeqBases = [ theSeqBases[i-1], theSeqBases[i] ]
4288 tmpLocations = [ theLocations[i-1], theLocations[i] ]
4290 if nbsubsect>0: tmpSeqSubBases = [ theSeqSubBases[i-1], theSeqSubBases[i] ]
4291 aList = self.PrimOp.MakePipeWithShellSections(tmpSeqBases, tmpSeqSubBases,
4292 tmpLocations, thePath,
4293 theWithContact, theWithCorrection,
4295 if self.PrimOp.IsDone() == 0:
4296 print("Problems with pipe creation between ",i," and ",i+1," sections")
4297 RaiseIfFailed("MakePipeWithShellSections", self.PrimOp)
4300 print("Pipe between ",i," and ",i+1," sections is OK")
4301 res.append(aList[0])
4305 resc = self.MakeCompound(res)
4306 #resc = self.MakeSewing(res, 0.001)
4307 #print "resc: ",resc
4308 self._autoPublish(resc, theName, "pipe")
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.
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.
4328 # @ref tui_creation_pipe_without_path "Example"
4329 @ManageTransactions("PrimOp")
4330 def MakePipeShellsWithoutPath(self, theSeqBases, theLocations,
4331 IsGenerateGroups=False, theName=None):
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().
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.
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.
4353 aList = self.PrimOp.MakePipeShellsWithoutPath(theSeqBases, theLocations,
4355 RaiseIfFailed("MakePipeShellsWithoutPath", self.PrimOp)
4357 if IsGenerateGroups:
4358 self._autoPublish(aList, theName, "pipe")
4361 self._autoPublish(aList[0], theName, "pipe")
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.
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.
4386 # @ref tui_creation_pipe "Example"
4387 @ManageTransactions("PrimOp")
4388 def MakePipeBiNormalAlongVector(self, theBase, thePath, theVec,
4389 IsGenerateGroups=False, theName=None):
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().
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.
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.
4416 # Example: see GEOM_TestAll.py
4417 aList = self.PrimOp.MakePipeBiNormalAlongVector(theBase, thePath,
4418 theVec, IsGenerateGroups)
4419 RaiseIfFailed("MakePipeBiNormalAlongVector", self.PrimOp)
4421 if IsGenerateGroups:
4422 self._autoPublish(aList, theName, "pipe")
4425 self._autoPublish(aList[0], theName, "pipe")
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
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.
4442 # @return New GEOM.GEOM_Object, containing the created solid
4444 # @ref tui_creation_thickness "Example"
4445 @ManageTransactions("PrimOp")
4446 def MakeThickSolid(self, theShape, theThickness,
4447 theFacesIDs=[], theInside=False, theName=None):
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.
4454 theShape Face or Shell to get thick solid or solid to get
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.
4466 New GEOM.GEOM_Object, containing the created solid
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")
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
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
4489 # @return The modified shape
4491 # @ref tui_creation_thickness "Example"
4492 @ManageTransactions("PrimOp")
4493 def Thicken(self, theShape, theThickness, theFacesIDs=[], theInside=False):
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
4501 theShape Face or Shell to get thick solid or solid to get
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
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)
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.
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.
4537 # @return New GEOM.GEOM_Object, containing an edge or wire that represent
4538 # source pipe's "path".
4540 # @ref tui_creation_pipe_path "Example"
4541 @ManageTransactions("PrimOp")
4542 def RestorePath (self, theShape, theBase1, theBase2, theName=None):
4544 Build a middle path of a pipe-like shape.
4545 The path shape can be a wire or an edge.
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.
4557 New GEOM_Object, containing an edge or wire that represent
4560 anObj = self.PrimOp.RestorePath(theShape, theBase1, theBase2)
4561 RaiseIfFailed("RestorePath", self.PrimOp)
4562 self._autoPublish(anObj, theName, "path")
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.
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.
4582 # @return New GEOM.GEOM_Object, containing an edge or wire that represent
4583 # source pipe's "path".
4585 # @ref tui_creation_pipe_path "Example"
4586 @ManageTransactions("PrimOp")
4587 def RestorePathEdges (self, theShape, listEdges1, listEdges2, theName=None):
4589 Build a middle path of a pipe-like shape.
4590 The path shape can be a wire or an edge.
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.
4602 New GEOM_Object, containing an edge or wire that represent
4605 anObj = self.PrimOp.RestorePathEdges(theShape, listEdges1, listEdges2)
4606 RaiseIfFailed("RestorePath", self.PrimOp)
4607 self._autoPublish(anObj, theName, "path")
4613 ## @addtogroup l3_basic_go
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.
4623 # @return New GEOM.GEOM_Object, containing the created edge.
4625 # @ref tui_creation_edge "Example"
4626 @ManageTransactions("ShapesOp")
4627 def MakeEdge(self, thePnt1, thePnt2, theName=None):
4629 Create a linear edge with specified ends.
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.
4639 New GEOM.GEOM_Object, containing the created edge.
4641 # Example: see GEOM_TestAll.py
4642 anObj = self.ShapesOp.MakeEdge(thePnt1, thePnt2)
4643 RaiseIfFailed("MakeEdge", self.ShapesOp)
4644 self._autoPublish(anObj, theName, "edge")
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.
4657 # @return New GEOM.GEOM_Object, containing the created edge.
4659 # @ref tui_creation_edge "Example"
4660 @ManageTransactions("ShapesOp")
4661 def MakeEdgeOnCurveByLength(self, theRefCurve, theLength, theStartPoint = None, theName=None):
4663 Create a new edge, corresponding to the given length on the given curve.
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.
4676 New GEOM.GEOM_Object, containing the created edge.
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")
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.
4694 # @return New GEOM.GEOM_Object, containing the created edge.
4696 # @ref tui_creation_edge "Example"
4697 @ManageTransactions("ShapesOp")
4698 def MakeEdgeWire(self, theWire, theLinearTolerance = 1e-07, theAngularTolerance = 1e-12, theName=None):
4700 Create an edge from specified 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.
4711 New GEOM.GEOM_Object, containing the created edge.
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")
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.
4727 # @return New GEOM.GEOM_Object, containing the created wire.
4729 # @ref tui_creation_wire "Example"
4730 @ManageTransactions("ShapesOp")
4731 def MakeWire(self, theEdgesAndWires, theTolerance = 1e-07, theName=None):
4733 Create a wire from the set of edges and wires.
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.
4744 New GEOM.GEOM_Object, containing the created wire.
4746 # Example: see GEOM_TestAll.py
4747 anObj = self.ShapesOp.MakeWire(theEdgesAndWires, theTolerance)
4748 RaiseIfFailed("MakeWire", self.ShapesOp)
4749 self._autoPublish(anObj, theName, "wire")
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.
4763 # @return New GEOM.GEOM_Object, containing the created face (compound of faces).
4765 # @ref tui_creation_face "Example"
4766 @ManageTransactions("ShapesOp")
4767 def MakeFace(self, theWire, isPlanarWanted, theName=None, raiseException=False):
4769 Create a face on the given wire.
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.
4783 New GEOM.GEOM_Object, containing the created face (compound of faces).
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)
4790 RaiseIfFailed("MakeFace", self.ShapesOp)
4791 self._autoPublish(anObj, theName, "face")
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.
4805 # @return New GEOM.GEOM_Object, containing the created face (compound of faces).
4807 # @ref tui_creation_face "Example"
4808 @ManageTransactions("ShapesOp")
4809 def MakeFaceWires(self, theWires, isPlanarWanted, theName=None, raiseException=False):
4811 Create a face on the given wires set.
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.
4825 New GEOM.GEOM_Object, containing the created face (compound of faces).
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)
4832 RaiseIfFailed("MakeFaceWires", self.ShapesOp)
4833 self._autoPublish(anObj, theName, "face")
4836 ## See MakeFaceWires() method for details.
4838 # @ref tui_creation_face "Example 1"
4839 # \n @ref swig_MakeFaces "Example 2"
4840 def MakeFaces(self, theWires, isPlanarWanted, theName=None):
4842 See geompy.MakeFaceWires() method for details.
4844 # Example: see GEOM_TestOthers.py
4845 # note: auto-publishing is done in self.MakeFaceWires()
4846 anObj = self.MakeFaceWires(theWires, isPlanarWanted, theName)
4849 ## Create a face based on a surface from given face bounded
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.
4857 # @return New GEOM.GEOM_Object, containing the created face.
4859 # @ref tui_creation_face "Example"
4860 @ManageTransactions("ShapesOp")
4861 def MakeFaceFromSurface(self, theFace, theWire, theName=None):
4863 Create a face based on a surface from given face bounded
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.
4874 New GEOM.GEOM_Object, containing the created face.
4876 # Example: see GEOM_TestAll.py
4877 anObj = self.ShapesOp.MakeFaceFromSurface(theFace, theWire)
4878 RaiseIfFailed("MakeFaceFromSurface", self.ShapesOp)
4879 self._autoPublish(anObj, theName, "face")
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.
4891 # @return New GEOM.GEOM_Object, containing the created face.
4893 # @ref tui_creation_face "Example"
4894 @ManageTransactions("ShapesOp")
4895 def MakeFaceWithConstraints(self, theConstraints, theName=None):
4897 Create a face from a set of edges with the given constraints.
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.
4909 New GEOM.GEOM_Object, containing the created face.
4911 # Example: see GEOM_TestAll.py
4912 anObj = self.ShapesOp.MakeFaceWithConstraints(theConstraints)
4914 RaiseIfFailed("MakeFaceWithConstraints", self.ShapesOp)
4915 self._autoPublish(anObj, theName, "face")
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.
4924 # @return New GEOM.GEOM_Object, containing the created shell (compound of shells).
4926 # @ref tui_creation_shell "Example"
4927 @ManageTransactions("ShapesOp")
4928 def MakeShell(self, theFacesAndShells, theName=None):
4930 Create a shell from the set of faces and shells.
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.
4939 New GEOM.GEOM_Object, containing the created shell (compound of shells).
4941 # Example: see GEOM_TestAll.py
4942 anObj = self.ShapesOp.MakeShell( ToList( theFacesAndShells ))
4943 RaiseIfFailed("MakeShell", self.ShapesOp)
4944 self._autoPublish(anObj, theName, "shell")
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.
4953 # @return New GEOM.GEOM_Object, containing the created solid.
4955 # @ref tui_creation_solid "Example"
4956 @ManageTransactions("ShapesOp")
4957 def MakeSolid(self, theShells, theName=None):
4959 Create a solid, bounded by the given shells.
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.
4968 New GEOM.GEOM_Object, containing the created solid.
4970 # Example: see GEOM_TestAll.py
4971 theShells = ToList(theShells)
4972 if len(theShells) == 1:
4973 descr = self._IsGoodForSolid(theShells[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")
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.
4989 # @return New GEOM.GEOM_Object, containing the created compound.
4991 # @ref tui_creation_compound "Example"
4992 @ManageTransactions("ShapesOp")
4993 def MakeCompound(self, theShapes, theName=None):
4995 Create a compound of the given shapes.
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.
5004 New GEOM.GEOM_Object, containing the created compound.
5006 # Example: see GEOM_TestAll.py
5007 anObj = self.ShapesOp.MakeCompound(ToList(theShapes))
5008 RaiseIfFailed("MakeCompound", self.ShapesOp)
5009 self._autoPublish(anObj, theName, "compound")
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.
5020 # @return New GEOM.GEOM_Object, containing the created solid (or compound of solids).
5022 # @ref tui_creation_solid_from_faces "Example"
5023 @ManageTransactions("ShapesOp")
5024 def MakeSolidFromConnectedFaces(self, theFacesOrShells, isIntersect = False, theName=None):
5026 Create a solid (or solids) from the set of connected faces and/or shells.
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.
5037 New GEOM.GEOM_Object, containing the created solid (or compound of solids).
5039 # Example: see GEOM_TestAll.py
5040 anObj = self.ShapesOp.MakeSolidFromConnectedFaces(theFacesOrShells, isIntersect)
5041 RaiseIfFailed("MakeSolidFromConnectedFaces", self.ShapesOp)
5042 self._autoPublish(anObj, theName, "solid")
5045 # end of l3_basic_go
5048 ## @addtogroup l2_measure
5051 ## Gives quantity of faces in the given shape.
5052 # @param theShape Shape to count faces of.
5053 # @return Quantity of faces.
5055 # @ref swig_NumberOf "Example"
5056 @ManageTransactions("ShapesOp")
5057 def NumberOfFaces(self, theShape):
5059 Gives quantity of faces in the given shape.
5062 theShape Shape to count faces of.
5067 # Example: see GEOM_TestOthers.py
5068 nb_faces = self.ShapesOp.NumberOfFaces(theShape)
5069 RaiseIfFailed("NumberOfFaces", self.ShapesOp)
5072 ## Gives quantity of edges in the given shape.
5073 # @param theShape Shape to count edges of.
5074 # @return Quantity of edges.
5076 # @ref swig_NumberOf "Example"
5077 @ManageTransactions("ShapesOp")
5078 def NumberOfEdges(self, theShape):
5080 Gives quantity of edges in the given shape.
5083 theShape Shape to count edges of.
5088 # Example: see GEOM_TestOthers.py
5089 nb_edges = self.ShapesOp.NumberOfEdges(theShape)
5090 RaiseIfFailed("NumberOfEdges", self.ShapesOp)
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.
5098 # @ref swig_NumberOf "Example"
5099 @ManageTransactions("ShapesOp")
5100 def NumberOfSubShapes(self, theShape, theShapeType):
5102 Gives quantity of sub-shapes of type theShapeType in the given shape.
5105 theShape Shape to count sub-shapes of.
5106 theShapeType Type of sub-shapes to count (see geompy.ShapeType)
5109 Quantity of sub-shapes of given type.
5111 # Example: see GEOM_TestOthers.py
5112 nb_ss = self.ShapesOp.NumberOfSubShapes(theShape, theShapeType)
5113 RaiseIfFailed("NumberOfSubShapes", self.ShapesOp)
5116 ## Gives quantity of solids in the given shape.
5117 # @param theShape Shape to count solids in.
5118 # @return Quantity of solids.
5120 # @ref swig_NumberOf "Example"
5121 @ManageTransactions("ShapesOp")
5122 def NumberOfSolids(self, theShape):
5124 Gives quantity of solids in the given shape.
5127 theShape Shape to count solids in.
5132 # Example: see GEOM_TestOthers.py
5133 nb_solids = self.ShapesOp.NumberOfSubShapes(theShape, self.ShapeType["SOLID"])
5134 RaiseIfFailed("NumberOfSolids", self.ShapesOp)
5140 ## @addtogroup l3_healing
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.
5149 # @return The reversed copy of theShape.
5151 # @ref swig_ChangeOrientation "Example"
5152 @ManageTransactions("ShapesOp")
5153 def ChangeOrientation(self, theShape, theName=None):
5155 Reverses an orientation the given shape.
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.
5164 The reversed copy of theShape.
5166 # Example: see GEOM_TestAll.py
5167 anObj = self.ShapesOp.ChangeOrientation(theShape)
5168 RaiseIfFailed("ChangeOrientation", self.ShapesOp)
5169 self._autoPublish(anObj, theName, "reversed")
5172 ## See ChangeOrientation() method for details.
5174 # @ref swig_OrientationChange "Example"
5175 def OrientationChange(self, theShape, theName=None):
5177 See geompy.ChangeOrientation method for details.
5179 # Example: see GEOM_TestOthers.py
5180 # note: auto-publishing is done in self.ChangeOrientation()
5181 anObj = self.ChangeOrientation(theShape, theName)
5187 ## @addtogroup l4_obtain
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.
5195 # @ref tui_free_faces_page "Example"
5196 @ManageTransactions("ShapesOp")
5197 def GetFreeFacesIDs(self,theShape):
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.
5203 theShape Shape to find free faces in.
5206 List of IDs of all free faces, contained in theShape.
5208 # Example: see GEOM_TestOthers.py
5209 anIDs = self.ShapesOp.GetFreeFacesIDs(theShape)
5210 RaiseIfFailed("GetFreeFacesIDs", self.ShapesOp)
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.
5221 # @return List of sub-shapes of theShape1, shared with theShape2.
5223 # @ref swig_GetSharedShapes "Example"
5224 @ManageTransactions("ShapesOp")
5225 def GetSharedShapes(self, theShape1, theShape2, theShapeType, theName=None):
5227 Get all sub-shapes of theShape1 of the given type, shared with theShape2.
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.
5238 List of sub-shapes of theShape1, shared with theShape2.
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")
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.
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.
5260 # @return List of all found sub-shapes.
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):
5268 Get sub-shapes, shared by input shapes.
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.
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.
5285 List of all found sub-shapes.
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")
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.
5305 # @return List of all found sub-shapes.
5307 # @ref swig_GetShapesOnPlane "Example"
5308 @ManageTransactions("ShapesOp")
5309 def GetShapesOnPlane(self, theShape, theShapeType, theAx1, theState, theName=None):
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.
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.
5326 List of all found sub-shapes.
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")
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)
5343 # @return List of all found sub-shapes indices.
5345 # @ref swig_GetShapesOnPlaneIDs "Example"
5346 @ManageTransactions("ShapesOp")
5347 def GetShapesOnPlaneIDs(self, theShape, theShapeType, theAx1, theState):
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.
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)
5361 List of all found sub-shapes indices.
5363 # Example: see GEOM_TestOthers.py
5364 aList = self.ShapesOp.GetShapesOnPlaneIDs(theShape, theShapeType, theAx1, theState)
5365 RaiseIfFailed("GetShapesOnPlaneIDs", self.ShapesOp)
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.
5381 # @return List of all found sub-shapes.
5383 # @ref swig_GetShapesOnPlaneWithLocation "Example"
5384 @ManageTransactions("ShapesOp")
5385 def GetShapesOnPlaneWithLocation(self, theShape, theShapeType, theAx1, thePnt, theState, theName=None):
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.
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.
5403 List of all found sub-shapes.
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")
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)
5422 # @return List of all found sub-shapes indices.
5424 # @ref swig_GetShapesOnPlaneWithLocationIDs "Example"
5425 @ManageTransactions("ShapesOp")
5426 def GetShapesOnPlaneWithLocationIDs(self, theShape, theShapeType, theAx1, thePnt, theState):
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.
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)
5441 List of all found sub-shapes indices.
5443 # Example: see GEOM_TestOthers.py
5444 aList = self.ShapesOp.GetShapesOnPlaneWithLocationIDs(theShape, theShapeType,
5445 theAx1, thePnt, theState)
5446 RaiseIfFailed("GetShapesOnPlaneWithLocationIDs", self.ShapesOp)
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.
5461 # @return List of all found sub-shapes.
5463 # @ref swig_GetShapesOnCylinder "Example"
5464 @ManageTransactions("ShapesOp")
5465 def GetShapesOnCylinder(self, theShape, theShapeType, theAxis, theRadius, theState, theName=None):
5467 Find in theShape all sub-shapes of type theShapeType, situated relatively
5468 the specified cylinder by the certain way, defined through theState parameter.
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.
5482 List of all found sub-shapes.
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")
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)
5499 # @return List of all found sub-shapes indices.
5501 # @ref swig_GetShapesOnCylinderIDs "Example"
5502 @ManageTransactions("ShapesOp")
5503 def GetShapesOnCylinderIDs(self, theShape, theShapeType, theAxis, theRadius, theState):
5505 Find in theShape all sub-shapes of type theShapeType, situated relatively
5506 the specified cylinder by the certain way, defined through theState parameter.
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)
5517 List of all found sub-shapes indices.
5519 # Example: see GEOM_TestOthers.py
5520 aList = self.ShapesOp.GetShapesOnCylinderIDs(theShape, theShapeType, theAxis, theRadius, theState)
5521 RaiseIfFailed("GetShapesOnCylinderIDs", self.ShapesOp)
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.
5537 # @return List of all found sub-shapes.
5539 # @ref swig_GetShapesOnCylinderWithLocation "Example"
5540 @ManageTransactions("ShapesOp")
5541 def GetShapesOnCylinderWithLocation(self, theShape, theShapeType, theAxis, thePnt, theRadius, theState, theName=None):
5543 Find in theShape all sub-shapes of type theShapeType, situated relatively
5544 the specified cylinder by the certain way, defined through theState parameter.
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.
5558 List of all found sub-shapes.
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")
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)
5576 # @return List of all found sub-shapes indices
5578 # @ref swig_GetShapesOnCylinderWithLocationIDs "Example"
5579 @ManageTransactions("ShapesOp")
5580 def GetShapesOnCylinderWithLocationIDs(self, theShape, theShapeType, theAxis, thePnt, theRadius, theState):
5582 Find in theShape all sub-shapes of type theShapeType, situated relatively
5583 the specified cylinder by the certain way, defined through theState parameter.
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)
5594 List of all found sub-shapes indices.
5596 # Example: see GEOM_TestOthers.py
5597 aList = self.ShapesOp.GetShapesOnCylinderWithLocationIDs(theShape, theShapeType, theAxis, thePnt, theRadius, theState)
5598 RaiseIfFailed("GetShapesOnCylinderWithLocationIDs", self.ShapesOp)
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.
5612 # @return List of all found sub-shapes.
5614 # @ref swig_GetShapesOnSphere "Example"
5615 @ManageTransactions("ShapesOp")
5616 def GetShapesOnSphere(self, theShape, theShapeType, theCenter, theRadius, theState, theName=None):
5618 Find in theShape all sub-shapes of type theShapeType, situated relatively
5619 the specified sphere by the certain way, defined through theState parameter.
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.
5632 List of all found sub-shapes.
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")
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)
5648 # @return List of all found sub-shapes indices.
5650 # @ref swig_GetShapesOnSphereIDs "Example"
5651 @ManageTransactions("ShapesOp")
5652 def GetShapesOnSphereIDs(self, theShape, theShapeType, theCenter, theRadius, theState):
5654 Find in theShape all sub-shapes of type theShapeType, situated relatively
5655 the specified sphere by the certain way, defined through theState parameter.
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)
5665 List of all found sub-shapes indices.
5667 # Example: see GEOM_TestOthers.py
5668 aList = self.ShapesOp.GetShapesOnSphereIDs(theShape, theShapeType, theCenter, theRadius, theState)
5669 RaiseIfFailed("GetShapesOnSphereIDs", self.ShapesOp)
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.
5685 # @return List of all found sub-shapes.
5687 # @ref swig_GetShapesOnQuadrangle "Example"
5688 @ManageTransactions("ShapesOp")
5689 def GetShapesOnQuadrangle(self, theShape, theShapeType,
5690 theTopLeftPoint, theTopRightPoint,
5691 theBottomLeftPoint, theBottomRightPoint, theState, theName=None):
5693 Find in theShape all sub-shapes of type theShapeType, situated relatively
5694 the specified quadrangle by the certain way, defined through theState parameter.
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.
5709 List of all found sub-shapes.
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")
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)
5729 # @return List of all found sub-shapes indices.
5731 # @ref swig_GetShapesOnQuadrangleIDs "Example"
5732 @ManageTransactions("ShapesOp")
5733 def GetShapesOnQuadrangleIDs(self, theShape, theShapeType,
5734 theTopLeftPoint, theTopRightPoint,
5735 theBottomLeftPoint, theBottomRightPoint, theState):
5737 Find in theShape all sub-shapes of type theShapeType, situated relatively
5738 the specified quadrangle by the certain way, defined through theState parameter.
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)
5750 List of all found sub-shapes indices.
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)
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.
5770 # @return List of all found sub-shapes.
5772 # @ref swig_GetShapesOnBox "Example"
5773 @ManageTransactions("ShapesOp")
5774 def GetShapesOnBox(self, theBox, theShape, theShapeType, theState, theName=None):
5776 Find in theShape all sub-shapes of type theShapeType, situated relatively
5777 the specified theBox by the certain way, defined through theState parameter.
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.
5789 List of all found sub-shapes.
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")
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)
5804 # @return List of all found sub-shapes indices.
5806 # @ref swig_GetShapesOnBoxIDs "Example"
5807 @ManageTransactions("ShapesOp")
5808 def GetShapesOnBoxIDs(self, theBox, theShape, theShapeType, theState):
5810 Find in theShape all sub-shapes of type theShapeType, situated relatively
5811 the specified theBox by the certain way, defined through theState parameter.
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)
5820 List of all found sub-shapes indices.
5822 # Example: see GEOM_TestOthers.py
5823 aList = self.ShapesOp.GetShapesOnBoxIDs(theBox, theShape, theShapeType, theState)
5824 RaiseIfFailed("GetShapesOnBoxIDs", self.ShapesOp)
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.
5838 # @return List of all found sub-shapes.
5840 # @ref swig_GetShapesOnShape "Example"
5841 @ManageTransactions("ShapesOp")
5842 def GetShapesOnShape(self, theCheckShape, theShape, theShapeType, theState, theName=None):
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.
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.
5858 List of all found sub-shapes.
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")
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.
5878 # @return All found sub-shapes as compound.
5880 # @ref swig_GetShapesOnShapeAsCompound "Example"
5881 @ManageTransactions("ShapesOp")
5882 def GetShapesOnShapeAsCompound(self, theCheckShape, theShape, theShapeType, theState, theName=None):
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.
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.
5898 All found sub-shapes as compound.
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")
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)
5915 # @return List of all found sub-shapes indices.
5917 # @ref swig_GetShapesOnShapeIDs "Example"
5918 @ManageTransactions("ShapesOp")
5919 def GetShapesOnShapeIDs(self, theCheckShape, theShape, theShapeType, theState):
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.
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)
5932 List of all found sub-shapes indices.
5934 # Example: see GEOM_TestOthers.py
5935 aList = self.ShapesOp.GetShapesOnShapeIDs(theCheckShape, theShape,
5936 theShapeType, theState)
5937 RaiseIfFailed("GetShapesOnShapeIDs", self.ShapesOp)
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.
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.
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
5959 # @ref swig_GetInPlace "Example"
5960 @ManageTransactions("ShapesOp")
5961 def GetInPlace(self, theShapeWhere, theShapeWhat, isNewImplementation = False, theName=None):
5963 Get sub-shape(s) of theShapeWhere, which are
5964 coincident with theShapeWhat or could be a part of it.
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.
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.
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.
5986 # Example: see GEOM_TestOthers.py
5988 if isNewImplementation:
5989 anObj = self.ShapesOp.GetInPlace(theShapeWhere, theShapeWhat)
5991 anObj = self.ShapesOp.GetInPlaceOld(theShapeWhere, theShapeWhat)
5993 RaiseIfFailed("GetInPlace", self.ShapesOp)
5994 self._autoPublish(anObj, theName, "inplace")
5997 ## Get sub-shape(s) of \a theShapeWhere, which are
5998 # coincident with \a theShapeWhat or could be a part of it.
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).
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.
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.
6016 # @ref swig_GetInPlace "Example"
6017 @ManageTransactions("ShapesOp")
6018 def GetInPlaceByHistory(self, theShapeWhere, theShapeWhat, theName=None):
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).
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.
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.
6038 # Example: see GEOM_TestOthers.py
6039 anObj = self.ShapesOp.GetInPlaceByHistory(theShapeWhere, theShapeWhat)
6040 RaiseIfFailed("GetInPlaceByHistory", self.ShapesOp)
6041 self._autoPublish(anObj, theName, "inplace")
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
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):
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
6068 theShapeWhere Shape to find sub-shapes of.
6069 theShapeWhat Shape, specifying what to find.
6072 List of lists of sub-shape IDS of theShapeWhere.
6074 return self.ShapesOp.GetInPlaceMap(theShapeWhere, theShapeWhat)
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.
6084 # @return New GEOM.GEOM_Object for found sub-shape.
6086 # @ref swig_GetSame "Example"
6087 @ManageTransactions("ShapesOp")
6088 def GetSame(self, theShapeWhere, theShapeWhat, theName=None):
6090 Get sub-shape of theShapeWhere, which is
6091 equal to theShapeWhat.
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.
6101 New GEOM.GEOM_Object for found sub-shape.
6103 anObj = self.ShapesOp.GetSame(theShapeWhere, theShapeWhat)
6104 RaiseIfFailed("GetSame", self.ShapesOp)
6105 self._autoPublish(anObj, theName, "sameShape")
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.
6115 # @ref swig_GetSame "Example"
6116 @ManageTransactions("ShapesOp")
6117 def GetSameIDs(self, theShapeWhere, theShapeWhat):
6119 Get sub-shape indices of theShapeWhere, which is
6120 equal to theShapeWhat.
6123 theShapeWhere Shape to find sub-shape of.
6124 theShapeWhat Shape, specifying what to find.
6127 List of all found sub-shapes indices.
6129 anObj = self.ShapesOp.GetSameIDs(theShapeWhere, theShapeWhat)
6130 RaiseIfFailed("GetSameIDs", self.ShapesOp)
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.
6146 # @ref tui_extend "Example"
6147 @ManageTransactions("ShapesOp")
6148 def ExtendEdge(self, theEdge, theMin, theMax, theName=None):
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.
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.
6165 New GEOM.GEOM_Object, containing the created edge.
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")
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.
6191 # @ref tui_extend "Example"
6192 @ManageTransactions("ShapesOp")
6193 def ExtendFace(self, theFace, theUMin, theUMax,
6194 theVMin, theVMax, theName=None):
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.
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.
6215 New GEOM.GEOM_Object, containing the created face.
6217 theUMin, theUMax, theVMin, theVMax, Parameters = ParseParameters(theUMin, theUMax, theVMin, theVMax)
6218 anObj = self.ShapesOp.ExtendFace(theFace, theUMin, theUMax,
6220 RaiseIfFailed("ExtendFace", self.ShapesOp)
6221 anObj.SetParameters(Parameters)
6222 self._autoPublish(anObj, theName, "face")
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.
6235 # @ref tui_creation_surface "Example"
6236 @ManageTransactions("ShapesOp")
6237 def MakeSurfaceFromFace(self, theFace, theName=None):
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).
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.
6251 New GEOM.GEOM_Object, containing the created face.
6253 anObj = self.ShapesOp.MakeSurfaceFromFace(theFace)
6254 RaiseIfFailed("MakeSurfaceFromFace", self.ShapesOp)
6255 self._autoPublish(anObj, theName, "surface")
6261 ## @addtogroup l4_access
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.
6272 # @return Found sub-shape.
6274 # @ref swig_all_decompose "Example"
6275 def GetSubShape(self, aShape, ListOfID, theName=None):
6277 Obtain a composite sub-shape of aShape, composed from sub-shapes
6278 of aShape, selected by their unique IDs inside aShape
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.
6290 # Example: see GEOM_TestAll.py
6291 anObj = self.AddSubShape(aShape,ListOfID)
6292 self._autoPublish(anObj, theName, "subshape")
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.
6301 # @ref swig_all_decompose "Example"
6302 @ManageTransactions("LocalOp")
6303 def GetSubShapeID(self, aShape, aSubShape):
6305 Obtain unique ID of sub-shape aSubShape inside aShape
6306 of aShape, selected by their unique IDs inside aShape
6309 aShape Shape to get sub-shape of.
6310 aSubShape Sub-shapes of aShape.
6313 ID of found sub-shape.
6315 # Example: see GEOM_TestAll.py
6316 anID = self.LocalOp.GetSubShapeIndex(aShape, aSubShape)
6317 RaiseIfFailed("GetSubShapeIndex", self.LocalOp)
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.
6327 # @ref swig_all_decompose "Example"
6328 @ManageTransactions("ShapesOp")
6329 def GetSubShapesIDs(self, aShape, aSubShapes):
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
6336 aShape Shape to get sub-shape of.
6337 aSubShapes Sub-shapes of aShape.
6340 List of IDs of found sub-shape.
6342 # Example: see GEOM_TestAll.py
6343 anIDs = self.ShapesOp.GetSubShapesIndices(aShape, aSubShapes)
6344 RaiseIfFailed("GetSubShapesIndices", self.ShapesOp)
6350 ## @addtogroup l4_decompose
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.
6360 # @ref swig_all_decompose "Example"
6361 @ManageTransactions("ShapesOp")
6362 def GetExistingSubObjects(self, theShape, theGroupsOnly = False):
6364 Get all sub-shapes and groups of theShape,
6365 that were created already by any other methods.
6369 theGroupsOnly If this parameter is TRUE, only groups will be
6370 returned, else all found sub-shapes and groups.
6373 List of existing sub-objects of theShape.
6375 # Example: see GEOM_TestAll.py
6376 ListObj = self.ShapesOp.GetExistingSubObjects(theShape, theGroupsOnly)
6377 RaiseIfFailed("GetExistingSubObjects", self.ShapesOp)
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.
6385 # @ref swig_all_decompose "Example"
6386 @ManageTransactions("ShapesOp")
6387 def GetGroups(self, theShape):
6389 Get all groups of theShape,
6390 that were created already by any other methods.
6396 List of existing groups of theShape.
6398 # Example: see GEOM_TestAll.py
6399 ListObj = self.ShapesOp.GetExistingSubObjects(theShape, True)
6400 RaiseIfFailed("GetExistingSubObjects", self.ShapesOp)
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.
6411 # @return List of sub-shapes of type theShapeType, contained in theShape.
6413 # @ref swig_all_decompose "Example"
6414 @ManageTransactions("ShapesOp")
6415 def SubShapeAll(self, aShape, aType, theName=None):
6417 Explode a shape on sub-shapes of a given type.
6418 If the shape itself matches the type, it is also returned.
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.
6428 List of sub-shapes of type theShapeType, contained in theShape.
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")
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.
6441 # @ref swig_all_decompose "Example"
6442 @ManageTransactions("ShapesOp")
6443 def SubShapeAllIDs(self, aShape, aType):
6445 Explode a shape on sub-shapes of a given type.
6448 aShape Shape to be exploded (see geompy.ShapeType)
6449 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6452 List of IDs of sub-shapes.
6454 ListObj = self.ShapesOp.GetAllSubShapesIDs(aShape, EnumToLong( aType ), False)
6455 RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
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.
6468 # @return A compound of sub-shapes of aShape.
6470 # @ref swig_all_decompose "Example"
6471 def SubShape(self, aShape, aType, ListOfInd, theName=None):
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]
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.
6486 A compound of sub-shapes of aShape.
6488 # Example: see GEOM_TestAll.py
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)
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.
6508 # @return List of sub-shapes of type theShapeType, contained in theShape.
6510 # @ref swig_SubShapeAllSorted "Example"
6511 @ManageTransactions("ShapesOp")
6512 def SubShapeAllSortedCentres(self, aShape, aType, theName=None):
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.
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.
6527 List of sub-shapes of type theShapeType, contained in theShape.
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")
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.
6543 # @ref swig_all_decompose "Example"
6544 @ManageTransactions("ShapesOp")
6545 def SubShapeAllSortedCentresIDs(self, aShape, aType):
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.
6552 aShape Shape to be exploded.
6553 aType Type of sub-shapes to be retrieved (see geompy.ShapeType)
6556 List of IDs of sub-shapes.
6558 ListIDs = self.ShapesOp.GetAllSubShapesIDs(aShape, EnumToLong( aType ), True)
6559 RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
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.
6573 # @return A compound of sub-shapes of aShape.
6575 # @ref swig_all_decompose "Example"
6576 def SubShapeSortedCentres(self, aShape, aType, ListOfInd, theName=None):
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]
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.
6591 A compound of sub-shapes of aShape.
6593 # Example: see GEOM_TestAll.py
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)
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.
6611 # @return List of sub-shapes of type aType, contained in aShape.
6613 # @ref swig_FilletChamfer "Example"
6614 @ManageTransactions("ShapesOp")
6615 def ExtractShapes(self, aShape, aType, isSorted = False, theName=None):
6617 Extract shapes (excluding the main shape) of given type.
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.
6628 List of sub-shapes of type aType, contained in aShape.
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")
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.
6644 # @ref swig_all_decompose "Example"
6645 @ManageTransactions("ShapesOp")
6646 def SubShapes(self, aShape, anIDs, theName=None):
6648 Get a set of sub-shapes defined by their unique IDs inside theMainShape
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.
6658 List of GEOM.GEOM_Object, corresponding to found sub-shapes.
6660 # Example: see GEOM_TestAll.py
6661 ListObj = self.ShapesOp.MakeSubShapes(aShape, anIDs)
6662 RaiseIfFailed("SubShapes", self.ShapesOp)
6663 self._autoPublish(ListObj, theName, "subshape")
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.
6675 # @ref swig_GetSubShapeEdgeSorted "Example"
6676 @ManageTransactions("ShapesOp")
6677 def GetSubShapeEdgeSorted(self, theShape, theStartPoint, theName=None):
6679 Explode a shape into edges sorted in a row from a starting point.
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.
6689 List of GEOM.GEOM_Object that is actually an ordered list
6690 of edges sorted in a row from a starting point.
6692 # Example: see GEOM_TestAll.py
6693 ListObj = self.ShapesOp.GetSubShapeEdgeSorted(theShape, theStartPoint)
6694 RaiseIfFailed("GetSubShapeEdgeSorted", self.ShapesOp)
6695 self._autoPublish(ListObj, theName, "SortedEdges")
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.
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.
6716 # @ref swig_GetSubShapesWithTolerance "Example"
6717 @ManageTransactions("ShapesOp")
6718 def GetSubShapesWithTolerance(self, theShape, theShapeType,
6719 theCondition, theTolerance, theName=None):
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.
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.
6740 The list of shapes that satisfy the conditions.
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")
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):
6762 Check if the object is a sub-object of another GEOM object.
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.
6775 TRUE, if the given object contains sub-object.
6777 IsOk = self.ShapesOp.IsSubShapeBelongsTo(aSubObject, aSubObjectIndex, anObject, anObjectIndex)
6778 RaiseIfFailed("IsSubShapeBelongsTo", self.ShapesOp)
6781 ## Perform extraction of sub-shapes from the main shape.
6783 # @param theShape the main shape
6784 # @param theListOfID the list of sub-shape IDs to be extracted from
6786 # @return New GEOM.GEOM_Object, containing the shape without
6787 # extracted sub-shapes.
6789 # @ref swig_MakeExtraction "Example"
6790 @ManageTransactions("ShapesOp")
6791 def MakeExtraction(self, theShape, theListOfID, theName=None):
6793 Perform extraction of sub-shapes from the main shape.
6796 theShape the main shape
6797 theListOfID the list of sub-shape IDs to be extracted from
6801 New GEOM.GEOM_Object, containing the shape without
6802 extracted sub-shapes.
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")
6810 # end of l4_decompose
6813 ## @addtogroup l4_decompose_d
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):
6823 It works like geompy.SubShapeAllSortedCentres, but wrongly
6824 defines centres of faces, shells and solids.
6826 ListObj = self.ShapesOp.MakeExplode(aShape, EnumToLong( aType ), True)
6827 RaiseIfFailed("MakeExplode", self.ShapesOp)
6828 self._autoPublish(ListObj, theName, "subshape")
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):
6838 It works like geompy.SubShapeAllSortedCentresIDs, but wrongly
6839 defines centres of faces, shells and solids.
6841 ListIDs = self.ShapesOp.SubShapeAllIDs(aShape, EnumToLong( aType ), True)
6842 RaiseIfFailed("SubShapeAllIDs", self.ShapesOp)
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):
6851 It works like geompy.SubShapeSortedCentres, but has a bug
6852 (wrongly defines centres of faces, shells and solids).
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)
6862 # end of l4_decompose_d
6865 ## @addtogroup l3_healing
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.
6879 # <b> Operators and Parameters: </b> \n
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
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
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
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
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
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
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
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
6950 # @return New GEOM.GEOM_Object, containing processed shape.
6952 # \n @ref tui_shape_processing "Example"
6953 @ManageTransactions("HealOp")
6954 def ProcessShape(self, theShape, theOperators, theParameters, theValues, theName=None):
6956 Apply a sequence of Shape Healing operators to the given object.
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.
6969 Operators and Parameters:
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.
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
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:
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.
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.
7037 New GEOM.GEOM_Object, containing processed shape.
7039 Note: For more information look through SALOME Geometry User's Guide->
7040 -> Introduction to Geometry-> Repairing Operations-> Shape Processing
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":
7048 RaiseIfFailed("ProcessShape", self.HealOp)
7049 for string in (theOperators + theParameters):
7050 Parameters = ":" + Parameters
7052 anObj.SetParameters(Parameters)
7053 self._autoPublish(anObj, theName, "healed")
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.
7064 # @return New GEOM.GEOM_Object, containing processed shape.
7066 # @ref tui_suppress_faces "Example"
7067 @ManageTransactions("HealOp")
7068 def SuppressFaces(self, theObject, theFaces, theName=None):
7070 Remove faces from the given object (shape).
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.
7081 New GEOM.GEOM_Object, containing processed shape.
7083 # Example: see GEOM_TestHealing.py
7084 anObj = self.HealOp.SuppressFaces(theObject, theFaces)
7085 RaiseIfFailed("SuppressFaces", self.HealOp)
7086 self._autoPublish(anObj, theName, "suppressFaces")
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.
7097 # @return New GEOM.GEOM_Object, containing a result shell.
7099 # @ref tui_sewing "Example"
7100 def MakeSewing(self, ListShape, theTolerance, AllowNonManifold=False, theName=None):
7102 Sewing of faces into a single shell.
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.
7113 New GEOM.GEOM_Object, containing containing a result shell.
7115 # Example: see GEOM_TestHealing.py
7116 # note: auto-publishing is done in self.Sew()
7117 anObj = self.Sew(ListShape, theTolerance, AllowNonManifold, theName)
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.
7128 # @return New GEOM.GEOM_Object, containing a result shell.
7129 @ManageTransactions("HealOp")
7130 def Sew(self, ListShape, theTolerance, AllowNonManifold=False, theName=None):
7132 Sewing of faces into a single shell.
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.
7143 New GEOM.GEOM_Object, containing a result shell.
7145 # Example: see MakeSewing() above
7146 theTolerance,Parameters = ParseParameters(theTolerance)
7147 if AllowNonManifold:
7148 anObj = self.HealOp.SewAllowNonManifold( ToList( ListShape ), theTolerance)
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":
7155 RaiseIfFailed("Sew", self.HealOp)
7156 anObj.SetParameters(Parameters)
7157 self._autoPublish(anObj, theName, "sewed")
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.
7167 # @return New GEOM.GEOM_Object, containing processed shape.
7169 # @ref tui_remove_webs "Example"
7170 @ManageTransactions("HealOp")
7171 def RemoveInternalFaces (self, theSolids, theName=None):
7173 Rebuild the topology of theSolids by removing
7174 the faces that are shared by several solids.
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.
7183 New GEOM.GEOM_Object, containing processed shape.
7185 # Example: see GEOM_TestHealing.py
7186 anObj = self.HealOp.RemoveInternalFaces(ToList(theSolids))
7187 RaiseIfFailed("RemoveInternalFaces", self.HealOp)
7188 self._autoPublish(anObj, theName, "removeWebs")
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.
7199 # @return New GEOM.GEOM_Object, containing processed shape.
7201 # @ref tui_suppress_internal_wires "Example"
7202 @ManageTransactions("HealOp")
7203 def SuppressInternalWires(self, theObject, theWires, theName=None):
7205 Remove internal wires and edges from the given object (face).
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.
7216 New GEOM.GEOM_Object, containing processed shape.
7218 # Example: see GEOM_TestHealing.py
7219 anObj = self.HealOp.RemoveIntWires(theObject, theWires)
7220 RaiseIfFailed("RemoveIntWires", self.HealOp)
7221 self._autoPublish(anObj, theName, "suppressWires")
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.
7232 # @return New GEOM.GEOM_Object, containing processed shape.
7234 # @ref tui_suppress_holes "Example"
7235 @ManageTransactions("HealOp")
7236 def SuppressHoles(self, theObject, theWires, theName=None):
7238 Remove internal closed contours (holes) from the given object.
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.
7249 New GEOM.GEOM_Object, containing processed shape.
7251 # Example: see GEOM_TestHealing.py
7252 anObj = self.HealOp.FillHoles(theObject, theWires)
7253 RaiseIfFailed("FillHoles", self.HealOp)
7254 self._autoPublish(anObj, theName, "suppressHoles")
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.
7267 # @return New GEOM.GEOM_Object, containing processed shape.
7269 # @ref tui_close_contour "Example"
7270 @ManageTransactions("HealOp")
7271 def CloseContour(self,theObject, theWires, isCommonVertex, theName=None):
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.
7286 New GEOM.GEOM_Object, containing processed shape.
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")
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.
7306 # @return New GEOM.GEOM_Object, containing processed shape.
7308 # @ref tui_add_point_on_edge "Example"
7309 @ManageTransactions("HealOp")
7310 def DivideEdge(self, theObject, theEdgeIndex, theValue, isByParameter, theName=None):
7312 Addition of a point to a given edge object.
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.
7327 New GEOM.GEOM_Object, containing processed shape.
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")
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.
7347 # @return New GEOM.GEOM_Object, containing processed shape.
7349 # @ref tui_add_point_on_edge "Example"
7350 @ManageTransactions("HealOp")
7351 def DivideEdgeByPoint(self, theObject, theEdgeIndex, thePoints, theName=None):
7353 Addition of points to a given edge of \a theObject by projecting
7354 other points to the given edge.
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.
7366 New GEOM.GEOM_Object, containing processed shape.
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")
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.
7384 # @return New GEOM.GEOM_Object with modified wire.
7386 # @ref tui_fuse_collinear_edges "Example"
7387 @ManageTransactions("HealOp")
7388 def FuseCollinearEdgesWithinWire(self, theWire, theVertices = [], theName=None):
7390 Suppress the vertices in the wire in case if adjacent edges are C1 continuous.
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.
7401 New GEOM.GEOM_Object with modified wire.
7403 anObj = self.HealOp.FuseCollinearEdgesWithinWire(theWire, theVertices)
7404 RaiseIfFailed("FuseCollinearEdgesWithinWire", self.HealOp)
7405 self._autoPublish(anObj, theName, "fuseEdges")
7408 ## Change orientation of the given object. Updates given shape.
7409 # @param theObject Shape to be processed.
7410 # @return Updated <var>theObject</var>
7412 # @ref swig_todo "Example"
7413 @ManageTransactions("HealOp")
7414 def ChangeOrientationShell(self,theObject):
7416 Change orientation of the given object. Updates given shape.
7419 theObject Shape to be processed.
7424 theObject = self.HealOp.ChangeOrientation(theObject)
7425 RaiseIfFailed("ChangeOrientation", self.HealOp)
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.
7434 # @return New GEOM.GEOM_Object, containing processed shape.
7436 # @ref swig_todo "Example"
7437 @ManageTransactions("HealOp")
7438 def ChangeOrientationShellCopy(self, theObject, theName=None):
7440 Change orientation of the given object.
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.
7449 New GEOM.GEOM_Object, containing processed shape.
7451 anObj = self.HealOp.ChangeOrientationCopy(theObject)
7452 RaiseIfFailed("ChangeOrientationCopy", self.HealOp)
7453 self._autoPublish(anObj, theName, "reversed")
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.
7463 # @return New GEOM.GEOM_Object, containing processed shape.
7465 # @ref tui_limit_tolerance "Example"
7466 @ManageTransactions("HealOp")
7467 def LimitTolerance(self, theObject, theTolerance = 1e-07, theName=None):
7469 Try to limit tolerance of the given object by value theTolerance.
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.
7479 New GEOM.GEOM_Object, containing processed shape.
7481 anObj = self.HealOp.LimitTolerance(theObject, theTolerance)
7482 RaiseIfFailed("LimitTolerance", self.HealOp)
7483 self._autoPublish(anObj, theName, "limitTolerance")
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.
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.
7498 # @ref tui_free_boundaries_page "Example"
7499 @ManageTransactions("HealOp")
7500 def GetFreeBoundary(self, theObject, theName=None):
7502 Get a list of wires (wrapped in GEOM.GEOM_Object-s),
7503 that constitute a free boundary of the given shape.
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.
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.
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")
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.
7533 # @return New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7535 # @ref tui_glue_faces "Example"
7536 @ManageTransactions("ShapesOp")
7537 def MakeGlueFaces(self, theShapes, theTolerance, doKeepNonSolids=True, theName=None):
7539 Replace coincident faces in theShapes by one face.
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.
7551 New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7553 # Example: see GEOM_Spanner.py
7554 theTolerance,Parameters = ParseParameters(theTolerance)
7555 anObj = self.ShapesOp.MakeGlueFaces(ToList(theShapes), theTolerance, doKeepNonSolids)
7557 raise RuntimeError("MakeGlueFaces : " + self.ShapesOp.GetErrorCode())
7558 anObj.SetParameters(Parameters)
7559 self._autoPublish(anObj, theName, "glueFaces")
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.
7570 # @return GEOM.ListOfGO
7572 # @ref tui_glue_faces "Example"
7573 @ManageTransactions("ShapesOp")
7574 def GetGlueFaces(self, theShapes, theTolerance, theName=None):
7576 Find coincident faces in theShapes for possible gluing.
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.
7589 anObj = self.ShapesOp.GetGlueFaces(ToList(theShapes), theTolerance)
7590 RaiseIfFailed("GetGlueFaces", self.ShapesOp)
7591 self._autoPublish(anObj, theName, "facesToGlue")
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.
7609 # @return New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7611 # @ref tui_glue_faces "Example"
7612 @ManageTransactions("ShapesOp")
7613 def MakeGlueFacesByList(self, theShapes, theTolerance, theFaces,
7614 doKeepNonSolids=True, doGlueAllEdges=True, theName=None):
7616 Replace coincident faces in theShapes by one face
7617 in compliance with given list of faces
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.
7634 New GEOM.GEOM_Object, containing copies of theShapes without coincident faces.
7636 anObj = self.ShapesOp.MakeGlueFacesByList(ToList(theShapes), theTolerance, ToList(theFaces),
7637 doKeepNonSolids, doGlueAllEdges)
7639 raise RuntimeError("MakeGlueFacesByList : " + self.ShapesOp.GetErrorCode())
7640 self._autoPublish(anObj, theName, "glueFaces")
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.
7650 # @return New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7652 # @ref tui_glue_edges "Example"
7653 @ManageTransactions("ShapesOp")
7654 def MakeGlueEdges(self, theShapes, theTolerance, theName=None):
7656 Replace coincident edges in theShapes by one edge.
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.
7666 New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7668 theTolerance,Parameters = ParseParameters(theTolerance)
7669 anObj = self.ShapesOp.MakeGlueEdges(ToList(theShapes), theTolerance)
7671 raise RuntimeError("MakeGlueEdges : " + self.ShapesOp.GetErrorCode())
7672 anObj.SetParameters(Parameters)
7673 self._autoPublish(anObj, theName, "glueEdges")
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.
7684 # @return GEOM.ListOfGO
7686 # @ref tui_glue_edges "Example"
7687 @ManageTransactions("ShapesOp")
7688 def GetGlueEdges(self, theShapes, theTolerance, theName=None):
7690 Find coincident edges in theShapes for possible gluing.
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.
7703 anObj = self.ShapesOp.GetGlueEdges(ToList(theShapes), theTolerance)
7704 RaiseIfFailed("GetGlueEdges", self.ShapesOp)
7705 self._autoPublish(anObj, theName, "edgesToGlue")
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.
7718 # @return New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7720 # @ref tui_glue_edges "Example"
7721 @ManageTransactions("ShapesOp")
7722 def MakeGlueEdgesByList(self, theShapes, theTolerance, theEdges, theName=None):
7724 Replace coincident edges in theShapes by one edge
7725 in compliance with given list of edges.
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.
7737 New GEOM.GEOM_Object, containing copies of theShapes without coincident edges.
7739 anObj = self.ShapesOp.MakeGlueEdgesByList(ToList(theShapes), theTolerance, theEdges)
7741 raise RuntimeError("MakeGlueEdgesByList : " + self.ShapesOp.GetErrorCode())
7742 self._autoPublish(anObj, theName, "glueEdges")
7748 ## @addtogroup l3_boolean Boolean Operations
7751 # -----------------------------------------------------------------------------
7752 # Boolean (Common, Cut, Fuse, Section)
7753 # -----------------------------------------------------------------------------
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.
7766 # @note This algorithm doesn't find all types of self-intersections.
7767 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7768 # vertex/face and edge/face intersections. Face/face
7769 # intersections detection is switched off as it is a
7770 # time-consuming operation that gives an impact on performance.
7771 # To find all self-intersections please use
7772 # CheckSelfIntersections() method.
7774 # @return New GEOM.GEOM_Object, containing the result shape.
7776 # @ref tui_fuse "Example"
7777 @ManageTransactions("BoolOp")
7778 def MakeBoolean(self, theShape1, theShape2, theOperation, checkSelfInte=False, theName=None):
7780 Perform one of boolean operations on two given shapes.
7783 theShape1 First argument for boolean operation.
7784 theShape2 Second argument for boolean operation.
7785 theOperation Indicates the operation to be done:
7786 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section.
7787 checkSelfInte The flag that tells if the arguments should
7788 be checked for self-intersection prior to
7790 theName Object name; when specified, this parameter is used
7791 for result publication in the study. Otherwise, if automatic
7792 publication is switched on, default value is used for result name.
7795 This algorithm doesn't find all types of self-intersections.
7796 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7797 vertex/face and edge/face intersections. Face/face
7798 intersections detection is switched off as it is a
7799 time-consuming operation that gives an impact on performance.
7800 To find all self-intersections please use
7801 CheckSelfIntersections() method.
7804 New GEOM.GEOM_Object, containing the result shape.
7806 # Example: see GEOM_TestAll.py
7807 anObj = self.BoolOp.MakeBoolean(theShape1, theShape2, theOperation, checkSelfInte)
7808 RaiseIfFailed("MakeBoolean", self.BoolOp)
7809 def_names = { 1: "common", 2: "cut", 3: "fuse", 4: "section" }
7810 self._autoPublish(anObj, theName, def_names[theOperation])
7813 ## Perform Common boolean operation on two given shapes.
7814 # @param theShape1 First argument for boolean operation.
7815 # @param theShape2 Second argument for boolean operation.
7816 # @param checkSelfInte The flag that tells if the arguments should
7817 # be checked for self-intersection prior to the operation.
7818 # @param theName Object name; when specified, this parameter is used
7819 # for result publication in the study. Otherwise, if automatic
7820 # publication is switched on, default value is used for result name.
7822 # @note This algorithm doesn't find all types of self-intersections.
7823 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7824 # vertex/face and edge/face intersections. Face/face
7825 # intersections detection is switched off as it is a
7826 # time-consuming operation that gives an impact on performance.
7827 # To find all self-intersections please use
7828 # CheckSelfIntersections() method.
7830 # @return New GEOM.GEOM_Object, containing the result shape.
7832 # @ref tui_common "Example 1"
7833 # \n @ref swig_MakeCommon "Example 2"
7834 def MakeCommon(self, theShape1, theShape2, checkSelfInte=False, theName=None):
7836 Perform Common boolean operation on two given shapes.
7839 theShape1 First argument for boolean operation.
7840 theShape2 Second argument for boolean operation.
7841 checkSelfInte The flag that tells if the arguments should
7842 be checked for self-intersection prior to
7844 theName Object name; when specified, this parameter is used
7845 for result publication in the study. Otherwise, if automatic
7846 publication is switched on, default value is used for result name.
7849 This algorithm doesn't find all types of self-intersections.
7850 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7851 vertex/face and edge/face intersections. Face/face
7852 intersections detection is switched off as it is a
7853 time-consuming operation that gives an impact on performance.
7854 To find all self-intersections please use
7855 CheckSelfIntersections() method.
7858 New GEOM.GEOM_Object, containing the result shape.
7860 # Example: see GEOM_TestOthers.py
7861 # note: auto-publishing is done in self.MakeBoolean()
7862 return self.MakeBoolean(theShape1, theShape2, 1, checkSelfInte, theName)
7864 ## Perform Cut boolean operation on two given shapes.
7865 # @param theShape1 First argument for boolean operation.
7866 # @param theShape2 Second argument for boolean operation.
7867 # @param checkSelfInte The flag that tells if the arguments should
7868 # be checked for self-intersection prior to the operation.
7869 # @param theName Object name; when specified, this parameter is used
7870 # for result publication in the study. Otherwise, if automatic
7871 # publication is switched on, default value is used for result name.
7873 # @note This algorithm doesn't find all types of self-intersections.
7874 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7875 # vertex/face and edge/face intersections. Face/face
7876 # intersections detection is switched off as it is a
7877 # time-consuming operation that gives an impact on performance.
7878 # To find all self-intersections please use
7879 # CheckSelfIntersections() method.
7881 # @return New GEOM.GEOM_Object, containing the result shape.
7883 # @ref tui_cut "Example 1"
7884 # \n @ref swig_MakeCommon "Example 2"
7885 def MakeCut(self, theShape1, theShape2, checkSelfInte=False, theName=None):
7887 Perform Cut boolean operation on two given shapes.
7890 theShape1 First argument for boolean operation.
7891 theShape2 Second argument for boolean operation.
7892 checkSelfInte The flag that tells if the arguments should
7893 be checked for self-intersection prior to
7895 theName Object name; when specified, this parameter is used
7896 for result publication in the study. Otherwise, if automatic
7897 publication is switched on, default value is used for result name.
7900 This algorithm doesn't find all types of self-intersections.
7901 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7902 vertex/face and edge/face intersections. Face/face
7903 intersections detection is switched off as it is a
7904 time-consuming operation that gives an impact on performance.
7905 To find all self-intersections please use
7906 CheckSelfIntersections() method.
7909 New GEOM.GEOM_Object, containing the result shape.
7912 # Example: see GEOM_TestOthers.py
7913 # note: auto-publishing is done in self.MakeBoolean()
7914 return self.MakeBoolean(theShape1, theShape2, 2, checkSelfInte, theName)
7916 ## Perform Fuse boolean operation on two given shapes.
7917 # @param theShape1 First argument for boolean operation.
7918 # @param theShape2 Second argument for boolean operation.
7919 # @param checkSelfInte The flag that tells if the arguments should
7920 # be checked for self-intersection prior to the operation.
7921 # @param rmExtraEdges The flag that tells if Remove Extra Edges
7922 # operation should be performed during the operation.
7923 # @param theName Object name; when specified, this parameter is used
7924 # for result publication in the study. Otherwise, if automatic
7925 # publication is switched on, default value is used for result name.
7927 # @note This algorithm doesn't find all types of self-intersections.
7928 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7929 # vertex/face and edge/face intersections. Face/face
7930 # intersections detection is switched off as it is a
7931 # time-consuming operation that gives an impact on performance.
7932 # To find all self-intersections please use
7933 # CheckSelfIntersections() method.
7935 # @return New GEOM.GEOM_Object, containing the result shape.
7937 # @ref tui_fuse "Example 1"
7938 # \n @ref swig_MakeCommon "Example 2"
7939 @ManageTransactions("BoolOp")
7940 def MakeFuse(self, theShape1, theShape2, checkSelfInte=False,
7941 rmExtraEdges=False, theName=None):
7943 Perform Fuse boolean operation on two given shapes.
7946 theShape1 First argument for boolean operation.
7947 theShape2 Second argument for boolean operation.
7948 checkSelfInte The flag that tells if the arguments should
7949 be checked for self-intersection prior to
7951 rmExtraEdges The flag that tells if Remove Extra Edges
7952 operation should be performed during the operation.
7953 theName Object name; when specified, this parameter is used
7954 for result publication in the study. Otherwise, if automatic
7955 publication is switched on, default value is used for result name.
7958 This algorithm doesn't find all types of self-intersections.
7959 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7960 vertex/face and edge/face intersections. Face/face
7961 intersections detection is switched off as it is a
7962 time-consuming operation that gives an impact on performance.
7963 To find all self-intersections please use
7964 CheckSelfIntersections() method.
7967 New GEOM.GEOM_Object, containing the result shape.
7970 # Example: see GEOM_TestOthers.py
7971 anObj = self.BoolOp.MakeFuse(theShape1, theShape2,
7972 checkSelfInte, rmExtraEdges)
7973 RaiseIfFailed("MakeFuse", self.BoolOp)
7974 self._autoPublish(anObj, theName, "fuse")
7977 ## Perform Section boolean operation on two given shapes.
7978 # @param theShape1 First argument for boolean operation.
7979 # @param theShape2 Second argument for boolean operation.
7980 # @param checkSelfInte The flag that tells if the arguments should
7981 # be checked for self-intersection prior to the operation.
7982 # If a self-intersection detected the operation fails.
7983 # @param theName Object name; when specified, this parameter is used
7984 # for result publication in the study. Otherwise, if automatic
7985 # publication is switched on, default value is used for result name.
7986 # @return New GEOM.GEOM_Object, containing the result shape.
7988 # @ref tui_section "Example 1"
7989 # \n @ref swig_MakeCommon "Example 2"
7990 def MakeSection(self, theShape1, theShape2, checkSelfInte=False, theName=None):
7992 Perform Section boolean operation on two given shapes.
7995 theShape1 First argument for boolean operation.
7996 theShape2 Second argument for boolean operation.
7997 checkSelfInte The flag that tells if the arguments should
7998 be checked for self-intersection prior to the operation.
7999 If a self-intersection detected the operation fails.
8000 theName Object name; when specified, this parameter is used
8001 for result publication in the study. Otherwise, if automatic
8002 publication is switched on, default value is used for result name.
8004 New GEOM.GEOM_Object, containing the result shape.
8007 # Example: see GEOM_TestOthers.py
8008 # note: auto-publishing is done in self.MakeBoolean()
8009 return self.MakeBoolean(theShape1, theShape2, 4, checkSelfInte, theName)
8011 ## Perform Fuse boolean operation on the list of shapes.
8012 # @param theShapesList Shapes to be fused.
8013 # @param checkSelfInte The flag that tells if the arguments should
8014 # be checked for self-intersection prior to the operation.
8015 # @param rmExtraEdges The flag that tells if Remove Extra Edges
8016 # operation should be performed during the operation.
8017 # @param theName Object name; when specified, this parameter is used
8018 # for result publication in the study. Otherwise, if automatic
8019 # publication is switched on, default value is used for result name.
8021 # @note This algorithm doesn't find all types of self-intersections.
8022 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8023 # vertex/face and edge/face intersections. Face/face
8024 # intersections detection is switched off as it is a
8025 # time-consuming operation that gives an impact on performance.
8026 # To find all self-intersections please use
8027 # CheckSelfIntersections() method.
8029 # @return New GEOM.GEOM_Object, containing the result shape.
8031 # @ref tui_fuse "Example 1"
8032 # \n @ref swig_MakeCommon "Example 2"
8033 @ManageTransactions("BoolOp")
8034 def MakeFuseList(self, theShapesList, checkSelfInte=False,
8035 rmExtraEdges=False, theName=None):
8037 Perform Fuse boolean operation on the list of shapes.
8040 theShapesList Shapes to be fused.
8041 checkSelfInte The flag that tells if the arguments should
8042 be checked for self-intersection prior to
8044 rmExtraEdges The flag that tells if Remove Extra Edges
8045 operation should be performed during the operation.
8046 theName Object name; when specified, this parameter is used
8047 for result publication in the study. Otherwise, if automatic
8048 publication is switched on, default value is used for result name.
8051 This algorithm doesn't find all types of self-intersections.
8052 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8053 vertex/face and edge/face intersections. Face/face
8054 intersections detection is switched off as it is a
8055 time-consuming operation that gives an impact on performance.
8056 To find all self-intersections please use
8057 CheckSelfIntersections() method.
8060 New GEOM.GEOM_Object, containing the result shape.
8063 # Example: see GEOM_TestOthers.py
8064 anObj = self.BoolOp.MakeFuseList(theShapesList, checkSelfInte,
8066 RaiseIfFailed("MakeFuseList", self.BoolOp)
8067 self._autoPublish(anObj, theName, "fuse")
8070 ## Perform Common boolean operation on the list of shapes.
8071 # @param theShapesList Shapes for Common operation.
8072 # @param checkSelfInte The flag that tells if the arguments should
8073 # be checked for self-intersection prior to the operation.
8074 # @param theName Object name; when specified, this parameter is used
8075 # for result publication in the study. Otherwise, if automatic
8076 # publication is switched on, default value is used for result name.
8078 # @note This algorithm doesn't find all types of self-intersections.
8079 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8080 # vertex/face and edge/face intersections. Face/face
8081 # intersections detection is switched off as it is a
8082 # time-consuming operation that gives an impact on performance.
8083 # To find all self-intersections please use
8084 # CheckSelfIntersections() method.
8086 # @return New GEOM.GEOM_Object, containing the result shape.
8088 # @ref tui_common "Example 1"
8089 # \n @ref swig_MakeCommon "Example 2"
8090 @ManageTransactions("BoolOp")
8091 def MakeCommonList(self, theShapesList, checkSelfInte=False, theName=None):
8093 Perform Common boolean operation on the list of shapes.
8096 theShapesList Shapes for Common operation.
8097 checkSelfInte The flag that tells if the arguments should
8098 be checked for self-intersection prior to
8100 theName Object name; when specified, this parameter is used
8101 for result publication in the study. Otherwise, if automatic
8102 publication is switched on, default value is used for result name.
8105 This algorithm doesn't find all types of self-intersections.
8106 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8107 vertex/face and edge/face intersections. Face/face
8108 intersections detection is switched off as it is a
8109 time-consuming operation that gives an impact on performance.
8110 To find all self-intersections please use
8111 CheckSelfIntersections() method.
8114 New GEOM.GEOM_Object, containing the result shape.
8117 # Example: see GEOM_TestOthers.py
8118 anObj = self.BoolOp.MakeCommonList(theShapesList, checkSelfInte)
8119 RaiseIfFailed("MakeCommonList", self.BoolOp)
8120 self._autoPublish(anObj, theName, "common")
8123 ## Perform Cut boolean operation on one object and the list of tools.
8124 # @param theMainShape The object of the operation.
8125 # @param theShapesList The list of tools of the operation.
8126 # @param checkSelfInte The flag that tells if the arguments should
8127 # be checked for self-intersection prior to the operation.
8128 # @param theName Object name; when specified, this parameter is used
8129 # for result publication in the study. Otherwise, if automatic
8130 # publication is switched on, default value is used for result name.
8132 # @note This algorithm doesn't find all types of self-intersections.
8133 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8134 # vertex/face and edge/face intersections. Face/face
8135 # intersections detection is switched off as it is a
8136 # time-consuming operation that gives an impact on performance.
8137 # To find all self-intersections please use
8138 # CheckSelfIntersections() method.
8140 # @return New GEOM.GEOM_Object, containing the result shape.
8142 # @ref tui_cut "Example 1"
8143 # \n @ref swig_MakeCommon "Example 2"
8144 @ManageTransactions("BoolOp")
8145 def MakeCutList(self, theMainShape, theShapesList, checkSelfInte=False, theName=None):
8147 Perform Cut boolean operation on one object and the list of tools.
8150 theMainShape The object of the operation.
8151 theShapesList The list of tools of the operation.
8152 checkSelfInte The flag that tells if the arguments should
8153 be checked for self-intersection prior to
8155 theName Object name; when specified, this parameter is used
8156 for result publication in the study. Otherwise, if automatic
8157 publication is switched on, default value is used for result name.
8160 This algorithm doesn't find all types of self-intersections.
8161 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8162 vertex/face and edge/face intersections. Face/face
8163 intersections detection is switched off as it is a
8164 time-consuming operation that gives an impact on performance.
8165 To find all self-intersections please use
8166 CheckSelfIntersections() method.
8169 New GEOM.GEOM_Object, containing the result shape.
8172 # Example: see GEOM_TestOthers.py
8173 anObj = self.BoolOp.MakeCutList(theMainShape, theShapesList, checkSelfInte)
8174 RaiseIfFailed("MakeCutList", self.BoolOp)
8175 self._autoPublish(anObj, theName, "cut")
8181 ## @addtogroup l3_basic_op
8184 ## Perform partition operation.
8185 # @param ListShapes Shapes to be intersected.
8186 # @param ListTools Shapes to intersect theShapes.
8187 # @param Limit Type of resulting shapes (see ShapeType()).\n
8188 # If this parameter is set to -1 ("Auto"), most appropriate shape limit
8189 # type will be detected automatically.
8190 # @param KeepNonlimitShapes if this parameter == 0, then only shapes of
8191 # target type (equal to Limit) are kept in the result,
8192 # else standalone shapes of lower dimension
8193 # are kept also (if they exist).
8195 # @param theName Object name; when specified, this parameter is used
8196 # for result publication in the study. Otherwise, if automatic
8197 # publication is switched on, default value is used for result name.
8199 # @note Each compound from ListShapes and ListTools will be exploded
8200 # in order to avoid possible intersection between shapes from this compound.
8202 # After implementation new version of PartitionAlgo (October 2006)
8203 # other parameters are ignored by current functionality. They are kept
8204 # in this function only for support old versions.
8205 # @param ListKeepInside Shapes, outside which the results will be deleted.
8206 # Each shape from theKeepInside must belong to theShapes also.
8207 # @param ListRemoveInside Shapes, inside which the results will be deleted.
8208 # Each shape from theRemoveInside must belong to theShapes also.
8209 # @param RemoveWebs If TRUE, perform Glue 3D algorithm.
8210 # @param ListMaterials Material indices for each shape. Make sense,
8211 # only if theRemoveWebs is TRUE.
8213 # @return New GEOM.GEOM_Object, containing the result shapes.
8215 # @ref tui_partition "Example"
8216 @ManageTransactions("BoolOp")
8217 def MakePartition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
8218 Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[],
8219 KeepNonlimitShapes=0, theName=None):
8221 Perform partition operation.
8224 ListShapes Shapes to be intersected.
8225 ListTools Shapes to intersect theShapes.
8226 Limit Type of resulting shapes (see geompy.ShapeType)
8227 If this parameter is set to -1 ("Auto"), most appropriate shape limit
8228 type will be detected automatically.
8229 KeepNonlimitShapes if this parameter == 0, then only shapes of
8230 target type (equal to Limit) are kept in the result,
8231 else standalone shapes of lower dimension
8232 are kept also (if they exist).
8234 theName Object name; when specified, this parameter is used
8235 for result publication in the study. Otherwise, if automatic
8236 publication is switched on, default value is used for result name.
8238 Each compound from ListShapes and ListTools will be exploded
8239 in order to avoid possible intersection between shapes from
8242 After implementation new version of PartitionAlgo (October 2006) other
8243 parameters are ignored by current functionality. They are kept in this
8244 function only for support old versions.
8247 ListKeepInside Shapes, outside which the results will be deleted.
8248 Each shape from theKeepInside must belong to theShapes also.
8249 ListRemoveInside Shapes, inside which the results will be deleted.
8250 Each shape from theRemoveInside must belong to theShapes also.
8251 RemoveWebs If TRUE, perform Glue 3D algorithm.
8252 ListMaterials Material indices for each shape. Make sense, only if theRemoveWebs is TRUE.
8255 New GEOM.GEOM_Object, containing the result shapes.
8257 # Example: see GEOM_TestAll.py
8258 if Limit == self.ShapeType["AUTO"]:
8259 # automatic detection of the most appropriate shape limit type
8261 for s in ListShapes: lim = min(lim, s.GetMaxShapeType())
8262 Limit = EnumToLong(lim)
8264 anObj = self.BoolOp.MakePartition(ListShapes, ListTools,
8265 ListKeepInside, ListRemoveInside,
8266 Limit, RemoveWebs, ListMaterials,
8267 KeepNonlimitShapes);
8268 RaiseIfFailed("MakePartition", self.BoolOp)
8269 self._autoPublish(anObj, theName, "partition")
8272 ## Perform partition operation.
8273 # This method may be useful if it is needed to make a partition for
8274 # compound contains nonintersected shapes. Performance will be better
8275 # since intersection between shapes from compound is not performed.
8277 # Description of all parameters as in previous method MakePartition().
8278 # One additional parameter is provided:
8279 # @param checkSelfInte The flag that tells if the arguments should
8280 # be checked for self-intersection prior to the operation.
8282 # @note This algorithm doesn't find all types of self-intersections.
8283 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8284 # vertex/face and edge/face intersections. Face/face
8285 # intersections detection is switched off as it is a
8286 # time-consuming operation that gives an impact on performance.
8287 # To find all self-intersections please use
8288 # CheckSelfIntersections() method.
8290 # @note Passed compounds (via ListShapes or via ListTools)
8291 # have to consist of nonintersecting shapes.
8293 # @return New GEOM.GEOM_Object, containing the result shapes.
8295 # @ref swig_todo "Example"
8296 @ManageTransactions("BoolOp")
8297 def MakePartitionNonSelfIntersectedShape(self, ListShapes, ListTools=[],
8298 ListKeepInside=[], ListRemoveInside=[],
8299 Limit=ShapeType["AUTO"], RemoveWebs=0,
8300 ListMaterials=[], KeepNonlimitShapes=0,
8301 checkSelfInte=False, theName=None):
8303 Perform partition operation.
8304 This method may be useful if it is needed to make a partition for
8305 compound contains nonintersected shapes. Performance will be better
8306 since intersection between shapes from compound is not performed.
8309 Description of all parameters as in method geompy.MakePartition.
8310 One additional parameter is provided:
8311 checkSelfInte The flag that tells if the arguments should
8312 be checked for self-intersection prior to
8316 This algorithm doesn't find all types of self-intersections.
8317 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8318 vertex/face and edge/face intersections. Face/face
8319 intersections detection is switched off as it is a
8320 time-consuming operation that gives an impact on performance.
8321 To find all self-intersections please use
8322 CheckSelfIntersections() method.
8325 Passed compounds (via ListShapes or via ListTools)
8326 have to consist of nonintersecting shapes.
8329 New GEOM.GEOM_Object, containing the result shapes.
8331 if Limit == self.ShapeType["AUTO"]:
8332 # automatic detection of the most appropriate shape limit type
8334 for s in ListShapes: lim = min(lim, s.GetMaxShapeType())
8335 Limit = EnumToLong(lim)
8337 anObj = self.BoolOp.MakePartitionNonSelfIntersectedShape(ListShapes, ListTools,
8338 ListKeepInside, ListRemoveInside,
8339 Limit, RemoveWebs, ListMaterials,
8340 KeepNonlimitShapes, checkSelfInte);
8341 RaiseIfFailed("MakePartitionNonSelfIntersectedShape", self.BoolOp)
8342 self._autoPublish(anObj, theName, "partition")
8345 ## See method MakePartition() for more information.
8347 # @ref tui_partition "Example 1"
8348 # \n @ref swig_Partition "Example 2"
8349 def Partition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
8350 Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[],
8351 KeepNonlimitShapes=0, theName=None):
8353 See method geompy.MakePartition for more information.
8355 # Example: see GEOM_TestOthers.py
8356 # note: auto-publishing is done in self.MakePartition()
8357 anObj = self.MakePartition(ListShapes, ListTools,
8358 ListKeepInside, ListRemoveInside,
8359 Limit, RemoveWebs, ListMaterials,
8360 KeepNonlimitShapes, theName);
8363 ## Perform partition of the Shape with the Plane
8364 # @param theShape Shape to be intersected.
8365 # @param thePlane Tool shape, to intersect theShape.
8366 # @param theName Object name; when specified, this parameter is used
8367 # for result publication in the study. Otherwise, if automatic
8368 # publication is switched on, default value is used for result name.
8370 # @return New GEOM.GEOM_Object, containing the result shape.
8372 # @note This operation is a shortcut to the more general @ref MakePartition
8373 # operation, where @a theShape specifies single "object" (shape being partitioned)
8374 # and @a thePlane specifies single "tool" (intersector shape). Other parameters of
8375 # @ref MakePartition operation have default values:
8376 # - @a Limit: GEOM::SHAPE (shape limit corresponds to the type of @a theShape)
8377 # - @a KeepNonlimitShapes: 0
8378 # - @a KeepInside, @a RemoveInside, @a RemoveWebs,
8379 # @a Materials (obsolete parameters): empty
8381 # @note I.e. the following two operations are equivalent:
8383 # Result = geompy.MakeHalfPartition(Object, Plane)
8384 # Result = geompy.MakePartition([Object], [Plane])
8387 # @sa MakePartition, MakePartitionNonSelfIntersectedShape
8389 # @ref tui_partition "Example"
8390 @ManageTransactions("BoolOp")
8391 def MakeHalfPartition(self, theShape, thePlane, theName=None):
8393 Perform partition of the Shape with the Plane
8396 theShape Shape to be intersected.
8397 thePlane Tool shape, to intersect theShape.
8398 theName Object name; when specified, this parameter is used
8399 for result publication in the study. Otherwise, if automatic
8400 publication is switched on, default value is used for result name.
8403 New GEOM.GEOM_Object, containing the result shape.
8405 Note: This operation is a shortcut to the more general MakePartition
8406 operation, where theShape specifies single "object" (shape being partitioned)
8407 and thePlane specifies single "tool" (intersector shape). Other parameters of
8408 MakePartition operation have default values:
8409 - Limit: GEOM::SHAPE (shape limit corresponds to the type of theShape)
8410 - KeepNonlimitShapes: 0
8411 - KeepInside, RemoveInside, RemoveWebs, Materials (obsolete parameters): empty
8413 I.e. the following two operations are equivalent:
8414 Result = geompy.MakeHalfPartition(Object, Plane)
8415 Result = geompy.MakePartition([Object], [Plane])
8417 # Example: see GEOM_TestAll.py
8418 anObj = self.BoolOp.MakeHalfPartition(theShape, thePlane)
8419 RaiseIfFailed("MakeHalfPartition", self.BoolOp)
8420 self._autoPublish(anObj, theName, "partition")
8423 # end of l3_basic_op
8426 ## @addtogroup l3_transform
8429 ## Translate the given object along the vector, specified
8430 # by its end points.
8431 # @param theObject The object to be translated.
8432 # @param thePoint1 Start point of translation vector.
8433 # @param thePoint2 End point of translation vector.
8434 # @param theCopy Flag used to translate object itself or create a copy.
8435 # @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8436 # new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8437 @ManageTransactions("TrsfOp")
8438 def TranslateTwoPoints(self, theObject, thePoint1, thePoint2, theCopy=False):
8440 Translate the given object along the vector, specified by its end points.
8443 theObject The object to be translated.
8444 thePoint1 Start point of translation vector.
8445 thePoint2 End point of translation vector.
8446 theCopy Flag used to translate object itself or create a copy.
8449 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8450 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8453 anObj = self.TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
8455 anObj = self.TrsfOp.TranslateTwoPoints(theObject, thePoint1, thePoint2)
8456 RaiseIfFailed("TranslateTwoPoints", self.TrsfOp)
8459 ## Translate the given object along the vector, specified
8460 # by its end points, creating its copy before the translation.
8461 # @param theObject The object to be translated.
8462 # @param thePoint1 Start point of translation vector.
8463 # @param thePoint2 End point of translation vector.
8464 # @param theName Object name; when specified, this parameter is used
8465 # for result publication in the study. Otherwise, if automatic
8466 # publication is switched on, default value is used for result name.
8468 # @return New GEOM.GEOM_Object, containing the translated object.
8470 # @ref tui_translation "Example 1"
8471 # \n @ref swig_MakeTranslationTwoPoints "Example 2"
8472 @ManageTransactions("TrsfOp")
8473 def MakeTranslationTwoPoints(self, theObject, thePoint1, thePoint2, theName=None):
8475 Translate the given object along the vector, specified
8476 by its end points, creating its copy before the translation.
8479 theObject The object to be translated.
8480 thePoint1 Start point of translation vector.
8481 thePoint2 End point of translation vector.
8482 theName Object name; when specified, this parameter is used
8483 for result publication in the study. Otherwise, if automatic
8484 publication is switched on, default value is used for result name.
8487 New GEOM.GEOM_Object, containing the translated object.
8489 # Example: see GEOM_TestAll.py
8490 anObj = self.TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
8491 RaiseIfFailed("TranslateTwoPointsCopy", self.TrsfOp)
8492 self._autoPublish(anObj, theName, "translated")
8495 ## Translate the given object along the vector, specified by its components.
8496 # @param theObject The object to be translated.
8497 # @param theDX,theDY,theDZ Components of translation vector.
8498 # @param theCopy Flag used to translate object itself or create a copy.
8499 # @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8500 # new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8502 # @ref tui_translation "Example"
8503 @ManageTransactions("TrsfOp")
8504 def TranslateDXDYDZ(self, theObject, theDX, theDY, theDZ, theCopy=False):
8506 Translate the given object along the vector, specified by its components.
8509 theObject The object to be translated.
8510 theDX,theDY,theDZ Components of translation vector.
8511 theCopy Flag used to translate object itself or create a copy.
8514 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8515 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8517 # Example: see GEOM_TestAll.py
8518 theDX, theDY, theDZ, Parameters = ParseParameters(theDX, theDY, theDZ)
8520 anObj = self.TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
8522 anObj = self.TrsfOp.TranslateDXDYDZ(theObject, theDX, theDY, theDZ)
8523 anObj.SetParameters(Parameters)
8524 RaiseIfFailed("TranslateDXDYDZ", self.TrsfOp)
8527 ## Translate the given object along the vector, specified
8528 # by its components, creating its copy before the translation.
8529 # @param theObject The object to be translated.
8530 # @param theDX,theDY,theDZ Components of translation vector.
8531 # @param theName Object name; when specified, this parameter is used
8532 # for result publication in the study. Otherwise, if automatic
8533 # publication is switched on, default value is used for result name.
8535 # @return New GEOM.GEOM_Object, containing the translated object.
8537 # @ref tui_translation "Example"
8538 @ManageTransactions("TrsfOp")
8539 def MakeTranslation(self,theObject, theDX, theDY, theDZ, theName=None):
8541 Translate the given object along the vector, specified
8542 by its components, creating its copy before the translation.
8545 theObject The object to be translated.
8546 theDX,theDY,theDZ Components of translation vector.
8547 theName Object name; when specified, this parameter is used
8548 for result publication in the study. Otherwise, if automatic
8549 publication is switched on, default value is used for result name.
8552 New GEOM.GEOM_Object, containing the translated object.
8554 # Example: see GEOM_TestAll.py
8555 theDX, theDY, theDZ, Parameters = ParseParameters(theDX, theDY, theDZ)
8556 anObj = self.TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
8557 anObj.SetParameters(Parameters)
8558 RaiseIfFailed("TranslateDXDYDZ", self.TrsfOp)
8559 self._autoPublish(anObj, theName, "translated")
8562 ## Translate the given object along the given vector.
8563 # @param theObject The object to be translated.
8564 # @param theVector The translation vector.
8565 # @param theCopy Flag used to translate object itself or create a copy.
8566 # @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8567 # new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8568 @ManageTransactions("TrsfOp")
8569 def TranslateVector(self, theObject, theVector, theCopy=False):
8571 Translate the given object along the given vector.
8574 theObject The object to be translated.
8575 theVector The translation vector.
8576 theCopy Flag used to translate object itself or create a copy.
8579 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8580 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8583 anObj = self.TrsfOp.TranslateVectorCopy(theObject, theVector)
8585 anObj = self.TrsfOp.TranslateVector(theObject, theVector)
8586 RaiseIfFailed("TranslateVector", self.TrsfOp)
8589 ## Translate the given object along the given vector,
8590 # creating its copy before the translation.
8591 # @param theObject The object to be translated.
8592 # @param theVector The translation vector.
8593 # @param theName Object name; when specified, this parameter is used
8594 # for result publication in the study. Otherwise, if automatic
8595 # publication is switched on, default value is used for result name.
8597 # @return New GEOM.GEOM_Object, containing the translated object.
8599 # @ref tui_translation "Example"
8600 @ManageTransactions("TrsfOp")
8601 def MakeTranslationVector(self, theObject, theVector, theName=None):
8603 Translate the given object along the given vector,
8604 creating its copy before the translation.
8607 theObject The object to be translated.
8608 theVector The translation vector.
8609 theName Object name; when specified, this parameter is used
8610 for result publication in the study. Otherwise, if automatic
8611 publication is switched on, default value is used for result name.
8614 New GEOM.GEOM_Object, containing the translated object.
8616 # Example: see GEOM_TestAll.py
8617 anObj = self.TrsfOp.TranslateVectorCopy(theObject, theVector)
8618 RaiseIfFailed("TranslateVectorCopy", self.TrsfOp)
8619 self._autoPublish(anObj, theName, "translated")
8622 ## Translate the given object along the given vector on given distance.
8623 # @param theObject The object to be translated.
8624 # @param theVector The translation vector.
8625 # @param theDistance The translation distance.
8626 # @param theCopy Flag used to translate object itself or create a copy.
8627 # @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8628 # new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8630 # @ref tui_translation "Example"
8631 @ManageTransactions("TrsfOp")
8632 def TranslateVectorDistance(self, theObject, theVector, theDistance, theCopy=False):
8634 Translate the given object along the given vector on given distance.
8637 theObject The object to be translated.
8638 theVector The translation vector.
8639 theDistance The translation distance.
8640 theCopy Flag used to translate object itself or create a copy.
8643 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8644 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8646 # Example: see GEOM_TestAll.py
8647 theDistance,Parameters = ParseParameters(theDistance)
8648 anObj = self.TrsfOp.TranslateVectorDistance(theObject, theVector, theDistance, theCopy)
8649 RaiseIfFailed("TranslateVectorDistance", self.TrsfOp)
8650 anObj.SetParameters(Parameters)
8653 ## Translate the given object along the given vector on given distance,
8654 # creating its copy before the translation.
8655 # @param theObject The object to be translated.
8656 # @param theVector The translation vector.
8657 # @param theDistance The translation distance.
8658 # @param theName Object name; when specified, this parameter is used
8659 # for result publication in the study. Otherwise, if automatic
8660 # publication is switched on, default value is used for result name.
8662 # @return New GEOM.GEOM_Object, containing the translated object.
8664 # @ref tui_translation "Example"
8665 @ManageTransactions("TrsfOp")
8666 def MakeTranslationVectorDistance(self, theObject, theVector, theDistance, theName=None):
8668 Translate the given object along the given vector on given distance,
8669 creating its copy before the translation.
8672 theObject The object to be translated.
8673 theVector The translation vector.
8674 theDistance The translation distance.
8675 theName Object name; when specified, this parameter is used
8676 for result publication in the study. Otherwise, if automatic
8677 publication is switched on, default value is used for result name.
8680 New GEOM.GEOM_Object, containing the translated object.
8682 # Example: see GEOM_TestAll.py
8683 theDistance,Parameters = ParseParameters(theDistance)
8684 anObj = self.TrsfOp.TranslateVectorDistance(theObject, theVector, theDistance, 1)
8685 RaiseIfFailed("TranslateVectorDistance", self.TrsfOp)
8686 anObj.SetParameters(Parameters)
8687 self._autoPublish(anObj, theName, "translated")
8690 ## Rotate the given object around the given axis on the given angle.
8691 # @param theObject The object to be rotated.
8692 # @param theAxis Rotation axis.
8693 # @param theAngle Rotation angle in radians.
8694 # @param theCopy Flag used to rotate object itself or create a copy.
8696 # @return Rotated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8697 # new GEOM.GEOM_Object, containing the rotated object if @a theCopy flag is @c True.
8699 # @ref tui_rotation "Example"
8700 @ManageTransactions("TrsfOp")
8701 def Rotate(self, theObject, theAxis, theAngle, theCopy=False):
8703 Rotate the given object around the given axis on the given angle.
8706 theObject The object to be rotated.
8707 theAxis Rotation axis.
8708 theAngle Rotation angle in radians.
8709 theCopy Flag used to rotate object itself or create a copy.
8712 Rotated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8713 new GEOM.GEOM_Object, containing the rotated object if theCopy flag is True.
8715 # Example: see GEOM_TestAll.py
8717 if isinstance(theAngle,str):
8719 theAngle, Parameters = ParseParameters(theAngle)
8721 theAngle = theAngle*math.pi/180.0
8723 anObj = self.TrsfOp.RotateCopy(theObject, theAxis, theAngle)
8725 anObj = self.TrsfOp.Rotate(theObject, theAxis, theAngle)
8726 RaiseIfFailed("Rotate", self.TrsfOp)
8727 anObj.SetParameters(Parameters)
8730 ## Rotate the given object around the given axis
8731 # on the given angle, creating its copy before the rotation.
8732 # @param theObject The object to be rotated.
8733 # @param theAxis Rotation axis.
8734 # @param theAngle Rotation angle in radians.
8735 # @param theName Object name; when specified, this parameter is used
8736 # for result publication in the study. Otherwise, if automatic
8737 # publication is switched on, default value is used for result name.
8739 # @return New GEOM.GEOM_Object, containing the rotated object.
8741 # @ref tui_rotation "Example"
8742 @ManageTransactions("TrsfOp")
8743 def MakeRotation(self, theObject, theAxis, theAngle, theName=None):
8745 Rotate the given object around the given axis
8746 on the given angle, creating its copy before the rotatation.
8749 theObject The object to be rotated.
8750 theAxis Rotation axis.
8751 theAngle Rotation angle in radians.
8752 theName Object name; when specified, this parameter is used
8753 for result publication in the study. Otherwise, if automatic
8754 publication is switched on, default value is used for result name.
8757 New GEOM.GEOM_Object, containing the rotated object.
8759 # Example: see GEOM_TestAll.py
8761 if isinstance(theAngle,str):
8763 theAngle, Parameters = ParseParameters(theAngle)
8765 theAngle = theAngle*math.pi/180.0
8766 anObj = self.TrsfOp.RotateCopy(theObject, theAxis, theAngle)
8767 RaiseIfFailed("RotateCopy", self.TrsfOp)
8768 anObj.SetParameters(Parameters)
8769 self._autoPublish(anObj, theName, "rotated")
8772 ## Rotate given object around vector perpendicular to plane
8773 # containing three points.
8774 # @param theObject The object to be rotated.
8775 # @param theCentPoint central point the axis is the vector perpendicular to the plane
8776 # containing the three points.
8777 # @param thePoint1,thePoint2 points in a perpendicular plane of the axis.
8778 # @param theCopy Flag used to rotate object itself or create a copy.
8779 # @return Rotated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8780 # new GEOM.GEOM_Object, containing the rotated object if @a theCopy flag is @c True.
8781 @ManageTransactions("TrsfOp")
8782 def RotateThreePoints(self, theObject, theCentPoint, thePoint1, thePoint2, theCopy=False):
8784 Rotate given object around vector perpendicular to plane
8785 containing three points.
8788 theObject The object to be rotated.
8789 theCentPoint central point the axis is the vector perpendicular to the plane
8790 containing the three points.
8791 thePoint1,thePoint2 points in a perpendicular plane of the axis.
8792 theCopy Flag used to rotate object itself or create a copy.
8795 Rotated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8796 new GEOM.GEOM_Object, containing the rotated object if theCopy flag is True.
8799 anObj = self.TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
8801 anObj = self.TrsfOp.RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2)
8802 RaiseIfFailed("RotateThreePoints", self.TrsfOp)
8805 ## Rotate given object around vector perpendicular to plane
8806 # containing three points, creating its copy before the rotatation.
8807 # @param theObject The object to be rotated.
8808 # @param theCentPoint central point the axis is the vector perpendicular to the plane
8809 # containing the three points.
8810 # @param thePoint1,thePoint2 in a perpendicular plane of the axis.
8811 # @param theName Object name; when specified, this parameter is used
8812 # for result publication in the study. Otherwise, if automatic
8813 # publication is switched on, default value is used for result name.
8815 # @return New GEOM.GEOM_Object, containing the rotated object.
8817 # @ref tui_rotation "Example"
8818 @ManageTransactions("TrsfOp")
8819 def MakeRotationThreePoints(self, theObject, theCentPoint, thePoint1, thePoint2, theName=None):
8821 Rotate given object around vector perpendicular to plane
8822 containing three points, creating its copy before the rotatation.
8825 theObject The object to be rotated.
8826 theCentPoint central point the axis is the vector perpendicular to the plane
8827 containing the three points.
8828 thePoint1,thePoint2 in a perpendicular plane of the axis.
8829 theName Object name; when specified, this parameter is used
8830 for result publication in the study. Otherwise, if automatic
8831 publication is switched on, default value is used for result name.
8834 New GEOM.GEOM_Object, containing the rotated object.
8836 # Example: see GEOM_TestAll.py
8837 anObj = self.TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
8838 RaiseIfFailed("RotateThreePointsCopy", self.TrsfOp)
8839 self._autoPublish(anObj, theName, "rotated")
8842 ## Scale the given object by the specified factor.
8843 # @param theObject The object to be scaled.
8844 # @param thePoint Center point for scaling.
8845 # Passing None for it means scaling relatively the origin of global CS.
8846 # @param theFactor Scaling factor value.
8847 # @param theCopy Flag used to scale object itself or create a copy.
8848 # @return Scaled @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8849 # new GEOM.GEOM_Object, containing the scaled object if @a theCopy flag is @c True.
8850 @ManageTransactions("TrsfOp")
8851 def Scale(self, theObject, thePoint, theFactor, theCopy=False):
8853 Scale the given object by the specified factor.
8856 theObject The object to be scaled.
8857 thePoint Center point for scaling.
8858 Passing None for it means scaling relatively the origin of global CS.
8859 theFactor Scaling factor value.
8860 theCopy Flag used to scale object itself or create a copy.
8863 Scaled theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8864 new GEOM.GEOM_Object, containing the scaled object if theCopy flag is True.
8866 # Example: see GEOM_TestAll.py
8867 theFactor, Parameters = ParseParameters(theFactor)
8869 anObj = self.TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
8871 anObj = self.TrsfOp.ScaleShape(theObject, thePoint, theFactor)
8872 RaiseIfFailed("Scale", self.TrsfOp)
8873 anObj.SetParameters(Parameters)
8876 ## Scale the given object by the factor, creating its copy before the scaling.
8877 # @param theObject The object to be scaled.
8878 # @param thePoint Center point for scaling.
8879 # Passing None for it means scaling relatively the origin of global CS.
8880 # @param theFactor Scaling factor value.
8881 # @param theName Object name; when specified, this parameter is used
8882 # for result publication in the study. Otherwise, if automatic
8883 # publication is switched on, default value is used for result name.
8885 # @return New GEOM.GEOM_Object, containing the scaled shape.
8887 # @ref tui_scale "Example"
8888 @ManageTransactions("TrsfOp")
8889 def MakeScaleTransform(self, theObject, thePoint, theFactor, theName=None):
8891 Scale the given object by the factor, creating its copy before the scaling.
8894 theObject The object to be scaled.
8895 thePoint Center point for scaling.
8896 Passing None for it means scaling relatively the origin of global CS.
8897 theFactor Scaling factor value.
8898 theName Object name; when specified, this parameter is used
8899 for result publication in the study. Otherwise, if automatic
8900 publication is switched on, default value is used for result name.
8903 New GEOM.GEOM_Object, containing the scaled shape.
8905 # Example: see GEOM_TestAll.py
8906 theFactor, Parameters = ParseParameters(theFactor)
8907 anObj = self.TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
8908 RaiseIfFailed("ScaleShapeCopy", self.TrsfOp)
8909 anObj.SetParameters(Parameters)
8910 self._autoPublish(anObj, theName, "scaled")
8913 ## Scale the given object by different factors along coordinate axes.
8914 # @param theObject The object to be scaled.
8915 # @param thePoint Center point for scaling.
8916 # Passing None for it means scaling relatively the origin of global CS.
8917 # @param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8918 # @param theCopy Flag used to scale object itself or create a copy.
8919 # @return Scaled @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8920 # new GEOM.GEOM_Object, containing the scaled object if @a theCopy flag is @c True.
8921 @ManageTransactions("TrsfOp")
8922 def ScaleAlongAxes(self, theObject, thePoint, theFactorX, theFactorY, theFactorZ, theCopy=False):
8924 Scale the given object by different factors along coordinate axes.
8927 theObject The object to be scaled.
8928 thePoint Center point for scaling.
8929 Passing None for it means scaling relatively the origin of global CS.
8930 theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8931 theCopy Flag used to scale object itself or create a copy.
8934 Scaled theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8935 new GEOM.GEOM_Object, containing the scaled object if theCopy flag is True.
8937 # Example: see GEOM_TestAll.py
8938 theFactorX, theFactorY, theFactorZ, Parameters = ParseParameters(theFactorX, theFactorY, theFactorZ)
8940 anObj = self.TrsfOp.ScaleShapeAlongAxesCopy(theObject, thePoint,
8941 theFactorX, theFactorY, theFactorZ)
8943 anObj = self.TrsfOp.ScaleShapeAlongAxes(theObject, thePoint,
8944 theFactorX, theFactorY, theFactorZ)
8945 RaiseIfFailed("ScaleAlongAxes", self.TrsfOp)
8946 anObj.SetParameters(Parameters)
8949 ## Scale the given object by different factors along coordinate axes,
8950 # creating its copy before the scaling.
8951 # @param theObject The object to be scaled.
8952 # @param thePoint Center point for scaling.
8953 # Passing None for it means scaling relatively the origin of global CS.
8954 # @param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8955 # @param theName Object name; when specified, this parameter is used
8956 # for result publication in the study. Otherwise, if automatic
8957 # publication is switched on, default value is used for result name.
8959 # @return New GEOM.GEOM_Object, containing the scaled shape.
8961 # @ref swig_scale "Example"
8962 @ManageTransactions("TrsfOp")
8963 def MakeScaleAlongAxes(self, theObject, thePoint, theFactorX, theFactorY, theFactorZ, theName=None):
8965 Scale the given object by different factors along coordinate axes,
8966 creating its copy before the scaling.
8969 theObject The object to be scaled.
8970 thePoint Center point for scaling.
8971 Passing None for it means scaling relatively the origin of global CS.
8972 theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8973 theName Object name; when specified, this parameter is used
8974 for result publication in the study. Otherwise, if automatic
8975 publication is switched on, default value is used for result name.
8978 New GEOM.GEOM_Object, containing the scaled shape.
8980 # Example: see GEOM_TestAll.py
8981 theFactorX, theFactorY, theFactorZ, Parameters = ParseParameters(theFactorX, theFactorY, theFactorZ)
8982 anObj = self.TrsfOp.ScaleShapeAlongAxesCopy(theObject, thePoint,
8983 theFactorX, theFactorY, theFactorZ)
8984 RaiseIfFailed("MakeScaleAlongAxes", self.TrsfOp)
8985 anObj.SetParameters(Parameters)
8986 self._autoPublish(anObj, theName, "scaled")
8989 ## Mirror an object relatively the given plane.
8990 # @param theObject The object to be mirrored.
8991 # @param thePlane Plane of symmetry.
8992 # @param theCopy Flag used to mirror object itself or create a copy.
8993 # @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8994 # new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
8995 @ManageTransactions("TrsfOp")
8996 def MirrorByPlane(self, theObject, thePlane, theCopy=False):
8998 Mirror an object relatively the given plane.
9001 theObject The object to be mirrored.
9002 thePlane Plane of symmetry.
9003 theCopy Flag used to mirror object itself or create a copy.
9006 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9007 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
9010 anObj = self.TrsfOp.MirrorPlaneCopy(theObject, thePlane)
9012 anObj = self.TrsfOp.MirrorPlane(theObject, thePlane)
9013 RaiseIfFailed("MirrorByPlane", self.TrsfOp)
9016 ## Create an object, symmetrical
9017 # to the given one relatively the given plane.
9018 # @param theObject The object to be mirrored.
9019 # @param thePlane Plane of symmetry.
9020 # @param theName Object name; when specified, this parameter is used
9021 # for result publication in the study. Otherwise, if automatic
9022 # publication is switched on, default value is used for result name.
9024 # @return New GEOM.GEOM_Object, containing the mirrored shape.
9026 # @ref tui_mirror "Example"
9027 @ManageTransactions("TrsfOp")
9028 def MakeMirrorByPlane(self, theObject, thePlane, theName=None):
9030 Create an object, symmetrical to the given one relatively the given plane.
9033 theObject The object to be mirrored.
9034 thePlane Plane of symmetry.
9035 theName Object name; when specified, this parameter is used
9036 for result publication in the study. Otherwise, if automatic
9037 publication is switched on, default value is used for result name.
9040 New GEOM.GEOM_Object, containing the mirrored shape.
9042 # Example: see GEOM_TestAll.py
9043 anObj = self.TrsfOp.MirrorPlaneCopy(theObject, thePlane)
9044 RaiseIfFailed("MirrorPlaneCopy", self.TrsfOp)
9045 self._autoPublish(anObj, theName, "mirrored")
9048 ## Mirror an object relatively the given axis.
9049 # @param theObject The object to be mirrored.
9050 # @param theAxis Axis of symmetry.
9051 # @param theCopy Flag used to mirror object itself or create a copy.
9052 # @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9053 # new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
9054 @ManageTransactions("TrsfOp")
9055 def MirrorByAxis(self, theObject, theAxis, theCopy=False):
9057 Mirror an object relatively the given axis.
9060 theObject The object to be mirrored.
9061 theAxis Axis of symmetry.
9062 theCopy Flag used to mirror object itself or create a copy.
9065 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9066 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
9069 anObj = self.TrsfOp.MirrorAxisCopy(theObject, theAxis)
9071 anObj = self.TrsfOp.MirrorAxis(theObject, theAxis)
9072 RaiseIfFailed("MirrorByAxis", self.TrsfOp)
9075 ## Create an object, symmetrical
9076 # to the given one relatively the given axis.
9077 # @param theObject The object to be mirrored.
9078 # @param theAxis Axis of symmetry.
9079 # @param theName Object name; when specified, this parameter is used
9080 # for result publication in the study. Otherwise, if automatic
9081 # publication is switched on, default value is used for result name.
9083 # @return New GEOM.GEOM_Object, containing the mirrored shape.
9085 # @ref tui_mirror "Example"
9086 @ManageTransactions("TrsfOp")
9087 def MakeMirrorByAxis(self, theObject, theAxis, theName=None):
9089 Create an object, symmetrical to the given one relatively the given axis.
9092 theObject The object to be mirrored.
9093 theAxis Axis of symmetry.
9094 theName Object name; when specified, this parameter is used
9095 for result publication in the study. Otherwise, if automatic
9096 publication is switched on, default value is used for result name.
9099 New GEOM.GEOM_Object, containing the mirrored shape.
9101 # Example: see GEOM_TestAll.py
9102 anObj = self.TrsfOp.MirrorAxisCopy(theObject, theAxis)
9103 RaiseIfFailed("MirrorAxisCopy", self.TrsfOp)
9104 self._autoPublish(anObj, theName, "mirrored")
9107 ## Mirror an object relatively the given point.
9108 # @param theObject The object to be mirrored.
9109 # @param thePoint Point of symmetry.
9110 # @param theCopy Flag used to mirror object itself or create a copy.
9111 # @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9112 # new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
9113 @ManageTransactions("TrsfOp")
9114 def MirrorByPoint(self, theObject, thePoint, theCopy=False):
9116 Mirror an object relatively the given point.
9119 theObject The object to be mirrored.
9120 thePoint Point of symmetry.
9121 theCopy Flag used to mirror object itself or create a copy.
9124 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9125 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
9127 # Example: see GEOM_TestAll.py
9129 anObj = self.TrsfOp.MirrorPointCopy(theObject, thePoint)
9131 anObj = self.TrsfOp.MirrorPoint(theObject, thePoint)
9132 RaiseIfFailed("MirrorByPoint", self.TrsfOp)
9135 ## Create an object, symmetrical
9136 # to the given one relatively the given point.
9137 # @param theObject The object to be mirrored.
9138 # @param thePoint Point of symmetry.
9139 # @param theName Object name; when specified, this parameter is used
9140 # for result publication in the study. Otherwise, if automatic
9141 # publication is switched on, default value is used for result name.
9143 # @return New GEOM.GEOM_Object, containing the mirrored shape.
9145 # @ref tui_mirror "Example"
9146 @ManageTransactions("TrsfOp")
9147 def MakeMirrorByPoint(self, theObject, thePoint, theName=None):
9149 Create an object, symmetrical
9150 to the given one relatively the given point.
9153 theObject The object to be mirrored.
9154 thePoint Point of symmetry.
9155 theName Object name; when specified, this parameter is used
9156 for result publication in the study. Otherwise, if automatic
9157 publication is switched on, default value is used for result name.
9160 New GEOM.GEOM_Object, containing the mirrored shape.
9162 # Example: see GEOM_TestAll.py
9163 anObj = self.TrsfOp.MirrorPointCopy(theObject, thePoint)
9164 RaiseIfFailed("MirrorPointCopy", self.TrsfOp)
9165 self._autoPublish(anObj, theName, "mirrored")
9168 ## Modify the location of the given object.
9169 # @param theObject The object to be displaced.
9170 # @param theStartLCS Coordinate system to perform displacement from it.\n
9171 # If \a theStartLCS is NULL, displacement
9172 # will be performed from global CS.\n
9173 # If \a theObject itself is used as \a theStartLCS,
9174 # its location will be changed to \a theEndLCS.
9175 # @param theEndLCS Coordinate system to perform displacement to it.
9176 # @param theCopy Flag used to displace object itself or create a copy.
9177 # @return Displaced @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9178 # new GEOM.GEOM_Object, containing the displaced object if @a theCopy flag is @c True.
9179 @ManageTransactions("TrsfOp")
9180 def Position(self, theObject, theStartLCS, theEndLCS, theCopy=False):
9182 Modify the Location of the given object by LCS, creating its copy before the setting.
9185 theObject The object to be displaced.
9186 theStartLCS Coordinate system to perform displacement from it.
9187 If theStartLCS is NULL, displacement
9188 will be performed from global CS.
9189 If theObject itself is used as theStartLCS,
9190 its location will be changed to theEndLCS.
9191 theEndLCS Coordinate system to perform displacement to it.
9192 theCopy Flag used to displace object itself or create a copy.
9195 Displaced theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9196 new GEOM.GEOM_Object, containing the displaced object if theCopy flag is True.
9198 # Example: see GEOM_TestAll.py
9200 anObj = self.TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
9202 anObj = self.TrsfOp.PositionShape(theObject, theStartLCS, theEndLCS)
9203 RaiseIfFailed("Displace", self.TrsfOp)
9206 ## Modify the Location of the given object by LCS,
9207 # creating its copy before the setting.
9208 # @param theObject The object to be displaced.
9209 # @param theStartLCS Coordinate system to perform displacement from it.\n
9210 # If \a theStartLCS is NULL, displacement
9211 # will be performed from global CS.\n
9212 # If \a theObject itself is used as \a theStartLCS,
9213 # its location will be changed to \a theEndLCS.
9214 # @param theEndLCS Coordinate system to perform displacement to it.
9215 # @param theName Object name; when specified, this parameter is used
9216 # for result publication in the study. Otherwise, if automatic
9217 # publication is switched on, default value is used for result name.
9219 # @return New GEOM.GEOM_Object, containing the displaced shape.
9221 # @ref tui_modify_location "Example"
9222 @ManageTransactions("TrsfOp")
9223 def MakePosition(self, theObject, theStartLCS, theEndLCS, theName=None):
9225 Modify the Location of the given object by LCS, creating its copy before the setting.
9228 theObject The object to be displaced.
9229 theStartLCS Coordinate system to perform displacement from it.
9230 If theStartLCS is NULL, displacement
9231 will be performed from global CS.
9232 If theObject itself is used as theStartLCS,
9233 its location will be changed to theEndLCS.
9234 theEndLCS Coordinate system to perform displacement to it.
9235 theName Object name; when specified, this parameter is used
9236 for result publication in the study. Otherwise, if automatic
9237 publication is switched on, default value is used for result name.
9240 New GEOM.GEOM_Object, containing the displaced shape.
9243 # create local coordinate systems
9244 cs1 = geompy.MakeMarker( 0, 0, 0, 1,0,0, 0,1,0)
9245 cs2 = geompy.MakeMarker(30,40,40, 1,0,0, 0,1,0)
9246 # modify the location of the given object
9247 position = geompy.MakePosition(cylinder, cs1, cs2)
9249 # Example: see GEOM_TestAll.py
9250 anObj = self.TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
9251 RaiseIfFailed("PositionShapeCopy", self.TrsfOp)
9252 self._autoPublish(anObj, theName, "displaced")
9255 ## Modify the Location of the given object by Path.
9256 # @param theObject The object to be displaced.
9257 # @param thePath Wire or Edge along that the object will be translated.
9258 # @param theDistance progress of Path (0 = start location, 1 = end of path location).
9259 # @param theCopy is to create a copy objects if true.
9260 # @param theReverse 0 - for usual direction, 1 - to reverse path direction.
9261 # @return Displaced @a theObject (GEOM.GEOM_Object) if @a theCopy is @c False or
9262 # new GEOM.GEOM_Object, containing the displaced shape if @a theCopy is @c True.
9264 # @ref tui_modify_location "Example"
9265 @ManageTransactions("TrsfOp")
9266 def PositionAlongPath(self,theObject, thePath, theDistance, theCopy, theReverse):
9268 Modify the Location of the given object by Path.
9271 theObject The object to be displaced.
9272 thePath Wire or Edge along that the object will be translated.
9273 theDistance progress of Path (0 = start location, 1 = end of path location).
9274 theCopy is to create a copy objects if true.
9275 theReverse 0 - for usual direction, 1 - to reverse path direction.
9278 Displaced theObject (GEOM.GEOM_Object) if theCopy is False or
9279 new GEOM.GEOM_Object, containing the displaced shape if theCopy is True.
9282 position = geompy.PositionAlongPath(cylinder, circle, 0.75, 1, 1)
9284 # Example: see GEOM_TestAll.py
9285 anObj = self.TrsfOp.PositionAlongPath(theObject, thePath, theDistance, theCopy, theReverse)
9286 RaiseIfFailed("PositionAlongPath", self.TrsfOp)
9289 ## Modify the Location of the given object by Path, creating its copy before the operation.
9290 # @param theObject The object to be displaced.
9291 # @param thePath Wire or Edge along that the object will be translated.
9292 # @param theDistance progress of Path (0 = start location, 1 = end of path location).
9293 # @param theReverse 0 - for usual direction, 1 - to reverse path direction.
9294 # @param theName Object name; when specified, this parameter is used
9295 # for result publication in the study. Otherwise, if automatic
9296 # publication is switched on, default value is used for result name.
9298 # @return New GEOM.GEOM_Object, containing the displaced shape.
9299 @ManageTransactions("TrsfOp")
9300 def MakePositionAlongPath(self, theObject, thePath, theDistance, theReverse, theName=None):
9302 Modify the Location of the given object by Path, creating its copy before the operation.
9305 theObject The object to be displaced.
9306 thePath Wire or Edge along that the object will be translated.
9307 theDistance progress of Path (0 = start location, 1 = end of path location).
9308 theReverse 0 - for usual direction, 1 - to reverse path direction.
9309 theName Object name; when specified, this parameter is used
9310 for result publication in the study. Otherwise, if automatic
9311 publication is switched on, default value is used for result name.
9314 New GEOM.GEOM_Object, containing the displaced shape.
9316 # Example: see GEOM_TestAll.py
9317 anObj = self.TrsfOp.PositionAlongPath(theObject, thePath, theDistance, 1, theReverse)
9318 RaiseIfFailed("PositionAlongPath", self.TrsfOp)
9319 self._autoPublish(anObj, theName, "displaced")
9322 ## Offset given shape.
9323 # @param theObject The base object for the offset.
9324 # @param theOffset Offset value.
9325 # @param theCopy Flag used to offset object itself or create a copy.
9326 # @return Modified @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9327 # new GEOM.GEOM_Object, containing the result of offset operation if @a theCopy flag is @c True.
9328 @ManageTransactions("TrsfOp")
9329 def Offset(self, theObject, theOffset, theCopy=False):
9334 theObject The base object for the offset.
9335 theOffset Offset value.
9336 theCopy Flag used to offset object itself or create a copy.
9339 Modified theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9340 new GEOM.GEOM_Object, containing the result of offset operation if theCopy flag is True.
9342 theOffset, Parameters = ParseParameters(theOffset)
9344 anObj = self.TrsfOp.OffsetShapeCopy(theObject, theOffset, True)
9346 anObj = self.TrsfOp.OffsetShape(theObject, theOffset, True)
9347 RaiseIfFailed("Offset", self.TrsfOp)
9348 anObj.SetParameters(Parameters)
9351 ## Create new object as offset of the given one. Gap between two adjacent
9352 # offset surfaces is filled by a pipe.
9353 # @param theObject The base object for the offset.
9354 # @param theOffset Offset value.
9355 # @param theName Object name; when specified, this parameter is used
9356 # for result publication in the study. Otherwise, if automatic
9357 # publication is switched on, default value is used for result name.
9359 # @return New GEOM.GEOM_Object, containing the offset object.
9361 # @sa MakeOffsetIntersectionJoin
9362 # @ref tui_offset "Example"
9363 @ManageTransactions("TrsfOp")
9364 def MakeOffset(self, theObject, theOffset, theName=None):
9366 Create new object as offset of the given one. Gap between adjacent
9367 offset surfaces is filled by a pipe.
9370 theObject The base object for the offset.
9371 theOffset Offset value.
9372 theName Object name; when specified, this parameter is used
9373 for result publication in the study. Otherwise, if automatic
9374 publication is switched on, default value is used for result name.
9377 New GEOM.GEOM_Object, containing the offset object.
9380 box = geompy.MakeBox(20, 20, 20, 200, 200, 200)
9381 # create a new object as offset of the given object
9382 offset = geompy.MakeOffset(box, 70.)
9384 # Example: see GEOM_TestAll.py
9385 theOffset, Parameters = ParseParameters(theOffset)
9386 anObj = self.TrsfOp.OffsetShapeCopy( theObject, theOffset, True )
9387 RaiseIfFailed("OffsetShapeCopy", self.TrsfOp)
9388 anObj.SetParameters(Parameters)
9389 self._autoPublish(anObj, theName, "offset")
9392 ## Create new object as offset of the given one. Gap between adjacent
9393 # offset surfaces is filled by extending and intersecting them.
9394 # @param theObject The base object for the offset.
9395 # @param theOffset Offset value.
9396 # @param theName Object name; when specified, this parameter is used
9397 # for result publication in the study. Otherwise, if automatic
9398 # publication is switched on, default value is used for result name.
9400 # @return New GEOM.GEOM_Object, containing the offset object.
9403 # @ref tui_offset "Example"
9404 @ManageTransactions("TrsfOp")
9405 def MakeOffsetIntersectionJoin(self, theObject, theOffset, theName=None):
9407 Create new object as offset of the given one. Gap between adjacent
9408 offset surfaces is filled by extending and intersecting them.
9411 theObject The base object for the offset.
9412 theOffset Offset value.
9413 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.
9418 New GEOM.GEOM_Object, containing the offset object.
9421 box = geompy.MakeBox(20, 20, 20, 200, 200, 200)
9422 # create a new box extended by 70
9423 offset = geompy.MakeOffsetIntersectionJoin(box, 70.)
9425 # Example: see GEOM_TestAll.py
9426 theOffset, Parameters = ParseParameters( theOffset )
9427 anObj = self.TrsfOp.OffsetShapeCopy( theObject, theOffset, False )
9428 RaiseIfFailed("OffsetShapeCopy", self.TrsfOp)
9429 anObj.SetParameters(Parameters)
9430 self._autoPublish(anObj, theName, "offset")
9433 ## Create new object as projection of the given one on another.
9434 # @param theSource The source object for the projection. It can be a point, edge or wire.
9435 # Edge and wire are acceptable if @a theTarget is a face.
9436 # @param theTarget The target object. It can be planar or cylindrical face, edge or wire.
9437 # @param theName Object name; when specified, this parameter is used
9438 # for result publication in the study. Otherwise, if automatic
9439 # publication is switched on, default value is used for result name.
9441 # @return New GEOM.GEOM_Object, containing the projection.
9443 # @ref tui_projection "Example"
9444 @ManageTransactions("TrsfOp")
9445 def MakeProjection(self, theSource, theTarget, theName=None):
9447 Create new object as projection of the given one on another.
9450 theSource The source object for the projection. It can be a point, edge or wire.
9451 Edge and wire are acceptable if theTarget is a face.
9452 theTarget The target object. It can be planar or cylindrical face, edge or wire.
9453 theName Object name; when specified, this parameter is used
9454 for result publication in the study. Otherwise, if automatic
9455 publication is switched on, default value is used for result name.
9458 New GEOM.GEOM_Object, containing the projection.
9460 # Example: see GEOM_TestAll.py
9461 anObj = self.TrsfOp.ProjectShapeCopy(theSource, theTarget)
9462 RaiseIfFailed("ProjectShapeCopy", self.TrsfOp)
9463 self._autoPublish(anObj, theName, "projection")
9466 ## Create a projection of the given point on a wire or an edge.
9467 # If there are no solutions or there are 2 or more solutions It throws an
9469 # @param thePoint the point to be projected.
9470 # @param theWire the wire. The edge is accepted as well.
9471 # @param 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.
9475 # @return [\a u, \a PointOnEdge, \a EdgeInWireIndex]
9476 # \n \a u: The parameter of projection point on edge.
9477 # \n \a PointOnEdge: The projection point.
9478 # \n \a EdgeInWireIndex: The index of an edge in a wire.
9480 # @ref tui_projection "Example"
9481 @ManageTransactions("TrsfOp")
9482 def MakeProjectionOnWire(self, thePoint, theWire, theName=None):
9484 Create a projection of the given point on a wire or an edge.
9485 If there are no solutions or there are 2 or more solutions It throws an
9489 thePoint the point to be projected.
9490 theWire the wire. The edge is accepted as well.
9491 theName Object name; when specified, this parameter is used
9492 for result publication in the study. Otherwise, if automatic
9493 publication is switched on, default value is used for result name.
9496 [u, PointOnEdge, EdgeInWireIndex]
9497 u: The parameter of projection point on edge.
9498 PointOnEdge: The projection point.
9499 EdgeInWireIndex: The index of an edge in a wire.
9501 # Example: see GEOM_TestAll.py
9502 anObj = self.TrsfOp.ProjectPointOnWire(thePoint, theWire)
9503 RaiseIfFailed("ProjectPointOnWire", self.TrsfOp)
9504 self._autoPublish(anObj[1], theName, "projection")
9507 # -----------------------------------------------------------------------------
9509 # -----------------------------------------------------------------------------
9511 ## Translate the given object along the given vector a given number times
9512 # @param theObject The object to be translated.
9513 # @param theVector Direction of the translation. DX if None.
9514 # @param theStep Distance to translate on.
9515 # @param theNbTimes Quantity of translations to be done.
9516 # @param theName Object name; when specified, this parameter is used
9517 # for result publication in the study. Otherwise, if automatic
9518 # publication is switched on, default value is used for result name.
9520 # @return New GEOM.GEOM_Object, containing compound of all
9521 # the shapes, obtained after each translation.
9523 # @ref tui_multi_translation "Example"
9524 @ManageTransactions("TrsfOp")
9525 def MakeMultiTranslation1D(self, theObject, theVector, theStep, theNbTimes, theName=None):
9527 Translate the given object along the given vector a given number times
9530 theObject The object to be translated.
9531 theVector Direction of the translation. DX if None.
9532 theStep Distance to translate on.
9533 theNbTimes Quantity of translations to be done.
9534 theName Object name; when specified, this parameter is used
9535 for result publication in the study. Otherwise, if automatic
9536 publication is switched on, default value is used for result name.
9539 New GEOM.GEOM_Object, containing compound of all
9540 the shapes, obtained after each translation.
9543 r1d = geompy.MakeMultiTranslation1D(prism, vect, 20, 4)
9545 # Example: see GEOM_TestAll.py
9546 theStep, theNbTimes, Parameters = ParseParameters(theStep, theNbTimes)
9547 anObj = self.TrsfOp.MultiTranslate1D(theObject, theVector, theStep, theNbTimes)
9548 RaiseIfFailed("MultiTranslate1D", self.TrsfOp)
9549 anObj.SetParameters(Parameters)
9550 self._autoPublish(anObj, theName, "multitranslation")
9553 ## Conseqently apply two specified translations to theObject specified number of times.
9554 # @param theObject The object to be translated.
9555 # @param theVector1 Direction of the first translation. DX if None.
9556 # @param theStep1 Step of the first translation.
9557 # @param theNbTimes1 Quantity of translations to be done along theVector1.
9558 # @param theVector2 Direction of the second translation. DY if None.
9559 # @param theStep2 Step of the second translation.
9560 # @param theNbTimes2 Quantity of translations to be done along theVector2.
9561 # @param theName Object name; when specified, this parameter is used
9562 # for result publication in the study. Otherwise, if automatic
9563 # publication is switched on, default value is used for result name.
9565 # @return New GEOM.GEOM_Object, containing compound of all
9566 # the shapes, obtained after each translation.
9568 # @ref tui_multi_translation "Example"
9569 @ManageTransactions("TrsfOp")
9570 def MakeMultiTranslation2D(self, theObject, theVector1, theStep1, theNbTimes1,
9571 theVector2, theStep2, theNbTimes2, theName=None):
9573 Conseqently apply two specified translations to theObject specified number of times.
9576 theObject The object to be translated.
9577 theVector1 Direction of the first translation. DX if None.
9578 theStep1 Step of the first translation.
9579 theNbTimes1 Quantity of translations to be done along theVector1.
9580 theVector2 Direction of the second translation. DY if None.
9581 theStep2 Step of the second translation.
9582 theNbTimes2 Quantity of translations to be done along theVector2.
9583 theName Object name; when specified, this parameter is used
9584 for result publication in the study. Otherwise, if automatic
9585 publication is switched on, default value is used for result name.
9588 New GEOM.GEOM_Object, containing compound of all
9589 the shapes, obtained after each translation.
9592 tr2d = geompy.MakeMultiTranslation2D(prism, vect1, 20, 4, vect2, 80, 3)
9594 # Example: see GEOM_TestAll.py
9595 theStep1,theNbTimes1,theStep2,theNbTimes2, Parameters = ParseParameters(theStep1,theNbTimes1,theStep2,theNbTimes2)
9596 anObj = self.TrsfOp.MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
9597 theVector2, theStep2, theNbTimes2)
9598 RaiseIfFailed("MultiTranslate2D", self.TrsfOp)
9599 anObj.SetParameters(Parameters)
9600 self._autoPublish(anObj, theName, "multitranslation")
9603 ## Rotate the given object around the given axis a given number times.
9604 # Rotation angle will be 2*PI/theNbTimes.
9605 # @param theObject The object to be rotated.
9606 # @param theAxis The rotation axis. DZ if None.
9607 # @param theNbTimes Quantity of rotations to be done.
9608 # @param theName Object name; when specified, this parameter is used
9609 # for result publication in the study. Otherwise, if automatic
9610 # publication is switched on, default value is used for result name.
9612 # @return New GEOM.GEOM_Object, containing compound of all the
9613 # shapes, obtained after each rotation.
9615 # @ref tui_multi_rotation "Example"
9616 @ManageTransactions("TrsfOp")
9617 def MultiRotate1DNbTimes (self, theObject, theAxis, theNbTimes, theName=None):
9619 Rotate the given object around the given axis a given number times.
9620 Rotation angle will be 2*PI/theNbTimes.
9623 theObject The object to be rotated.
9624 theAxis The rotation axis. DZ if None.
9625 theNbTimes Quantity of rotations to be done.
9626 theName Object name; when specified, this parameter is used
9627 for result publication in the study. Otherwise, if automatic
9628 publication is switched on, default value is used for result name.
9631 New GEOM.GEOM_Object, containing compound of all the
9632 shapes, obtained after each rotation.
9635 rot1d = geompy.MultiRotate1DNbTimes(prism, vect, 4)
9637 # Example: see GEOM_TestAll.py
9638 theNbTimes, Parameters = ParseParameters(theNbTimes)
9639 anObj = self.TrsfOp.MultiRotate1D(theObject, theAxis, theNbTimes)
9640 RaiseIfFailed("MultiRotate1DNbTimes", self.TrsfOp)
9641 anObj.SetParameters(Parameters)
9642 self._autoPublish(anObj, theName, "multirotation")
9645 ## Rotate the given object around the given axis
9646 # a given number times on the given angle.
9647 # @param theObject The object to be rotated.
9648 # @param theAxis The rotation axis. DZ if None.
9649 # @param theAngleStep Rotation angle in radians.
9650 # @param theNbTimes Quantity of rotations to be done.
9651 # @param theName Object name; when specified, this parameter is used
9652 # for result publication in the study. Otherwise, if automatic
9653 # publication is switched on, default value is used for result name.
9655 # @return New GEOM.GEOM_Object, containing compound of all the
9656 # shapes, obtained after each rotation.
9658 # @ref tui_multi_rotation "Example"
9659 @ManageTransactions("TrsfOp")
9660 def MultiRotate1DByStep(self, theObject, theAxis, theAngleStep, theNbTimes, theName=None):
9662 Rotate the given object around the given axis
9663 a given number times on the given angle.
9666 theObject The object to be rotated.
9667 theAxis The rotation axis. DZ if None.
9668 theAngleStep Rotation angle in radians.
9669 theNbTimes Quantity of rotations to be done.
9670 theName Object name; when specified, this parameter is used
9671 for result publication in the study. Otherwise, if automatic
9672 publication is switched on, default value is used for result name.
9675 New GEOM.GEOM_Object, containing compound of all the
9676 shapes, obtained after each rotation.
9679 rot1d = geompy.MultiRotate1DByStep(prism, vect, math.pi/4, 4)
9681 # Example: see GEOM_TestAll.py
9682 theAngleStep, theNbTimes, Parameters = ParseParameters(theAngleStep, theNbTimes)
9683 anObj = self.TrsfOp.MultiRotate1DByStep(theObject, theAxis, theAngleStep, theNbTimes)
9684 RaiseIfFailed("MultiRotate1DByStep", self.TrsfOp)
9685 anObj.SetParameters(Parameters)
9686 self._autoPublish(anObj, theName, "multirotation")
9689 ## Rotate the given object around the given axis a given
9690 # number times and multi-translate each rotation result.
9691 # Rotation angle will be 2*PI/theNbTimes1.
9692 # Translation direction passes through center of gravity
9693 # of rotated shape and its projection on the rotation axis.
9694 # @param theObject The object to be rotated.
9695 # @param theAxis Rotation axis. DZ if None.
9696 # @param theNbTimes1 Quantity of rotations to be done.
9697 # @param theRadialStep Translation distance.
9698 # @param theNbTimes2 Quantity of translations to be done.
9699 # @param theName Object name; when specified, this parameter is used
9700 # for result publication in the study. Otherwise, if automatic
9701 # publication is switched on, default value is used for result name.
9703 # @return New GEOM.GEOM_Object, containing compound of all the
9704 # shapes, obtained after each transformation.
9706 # @ref tui_multi_rotation "Example"
9707 @ManageTransactions("TrsfOp")
9708 def MultiRotate2DNbTimes(self, theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
9710 Rotate the given object around the
9711 given axis on the given angle a given number
9712 times and multi-translate each rotation result.
9713 Translation direction passes through center of gravity
9714 of rotated shape and its projection on the rotation axis.
9717 theObject The object to be rotated.
9718 theAxis Rotation axis. DZ if None.
9719 theNbTimes1 Quantity of rotations to be done.
9720 theRadialStep Translation distance.
9721 theNbTimes2 Quantity of translations to be done.
9722 theName Object name; when specified, this parameter is used
9723 for result publication in the study. Otherwise, if automatic
9724 publication is switched on, default value is used for result name.
9727 New GEOM.GEOM_Object, containing compound of all the
9728 shapes, obtained after each transformation.
9731 rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
9733 # Example: see GEOM_TestAll.py
9734 theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theNbTimes1, theRadialStep, theNbTimes2)
9735 anObj = self.TrsfOp.MultiRotate2DNbTimes(theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2)
9736 RaiseIfFailed("MultiRotate2DNbTimes", self.TrsfOp)
9737 anObj.SetParameters(Parameters)
9738 self._autoPublish(anObj, theName, "multirotation")
9741 ## Rotate the given object around the
9742 # given axis on the given angle a given number
9743 # times and multi-translate each rotation result.
9744 # Translation direction passes through center of gravity
9745 # of rotated shape and its projection on the rotation axis.
9746 # @param theObject The object to be rotated.
9747 # @param theAxis Rotation axis. DZ if None.
9748 # @param theAngleStep Rotation angle in radians.
9749 # @param theNbTimes1 Quantity of rotations to be done.
9750 # @param theRadialStep Translation distance.
9751 # @param theNbTimes2 Quantity of translations to be done.
9752 # @param theName Object name; when specified, this parameter is used
9753 # for result publication in the study. Otherwise, if automatic
9754 # publication is switched on, default value is used for result name.
9756 # @return New GEOM.GEOM_Object, containing compound of all the
9757 # shapes, obtained after each transformation.
9759 # @ref tui_multi_rotation "Example"
9760 @ManageTransactions("TrsfOp")
9761 def MultiRotate2DByStep (self, theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
9763 Rotate the given object around the
9764 given axis on the given angle a given number
9765 times and multi-translate each rotation result.
9766 Translation direction passes through center of gravity
9767 of rotated shape and its projection on the rotation axis.
9770 theObject The object to be rotated.
9771 theAxis Rotation axis. DZ if None.
9772 theAngleStep Rotation angle in radians.
9773 theNbTimes1 Quantity of rotations to be done.
9774 theRadialStep Translation distance.
9775 theNbTimes2 Quantity of translations to be done.
9776 theName Object name; when specified, this parameter is used
9777 for result publication in the study. Otherwise, if automatic
9778 publication is switched on, default value is used for result name.
9781 New GEOM.GEOM_Object, containing compound of all the
9782 shapes, obtained after each transformation.
9785 rot2d = geompy.MultiRotate2D(prism, vect, math.pi/3, 4, 50, 5)
9787 # Example: see GEOM_TestAll.py
9788 theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
9789 anObj = self.TrsfOp.MultiRotate2DByStep(theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
9790 RaiseIfFailed("MultiRotate2DByStep", self.TrsfOp)
9791 anObj.SetParameters(Parameters)
9792 self._autoPublish(anObj, theName, "multirotation")
9795 ## The same, as MultiRotate1DNbTimes(), but axis is given by direction and point
9797 # @ref swig_MakeMultiRotation "Example"
9798 def MakeMultiRotation1DNbTimes(self, aShape, aDir, aPoint, aNbTimes, theName=None):
9800 The same, as geompy.MultiRotate1DNbTimes, but axis is given by direction and point
9803 pz = geompy.MakeVertex(0, 0, 100)
9804 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9805 MultiRot1D = geompy.MakeMultiRotation1DNbTimes(prism, vy, pz, 6)
9807 # Example: see GEOM_TestOthers.py
9808 aVec = self.MakeLine(aPoint,aDir)
9809 # note: auto-publishing is done in self.MultiRotate1D()
9810 anObj = self.MultiRotate1DNbTimes(aShape, aVec, aNbTimes, theName)
9813 ## The same, as MultiRotate1DByStep(), but axis is given by direction and point
9815 # @ref swig_MakeMultiRotation "Example"
9816 def MakeMultiRotation1DByStep(self, aShape, aDir, aPoint, anAngle, aNbTimes, theName=None):
9818 The same, as geompy.MultiRotate1D, but axis is given by direction and point
9821 pz = geompy.MakeVertex(0, 0, 100)
9822 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9823 MultiRot1D = geompy.MakeMultiRotation1DByStep(prism, vy, pz, math.pi/3, 6)
9825 # Example: see GEOM_TestOthers.py
9826 aVec = self.MakeLine(aPoint,aDir)
9827 # note: auto-publishing is done in self.MultiRotate1D()
9828 anObj = self.MultiRotate1DByStep(aShape, aVec, anAngle, aNbTimes, theName)
9831 ## The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
9833 # @ref swig_MakeMultiRotation "Example"
9834 def MakeMultiRotation2DNbTimes(self, aShape, aDir, aPoint, nbtimes1, aStep, nbtimes2, theName=None):
9836 The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
9839 pz = geompy.MakeVertex(0, 0, 100)
9840 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9841 MultiRot2D = geompy.MakeMultiRotation2DNbTimes(f12, vy, pz, 6, 30, 3)
9843 # Example: see GEOM_TestOthers.py
9844 aVec = self.MakeLine(aPoint,aDir)
9845 # note: auto-publishing is done in self.MultiRotate2DNbTimes()
9846 anObj = self.MultiRotate2DNbTimes(aShape, aVec, nbtimes1, aStep, nbtimes2, theName)
9849 ## The same, as MultiRotate2DByStep(), but axis is given by direction and point
9851 # @ref swig_MakeMultiRotation "Example"
9852 def MakeMultiRotation2DByStep(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
9854 The same, as MultiRotate2DByStep(), but axis is given by direction and point
9857 pz = geompy.MakeVertex(0, 0, 100)
9858 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9859 MultiRot2D = geompy.MakeMultiRotation2DByStep(f12, vy, pz, math.pi/4, 6, 30, 3)
9861 # Example: see GEOM_TestOthers.py
9862 aVec = self.MakeLine(aPoint,aDir)
9863 # note: auto-publishing is done in self.MultiRotate2D()
9864 anObj = self.MultiRotate2DByStep(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
9868 # Compute a wire or a face that represents a projection of the source
9869 # shape onto cylinder. The cylinder's coordinate system is the same
9870 # as the global coordinate system.
9872 # @param theObject The object to be projected. It can be either
9873 # a planar wire or a face.
9874 # @param theRadius The radius of the cylinder.
9875 # @param theStartAngle The starting angle in radians from
9876 # the cylinder's X axis around Z axis. The angle from which
9877 # the projection is started.
9878 # @param theAngleLength The projection length angle in radians.
9879 # The angle in which to project the total length of the wire.
9880 # If it is negative the projection is not scaled and natural
9881 # wire length is kept for the projection.
9882 # @param theAngleRotation The desired angle in radians between
9883 # the tangent vector to the first curve at the first point of
9884 # the theObject's projection in 2D space and U-direction of
9885 # cylinder's 2D space.
9886 # @param theName Object name; when specified, this parameter is used
9887 # for result publication in the study. Otherwise, if automatic
9888 # publication is switched on, default value is used for result name.
9890 # @return New GEOM.GEOM_Object, containing the result shape. The result
9891 # represents a wire or a face that represents a projection of
9892 # the source shape onto a cylinder.
9894 # @ref tui_projection "Example"
9895 def MakeProjectionOnCylinder (self, theObject, theRadius,
9896 theStartAngle=0.0, theAngleLength=-1.0,
9897 theAngleRotation=0.0,
9900 Compute a wire or a face that represents a projection of the source
9901 shape onto cylinder. The cylinder's coordinate system is the same
9902 as the global coordinate system.
9905 theObject The object to be projected. It can be either
9906 a planar wire or a face.
9907 theRadius The radius of the cylinder.
9908 theStartAngle The starting angle in radians from the cylinder's X axis
9909 around Z axis. The angle from which the projection is started.
9910 theAngleLength The projection length angle in radians. The angle in which
9911 to project the total length of the wire. If it is negative the
9912 projection is not scaled and natural wire length is kept for
9914 theAngleRotation The desired angle in radians between
9915 the tangent vector to the first curve at the first
9916 point of the theObject's projection in 2D space and
9917 U-direction of cylinder's 2D space.
9918 theName Object name; when specified, this parameter is used
9919 for result publication in the study. Otherwise, if automatic
9920 publication is switched on, default value is used for result name.
9923 New GEOM.GEOM_Object, containing the result shape. The result
9924 represents a wire or a face that represents a projection of
9925 the source shape onto a cylinder.
9927 # Example: see GEOM_TestAll.py
9928 flagStartAngle = False
9929 if isinstance(theStartAngle,str):
9930 flagStartAngle = True
9931 flagAngleLength = False
9932 if isinstance(theAngleLength,str):
9933 flagAngleLength = True
9934 flagAngleRotation = False
9935 if isinstance(theAngleRotation,str):
9936 flagAngleRotation = True
9937 theRadius, theStartAngle, theAngleLength, theAngleRotation, Parameters = ParseParameters(
9938 theRadius, theStartAngle, theAngleLength, theAngleRotation)
9940 theStartAngle = theStartAngle*math.pi/180.
9942 theAngleLength = theAngleLength*math.pi/180.
9943 if flagAngleRotation:
9944 theAngleRotation = theAngleRotation*math.pi/180.
9945 anObj = self.TrsfOp.MakeProjectionOnCylinder(theObject, theRadius,
9946 theStartAngle, theAngleLength, theAngleRotation)
9947 RaiseIfFailed("MakeProjectionOnCylinder", self.TrsfOp)
9948 anObj.SetParameters(Parameters)
9949 self._autoPublish(anObj, theName, "projection")
9952 # end of l3_transform
9955 ## @addtogroup l3_transform_d
9958 ## Deprecated method. Use MultiRotate1DNbTimes instead.
9959 def MultiRotate1D(self, theObject, theAxis, theNbTimes, theName=None):
9961 Deprecated method. Use MultiRotate1DNbTimes instead.
9963 print("The method MultiRotate1D is DEPRECATED. Use MultiRotate1DNbTimes instead.")
9964 return self.MultiRotate1DNbTimes(theObject, theAxis, theNbTimes, theName)
9966 ## The same, as MultiRotate2DByStep(), but theAngle is in degrees.
9967 # This method is DEPRECATED. Use MultiRotate2DByStep() instead.
9968 @ManageTransactions("TrsfOp")
9969 def MultiRotate2D(self, theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2, theName=None):
9971 The same, as MultiRotate2DByStep(), but theAngle is in degrees.
9972 This method is DEPRECATED. Use MultiRotate2DByStep() instead.
9975 rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
9977 print("The method MultiRotate2D is DEPRECATED. Use MultiRotate2DByStep instead.")
9978 theAngle, theNbTimes1, theStep, theNbTimes2, Parameters = ParseParameters(theAngle, theNbTimes1, theStep, theNbTimes2)
9979 anObj = self.TrsfOp.MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2)
9980 RaiseIfFailed("MultiRotate2D", self.TrsfOp)
9981 anObj.SetParameters(Parameters)
9982 self._autoPublish(anObj, theName, "multirotation")
9985 ## The same, as MultiRotate1D(), but axis is given by direction and point
9986 # This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
9987 def MakeMultiRotation1D(self, aShape, aDir, aPoint, aNbTimes, theName=None):
9989 The same, as geompy.MultiRotate1D, but axis is given by direction and point.
9990 This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
9993 pz = geompy.MakeVertex(0, 0, 100)
9994 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9995 MultiRot1D = geompy.MakeMultiRotation1D(prism, vy, pz, 6)
9997 print("The method MakeMultiRotation1D is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.")
9998 aVec = self.MakeLine(aPoint,aDir)
9999 # note: auto-publishing is done in self.MultiRotate1D()
10000 anObj = self.MultiRotate1D(aShape, aVec, aNbTimes, theName)
10003 ## The same, as MultiRotate2D(), but axis is given by direction and point
10004 # This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
10005 def MakeMultiRotation2D(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
10007 The same, as MultiRotate2D(), but axis is given by direction and point
10008 This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
10011 pz = geompy.MakeVertex(0, 0, 100)
10012 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
10013 MultiRot2D = geompy.MakeMultiRotation2D(f12, vy, pz, 45, 6, 30, 3)
10015 print("The method MakeMultiRotation2D is DEPRECATED. Use MakeMultiRotation2DByStep instead.")
10016 aVec = self.MakeLine(aPoint,aDir)
10017 # note: auto-publishing is done in self.MultiRotate2D()
10018 anObj = self.MultiRotate2D(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
10021 # end of l3_transform_d
10024 ## @addtogroup l3_local
10027 ## Perform a fillet on all edges of the given shape.
10028 # @param theShape Shape, to perform fillet on.
10029 # @param theR Fillet radius.
10030 # @param theName Object name; when specified, this parameter is used
10031 # for result publication in the study. Otherwise, if automatic
10032 # publication is switched on, default value is used for result name.
10034 # @return New GEOM.GEOM_Object, containing the result shape.
10036 # @ref tui_fillet "Example 1"
10037 # \n @ref swig_MakeFilletAll "Example 2"
10038 @ManageTransactions("LocalOp")
10039 def MakeFilletAll(self, theShape, theR, theName=None):
10041 Perform a fillet on all edges of the given shape.
10044 theShape Shape, to perform fillet on.
10045 theR Fillet radius.
10046 theName Object name; when specified, this parameter is used
10047 for result publication in the study. Otherwise, if automatic
10048 publication is switched on, default value is used for result name.
10051 New GEOM.GEOM_Object, containing the result shape.
10054 filletall = geompy.MakeFilletAll(prism, 10.)
10056 # Example: see GEOM_TestOthers.py
10057 theR,Parameters = ParseParameters(theR)
10058 anObj = self.LocalOp.MakeFilletAll(theShape, theR)
10059 RaiseIfFailed("MakeFilletAll", self.LocalOp)
10060 anObj.SetParameters(Parameters)
10061 self._autoPublish(anObj, theName, "fillet")
10064 ## Perform a fillet on the specified edges/faces of the given shape
10065 # @param theShape Shape, to perform fillet on.
10066 # @param theR Fillet radius.
10067 # @param theShapeType Type of shapes in <VAR>theListShapes</VAR> (see ShapeType())
10068 # @param theListShapes Global indices of edges/faces to perform fillet on.
10069 # @param theName Object name; when specified, this parameter is used
10070 # for result publication in the study. Otherwise, if automatic
10071 # publication is switched on, default value is used for result name.
10073 # @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10075 # @return New GEOM.GEOM_Object, containing the result shape.
10077 # @ref tui_fillet "Example"
10078 @ManageTransactions("LocalOp")
10079 def MakeFillet(self, theShape, theR, theShapeType, theListShapes, theName=None):
10081 Perform a fillet on the specified edges/faces of the given shape
10084 theShape Shape, to perform fillet on.
10085 theR Fillet radius.
10086 theShapeType Type of shapes in theListShapes (see geompy.ShapeTypes)
10087 theListShapes Global indices of edges/faces to perform fillet on.
10088 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.
10093 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10096 New GEOM.GEOM_Object, containing the result shape.
10099 # get the list of IDs (IDList) for the fillet
10100 prism_edges = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["EDGE"])
10102 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[0]))
10103 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[1]))
10104 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[2]))
10105 # make a fillet on the specified edges of the given shape
10106 fillet = geompy.MakeFillet(prism, 10., geompy.ShapeType["EDGE"], IDlist_e)
10108 # Example: see GEOM_TestAll.py
10109 theR,Parameters = ParseParameters(theR)
10111 if theShapeType == self.ShapeType["EDGE"]:
10112 anObj = self.LocalOp.MakeFilletEdges(theShape, theR, theListShapes)
10113 RaiseIfFailed("MakeFilletEdges", self.LocalOp)
10115 anObj = self.LocalOp.MakeFilletFaces(theShape, theR, theListShapes)
10116 RaiseIfFailed("MakeFilletFaces", self.LocalOp)
10117 anObj.SetParameters(Parameters)
10118 self._autoPublish(anObj, theName, "fillet")
10121 ## The same that MakeFillet() but with two Fillet Radius R1 and R2
10122 @ManageTransactions("LocalOp")
10123 def MakeFilletR1R2(self, theShape, theR1, theR2, theShapeType, theListShapes, theName=None):
10125 The same that geompy.MakeFillet but with two Fillet Radius R1 and R2
10128 # get the list of IDs (IDList) for the fillet
10129 prism_edges = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["EDGE"])
10131 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[0]))
10132 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[1]))
10133 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[2]))
10134 # make a fillet on the specified edges of the given shape
10135 fillet = geompy.MakeFillet(prism, 10., 15., geompy.ShapeType["EDGE"], IDlist_e)
10137 theR1,theR2,Parameters = ParseParameters(theR1,theR2)
10139 if theShapeType == self.ShapeType["EDGE"]:
10140 anObj = self.LocalOp.MakeFilletEdgesR1R2(theShape, theR1, theR2, theListShapes)
10141 RaiseIfFailed("MakeFilletEdgesR1R2", self.LocalOp)
10143 anObj = self.LocalOp.MakeFilletFacesR1R2(theShape, theR1, theR2, theListShapes)
10144 RaiseIfFailed("MakeFilletFacesR1R2", self.LocalOp)
10145 anObj.SetParameters(Parameters)
10146 self._autoPublish(anObj, theName, "fillet")
10149 ## Perform a fillet on the specified edges of the given shape
10150 # @param theShape Wire Shape to perform fillet on.
10151 # @param theR Fillet radius.
10152 # @param theListOfVertexes Global indices of vertexes to perform fillet on.
10153 # \note Global index of sub-shape can be obtained, using method GetSubShapeID()
10154 # \note The list of vertices could be empty,
10155 # in this case fillet will done done at all vertices in wire
10156 # @param doIgnoreSecantVertices If FALSE, fillet radius is always limited
10157 # by the length of the edges, nearest to the fillet vertex.
10158 # But sometimes the next edge is C1 continuous with the one, nearest to
10159 # the fillet point, and such two (or more) edges can be united to allow
10160 # bigger radius. Set this flag to TRUE to allow collinear edges union,
10161 # thus ignoring the secant vertex (vertices).
10162 # @param theName Object name; when specified, this parameter is used
10163 # for result publication in the study. Otherwise, if automatic
10164 # publication is switched on, default value is used for result name.
10166 # @return New GEOM.GEOM_Object, containing the result shape.
10168 # @ref tui_fillet2d "Example"
10169 @ManageTransactions("LocalOp")
10170 def MakeFillet1D(self, theShape, theR, theListOfVertexes, doIgnoreSecantVertices = True, theName=None):
10172 Perform a fillet on the specified edges of the given shape
10175 theShape Wire Shape to perform fillet on.
10176 theR Fillet radius.
10177 theListOfVertexes Global indices of vertexes to perform fillet on.
10178 doIgnoreSecantVertices If FALSE, fillet radius is always limited
10179 by the length of the edges, nearest to the fillet vertex.
10180 But sometimes the next edge is C1 continuous with the one, nearest to
10181 the fillet point, and such two (or more) edges can be united to allow
10182 bigger radius. Set this flag to TRUE to allow collinear edges union,
10183 thus ignoring the secant vertex (vertices).
10184 theName Object name; when specified, this parameter is used
10185 for result publication in the study. Otherwise, if automatic
10186 publication is switched on, default value is used for result name.
10188 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10190 The list of vertices could be empty,in this case fillet will done done at all vertices in wire
10193 New GEOM.GEOM_Object, containing the result shape.
10197 Wire_1 = geompy.MakeWire([Edge_12, Edge_7, Edge_11, Edge_6, Edge_1,Edge_4])
10198 # make fillet at given wire vertices with giver radius
10199 Fillet_1D_1 = geompy.MakeFillet1D(Wire_1, 55, [3, 4, 6, 8, 10])
10201 # Example: see GEOM_TestAll.py
10202 theR,doIgnoreSecantVertices,Parameters = ParseParameters(theR,doIgnoreSecantVertices)
10203 anObj = self.LocalOp.MakeFillet1D(theShape, theR, theListOfVertexes, doIgnoreSecantVertices)
10204 RaiseIfFailed("MakeFillet1D", self.LocalOp)
10205 anObj.SetParameters(Parameters)
10206 self._autoPublish(anObj, theName, "fillet")
10209 ## Perform a fillet at the specified vertices of the given face/shell.
10210 # @param theShape Face or Shell shape to perform fillet on.
10211 # @param theR Fillet radius.
10212 # @param theListOfVertexes Global indices of vertexes to perform fillet on.
10213 # @param theName Object name; when specified, this parameter is used
10214 # for result publication in the study. Otherwise, if automatic
10215 # publication is switched on, default value is used for result name.
10217 # @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10219 # @return New GEOM.GEOM_Object, containing the result shape.
10221 # @ref tui_fillet2d "Example"
10222 @ManageTransactions("LocalOp")
10223 def MakeFillet2D(self, theShape, theR, theListOfVertexes, theName=None):
10225 Perform a fillet at the specified vertices of the given face/shell.
10228 theShape Face or Shell shape to perform fillet on.
10229 theR Fillet radius.
10230 theListOfVertexes Global indices of vertexes to perform fillet on.
10231 theName Object name; when specified, this parameter is used
10232 for result publication in the study. Otherwise, if automatic
10233 publication is switched on, default value is used for result name.
10235 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10238 New GEOM.GEOM_Object, containing the result shape.
10241 face = geompy.MakeFaceHW(100, 100, 1)
10242 fillet2d = geompy.MakeFillet2D(face, 30, [7, 9])
10244 # Example: see GEOM_TestAll.py
10245 theR,Parameters = ParseParameters(theR)
10246 anObj = self.LocalOp.MakeFillet2D(theShape, theR, theListOfVertexes)
10247 RaiseIfFailed("MakeFillet2D", self.LocalOp)
10248 anObj.SetParameters(Parameters)
10249 self._autoPublish(anObj, theName, "fillet")
10252 ## Perform a symmetric chamfer on all edges of the given shape.
10253 # @param theShape Shape, to perform chamfer on.
10254 # @param theD Chamfer size along each face.
10255 # @param theName Object name; when specified, this parameter is used
10256 # for result publication in the study. Otherwise, if automatic
10257 # publication is switched on, default value is used for result name.
10259 # @return New GEOM.GEOM_Object, containing the result shape.
10261 # @ref tui_chamfer "Example 1"
10262 # \n @ref swig_MakeChamferAll "Example 2"
10263 @ManageTransactions("LocalOp")
10264 def MakeChamferAll(self, theShape, theD, theName=None):
10266 Perform a symmetric chamfer on all edges of the given shape.
10269 theShape Shape, to perform chamfer on.
10270 theD Chamfer size along each face.
10271 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.
10276 New GEOM.GEOM_Object, containing the result shape.
10279 chamfer_all = geompy.MakeChamferAll(prism, 10.)
10281 # Example: see GEOM_TestOthers.py
10282 theD,Parameters = ParseParameters(theD)
10283 anObj = self.LocalOp.MakeChamferAll(theShape, theD)
10284 RaiseIfFailed("MakeChamferAll", self.LocalOp)
10285 anObj.SetParameters(Parameters)
10286 self._autoPublish(anObj, theName, "chamfer")
10289 ## Perform a chamfer on edges, common to the specified faces,
10290 # with distance D1 on the Face1
10291 # @param theShape Shape, to perform chamfer on.
10292 # @param theD1 Chamfer size along \a theFace1.
10293 # @param theD2 Chamfer size along \a theFace2.
10294 # @param theFace1,theFace2 Global indices of two faces of \a theShape.
10295 # @param theName Object name; when specified, this parameter is used
10296 # for result publication in the study. Otherwise, if automatic
10297 # publication is switched on, default value is used for result name.
10299 # @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10301 # @return New GEOM.GEOM_Object, containing the result shape.
10303 # @ref tui_chamfer "Example"
10304 @ManageTransactions("LocalOp")
10305 def MakeChamferEdge(self, theShape, theD1, theD2, theFace1, theFace2, theName=None):
10307 Perform a chamfer on edges, common to the specified faces,
10308 with distance D1 on the Face1
10311 theShape Shape, to perform chamfer on.
10312 theD1 Chamfer size along theFace1.
10313 theD2 Chamfer size along theFace2.
10314 theFace1,theFace2 Global indices of two faces of theShape.
10315 theName Object name; when specified, this parameter is used
10316 for result publication in the study. Otherwise, if automatic
10317 publication is switched on, default value is used for result name.
10320 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10323 New GEOM.GEOM_Object, containing the result shape.
10326 prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"])
10327 f_ind_1 = geompy.GetSubShapeID(prism, prism_faces[0])
10328 f_ind_2 = geompy.GetSubShapeID(prism, prism_faces[1])
10329 chamfer_e = geompy.MakeChamferEdge(prism, 10., 10., f_ind_1, f_ind_2)
10331 # Example: see GEOM_TestAll.py
10332 theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10333 anObj = self.LocalOp.MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2)
10334 RaiseIfFailed("MakeChamferEdge", self.LocalOp)
10335 anObj.SetParameters(Parameters)
10336 self._autoPublish(anObj, theName, "chamfer")
10339 ## Perform a chamfer on edges
10340 # @param theShape Shape, to perform chamfer on.
10341 # @param theD Chamfer length
10342 # @param theAngle Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10343 # @param theFace1,theFace2 Global indices of two faces of \a theShape.
10344 # @param theName Object name; when specified, this parameter is used
10345 # for result publication in the study. Otherwise, if automatic
10346 # publication is switched on, default value is used for result name.
10348 # @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10350 # @return New GEOM.GEOM_Object, containing the result shape.
10351 @ManageTransactions("LocalOp")
10352 def MakeChamferEdgeAD(self, theShape, theD, theAngle, theFace1, theFace2, theName=None):
10354 Perform a chamfer on edges
10357 theShape Shape, to perform chamfer on.
10358 theD1 Chamfer size along theFace1.
10359 theAngle Angle of chamfer (angle in radians or a name of variable which defines angle in degrees).
10360 theFace1,theFace2 Global indices of two faces of theShape.
10361 theName Object name; when specified, this parameter is used
10362 for result publication in the study. Otherwise, if automatic
10363 publication is switched on, default value is used for result name.
10366 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10369 New GEOM.GEOM_Object, containing the result shape.
10372 prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"])
10373 f_ind_1 = geompy.GetSubShapeID(prism, prism_faces[0])
10374 f_ind_2 = geompy.GetSubShapeID(prism, prism_faces[1])
10376 chamfer_e = geompy.MakeChamferEdge(prism, 10., ang, f_ind_1, f_ind_2)
10379 if isinstance(theAngle,str):
10381 theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10383 theAngle = theAngle*math.pi/180.0
10384 anObj = self.LocalOp.MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2)
10385 RaiseIfFailed("MakeChamferEdgeAD", self.LocalOp)
10386 anObj.SetParameters(Parameters)
10387 self._autoPublish(anObj, theName, "chamfer")
10390 ## Perform a chamfer on all edges of the specified faces,
10391 # with distance D1 on the first specified face (if several for one edge)
10392 # @param theShape Shape, to perform chamfer on.
10393 # @param theD1 Chamfer size along face from \a theFaces. If both faces,
10394 # connected to the edge, are in \a theFaces, \a theD1
10395 # will be get along face, which is nearer to \a theFaces beginning.
10396 # @param theD2 Chamfer size along another of two faces, connected to the edge.
10397 # @param theFaces Sequence of global indices of faces of \a theShape.
10398 # @param theName Object name; when specified, this parameter is used
10399 # for result publication in the study. Otherwise, if automatic
10400 # publication is switched on, default value is used for result name.
10402 # @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10404 # @return New GEOM.GEOM_Object, containing the result shape.
10406 # @ref tui_chamfer "Example"
10407 @ManageTransactions("LocalOp")
10408 def MakeChamferFaces(self, theShape, theD1, theD2, theFaces, theName=None):
10410 Perform a chamfer on all edges of the specified faces,
10411 with distance D1 on the first specified face (if several for one edge)
10414 theShape Shape, to perform chamfer on.
10415 theD1 Chamfer size along face from theFaces. If both faces,
10416 connected to the edge, are in theFaces, theD1
10417 will be get along face, which is nearer to theFaces beginning.
10418 theD2 Chamfer size along another of two faces, connected to the edge.
10419 theFaces Sequence of global indices of faces of theShape.
10420 theName Object name; when specified, this parameter is used
10421 for result publication in the study. Otherwise, if automatic
10422 publication is switched on, default value is used for result name.
10424 Note: Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
10427 New GEOM.GEOM_Object, containing the result shape.
10429 # Example: see GEOM_TestAll.py
10430 theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10431 anObj = self.LocalOp.MakeChamferFaces(theShape, theD1, theD2, theFaces)
10432 RaiseIfFailed("MakeChamferFaces", self.LocalOp)
10433 anObj.SetParameters(Parameters)
10434 self._autoPublish(anObj, theName, "chamfer")
10437 ## The Same that MakeChamferFaces() but with params theD is chamfer length and
10438 # theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10440 # @ref swig_FilletChamfer "Example"
10441 @ManageTransactions("LocalOp")
10442 def MakeChamferFacesAD(self, theShape, theD, theAngle, theFaces, theName=None):
10444 The Same that geompy.MakeChamferFaces but with params theD is chamfer length and
10445 theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10448 if isinstance(theAngle,str):
10450 theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10452 theAngle = theAngle*math.pi/180.0
10453 anObj = self.LocalOp.MakeChamferFacesAD(theShape, theD, theAngle, theFaces)
10454 RaiseIfFailed("MakeChamferFacesAD", self.LocalOp)
10455 anObj.SetParameters(Parameters)
10456 self._autoPublish(anObj, theName, "chamfer")
10459 ## Perform a chamfer on edges,
10460 # with distance D1 on the first specified face (if several for one edge)
10461 # @param theShape Shape, to perform chamfer on.
10462 # @param theD1,theD2 Chamfer size
10463 # @param theEdges Sequence of edges of \a theShape.
10464 # @param theName Object name; when specified, this parameter is used
10465 # for result publication in the study. Otherwise, if automatic
10466 # publication is switched on, default value is used for result name.
10468 # @return New GEOM.GEOM_Object, containing the result shape.
10470 # @ref swig_FilletChamfer "Example"
10471 @ManageTransactions("LocalOp")
10472 def MakeChamferEdges(self, theShape, theD1, theD2, theEdges, theName=None):
10474 Perform a chamfer on edges,
10475 with distance D1 on the first specified face (if several for one edge)
10478 theShape Shape, to perform chamfer on.
10479 theD1,theD2 Chamfer size
10480 theEdges Sequence of edges of theShape.
10481 theName Object name; when specified, this parameter is used
10482 for result publication in the study. Otherwise, if automatic
10483 publication is switched on, default value is used for result name.
10486 New GEOM.GEOM_Object, containing the result shape.
10488 theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10489 anObj = self.LocalOp.MakeChamferEdges(theShape, theD1, theD2, theEdges)
10490 RaiseIfFailed("MakeChamferEdges", self.LocalOp)
10491 anObj.SetParameters(Parameters)
10492 self._autoPublish(anObj, theName, "chamfer")
10495 ## The Same that MakeChamferEdges() 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 @ManageTransactions("LocalOp")
10498 def MakeChamferEdgesAD(self, theShape, theD, theAngle, theEdges, theName=None):
10500 The Same that geompy.MakeChamferEdges but with params theD is chamfer length and
10501 theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10504 if isinstance(theAngle,str):
10506 theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10508 theAngle = theAngle*math.pi/180.0
10509 anObj = self.LocalOp.MakeChamferEdgesAD(theShape, theD, theAngle, theEdges)
10510 RaiseIfFailed("MakeChamferEdgesAD", self.LocalOp)
10511 anObj.SetParameters(Parameters)
10512 self._autoPublish(anObj, theName, "chamfer")
10515 ## @sa MakeChamferEdge(), MakeChamferFaces()
10517 # @ref swig_MakeChamfer "Example"
10518 def MakeChamfer(self, aShape, d1, d2, aShapeType, ListShape, theName=None):
10520 See geompy.MakeChamferEdge() and geompy.MakeChamferFaces() functions for more information.
10522 # Example: see GEOM_TestOthers.py
10524 # note: auto-publishing is done in self.MakeChamferEdge() or self.MakeChamferFaces()
10525 if aShapeType == self.ShapeType["EDGE"]:
10526 anObj = self.MakeChamferEdge(aShape,d1,d2,ListShape[0],ListShape[1],theName)
10528 anObj = self.MakeChamferFaces(aShape,d1,d2,ListShape,theName)
10531 ## Remove material from a solid by extrusion of the base shape on the given distance.
10532 # @param theInit Shape to remove material from. It must be a solid or
10533 # a compound made of a single solid.
10534 # @param theBase Closed edge or wire defining the base shape to be extruded.
10535 # @param theH Prism dimension along the normal to theBase
10536 # @param theAngle Draft angle in degrees.
10537 # @param theInvert If true material changes the direction
10538 # @param theName Object name; when specified, this parameter is used
10539 # for result publication in the study. Otherwise, if automatic
10540 # publication is switched on, default value is used for result name.
10542 # @return New GEOM.GEOM_Object, containing the initial shape with removed material
10544 # @ref tui_creation_prism "Example"
10545 @ManageTransactions("PrimOp")
10546 def MakeExtrudedCut(self, theInit, theBase, theH, theAngle, theInvert=False, theName=None):
10548 Add material to a solid by extrusion of the base shape on the given distance.
10551 theInit Shape to remove material from. It must be a solid or a compound made of a single solid.
10552 theBase Closed edge or wire defining the base shape to be extruded.
10553 theH Prism dimension along the normal to theBase
10554 theAngle Draft angle in degrees.
10555 theInvert If true material changes the direction.
10556 theName Object name; when specified, this parameter is used
10557 for result publication in the study. Otherwise, if automatic
10558 publication is switched on, default value is used for result name.
10561 New GEOM.GEOM_Object, containing the initial shape with removed material.
10563 # Example: see GEOM_TestAll.py
10564 theH,theAngle,Parameters = ParseParameters(theH,theAngle)
10565 anObj = self.PrimOp.MakeDraftPrism(theInit, theBase, theH, theAngle, False, theInvert)
10566 RaiseIfFailed("MakeExtrudedBoss", self.PrimOp)
10567 anObj.SetParameters(Parameters)
10568 self._autoPublish(anObj, theName, "extrudedCut")
10571 ## Add material to a solid by extrusion of the base shape on the given distance.
10572 # @param theInit Shape to add material to. It must be a solid or
10573 # a compound made of a single solid.
10574 # @param theBase Closed edge or wire defining the base shape to be extruded.
10575 # @param theH Prism dimension along the normal to theBase
10576 # @param theAngle Draft angle in degrees.
10577 # @param theInvert If true material changes the direction
10578 # @param theName Object name; when specified, this parameter is used
10579 # for result publication in the study. Otherwise, if automatic
10580 # publication is switched on, default value is used for result name.
10582 # @return New GEOM.GEOM_Object, containing the initial shape with added material
10584 # @ref tui_creation_prism "Example"
10585 @ManageTransactions("PrimOp")
10586 def MakeExtrudedBoss(self, theInit, theBase, theH, theAngle, theInvert=False, theName=None):
10588 Add material to a solid by extrusion of the base shape on the given distance.
10591 theInit Shape to add material to. It must be a solid or a compound made of a single solid.
10592 theBase Closed edge or wire defining the base shape to be extruded.
10593 theH Prism dimension along the normal to theBase
10594 theAngle Draft angle in degrees.
10595 theInvert If true material changes the direction.
10596 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.
10601 New GEOM.GEOM_Object, containing the initial shape with added material.
10603 # Example: see GEOM_TestAll.py
10604 theH,theAngle,Parameters = ParseParameters(theH,theAngle)
10605 anObj = self.PrimOp.MakeDraftPrism(theInit, theBase, theH, theAngle, True, theInvert)
10606 RaiseIfFailed("MakeExtrudedBoss", self.PrimOp)
10607 anObj.SetParameters(Parameters)
10608 self._autoPublish(anObj, theName, "extrudedBoss")
10614 ## @addtogroup l3_basic_op
10617 ## Perform an Archimde operation on the given shape with given parameters.
10618 # The object presenting the resulting face is returned.
10619 # @param theShape Shape to be put in water.
10620 # @param theWeight Weight of the shape.
10621 # @param theWaterDensity Density of the water.
10622 # @param theMeshDeflection Deflection of the mesh, using to compute the section.
10623 # @param theName Object name; when specified, this parameter is used
10624 # for result publication in the study. Otherwise, if automatic
10625 # publication is switched on, default value is used for result name.
10627 # @return New GEOM.GEOM_Object, containing a section of \a theShape
10628 # by a plane, corresponding to water level.
10630 # @ref tui_archimede "Example"
10631 @ManageTransactions("LocalOp")
10632 def Archimede(self, theShape, theWeight, theWaterDensity, theMeshDeflection, theName=None):
10634 Perform an Archimde operation on the given shape with given parameters.
10635 The object presenting the resulting face is returned.
10638 theShape Shape to be put in water.
10639 theWeight Weight of the shape.
10640 theWaterDensity Density of the water.
10641 theMeshDeflection Deflection of the mesh, using to compute the section.
10642 theName Object name; when specified, this parameter is used
10643 for result publication in the study. Otherwise, if automatic
10644 publication is switched on, default value is used for result name.
10647 New GEOM.GEOM_Object, containing a section of theShape
10648 by a plane, corresponding to water level.
10650 # Example: see GEOM_TestAll.py
10651 theWeight,theWaterDensity,theMeshDeflection,Parameters = ParseParameters(
10652 theWeight,theWaterDensity,theMeshDeflection)
10653 anObj = self.LocalOp.MakeArchimede(theShape, theWeight, theWaterDensity, theMeshDeflection)
10654 RaiseIfFailed("MakeArchimede", self.LocalOp)
10655 anObj.SetParameters(Parameters)
10656 self._autoPublish(anObj, theName, "archimede")
10659 # end of l3_basic_op
10662 ## @addtogroup l2_measure
10665 ## Get point coordinates
10666 # @return [x, y, z]
10668 # @ref tui_point_coordinates_page "Example"
10669 @ManageTransactions("MeasuOp")
10670 def PointCoordinates(self,Point):
10672 Get point coordinates
10677 # Example: see GEOM_TestMeasures.py
10678 aTuple = self.MeasuOp.PointCoordinates(Point)
10679 RaiseIfFailed("PointCoordinates", self.MeasuOp)
10682 ## Get vector coordinates
10683 # @return [x, y, z]
10685 # @ref tui_measurement_tools_page "Example"
10686 def VectorCoordinates(self,Vector):
10688 Get vector coordinates
10694 p1=self.GetFirstVertex(Vector)
10695 p2=self.GetLastVertex(Vector)
10697 X1=self.PointCoordinates(p1)
10698 X2=self.PointCoordinates(p2)
10700 return (X2[0]-X1[0],X2[1]-X1[1],X2[2]-X1[2])
10703 ## Compute cross product
10704 # @return vector w=u^v
10706 # @ref tui_measurement_tools_page "Example"
10707 def CrossProduct(self, Vector1, Vector2):
10709 Compute cross product
10711 Returns: vector w=u^v
10713 u=self.VectorCoordinates(Vector1)
10714 v=self.VectorCoordinates(Vector2)
10715 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])
10719 ## Compute cross product
10720 # @return dot product p=u.v
10722 # @ref tui_measurement_tools_page "Example"
10723 def DotProduct(self, Vector1, Vector2):
10725 Compute cross product
10727 Returns: dot product p=u.v
10729 u=self.VectorCoordinates(Vector1)
10730 v=self.VectorCoordinates(Vector2)
10731 p=u[0]*v[0]+u[1]*v[1]+u[2]*v[2]
10736 ## Get summarized length of all wires,
10737 # area of surface and volume of the given shape.
10738 # @param theShape Shape to define properties of.
10739 # @param theTolerance maximal relative error of area
10740 # and volume computation.
10741 # @return [theLength, theSurfArea, theVolume]\n
10742 # theLength: Summarized length of all wires of the given shape.\n
10743 # theSurfArea: Area of surface of the given shape.\n
10744 # theVolume: Volume of the given shape.
10746 # @ref tui_basic_properties_page "Example"
10747 @ManageTransactions("MeasuOp")
10748 def BasicProperties(self,theShape, theTolerance=1.e-6):
10750 Get summarized length of all wires,
10751 area of surface and volume of the given shape.
10754 theShape Shape to define properties of.
10755 theTolerance maximal relative error of area
10756 and volume computation.
10759 [theLength, theSurfArea, theVolume]
10760 theLength: Summarized length of all wires of the given shape.
10761 theSurfArea: Area of surface of the given shape.
10762 theVolume: Volume of the given shape.
10764 # Example: see GEOM_TestMeasures.py
10765 aTuple = self.MeasuOp.GetBasicProperties(theShape, theTolerance)
10766 RaiseIfFailed("GetBasicProperties", self.MeasuOp)
10769 ## Get parameters of bounding box of the given shape
10770 # @param theShape Shape to obtain bounding box of.
10771 # @param precise TRUE for precise computation; FALSE for fast one.
10772 # @return [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
10773 # Xmin,Xmax: Limits of shape along OX axis.
10774 # Ymin,Ymax: Limits of shape along OY axis.
10775 # Zmin,Zmax: Limits of shape along OZ axis.
10777 # @ref tui_bounding_box_page "Example"
10778 @ManageTransactions("MeasuOp")
10779 def BoundingBox (self, theShape, precise=False):
10781 Get parameters of bounding box of the given shape
10784 theShape Shape to obtain bounding box of.
10785 precise TRUE for precise computation; FALSE for fast one.
10788 [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
10789 Xmin,Xmax: Limits of shape along OX axis.
10790 Ymin,Ymax: Limits of shape along OY axis.
10791 Zmin,Zmax: Limits of shape along OZ axis.
10793 # Example: see GEOM_TestMeasures.py
10794 aTuple = self.MeasuOp.GetBoundingBox(theShape, precise)
10795 RaiseIfFailed("GetBoundingBox", self.MeasuOp)
10798 ## Get bounding box of the given shape
10799 # @param theShape Shape to obtain bounding box of.
10800 # @param precise TRUE for precise computation; FALSE for fast one.
10801 # @param theName Object name; when specified, this parameter is used
10802 # for result publication in the study. Otherwise, if automatic
10803 # publication is switched on, default value is used for result name.
10805 # @return New GEOM.GEOM_Object, containing the created box.
10807 # @ref tui_bounding_box_page "Example"
10808 @ManageTransactions("MeasuOp")
10809 def MakeBoundingBox (self, theShape, precise=False, theName=None):
10811 Get bounding box of the given shape
10814 theShape Shape to obtain bounding box of.
10815 precise TRUE for precise computation; FALSE for fast one.
10816 theName Object name; when specified, this parameter is used
10817 for result publication in the study. Otherwise, if automatic
10818 publication is switched on, default value is used for result name.
10821 New GEOM.GEOM_Object, containing the created box.
10823 # Example: see GEOM_TestMeasures.py
10824 anObj = self.MeasuOp.MakeBoundingBox(theShape, precise)
10825 RaiseIfFailed("MakeBoundingBox", self.MeasuOp)
10826 self._autoPublish(anObj, theName, "bndbox")
10829 ## Get inertia matrix and moments of inertia of theShape.
10830 # @param theShape Shape to calculate inertia of.
10831 # @return [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
10832 # I(1-3)(1-3): Components of the inertia matrix of the given shape.
10833 # Ix,Iy,Iz: Moments of inertia of the given shape.
10835 # @ref tui_inertia_page "Example"
10836 @ManageTransactions("MeasuOp")
10837 def Inertia(self,theShape):
10839 Get inertia matrix and moments of inertia of theShape.
10842 theShape Shape to calculate inertia of.
10845 [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
10846 I(1-3)(1-3): Components of the inertia matrix of the given shape.
10847 Ix,Iy,Iz: Moments of inertia of the given shape.
10849 # Example: see GEOM_TestMeasures.py
10850 aTuple = self.MeasuOp.GetInertia(theShape)
10851 RaiseIfFailed("GetInertia", self.MeasuOp)
10854 ## Get if coords are included in the shape (ST_IN or ST_ON)
10855 # @param theShape Shape
10856 # @param coords list of points coordinates [x1, y1, z1, x2, y2, z2, ...]
10857 # @param tolerance to be used (default is 1.0e-7)
10858 # @return list_of_boolean = [res1, res2, ...]
10859 @ManageTransactions("MeasuOp")
10860 def AreCoordsInside(self, theShape, coords, tolerance=1.e-7):
10862 Get if coords are included in the shape (ST_IN or ST_ON)
10866 coords list of points coordinates [x1, y1, z1, x2, y2, z2, ...]
10867 tolerance to be used (default is 1.0e-7)
10870 list_of_boolean = [res1, res2, ...]
10872 return self.MeasuOp.AreCoordsInside(theShape, coords, tolerance)
10874 ## Get minimal distance between the given shapes.
10875 # @param theShape1,theShape2 Shapes to find minimal distance between.
10876 # @return Value of the minimal distance between the given shapes.
10878 # @ref tui_min_distance_page "Example"
10879 @ManageTransactions("MeasuOp")
10880 def MinDistance(self, theShape1, theShape2):
10882 Get minimal distance between the given shapes.
10885 theShape1,theShape2 Shapes to find minimal distance between.
10888 Value of the minimal distance between the given shapes.
10890 # Example: see GEOM_TestMeasures.py
10891 aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
10892 RaiseIfFailed("GetMinDistance", self.MeasuOp)
10895 ## Get minimal distance between the given shapes.
10896 # @param theShape1,theShape2 Shapes to find minimal distance between.
10897 # @return Value of the minimal distance between the given shapes, in form of list
10898 # [Distance, DX, DY, DZ].
10900 # @ref tui_min_distance_page "Example"
10901 @ManageTransactions("MeasuOp")
10902 def MinDistanceComponents(self, theShape1, theShape2):
10904 Get minimal distance between the given shapes.
10907 theShape1,theShape2 Shapes to find minimal distance between.
10910 Value of the minimal distance between the given shapes, in form of list
10911 [Distance, DX, DY, DZ]
10913 # Example: see GEOM_TestMeasures.py
10914 aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
10915 RaiseIfFailed("GetMinDistance", self.MeasuOp)
10916 aRes = [aTuple[0], aTuple[4] - aTuple[1], aTuple[5] - aTuple[2], aTuple[6] - aTuple[3]]
10919 ## Get closest points of the given shapes.
10920 # @param theShape1,theShape2 Shapes to find closest points of.
10921 # @return The number of found solutions (-1 in case of infinite number of
10922 # solutions) and a list of (X, Y, Z) coordinates for all couples of points.
10924 # @ref tui_min_distance_page "Example"
10925 @ManageTransactions("MeasuOp")
10926 def ClosestPoints (self, theShape1, theShape2):
10928 Get closest points of the given shapes.
10931 theShape1,theShape2 Shapes to find closest points of.
10934 The number of found solutions (-1 in case of infinite number of
10935 solutions) and a list of (X, Y, Z) coordinates for all couples of points.
10937 # Example: see GEOM_TestMeasures.py
10938 aTuple = self.MeasuOp.ClosestPoints(theShape1, theShape2)
10939 RaiseIfFailed("ClosestPoints", self.MeasuOp)
10942 ## Get angle between the given shapes in degrees.
10943 # @param theShape1,theShape2 Lines or linear edges to find angle between.
10944 # @note If both arguments are vectors, the angle is computed in accordance
10945 # with their orientations, otherwise the minimum angle is computed.
10946 # @return Value of the angle between the given shapes in degrees.
10948 # @ref tui_angle_page "Example"
10949 @ManageTransactions("MeasuOp")
10950 def GetAngle(self, theShape1, theShape2):
10952 Get angle between the given shapes in degrees.
10955 theShape1,theShape2 Lines or linear edges to find angle between.
10958 If both arguments are vectors, the angle is computed in accordance
10959 with their orientations, otherwise the minimum angle is computed.
10962 Value of the angle between the given shapes in degrees.
10964 # Example: see GEOM_TestMeasures.py
10965 anAngle = self.MeasuOp.GetAngle(theShape1, theShape2)
10966 RaiseIfFailed("GetAngle", self.MeasuOp)
10969 ## Get angle between the given shapes in radians.
10970 # @param theShape1,theShape2 Lines or linear edges to find angle between.
10971 # @note If both arguments are vectors, the angle is computed in accordance
10972 # with their orientations, otherwise the minimum angle is computed.
10973 # @return Value of the angle between the given shapes in radians.
10975 # @ref tui_angle_page "Example"
10976 @ManageTransactions("MeasuOp")
10977 def GetAngleRadians(self, theShape1, theShape2):
10979 Get angle between the given shapes in radians.
10982 theShape1,theShape2 Lines or linear edges to find angle between.
10986 If both arguments are vectors, the angle is computed in accordance
10987 with their orientations, otherwise the minimum angle is computed.
10990 Value of the angle between the given shapes in radians.
10992 # Example: see GEOM_TestMeasures.py
10993 anAngle = self.MeasuOp.GetAngle(theShape1, theShape2)*math.pi/180.
10994 RaiseIfFailed("GetAngle", self.MeasuOp)
10997 ## Get angle between the given vectors in degrees.
10998 # @param theShape1,theShape2 Vectors to find angle between.
10999 # @param theFlag If True, the normal vector is defined by the two vectors cross,
11000 # if False, the opposite vector to the normal vector is used.
11001 # @return Value of the angle between the given vectors in degrees.
11003 # @ref tui_angle_page "Example"
11004 @ManageTransactions("MeasuOp")
11005 def GetAngleVectors(self, theShape1, theShape2, theFlag = True):
11007 Get angle between the given vectors in degrees.
11010 theShape1,theShape2 Vectors to find angle between.
11011 theFlag If True, the normal vector is defined by the two vectors cross,
11012 if False, the opposite vector to the normal vector is used.
11015 Value of the angle between the given vectors in degrees.
11017 anAngle = self.MeasuOp.GetAngleBtwVectors(theShape1, theShape2)
11019 anAngle = 360. - anAngle
11020 RaiseIfFailed("GetAngleVectors", self.MeasuOp)
11023 ## The same as GetAngleVectors, but the result is in radians.
11024 def GetAngleRadiansVectors(self, theShape1, theShape2, theFlag = True):
11026 Get angle between the given vectors in radians.
11029 theShape1,theShape2 Vectors to find angle between.
11030 theFlag If True, the normal vector is defined by the two vectors cross,
11031 if False, the opposite vector to the normal vector is used.
11034 Value of the angle between the given vectors in radians.
11036 anAngle = self.GetAngleVectors(theShape1, theShape2, theFlag)*math.pi/180.
11039 ## @name Curve Curvature Measurement
11040 # Methods for receiving radius of curvature of curves
11041 # in the given point
11044 ## Measure curvature of a curve at a point, set by parameter.
11045 # @param theCurve a curve.
11046 # @param theParam parameter.
11047 # @return radius of curvature of \a theCurve.
11049 # @ref swig_todo "Example"
11050 @ManageTransactions("MeasuOp")
11051 def CurveCurvatureByParam(self, theCurve, theParam):
11053 Measure curvature of a curve at a point, set by parameter.
11057 theParam parameter.
11060 radius of curvature of theCurve.
11062 # Example: see GEOM_TestMeasures.py
11063 aCurv = self.MeasuOp.CurveCurvatureByParam(theCurve,theParam)
11064 RaiseIfFailed("CurveCurvatureByParam", self.MeasuOp)
11067 ## Measure curvature of a curve at a point.
11068 # @param theCurve a curve.
11069 # @param thePoint given point.
11070 # @return radius of curvature of \a theCurve.
11072 # @ref swig_todo "Example"
11073 @ManageTransactions("MeasuOp")
11074 def CurveCurvatureByPoint(self, theCurve, thePoint):
11076 Measure curvature of a curve at a point.
11080 thePoint given point.
11083 radius of curvature of theCurve.
11085 aCurv = self.MeasuOp.CurveCurvatureByPoint(theCurve,thePoint)
11086 RaiseIfFailed("CurveCurvatureByPoint", self.MeasuOp)
11090 ## @name Surface Curvature Measurement
11091 # Methods for receiving max and min radius of curvature of surfaces
11092 # in the given point
11095 ## Measure max radius of curvature of surface.
11096 # @param theSurf the given surface.
11097 # @param theUParam Value of U-parameter on the referenced surface.
11098 # @param theVParam Value of V-parameter on the referenced surface.
11099 # @return max radius of curvature of theSurf.
11101 ## @ref swig_todo "Example"
11102 @ManageTransactions("MeasuOp")
11103 def MaxSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
11105 Measure max radius of curvature of surface.
11108 theSurf the given surface.
11109 theUParam Value of U-parameter on the referenced surface.
11110 theVParam Value of V-parameter on the referenced surface.
11113 max radius of curvature of theSurf.
11115 # Example: see GEOM_TestMeasures.py
11116 aSurf = self.MeasuOp.MaxSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
11117 RaiseIfFailed("MaxSurfaceCurvatureByParam", self.MeasuOp)
11120 ## Measure max radius of curvature of surface in the given point
11121 # @param theSurf the given surface.
11122 # @param thePoint given point.
11123 # @return max radius of curvature of theSurf.
11125 ## @ref swig_todo "Example"
11126 @ManageTransactions("MeasuOp")
11127 def MaxSurfaceCurvatureByPoint(self, theSurf, thePoint):
11129 Measure max radius of curvature of surface in the given point.
11132 theSurf the given surface.
11133 thePoint given point.
11136 max radius of curvature of theSurf.
11138 aSurf = self.MeasuOp.MaxSurfaceCurvatureByPoint(theSurf,thePoint)
11139 RaiseIfFailed("MaxSurfaceCurvatureByPoint", self.MeasuOp)
11142 ## Measure min radius of curvature of surface.
11143 # @param theSurf the given surface.
11144 # @param theUParam Value of U-parameter on the referenced surface.
11145 # @param theVParam Value of V-parameter on the referenced surface.
11146 # @return min radius of curvature of theSurf.
11148 ## @ref swig_todo "Example"
11149 @ManageTransactions("MeasuOp")
11150 def MinSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
11152 Measure min radius of curvature of surface.
11155 theSurf the given surface.
11156 theUParam Value of U-parameter on the referenced surface.
11157 theVParam Value of V-parameter on the referenced surface.
11160 Min radius of curvature of theSurf.
11162 aSurf = self.MeasuOp.MinSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
11163 RaiseIfFailed("MinSurfaceCurvatureByParam", self.MeasuOp)
11166 ## Measure min radius of curvature of surface in the given point
11167 # @param theSurf the given surface.
11168 # @param thePoint given point.
11169 # @return min radius of curvature of theSurf.
11171 ## @ref swig_todo "Example"
11172 @ManageTransactions("MeasuOp")
11173 def MinSurfaceCurvatureByPoint(self, theSurf, thePoint):
11175 Measure min radius of curvature of surface in the given point.
11178 theSurf the given surface.
11179 thePoint given point.
11182 Min radius of curvature of theSurf.
11184 aSurf = self.MeasuOp.MinSurfaceCurvatureByPoint(theSurf,thePoint)
11185 RaiseIfFailed("MinSurfaceCurvatureByPoint", self.MeasuOp)
11189 ## Measure curvature radius of surface in the given point along the given direction.
11190 # @param theSurf the given face.
11191 # @param thePoint given point.
11192 # @param theDirection given direction.
11193 # @param theName Object name; when specified, this parameter is used
11194 # for result publication in the study. Otherwise, if automatic
11195 # publication is switched on, default value is used for result name.
11197 # @return New GEOM.GEOM_Object, containing vector of curvature of theSurf.
11198 # The returned vector is codirectional with the normal to the face
11199 # in the given point in case of positive curvature value
11200 # and opposite to the normal in case of negative curvature.
11201 # The normal of the returned vector is equal to the
11202 # absolute value of the curvature radius.
11203 # Null shape is returned in case of infinite radius
11204 # (zero curvature), for example, in case of flat face.
11206 ## @ref swig_CurvatureOnFace "Example"
11207 @ManageTransactions("MeasuOp")
11208 def CurvatureOnFace(self, theSurf, thePoint, theDirection, theName=None):
11210 Measure curvature radius of surface in the given point along the given direction.
11213 theSurf the given face.
11214 thePoint given point.
11215 theDirection given direction.
11216 theName Object name; when specified, this parameter is used
11217 for result publication in the study. Otherwise, if automatic
11218 publication is switched on, default value is used for result name.
11221 New GEOM.GEOM_Object, containing vector of curvature of theSurf.
11222 The returned vector is codirectional with the normal to the face
11223 in the given point in case of positive curvature value
11224 and opposite to the normal in case of negative curvature.
11225 The normal of the returned vector is equal to the
11226 absolute value of the curvature radius.
11227 Null shape is returned in case of infinite radius
11228 (zero curvature), for example, in case of flat face.
11231 curvature_1 = geompy.CurvatureOnFace(Face_1, Vertex_1, OX)
11233 aVec = self.MeasuOp.SurfaceCurvatureByPointAndDirection(theSurf,thePoint,theDirection)
11234 if self.MeasuOp.GetErrorCode() != "ZERO_CURVATURE":
11235 RaiseIfFailed("CurvatureOnFace", self.MeasuOp)
11236 self._autoPublish(aVec, theName, "curvature")
11239 ## Convert X,Y,Z points coordinates to UV parameters on the given surface.
11240 # @param theSurf the given face. It can be also a shell or a compound with one face.
11241 # @param theXYZlist float list of size 3*N where N is the number of points
11242 # for which we want their U,V coordinates.
11243 # If the user enters a list of size not divisible by 3
11244 # an exception will be thrown.
11245 # @param theIsNormalized if True, the returned parameters will be in range [0, 1].
11247 # @return list of float of size 2*N.
11249 # @ref tui_xyz_to_uv_page "Example"
11250 @ManageTransactions("MeasuOp")
11251 def XYZtoUV(self, theSurf, theXYZlist, theIsNormalized = True):
11253 Convert X,Y,Z points coordinates to UV parameters on the given surface.
11256 theSurf the given face. It can be also a shell or a compound with one face.
11257 theXYZlist float list of size 3*N where N is the number of points
11258 for which we want their U,V coordinates.
11259 If the user enters a list of size not divisible by 3
11260 an exception will be thrown.
11261 theIsNormalized if True, the returned parameters will be in range [0, 1].
11264 list of float of size 2*N.
11267 [u1,v1, u2,v2] = geompy.XYZtoUV(Face_1, [0,0,0, 0,10,10])
11269 aUVlist = self.MeasuOp.XYZtoUV(theSurf, theXYZlist, theIsNormalized)
11270 RaiseIfFailed("XYZtoUV", self.MeasuOp)
11273 ## Convert UV parameters on the given surface to 3D points coordinates.
11274 # @param theSurf the given face. It can be also a shell or a compound with one face.
11275 # @param theUVlist float list of size 2*N where N is the number of points
11276 # for which we want their X,Y,Z coordinates.
11277 # If the user enters a list of non-even size
11278 # an exception will be thrown.
11279 # @param theIsNormalized if True, the input parameters are expected to be in range [0, 1].
11281 # @return list of float of size 3*N.
11283 # @ref tui_xyz_to_uv_page "Example"
11284 @ManageTransactions("MeasuOp")
11285 def UVtoXYZ(self, theSurf, theUVlist, theIsNormalized = True):
11287 Convert UV parameters on the given surface to 3D points coordinates.
11290 theSurf the given face. It can be also a shell or a compound with one face.
11291 theUVlist float list of size 2*N where N is the number of points
11292 for which we want their X,Y,Z coordinates.
11293 If the user enters a list of non-even size
11294 an exception will be thrown.
11295 theIsNormalized if True, the input parameters are expected to be in range [0, 1].
11298 list of float of size 3*N.
11301 [x1,y1,z1, x2,y2,z2] = geompy.UVtoXYZ(Face_1, [0,0, 10,10])
11303 aXYZlist = self.MeasuOp.UVtoXYZ(theSurf, theUVlist, theIsNormalized)
11304 RaiseIfFailed("UVtoXYZ", self.MeasuOp)
11307 ## Get min and max tolerances of sub-shapes of theShape
11308 # @param theShape Shape, to get tolerances of.
11309 # @return [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]\n
11310 # FaceMin,FaceMax: Min and max tolerances of the faces.\n
11311 # EdgeMin,EdgeMax: Min and max tolerances of the edges.\n
11312 # VertMin,VertMax: Min and max tolerances of the vertices.
11314 # @ref tui_tolerance_page "Example"
11315 @ManageTransactions("MeasuOp")
11316 def Tolerance(self,theShape):
11318 Get min and max tolerances of sub-shapes of theShape
11321 theShape Shape, to get tolerances of.
11324 [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]
11325 FaceMin,FaceMax: Min and max tolerances of the faces.
11326 EdgeMin,EdgeMax: Min and max tolerances of the edges.
11327 VertMin,VertMax: Min and max tolerances of the vertices.
11329 # Example: see GEOM_TestMeasures.py
11330 aTuple = self.MeasuOp.GetTolerance(theShape)
11331 RaiseIfFailed("GetTolerance", self.MeasuOp)
11334 ## Obtain description of the given shape (number of sub-shapes of each type)
11335 # @param theShape Shape to be described.
11336 # @return Description of the given shape.
11338 # @ref tui_whatis_page "Example"
11339 @ManageTransactions("MeasuOp")
11340 def WhatIs(self,theShape):
11342 Obtain description of the given shape (number of sub-shapes of each type)
11345 theShape Shape to be described.
11348 Description of the given shape.
11350 # Example: see GEOM_TestMeasures.py
11351 aDescr = self.MeasuOp.WhatIs(theShape)
11352 RaiseIfFailed("WhatIs", self.MeasuOp)
11355 ## Obtain quantity of shapes of the given type in \a theShape.
11356 # If \a theShape is of type \a theType, it is also counted.
11357 # @param theShape Shape to be described.
11358 # @param theType the given ShapeType().
11359 # @return Quantity of shapes of type \a theType in \a theShape.
11361 # @ref tui_measurement_tools_page "Example"
11362 def NbShapes (self, theShape, theType):
11364 Obtain quantity of shapes of the given type in theShape.
11365 If theShape is of type theType, it is also counted.
11368 theShape Shape to be described.
11369 theType the given geompy.ShapeType
11372 Quantity of shapes of type theType in theShape.
11374 # Example: see GEOM_TestMeasures.py
11375 listSh = self.SubShapeAllIDs(theShape, theType)
11379 ## Obtain quantity of shapes of each type in \a theShape.
11380 # The \a theShape is also counted.
11381 # @param theShape Shape to be described.
11382 # @return Dictionary of ShapeType() with bound quantities of shapes.
11384 # @ref tui_measurement_tools_page "Example"
11385 def ShapeInfo (self, theShape):
11387 Obtain quantity of shapes of each type in theShape.
11388 The theShape is also counted.
11391 theShape Shape to be described.
11394 Dictionary of geompy.ShapeType with bound quantities of shapes.
11396 # Example: see GEOM_TestMeasures.py
11398 for typeSh in self.ShapeType:
11399 if typeSh in ( "AUTO", "SHAPE" ): continue
11400 listSh = self.SubShapeAllIDs(theShape, self.ShapeType[typeSh])
11406 def GetCreationInformation(self, theShape):
11408 infos = theShape.GetCreationInformation()
11411 opName = info.operationName
11412 if not opName: opName = "no info available"
11413 if res: res += "\n"
11414 res += "Operation: " + opName
11416 for parVal in info.params:
11417 res += "\n \t%s = %s" % ( parVal.name, parVal.value )
11420 ## Get a point, situated at the centre of mass of theShape.
11421 # @param theShape Shape to define centre of mass of.
11422 # @param theName Object name; when specified, this parameter is used
11423 # for result publication in the study. Otherwise, if automatic
11424 # publication is switched on, default value is used for result name.
11426 # @return New GEOM.GEOM_Object, containing the created point.
11428 # @ref tui_center_of_mass_page "Example"
11429 @ManageTransactions("MeasuOp")
11430 def MakeCDG(self, theShape, theName=None):
11432 Get a point, situated at the centre of mass of theShape.
11435 theShape Shape to define centre of mass of.
11436 theName Object name; when specified, this parameter is used
11437 for result publication in the study. Otherwise, if automatic
11438 publication is switched on, default value is used for result name.
11441 New GEOM.GEOM_Object, containing the created point.
11443 # Example: see GEOM_TestMeasures.py
11444 anObj = self.MeasuOp.GetCentreOfMass(theShape)
11445 RaiseIfFailed("GetCentreOfMass", self.MeasuOp)
11446 self._autoPublish(anObj, theName, "centerOfMass")
11449 ## Get a vertex sub-shape by index.
11450 # @param theShape Shape to find sub-shape.
11451 # @param theIndex Index to find vertex by this index (starting from zero)
11452 # @param theUseOri To consider edge/wire orientation or not
11453 # @param theName Object name; when specified, this parameter is used
11454 # for result publication in the study. Otherwise, if automatic
11455 # publication is switched on, default value is used for result name.
11457 # @return New GEOM.GEOM_Object, containing the created vertex.
11459 # @ref tui_measurement_tools_page "Example"
11460 @ManageTransactions("MeasuOp")
11461 def GetVertexByIndex(self, theShape, theIndex, theUseOri=True, theName=None):
11463 Get a vertex sub-shape by index.
11466 theShape Shape to find sub-shape.
11467 theIndex Index to find vertex by this index (starting from zero)
11468 theUseOri To consider edge/wire orientation or not
11469 theName Object name; when specified, this parameter is used
11470 for result publication in the study. Otherwise, if automatic
11471 publication is switched on, default value is used for result name.
11474 New GEOM.GEOM_Object, containing the created vertex.
11476 # Example: see GEOM_TestMeasures.py
11477 if isinstance( theUseOri, str ): # theUseOri was inserted before theName
11478 theUseOri, theName = True, theUseOri
11479 anObj = self.MeasuOp.GetVertexByIndex(theShape, theIndex, theUseOri)
11480 RaiseIfFailed("GetVertexByIndex", self.MeasuOp)
11481 self._autoPublish(anObj, theName, "vertex")
11484 ## Get the first vertex of wire/edge depended orientation.
11485 # @param theShape Shape to find first vertex.
11486 # @param theName Object name; when specified, this parameter is used
11487 # for result publication in the study. Otherwise, if automatic
11488 # publication is switched on, default value is used for result name.
11490 # @return New GEOM.GEOM_Object, containing the created vertex.
11492 # @ref tui_measurement_tools_page "Example"
11493 def GetFirstVertex(self, theShape, theName=None):
11495 Get the first vertex of wire/edge depended orientation.
11498 theShape Shape to find first vertex.
11499 theName Object name; when specified, this parameter is used
11500 for result publication in the study. Otherwise, if automatic
11501 publication is switched on, default value is used for result name.
11504 New GEOM.GEOM_Object, containing the created vertex.
11506 # Example: see GEOM_TestMeasures.py
11507 # note: auto-publishing is done in self.GetVertexByIndex()
11508 return self.GetVertexByIndex(theShape, 0, True, theName)
11510 ## Get the last vertex of wire/edge depended orientation.
11511 # @param theShape Shape to find last vertex.
11512 # @param theName Object name; when specified, this parameter is used
11513 # for result publication in the study. Otherwise, if automatic
11514 # publication is switched on, default value is used for result name.
11516 # @return New GEOM.GEOM_Object, containing the created vertex.
11518 # @ref tui_measurement_tools_page "Example"
11519 def GetLastVertex(self, theShape, theName=None):
11521 Get the last vertex of wire/edge depended orientation.
11524 theShape Shape to find last vertex.
11525 theName Object name; when specified, this parameter is used
11526 for result publication in the study. Otherwise, if automatic
11527 publication is switched on, default value is used for result name.
11530 New GEOM.GEOM_Object, containing the created vertex.
11532 # Example: see GEOM_TestMeasures.py
11533 nb_vert = self.NumberOfSubShapes(theShape, self.ShapeType["VERTEX"])
11534 # note: auto-publishing is done in self.GetVertexByIndex()
11535 return self.GetVertexByIndex(theShape, (nb_vert-1), True, theName)
11537 ## Get a normale to the given face. If the point is not given,
11538 # the normale is calculated at the center of mass.
11539 # @param theFace Face to define normale of.
11540 # @param theOptionalPoint Point to compute the normale at.
11541 # @param theName Object name; when specified, this parameter is used
11542 # for result publication in the study. Otherwise, if automatic
11543 # publication is switched on, default value is used for result name.
11545 # @return New GEOM.GEOM_Object, containing the created vector.
11547 # @ref swig_todo "Example"
11548 @ManageTransactions("MeasuOp")
11549 def GetNormal(self, theFace, theOptionalPoint = None, theName=None):
11551 Get a normale to the given face. If the point is not given,
11552 the normale is calculated at the center of mass.
11555 theFace Face to define normale of.
11556 theOptionalPoint Point to compute the normale at.
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.
11562 New GEOM.GEOM_Object, containing the created vector.
11564 # Example: see GEOM_TestMeasures.py
11565 anObj = self.MeasuOp.GetNormal(theFace, theOptionalPoint)
11566 RaiseIfFailed("GetNormal", self.MeasuOp)
11567 self._autoPublish(anObj, theName, "normal")
11570 ## Print shape errors obtained from CheckShape.
11571 # @param theShape Shape that was checked.
11572 # @param theShapeErrors the shape errors obtained by CheckShape.
11573 # @param theReturnStatus If 0 the description of problem is printed.
11574 # If 1 the description of problem is returned.
11575 # @return If theReturnStatus is equal to 1 the description is returned.
11576 # Otherwise doesn't return anything.
11578 # @ref tui_check_shape_page "Example"
11579 @ManageTransactions("MeasuOp")
11580 def PrintShapeErrors(self, theShape, theShapeErrors, theReturnStatus = 0):
11582 Print shape errors obtained from CheckShape.
11585 theShape Shape that was checked.
11586 theShapeErrors the shape errors obtained by CheckShape.
11587 theReturnStatus If 0 the description of problem is printed.
11588 If 1 the description of problem is returned.
11591 If theReturnStatus is equal to 1 the description is returned.
11592 Otherwise doesn't return anything.
11594 # Example: see GEOM_TestMeasures.py
11595 Descr = self.MeasuOp.PrintShapeErrors(theShape, theShapeErrors)
11596 if theReturnStatus == 1:
11601 ## Check a topology of the given shape.
11602 # @param theShape Shape to check validity of.
11603 # @param theIsCheckGeom If FALSE, only the shape's topology will be checked, \n
11604 # if TRUE, the shape's geometry will be checked also.
11605 # @param theReturnStatus If 0 and if theShape is invalid, a description
11606 # of problem is printed.
11607 # If 1 isValid flag and the description of
11608 # problem is returned.
11609 # If 2 isValid flag and the list of error data
11611 # @return TRUE, if the shape "seems to be valid".
11612 # If theShape is invalid, prints a description of problem.
11613 # If theReturnStatus is equal to 1 the description is returned
11614 # along with IsValid flag.
11615 # If theReturnStatus is equal to 2 the list of error data is
11616 # returned along with IsValid flag.
11618 # @ref tui_check_shape_page "Example"
11619 @ManageTransactions("MeasuOp")
11620 def CheckShape(self,theShape, theIsCheckGeom = 0, theReturnStatus = 0):
11622 Check a topology of the given shape.
11625 theShape Shape to check validity of.
11626 theIsCheckGeom If FALSE, only the shape's topology will be checked,
11627 if TRUE, the shape's geometry will be checked also.
11628 theReturnStatus If 0 and if theShape is invalid, a description
11629 of problem is printed.
11630 If 1 IsValid flag and the description of
11631 problem is returned.
11632 If 2 IsValid flag and the list of error data
11636 TRUE, if the shape "seems to be valid".
11637 If theShape is invalid, prints a description of problem.
11638 If theReturnStatus is equal to 1 the description is returned
11639 along with IsValid flag.
11640 If theReturnStatus is equal to 2 the list of error data is
11641 returned along with IsValid flag.
11643 # Example: see GEOM_TestMeasures.py
11645 (IsValid, ShapeErrors) = self.MeasuOp.CheckShapeWithGeometry(theShape)
11646 RaiseIfFailed("CheckShapeWithGeometry", self.MeasuOp)
11648 (IsValid, ShapeErrors) = self.MeasuOp.CheckShape(theShape)
11649 RaiseIfFailed("CheckShape", self.MeasuOp)
11651 if theReturnStatus == 0:
11652 Descr = self.MeasuOp.PrintShapeErrors(theShape, ShapeErrors)
11654 if theReturnStatus == 1:
11655 Descr = self.MeasuOp.PrintShapeErrors(theShape, ShapeErrors)
11656 return (IsValid, Descr)
11657 elif theReturnStatus == 2:
11658 return (IsValid, ShapeErrors)
11661 ## Detect self-intersections in the given shape.
11662 # @param theShape Shape to check.
11663 # @param theCheckLevel is the level of self-intersection check.
11664 # Possible input values are:
11665 # - GEOM.SI_V_V(0) - only V/V interferences
11666 # - GEOM.SI_V_E(1) - V/V and V/E interferences
11667 # - GEOM.SI_E_E(2) - V/V, V/E and E/E interferences
11668 # - GEOM.SI_V_F(3) - V/V, V/E, E/E and V/F interferences
11669 # - GEOM.SI_E_F(4) - V/V, V/E, E/E, V/F and E/F interferences
11670 # - GEOM.SI_ALL(5) - all interferences.
11671 # @return TRUE, if the shape contains no self-intersections.
11673 # @ref tui_check_self_intersections_page "Example"
11674 @ManageTransactions("MeasuOp")
11675 def CheckSelfIntersections(self, theShape, theCheckLevel = GEOM.SI_ALL):
11677 Detect self-intersections in the given shape.
11680 theShape Shape to check.
11681 theCheckLevel is the level of self-intersection check.
11682 Possible input values are:
11683 - GEOM.SI_V_V(0) - only V/V interferences
11684 - GEOM.SI_V_E(1) - V/V and V/E interferences
11685 - GEOM.SI_E_E(2) - V/V, V/E and E/E interferences
11686 - GEOM.SI_V_F(3) - V/V, V/E, E/E and V/F interferences
11687 - GEOM.SI_E_F(4) - V/V, V/E, E/E, V/F and E/F interferences
11688 - GEOM.SI_ALL(5) - all interferences.
11691 TRUE, if the shape contains no self-intersections.
11693 # Example: see GEOM_TestMeasures.py
11694 (IsValid, Pairs) = self.MeasuOp.CheckSelfIntersections(theShape, EnumToLong(theCheckLevel))
11695 RaiseIfFailed("CheckSelfIntersections", self.MeasuOp)
11698 ## Detect self-intersections of the given shape with algorithm based on mesh intersections.
11699 # @param theShape Shape to check.
11700 # @param theDeflection Linear deflection coefficient that specifies quality of tessellation:
11701 # - if \a theDeflection <= 0, default deflection 0.001 is used
11702 # @param theTolerance Specifies a distance between sub-shapes used for detecting gaps:
11703 # - if \a theTolerance <= 0, algorithm detects intersections (default behavior)
11704 # - if \a theTolerance > 0, algorithm detects gaps
11705 # @return TRUE, if the shape contains no self-intersections.
11707 # @ref tui_check_self_intersections_fast_page "Example"
11708 @ManageTransactions("MeasuOp")
11709 def CheckSelfIntersectionsFast(self, theShape, theDeflection = 0.001, theTolerance = 0.0):
11711 Detect self-intersections of the given shape with algorithm based on mesh intersections.
11714 theShape Shape to check.
11715 theDeflection Linear deflection coefficient that specifies quality of tessellation:
11716 - if theDeflection <= 0, default deflection 0.001 is used
11717 theTolerance Specifies a distance between shapes used for detecting gaps:
11718 - if theTolerance <= 0, algorithm detects intersections (default behavior)
11719 - if theTolerance > 0, algorithm detects gaps
11722 TRUE, if the shape contains no self-intersections.
11724 # Example: see GEOM_TestMeasures.py
11725 (IsValid, Pairs) = self.MeasuOp.CheckSelfIntersectionsFast(theShape, theDeflection, theTolerance)
11726 RaiseIfFailed("CheckSelfIntersectionsFast", self.MeasuOp)
11729 ## Check boolean and partition operations arguments.
11730 # @param theShape the argument of an operation to be checked
11731 # @return TRUE if the argument is valid for a boolean or partition
11732 # operation; FALSE otherwise.
11733 @ManageTransactions("MeasuOp")
11734 def CheckBOPArguments(self, theShape):
11736 Check boolean and partition operations arguments.
11739 theShape the argument of an operation to be checked
11742 TRUE if the argument is valid for a boolean or partition
11743 operation; FALSE otherwise.
11745 return self.MeasuOp.CheckBOPArguments(theShape)
11747 ## Detect intersections of the given shapes with algorithm based on mesh intersections.
11748 # @param theShape1 First source object
11749 # @param theShape2 Second source object
11750 # @param theTolerance Specifies a distance between shapes used for detecting gaps:
11751 # - if \a theTolerance <= 0, algorithm detects intersections (default behavior)
11752 # - if \a theTolerance > 0, algorithm detects gaps
11753 # @param theDeflection Linear deflection coefficient that specifies quality of tessellation:
11754 # - if \a theDeflection <= 0, default deflection 0.001 is used
11755 # @return TRUE, if there are intersections (gaps) between source shapes
11756 # @return List of sub-shapes IDs from 1st shape that localize intersection.
11757 # @return List of sub-shapes IDs from 2nd shape that localize intersection.
11759 # @ref tui_fast_intersection_page "Example"
11760 @ManageTransactions("MeasuOp")
11761 def FastIntersect(self, theShape1, theShape2, theTolerance = 0.0, theDeflection = 0.001):
11763 Detect intersections of the given shapes with algorithm based on mesh intersections.
11766 theShape1 First source object
11767 theShape2 Second source object
11768 theTolerance Specifies a distance between shapes used for detecting gaps:
11769 - if theTolerance <= 0, algorithm detects intersections (default behavior)
11770 - if theTolerance > 0, algorithm detects gaps
11771 theDeflection Linear deflection coefficient that specifies quality of tessellation:
11772 - if theDeflection <= 0, default deflection 0.001 is used
11775 TRUE, if there are intersections (gaps) between source shapes
11776 List of sub-shapes IDs from 1st shape that localize intersection.
11777 List of sub-shapes IDs from 2nd shape that localize intersection.
11779 # Example: see GEOM_TestMeasures.py
11780 IsOk, Res1, Res2 = self.MeasuOp.FastIntersect(theShape1, theShape2, theTolerance, theDeflection)
11781 RaiseIfFailed("FastIntersect", self.MeasuOp)
11782 return IsOk, Res1, Res2
11784 ## Get position (LCS) of theShape.
11786 # Origin of the LCS is situated at the shape's center of mass.
11787 # Axes of the LCS are obtained from shape's location or,
11788 # if the shape is a planar face, from position of its plane.
11790 # @param theShape Shape to calculate position of.
11791 # @return [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
11792 # Ox,Oy,Oz: Coordinates of shape's LCS origin.
11793 # Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
11794 # Xx,Xy,Xz: Coordinates of shape's LCS X direction.
11796 # @ref swig_todo "Example"
11797 @ManageTransactions("MeasuOp")
11798 def GetPosition(self,theShape):
11800 Get position (LCS) of theShape.
11801 Origin of the LCS is situated at the shape's center of mass.
11802 Axes of the LCS are obtained from shape's location or,
11803 if the shape is a planar face, from position of its plane.
11806 theShape Shape to calculate position of.
11809 [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
11810 Ox,Oy,Oz: Coordinates of shape's LCS origin.
11811 Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
11812 Xx,Xy,Xz: Coordinates of shape's LCS X direction.
11814 # Example: see GEOM_TestMeasures.py
11815 aTuple = self.MeasuOp.GetPosition(theShape)
11816 RaiseIfFailed("GetPosition", self.MeasuOp)
11819 ## Get kind of theShape.
11821 # @param theShape Shape to get a kind of.
11822 # @return Returns a kind of shape in terms of <VAR>GEOM.GEOM_IKindOfShape.shape_kind</VAR> enumeration
11823 # and a list of parameters, describing the shape.
11824 # @note Concrete meaning of each value, returned via \a theIntegers
11825 # or \a theDoubles list depends on the kind() of the shape.
11827 # @ref swig_todo "Example"
11828 @ManageTransactions("MeasuOp")
11829 def KindOfShape(self,theShape):
11831 Get kind of theShape.
11834 theShape Shape to get a kind of.
11837 a kind of shape in terms of GEOM_IKindOfShape.shape_kind enumeration
11838 and a list of parameters, describing the shape.
11840 Concrete meaning of each value, returned via theIntegers
11841 or theDoubles list depends on the geompy.kind of the shape
11843 # Example: see GEOM_TestMeasures.py
11844 aRoughTuple = self.MeasuOp.KindOfShape(theShape)
11845 RaiseIfFailed("KindOfShape", self.MeasuOp)
11847 aKind = aRoughTuple[0]
11848 anInts = aRoughTuple[1]
11849 aDbls = aRoughTuple[2]
11851 # Now there is no exception from this rule:
11852 aKindTuple = [aKind] + aDbls + anInts
11854 # If they are we will regroup parameters for such kind of shape.
11856 #if aKind == kind.SOME_KIND:
11857 # # SOME_KIND int int double int double double
11858 # aKindTuple = [aKind, anInts[0], anInts[1], aDbls[0], anInts[2], aDbls[1], aDbls[2]]
11859 if aKind == self.kind.CRV_BSPLINE:
11860 aKindTuple = [aKind] + anInts[:6] + aDbls + anInts[6:]
11861 elif aKind == self.kind.CRV_BEZIER:
11862 aKindTuple = [aKind] + anInts[:2] + aDbls + anInts[2:]
11866 ## The function takes a single face with holes and returns a list of faces,
11867 # first of them is the original face without holes, and the other faces are placed
11868 # on the same surface as the original face but bounded by each hole wire.
11869 # If the original face has no holes, it will be returned as an output
11870 # @param theShape Face to perform operation on.
11872 # @return GEOM.ListOfGO, list created faces, where first of them is the original face without holes
11873 @ManageTransactions("MeasuOp")
11874 def PatchFace(self, theShape):
11876 The function takes a single face with holes and returns a list of faces,
11877 first of them is the original face without holes, and the other faces are placed
11878 on the same surface as the original face but bounded by each hole wire.
11879 If the original face has no holes, it will be returned as an output
11882 theShape Face to perform operation on.
11885 GEOM.ListOfGO, list created faces, where first of them is the original face without holes
11888 Circle_1 = geompy.MakeCircle(None, None, 190)
11889 Circle_2 = geompy.MakeCircle(None, None, 100)
11890 Face_1 = geompy.MakeFaceWires([Circle_1], 1)
11891 Face_2 = geompy.MakeFaceWires([Circle_2], 1)
11892 Cut_1 = geompy.MakeCutList(Face_1, [Face_2], True)
11893 faces = geompy.PatchFace(Cut_1)
11895 aList = self.MeasuOp.PatchFace(theShape)
11896 RaiseIfFailed("PatchFace", self.MeasuOp)
11899 ## Returns the string that describes if the shell is good for solid.
11900 # This is a support method for MakeSolid.
11902 # @param theShell the shell to be checked.
11903 # @return Returns a string that describes the shell validity for
11904 # solid construction.
11905 @ManageTransactions("MeasuOp")
11906 def _IsGoodForSolid(self, theShell):
11908 Returns the string that describes if the shell is good for solid.
11909 This is a support method for MakeSolid.
11912 theShell the shell to be checked.
11915 Returns a string that describes the shell validity for
11916 solid construction.
11918 aDescr = self.MeasuOp.IsGoodForSolid(theShell)
11921 ## Obtain a canonical recognition interface.
11922 # @return An instance of
11923 # @ref canonicalrecognition.CanonicalRecognition "CanonicalRecognition" interface
11925 # @ref tui_3dsketcher_page "Example"
11926 def CanonicalRecognition (self):
11928 Obtain a canonical recognition interface.
11931 cr = geompy.CanonicalRecognition()
11932 cr.isLine(aLine, tolerance)
11934 cr = CanonicalRecognition (self)
11937 # end of l2_measure
11940 ## @addtogroup l2_import_export
11943 ## Import a shape from the BREP, IGES, STEP or other file
11944 # (depends on given format) with given name.
11946 # Note: this function is deprecated, it is kept for backward compatibility only
11947 # Use Import<FormatName> instead, where <FormatName> is a name of desirable format to import.
11949 # @param theFileName The file, containing the shape.
11950 # @param theFormatName Specify format for the file reading.
11951 # Available formats can be obtained with InsertOp.ImportTranslators() method.
11952 # If format 'IGES_SCALE' is used instead of 'IGES' or
11953 # format 'STEP_SCALE' is used instead of 'STEP',
11954 # length unit will be set to 'meter' and result model will be scaled.
11955 # @param theName Object name; when specified, this parameter is used
11956 # for result publication in the study. Otherwise, if automatic
11957 # publication is switched on, default value is used for result name.
11959 # @return New GEOM.GEOM_Object, containing the imported shape.
11960 # If material names are imported it returns the list of
11961 # objects. The first one is the imported object followed by
11963 # @note Auto publishing is allowed for the shape itself. Imported
11964 # material groups are not automatically published.
11966 # @ref swig_Import_Export "Example"
11967 @ManageTransactions("InsertOp")
11968 def ImportFile(self, theFileName, theFormatName, theName=None):
11970 Import a shape from the BREP, IGES, STEP or other file
11971 (depends on given format) with given name.
11973 Note: this function is deprecated, it is kept for backward compatibility only
11974 Use Import<FormatName> instead, where <FormatName> is a name of desirable format to import.
11977 theFileName The file, containing the shape.
11978 theFormatName Specify format for the file reading.
11979 Available formats can be obtained with geompy.InsertOp.ImportTranslators() method.
11980 If format 'IGES_SCALE' is used instead of 'IGES' or
11981 format 'STEP_SCALE' is used instead of 'STEP',
11982 length unit will be set to 'meter' and result model will be scaled.
11983 theName Object name; when specified, this parameter is used
11984 for result publication in the study. Otherwise, if automatic
11985 publication is switched on, default value is used for result name.
11988 New GEOM.GEOM_Object, containing the imported shape.
11989 If material names are imported it returns the list of
11990 objects. The first one is the imported object followed by
11993 Auto publishing is allowed for the shape itself. Imported
11994 material groups are not automatically published.
11996 # Example: see GEOM_TestOthers.py
11998 WARNING: Function ImportFile is deprecated, use Import<FormatName> instead,
11999 where <FormatName> is a name of desirable format for importing.
12001 aListObj = self.InsertOp.ImportFile(theFileName, theFormatName)
12002 RaiseIfFailed("ImportFile", self.InsertOp)
12003 aNbObj = len(aListObj)
12005 self._autoPublish(aListObj[0], theName, "imported")
12010 ## Deprecated analog of ImportFile()
12011 def Import(self, theFileName, theFormatName, theName=None):
12013 Deprecated analog of geompy.ImportFile, kept for backward compatibility only.
12015 # note: auto-publishing is done in self.ImportFile()
12016 return self.ImportFile(theFileName, theFormatName, theName)
12018 ## Read a shape from the binary stream, containing its bounding representation (BRep).
12020 # @note As the byte-stream representing the shape data can be quite large, this method
12021 # is not automatically dumped to the Python script with the DumpStudy functionality;
12022 # so please use this method carefully, only for strong reasons.
12024 # @note GEOM.GEOM_Object.GetShapeStream() method can be used to obtain the shape's
12027 # @param theStream The BRep binary stream.
12028 # @param theName Object name; when specified, this parameter is used
12029 # for result publication in the study. Otherwise, if automatic
12030 # publication is switched on, default value is used for result name.
12032 # @return New GEOM_Object, containing the shape, read from theStream.
12034 # @ref swig_Import_Export "Example"
12035 @ManageTransactions("InsertOp")
12036 def RestoreShape (self, theStream, theName=None):
12038 Read a shape from the binary stream, containing its bounding representation (BRep).
12041 shape.GetShapeStream() method can be used to obtain the shape's BRep stream.
12044 theStream The BRep binary stream.
12045 theName Object name; when specified, this parameter is used
12046 for result publication in the study. Otherwise, if automatic
12047 publication is switched on, default value is used for result name.
12050 New GEOM_Object, containing the shape, read from theStream.
12052 # Example: see GEOM_TestOthers.py
12054 # this is the workaround to ignore invalid case when data stream is empty
12055 if int(os.getenv("GEOM_IGNORE_RESTORE_SHAPE", "0")) > 0:
12056 print("WARNING: Result of RestoreShape is a NULL shape!")
12058 anObj = self.InsertOp.RestoreShape(theStream)
12059 RaiseIfFailed("RestoreShape", self.InsertOp)
12060 self._autoPublish(anObj, theName, "restored")
12063 ## Export the given shape into a file with given name.
12065 # Note: this function is deprecated, it is kept for backward compatibility only
12066 # Use Export<FormatName> instead, where <FormatName> is a name of desirable format to export.
12068 # @param theObject Shape to be stored in the file.
12069 # @param theFileName Name of the file to store the given shape in.
12070 # @param theFormatName Specify format for the shape storage.
12071 # Available formats can be obtained with
12072 # geompy.InsertOp.ExportTranslators()[0] method.
12074 # @ref swig_Import_Export "Example"
12075 @ManageTransactions("InsertOp")
12076 def Export(self, theObject, theFileName, theFormatName):
12078 Export the given shape into a file with given name.
12080 Note: this function is deprecated, it is kept for backward compatibility only
12081 Use Export<FormatName> instead, where <FormatName> is a name of desirable format to export.
12084 theObject Shape to be stored in the file.
12085 theFileName Name of the file to store the given shape in.
12086 theFormatName Specify format for the shape storage.
12087 Available formats can be obtained with
12088 geompy.InsertOp.ExportTranslators()[0] method.
12090 # Example: see GEOM_TestOthers.py
12092 WARNING: Function Export is deprecated, use Export<FormatName> instead,
12093 where <FormatName> is a name of desirable format for exporting.
12095 self.InsertOp.Export(theObject, theFileName, theFormatName)
12096 if self.InsertOp.IsDone() == 0:
12097 raise RuntimeError("Export : " + self.InsertOp.GetErrorCode())
12101 # end of l2_import_export
12104 ## @addtogroup l3_blocks
12107 ## Create a quadrangle face from four edges. Order of Edges is not
12108 # important. It is not necessary that edges share the same vertex.
12109 # @param E1,E2,E3,E4 Edges for the face bound.
12110 # @param theName Object name; when specified, this parameter is used
12111 # for result publication in the study. Otherwise, if automatic
12112 # publication is switched on, default value is used for result name.
12114 # @return New GEOM.GEOM_Object, containing the created face.
12116 # @ref tui_building_by_blocks_page "Example"
12117 @ManageTransactions("BlocksOp")
12118 def MakeQuad(self, E1, E2, E3, E4, theName=None):
12120 Create a quadrangle face from four edges. Order of Edges is not
12121 important. It is not necessary that edges share the same vertex.
12124 E1,E2,E3,E4 Edges for the face bound.
12125 theName Object name; when specified, this parameter is used
12126 for result publication in the study. Otherwise, if automatic
12127 publication is switched on, default value is used for result name.
12130 New GEOM.GEOM_Object, containing the created face.
12133 qface1 = geompy.MakeQuad(edge1, edge2, edge3, edge4)
12135 # Example: see GEOM_Spanner.py
12136 anObj = self.BlocksOp.MakeQuad(E1, E2, E3, E4)
12137 RaiseIfFailed("MakeQuad", self.BlocksOp)
12138 self._autoPublish(anObj, theName, "quad")
12141 ## Create a quadrangle face on two edges.
12142 # The missing edges will be built by creating the shortest ones.
12143 # @param E1,E2 Two opposite edges for the face.
12144 # @param theName Object name; when specified, this parameter is used
12145 # for result publication in the study. Otherwise, if automatic
12146 # publication is switched on, default value is used for result name.
12148 # @return New GEOM.GEOM_Object, containing the created face.
12150 # @ref tui_building_by_blocks_page "Example"
12151 @ManageTransactions("BlocksOp")
12152 def MakeQuad2Edges(self, E1, E2, theName=None):
12154 Create a quadrangle face on two edges.
12155 The missing edges will be built by creating the shortest ones.
12158 E1,E2 Two opposite edges for the face.
12159 theName Object name; when specified, this parameter is used
12160 for result publication in the study. Otherwise, if automatic
12161 publication is switched on, default value is used for result name.
12164 New GEOM.GEOM_Object, containing the created face.
12168 p1 = geompy.MakeVertex( 0., 0., 0.)
12169 p2 = geompy.MakeVertex(150., 30., 0.)
12170 p3 = geompy.MakeVertex( 0., 120., 50.)
12171 p4 = geompy.MakeVertex( 0., 40., 70.)
12173 edge1 = geompy.MakeEdge(p1, p2)
12174 edge2 = geompy.MakeEdge(p3, p4)
12175 # create a quadrangle face from two edges
12176 qface2 = geompy.MakeQuad2Edges(edge1, edge2)
12178 # Example: see GEOM_Spanner.py
12179 anObj = self.BlocksOp.MakeQuad2Edges(E1, E2)
12180 RaiseIfFailed("MakeQuad2Edges", self.BlocksOp)
12181 self._autoPublish(anObj, theName, "quad")
12184 ## Create a quadrangle face with specified corners.
12185 # The missing edges will be built by creating the shortest ones.
12186 # @param V1,V2,V3,V4 Corner vertices for the face.
12187 # @param theName Object name; when specified, this parameter is used
12188 # for result publication in the study. Otherwise, if automatic
12189 # publication is switched on, default value is used for result name.
12191 # @return New GEOM.GEOM_Object, containing the created face.
12193 # @ref tui_building_by_blocks_page "Example 1"
12194 # \n @ref swig_MakeQuad4Vertices "Example 2"
12195 @ManageTransactions("BlocksOp")
12196 def MakeQuad4Vertices(self, V1, V2, V3, V4, theName=None):
12198 Create a quadrangle face with specified corners.
12199 The missing edges will be built by creating the shortest ones.
12202 V1,V2,V3,V4 Corner vertices for the face.
12203 theName Object name; when specified, this parameter is used
12204 for result publication in the study. Otherwise, if automatic
12205 publication is switched on, default value is used for result name.
12208 New GEOM.GEOM_Object, containing the created face.
12212 p1 = geompy.MakeVertex( 0., 0., 0.)
12213 p2 = geompy.MakeVertex(150., 30., 0.)
12214 p3 = geompy.MakeVertex( 0., 120., 50.)
12215 p4 = geompy.MakeVertex( 0., 40., 70.)
12216 # create a quadrangle from four points in its corners
12217 qface3 = geompy.MakeQuad4Vertices(p1, p2, p3, p4)
12219 # Example: see GEOM_Spanner.py
12220 anObj = self.BlocksOp.MakeQuad4Vertices(V1, V2, V3, V4)
12221 RaiseIfFailed("MakeQuad4Vertices", self.BlocksOp)
12222 self._autoPublish(anObj, theName, "quad")
12225 ## Create a hexahedral solid, bounded by the six given faces. Order of
12226 # faces is not important. It is not necessary that Faces share the same edge.
12227 # @param F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
12228 # @param theName Object name; when specified, this parameter is used
12229 # for result publication in the study. Otherwise, if automatic
12230 # publication is switched on, default value is used for result name.
12232 # @return New GEOM.GEOM_Object, containing the created solid.
12234 # @ref tui_building_by_blocks_page "Example 1"
12235 # \n @ref swig_MakeHexa "Example 2"
12236 @ManageTransactions("BlocksOp")
12237 def MakeHexa(self, F1, F2, F3, F4, F5, F6, theName=None):
12239 Create a hexahedral solid, bounded by the six given faces. Order of
12240 faces is not important. It is not necessary that Faces share the same edge.
12243 F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
12244 theName Object name; when specified, this parameter is used
12245 for result publication in the study. Otherwise, if automatic
12246 publication is switched on, default value is used for result name.
12249 New GEOM.GEOM_Object, containing the created solid.
12252 solid = geompy.MakeHexa(qface1, qface2, qface3, qface4, qface5, qface6)
12254 # Example: see GEOM_Spanner.py
12255 anObj = self.BlocksOp.MakeHexa(F1, F2, F3, F4, F5, F6)
12256 RaiseIfFailed("MakeHexa", self.BlocksOp)
12257 self._autoPublish(anObj, theName, "hexa")
12260 ## Create a hexahedral solid between two given faces.
12261 # The missing faces will be built by creating the smallest ones.
12262 # @param F1,F2 Two opposite faces for the hexahedral solid.
12263 # @param theName Object name; when specified, this parameter is used
12264 # for result publication in the study. Otherwise, if automatic
12265 # publication is switched on, default value is used for result name.
12267 # @return New GEOM.GEOM_Object, containing the created solid.
12269 # @ref tui_building_by_blocks_page "Example 1"
12270 # \n @ref swig_MakeHexa2Faces "Example 2"
12271 @ManageTransactions("BlocksOp")
12272 def MakeHexa2Faces(self, F1, F2, theName=None):
12274 Create a hexahedral solid between two given faces.
12275 The missing faces will be built by creating the smallest ones.
12278 F1,F2 Two opposite faces for the hexahedral solid.
12279 theName Object name; when specified, this parameter is used
12280 for result publication in the study. Otherwise, if automatic
12281 publication is switched on, default value is used for result name.
12284 New GEOM.GEOM_Object, containing the created solid.
12287 solid1 = geompy.MakeHexa2Faces(qface1, qface2)
12289 # Example: see GEOM_Spanner.py
12290 anObj = self.BlocksOp.MakeHexa2Faces(F1, F2)
12291 RaiseIfFailed("MakeHexa2Faces", self.BlocksOp)
12292 self._autoPublish(anObj, theName, "hexa")
12298 ## @addtogroup l3_blocks_op
12301 ## Get a vertex, found in the given shape by its coordinates.
12302 # @param theShape Block or a compound of blocks.
12303 # @param theX,theY,theZ Coordinates of the sought vertex.
12304 # @param theEpsilon Maximum allowed distance between the resulting
12305 # vertex and point with the given coordinates.
12306 # @param theName Object name; when specified, this parameter is used
12307 # for result publication in the study. Otherwise, if automatic
12308 # publication is switched on, default value is used for result name.
12310 # @return New GEOM.GEOM_Object, containing the found vertex.
12312 # @ref swig_GetPoint "Example"
12313 @ManageTransactions("BlocksOp")
12314 def GetPoint(self, theShape, theX, theY, theZ, theEpsilon, theName=None):
12316 Get a vertex, found in the given shape by its coordinates.
12319 theShape Block or a compound of blocks.
12320 theX,theY,theZ Coordinates of the sought vertex.
12321 theEpsilon Maximum allowed distance between the resulting
12322 vertex and point with the given coordinates.
12323 theName Object name; when specified, this parameter is used
12324 for result publication in the study. Otherwise, if automatic
12325 publication is switched on, default value is used for result name.
12328 New GEOM.GEOM_Object, containing the found vertex.
12331 pnt = geompy.GetPoint(shape, -50, 50, 50, 0.01)
12333 # Example: see GEOM_TestOthers.py
12334 anObj = self.BlocksOp.GetPoint(theShape, theX, theY, theZ, theEpsilon)
12335 RaiseIfFailed("GetPoint", self.BlocksOp)
12336 self._autoPublish(anObj, theName, "vertex")
12339 ## Find a vertex of the given shape, which has minimal distance to the given point.
12340 # @param theShape Any shape.
12341 # @param thePoint Point, close to the desired vertex.
12342 # @param theName Object name; when specified, this parameter is used
12343 # for result publication in the study. Otherwise, if automatic
12344 # publication is switched on, default value is used for result name.
12346 # @return New GEOM.GEOM_Object, containing the found vertex.
12348 # @ref swig_GetVertexNearPoint "Example"
12349 @ManageTransactions("BlocksOp")
12350 def GetVertexNearPoint(self, theShape, thePoint, theName=None):
12352 Find a vertex of the given shape, which has minimal distance to the given point.
12355 theShape Any shape.
12356 thePoint Point, close to the desired vertex.
12357 theName Object name; when specified, this parameter is used
12358 for result publication in the study. Otherwise, if automatic
12359 publication is switched on, default value is used for result name.
12362 New GEOM.GEOM_Object, containing the found vertex.
12365 pmidle = geompy.MakeVertex(50, 0, 50)
12366 edge1 = geompy.GetEdgeNearPoint(blocksComp, pmidle)
12368 # Example: see GEOM_TestOthers.py
12369 anObj = self.BlocksOp.GetVertexNearPoint(theShape, thePoint)
12370 RaiseIfFailed("GetVertexNearPoint", self.BlocksOp)
12371 self._autoPublish(anObj, theName, "vertex")
12374 ## Get an edge, found in the given shape by two given vertices.
12375 # @param theShape Block or a compound of blocks.
12376 # @param thePoint1,thePoint2 Points, close to the ends of the desired edge.
12377 # @param theName Object name; when specified, this parameter is used
12378 # for result publication in the study. Otherwise, if automatic
12379 # publication is switched on, default value is used for result name.
12381 # @return New GEOM.GEOM_Object, containing the found edge.
12383 # @ref swig_GetEdge "Example"
12384 @ManageTransactions("BlocksOp")
12385 def GetEdge(self, theShape, thePoint1, thePoint2, theName=None):
12387 Get an edge, found in the given shape by two given vertices.
12390 theShape Block or a compound of blocks.
12391 thePoint1,thePoint2 Points, close to the ends of the desired edge.
12392 theName Object name; when specified, this parameter is used
12393 for result publication in the study. Otherwise, if automatic
12394 publication is switched on, default value is used for result name.
12397 New GEOM.GEOM_Object, containing the found edge.
12399 # Example: see GEOM_Spanner.py
12400 anObj = self.BlocksOp.GetEdge(theShape, thePoint1, thePoint2)
12401 RaiseIfFailed("GetEdge", self.BlocksOp)
12402 self._autoPublish(anObj, theName, "edge")
12405 ## Find an edge of the given shape, which has minimal distance to the given point.
12406 # @param theShape Block or a compound of blocks.
12407 # @param thePoint Point, close to the desired edge.
12408 # @param theName Object name; when specified, this parameter is used
12409 # for result publication in the study. Otherwise, if automatic
12410 # publication is switched on, default value is used for result name.
12412 # @return New GEOM.GEOM_Object, containing the found edge.
12414 # @ref swig_GetEdgeNearPoint "Example"
12415 @ManageTransactions("BlocksOp")
12416 def GetEdgeNearPoint(self, theShape, thePoint, theName=None):
12418 Find an edge of the given shape, which has minimal distance to the given point.
12421 theShape Block or a compound of blocks.
12422 thePoint Point, close to the desired edge.
12423 theName Object name; when specified, this parameter is used
12424 for result publication in the study. Otherwise, if automatic
12425 publication is switched on, default value is used for result name.
12428 New GEOM.GEOM_Object, containing the found edge.
12430 # Example: see GEOM_TestOthers.py
12431 anObj = self.BlocksOp.GetEdgeNearPoint(theShape, thePoint)
12432 RaiseIfFailed("GetEdgeNearPoint", self.BlocksOp)
12433 self._autoPublish(anObj, theName, "edge")
12436 ## Returns a face, found in the given shape by four given corner vertices.
12437 # @param theShape Block or a compound of blocks.
12438 # @param thePoint1,thePoint2,thePoint3,thePoint4 Points, close to the corners of the desired face.
12439 # @param theName Object name; when specified, this parameter is used
12440 # for result publication in the study. Otherwise, if automatic
12441 # publication is switched on, default value is used for result name.
12443 # @return New GEOM.GEOM_Object, containing the found face.
12445 # @ref swig_todo "Example"
12446 @ManageTransactions("BlocksOp")
12447 def GetFaceByPoints(self, theShape, thePoint1, thePoint2, thePoint3, thePoint4, theName=None):
12449 Returns a face, found in the given shape by four given corner vertices.
12452 theShape Block or a compound of blocks.
12453 thePoint1,thePoint2,thePoint3,thePoint4 Points, close to the corners of the desired face.
12454 theName Object name; when specified, this parameter is used
12455 for result publication in the study. Otherwise, if automatic
12456 publication is switched on, default value is used for result name.
12459 New GEOM.GEOM_Object, containing the found face.
12461 # Example: see GEOM_Spanner.py
12462 anObj = self.BlocksOp.GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4)
12463 RaiseIfFailed("GetFaceByPoints", self.BlocksOp)
12464 self._autoPublish(anObj, theName, "face")
12467 ## Get a face of block, found in the given shape by two given edges.
12468 # @param theShape Block or a compound of blocks.
12469 # @param theEdge1,theEdge2 Edges, close to the edges of the desired face.
12470 # @param theName Object name; when specified, this parameter is used
12471 # for result publication in the study. Otherwise, if automatic
12472 # publication is switched on, default value is used for result name.
12474 # @return New GEOM.GEOM_Object, containing the found face.
12476 # @ref swig_todo "Example"
12477 @ManageTransactions("BlocksOp")
12478 def GetFaceByEdges(self, theShape, theEdge1, theEdge2, theName=None):
12480 Get a face of block, found in the given shape by two given edges.
12483 theShape Block or a compound of blocks.
12484 theEdge1,theEdge2 Edges, close to the edges of the desired face.
12485 theName Object name; when specified, this parameter is used
12486 for result publication in the study. Otherwise, if automatic
12487 publication is switched on, default value is used for result name.
12490 New GEOM.GEOM_Object, containing the found face.
12492 # Example: see GEOM_Spanner.py
12493 anObj = self.BlocksOp.GetFaceByEdges(theShape, theEdge1, theEdge2)
12494 RaiseIfFailed("GetFaceByEdges", self.BlocksOp)
12495 self._autoPublish(anObj, theName, "face")
12498 ## Find a face, opposite to the given one in the given block.
12499 # @param theBlock Must be a hexahedral solid.
12500 # @param theFace Face of \a theBlock, opposite to the desired face.
12501 # @param theName Object name; when specified, this parameter is used
12502 # for result publication in the study. Otherwise, if automatic
12503 # publication is switched on, default value is used for result name.
12505 # @return New GEOM.GEOM_Object, containing the found face.
12507 # @ref swig_GetOppositeFace "Example"
12508 @ManageTransactions("BlocksOp")
12509 def GetOppositeFace(self, theBlock, theFace, theName=None):
12511 Find a face, opposite to the given one in the given block.
12514 theBlock Must be a hexahedral solid.
12515 theFace Face of theBlock, opposite to the desired face.
12516 theName Object name; when specified, this parameter is used
12517 for result publication in the study. Otherwise, if automatic
12518 publication is switched on, default value is used for result name.
12521 New GEOM.GEOM_Object, containing the found face.
12523 # Example: see GEOM_Spanner.py
12524 anObj = self.BlocksOp.GetOppositeFace(theBlock, theFace)
12525 RaiseIfFailed("GetOppositeFace", self.BlocksOp)
12526 self._autoPublish(anObj, theName, "face")
12529 ## Find a face of the given shape, which has minimal distance to the given point.
12530 # @param theShape Block or a compound of blocks.
12531 # @param thePoint Point, close to the desired face.
12532 # @param theName Object name; when specified, this parameter is used
12533 # for result publication in the study. Otherwise, if automatic
12534 # publication is switched on, default value is used for result name.
12536 # @return New GEOM.GEOM_Object, containing the found face.
12538 # @ref swig_GetFaceNearPoint "Example"
12539 @ManageTransactions("BlocksOp")
12540 def GetFaceNearPoint(self, theShape, thePoint, theName=None):
12542 Find a face of the given shape, which has minimal distance to the given point.
12545 theShape Block or a compound of blocks.
12546 thePoint Point, close to the desired face.
12547 theName Object name; when specified, this parameter is used
12548 for result publication in the study. Otherwise, if automatic
12549 publication is switched on, default value is used for result name.
12552 New GEOM.GEOM_Object, containing the found face.
12554 # Example: see GEOM_Spanner.py
12555 anObj = self.BlocksOp.GetFaceNearPoint(theShape, thePoint)
12556 RaiseIfFailed("GetFaceNearPoint", self.BlocksOp)
12557 self._autoPublish(anObj, theName, "face")
12560 ## Find a face of block, whose outside normale has minimal angle with the given vector.
12561 # @param theBlock Block or a compound of blocks.
12562 # @param theVector Vector, close to the normale of the desired face.
12563 # @param theName Object name; when specified, this parameter is used
12564 # for result publication in the study. Otherwise, if automatic
12565 # publication is switched on, default value is used for result name.
12567 # @return New GEOM.GEOM_Object, containing the found face.
12569 # @ref swig_todo "Example"
12570 @ManageTransactions("BlocksOp")
12571 def GetFaceByNormale(self, theBlock, theVector, theName=None):
12573 Find a face of block, whose outside normale has minimal angle with the given vector.
12576 theBlock Block or a compound of blocks.
12577 theVector Vector, close to the normale of the desired face.
12578 theName Object name; when specified, this parameter is used
12579 for result publication in the study. Otherwise, if automatic
12580 publication is switched on, default value is used for result name.
12583 New GEOM.GEOM_Object, containing the found face.
12585 # Example: see GEOM_Spanner.py
12586 anObj = self.BlocksOp.GetFaceByNormale(theBlock, theVector)
12587 RaiseIfFailed("GetFaceByNormale", self.BlocksOp)
12588 self._autoPublish(anObj, theName, "face")
12591 ## Find all sub-shapes of type \a theShapeType of the given shape,
12592 # which have minimal distance to the given point.
12593 # @param theShape Any shape.
12594 # @param thePoint Point, close to the desired shape.
12595 # @param theShapeType Defines what kind of sub-shapes is searched GEOM::shape_type
12596 # @param theTolerance The tolerance for distances comparison. All shapes
12597 # with distances to the given point in interval
12598 # [minimal_distance, minimal_distance + theTolerance] will be gathered.
12599 # @param theName Object name; when specified, this parameter is used
12600 # for result publication in the study. Otherwise, if automatic
12601 # publication is switched on, default value is used for result name.
12603 # @return New GEOM_Object, containing a group of all found shapes.
12605 # @ref swig_GetShapesNearPoint "Example"
12606 @ManageTransactions("BlocksOp")
12607 def GetShapesNearPoint(self, theShape, thePoint, theShapeType, theTolerance = 1e-07, theName=None):
12609 Find all sub-shapes of type theShapeType of the given shape,
12610 which have minimal distance to the given point.
12613 theShape Any shape.
12614 thePoint Point, close to the desired shape.
12615 theShapeType Defines what kind of sub-shapes is searched (see GEOM::shape_type)
12616 theTolerance The tolerance for distances comparison. All shapes
12617 with distances to the given point in interval
12618 [minimal_distance, minimal_distance + theTolerance] will be gathered.
12619 theName Object name; when specified, this parameter is used
12620 for result publication in the study. Otherwise, if automatic
12621 publication is switched on, default value is used for result name.
12624 New GEOM_Object, containing a group of all found shapes.
12626 # Example: see GEOM_TestOthers.py
12627 anObj = self.BlocksOp.GetShapesNearPoint(theShape, thePoint, theShapeType, theTolerance)
12628 RaiseIfFailed("GetShapesNearPoint", self.BlocksOp)
12629 self._autoPublish(anObj, theName, "group")
12632 # end of l3_blocks_op
12635 ## @addtogroup l4_blocks_measure
12638 ## Check, if the compound of blocks is given.
12639 # To be considered as a compound of blocks, the
12640 # given shape must satisfy the following conditions:
12641 # - Each element of the compound should be a Block (6 faces).
12642 # - Each face should be a quadrangle, i.e. it should have only 1 wire
12643 # with 4 edges. If <VAR>theIsUseC1</VAR> is set to True and
12644 # there are more than 4 edges in the only wire of a face,
12645 # this face is considered to be quadrangle if it has 4 bounds
12646 # (1 or more edge) of C1 continuity.
12647 # - A connection between two Blocks should be an entire quadrangle face or an entire edge.
12648 # - The compound should be connexe.
12649 # - The glue between two quadrangle faces should be applied.
12650 # @param theCompound The compound to check.
12651 # @param theIsUseC1 Flag to check if there are 4 bounds on a face
12652 # taking into account C1 continuity.
12653 # @param theAngTolerance the angular tolerance to check if two neighbor
12654 # edges are codirectional in the common vertex with this
12655 # tolerance. This parameter is used only if
12656 # <VAR>theIsUseC1</VAR> is set to True.
12657 # @return TRUE, if the given shape is a compound of blocks.
12658 # If theCompound is not valid, prints all discovered errors.
12660 # @ref tui_check_compound_of_blocks_page "Example 1"
12661 # \n @ref swig_CheckCompoundOfBlocks "Example 2"
12662 @ManageTransactions("BlocksOp")
12663 def CheckCompoundOfBlocks(self,theCompound, theIsUseC1 = False,
12664 theAngTolerance = 1.e-12):
12666 Check, if the compound of blocks is given.
12667 To be considered as a compound of blocks, the
12668 given shape must satisfy the following conditions:
12669 - Each element of the compound should be a Block (6 faces).
12670 - Each face should be a quadrangle, i.e. it should have only 1 wire
12671 with 4 edges. If theIsUseC1 is set to True and
12672 there are more than 4 edges in the only wire of a face,
12673 this face is considered to be quadrangle if it has 4 bounds
12674 (1 or more edge) of C1 continuity.
12675 - A connection between two Blocks should be an entire quadrangle face or an entire edge.
12676 - The compound should be connexe.
12677 - The glue between two quadrangle faces should be applied.
12680 theCompound The compound to check.
12681 theIsUseC1 Flag to check if there are 4 bounds on a face
12682 taking into account C1 continuity.
12683 theAngTolerance the angular tolerance to check if two neighbor
12684 edges are codirectional in the common vertex with this
12685 tolerance. This parameter is used only if
12686 theIsUseC1 is set to True.
12689 TRUE, if the given shape is a compound of blocks.
12690 If theCompound is not valid, prints all discovered errors.
12692 # Example: see GEOM_Spanner.py
12695 aTolerance = theAngTolerance
12696 (IsValid, BCErrors) = self.BlocksOp.CheckCompoundOfBlocks(theCompound, aTolerance)
12697 RaiseIfFailed("CheckCompoundOfBlocks", self.BlocksOp)
12699 Descr = self.BlocksOp.PrintBCErrors(theCompound, BCErrors)
12703 ## Retrieve all non blocks solids and faces from \a theShape.
12704 # @param theShape The shape to explore.
12705 # @param theIsUseC1 Flag to check if there are 4 bounds on a face
12706 # taking into account C1 continuity.
12707 # @param theAngTolerance the angular tolerance to check if two neighbor
12708 # edges are codirectional in the common vertex with this
12709 # tolerance. This parameter is used only if
12710 # <VAR>theIsUseC1</VAR> is set to True.
12711 # @param theName Object name; when specified, this parameter is used
12712 # for result publication in the study. Otherwise, if automatic
12713 # publication is switched on, default value is used for result name.
12715 # @return A tuple of two GEOM_Objects. The first object is a group of all
12716 # non block solids (= not 6 faces, or with 6 faces, but with the
12717 # presence of non-quadrangular faces). The second object is a
12718 # group of all non quadrangular faces (= faces with more then
12719 # 1 wire or, if <VAR>theIsUseC1</VAR> is set to True, faces
12720 # with 1 wire with not 4 edges that do not form 4 bounds of
12723 # @ref tui_get_non_blocks_page "Example 1"
12724 # \n @ref swig_GetNonBlocks "Example 2"
12725 @ManageTransactions("BlocksOp")
12726 def GetNonBlocks (self, theShape, theIsUseC1 = False,
12727 theAngTolerance = 1.e-12, theName=None):
12729 Retrieve all non blocks solids and faces from theShape.
12732 theShape The shape to explore.
12733 theIsUseC1 Flag to check if there are 4 bounds on a face
12734 taking into account C1 continuity.
12735 theAngTolerance the angular tolerance to check if two neighbor
12736 edges are codirectional in the common vertex with this
12737 tolerance. This parameter is used only if
12738 theIsUseC1 is set to True.
12739 theName Object name; when specified, this parameter is used
12740 for result publication in the study. Otherwise, if automatic
12741 publication is switched on, default value is used for result name.
12744 A tuple of two GEOM_Objects. The first object is a group of all
12745 non block solids (= not 6 faces, or with 6 faces, but with the
12746 presence of non-quadrangular faces). The second object is a
12747 group of all non quadrangular faces (= faces with more then
12748 1 wire or, if <VAR>theIsUseC1</VAR> is set to True, faces
12749 with 1 wire with not 4 edges that do not form 4 bounds of
12753 (res_sols, res_faces) = geompy.GetNonBlocks(myShape1)
12755 # Example: see GEOM_Spanner.py
12758 aTolerance = theAngTolerance
12759 aTuple = self.BlocksOp.GetNonBlocks(theShape, aTolerance)
12760 RaiseIfFailed("GetNonBlocks", self.BlocksOp)
12761 self._autoPublish(aTuple, theName, ("groupNonHexas", "groupNonQuads"))
12764 ## Remove all seam and degenerated edges from \a theShape.
12765 # Unite faces and edges, sharing one surface. It means that
12766 # this faces must have references to one C++ surface object (handle).
12767 # @param theShape The compound or single solid to remove irregular edges from.
12768 # @param doUnionFaces If True, then unite faces. If False (the default value),
12769 # do not unite faces.
12770 # @param theName Object name; when specified, this parameter is used
12771 # for result publication in the study. Otherwise, if automatic
12772 # publication is switched on, default value is used for result name.
12774 # @return Improved shape.
12776 # @ref swig_RemoveExtraEdges "Example"
12777 @ManageTransactions("BlocksOp")
12778 def RemoveExtraEdges(self, theShape, doUnionFaces=False, theName=None):
12780 Remove all seam and degenerated edges from theShape.
12781 Unite faces and edges, sharing one surface. It means that
12782 this faces must have references to one C++ surface object (handle).
12785 theShape The compound or single solid to remove irregular edges from.
12786 doUnionFaces If True, then unite faces. If False (the default value),
12787 do not unite faces.
12788 theName Object name; when specified, this parameter is used
12789 for result publication in the study. Otherwise, if automatic
12790 publication is switched on, default value is used for result name.
12795 # Example: see GEOM_TestOthers.py
12796 nbFacesOptimum = -1 # -1 means do not unite faces
12797 if doUnionFaces is True: nbFacesOptimum = 0 # 0 means unite faces
12798 anObj = self.BlocksOp.RemoveExtraEdges(theShape, nbFacesOptimum)
12799 RaiseIfFailed("RemoveExtraEdges", self.BlocksOp)
12800 self._autoPublish(anObj, theName, "removeExtraEdges")
12803 ## Performs union faces of \a theShape
12804 # Unite faces sharing one surface. It means that
12805 # these faces must have references to one C++ surface object (handle).
12806 # @param theShape The compound or single solid that contains faces
12807 # to perform union.
12808 # @param theName Object name; when specified, this parameter is used
12809 # for result publication in the study. Otherwise, if automatic
12810 # publication is switched on, default value is used for result name.
12812 # @return Improved shape.
12814 # @ref swig_UnionFaces "Example"
12815 @ManageTransactions("BlocksOp")
12816 def UnionFaces(self, theShape, theName=None):
12818 Performs union faces of theShape.
12819 Unite faces sharing one surface. It means that
12820 these faces must have references to one C++ surface object (handle).
12823 theShape The compound or single solid that contains faces
12825 theName Object name; when specified, this parameter is used
12826 for result publication in the study. Otherwise, if automatic
12827 publication is switched on, default value is used for result name.
12832 # Example: see GEOM_TestOthers.py
12833 anObj = self.BlocksOp.UnionFaces(theShape)
12834 RaiseIfFailed("UnionFaces", self.BlocksOp)
12835 self._autoPublish(anObj, theName, "unionFaces")
12838 ## Check, if the given shape is a blocks compound.
12839 # Fix all detected errors.
12840 # \note Single block can be also fixed by this method.
12841 # @param theShape The compound to check and improve.
12842 # @param theName Object name; when specified, this parameter is used
12843 # for result publication in the study. Otherwise, if automatic
12844 # publication is switched on, default value is used for result name.
12846 # @return Improved compound.
12848 # @ref swig_CheckAndImprove "Example"
12849 @ManageTransactions("BlocksOp")
12850 def CheckAndImprove(self, theShape, theName=None):
12852 Check, if the given shape is a blocks compound.
12853 Fix all detected errors.
12856 Single block can be also fixed by this method.
12859 theShape The compound to check and improve.
12860 theName Object name; when specified, this parameter is used
12861 for result publication in the study. Otherwise, if automatic
12862 publication is switched on, default value is used for result name.
12867 # Example: see GEOM_TestOthers.py
12868 anObj = self.BlocksOp.CheckAndImprove(theShape)
12869 RaiseIfFailed("CheckAndImprove", self.BlocksOp)
12870 self._autoPublish(anObj, theName, "improved")
12873 # end of l4_blocks_measure
12876 ## @addtogroup l3_blocks_op
12879 ## Get all the blocks, contained in the given compound.
12880 # @param theCompound The compound to explode.
12881 # @param theMinNbFaces If solid has lower number of faces, it is not a block.
12882 # @param theMaxNbFaces If solid has higher number of faces, it is not a block.
12883 # @param 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.
12887 # @note If theMaxNbFaces = 0, the maximum number of faces is not restricted.
12889 # @return List of GEOM.GEOM_Object, containing the retrieved blocks.
12891 # @ref tui_explode_on_blocks "Example 1"
12892 # \n @ref swig_MakeBlockExplode "Example 2"
12893 @ManageTransactions("BlocksOp")
12894 def MakeBlockExplode(self, theCompound, theMinNbFaces, theMaxNbFaces, theName=None):
12896 Get all the blocks, contained in the given compound.
12899 theCompound The compound to explode.
12900 theMinNbFaces If solid has lower number of faces, it is not a block.
12901 theMaxNbFaces If solid has higher number of faces, it is not a block.
12902 theName Object name; when specified, this parameter is used
12903 for result publication in the study. Otherwise, if automatic
12904 publication is switched on, default value is used for result name.
12907 If theMaxNbFaces = 0, the maximum number of faces is not restricted.
12910 List of GEOM.GEOM_Object, containing the retrieved blocks.
12912 # Example: see GEOM_TestOthers.py
12913 theMinNbFaces,theMaxNbFaces,Parameters = ParseParameters(theMinNbFaces,theMaxNbFaces)
12914 aList = self.BlocksOp.ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces)
12915 RaiseIfFailed("ExplodeCompoundOfBlocks", self.BlocksOp)
12916 for anObj in aList:
12917 anObj.SetParameters(Parameters)
12919 self._autoPublish(aList, theName, "block")
12922 ## Find block, containing the given point inside its volume or on boundary.
12923 # @param theCompound Compound, to find block in.
12924 # @param thePoint Point, close to the desired block. If the point lays on
12925 # boundary between some blocks, we return block with nearest center.
12926 # @param theName Object name; when specified, this parameter is used
12927 # for result publication in the study. Otherwise, if automatic
12928 # publication is switched on, default value is used for result name.
12930 # @return New GEOM.GEOM_Object, containing the found block.
12932 # @ref swig_todo "Example"
12933 @ManageTransactions("BlocksOp")
12934 def GetBlockNearPoint(self, theCompound, thePoint, theName=None):
12936 Find block, containing the given point inside its volume or on boundary.
12939 theCompound Compound, to find block in.
12940 thePoint Point, close to the desired block. If the point lays on
12941 boundary between some blocks, we return block with nearest center.
12942 theName Object name; when specified, this parameter is used
12943 for result publication in the study. Otherwise, if automatic
12944 publication is switched on, default value is used for result name.
12947 New GEOM.GEOM_Object, containing the found block.
12949 # Example: see GEOM_Spanner.py
12950 anObj = self.BlocksOp.GetBlockNearPoint(theCompound, thePoint)
12951 RaiseIfFailed("GetBlockNearPoint", self.BlocksOp)
12952 self._autoPublish(anObj, theName, "block")
12955 ## Find block, containing all the elements, passed as the parts, or maximum quantity of them.
12956 # @param theCompound Compound, to find block in.
12957 # @param theParts List of faces and/or edges and/or vertices to be parts of the found block.
12958 # @param theName Object name; when specified, this parameter is used
12959 # for result publication in the study. Otherwise, if automatic
12960 # publication is switched on, default value is used for result name.
12962 # @return New GEOM.GEOM_Object, containing the found block.
12964 # @ref swig_GetBlockByParts "Example"
12965 @ManageTransactions("BlocksOp")
12966 def GetBlockByParts(self, theCompound, theParts, theName=None):
12968 Find block, containing all the elements, passed as the parts, or maximum quantity of them.
12971 theCompound Compound, to find block in.
12972 theParts List of faces and/or edges and/or vertices to be parts of the found block.
12973 theName Object name; when specified, this parameter is used
12974 for result publication in the study. Otherwise, if automatic
12975 publication is switched on, default value is used for result name.
12978 New GEOM_Object, containing the found block.
12980 # Example: see GEOM_TestOthers.py
12981 anObj = self.BlocksOp.GetBlockByParts(theCompound, theParts)
12982 RaiseIfFailed("GetBlockByParts", self.BlocksOp)
12983 self._autoPublish(anObj, theName, "block")
12986 ## Return all blocks, containing all the elements, passed as the parts.
12987 # @param theCompound Compound, to find blocks in.
12988 # @param theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
12989 # @param theName Object name; when specified, this parameter is used
12990 # for result publication in the study. Otherwise, if automatic
12991 # publication is switched on, default value is used for result name.
12993 # @return List of GEOM.GEOM_Object, containing the found blocks.
12995 # @ref swig_todo "Example"
12996 @ManageTransactions("BlocksOp")
12997 def GetBlocksByParts(self, theCompound, theParts, theName=None):
12999 Return all blocks, containing all the elements, passed as the parts.
13002 theCompound Compound, to find blocks in.
13003 theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
13004 theName Object name; when specified, this parameter is used
13005 for result publication in the study. Otherwise, if automatic
13006 publication is switched on, default value is used for result name.
13009 List of GEOM.GEOM_Object, containing the found blocks.
13011 # Example: see GEOM_Spanner.py
13012 aList = self.BlocksOp.GetBlocksByParts(theCompound, theParts)
13013 RaiseIfFailed("GetBlocksByParts", self.BlocksOp)
13014 self._autoPublish(aList, theName, "block")
13017 ## Multi-transformate block and glue the result.
13018 # Transformation is defined so, as to superpose direction faces.
13019 # @param Block Hexahedral solid to be multi-transformed.
13020 # @param DirFace1 ID of First direction face.
13021 # @param DirFace2 ID of Second direction face.
13022 # @param NbTimes Quantity of transformations to be done.
13023 # @param theName Object name; when specified, this parameter is used
13024 # for result publication in the study. Otherwise, if automatic
13025 # publication is switched on, default value is used for result name.
13027 # @note Unique ID of sub-shape can be obtained, using method GetSubShapeID().
13029 # @return New GEOM.GEOM_Object, containing the result shape.
13031 # @ref tui_multi_transformation "Example"
13032 @ManageTransactions("BlocksOp")
13033 def MakeMultiTransformation1D(self, Block, DirFace1, DirFace2, NbTimes, theName=None):
13035 Multi-transformate block and glue the result.
13036 Transformation is defined so, as to superpose direction faces.
13039 Block Hexahedral solid to be multi-transformed.
13040 DirFace1 ID of First direction face.
13041 DirFace2 ID of Second direction face.
13042 NbTimes Quantity of transformations to be done.
13043 theName Object name; when specified, this parameter is used
13044 for result publication in the study. Otherwise, if automatic
13045 publication is switched on, default value is used for result name.
13048 Unique ID of sub-shape can be obtained, using method GetSubShapeID().
13051 New GEOM.GEOM_Object, containing the result shape.
13053 # Example: see GEOM_Spanner.py
13054 DirFace1,DirFace2,NbTimes,Parameters = ParseParameters(DirFace1,DirFace2,NbTimes)
13055 anObj = self.BlocksOp.MakeMultiTransformation1D(Block, DirFace1, DirFace2, NbTimes)
13056 RaiseIfFailed("MakeMultiTransformation1D", self.BlocksOp)
13057 anObj.SetParameters(Parameters)
13058 self._autoPublish(anObj, theName, "transformed")
13061 ## Multi-transformate block and glue the result.
13062 # @param Block Hexahedral solid to be multi-transformed.
13063 # @param DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
13064 # @param DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
13065 # @param NbTimesU,NbTimesV Quantity of transformations to be done.
13066 # @param theName Object name; when specified, this parameter is used
13067 # for result publication in the study. Otherwise, if automatic
13068 # publication is switched on, default value is used for result name.
13070 # @return New GEOM.GEOM_Object, containing the result shape.
13072 # @ref tui_multi_transformation "Example"
13073 @ManageTransactions("BlocksOp")
13074 def MakeMultiTransformation2D(self, Block, DirFace1U, DirFace2U, NbTimesU,
13075 DirFace1V, DirFace2V, NbTimesV, theName=None):
13077 Multi-transformate block and glue the result.
13080 Block Hexahedral solid to be multi-transformed.
13081 DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
13082 DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
13083 NbTimesU,NbTimesV Quantity of transformations to be done.
13084 theName Object name; when specified, this parameter is used
13085 for result publication in the study. Otherwise, if automatic
13086 publication is switched on, default value is used for result name.
13089 New GEOM.GEOM_Object, containing the result shape.
13091 # Example: see GEOM_Spanner.py
13092 DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV,Parameters = ParseParameters(
13093 DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV)
13094 anObj = self.BlocksOp.MakeMultiTransformation2D(Block, DirFace1U, DirFace2U, NbTimesU,
13095 DirFace1V, DirFace2V, NbTimesV)
13096 RaiseIfFailed("MakeMultiTransformation2D", self.BlocksOp)
13097 anObj.SetParameters(Parameters)
13098 self._autoPublish(anObj, theName, "transformed")
13101 ## Build all possible propagation groups.
13102 # Propagation group is a set of all edges, opposite to one (main)
13103 # edge of this group directly or through other opposite edges.
13104 # Notion of Opposite Edge make sense only on quadrangle face.
13105 # @param theShape Shape to build propagation groups on.
13106 # @param theName Object name; when specified, this parameter is used
13107 # for result publication in the study. Otherwise, if automatic
13108 # publication is switched on, default value is used for result name.
13110 # @return List of GEOM.GEOM_Object, each of them is a propagation group.
13112 # @ref swig_Propagate "Example"
13113 @ManageTransactions("BlocksOp")
13114 def Propagate(self, theShape, theName=None):
13116 Build all possible propagation groups.
13117 Propagation group is a set of all edges, opposite to one (main)
13118 edge of this group directly or through other opposite edges.
13119 Notion of Opposite Edge make sense only on quadrangle face.
13122 theShape Shape to build propagation groups on.
13123 theName Object name; when specified, this parameter is used
13124 for result publication in the study. Otherwise, if automatic
13125 publication is switched on, default value is used for result name.
13128 List of GEOM.GEOM_Object, each of them is a propagation group.
13130 # Example: see GEOM_TestOthers.py
13131 listChains = self.BlocksOp.Propagate(theShape)
13132 RaiseIfFailed("Propagate", self.BlocksOp)
13133 self._autoPublish(listChains, theName, "propagate")
13136 # end of l3_blocks_op
13139 ## @addtogroup l3_groups
13142 ## Creates a new group which will store sub-shapes of theMainShape
13143 # @param theMainShape is a GEOM object on which the group is selected
13144 # @param theShapeType defines a shape type of the group (see GEOM::shape_type)
13145 # @param theName Object name; when specified, this parameter is used
13146 # for result publication in the study. Otherwise, if automatic
13147 # publication is switched on, default value is used for result name.
13149 # @return a newly created GEOM group (GEOM.GEOM_Object)
13151 # @ref tui_working_with_groups_page "Example 1"
13152 # \n @ref swig_CreateGroup "Example 2"
13153 @ManageTransactions("GroupOp")
13154 def CreateGroup(self, theMainShape, theShapeType, theName=None):
13156 Creates a new group which will store sub-shapes of theMainShape
13159 theMainShape is a GEOM object on which the group is selected
13160 theShapeType defines a shape type of the group:"COMPOUND", "COMPSOLID",
13161 "SOLID", "SHELL", "FACE", "WIRE", "EDGE", "VERTEX", "SHAPE".
13162 theName Object name; when specified, this parameter is used
13163 for result publication in the study. Otherwise, if automatic
13164 publication is switched on, default value is used for result name.
13167 a newly created GEOM group
13170 group = geompy.CreateGroup(Box, geompy.ShapeType["FACE"])
13173 # Example: see GEOM_TestOthers.py
13174 anObj = self.GroupOp.CreateGroup(theMainShape, theShapeType)
13175 RaiseIfFailed("CreateGroup", self.GroupOp)
13176 self._autoPublish(anObj, theName, "group")
13179 ## Adds a sub-object with ID theSubShapeId to the group
13180 # @param theGroup is a GEOM group to which the new sub-shape is added
13181 # @param theSubShapeID is a sub-shape ID in the main object.
13182 # \note Use method GetSubShapeID() to get an unique ID of the sub-shape
13184 # @ref tui_working_with_groups_page "Example"
13185 @ManageTransactions("GroupOp")
13186 def AddObject(self,theGroup, theSubShapeID):
13188 Adds a sub-object with ID theSubShapeId to the group
13191 theGroup is a GEOM group to which the new sub-shape is added
13192 theSubShapeID is a sub-shape ID in the main object.
13195 Use method GetSubShapeID() to get an unique ID of the sub-shape
13197 # Example: see GEOM_TestOthers.py
13198 self.GroupOp.AddObject(theGroup, theSubShapeID)
13199 if self.GroupOp.GetErrorCode() != "PAL_ELEMENT_ALREADY_PRESENT":
13200 RaiseIfFailed("AddObject", self.GroupOp)
13204 ## Removes a sub-object with ID \a theSubShapeId from the group
13205 # @param theGroup is a GEOM group from which the new sub-shape is removed
13206 # @param theSubShapeID is a sub-shape ID in the main object.
13207 # \note Use method GetSubShapeID() to get an unique ID of the sub-shape
13209 # @ref tui_working_with_groups_page "Example"
13210 @ManageTransactions("GroupOp")
13211 def RemoveObject(self,theGroup, theSubShapeID):
13213 Removes a sub-object with ID theSubShapeId from the group
13216 theGroup is a GEOM group from which the new sub-shape is removed
13217 theSubShapeID is a sub-shape ID in the main object.
13220 Use method GetSubShapeID() to get an unique ID of the sub-shape
13222 # Example: see GEOM_TestOthers.py
13223 self.GroupOp.RemoveObject(theGroup, theSubShapeID)
13224 RaiseIfFailed("RemoveObject", self.GroupOp)
13227 ## Adds to the group all the given shapes. No errors, if some shapes are already included.
13228 # @param theGroup is a GEOM group to which the new sub-shapes are added.
13229 # @param theSubShapes is a list of sub-shapes to be added.
13231 # @ref tui_working_with_groups_page "Example"
13232 @ManageTransactions("GroupOp")
13233 def UnionList (self,theGroup, theSubShapes):
13235 Adds to the group all the given shapes. No errors, if some shapes are already included.
13238 theGroup is a GEOM group to which the new sub-shapes are added.
13239 theSubShapes is a list of sub-shapes to be added.
13241 # Example: see GEOM_TestOthers.py
13242 self.GroupOp.UnionList(theGroup, theSubShapes)
13243 RaiseIfFailed("UnionList", self.GroupOp)
13246 ## Adds to the group all the given shapes. No errors, if some shapes are already included.
13247 # @param theGroup is a GEOM group to which the new sub-shapes are added.
13248 # @param theSubShapes is a list of indices of sub-shapes to be added.
13250 # @ref swig_UnionIDs "Example"
13251 @ManageTransactions("GroupOp")
13252 def UnionIDs(self,theGroup, theSubShapes):
13254 Adds to the group all the given shapes. No errors, if some shapes are already included.
13257 theGroup is a GEOM group to which the new sub-shapes are added.
13258 theSubShapes is a list of indices of sub-shapes to be added.
13260 # Example: see GEOM_TestOthers.py
13261 self.GroupOp.UnionIDs(theGroup, theSubShapes)
13262 RaiseIfFailed("UnionIDs", self.GroupOp)
13265 ## Removes from the group all the given shapes. No errors, if some shapes are not included.
13266 # @param theGroup is a GEOM group from which the sub-shapes are removed.
13267 # @param theSubShapes is a list of sub-shapes to be removed.
13269 # @ref tui_working_with_groups_page "Example"
13270 @ManageTransactions("GroupOp")
13271 def DifferenceList (self,theGroup, theSubShapes):
13273 Removes from the group all the given shapes. No errors, if some shapes are not included.
13276 theGroup is a GEOM group from which the sub-shapes are removed.
13277 theSubShapes is a list of sub-shapes to be removed.
13279 # Example: see GEOM_TestOthers.py
13280 self.GroupOp.DifferenceList(theGroup, theSubShapes)
13281 RaiseIfFailed("DifferenceList", self.GroupOp)
13284 ## Removes from the group all the given shapes. No errors, if some shapes are not included.
13285 # @param theGroup is a GEOM group from which the sub-shapes are removed.
13286 # @param theSubShapes is a list of indices of sub-shapes to be removed.
13288 # @ref swig_DifferenceIDs "Example"
13289 @ManageTransactions("GroupOp")
13290 def DifferenceIDs(self,theGroup, theSubShapes):
13292 Removes from the group all the given shapes. No errors, if some shapes are not included.
13295 theGroup is a GEOM group from which the sub-shapes are removed.
13296 theSubShapes is a list of indices of sub-shapes to be removed.
13298 # Example: see GEOM_TestOthers.py
13299 self.GroupOp.DifferenceIDs(theGroup, theSubShapes)
13300 RaiseIfFailed("DifferenceIDs", self.GroupOp)
13303 ## Union of two groups.
13304 # New group is created. It will contain all entities
13305 # which are present in groups theGroup1 and theGroup2.
13306 # @param theGroup1, theGroup2 are the initial GEOM groups
13307 # to create the united group from.
13308 # @param theName Object name; when specified, this parameter is used
13309 # for result publication in the study. Otherwise, if automatic
13310 # publication is switched on, default value is used for result name.
13312 # @return a newly created GEOM group.
13314 # @ref tui_union_groups_anchor "Example"
13315 @ManageTransactions("GroupOp")
13316 def UnionGroups (self, theGroup1, theGroup2, theName=None):
13318 Union of two groups.
13319 New group is created. It will contain all entities
13320 which are present in groups theGroup1 and theGroup2.
13323 theGroup1, theGroup2 are the initial GEOM groups
13324 to create the united group from.
13325 theName Object name; when specified, this parameter is used
13326 for result publication in the study. Otherwise, if automatic
13327 publication is switched on, default value is used for result name.
13330 a newly created GEOM group.
13332 # Example: see GEOM_TestOthers.py
13333 aGroup = self.GroupOp.UnionGroups(theGroup1, theGroup2)
13334 RaiseIfFailed("UnionGroups", self.GroupOp)
13335 self._autoPublish(aGroup, theName, "group")
13338 ## Intersection of two groups.
13339 # New group is created. It will contain only those entities
13340 # which are present in both groups theGroup1 and theGroup2.
13341 # @param theGroup1, theGroup2 are the initial GEOM groups to get common part of.
13342 # @param theName Object name; when specified, this parameter is used
13343 # for result publication in the study. Otherwise, if automatic
13344 # publication is switched on, default value is used for result name.
13346 # @return a newly created GEOM group.
13348 # @ref tui_intersect_groups_anchor "Example"
13349 @ManageTransactions("GroupOp")
13350 def IntersectGroups (self, theGroup1, theGroup2, theName=None):
13352 Intersection of two groups.
13353 New group is created. It will contain only those entities
13354 which are present in both groups theGroup1 and theGroup2.
13357 theGroup1, theGroup2 are the initial GEOM groups to get common part of.
13358 theName Object name; when specified, this parameter is used
13359 for result publication in the study. Otherwise, if automatic
13360 publication is switched on, default value is used for result name.
13363 a newly created GEOM group.
13365 # Example: see GEOM_TestOthers.py
13366 aGroup = self.GroupOp.IntersectGroups(theGroup1, theGroup2)
13367 RaiseIfFailed("IntersectGroups", self.GroupOp)
13368 self._autoPublish(aGroup, theName, "group")
13371 ## Cut of two groups.
13372 # New group is created. It will contain entities which are
13373 # present in group theGroup1 but are not present in group theGroup2.
13374 # @param theGroup1 is a GEOM group to include elements of.
13375 # @param theGroup2 is a GEOM group to exclude elements of.
13376 # @param theName Object name; when specified, this parameter is used
13377 # for result publication in the study. Otherwise, if automatic
13378 # publication is switched on, default value is used for result name.
13380 # @return a newly created GEOM group.
13382 # @ref tui_cut_groups_anchor "Example"
13383 @ManageTransactions("GroupOp")
13384 def CutGroups (self, theGroup1, theGroup2, theName=None):
13387 New group is created. It will contain entities which are
13388 present in group theGroup1 but are not present in group theGroup2.
13391 theGroup1 is a GEOM group to include elements of.
13392 theGroup2 is a GEOM group to exclude elements of.
13393 theName Object name; when specified, this parameter is used
13394 for result publication in the study. Otherwise, if automatic
13395 publication is switched on, default value is used for result name.
13398 a newly created GEOM group.
13400 # Example: see GEOM_TestOthers.py
13401 aGroup = self.GroupOp.CutGroups(theGroup1, theGroup2)
13402 RaiseIfFailed("CutGroups", self.GroupOp)
13403 self._autoPublish(aGroup, theName, "group")
13406 ## Union of list of groups.
13407 # New group is created. It will contain all entities that are
13408 # present in groups listed in theGList.
13409 # @param theGList is a list of GEOM groups to create the united group from.
13410 # @param theName Object name; when specified, this parameter is used
13411 # for result publication in the study. Otherwise, if automatic
13412 # publication is switched on, default value is used for result name.
13414 # @return a newly created GEOM group.
13416 # @ref tui_union_groups_anchor "Example"
13417 @ManageTransactions("GroupOp")
13418 def UnionListOfGroups (self, theGList, theName=None):
13420 Union of list of groups.
13421 New group is created. It will contain all entities that are
13422 present in groups listed in theGList.
13425 theGList is a list of GEOM groups to create the united group from.
13426 theName Object name; when specified, this parameter is used
13427 for result publication in the study. Otherwise, if automatic
13428 publication is switched on, default value is used for result name.
13431 a newly created GEOM group.
13433 # Example: see GEOM_TestOthers.py
13434 aGroup = self.GroupOp.UnionListOfGroups(theGList)
13435 RaiseIfFailed("UnionListOfGroups", self.GroupOp)
13436 self._autoPublish(aGroup, theName, "group")
13439 ## Cut of lists of groups.
13440 # New group is created. It will contain only entities
13441 # which are present in groups listed in theGList.
13442 # @param theGList is a list of GEOM groups to include elements of.
13443 # @param theName Object name; when specified, this parameter is used
13444 # for result publication in the study. Otherwise, if automatic
13445 # publication is switched on, default value is used for result name.
13447 # @return a newly created GEOM group.
13449 # @ref tui_intersect_groups_anchor "Example"
13450 @ManageTransactions("GroupOp")
13451 def IntersectListOfGroups (self, theGList, theName=None):
13453 Cut of lists of groups.
13454 New group is created. It will contain only entities
13455 which are present in groups listed in theGList.
13458 theGList is a list of GEOM groups to include elements of.
13459 theName Object name; when specified, this parameter is used
13460 for result publication in the study. Otherwise, if automatic
13461 publication is switched on, default value is used for result name.
13464 a newly created GEOM group.
13466 # Example: see GEOM_TestOthers.py
13467 aGroup = self.GroupOp.IntersectListOfGroups(theGList)
13468 RaiseIfFailed("IntersectListOfGroups", self.GroupOp)
13469 self._autoPublish(aGroup, theName, "group")
13472 ## Cut of lists of groups.
13473 # New group is created. It will contain only entities
13474 # which are present in groups listed in theGList1 but
13475 # are not present in groups from theGList2.
13476 # @param theGList1 is a list of GEOM groups to include elements of.
13477 # @param theGList2 is a list of GEOM groups to exclude elements of.
13478 # @param theName Object name; when specified, this parameter is used
13479 # for result publication in the study. Otherwise, if automatic
13480 # publication is switched on, default value is used for result name.
13482 # @return a newly created GEOM group.
13484 # @ref tui_cut_groups_anchor "Example"
13485 @ManageTransactions("GroupOp")
13486 def CutListOfGroups (self, theGList1, theGList2, theName=None):
13488 Cut of lists of groups.
13489 New group is created. It will contain only entities
13490 which are present in groups listed in theGList1 but
13491 are not present in groups from theGList2.
13494 theGList1 is a list of GEOM groups to include elements of.
13495 theGList2 is a list of GEOM groups to exclude elements of.
13496 theName Object name; when specified, this parameter is used
13497 for result publication in the study. Otherwise, if automatic
13498 publication is switched on, default value is used for result name.
13501 a newly created GEOM group.
13503 # Example: see GEOM_TestOthers.py
13504 aGroup = self.GroupOp.CutListOfGroups(theGList1, theGList2)
13505 RaiseIfFailed("CutListOfGroups", self.GroupOp)
13506 self._autoPublish(aGroup, theName, "group")
13509 ## Returns a list of sub-objects ID stored in the group
13510 # @param theGroup is a GEOM group for which a list of IDs is requested
13512 # @ref swig_GetObjectIDs "Example"
13513 @ManageTransactions("GroupOp")
13514 def GetObjectIDs(self,theGroup):
13516 Returns a list of sub-objects ID stored in the group
13519 theGroup is a GEOM group for which a list of IDs is requested
13521 # Example: see GEOM_TestOthers.py
13522 ListIDs = self.GroupOp.GetObjects(theGroup)
13523 RaiseIfFailed("GetObjects", self.GroupOp)
13526 ## Returns a type of sub-objects stored in the group
13527 # @param theGroup is a GEOM group which type is returned.
13529 # @ref swig_GetType "Example"
13530 @ManageTransactions("GroupOp")
13531 def GetType(self,theGroup):
13533 Returns a type of sub-objects stored in the group
13536 theGroup is a GEOM group which type is returned.
13538 # Example: see GEOM_TestOthers.py
13539 aType = self.GroupOp.GetType(theGroup)
13540 RaiseIfFailed("GetType", self.GroupOp)
13543 ## Convert a type of geom object from id to string value
13544 # @param theId is a GEOM object type id.
13545 # @return type of geom object (POINT, VECTOR, PLANE, LINE, TORUS, ... )
13546 # @ref swig_GetType "Example"
13547 def ShapeIdToType(self, theId):
13549 Convert a type of geom object from id to string value
13552 theId is a GEOM object type id.
13555 type of geom object (POINT, VECTOR, PLANE, LINE, TORUS, ... )
13582 return "REVOLUTION"
13630 return "FREE_BOUNDS"
13638 return "THRUSECTIONS"
13640 return "COMPOUNDFILTER"
13642 return "SHAPES_ON_SHAPE"
13644 return "ELLIPSE_ARC"
13646 return "3DSKETCHER"
13652 return "PIPETSHAPE"
13653 return "Shape Id not exist."
13655 ## Returns a main shape associated with the group
13656 # @param theGroup is a GEOM group for which a main shape object is requested
13657 # @return a GEOM object which is a main shape for theGroup
13659 # @ref swig_GetMainShape "Example"
13660 @ManageTransactions("GroupOp")
13661 def GetMainShape(self,theGroup):
13663 Returns a main shape associated with the group
13666 theGroup is a GEOM group for which a main shape object is requested
13669 a GEOM object which is a main shape for theGroup
13671 Example of usage: BoxCopy = geompy.GetMainShape(CreateGroup)
13673 # Example: see GEOM_TestOthers.py
13674 anObj = self.GroupOp.GetMainShape(theGroup)
13675 RaiseIfFailed("GetMainShape", self.GroupOp)
13678 ## Create group of edges of theShape, whose length is in range [min_length, max_length].
13679 # If include_min/max == 0, edges with length == min/max_length will not be included in result.
13680 # @param theShape given shape (see GEOM.GEOM_Object)
13681 # @param min_length minimum length of edges of theShape
13682 # @param max_length maximum length of edges of theShape
13683 # @param include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13684 # @param include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13685 # @param theName Object name; when specified, this parameter is used
13686 # for result publication in the study. Otherwise, if automatic
13687 # publication is switched on, default value is used for result name.
13689 # @return a newly created GEOM group of edges
13691 # @@ref swig_todo "Example"
13692 def GetEdgesByLength (self, theShape, min_length, max_length, include_min = 1, include_max = 1, theName=None):
13694 Create group of edges of theShape, whose length is in range [min_length, max_length].
13695 If include_min/max == 0, edges with length == min/max_length will not be included in result.
13698 theShape given shape
13699 min_length minimum length of edges of theShape
13700 max_length maximum length of edges of theShape
13701 include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13702 include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13703 theName Object name; when specified, this parameter is used
13704 for result publication in the study. Otherwise, if automatic
13705 publication is switched on, default value is used for result name.
13708 a newly created GEOM group of edges.
13710 edges = self.SubShapeAll(theShape, self.ShapeType["EDGE"])
13711 edges_in_range = []
13713 Props = self.BasicProperties(edge)
13714 if min_length <= Props[0] and Props[0] <= max_length:
13715 if (not include_min) and (min_length == Props[0]):
13718 if (not include_max) and (Props[0] == max_length):
13721 edges_in_range.append(edge)
13723 if len(edges_in_range) <= 0:
13724 print("No edges found by given criteria")
13727 # note: auto-publishing is done in self.CreateGroup()
13728 group_edges = self.CreateGroup(theShape, self.ShapeType["EDGE"], theName)
13729 self.UnionList(group_edges, edges_in_range)
13733 ## Create group of edges of selected shape, whose length is in range [min_length, max_length].
13734 # If include_min/max == 0, edges with length == min/max_length will not be included in result.
13735 # @param min_length minimum length of edges of selected shape
13736 # @param max_length maximum length of edges of selected shape
13737 # @param include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13738 # @param include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13739 # @return a newly created GEOM group of edges
13740 # @ref swig_todo "Example"
13741 def SelectEdges (self, min_length, max_length, include_min = 1, include_max = 1):
13743 Create group of edges of selected shape, whose length is in range [min_length, max_length].
13744 If include_min/max == 0, edges with length == min/max_length will not be included in result.
13747 min_length minimum length of edges of selected shape
13748 max_length maximum length of edges of selected shape
13749 include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13750 include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13753 a newly created GEOM group of edges.
13755 nb_selected = sg.SelectedCount()
13756 if nb_selected < 1:
13757 print("Select a shape before calling this function, please.")
13759 if nb_selected > 1:
13760 print("Only one shape must be selected")
13763 id_shape = sg.getSelected(0)
13764 shape = IDToObject( id_shape )
13766 group_edges = self.GetEdgesByLength(shape, min_length, max_length, include_min, include_max)
13770 if include_min: left_str = " <= "
13771 if include_max: right_str = " <= "
13773 self.addToStudyInFather(shape, group_edges, "Group of edges with " + repr(min_length)
13774 + left_str + "length" + right_str + repr(max_length))
13776 sg.updateObjBrowser()
13783 #@@ insert new functions before this line @@ do not remove this line @@#
13785 ## Create a copy of the given object
13787 # @param theOriginal geometry object for copy
13788 # @param theName Object name; when specified, this parameter is used
13789 # for result publication in the study. Otherwise, if automatic
13790 # publication is switched on, default value is used for result name.
13792 # @return New GEOM_Object, containing the copied shape.
13794 # @ingroup l1_geomBuilder_auxiliary
13795 # @ref swig_MakeCopy "Example"
13796 @ManageTransactions("InsertOp")
13797 def MakeCopy(self, theOriginal, theName=None):
13799 Create a copy of the given object
13802 theOriginal geometry object for copy
13803 theName Object name; when specified, this parameter is used
13804 for result publication in the study. Otherwise, if automatic
13805 publication is switched on, default value is used for result name.
13808 New GEOM_Object, containing the copied shape.
13810 Example of usage: Copy = geompy.MakeCopy(Box)
13812 # Example: see GEOM_TestAll.py
13813 anObj = self.InsertOp.MakeCopy(theOriginal)
13814 RaiseIfFailed("MakeCopy", self.InsertOp)
13815 self._autoPublish(anObj, theName, "copy")
13818 ## Add Path to load python scripts from
13819 # @param Path a path to load python scripts from
13820 # @ingroup l1_geomBuilder_auxiliary
13821 def addPath(self,Path):
13823 Add Path to load python scripts from
13826 Path a path to load python scripts from
13828 if (sys.path.count(Path) < 1):
13829 sys.path.append(Path)
13833 ## Load marker texture from the file
13834 # @param Path a path to the texture file
13835 # @return unique texture identifier
13836 # @ingroup l1_geomBuilder_auxiliary
13837 @ManageTransactions("InsertOp")
13838 def LoadTexture(self, Path):
13840 Load marker texture from the file
13843 Path a path to the texture file
13846 unique texture identifier
13848 # Example: see GEOM_TestAll.py
13849 ID = self.InsertOp.LoadTexture(Path)
13850 RaiseIfFailed("LoadTexture", self.InsertOp)
13853 ## Get internal name of the object based on its study entry
13854 # @note This method does not provide an unique identifier of the geometry object.
13855 # @note This is internal function of GEOM component, though it can be used outside it for
13856 # appropriate reason (e.g. for identification of geometry object).
13857 # @param obj geometry object
13858 # @return unique object identifier
13859 # @ingroup l1_geomBuilder_auxiliary
13860 def getObjectID(self, obj):
13862 Get internal name of the object based on its study entry.
13863 Note: this method does not provide an unique identifier of the geometry object.
13864 It is an internal function of GEOM component, though it can be used outside GEOM for
13865 appropriate reason (e.g. for identification of geometry object).
13868 obj geometry object
13871 unique object identifier
13874 entry = salome.ObjectToID(obj)
13875 if entry is not None:
13876 lst = entry.split(":")
13878 ID = lst[-1] # -1 means last item in the list
13879 return "GEOM_" + ID
13884 ## Add marker texture. @a Width and @a Height parameters
13885 # specify width and height of the texture in pixels.
13886 # If @a RowData is @c True, @a Texture parameter should represent texture data
13887 # packed into the byte array. If @a RowData is @c False (default), @a Texture
13888 # parameter should be unpacked string, in which '1' symbols represent opaque
13889 # pixels and '0' represent transparent pixels of the texture bitmap.
13891 # @param Width texture width in pixels
13892 # @param Height texture height in pixels
13893 # @param Texture texture data
13894 # @param RowData if @c True, @a Texture data are packed in the byte stream
13895 # @return unique texture identifier
13896 # @ingroup l1_geomBuilder_auxiliary
13897 @ManageTransactions("InsertOp")
13898 def AddTexture(self, Width, Height, Texture, RowData=False):
13900 Add marker texture. Width and Height parameters
13901 specify width and height of the texture in pixels.
13902 If RowData is True, Texture parameter should represent texture data
13903 packed into the byte array. If RowData is False (default), Texture
13904 parameter should be unpacked string, in which '1' symbols represent opaque
13905 pixels and '0' represent transparent pixels of the texture bitmap.
13908 Width texture width in pixels
13909 Height texture height in pixels
13910 Texture texture data
13911 RowData if True, Texture data are packed in the byte stream
13914 return unique texture identifier
13916 if not RowData: Texture = PackData(Texture)
13917 ID = self.InsertOp.AddTexture(Width, Height, Texture)
13918 RaiseIfFailed("AddTexture", self.InsertOp)
13921 ## Transfer not topological data from one GEOM object to another.
13923 # @param theObjectFrom the source object of non-topological data
13924 # @param theObjectTo the destination object of non-topological data
13925 # @param theFindMethod method to search sub-shapes of theObjectFrom
13926 # in shape theObjectTo. Possible values are: GEOM.FSM_GetInPlace,
13927 # GEOM.FSM_GetInPlaceByHistory and GEOM.FSM_GetInPlace_Old.
13928 # Other values of GEOM.find_shape_method are not supported.
13930 # @return True in case of success; False otherwise.
13932 # @ingroup l1_geomBuilder_auxiliary
13934 # @ref swig_TransferData "Example"
13935 @ManageTransactions("InsertOp")
13936 def TransferData(self, theObjectFrom, theObjectTo,
13937 theFindMethod=GEOM.FSM_GetInPlace):
13939 Transfer not topological data from one GEOM object to another.
13942 theObjectFrom the source object of non-topological data
13943 theObjectTo the destination object of non-topological data
13944 theFindMethod method to search sub-shapes of theObjectFrom
13945 in shape theObjectTo. Possible values are:
13946 GEOM.FSM_GetInPlace, GEOM.FSM_GetInPlaceByHistory
13947 and GEOM.FSM_GetInPlace_Old. Other values of
13948 GEOM.find_shape_method are not supported.
13951 True in case of success; False otherwise.
13953 # Example: see GEOM_TestOthers.py
13955 # Example: see GEOM_TestAll.py
13956 isOk = self.InsertOp.TransferData(theObjectFrom,
13957 theObjectTo, theFindMethod)
13958 RaiseIfFailed("TransferData", self.InsertOp)
13961 ## Creates a new folder object. It is a container for any GEOM objects.
13962 # @param Name name of the container
13963 # @param Father parent object. If None,
13964 # folder under 'Geometry' root object will be created.
13965 # @return a new created folder
13966 # @ingroup l1_publish_data
13967 def NewFolder(self, Name, Father=None):
13969 Create a new folder object. It is an auxiliary container for any GEOM objects.
13972 Name name of the container
13973 Father parent object. If None,
13974 folder under 'Geometry' root object will be created.
13977 a new created folder
13979 return self.CreateFolder(Name, Father)
13981 ## Move object to the specified folder
13982 # @param Object object to move
13983 # @param Folder target folder
13984 # @ingroup l1_publish_data
13985 def PutToFolder(self, Object, Folder):
13987 Move object to the specified folder
13990 Object object to move
13991 Folder target folder
13993 self.MoveToFolder(Object, Folder)
13996 ## Move list of objects to the specified folder
13997 # @param ListOfSO list of objects to move
13998 # @param Folder target folder
13999 # @ingroup l1_publish_data
14000 def PutListToFolder(self, ListOfSO, Folder):
14002 Move list of objects to the specified folder
14005 ListOfSO list of objects to move
14006 Folder target folder
14008 self.MoveListToFolder(ListOfSO, Folder)
14011 ## @addtogroup l2_field
14015 # @param shape the shape the field lies on
14016 # @param name the field name
14017 # @param type type of field data: 0 - bool, 1 - int, 2 - double, 3 - string
14018 # @param dimension dimension of the shape the field lies on
14019 # 0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
14020 # @param componentNames names of components
14021 # @return a created field
14022 @ManageTransactions("FieldOp")
14023 def CreateField(self, shape, name, type, dimension, componentNames):
14028 shape the shape the field lies on
14029 name the field name
14030 type type of field data
14031 dimension dimension of the shape the field lies on
14032 0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
14033 componentNames names of components
14038 if isinstance( type, int ):
14039 if type < 0 or type > 3:
14040 raise RuntimeError("CreateField : Error: data type must be within [0-3] range")
14041 type = [GEOM.FDT_Bool,GEOM.FDT_Int,GEOM.FDT_Double,GEOM.FDT_String][type]
14043 f = self.FieldOp.CreateField( shape, name, type, dimension, componentNames)
14044 RaiseIfFailed("CreateField", self.FieldOp)
14046 geom._autoPublish( f, "", name)
14049 ## Removes a field from the GEOM component
14050 # @param field the field to remove
14051 def RemoveField(self, field):
14052 "Removes a field from the GEOM component"
14054 if isinstance( field, GEOM._objref_GEOM_Field ):
14055 geom.RemoveObject( field )
14056 elif isinstance( field, geomField ):
14057 geom.RemoveObject( field.field )
14059 raise RuntimeError("RemoveField() : the object is not a field")
14062 ## Returns number of fields on a shape
14063 @ManageTransactions("FieldOp")
14064 def CountFields(self, shape):
14065 "Returns number of fields on a shape"
14066 nb = self.FieldOp.CountFields( shape )
14067 RaiseIfFailed("CountFields", self.FieldOp)
14070 ## Returns all fields on a shape
14071 @ManageTransactions("FieldOp")
14072 def GetFields(self, shape):
14073 "Returns all fields on a shape"
14074 ff = self.FieldOp.GetFields( shape )
14075 RaiseIfFailed("GetFields", self.FieldOp)
14078 ## Returns a field on a shape by its name
14079 @ManageTransactions("FieldOp")
14080 def GetField(self, shape, name):
14081 "Returns a field on a shape by its name"
14082 f = self.FieldOp.GetField( shape, name )
14083 RaiseIfFailed("GetField", self.FieldOp)
14089 ## @addtogroup l2_testing
14092 ## Build a mesh on the given shape.
14093 # @param shape the source shape
14094 # @param linear_deflection linear deflection coefficient
14095 # @param is_relative says if given value of deflection is relative to shape's bounding box
14096 # @param angular_deflection angular deflection for edges in degrees
14097 # @return True in case of success; otherwise False.
14098 @ManageTransactions("TestOp")
14099 def Tesselate(self, shape, linear_deflection=0, is_relative=True, angular_deflection=0):
14100 """Build a mesh on the given shape.
14103 shape the source shape
14104 linear_deflection linear deflection coefficient
14105 is_relative says if given value of deflection is relative to shape's bounding box
14106 angular_deflection angular deflection for edges in degrees
14109 True in case of success; otherwise False.
14111 if angular_deflection > 0:
14112 angular_deflection = angular_deflection * math.pi / 180.
14113 r = self.TestOp.Tesselate(shape, linear_deflection, is_relative, angular_deflection)
14114 RaiseIfFailed("Tesselate", self.TestOp)
14117 ## Obtain a shape checker
14118 # @return An instance of @ref conformity.CheckConformity "CheckConformity" interface
14120 # @ref tui_conformity_page "Example"
14121 def CheckConformity (self, shape):
14123 Obtain a shape checker.
14126 conf = geompy.CheckConformity(shape)
14127 valid = conf.isValid()
14128 si2d = conf.selfIntersected2D()
14129 dist = conf.distantShapes()
14130 small = conf.smallEdges()
14131 interfer = cc.interferingSubshapes()
14133 conf = CheckConformity (shape, self)
14136 ## Obtain a shape proximity calculator
14137 # @return An instance of @ref proximity.ShapeProximity "ShapeProximity" interface
14139 # @ref tui_proximity_page "Example"
14140 def ShapeProximity (self):
14142 Obtain a shape proximity calculator.
14145 prox = geompy.ShapeProximity()
14146 value = prox.proximity(shape1, shape2)
14148 prox = ShapeProximity (self)
14151 # end of l2_testing
14155 # Register the new proxy for GEOM_Gen
14156 omniORB.registerObjref(GEOM._objref_GEOM_Gen._NP_RepositoryId, geomBuilder)
14159 ## Field on Geometry
14160 # @ingroup l2_field
14161 class geomField( GEOM._objref_GEOM_Field ):
14163 def __init__(self, *args):
14164 GEOM._objref_GEOM_Field.__init__(self, *args)
14165 self.field = GEOM._objref_GEOM_Field
14168 ## Returns the shape the field lies on
14169 def getShape(self):
14170 "Returns the shape the field lies on"
14171 return self.field.GetShape(self)
14173 ## Returns the field name
14175 "Returns the field name"
14176 return self.field.GetName(self)
14178 ## Returns type of field data as integer [0-3]
14180 "Returns type of field data"
14181 return EnumToLong(self.field.GetDataType(self))
14183 ## Returns type of field data:
14184 # one of GEOM.FDT_Bool, GEOM.FDT_Int, GEOM.FDT_Double, GEOM.FDT_String
14185 def getTypeEnum(self):
14186 "Returns type of field data"
14187 return self.field.GetDataType(self)
14189 ## Returns dimension of the shape the field lies on:
14190 # 0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
14191 def getDimension(self):
14192 """Returns dimension of the shape the field lies on:
14193 0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape"""
14194 return self.field.GetDimension(self)
14196 ## Returns names of components
14197 def getComponents(self):
14198 "Returns names of components"
14199 return self.field.GetComponents(self)
14201 ## Adds a time step to the field
14202 # @param step the time step number further used as the step identifier
14203 # @param stamp the time step time
14204 # @param values the values of the time step
14205 def addStep(self, step, stamp, values):
14206 "Adds a time step to the field"
14207 stp = self.field.AddStep( self, step, stamp )
14209 raise RuntimeError("Field.addStep() : Error: step %s already exists in this field"%step)
14211 geom._autoPublish( stp, "", "Step %s, %s"%(step,stamp))
14212 self.setValues( step, values )
14215 ## Remove a time step from the field
14216 def removeStep(self,step):
14217 "Remove a time step from the field"
14220 stepObj = self.field.GetStep( self, step )
14222 stepSO = geom.myStudy.FindObjectID( stepObj.GetStudyEntry() )
14225 #traceback.print_exc()
14227 self.field.RemoveStep( self, step )
14229 geom.myBuilder.RemoveObjectWithChildren( stepSO )
14232 ## Returns number of time steps in the field
14233 def countSteps(self):
14234 "Returns number of time steps in the field"
14235 return self.field.CountSteps(self)
14237 ## Returns a list of time step IDs in the field
14238 def getSteps(self):
14239 "Returns a list of time step IDs in the field"
14240 return self.field.GetSteps(self)
14242 ## Returns a time step by its ID
14243 def getStep(self,step):
14244 "Returns a time step by its ID"
14245 stp = self.field.GetStep(self, step)
14247 raise RuntimeError("Step %s is missing from this field"%step)
14250 ## Returns the time of the field step
14251 def getStamp(self,step):
14252 "Returns the time of the field step"
14253 return self.getStep(step).GetStamp()
14255 ## Changes the time of the field step
14256 def setStamp(self, step, stamp):
14257 "Changes the time of the field step"
14258 return self.getStep(step).SetStamp(stamp)
14260 ## Returns values of the field step
14261 def getValues(self, step):
14262 "Returns values of the field step"
14263 return self.getStep(step).GetValues()
14265 ## Changes values of the field step
14266 def setValues(self, step, values):
14267 "Changes values of the field step"
14268 stp = self.getStep(step)
14269 errBeg = "Field.setValues(values) : Error: "
14271 ok = stp.SetValues( values )
14272 except Exception as e:
14274 if excStr.find("WrongPythonType") > 0:
14275 raise RuntimeError(errBeg +\
14276 "wrong type of values, %s values are expected"%str(self.getTypeEnum())[4:])
14277 raise RuntimeError(errBeg + str(e))
14279 nbOK = self.field.GetArraySize(self)
14282 raise RuntimeError(errBeg + "len(values) must be %s but not %s"%(nbOK,nbKO))
14284 raise RuntimeError(errBeg + "failed")
14287 pass # end of class geomField
14289 # Register the new proxy for GEOM_Field
14290 omniORB.registerObjref(GEOM._objref_GEOM_Field._NP_RepositoryId, geomField)
14293 ## Create a new geomBuilder instance.The geomBuilder class provides the Python
14294 # interface to GEOM operations.
14299 # salome.salome_init()
14300 # from salome.geom import geomBuilder
14301 # geompy = geomBuilder.New()
14303 # @param instance CORBA proxy of GEOM Engine. If None, the default Engine is used.
14304 # @return geomBuilder instance
14305 def New( instance=None):
14307 Create a new geomBuilder instance.The geomBuilder class provides the Python
14308 interface to GEOM operations.
14312 salome.salome_init()
14313 from salome.geom import geomBuilder
14314 geompy = geomBuilder.New()
14317 instance CORBA proxy of GEOM Engine. If None, the default Engine is used.
14319 geomBuilder instance
14321 #print "New geomBuilder ", study, instance
14325 if instance and isinstance( instance, SALOMEDS._objref_Study ):
14327 sys.stderr.write("Warning: 'study' argument is no more needed in geomBuilder.New(). Consider updating your script!!!\n\n")
14332 geom = geomBuilder()
14333 assert isinstance(geom,geomBuilder), "Geom engine class is %s but should be geomBuilder.geomBuilder. Import geomBuilder before creating the instance."%geom.__class__
14338 # Register methods from the plug-ins in the geomBuilder class
14339 plugins_var = os.environ.get( "GEOM_PluginsList" )
14342 if plugins_var is not None:
14343 plugins = plugins_var.split( ":" )
14344 plugins=[x for x in plugins if len(x)>0]
14345 if plugins is not None:
14346 for pluginName in plugins:
14347 pluginBuilderName = pluginName + "Builder"
14349 exec( "from salome.%s.%s import *" % (pluginName, pluginBuilderName))
14350 except Exception as e:
14351 from salome_utils import verbose
14352 print("Exception while loading %s: %s" % ( pluginBuilderName, e ))
14354 exec( "from salome.%s import %s" % (pluginName, pluginBuilderName))
14355 plugin = eval( pluginBuilderName )
14357 # add methods from plugin module to the geomBuilder class
14358 for k in dir( plugin ):
14359 if k[0] == '_': continue
14360 method = getattr( plugin, k )
14361 if type( method ).__name__ == 'function':
14362 if not hasattr( geomBuilder, k ):
14363 setattr( geomBuilder, k, method )