1 # -*- coding: iso-8859-1 -*-
2 # Copyright (C) 2007-2024 CEA, EDF, 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.
7765 # @param theFuzzyParam The fuzzy parameter to be used for the boolean
7766 # operation. If the value is not positive, no fuzzy tolerance will
7767 # be considered for the boolean operation.
7769 # @note This algorithm doesn't find all types of self-intersections.
7770 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7771 # vertex/face and edge/face intersections. Face/face
7772 # intersections detection is switched off as it is a
7773 # time-consuming operation that gives an impact on performance.
7774 # To find all self-intersections please use
7775 # CheckSelfIntersections() method.
7777 # @return New GEOM.GEOM_Object, containing the result shape.
7779 # @ref tui_fuse "Example"
7780 @ManageTransactions("BoolOp")
7781 def MakeBoolean(self, theShape1, theShape2, theOperation, checkSelfInte=False, theName=None, theFuzzyParam=-1):
7783 Perform one of boolean operations on two given shapes.
7786 theShape1 First argument for boolean operation.
7787 theShape2 Second argument for boolean operation.
7788 theOperation Indicates the operation to be done:
7789 1 - Common, 2 - Cut, 3 - Fuse, 4 - Section.
7790 checkSelfInte The flag that tells if the arguments should
7791 be checked for self-intersection prior to
7793 theName Object name; when specified, this parameter is used
7794 for result publication in the study. Otherwise, if automatic
7795 publication is switched on, default value is used for result name.
7796 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
7797 If the value is not positive, no fuzzy tolerance will be
7798 considered for the boolean operation.
7801 This algorithm doesn't find all types of self-intersections.
7802 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7803 vertex/face and edge/face intersections. Face/face
7804 intersections detection is switched off as it is a
7805 time-consuming operation that gives an impact on performance.
7806 To find all self-intersections please use
7807 CheckSelfIntersections() method.
7810 New GEOM.GEOM_Object, containing the result shape.
7812 # Example: see GEOM_TestAll.py
7813 anObj = self.BoolOp.MakeBooleanWithFuzzy(theShape1, theShape2, theOperation, checkSelfInte, theFuzzyParam)
7814 RaiseIfFailed("MakeBoolean", self.BoolOp)
7815 def_names = { 1: "common", 2: "cut", 3: "fuse", 4: "section" }
7816 self._autoPublish(anObj, theName, def_names[theOperation])
7819 ## Perform Common boolean operation on two given shapes.
7820 # @param theShape1 First argument for boolean operation.
7821 # @param theShape2 Second argument for boolean operation.
7822 # @param checkSelfInte The flag that tells if the arguments should
7823 # be checked for self-intersection prior to the operation.
7824 # @param theName Object name; when specified, this parameter is used
7825 # for result publication in the study. Otherwise, if automatic
7826 # publication is switched on, default value is used for result name.
7827 # @param theFuzzyParam The fuzzy parameter to be used for the boolean
7828 # operation. If the value is not positive, no fuzzy tolerance will
7829 # be considered for the boolean operation.
7831 # @note This algorithm doesn't find all types of self-intersections.
7832 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7833 # vertex/face and edge/face intersections. Face/face
7834 # intersections detection is switched off as it is a
7835 # time-consuming operation that gives an impact on performance.
7836 # To find all self-intersections please use
7837 # CheckSelfIntersections() method.
7839 # @return New GEOM.GEOM_Object, containing the result shape.
7841 # @ref tui_common "Example 1"
7842 # \n @ref swig_MakeCommon "Example 2"
7843 def MakeCommon(self, theShape1, theShape2, checkSelfInte=False, theName=None, theFuzzyParam=-1):
7845 Perform Common boolean operation on two given shapes.
7848 theShape1 First argument for boolean operation.
7849 theShape2 Second argument for boolean operation.
7850 checkSelfInte The flag that tells if the arguments should
7851 be checked for self-intersection prior to
7853 theName Object name; when specified, this parameter is used
7854 for result publication in the study. Otherwise, if automatic
7855 publication is switched on, default value is used for result name.
7856 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
7857 If the value is not positive, no fuzzy tolerance will be
7858 considered for the boolean operation.
7861 This algorithm doesn't find all types of self-intersections.
7862 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7863 vertex/face and edge/face intersections. Face/face
7864 intersections detection is switched off as it is a
7865 time-consuming operation that gives an impact on performance.
7866 To find all self-intersections please use
7867 CheckSelfIntersections() method.
7870 New GEOM.GEOM_Object, containing the result shape.
7872 # Example: see GEOM_TestOthers.py
7873 # note: auto-publishing is done in self.MakeBoolean()
7874 return self.MakeBoolean(theShape1, theShape2, 1, checkSelfInte, theName, theFuzzyParam)
7876 ## Perform Cut boolean operation on two given shapes.
7877 # @param theShape1 First argument for boolean operation.
7878 # @param theShape2 Second argument for boolean operation.
7879 # @param checkSelfInte The flag that tells if the arguments should
7880 # be checked for self-intersection prior to the operation.
7881 # @param theName Object name; when specified, this parameter is used
7882 # for result publication in the study. Otherwise, if automatic
7883 # publication is switched on, default value is used for result name.
7884 # @param theFuzzyParam The fuzzy parameter to be used for the boolean
7885 # operation. If the value is not positive, no fuzzy tolerance will
7886 # be considered for the boolean operation.
7888 # @note This algorithm doesn't find all types of self-intersections.
7889 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7890 # vertex/face and edge/face intersections. Face/face
7891 # intersections detection is switched off as it is a
7892 # time-consuming operation that gives an impact on performance.
7893 # To find all self-intersections please use
7894 # CheckSelfIntersections() method.
7896 # @return New GEOM.GEOM_Object, containing the result shape.
7898 # @ref tui_cut "Example 1"
7899 # \n @ref swig_MakeCommon "Example 2"
7900 def MakeCut(self, theShape1, theShape2, checkSelfInte=False, theName=None, theFuzzyParam=-1):
7902 Perform Cut boolean operation on two given shapes.
7905 theShape1 First argument for boolean operation.
7906 theShape2 Second argument for boolean operation.
7907 checkSelfInte The flag that tells if the arguments should
7908 be checked for self-intersection prior to
7910 theName Object name; when specified, this parameter is used
7911 for result publication in the study. Otherwise, if automatic
7912 publication is switched on, default value is used for result name.
7913 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
7914 If the value is not positive, no fuzzy tolerance will be
7915 considered for the boolean operation.
7918 This algorithm doesn't find all types of self-intersections.
7919 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7920 vertex/face and edge/face intersections. Face/face
7921 intersections detection is switched off as it is a
7922 time-consuming operation that gives an impact on performance.
7923 To find all self-intersections please use
7924 CheckSelfIntersections() method.
7927 New GEOM.GEOM_Object, containing the result shape.
7930 # Example: see GEOM_TestOthers.py
7931 # note: auto-publishing is done in self.MakeBoolean()
7932 return self.MakeBoolean(theShape1, theShape2, 2, checkSelfInte, theName, theFuzzyParam)
7934 ## Perform Fuse boolean operation on two given shapes.
7935 # @param theShape1 First argument for boolean operation.
7936 # @param theShape2 Second argument for boolean operation.
7937 # @param checkSelfInte The flag that tells if the arguments should
7938 # be checked for self-intersection prior to the operation.
7939 # @param rmExtraEdges The flag that tells if Remove Extra Edges
7940 # operation should be performed during the operation.
7941 # @param theName Object name; when specified, this parameter is used
7942 # for result publication in the study. Otherwise, if automatic
7943 # publication is switched on, default value is used for result name.
7944 # @param theFuzzyParam The fuzzy parameter to be used for the boolean
7945 # operation. If the value is not positive, no fuzzy tolerance will
7946 # be considered for the boolean operation.
7948 # @note This algorithm doesn't find all types of self-intersections.
7949 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7950 # vertex/face and edge/face intersections. Face/face
7951 # intersections detection is switched off as it is a
7952 # time-consuming operation that gives an impact on performance.
7953 # To find all self-intersections please use
7954 # CheckSelfIntersections() method.
7956 # @return New GEOM.GEOM_Object, containing the result shape.
7958 # @ref tui_fuse "Example 1"
7959 # \n @ref swig_MakeCommon "Example 2"
7960 @ManageTransactions("BoolOp")
7961 def MakeFuse(self, theShape1, theShape2, checkSelfInte=False,
7962 rmExtraEdges=False, theName=None, theFuzzyParam=-1):
7964 Perform Fuse boolean operation on two given shapes.
7967 theShape1 First argument for boolean operation.
7968 theShape2 Second argument for boolean operation.
7969 checkSelfInte The flag that tells if the arguments should
7970 be checked for self-intersection prior to
7972 rmExtraEdges The flag that tells if Remove Extra Edges
7973 operation should be performed during the operation.
7974 theName Object name; when specified, this parameter is used
7975 for result publication in the study. Otherwise, if automatic
7976 publication is switched on, default value is used for result name.
7977 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
7978 If the value is not positive, no fuzzy tolerance will be
7979 considered for the boolean operation.
7982 This algorithm doesn't find all types of self-intersections.
7983 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
7984 vertex/face and edge/face intersections. Face/face
7985 intersections detection is switched off as it is a
7986 time-consuming operation that gives an impact on performance.
7987 To find all self-intersections please use
7988 CheckSelfIntersections() method.
7991 New GEOM.GEOM_Object, containing the result shape.
7994 # Example: see GEOM_TestOthers.py
7995 anObj = self.BoolOp.MakeFuseWithFuzzy(theShape1, theShape2, checkSelfInte,
7996 rmExtraEdges, theFuzzyParam)
7997 RaiseIfFailed("MakeFuse", self.BoolOp)
7998 self._autoPublish(anObj, theName, "fuse")
8001 ## Perform Section boolean operation on two given shapes.
8002 # @param theShape1 First argument for boolean operation.
8003 # @param theShape2 Second argument for boolean operation.
8004 # @param checkSelfInte The flag that tells if the arguments should
8005 # be checked for self-intersection prior to the operation.
8006 # If a self-intersection detected the operation fails.
8007 # @param theName Object name; when specified, this parameter is used
8008 # for result publication in the study. Otherwise, if automatic
8009 # publication is switched on, default value is used for result name.
8010 # @param theFuzzyParam The fuzzy parameter to be used for the boolean
8011 # operation. If the value is not positive, no fuzzy tolerance will
8012 # be considered for the boolean operation.
8013 # @return New GEOM.GEOM_Object, containing the result shape.
8015 # @ref tui_section "Example 1"
8016 # \n @ref swig_MakeCommon "Example 2"
8017 def MakeSection(self, theShape1, theShape2, checkSelfInte=False, theName=None, theFuzzyParam=-1):
8019 Perform Section boolean operation on two given shapes.
8022 theShape1 First argument for boolean operation.
8023 theShape2 Second argument for boolean operation.
8024 checkSelfInte The flag that tells if the arguments should
8025 be checked for self-intersection prior to the operation.
8026 If a self-intersection detected the operation fails.
8027 theName Object name; when specified, this parameter is used
8028 for result publication in the study. Otherwise, if automatic
8029 publication is switched on, default value is used for result name.
8030 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
8031 If the value is not positive, no fuzzy tolerance will be
8032 considered for the boolean operation.
8034 New GEOM.GEOM_Object, containing the result shape.
8037 # Example: see GEOM_TestOthers.py
8038 # note: auto-publishing is done in self.MakeBoolean()
8039 return self.MakeBoolean(theShape1, theShape2, 4, checkSelfInte, theName, theFuzzyParam)
8041 ## Perform Fuse boolean operation on the list of shapes.
8042 # @param theShapesList Shapes to be fused.
8043 # @param checkSelfInte The flag that tells if the arguments should
8044 # be checked for self-intersection prior to the operation.
8045 # @param rmExtraEdges The flag that tells if Remove Extra Edges
8046 # operation should be performed during the operation.
8047 # @param theName Object name; when specified, this parameter is used
8048 # for result publication in the study. Otherwise, if automatic
8049 # publication is switched on, default value is used for result name.
8050 # @param theFuzzyParam The fuzzy parameter to be used for the boolean
8051 # operation. If the value is not positive, no fuzzy tolerance will
8052 # be considered for the boolean operation.
8054 # @note This algorithm doesn't find all types of self-intersections.
8055 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8056 # vertex/face and edge/face intersections. Face/face
8057 # intersections detection is switched off as it is a
8058 # time-consuming operation that gives an impact on performance.
8059 # To find all self-intersections please use
8060 # CheckSelfIntersections() method.
8062 # @return New GEOM.GEOM_Object, containing the result shape.
8064 # @ref tui_fuse "Example 1"
8065 # \n @ref swig_MakeCommon "Example 2"
8066 @ManageTransactions("BoolOp")
8067 def MakeFuseList(self, theShapesList, checkSelfInte=False,
8068 rmExtraEdges=False, theName=None, theFuzzyParam=-1):
8070 Perform Fuse boolean operation on the list of shapes.
8073 theShapesList Shapes to be fused.
8074 checkSelfInte The flag that tells if the arguments should
8075 be checked for self-intersection prior to
8077 rmExtraEdges The flag that tells if Remove Extra Edges
8078 operation should be performed during the operation.
8079 theName Object name; when specified, this parameter is used
8080 for result publication in the study. Otherwise, if automatic
8081 publication is switched on, default value is used for result name.
8082 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
8083 If the value is not positive, no fuzzy tolerance will be
8084 considered for the boolean operation.
8087 This algorithm doesn't find all types of self-intersections.
8088 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8089 vertex/face and edge/face intersections. Face/face
8090 intersections detection is switched off as it is a
8091 time-consuming operation that gives an impact on performance.
8092 To find all self-intersections please use
8093 CheckSelfIntersections() method.
8096 New GEOM.GEOM_Object, containing the result shape.
8099 # Example: see GEOM_TestOthers.py
8100 anObj = self.BoolOp.MakeFuseListWithFuzzy(theShapesList, checkSelfInte,
8101 rmExtraEdges, theFuzzyParam)
8102 RaiseIfFailed("MakeFuseList", self.BoolOp)
8103 self._autoPublish(anObj, theName, "fuse")
8106 ## Perform Common boolean operation on the list of shapes.
8107 # @param theShapesList Shapes for Common operation.
8108 # @param checkSelfInte The flag that tells if the arguments should
8109 # be checked for self-intersection prior to the operation.
8110 # @param theName Object name; when specified, this parameter is used
8111 # for result publication in the study. Otherwise, if automatic
8112 # publication is switched on, default value is used for result name.
8113 # @param theFuzzyParam The fuzzy parameter to be used for the boolean
8114 # operation. If the value is not positive, no fuzzy tolerance will
8115 # be considered for the boolean operation.
8117 # @note This algorithm doesn't find all types of self-intersections.
8118 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8119 # vertex/face and edge/face intersections. Face/face
8120 # intersections detection is switched off as it is a
8121 # time-consuming operation that gives an impact on performance.
8122 # To find all self-intersections please use
8123 # CheckSelfIntersections() method.
8125 # @return New GEOM.GEOM_Object, containing the result shape.
8127 # @ref tui_common "Example 1"
8128 # \n @ref swig_MakeCommon "Example 2"
8129 @ManageTransactions("BoolOp")
8130 def MakeCommonList(self, theShapesList, checkSelfInte=False, theName=None, theFuzzyParam=-1):
8132 Perform Common boolean operation on the list of shapes.
8135 theShapesList Shapes for Common operation.
8136 checkSelfInte The flag that tells if the arguments should
8137 be checked for self-intersection prior to
8139 theName Object name; when specified, this parameter is used
8140 for result publication in the study. Otherwise, if automatic
8141 publication is switched on, default value is used for result name.
8142 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
8143 If the value is not positive, no fuzzy tolerance will be
8144 considered for the boolean operation.
8147 This algorithm doesn't find all types of self-intersections.
8148 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8149 vertex/face and edge/face intersections. Face/face
8150 intersections detection is switched off as it is a
8151 time-consuming operation that gives an impact on performance.
8152 To find all self-intersections please use
8153 CheckSelfIntersections() method.
8156 New GEOM.GEOM_Object, containing the result shape.
8159 # Example: see GEOM_TestOthers.py
8160 anObj = self.BoolOp.MakeCommonListWithFuzzy(theShapesList, checkSelfInte, theFuzzyParam)
8161 RaiseIfFailed("MakeCommonList", self.BoolOp)
8162 self._autoPublish(anObj, theName, "common")
8165 ## Perform Cut boolean operation on one object and the list of tools.
8166 # @param theMainShape The object of the operation.
8167 # @param theShapesList The list of tools of the operation.
8168 # @param checkSelfInte The flag that tells if the arguments should
8169 # be checked for self-intersection prior to the operation.
8170 # @param theName Object name; when specified, this parameter is used
8171 # for result publication in the study. Otherwise, if automatic
8172 # publication is switched on, default value is used for result name.
8173 # @param theFuzzyParam The fuzzy parameter to be used for the boolean
8174 # operation. If the value is not positive, no fuzzy tolerance will
8175 # be considered for the boolean operation.
8177 # @note This algorithm doesn't find all types of self-intersections.
8178 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8179 # vertex/face and edge/face intersections. Face/face
8180 # intersections detection is switched off as it is a
8181 # time-consuming operation that gives an impact on performance.
8182 # To find all self-intersections please use
8183 # CheckSelfIntersections() method.
8185 # @return New GEOM.GEOM_Object, containing the result shape.
8187 # @ref tui_cut "Example 1"
8188 # \n @ref swig_MakeCommon "Example 2"
8189 @ManageTransactions("BoolOp")
8190 def MakeCutList(self, theMainShape, theShapesList, checkSelfInte=False, theName=None, theFuzzyParam=-1):
8192 Perform Cut boolean operation on one object and the list of tools.
8195 theMainShape The object of the operation.
8196 theShapesList The list of tools of the operation.
8197 checkSelfInte The flag that tells if the arguments should
8198 be checked for self-intersection prior to
8200 theName Object name; when specified, this parameter is used
8201 for result publication in the study. Otherwise, if automatic
8202 publication is switched on, default value is used for result name.
8203 theFuzzyParam The fuzzy parameter to be used for the boolean operation.
8204 If the value is not positive, no fuzzy tolerance will be
8205 considered for the boolean operation.
8208 This algorithm doesn't find all types of self-intersections.
8209 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8210 vertex/face and edge/face intersections. Face/face
8211 intersections detection is switched off as it is a
8212 time-consuming operation that gives an impact on performance.
8213 To find all self-intersections please use
8214 CheckSelfIntersections() method.
8217 New GEOM.GEOM_Object, containing the result shape.
8220 # Example: see GEOM_TestOthers.py
8221 anObj = self.BoolOp.MakeCutListWithFuzzy(theMainShape, theShapesList, checkSelfInte, theFuzzyParam)
8222 RaiseIfFailed("MakeCutList", self.BoolOp)
8223 self._autoPublish(anObj, theName, "cut")
8229 ## @addtogroup l3_basic_op
8232 ## Perform partition operation.
8233 # @param ListShapes Shapes to be intersected.
8234 # @param ListTools Shapes to intersect theShapes.
8235 # @param Limit Type of resulting shapes (see ShapeType()).\n
8236 # If this parameter is set to -1 ("Auto"), most appropriate shape limit
8237 # type will be detected automatically.
8238 # @param KeepNonlimitShapes if this parameter == 0, then only shapes of
8239 # target type (equal to Limit) are kept in the result,
8240 # else standalone shapes of lower dimension
8241 # are kept also (if they exist).
8242 # @param theName Object name; when specified, this parameter is used
8243 # for result publication in the study. Otherwise, if automatic
8244 # publication is switched on, default value is used for result name.
8245 # @param theFuzzyParam The fuzzy parameter to be used for the partition
8246 # operation. If the value is not positive, no fuzzy tolerance will
8247 # be considered for the partition operation.
8249 # @note Each compound from ListShapes and ListTools will be exploded
8250 # in order to avoid possible intersection between shapes from this compound.
8252 # After implementation new version of PartitionAlgo (October 2006)
8253 # other parameters are ignored by current functionality. They are kept
8254 # in this function only for support old versions.
8255 # @param ListKeepInside Shapes, outside which the results will be deleted.
8256 # Each shape from theKeepInside must belong to theShapes also.
8257 # @param ListRemoveInside Shapes, inside which the results will be deleted.
8258 # Each shape from theRemoveInside must belong to theShapes also.
8259 # @param RemoveWebs If TRUE, perform Glue 3D algorithm.
8260 # @param ListMaterials Material indices for each shape. Make sense,
8261 # only if theRemoveWebs is TRUE.
8263 # @return New GEOM.GEOM_Object, containing the result shapes.
8265 # @ref tui_partition "Example"
8266 @ManageTransactions("BoolOp")
8267 def MakePartition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
8268 Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[],
8269 KeepNonlimitShapes=0, theName=None, theFuzzyParam=-1):
8271 Perform partition operation.
8274 ListShapes Shapes to be intersected.
8275 ListTools Shapes to intersect theShapes.
8276 Limit Type of resulting shapes (see geompy.ShapeType)
8277 If this parameter is set to -1 ("Auto"), most appropriate shape limit
8278 type will be detected automatically.
8279 KeepNonlimitShapes if this parameter == 0, then only shapes of
8280 target type (equal to Limit) are kept in the result,
8281 else standalone shapes of lower dimension
8282 are kept also (if they exist).
8284 theName Object name; when specified, this parameter is used
8285 for result publication in the study. Otherwise, if automatic
8286 publication is switched on, default value is used for result name.
8288 Each compound from ListShapes and ListTools will be exploded
8289 in order to avoid possible intersection between shapes from
8292 After implementation new version of PartitionAlgo (October 2006) other
8293 parameters are ignored by current functionality. They are kept in this
8294 function only for support old versions.
8297 ListKeepInside Shapes, outside which the results will be deleted.
8298 Each shape from theKeepInside must belong to theShapes also.
8299 ListRemoveInside Shapes, inside which the results will be deleted.
8300 Each shape from theRemoveInside must belong to theShapes also.
8301 RemoveWebs If TRUE, perform Glue 3D algorithm.
8302 ListMaterials Material indices for each shape. Make sense, only if theRemoveWebs is TRUE.
8305 New GEOM.GEOM_Object, containing the result shapes.
8307 # Example: see GEOM_TestAll.py
8308 if Limit == self.ShapeType["AUTO"]:
8309 # automatic detection of the most appropriate shape limit type
8311 for s in ListShapes: lim = min(lim, s.GetMaxShapeType())
8312 Limit = EnumToLong(lim)
8314 anObj = self.BoolOp.MakePartitionWithFuzzy(ListShapes, ListTools,
8315 ListKeepInside, ListRemoveInside,
8316 Limit, RemoveWebs, ListMaterials,
8317 KeepNonlimitShapes, theFuzzyParam)
8318 RaiseIfFailed("MakePartition", self.BoolOp)
8319 self._autoPublish(anObj, theName, "partition")
8322 ## Perform partition operation.
8323 # This method may be useful if it is needed to make a partition for
8324 # compound contains nonintersected shapes. Performance will be better
8325 # since intersection between shapes from compound is not performed.
8327 # Description of all parameters as in previous method MakePartition().
8328 # One additional parameter is provided:
8329 # @param checkSelfInte The flag that tells if the arguments should
8330 # be checked for self-intersection prior to the operation.
8331 # @param theFuzzyParam The fuzzy parameter to be used for the partition
8332 # operation. If the value is not positive, no fuzzy tolerance will
8333 # be considered for the partition operation.
8335 # @note This algorithm doesn't find all types of self-intersections.
8336 # It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8337 # vertex/face and edge/face intersections. Face/face
8338 # intersections detection is switched off as it is a
8339 # time-consuming operation that gives an impact on performance.
8340 # To find all self-intersections please use
8341 # CheckSelfIntersections() method.
8343 # @note Passed compounds (via ListShapes or via ListTools)
8344 # have to consist of nonintersecting shapes.
8346 # @return New GEOM.GEOM_Object, containing the result shapes.
8348 # @ref swig_todo "Example"
8349 @ManageTransactions("BoolOp")
8350 def MakePartitionNonSelfIntersectedShape(self, ListShapes, ListTools=[],
8351 ListKeepInside=[], ListRemoveInside=[],
8352 Limit=ShapeType["AUTO"], RemoveWebs=0,
8353 ListMaterials=[], KeepNonlimitShapes=0,
8354 checkSelfInte=False, theName=None,
8357 Perform partition operation.
8358 This method may be useful if it is needed to make a partition for
8359 compound contains nonintersected shapes. Performance will be better
8360 since intersection between shapes from compound is not performed.
8363 Description of all parameters as in method geompy.MakePartition.
8364 One additional parameter is provided:
8365 checkSelfInte The flag that tells if the arguments should
8366 be checked for self-intersection prior to
8370 This algorithm doesn't find all types of self-intersections.
8371 It is tuned to detect vertex/vertex, vertex/edge, edge/edge,
8372 vertex/face and edge/face intersections. Face/face
8373 intersections detection is switched off as it is a
8374 time-consuming operation that gives an impact on performance.
8375 To find all self-intersections please use
8376 CheckSelfIntersections() method.
8379 Passed compounds (via ListShapes or via ListTools)
8380 have to consist of nonintersecting shapes.
8383 New GEOM.GEOM_Object, containing the result shapes.
8385 if Limit == self.ShapeType["AUTO"]:
8386 # automatic detection of the most appropriate shape limit type
8388 for s in ListShapes: lim = min(lim, s.GetMaxShapeType())
8389 Limit = EnumToLong(lim)
8391 anObj = self.BoolOp.MakePartitionNonSelfIntersectedShapeWithFuzzy(ListShapes, ListTools,
8392 ListKeepInside, ListRemoveInside,
8393 Limit, RemoveWebs, ListMaterials,
8394 KeepNonlimitShapes, checkSelfInte,
8396 RaiseIfFailed("MakePartitionNonSelfIntersectedShape", self.BoolOp)
8397 self._autoPublish(anObj, theName, "partition")
8400 ## See method MakePartition() for more information.
8402 # @ref tui_partition "Example 1"
8403 # \n @ref swig_Partition "Example 2"
8404 def Partition(self, ListShapes, ListTools=[], ListKeepInside=[], ListRemoveInside=[],
8405 Limit=ShapeType["AUTO"], RemoveWebs=0, ListMaterials=[],
8406 KeepNonlimitShapes=0, theName=None, theFuzzyParam=-1):
8408 See method geompy.MakePartition for more information.
8410 # Example: see GEOM_TestOthers.py
8411 # note: auto-publishing is done in self.MakePartition()
8412 anObj = self.MakePartition(ListShapes, ListTools,
8413 ListKeepInside, ListRemoveInside,
8414 Limit, RemoveWebs, ListMaterials,
8415 KeepNonlimitShapes, theName, theFuzzyParam)
8418 ## Perform partition of the Shape with the Plane
8419 # @param theShape Shape to be intersected.
8420 # @param thePlane Tool shape, to intersect theShape.
8421 # @param theName Object name; when specified, this parameter is used
8422 # for result publication in the study. Otherwise, if automatic
8423 # publication is switched on, default value is used for result name.
8424 # @param theFuzzyParam The fuzzy parameter to be used for the partition
8425 # operation. If the value is not positive, no fuzzy tolerance will
8426 # be considered for the partition operation.
8428 # @return New GEOM.GEOM_Object, containing the result shape.
8430 # @note This operation is a shortcut to the more general @ref MakePartition
8431 # operation, where @a theShape specifies single "object" (shape being partitioned)
8432 # and @a thePlane specifies single "tool" (intersector shape). Other parameters of
8433 # @ref MakePartition operation have default values:
8434 # - @a Limit: GEOM::SHAPE (shape limit corresponds to the type of @a theShape)
8435 # - @a KeepNonlimitShapes: 0
8436 # - @a KeepInside, @a RemoveInside, @a RemoveWebs,
8437 # @a Materials (obsolete parameters): empty
8439 # @note I.e. the following two operations are equivalent:
8441 # Result = geompy.MakeHalfPartition(Object, Plane)
8442 # Result = geompy.MakePartition([Object], [Plane])
8445 # @sa MakePartition, MakePartitionNonSelfIntersectedShape
8447 # @ref tui_partition "Example"
8448 @ManageTransactions("BoolOp")
8449 def MakeHalfPartition(self, theShape, thePlane, theName=None, theFuzzyParam=-1):
8451 Perform partition of the Shape with the Plane
8454 theShape Shape to be intersected.
8455 thePlane Tool shape, to intersect theShape.
8456 theName Object name; when specified, this parameter is used
8457 for result publication in the study. Otherwise, if automatic
8458 publication is switched on, default value is used for result name.
8461 New GEOM.GEOM_Object, containing the result shape.
8463 Note: This operation is a shortcut to the more general MakePartition
8464 operation, where theShape specifies single "object" (shape being partitioned)
8465 and thePlane specifies single "tool" (intersector shape). Other parameters of
8466 MakePartition operation have default values:
8467 - Limit: GEOM::SHAPE (shape limit corresponds to the type of theShape)
8468 - KeepNonlimitShapes: 0
8469 - KeepInside, RemoveInside, RemoveWebs, Materials (obsolete parameters): empty
8471 I.e. the following two operations are equivalent:
8472 Result = geompy.MakeHalfPartition(Object, Plane)
8473 Result = geompy.MakePartition([Object], [Plane])
8475 # Example: see GEOM_TestAll.py
8476 anObj = self.BoolOp.MakeHalfPartitionWithFuzzy(theShape, thePlane, theFuzzyParam)
8477 RaiseIfFailed("MakeHalfPartition", self.BoolOp)
8478 self._autoPublish(anObj, theName, "partition")
8481 # end of l3_basic_op
8484 ## @addtogroup l3_transform
8487 ## Translate the given object along the vector, specified
8488 # by its end points.
8489 # @param theObject The object to be translated.
8490 # @param thePoint1 Start point of translation vector.
8491 # @param thePoint2 End point of translation vector.
8492 # @param theCopy Flag used to translate object itself or create a copy.
8493 # @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8494 # new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8495 @ManageTransactions("TrsfOp")
8496 def TranslateTwoPoints(self, theObject, thePoint1, thePoint2, theCopy=False):
8498 Translate the given object along the vector, specified by its end points.
8501 theObject The object to be translated.
8502 thePoint1 Start point of translation vector.
8503 thePoint2 End point of translation vector.
8504 theCopy Flag used to translate object itself or create a copy.
8507 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8508 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8511 anObj = self.TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
8513 anObj = self.TrsfOp.TranslateTwoPoints(theObject, thePoint1, thePoint2)
8514 RaiseIfFailed("TranslateTwoPoints", self.TrsfOp)
8517 ## Translate the given object along the vector, specified
8518 # by its end points, creating its copy before the translation.
8519 # @param theObject The object to be translated.
8520 # @param thePoint1 Start point of translation vector.
8521 # @param thePoint2 End point of translation vector.
8522 # @param theName Object name; when specified, this parameter is used
8523 # for result publication in the study. Otherwise, if automatic
8524 # publication is switched on, default value is used for result name.
8526 # @return New GEOM.GEOM_Object, containing the translated object.
8528 # @ref tui_translation "Example 1"
8529 # \n @ref swig_MakeTranslationTwoPoints "Example 2"
8530 @ManageTransactions("TrsfOp")
8531 def MakeTranslationTwoPoints(self, theObject, thePoint1, thePoint2, theName=None):
8533 Translate the given object along the vector, specified
8534 by its end points, creating its copy before the translation.
8537 theObject The object to be translated.
8538 thePoint1 Start point of translation vector.
8539 thePoint2 End point of translation vector.
8540 theName Object name; when specified, this parameter is used
8541 for result publication in the study. Otherwise, if automatic
8542 publication is switched on, default value is used for result name.
8545 New GEOM.GEOM_Object, containing the translated object.
8547 # Example: see GEOM_TestAll.py
8548 anObj = self.TrsfOp.TranslateTwoPointsCopy(theObject, thePoint1, thePoint2)
8549 RaiseIfFailed("TranslateTwoPointsCopy", self.TrsfOp)
8550 self._autoPublish(anObj, theName, "translated")
8553 ## Translate the given object along the vector, specified by its components.
8554 # @param theObject The object to be translated.
8555 # @param theDX,theDY,theDZ Components of translation vector.
8556 # @param theCopy Flag used to translate object itself or create a copy.
8557 # @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8558 # new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8560 # @ref tui_translation "Example"
8561 @ManageTransactions("TrsfOp")
8562 def TranslateDXDYDZ(self, theObject, theDX, theDY, theDZ, theCopy=False):
8564 Translate the given object along the vector, specified by its components.
8567 theObject The object to be translated.
8568 theDX,theDY,theDZ Components of translation vector.
8569 theCopy Flag used to translate object itself or create a copy.
8572 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8573 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8575 # Example: see GEOM_TestAll.py
8576 theDX, theDY, theDZ, Parameters = ParseParameters(theDX, theDY, theDZ)
8578 anObj = self.TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
8580 anObj = self.TrsfOp.TranslateDXDYDZ(theObject, theDX, theDY, theDZ)
8581 anObj.SetParameters(Parameters)
8582 RaiseIfFailed("TranslateDXDYDZ", self.TrsfOp)
8585 ## Translate the given object along the vector, specified
8586 # by its components, creating its copy before the translation.
8587 # @param theObject The object to be translated.
8588 # @param theDX,theDY,theDZ Components of translation vector.
8589 # @param theName Object name; when specified, this parameter is used
8590 # for result publication in the study. Otherwise, if automatic
8591 # publication is switched on, default value is used for result name.
8593 # @return New GEOM.GEOM_Object, containing the translated object.
8595 # @ref tui_translation "Example"
8596 @ManageTransactions("TrsfOp")
8597 def MakeTranslation(self,theObject, theDX, theDY, theDZ, theName=None):
8599 Translate the given object along the vector, specified
8600 by its components, creating its copy before the translation.
8603 theObject The object to be translated.
8604 theDX,theDY,theDZ Components of translation vector.
8605 theName Object name; when specified, this parameter is used
8606 for result publication in the study. Otherwise, if automatic
8607 publication is switched on, default value is used for result name.
8610 New GEOM.GEOM_Object, containing the translated object.
8612 # Example: see GEOM_TestAll.py
8613 theDX, theDY, theDZ, Parameters = ParseParameters(theDX, theDY, theDZ)
8614 anObj = self.TrsfOp.TranslateDXDYDZCopy(theObject, theDX, theDY, theDZ)
8615 anObj.SetParameters(Parameters)
8616 RaiseIfFailed("TranslateDXDYDZ", self.TrsfOp)
8617 self._autoPublish(anObj, theName, "translated")
8620 ## Translate the given object along the given vector.
8621 # @param theObject The object to be translated.
8622 # @param theVector The translation vector.
8623 # @param theCopy Flag used to translate object itself or create a copy.
8624 # @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8625 # new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8626 @ManageTransactions("TrsfOp")
8627 def TranslateVector(self, theObject, theVector, theCopy=False):
8629 Translate the given object along the given vector.
8632 theObject The object to be translated.
8633 theVector The translation vector.
8634 theCopy Flag used to translate object itself or create a copy.
8637 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8638 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8641 anObj = self.TrsfOp.TranslateVectorCopy(theObject, theVector)
8643 anObj = self.TrsfOp.TranslateVector(theObject, theVector)
8644 RaiseIfFailed("TranslateVector", self.TrsfOp)
8647 ## Translate the given object along the given vector,
8648 # creating its copy before the translation.
8649 # @param theObject The object to be translated.
8650 # @param theVector The translation vector.
8651 # @param theName Object name; when specified, this parameter is used
8652 # for result publication in the study. Otherwise, if automatic
8653 # publication is switched on, default value is used for result name.
8655 # @return New GEOM.GEOM_Object, containing the translated object.
8657 # @ref tui_translation "Example"
8658 @ManageTransactions("TrsfOp")
8659 def MakeTranslationVector(self, theObject, theVector, theName=None):
8661 Translate the given object along the given vector,
8662 creating its copy before the translation.
8665 theObject The object to be translated.
8666 theVector The translation vector.
8667 theName Object name; when specified, this parameter is used
8668 for result publication in the study. Otherwise, if automatic
8669 publication is switched on, default value is used for result name.
8672 New GEOM.GEOM_Object, containing the translated object.
8674 # Example: see GEOM_TestAll.py
8675 anObj = self.TrsfOp.TranslateVectorCopy(theObject, theVector)
8676 RaiseIfFailed("TranslateVectorCopy", self.TrsfOp)
8677 self._autoPublish(anObj, theName, "translated")
8680 ## Translate the given object along the given vector on given distance.
8681 # @param theObject The object to be translated.
8682 # @param theVector The translation vector.
8683 # @param theDistance The translation distance.
8684 # @param theCopy Flag used to translate object itself or create a copy.
8685 # @return Translated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8686 # new GEOM.GEOM_Object, containing the translated object if @a theCopy flag is @c True.
8688 # @ref tui_translation "Example"
8689 @ManageTransactions("TrsfOp")
8690 def TranslateVectorDistance(self, theObject, theVector, theDistance, theCopy=False):
8692 Translate the given object along the given vector on given distance.
8695 theObject The object to be translated.
8696 theVector The translation vector.
8697 theDistance The translation distance.
8698 theCopy Flag used to translate object itself or create a copy.
8701 Translated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8702 new GEOM.GEOM_Object, containing the translated object if theCopy flag is True.
8704 # Example: see GEOM_TestAll.py
8705 theDistance,Parameters = ParseParameters(theDistance)
8706 anObj = self.TrsfOp.TranslateVectorDistance(theObject, theVector, theDistance, theCopy)
8707 RaiseIfFailed("TranslateVectorDistance", self.TrsfOp)
8708 anObj.SetParameters(Parameters)
8711 ## Translate the given object along the given vector on given distance,
8712 # creating its copy before the translation.
8713 # @param theObject The object to be translated.
8714 # @param theVector The translation vector.
8715 # @param theDistance The translation distance.
8716 # @param theName Object name; when specified, this parameter is used
8717 # for result publication in the study. Otherwise, if automatic
8718 # publication is switched on, default value is used for result name.
8720 # @return New GEOM.GEOM_Object, containing the translated object.
8722 # @ref tui_translation "Example"
8723 @ManageTransactions("TrsfOp")
8724 def MakeTranslationVectorDistance(self, theObject, theVector, theDistance, theName=None):
8726 Translate the given object along the given vector on given distance,
8727 creating its copy before the translation.
8730 theObject The object to be translated.
8731 theVector The translation vector.
8732 theDistance The translation distance.
8733 theName Object name; when specified, this parameter is used
8734 for result publication in the study. Otherwise, if automatic
8735 publication is switched on, default value is used for result name.
8738 New GEOM.GEOM_Object, containing the translated object.
8740 # Example: see GEOM_TestAll.py
8741 theDistance,Parameters = ParseParameters(theDistance)
8742 anObj = self.TrsfOp.TranslateVectorDistance(theObject, theVector, theDistance, 1)
8743 RaiseIfFailed("TranslateVectorDistance", self.TrsfOp)
8744 anObj.SetParameters(Parameters)
8745 self._autoPublish(anObj, theName, "translated")
8748 ## Rotate the given object around the given axis on the given angle.
8749 # @param theObject The object to be rotated.
8750 # @param theAxis Rotation axis.
8751 # @param theAngle Rotation angle in radians.
8752 # @param theCopy Flag used to rotate object itself or create a copy.
8754 # @return Rotated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8755 # new GEOM.GEOM_Object, containing the rotated object if @a theCopy flag is @c True.
8757 # @ref tui_rotation "Example"
8758 @ManageTransactions("TrsfOp")
8759 def Rotate(self, theObject, theAxis, theAngle, theCopy=False):
8761 Rotate the given object around the given axis on the given angle.
8764 theObject The object to be rotated.
8765 theAxis Rotation axis.
8766 theAngle Rotation angle in radians.
8767 theCopy Flag used to rotate object itself or create a copy.
8770 Rotated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8771 new GEOM.GEOM_Object, containing the rotated object if theCopy flag is True.
8773 # Example: see GEOM_TestAll.py
8775 if isinstance(theAngle,str):
8777 theAngle, Parameters = ParseParameters(theAngle)
8779 theAngle = theAngle*math.pi/180.0
8781 anObj = self.TrsfOp.RotateCopy(theObject, theAxis, theAngle)
8783 anObj = self.TrsfOp.Rotate(theObject, theAxis, theAngle)
8784 RaiseIfFailed("Rotate", self.TrsfOp)
8785 anObj.SetParameters(Parameters)
8788 ## Rotate the given object around the given axis
8789 # on the given angle, creating its copy before the rotation.
8790 # @param theObject The object to be rotated.
8791 # @param theAxis Rotation axis.
8792 # @param theAngle Rotation angle in radians.
8793 # @param theName Object name; when specified, this parameter is used
8794 # for result publication in the study. Otherwise, if automatic
8795 # publication is switched on, default value is used for result name.
8797 # @return New GEOM.GEOM_Object, containing the rotated object.
8799 # @ref tui_rotation "Example"
8800 @ManageTransactions("TrsfOp")
8801 def MakeRotation(self, theObject, theAxis, theAngle, theName=None):
8803 Rotate the given object around the given axis
8804 on the given angle, creating its copy before the rotatation.
8807 theObject The object to be rotated.
8808 theAxis Rotation axis.
8809 theAngle Rotation angle in radians.
8810 theName Object name; when specified, this parameter is used
8811 for result publication in the study. Otherwise, if automatic
8812 publication is switched on, default value is used for result name.
8815 New GEOM.GEOM_Object, containing the rotated object.
8817 # Example: see GEOM_TestAll.py
8819 if isinstance(theAngle,str):
8821 theAngle, Parameters = ParseParameters(theAngle)
8823 theAngle = theAngle*math.pi/180.0
8824 anObj = self.TrsfOp.RotateCopy(theObject, theAxis, theAngle)
8825 RaiseIfFailed("RotateCopy", self.TrsfOp)
8826 anObj.SetParameters(Parameters)
8827 self._autoPublish(anObj, theName, "rotated")
8830 ## Rotate given object around vector perpendicular to plane
8831 # containing three points.
8832 # @param theObject The object to be rotated.
8833 # @param theCentPoint central point the axis is the vector perpendicular to the plane
8834 # containing the three points.
8835 # @param thePoint1,thePoint2 points in a perpendicular plane of the axis.
8836 # @param theCopy Flag used to rotate object itself or create a copy.
8837 # @return Rotated @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8838 # new GEOM.GEOM_Object, containing the rotated object if @a theCopy flag is @c True.
8839 @ManageTransactions("TrsfOp")
8840 def RotateThreePoints(self, theObject, theCentPoint, thePoint1, thePoint2, theCopy=False):
8842 Rotate given object around vector perpendicular to plane
8843 containing three points.
8846 theObject The object to be rotated.
8847 theCentPoint central point the axis is the vector perpendicular to the plane
8848 containing the three points.
8849 thePoint1,thePoint2 points in a perpendicular plane of the axis.
8850 theCopy Flag used to rotate object itself or create a copy.
8853 Rotated theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8854 new GEOM.GEOM_Object, containing the rotated object if theCopy flag is True.
8857 anObj = self.TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
8859 anObj = self.TrsfOp.RotateThreePoints(theObject, theCentPoint, thePoint1, thePoint2)
8860 RaiseIfFailed("RotateThreePoints", self.TrsfOp)
8863 ## Rotate given object around vector perpendicular to plane
8864 # containing three points, creating its copy before the rotatation.
8865 # @param theObject The object to be rotated.
8866 # @param theCentPoint central point the axis is the vector perpendicular to the plane
8867 # containing the three points.
8868 # @param thePoint1,thePoint2 in a perpendicular plane of the axis.
8869 # @param theName Object name; when specified, this parameter is used
8870 # for result publication in the study. Otherwise, if automatic
8871 # publication is switched on, default value is used for result name.
8873 # @return New GEOM.GEOM_Object, containing the rotated object.
8875 # @ref tui_rotation "Example"
8876 @ManageTransactions("TrsfOp")
8877 def MakeRotationThreePoints(self, theObject, theCentPoint, thePoint1, thePoint2, theName=None):
8879 Rotate given object around vector perpendicular to plane
8880 containing three points, creating its copy before the rotatation.
8883 theObject The object to be rotated.
8884 theCentPoint central point the axis is the vector perpendicular to the plane
8885 containing the three points.
8886 thePoint1,thePoint2 in a perpendicular plane of the axis.
8887 theName Object name; when specified, this parameter is used
8888 for result publication in the study. Otherwise, if automatic
8889 publication is switched on, default value is used for result name.
8892 New GEOM.GEOM_Object, containing the rotated object.
8894 # Example: see GEOM_TestAll.py
8895 anObj = self.TrsfOp.RotateThreePointsCopy(theObject, theCentPoint, thePoint1, thePoint2)
8896 RaiseIfFailed("RotateThreePointsCopy", self.TrsfOp)
8897 self._autoPublish(anObj, theName, "rotated")
8900 ## Scale the given object by the specified factor.
8901 # @param theObject The object to be scaled.
8902 # @param thePoint Center point for scaling.
8903 # Passing None for it means scaling relatively the origin of global CS.
8904 # @param theFactor Scaling factor value.
8905 # @param theCopy Flag used to scale object itself or create a copy.
8906 # @return Scaled @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8907 # new GEOM.GEOM_Object, containing the scaled object if @a theCopy flag is @c True.
8908 @ManageTransactions("TrsfOp")
8909 def Scale(self, theObject, thePoint, theFactor, theCopy=False):
8911 Scale the given object by the specified factor.
8914 theObject The object to be scaled.
8915 thePoint Center point for scaling.
8916 Passing None for it means scaling relatively the origin of global CS.
8917 theFactor Scaling factor value.
8918 theCopy Flag used to scale object itself or create a copy.
8921 Scaled theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8922 new GEOM.GEOM_Object, containing the scaled object if theCopy flag is True.
8924 # Example: see GEOM_TestAll.py
8925 theFactor, Parameters = ParseParameters(theFactor)
8927 anObj = self.TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
8929 anObj = self.TrsfOp.ScaleShape(theObject, thePoint, theFactor)
8930 RaiseIfFailed("Scale", self.TrsfOp)
8931 anObj.SetParameters(Parameters)
8934 ## Scale the given object by the factor, creating its copy before the scaling.
8935 # @param theObject The object to be scaled.
8936 # @param thePoint Center point for scaling.
8937 # Passing None for it means scaling relatively the origin of global CS.
8938 # @param theFactor Scaling factor value.
8939 # @param theName Object name; when specified, this parameter is used
8940 # for result publication in the study. Otherwise, if automatic
8941 # publication is switched on, default value is used for result name.
8943 # @return New GEOM.GEOM_Object, containing the scaled shape.
8945 # @ref tui_scale "Example"
8946 @ManageTransactions("TrsfOp")
8947 def MakeScaleTransform(self, theObject, thePoint, theFactor, theName=None):
8949 Scale the given object by the factor, creating its copy before the scaling.
8952 theObject The object to be scaled.
8953 thePoint Center point for scaling.
8954 Passing None for it means scaling relatively the origin of global CS.
8955 theFactor Scaling factor value.
8956 theName Object name; when specified, this parameter is used
8957 for result publication in the study. Otherwise, if automatic
8958 publication is switched on, default value is used for result name.
8961 New GEOM.GEOM_Object, containing the scaled shape.
8963 # Example: see GEOM_TestAll.py
8964 theFactor, Parameters = ParseParameters(theFactor)
8965 anObj = self.TrsfOp.ScaleShapeCopy(theObject, thePoint, theFactor)
8966 RaiseIfFailed("ScaleShapeCopy", self.TrsfOp)
8967 anObj.SetParameters(Parameters)
8968 self._autoPublish(anObj, theName, "scaled")
8971 ## Scale the given object by different factors along coordinate axes.
8972 # @param theObject The object to be scaled.
8973 # @param thePoint Center point for scaling.
8974 # Passing None for it means scaling relatively the origin of global CS.
8975 # @param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8976 # @param theCopy Flag used to scale object itself or create a copy.
8977 # @return Scaled @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
8978 # new GEOM.GEOM_Object, containing the scaled object if @a theCopy flag is @c True.
8979 @ManageTransactions("TrsfOp")
8980 def ScaleAlongAxes(self, theObject, thePoint, theFactorX, theFactorY, theFactorZ, theCopy=False):
8982 Scale the given object by different factors along coordinate axes.
8985 theObject The object to be scaled.
8986 thePoint Center point for scaling.
8987 Passing None for it means scaling relatively the origin of global CS.
8988 theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
8989 theCopy Flag used to scale object itself or create a copy.
8992 Scaled theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
8993 new GEOM.GEOM_Object, containing the scaled object if theCopy flag is True.
8995 # Example: see GEOM_TestAll.py
8996 theFactorX, theFactorY, theFactorZ, Parameters = ParseParameters(theFactorX, theFactorY, theFactorZ)
8998 anObj = self.TrsfOp.ScaleShapeAlongAxesCopy(theObject, thePoint,
8999 theFactorX, theFactorY, theFactorZ)
9001 anObj = self.TrsfOp.ScaleShapeAlongAxes(theObject, thePoint,
9002 theFactorX, theFactorY, theFactorZ)
9003 RaiseIfFailed("ScaleAlongAxes", self.TrsfOp)
9004 anObj.SetParameters(Parameters)
9007 ## Scale the given object by different factors along coordinate axes,
9008 # creating its copy before the scaling.
9009 # @param theObject The object to be scaled.
9010 # @param thePoint Center point for scaling.
9011 # Passing None for it means scaling relatively the origin of global CS.
9012 # @param theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
9013 # @param theName Object name; when specified, this parameter is used
9014 # for result publication in the study. Otherwise, if automatic
9015 # publication is switched on, default value is used for result name.
9017 # @return New GEOM.GEOM_Object, containing the scaled shape.
9019 # @ref swig_scale "Example"
9020 @ManageTransactions("TrsfOp")
9021 def MakeScaleAlongAxes(self, theObject, thePoint, theFactorX, theFactorY, theFactorZ, theName=None):
9023 Scale the given object by different factors along coordinate axes,
9024 creating its copy before the scaling.
9027 theObject The object to be scaled.
9028 thePoint Center point for scaling.
9029 Passing None for it means scaling relatively the origin of global CS.
9030 theFactorX,theFactorY,theFactorZ Scaling factors along each axis.
9031 theName Object name; when specified, this parameter is used
9032 for result publication in the study. Otherwise, if automatic
9033 publication is switched on, default value is used for result name.
9036 New GEOM.GEOM_Object, containing the scaled shape.
9038 # Example: see GEOM_TestAll.py
9039 theFactorX, theFactorY, theFactorZ, Parameters = ParseParameters(theFactorX, theFactorY, theFactorZ)
9040 anObj = self.TrsfOp.ScaleShapeAlongAxesCopy(theObject, thePoint,
9041 theFactorX, theFactorY, theFactorZ)
9042 RaiseIfFailed("MakeScaleAlongAxes", self.TrsfOp)
9043 anObj.SetParameters(Parameters)
9044 self._autoPublish(anObj, theName, "scaled")
9047 ## Mirror an object relatively the given plane.
9048 # @param theObject The object to be mirrored.
9049 # @param thePlane Plane of symmetry.
9050 # @param theCopy Flag used to mirror object itself or create a copy.
9051 # @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9052 # new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
9053 @ManageTransactions("TrsfOp")
9054 def MirrorByPlane(self, theObject, thePlane, theCopy=False):
9056 Mirror an object relatively the given plane.
9059 theObject The object to be mirrored.
9060 thePlane Plane of symmetry.
9061 theCopy Flag used to mirror object itself or create a copy.
9064 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9065 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
9068 anObj = self.TrsfOp.MirrorPlaneCopy(theObject, thePlane)
9070 anObj = self.TrsfOp.MirrorPlane(theObject, thePlane)
9071 RaiseIfFailed("MirrorByPlane", self.TrsfOp)
9074 ## Create an object, symmetrical
9075 # to the given one relatively the given plane.
9076 # @param theObject The object to be mirrored.
9077 # @param thePlane Plane of symmetry.
9078 # @param theName Object name; when specified, this parameter is used
9079 # for result publication in the study. Otherwise, if automatic
9080 # publication is switched on, default value is used for result name.
9082 # @return New GEOM.GEOM_Object, containing the mirrored shape.
9084 # @ref tui_mirror "Example"
9085 @ManageTransactions("TrsfOp")
9086 def MakeMirrorByPlane(self, theObject, thePlane, theName=None):
9088 Create an object, symmetrical to the given one relatively the given plane.
9091 theObject The object to be mirrored.
9092 thePlane Plane of symmetry.
9093 theName Object name; when specified, this parameter is used
9094 for result publication in the study. Otherwise, if automatic
9095 publication is switched on, default value is used for result name.
9098 New GEOM.GEOM_Object, containing the mirrored shape.
9100 # Example: see GEOM_TestAll.py
9101 anObj = self.TrsfOp.MirrorPlaneCopy(theObject, thePlane)
9102 RaiseIfFailed("MirrorPlaneCopy", self.TrsfOp)
9103 self._autoPublish(anObj, theName, "mirrored")
9106 ## Mirror an object relatively the given axis.
9107 # @param theObject The object to be mirrored.
9108 # @param theAxis Axis of symmetry.
9109 # @param theCopy Flag used to mirror object itself or create a copy.
9110 # @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9111 # new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
9112 @ManageTransactions("TrsfOp")
9113 def MirrorByAxis(self, theObject, theAxis, theCopy=False):
9115 Mirror an object relatively the given axis.
9118 theObject The object to be mirrored.
9119 theAxis Axis of symmetry.
9120 theCopy Flag used to mirror object itself or create a copy.
9123 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9124 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
9127 anObj = self.TrsfOp.MirrorAxisCopy(theObject, theAxis)
9129 anObj = self.TrsfOp.MirrorAxis(theObject, theAxis)
9130 RaiseIfFailed("MirrorByAxis", self.TrsfOp)
9133 ## Create an object, symmetrical
9134 # to the given one relatively the given axis.
9135 # @param theObject The object to be mirrored.
9136 # @param theAxis Axis of symmetry.
9137 # @param theName Object name; when specified, this parameter is used
9138 # for result publication in the study. Otherwise, if automatic
9139 # publication is switched on, default value is used for result name.
9141 # @return New GEOM.GEOM_Object, containing the mirrored shape.
9143 # @ref tui_mirror "Example"
9144 @ManageTransactions("TrsfOp")
9145 def MakeMirrorByAxis(self, theObject, theAxis, theName=None):
9147 Create an object, symmetrical to the given one relatively the given axis.
9150 theObject The object to be mirrored.
9151 theAxis Axis of symmetry.
9152 theName Object name; when specified, this parameter is used
9153 for result publication in the study. Otherwise, if automatic
9154 publication is switched on, default value is used for result name.
9157 New GEOM.GEOM_Object, containing the mirrored shape.
9159 # Example: see GEOM_TestAll.py
9160 anObj = self.TrsfOp.MirrorAxisCopy(theObject, theAxis)
9161 RaiseIfFailed("MirrorAxisCopy", self.TrsfOp)
9162 self._autoPublish(anObj, theName, "mirrored")
9165 ## Mirror an object relatively the given point.
9166 # @param theObject The object to be mirrored.
9167 # @param thePoint Point of symmetry.
9168 # @param theCopy Flag used to mirror object itself or create a copy.
9169 # @return Mirrored @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9170 # new GEOM.GEOM_Object, containing the mirrored object if @a theCopy flag is @c True.
9171 @ManageTransactions("TrsfOp")
9172 def MirrorByPoint(self, theObject, thePoint, theCopy=False):
9174 Mirror an object relatively the given point.
9177 theObject The object to be mirrored.
9178 thePoint Point of symmetry.
9179 theCopy Flag used to mirror object itself or create a copy.
9182 Mirrored theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9183 new GEOM.GEOM_Object, containing the mirrored object if theCopy flag is True.
9185 # Example: see GEOM_TestAll.py
9187 anObj = self.TrsfOp.MirrorPointCopy(theObject, thePoint)
9189 anObj = self.TrsfOp.MirrorPoint(theObject, thePoint)
9190 RaiseIfFailed("MirrorByPoint", self.TrsfOp)
9193 ## Create an object, symmetrical
9194 # to the given one relatively the given point.
9195 # @param theObject The object to be mirrored.
9196 # @param thePoint Point of symmetry.
9197 # @param theName Object name; when specified, this parameter is used
9198 # for result publication in the study. Otherwise, if automatic
9199 # publication is switched on, default value is used for result name.
9201 # @return New GEOM.GEOM_Object, containing the mirrored shape.
9203 # @ref tui_mirror "Example"
9204 @ManageTransactions("TrsfOp")
9205 def MakeMirrorByPoint(self, theObject, thePoint, theName=None):
9207 Create an object, symmetrical
9208 to the given one relatively the given point.
9211 theObject The object to be mirrored.
9212 thePoint Point of symmetry.
9213 theName Object name; when specified, this parameter is used
9214 for result publication in the study. Otherwise, if automatic
9215 publication is switched on, default value is used for result name.
9218 New GEOM.GEOM_Object, containing the mirrored shape.
9220 # Example: see GEOM_TestAll.py
9221 anObj = self.TrsfOp.MirrorPointCopy(theObject, thePoint)
9222 RaiseIfFailed("MirrorPointCopy", self.TrsfOp)
9223 self._autoPublish(anObj, theName, "mirrored")
9226 ## Modify the location of the given object.
9227 # @param theObject The object to be displaced.
9228 # @param theStartLCS Coordinate system to perform displacement from it.\n
9229 # If \a theStartLCS is NULL, displacement
9230 # will be performed from global CS.\n
9231 # If \a theObject itself is used as \a theStartLCS,
9232 # its location will be changed to \a theEndLCS.
9233 # @param theEndLCS Coordinate system to perform displacement to it.
9234 # @param theCopy Flag used to displace object itself or create a copy.
9235 # @return Displaced @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9236 # new GEOM.GEOM_Object, containing the displaced object if @a theCopy flag is @c True.
9237 @ManageTransactions("TrsfOp")
9238 def Position(self, theObject, theStartLCS, theEndLCS, theCopy=False):
9240 Modify the Location of the given object by LCS, creating its copy before the setting.
9243 theObject The object to be displaced.
9244 theStartLCS Coordinate system to perform displacement from it.
9245 If theStartLCS is NULL, displacement
9246 will be performed from global CS.
9247 If theObject itself is used as theStartLCS,
9248 its location will be changed to theEndLCS.
9249 theEndLCS Coordinate system to perform displacement to it.
9250 theCopy Flag used to displace object itself or create a copy.
9253 Displaced theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9254 new GEOM.GEOM_Object, containing the displaced object if theCopy flag is True.
9256 # Example: see GEOM_TestAll.py
9258 anObj = self.TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
9260 anObj = self.TrsfOp.PositionShape(theObject, theStartLCS, theEndLCS)
9261 RaiseIfFailed("Displace", self.TrsfOp)
9264 ## Modify the Location of the given object by LCS,
9265 # creating its copy before the setting.
9266 # @param theObject The object to be displaced.
9267 # @param theStartLCS Coordinate system to perform displacement from it.\n
9268 # If \a theStartLCS is NULL, displacement
9269 # will be performed from global CS.\n
9270 # If \a theObject itself is used as \a theStartLCS,
9271 # its location will be changed to \a theEndLCS.
9272 # @param theEndLCS Coordinate system to perform displacement to it.
9273 # @param theName Object name; when specified, this parameter is used
9274 # for result publication in the study. Otherwise, if automatic
9275 # publication is switched on, default value is used for result name.
9277 # @return New GEOM.GEOM_Object, containing the displaced shape.
9279 # @ref tui_modify_location "Example"
9280 @ManageTransactions("TrsfOp")
9281 def MakePosition(self, theObject, theStartLCS, theEndLCS, theName=None):
9283 Modify the Location of the given object by LCS, creating its copy before the setting.
9286 theObject The object to be displaced.
9287 theStartLCS Coordinate system to perform displacement from it.
9288 If theStartLCS is NULL, displacement
9289 will be performed from global CS.
9290 If theObject itself is used as theStartLCS,
9291 its location will be changed to theEndLCS.
9292 theEndLCS Coordinate system to perform displacement to it.
9293 theName Object name; when specified, this parameter is used
9294 for result publication in the study. Otherwise, if automatic
9295 publication is switched on, default value is used for result name.
9298 New GEOM.GEOM_Object, containing the displaced shape.
9301 # create local coordinate systems
9302 cs1 = geompy.MakeMarker( 0, 0, 0, 1,0,0, 0,1,0)
9303 cs2 = geompy.MakeMarker(30,40,40, 1,0,0, 0,1,0)
9304 # modify the location of the given object
9305 position = geompy.MakePosition(cylinder, cs1, cs2)
9307 # Example: see GEOM_TestAll.py
9308 anObj = self.TrsfOp.PositionShapeCopy(theObject, theStartLCS, theEndLCS)
9309 RaiseIfFailed("PositionShapeCopy", self.TrsfOp)
9310 self._autoPublish(anObj, theName, "displaced")
9313 ## Modify the Location of the given object by Path.
9314 # @param theObject The object to be displaced.
9315 # @param thePath Wire or Edge along that the object will be translated.
9316 # @param theDistance progress of Path (0 = start location, 1 = end of path location).
9317 # @param theCopy is to create a copy objects if true.
9318 # @param theReverse 0 - for usual direction, 1 - to reverse path direction.
9319 # @return Displaced @a theObject (GEOM.GEOM_Object) if @a theCopy is @c False or
9320 # new GEOM.GEOM_Object, containing the displaced shape if @a theCopy is @c True.
9322 # @ref tui_modify_location "Example"
9323 @ManageTransactions("TrsfOp")
9324 def PositionAlongPath(self,theObject, thePath, theDistance, theCopy, theReverse):
9326 Modify the Location of the given object by Path.
9329 theObject The object to be displaced.
9330 thePath Wire or Edge along that the object will be translated.
9331 theDistance progress of Path (0 = start location, 1 = end of path location).
9332 theCopy is to create a copy objects if true.
9333 theReverse 0 - for usual direction, 1 - to reverse path direction.
9336 Displaced theObject (GEOM.GEOM_Object) if theCopy is False or
9337 new GEOM.GEOM_Object, containing the displaced shape if theCopy is True.
9340 position = geompy.PositionAlongPath(cylinder, circle, 0.75, 1, 1)
9342 # Example: see GEOM_TestAll.py
9343 anObj = self.TrsfOp.PositionAlongPath(theObject, thePath, theDistance, theCopy, theReverse)
9344 RaiseIfFailed("PositionAlongPath", self.TrsfOp)
9347 ## Modify the Location of the given object by Path, creating its copy before the operation.
9348 # @param theObject The object to be displaced.
9349 # @param thePath Wire or Edge along that the object will be translated.
9350 # @param theDistance progress of Path (0 = start location, 1 = end of path location).
9351 # @param theReverse 0 - for usual direction, 1 - to reverse path direction.
9352 # @param theName Object name; when specified, this parameter is used
9353 # for result publication in the study. Otherwise, if automatic
9354 # publication is switched on, default value is used for result name.
9356 # @return New GEOM.GEOM_Object, containing the displaced shape.
9357 @ManageTransactions("TrsfOp")
9358 def MakePositionAlongPath(self, theObject, thePath, theDistance, theReverse, theName=None):
9360 Modify the Location of the given object by Path, creating its copy before the operation.
9363 theObject The object to be displaced.
9364 thePath Wire or Edge along that the object will be translated.
9365 theDistance progress of Path (0 = start location, 1 = end of path location).
9366 theReverse 0 - for usual direction, 1 - to reverse path direction.
9367 theName Object name; when specified, this parameter is used
9368 for result publication in the study. Otherwise, if automatic
9369 publication is switched on, default value is used for result name.
9372 New GEOM.GEOM_Object, containing the displaced shape.
9374 # Example: see GEOM_TestAll.py
9375 anObj = self.TrsfOp.PositionAlongPath(theObject, thePath, theDistance, 1, theReverse)
9376 RaiseIfFailed("PositionAlongPath", self.TrsfOp)
9377 self._autoPublish(anObj, theName, "displaced")
9380 ## Offset given shape.
9381 # @param theObject The base object for the offset.
9382 # @param theOffset Offset value.
9383 # @param theCopy Flag used to offset object itself or create a copy.
9384 # @return Modified @a theObject (GEOM.GEOM_Object) if @a theCopy flag is @c False (default) or
9385 # new GEOM.GEOM_Object, containing the result of offset operation if @a theCopy flag is @c True.
9386 @ManageTransactions("TrsfOp")
9387 def Offset(self, theObject, theOffset, theCopy=False):
9392 theObject The base object for the offset.
9393 theOffset Offset value.
9394 theCopy Flag used to offset object itself or create a copy.
9397 Modified theObject (GEOM.GEOM_Object) if theCopy flag is False (default) or
9398 new GEOM.GEOM_Object, containing the result of offset operation if theCopy flag is True.
9400 theOffset, Parameters = ParseParameters(theOffset)
9402 anObj = self.TrsfOp.OffsetShapeCopy(theObject, theOffset, True)
9404 anObj = self.TrsfOp.OffsetShape(theObject, theOffset, True)
9405 RaiseIfFailed("Offset", self.TrsfOp)
9406 anObj.SetParameters(Parameters)
9409 ## Create new object as offset of the given one. Gap between two adjacent
9410 # offset surfaces is filled by a pipe.
9411 # @param theObject The base object for the offset.
9412 # @param theOffset Offset value.
9413 # @param theName Object name; when specified, this parameter is used
9414 # for result publication in the study. Otherwise, if automatic
9415 # publication is switched on, default value is used for result name.
9417 # @return New GEOM.GEOM_Object, containing the offset object.
9419 # @sa MakeOffsetIntersectionJoin
9420 # @ref tui_offset "Example"
9421 @ManageTransactions("TrsfOp")
9422 def MakeOffset(self, theObject, theOffset, theName=None):
9424 Create new object as offset of the given one. Gap between adjacent
9425 offset surfaces is filled by a pipe.
9428 theObject The base object for the offset.
9429 theOffset Offset value.
9430 theName Object name; when specified, this parameter is used
9431 for result publication in the study. Otherwise, if automatic
9432 publication is switched on, default value is used for result name.
9435 New GEOM.GEOM_Object, containing the offset object.
9438 box = geompy.MakeBox(20, 20, 20, 200, 200, 200)
9439 # create a new object as offset of the given object
9440 offset = geompy.MakeOffset(box, 70.)
9442 # Example: see GEOM_TestAll.py
9443 theOffset, Parameters = ParseParameters(theOffset)
9444 anObj = self.TrsfOp.OffsetShapeCopy( theObject, theOffset, True )
9445 RaiseIfFailed("OffsetShapeCopy", self.TrsfOp)
9446 anObj.SetParameters(Parameters)
9447 self._autoPublish(anObj, theName, "offset")
9450 ## Create new object as offset of the given one. Gap between adjacent
9451 # offset surfaces is filled by extending and intersecting them.
9452 # @param theObject The base object for the offset.
9453 # @param theOffset Offset value.
9454 # @param theName Object name; when specified, this parameter is used
9455 # for result publication in the study. Otherwise, if automatic
9456 # publication is switched on, default value is used for result name.
9458 # @return New GEOM.GEOM_Object, containing the offset object.
9461 # @ref tui_offset "Example"
9462 @ManageTransactions("TrsfOp")
9463 def MakeOffsetIntersectionJoin(self, theObject, theOffset, theName=None):
9465 Create new object as offset of the given one. Gap between adjacent
9466 offset surfaces is filled by extending and intersecting them.
9469 theObject The base object for the offset.
9470 theOffset Offset value.
9471 theName Object name; when specified, this parameter is used
9472 for result publication in the study. Otherwise, if automatic
9473 publication is switched on, default value is used for result name.
9476 New GEOM.GEOM_Object, containing the offset object.
9479 box = geompy.MakeBox(20, 20, 20, 200, 200, 200)
9480 # create a new box extended by 70
9481 offset = geompy.MakeOffsetIntersectionJoin(box, 70.)
9483 # Example: see GEOM_TestAll.py
9484 theOffset, Parameters = ParseParameters( theOffset )
9485 anObj = self.TrsfOp.OffsetShapeCopy( theObject, theOffset, False )
9486 RaiseIfFailed("OffsetShapeCopy", self.TrsfOp)
9487 anObj.SetParameters(Parameters)
9488 self._autoPublish(anObj, theName, "offset")
9491 ## Create new object as projection of the given one on another.
9492 # @param theSource The source object for the projection. It can be a point, edge or wire.
9493 # Edge and wire are acceptable if @a theTarget is a face.
9494 # @param theTarget The target object. It can be planar or cylindrical face, edge or wire.
9495 # @param theName Object name; when specified, this parameter is used
9496 # for result publication in the study. Otherwise, if automatic
9497 # publication is switched on, default value is used for result name.
9499 # @return New GEOM.GEOM_Object, containing the projection.
9501 # @ref tui_projection "Example"
9502 @ManageTransactions("TrsfOp")
9503 def MakeProjection(self, theSource, theTarget, theName=None):
9505 Create new object as projection of the given one on another.
9508 theSource The source object for the projection. It can be a point, edge or wire.
9509 Edge and wire are acceptable if theTarget is a face.
9510 theTarget The target object. It can be planar or cylindrical face, edge or wire.
9511 theName Object name; when specified, this parameter is used
9512 for result publication in the study. Otherwise, if automatic
9513 publication is switched on, default value is used for result name.
9516 New GEOM.GEOM_Object, containing the projection.
9518 # Example: see GEOM_TestAll.py
9519 anObj = self.TrsfOp.ProjectShapeCopy(theSource, theTarget)
9520 RaiseIfFailed("ProjectShapeCopy", self.TrsfOp)
9521 self._autoPublish(anObj, theName, "projection")
9524 ## Create a projection of the given point on a wire or an edge.
9525 # If there are no solutions or there are 2 or more solutions It throws an
9527 # @param thePoint the point to be projected.
9528 # @param theWire the wire. The edge is accepted as well.
9529 # @param theName Object name; when specified, this parameter is used
9530 # for result publication in the study. Otherwise, if automatic
9531 # publication is switched on, default value is used for result name.
9533 # @return [\a u, \a PointOnEdge, \a EdgeInWireIndex]
9534 # \n \a u: The parameter of projection point on edge.
9535 # \n \a PointOnEdge: The projection point.
9536 # \n \a EdgeInWireIndex: The index of an edge in a wire.
9538 # @ref tui_projection "Example"
9539 @ManageTransactions("TrsfOp")
9540 def MakeProjectionOnWire(self, thePoint, theWire, theName=None):
9542 Create a projection of the given point on a wire or an edge.
9543 If there are no solutions or there are 2 or more solutions It throws an
9547 thePoint the point to be projected.
9548 theWire the wire. The edge is accepted as well.
9549 theName Object name; when specified, this parameter is used
9550 for result publication in the study. Otherwise, if automatic
9551 publication is switched on, default value is used for result name.
9554 [u, PointOnEdge, EdgeInWireIndex]
9555 u: The parameter of projection point on edge.
9556 PointOnEdge: The projection point.
9557 EdgeInWireIndex: The index of an edge in a wire.
9559 # Example: see GEOM_TestAll.py
9560 anObj = self.TrsfOp.ProjectPointOnWire(thePoint, theWire)
9561 RaiseIfFailed("ProjectPointOnWire", self.TrsfOp)
9562 self._autoPublish(anObj[1], theName, "projection")
9565 # -----------------------------------------------------------------------------
9567 # -----------------------------------------------------------------------------
9569 ## Translate the given object along the given vector a given number times
9570 # @param theObject The object to be translated.
9571 # @param theVector Direction of the translation. DX if None.
9572 # @param theStep Distance to translate on.
9573 # @param theNbTimes Quantity of translations to be done.
9574 # @param theName Object name; when specified, this parameter is used
9575 # for result publication in the study. Otherwise, if automatic
9576 # publication is switched on, default value is used for result name.
9578 # @return New GEOM.GEOM_Object, containing compound of all
9579 # the shapes, obtained after each translation.
9581 # @ref tui_multi_translation "Example"
9582 @ManageTransactions("TrsfOp")
9583 def MakeMultiTranslation1D(self, theObject, theVector, theStep, theNbTimes, theName=None):
9585 Translate the given object along the given vector a given number times
9588 theObject The object to be translated.
9589 theVector Direction of the translation. DX if None.
9590 theStep Distance to translate on.
9591 theNbTimes Quantity of translations to be done.
9592 theName Object name; when specified, this parameter is used
9593 for result publication in the study. Otherwise, if automatic
9594 publication is switched on, default value is used for result name.
9597 New GEOM.GEOM_Object, containing compound of all
9598 the shapes, obtained after each translation.
9601 r1d = geompy.MakeMultiTranslation1D(prism, vect, 20, 4)
9603 # Example: see GEOM_TestAll.py
9604 theStep, theNbTimes, Parameters = ParseParameters(theStep, theNbTimes)
9605 anObj = self.TrsfOp.MultiTranslate1D(theObject, theVector, theStep, theNbTimes)
9606 RaiseIfFailed("MultiTranslate1D", self.TrsfOp)
9607 anObj.SetParameters(Parameters)
9608 self._autoPublish(anObj, theName, "multitranslation")
9611 ## Conseqently apply two specified translations to theObject specified number of times.
9612 # @param theObject The object to be translated.
9613 # @param theVector1 Direction of the first translation. DX if None.
9614 # @param theStep1 Step of the first translation.
9615 # @param theNbTimes1 Quantity of translations to be done along theVector1.
9616 # @param theVector2 Direction of the second translation. DY if None.
9617 # @param theStep2 Step of the second translation.
9618 # @param theNbTimes2 Quantity of translations to be done along theVector2.
9619 # @param theName Object name; when specified, this parameter is used
9620 # for result publication in the study. Otherwise, if automatic
9621 # publication is switched on, default value is used for result name.
9623 # @return New GEOM.GEOM_Object, containing compound of all
9624 # the shapes, obtained after each translation.
9626 # @ref tui_multi_translation "Example"
9627 @ManageTransactions("TrsfOp")
9628 def MakeMultiTranslation2D(self, theObject, theVector1, theStep1, theNbTimes1,
9629 theVector2, theStep2, theNbTimes2, theName=None):
9631 Conseqently apply two specified translations to theObject specified number of times.
9634 theObject The object to be translated.
9635 theVector1 Direction of the first translation. DX if None.
9636 theStep1 Step of the first translation.
9637 theNbTimes1 Quantity of translations to be done along theVector1.
9638 theVector2 Direction of the second translation. DY if None.
9639 theStep2 Step of the second translation.
9640 theNbTimes2 Quantity of translations to be done along theVector2.
9641 theName Object name; when specified, this parameter is used
9642 for result publication in the study. Otherwise, if automatic
9643 publication is switched on, default value is used for result name.
9646 New GEOM.GEOM_Object, containing compound of all
9647 the shapes, obtained after each translation.
9650 tr2d = geompy.MakeMultiTranslation2D(prism, vect1, 20, 4, vect2, 80, 3)
9652 # Example: see GEOM_TestAll.py
9653 theStep1,theNbTimes1,theStep2,theNbTimes2, Parameters = ParseParameters(theStep1,theNbTimes1,theStep2,theNbTimes2)
9654 anObj = self.TrsfOp.MultiTranslate2D(theObject, theVector1, theStep1, theNbTimes1,
9655 theVector2, theStep2, theNbTimes2)
9656 RaiseIfFailed("MultiTranslate2D", self.TrsfOp)
9657 anObj.SetParameters(Parameters)
9658 self._autoPublish(anObj, theName, "multitranslation")
9661 ## Rotate the given object around the given axis a given number times.
9662 # Rotation angle will be 2*PI/theNbTimes.
9663 # @param theObject The object to be rotated.
9664 # @param theAxis The rotation axis. DZ if None.
9665 # @param theNbTimes Quantity of rotations to be done.
9666 # @param theName Object name; when specified, this parameter is used
9667 # for result publication in the study. Otherwise, if automatic
9668 # publication is switched on, default value is used for result name.
9670 # @return New GEOM.GEOM_Object, containing compound of all the
9671 # shapes, obtained after each rotation.
9673 # @ref tui_multi_rotation "Example"
9674 @ManageTransactions("TrsfOp")
9675 def MultiRotate1DNbTimes (self, theObject, theAxis, theNbTimes, theName=None):
9677 Rotate the given object around the given axis a given number times.
9678 Rotation angle will be 2*PI/theNbTimes.
9681 theObject The object to be rotated.
9682 theAxis The rotation axis. DZ if None.
9683 theNbTimes Quantity of rotations to be done.
9684 theName Object name; when specified, this parameter is used
9685 for result publication in the study. Otherwise, if automatic
9686 publication is switched on, default value is used for result name.
9689 New GEOM.GEOM_Object, containing compound of all the
9690 shapes, obtained after each rotation.
9693 rot1d = geompy.MultiRotate1DNbTimes(prism, vect, 4)
9695 # Example: see GEOM_TestAll.py
9696 theNbTimes, Parameters = ParseParameters(theNbTimes)
9697 anObj = self.TrsfOp.MultiRotate1D(theObject, theAxis, theNbTimes)
9698 RaiseIfFailed("MultiRotate1DNbTimes", self.TrsfOp)
9699 anObj.SetParameters(Parameters)
9700 self._autoPublish(anObj, theName, "multirotation")
9703 ## Rotate the given object around the given axis
9704 # a given number times on the given angle.
9705 # @param theObject The object to be rotated.
9706 # @param theAxis The rotation axis. DZ if None.
9707 # @param theAngleStep Rotation angle in radians.
9708 # @param theNbTimes Quantity of rotations to be done.
9709 # @param theName Object name; when specified, this parameter is used
9710 # for result publication in the study. Otherwise, if automatic
9711 # publication is switched on, default value is used for result name.
9713 # @return New GEOM.GEOM_Object, containing compound of all the
9714 # shapes, obtained after each rotation.
9716 # @ref tui_multi_rotation "Example"
9717 @ManageTransactions("TrsfOp")
9718 def MultiRotate1DByStep(self, theObject, theAxis, theAngleStep, theNbTimes, theName=None):
9720 Rotate the given object around the given axis
9721 a given number times on the given angle.
9724 theObject The object to be rotated.
9725 theAxis The rotation axis. DZ if None.
9726 theAngleStep Rotation angle in radians.
9727 theNbTimes Quantity of rotations to be done.
9728 theName Object name; when specified, this parameter is used
9729 for result publication in the study. Otherwise, if automatic
9730 publication is switched on, default value is used for result name.
9733 New GEOM.GEOM_Object, containing compound of all the
9734 shapes, obtained after each rotation.
9737 rot1d = geompy.MultiRotate1DByStep(prism, vect, math.pi/4, 4)
9739 # Example: see GEOM_TestAll.py
9740 theAngleStep, theNbTimes, Parameters = ParseParameters(theAngleStep, theNbTimes)
9741 anObj = self.TrsfOp.MultiRotate1DByStep(theObject, theAxis, theAngleStep, theNbTimes)
9742 RaiseIfFailed("MultiRotate1DByStep", self.TrsfOp)
9743 anObj.SetParameters(Parameters)
9744 self._autoPublish(anObj, theName, "multirotation")
9747 ## Rotate the given object around the given axis a given
9748 # number times and multi-translate each rotation result.
9749 # Rotation angle will be 2*PI/theNbTimes1.
9750 # Translation direction passes through center of gravity
9751 # of rotated shape and its projection on the rotation axis.
9752 # @param theObject The object to be rotated.
9753 # @param theAxis Rotation axis. DZ if None.
9754 # @param theNbTimes1 Quantity of rotations to be done.
9755 # @param theRadialStep Translation distance.
9756 # @param theNbTimes2 Quantity of translations to be done.
9757 # @param theName Object name; when specified, this parameter is used
9758 # for result publication in the study. Otherwise, if automatic
9759 # publication is switched on, default value is used for result name.
9761 # @return New GEOM.GEOM_Object, containing compound of all the
9762 # shapes, obtained after each transformation.
9764 # @ref tui_multi_rotation "Example"
9765 @ManageTransactions("TrsfOp")
9766 def MultiRotate2DNbTimes(self, theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
9768 Rotate the given object around the
9769 given axis on the given angle a given number
9770 times and multi-translate each rotation result.
9771 Translation direction passes through center of gravity
9772 of rotated shape and its projection on the rotation axis.
9775 theObject The object to be rotated.
9776 theAxis Rotation axis. DZ if None.
9777 theNbTimes1 Quantity of rotations to be done.
9778 theRadialStep Translation distance.
9779 theNbTimes2 Quantity of translations to be done.
9780 theName Object name; when specified, this parameter is used
9781 for result publication in the study. Otherwise, if automatic
9782 publication is switched on, default value is used for result name.
9785 New GEOM.GEOM_Object, containing compound of all the
9786 shapes, obtained after each transformation.
9789 rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
9791 # Example: see GEOM_TestAll.py
9792 theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theNbTimes1, theRadialStep, theNbTimes2)
9793 anObj = self.TrsfOp.MultiRotate2DNbTimes(theObject, theAxis, theNbTimes1, theRadialStep, theNbTimes2)
9794 RaiseIfFailed("MultiRotate2DNbTimes", self.TrsfOp)
9795 anObj.SetParameters(Parameters)
9796 self._autoPublish(anObj, theName, "multirotation")
9799 ## Rotate the given object around the
9800 # given axis on the given angle a given number
9801 # times and multi-translate each rotation result.
9802 # Translation direction passes through center of gravity
9803 # of rotated shape and its projection on the rotation axis.
9804 # @param theObject The object to be rotated.
9805 # @param theAxis Rotation axis. DZ if None.
9806 # @param theAngleStep Rotation angle in radians.
9807 # @param theNbTimes1 Quantity of rotations to be done.
9808 # @param theRadialStep Translation distance.
9809 # @param theNbTimes2 Quantity of translations to be done.
9810 # @param theName Object name; when specified, this parameter is used
9811 # for result publication in the study. Otherwise, if automatic
9812 # publication is switched on, default value is used for result name.
9814 # @return New GEOM.GEOM_Object, containing compound of all the
9815 # shapes, obtained after each transformation.
9817 # @ref tui_multi_rotation "Example"
9818 @ManageTransactions("TrsfOp")
9819 def MultiRotate2DByStep (self, theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, theName=None):
9821 Rotate the given object around the
9822 given axis on the given angle a given number
9823 times and multi-translate each rotation result.
9824 Translation direction passes through center of gravity
9825 of rotated shape and its projection on the rotation axis.
9828 theObject The object to be rotated.
9829 theAxis Rotation axis. DZ if None.
9830 theAngleStep Rotation angle in radians.
9831 theNbTimes1 Quantity of rotations to be done.
9832 theRadialStep Translation distance.
9833 theNbTimes2 Quantity of translations to be done.
9834 theName Object name; when specified, this parameter is used
9835 for result publication in the study. Otherwise, if automatic
9836 publication is switched on, default value is used for result name.
9839 New GEOM.GEOM_Object, containing compound of all the
9840 shapes, obtained after each transformation.
9843 rot2d = geompy.MultiRotate2D(prism, vect, math.pi/3, 4, 50, 5)
9845 # Example: see GEOM_TestAll.py
9846 theAngleStep, theNbTimes1, theRadialStep, theNbTimes2, Parameters = ParseParameters(theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
9847 anObj = self.TrsfOp.MultiRotate2DByStep(theObject, theAxis, theAngleStep, theNbTimes1, theRadialStep, theNbTimes2)
9848 RaiseIfFailed("MultiRotate2DByStep", self.TrsfOp)
9849 anObj.SetParameters(Parameters)
9850 self._autoPublish(anObj, theName, "multirotation")
9853 ## The same, as MultiRotate1DNbTimes(), but axis is given by direction and point
9855 # @ref swig_MakeMultiRotation "Example"
9856 def MakeMultiRotation1DNbTimes(self, aShape, aDir, aPoint, aNbTimes, theName=None):
9858 The same, as geompy.MultiRotate1DNbTimes, but axis is given by direction and point
9861 pz = geompy.MakeVertex(0, 0, 100)
9862 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9863 MultiRot1D = geompy.MakeMultiRotation1DNbTimes(prism, vy, pz, 6)
9865 # Example: see GEOM_TestOthers.py
9866 aVec = self.MakeLine(aPoint,aDir)
9867 # note: auto-publishing is done in self.MultiRotate1D()
9868 anObj = self.MultiRotate1DNbTimes(aShape, aVec, aNbTimes, theName)
9871 ## The same, as MultiRotate1DByStep(), but axis is given by direction and point
9873 # @ref swig_MakeMultiRotation "Example"
9874 def MakeMultiRotation1DByStep(self, aShape, aDir, aPoint, anAngle, aNbTimes, theName=None):
9876 The same, as geompy.MultiRotate1D, but axis is given by direction and point
9879 pz = geompy.MakeVertex(0, 0, 100)
9880 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9881 MultiRot1D = geompy.MakeMultiRotation1DByStep(prism, vy, pz, math.pi/3, 6)
9883 # Example: see GEOM_TestOthers.py
9884 aVec = self.MakeLine(aPoint,aDir)
9885 # note: auto-publishing is done in self.MultiRotate1D()
9886 anObj = self.MultiRotate1DByStep(aShape, aVec, anAngle, aNbTimes, theName)
9889 ## The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
9891 # @ref swig_MakeMultiRotation "Example"
9892 def MakeMultiRotation2DNbTimes(self, aShape, aDir, aPoint, nbtimes1, aStep, nbtimes2, theName=None):
9894 The same, as MultiRotate2DNbTimes(), but axis is given by direction and point
9897 pz = geompy.MakeVertex(0, 0, 100)
9898 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9899 MultiRot2D = geompy.MakeMultiRotation2DNbTimes(f12, vy, pz, 6, 30, 3)
9901 # Example: see GEOM_TestOthers.py
9902 aVec = self.MakeLine(aPoint,aDir)
9903 # note: auto-publishing is done in self.MultiRotate2DNbTimes()
9904 anObj = self.MultiRotate2DNbTimes(aShape, aVec, nbtimes1, aStep, nbtimes2, theName)
9907 ## The same, as MultiRotate2DByStep(), but axis is given by direction and point
9909 # @ref swig_MakeMultiRotation "Example"
9910 def MakeMultiRotation2DByStep(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
9912 The same, as MultiRotate2DByStep(), but axis is given by direction and point
9915 pz = geompy.MakeVertex(0, 0, 100)
9916 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
9917 MultiRot2D = geompy.MakeMultiRotation2DByStep(f12, vy, pz, math.pi/4, 6, 30, 3)
9919 # Example: see GEOM_TestOthers.py
9920 aVec = self.MakeLine(aPoint,aDir)
9921 # note: auto-publishing is done in self.MultiRotate2D()
9922 anObj = self.MultiRotate2DByStep(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
9926 # Compute a wire or a face that represents a projection of the source
9927 # shape onto cylinder. The cylinder's coordinate system is the same
9928 # as the global coordinate system.
9930 # @param theObject The object to be projected. It can be either
9931 # a planar wire or a face.
9932 # @param theRadius The radius of the cylinder.
9933 # @param theStartAngle The starting angle in radians from
9934 # the cylinder's X axis around Z axis. The angle from which
9935 # the projection is started.
9936 # @param theAngleLength The projection length angle in radians.
9937 # The angle in which to project the total length of the wire.
9938 # If it is negative the projection is not scaled and natural
9939 # wire length is kept for the projection.
9940 # @param theAngleRotation The desired angle in radians between
9941 # the tangent vector to the first curve at the first point of
9942 # the theObject's projection in 2D space and U-direction of
9943 # cylinder's 2D space.
9944 # @param theName Object name; when specified, this parameter is used
9945 # for result publication in the study. Otherwise, if automatic
9946 # publication is switched on, default value is used for result name.
9948 # @return New GEOM.GEOM_Object, containing the result shape. The result
9949 # represents a wire or a face that represents a projection of
9950 # the source shape onto a cylinder.
9952 # @ref tui_projection "Example"
9953 def MakeProjectionOnCylinder (self, theObject, theRadius,
9954 theStartAngle=0.0, theAngleLength=-1.0,
9955 theAngleRotation=0.0,
9958 Compute a wire or a face that represents a projection of the source
9959 shape onto cylinder. The cylinder's coordinate system is the same
9960 as the global coordinate system.
9963 theObject The object to be projected. It can be either
9964 a planar wire or a face.
9965 theRadius The radius of the cylinder.
9966 theStartAngle The starting angle in radians from the cylinder's X axis
9967 around Z axis. The angle from which the projection is started.
9968 theAngleLength The projection length angle in radians. The angle in which
9969 to project the total length of the wire. If it is negative the
9970 projection is not scaled and natural wire length is kept for
9972 theAngleRotation The desired angle in radians between
9973 the tangent vector to the first curve at the first
9974 point of the theObject's projection in 2D space and
9975 U-direction of cylinder's 2D space.
9976 theName Object name; when specified, this parameter is used
9977 for result publication in the study. Otherwise, if automatic
9978 publication is switched on, default value is used for result name.
9981 New GEOM.GEOM_Object, containing the result shape. The result
9982 represents a wire or a face that represents a projection of
9983 the source shape onto a cylinder.
9985 # Example: see GEOM_TestAll.py
9986 flagStartAngle = False
9987 if isinstance(theStartAngle,str):
9988 flagStartAngle = True
9989 flagAngleLength = False
9990 if isinstance(theAngleLength,str):
9991 flagAngleLength = True
9992 flagAngleRotation = False
9993 if isinstance(theAngleRotation,str):
9994 flagAngleRotation = True
9995 theRadius, theStartAngle, theAngleLength, theAngleRotation, Parameters = ParseParameters(
9996 theRadius, theStartAngle, theAngleLength, theAngleRotation)
9998 theStartAngle = theStartAngle*math.pi/180.
10000 theAngleLength = theAngleLength*math.pi/180.
10001 if flagAngleRotation:
10002 theAngleRotation = theAngleRotation*math.pi/180.
10003 anObj = self.TrsfOp.MakeProjectionOnCylinder(theObject, theRadius,
10004 theStartAngle, theAngleLength, theAngleRotation)
10005 RaiseIfFailed("MakeProjectionOnCylinder", self.TrsfOp)
10006 anObj.SetParameters(Parameters)
10007 self._autoPublish(anObj, theName, "projection")
10010 # end of l3_transform
10013 ## @addtogroup l3_transform_d
10016 ## Deprecated method. Use MultiRotate1DNbTimes instead.
10017 def MultiRotate1D(self, theObject, theAxis, theNbTimes, theName=None):
10019 Deprecated method. Use MultiRotate1DNbTimes instead.
10021 print("The method MultiRotate1D is DEPRECATED. Use MultiRotate1DNbTimes instead.")
10022 return self.MultiRotate1DNbTimes(theObject, theAxis, theNbTimes, theName)
10024 ## The same, as MultiRotate2DByStep(), but theAngle is in degrees.
10025 # This method is DEPRECATED. Use MultiRotate2DByStep() instead.
10026 @ManageTransactions("TrsfOp")
10027 def MultiRotate2D(self, theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2, theName=None):
10029 The same, as MultiRotate2DByStep(), but theAngle is in degrees.
10030 This method is DEPRECATED. Use MultiRotate2DByStep() instead.
10033 rot2d = geompy.MultiRotate2D(prism, vect, 60, 4, 50, 5)
10035 print("The method MultiRotate2D is DEPRECATED. Use MultiRotate2DByStep instead.")
10036 theAngle, theNbTimes1, theStep, theNbTimes2, Parameters = ParseParameters(theAngle, theNbTimes1, theStep, theNbTimes2)
10037 anObj = self.TrsfOp.MultiRotate2D(theObject, theAxis, theAngle, theNbTimes1, theStep, theNbTimes2)
10038 RaiseIfFailed("MultiRotate2D", self.TrsfOp)
10039 anObj.SetParameters(Parameters)
10040 self._autoPublish(anObj, theName, "multirotation")
10043 ## The same, as MultiRotate1D(), but axis is given by direction and point
10044 # This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
10045 def MakeMultiRotation1D(self, aShape, aDir, aPoint, aNbTimes, theName=None):
10047 The same, as geompy.MultiRotate1D, but axis is given by direction and point.
10048 This method is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.
10051 pz = geompy.MakeVertex(0, 0, 100)
10052 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
10053 MultiRot1D = geompy.MakeMultiRotation1D(prism, vy, pz, 6)
10055 print("The method MakeMultiRotation1D is DEPRECATED. Use MakeMultiRotation1DNbTimes instead.")
10056 aVec = self.MakeLine(aPoint,aDir)
10057 # note: auto-publishing is done in self.MultiRotate1D()
10058 anObj = self.MultiRotate1D(aShape, aVec, aNbTimes, theName)
10061 ## The same, as MultiRotate2D(), but axis is given by direction and point
10062 # This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
10063 def MakeMultiRotation2D(self, aShape, aDir, aPoint, anAngle, nbtimes1, aStep, nbtimes2, theName=None):
10065 The same, as MultiRotate2D(), but axis is given by direction and point
10066 This method is DEPRECATED. Use MakeMultiRotation2DByStep instead.
10069 pz = geompy.MakeVertex(0, 0, 100)
10070 vy = geompy.MakeVectorDXDYDZ(0, 100, 0)
10071 MultiRot2D = geompy.MakeMultiRotation2D(f12, vy, pz, 45, 6, 30, 3)
10073 print("The method MakeMultiRotation2D is DEPRECATED. Use MakeMultiRotation2DByStep instead.")
10074 aVec = self.MakeLine(aPoint,aDir)
10075 # note: auto-publishing is done in self.MultiRotate2D()
10076 anObj = self.MultiRotate2D(aShape, aVec, anAngle, nbtimes1, aStep, nbtimes2, theName)
10079 # end of l3_transform_d
10082 ## @addtogroup l3_local
10085 ## Perform a fillet on all edges of the given shape.
10086 # @param theShape Shape, to perform fillet on.
10087 # @param theR Fillet radius.
10088 # @param theName Object name; when specified, this parameter is used
10089 # for result publication in the study. Otherwise, if automatic
10090 # publication is switched on, default value is used for result name.
10092 # @return New GEOM.GEOM_Object, containing the result shape.
10094 # @ref tui_fillet "Example 1"
10095 # \n @ref swig_MakeFilletAll "Example 2"
10096 @ManageTransactions("LocalOp")
10097 def MakeFilletAll(self, theShape, theR, theName=None):
10099 Perform a fillet on all edges of the given shape.
10102 theShape Shape, to perform fillet on.
10103 theR Fillet radius.
10104 theName Object name; when specified, this parameter is used
10105 for result publication in the study. Otherwise, if automatic
10106 publication is switched on, default value is used for result name.
10109 New GEOM.GEOM_Object, containing the result shape.
10112 filletall = geompy.MakeFilletAll(prism, 10.)
10114 # Example: see GEOM_TestOthers.py
10115 theR,Parameters = ParseParameters(theR)
10116 anObj = self.LocalOp.MakeFilletAll(theShape, theR)
10117 RaiseIfFailed("MakeFilletAll", self.LocalOp)
10118 anObj.SetParameters(Parameters)
10119 self._autoPublish(anObj, theName, "fillet")
10122 ## Perform a fillet on the specified edges/faces of the given shape
10123 # @param theShape Shape, to perform fillet on.
10124 # @param theR Fillet radius.
10125 # @param theShapeType Type of shapes in <VAR>theListShapes</VAR> (see ShapeType())
10126 # @param theListShapes Global indices of edges/faces to perform fillet on.
10127 # @param theName Object name; when specified, this parameter is used
10128 # for result publication in the study. Otherwise, if automatic
10129 # publication is switched on, default value is used for result name.
10131 # @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10133 # @return New GEOM.GEOM_Object, containing the result shape.
10135 # @ref tui_fillet "Example"
10136 @ManageTransactions("LocalOp")
10137 def MakeFillet(self, theShape, theR, theShapeType, theListShapes, theName=None):
10139 Perform a fillet on the specified edges/faces of the given shape
10142 theShape Shape, to perform fillet on.
10143 theR Fillet radius.
10144 theShapeType Type of shapes in theListShapes (see geompy.ShapeTypes)
10145 theListShapes Global indices of edges/faces to perform fillet on.
10146 theName Object name; when specified, this parameter is used
10147 for result publication in the study. Otherwise, if automatic
10148 publication is switched on, default value is used for result name.
10151 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10154 New GEOM.GEOM_Object, containing the result shape.
10157 # get the list of IDs (IDList) for the fillet
10158 prism_edges = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["EDGE"])
10160 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[0]))
10161 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[1]))
10162 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[2]))
10163 # make a fillet on the specified edges of the given shape
10164 fillet = geompy.MakeFillet(prism, 10., geompy.ShapeType["EDGE"], IDlist_e)
10166 # Example: see GEOM_TestAll.py
10167 theR,Parameters = ParseParameters(theR)
10169 if theShapeType == self.ShapeType["EDGE"]:
10170 anObj = self.LocalOp.MakeFilletEdges(theShape, theR, theListShapes)
10171 RaiseIfFailed("MakeFilletEdges", self.LocalOp)
10173 anObj = self.LocalOp.MakeFilletFaces(theShape, theR, theListShapes)
10174 RaiseIfFailed("MakeFilletFaces", self.LocalOp)
10175 anObj.SetParameters(Parameters)
10176 self._autoPublish(anObj, theName, "fillet")
10179 ## The same that MakeFillet() but with two Fillet Radius R1 and R2
10180 @ManageTransactions("LocalOp")
10181 def MakeFilletR1R2(self, theShape, theR1, theR2, theShapeType, theListShapes, theName=None):
10183 The same that geompy.MakeFillet but with two Fillet Radius R1 and R2
10186 # get the list of IDs (IDList) for the fillet
10187 prism_edges = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["EDGE"])
10189 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[0]))
10190 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[1]))
10191 IDlist_e.append(geompy.GetSubShapeID(prism, prism_edges[2]))
10192 # make a fillet on the specified edges of the given shape
10193 fillet = geompy.MakeFillet(prism, 10., 15., geompy.ShapeType["EDGE"], IDlist_e)
10195 theR1,theR2,Parameters = ParseParameters(theR1,theR2)
10197 if theShapeType == self.ShapeType["EDGE"]:
10198 anObj = self.LocalOp.MakeFilletEdgesR1R2(theShape, theR1, theR2, theListShapes)
10199 RaiseIfFailed("MakeFilletEdgesR1R2", self.LocalOp)
10201 anObj = self.LocalOp.MakeFilletFacesR1R2(theShape, theR1, theR2, theListShapes)
10202 RaiseIfFailed("MakeFilletFacesR1R2", self.LocalOp)
10203 anObj.SetParameters(Parameters)
10204 self._autoPublish(anObj, theName, "fillet")
10207 ## Perform a fillet on the specified edges of the given shape
10208 # @param theShape Wire Shape to perform fillet on.
10209 # @param theR Fillet radius.
10210 # @param theListOfVertexes Global indices of vertexes to perform fillet on.
10211 # \note Global index of sub-shape can be obtained, using method GetSubShapeID()
10212 # \note The list of vertices could be empty,
10213 # in this case fillet will done done at all vertices in wire
10214 # @param doIgnoreSecantVertices If FALSE, fillet radius is always limited
10215 # by the length of the edges, nearest to the fillet vertex.
10216 # But sometimes the next edge is C1 continuous with the one, nearest to
10217 # the fillet point, and such two (or more) edges can be united to allow
10218 # bigger radius. Set this flag to TRUE to allow collinear edges union,
10219 # thus ignoring the secant vertex (vertices).
10220 # @param theName Object name; when specified, this parameter is used
10221 # for result publication in the study. Otherwise, if automatic
10222 # publication is switched on, default value is used for result name.
10224 # @return New GEOM.GEOM_Object, containing the result shape.
10226 # @ref tui_fillet2d "Example"
10227 @ManageTransactions("LocalOp")
10228 def MakeFillet1D(self, theShape, theR, theListOfVertexes, doIgnoreSecantVertices = True, theName=None):
10230 Perform a fillet on the specified edges of the given shape
10233 theShape Wire Shape to perform fillet on.
10234 theR Fillet radius.
10235 theListOfVertexes Global indices of vertexes to perform fillet on.
10236 doIgnoreSecantVertices If FALSE, fillet radius is always limited
10237 by the length of the edges, nearest to the fillet vertex.
10238 But sometimes the next edge is C1 continuous with the one, nearest to
10239 the fillet point, and such two (or more) edges can be united to allow
10240 bigger radius. Set this flag to TRUE to allow collinear edges union,
10241 thus ignoring the secant vertex (vertices).
10242 theName Object name; when specified, this parameter is used
10243 for result publication in the study. Otherwise, if automatic
10244 publication is switched on, default value is used for result name.
10246 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10248 The list of vertices could be empty,in this case fillet will done done at all vertices in wire
10251 New GEOM.GEOM_Object, containing the result shape.
10255 Wire_1 = geompy.MakeWire([Edge_12, Edge_7, Edge_11, Edge_6, Edge_1,Edge_4])
10256 # make fillet at given wire vertices with giver radius
10257 Fillet_1D_1 = geompy.MakeFillet1D(Wire_1, 55, [3, 4, 6, 8, 10])
10259 # Example: see GEOM_TestAll.py
10260 theR,doIgnoreSecantVertices,Parameters = ParseParameters(theR,doIgnoreSecantVertices)
10261 anObj = self.LocalOp.MakeFillet1D(theShape, theR, theListOfVertexes, doIgnoreSecantVertices)
10262 RaiseIfFailed("MakeFillet1D", self.LocalOp)
10263 anObj.SetParameters(Parameters)
10264 self._autoPublish(anObj, theName, "fillet")
10267 ## Perform a fillet at the specified vertices of the given face/shell.
10268 # @param theShape Face or Shell shape to perform fillet on.
10269 # @param theR Fillet radius.
10270 # @param theListOfVertexes Global indices of vertexes to perform fillet on.
10271 # @param theName Object name; when specified, this parameter is used
10272 # for result publication in the study. Otherwise, if automatic
10273 # publication is switched on, default value is used for result name.
10275 # @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10277 # @return New GEOM.GEOM_Object, containing the result shape.
10279 # @ref tui_fillet2d "Example"
10280 @ManageTransactions("LocalOp")
10281 def MakeFillet2D(self, theShape, theR, theListOfVertexes, theName=None):
10283 Perform a fillet at the specified vertices of the given face/shell.
10286 theShape Face or Shell shape to perform fillet on.
10287 theR Fillet radius.
10288 theListOfVertexes Global indices of vertexes to perform fillet on.
10289 theName Object name; when specified, this parameter is used
10290 for result publication in the study. Otherwise, if automatic
10291 publication is switched on, default value is used for result name.
10293 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10296 New GEOM.GEOM_Object, containing the result shape.
10299 face = geompy.MakeFaceHW(100, 100, 1)
10300 fillet2d = geompy.MakeFillet2D(face, 30, [7, 9])
10302 # Example: see GEOM_TestAll.py
10303 theR,Parameters = ParseParameters(theR)
10304 anObj = self.LocalOp.MakeFillet2D(theShape, theR, theListOfVertexes)
10305 RaiseIfFailed("MakeFillet2D", self.LocalOp)
10306 anObj.SetParameters(Parameters)
10307 self._autoPublish(anObj, theName, "fillet")
10310 ## Perform a symmetric chamfer on all edges of the given shape.
10311 # @param theShape Shape, to perform chamfer on.
10312 # @param theD Chamfer size along each face.
10313 # @param theName Object name; when specified, this parameter is used
10314 # for result publication in the study. Otherwise, if automatic
10315 # publication is switched on, default value is used for result name.
10317 # @return New GEOM.GEOM_Object, containing the result shape.
10319 # @ref tui_chamfer "Example 1"
10320 # \n @ref swig_MakeChamferAll "Example 2"
10321 @ManageTransactions("LocalOp")
10322 def MakeChamferAll(self, theShape, theD, theName=None):
10324 Perform a symmetric chamfer on all edges of the given shape.
10327 theShape Shape, to perform chamfer on.
10328 theD Chamfer size along each face.
10329 theName Object name; when specified, this parameter is used
10330 for result publication in the study. Otherwise, if automatic
10331 publication is switched on, default value is used for result name.
10334 New GEOM.GEOM_Object, containing the result shape.
10337 chamfer_all = geompy.MakeChamferAll(prism, 10.)
10339 # Example: see GEOM_TestOthers.py
10340 theD,Parameters = ParseParameters(theD)
10341 anObj = self.LocalOp.MakeChamferAll(theShape, theD)
10342 RaiseIfFailed("MakeChamferAll", self.LocalOp)
10343 anObj.SetParameters(Parameters)
10344 self._autoPublish(anObj, theName, "chamfer")
10347 ## Perform a chamfer on edges, common to the specified faces,
10348 # with distance D1 on the Face1
10349 # @param theShape Shape, to perform chamfer on.
10350 # @param theD1 Chamfer size along \a theFace1.
10351 # @param theD2 Chamfer size along \a theFace2.
10352 # @param theFace1,theFace2 Global indices of two faces of \a theShape.
10353 # @param theName Object name; when specified, this parameter is used
10354 # for result publication in the study. Otherwise, if automatic
10355 # publication is switched on, default value is used for result name.
10357 # @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10359 # @return New GEOM.GEOM_Object, containing the result shape.
10361 # @ref tui_chamfer "Example"
10362 @ManageTransactions("LocalOp")
10363 def MakeChamferEdge(self, theShape, theD1, theD2, theFace1, theFace2, theName=None):
10365 Perform a chamfer on edges, common to the specified faces,
10366 with distance D1 on the Face1
10369 theShape Shape, to perform chamfer on.
10370 theD1 Chamfer size along theFace1.
10371 theD2 Chamfer size along theFace2.
10372 theFace1,theFace2 Global indices of two faces of theShape.
10373 theName Object name; when specified, this parameter is used
10374 for result publication in the study. Otherwise, if automatic
10375 publication is switched on, default value is used for result name.
10378 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10381 New GEOM.GEOM_Object, containing the result shape.
10384 prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"])
10385 f_ind_1 = geompy.GetSubShapeID(prism, prism_faces[0])
10386 f_ind_2 = geompy.GetSubShapeID(prism, prism_faces[1])
10387 chamfer_e = geompy.MakeChamferEdge(prism, 10., 10., f_ind_1, f_ind_2)
10389 # Example: see GEOM_TestAll.py
10390 theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10391 anObj = self.LocalOp.MakeChamferEdge(theShape, theD1, theD2, theFace1, theFace2)
10392 RaiseIfFailed("MakeChamferEdge", self.LocalOp)
10393 anObj.SetParameters(Parameters)
10394 self._autoPublish(anObj, theName, "chamfer")
10397 ## Perform a chamfer on edges
10398 # @param theShape Shape, to perform chamfer on.
10399 # @param theD Chamfer length
10400 # @param theAngle Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10401 # @param theFace1,theFace2 Global indices of two faces of \a theShape.
10402 # @param theName Object name; when specified, this parameter is used
10403 # for result publication in the study. Otherwise, if automatic
10404 # publication is switched on, default value is used for result name.
10406 # @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10408 # @return New GEOM.GEOM_Object, containing the result shape.
10409 @ManageTransactions("LocalOp")
10410 def MakeChamferEdgeAD(self, theShape, theD, theAngle, theFace1, theFace2, theName=None):
10412 Perform a chamfer on edges
10415 theShape Shape, to perform chamfer on.
10416 theD1 Chamfer size along theFace1.
10417 theAngle Angle of chamfer (angle in radians or a name of variable which defines angle in degrees).
10418 theFace1,theFace2 Global indices of two faces of theShape.
10419 theName Object name; when specified, this parameter is used
10420 for result publication in the study. Otherwise, if automatic
10421 publication is switched on, default value is used for result name.
10424 Global index of sub-shape can be obtained, using method geompy.GetSubShapeID
10427 New GEOM.GEOM_Object, containing the result shape.
10430 prism_faces = geompy.SubShapeAllSortedCentres(prism, geompy.ShapeType["FACE"])
10431 f_ind_1 = geompy.GetSubShapeID(prism, prism_faces[0])
10432 f_ind_2 = geompy.GetSubShapeID(prism, prism_faces[1])
10434 chamfer_e = geompy.MakeChamferEdge(prism, 10., ang, f_ind_1, f_ind_2)
10437 if isinstance(theAngle,str):
10439 theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10441 theAngle = theAngle*math.pi/180.0
10442 anObj = self.LocalOp.MakeChamferEdgeAD(theShape, theD, theAngle, theFace1, theFace2)
10443 RaiseIfFailed("MakeChamferEdgeAD", self.LocalOp)
10444 anObj.SetParameters(Parameters)
10445 self._autoPublish(anObj, theName, "chamfer")
10448 ## Perform a chamfer on all edges of the specified faces,
10449 # with distance D1 on the first specified face (if several for one edge)
10450 # @param theShape Shape, to perform chamfer on.
10451 # @param theD1 Chamfer size along face from \a theFaces. If both faces,
10452 # connected to the edge, are in \a theFaces, \a theD1
10453 # will be get along face, which is nearer to \a theFaces beginning.
10454 # @param theD2 Chamfer size along another of two faces, connected to the edge.
10455 # @param theFaces Sequence of global indices of faces of \a theShape.
10456 # @param theName Object name; when specified, this parameter is used
10457 # for result publication in the study. Otherwise, if automatic
10458 # publication is switched on, default value is used for result name.
10460 # @note Global index of sub-shape can be obtained, using method GetSubShapeID().
10462 # @return New GEOM.GEOM_Object, containing the result shape.
10464 # @ref tui_chamfer "Example"
10465 @ManageTransactions("LocalOp")
10466 def MakeChamferFaces(self, theShape, theD1, theD2, theFaces, theName=None):
10468 Perform a chamfer on all edges of the specified faces,
10469 with distance D1 on the first specified face (if several for one edge)
10472 theShape Shape, to perform chamfer on.
10473 theD1 Chamfer size along face from theFaces. If both faces,
10474 connected to the edge, are in theFaces, theD1
10475 will be get along face, which is nearer to theFaces beginning.
10476 theD2 Chamfer size along another of two faces, connected to the edge.
10477 theFaces Sequence of global indices of faces of theShape.
10478 theName Object name; when specified, this parameter is used
10479 for result publication in the study. Otherwise, if automatic
10480 publication is switched on, default value is used for result name.
10482 Note: Global index of sub-shape can be obtained, using method geompy.GetSubShapeID().
10485 New GEOM.GEOM_Object, containing the result shape.
10487 # Example: see GEOM_TestAll.py
10488 theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10489 anObj = self.LocalOp.MakeChamferFaces(theShape, theD1, theD2, theFaces)
10490 RaiseIfFailed("MakeChamferFaces", self.LocalOp)
10491 anObj.SetParameters(Parameters)
10492 self._autoPublish(anObj, theName, "chamfer")
10495 ## The Same that MakeChamferFaces() but with params theD is chamfer length and
10496 # theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10498 # @ref swig_FilletChamfer "Example"
10499 @ManageTransactions("LocalOp")
10500 def MakeChamferFacesAD(self, theShape, theD, theAngle, theFaces, theName=None):
10502 The Same that geompy.MakeChamferFaces but with params theD is chamfer length and
10503 theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10506 if isinstance(theAngle,str):
10508 theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10510 theAngle = theAngle*math.pi/180.0
10511 anObj = self.LocalOp.MakeChamferFacesAD(theShape, theD, theAngle, theFaces)
10512 RaiseIfFailed("MakeChamferFacesAD", self.LocalOp)
10513 anObj.SetParameters(Parameters)
10514 self._autoPublish(anObj, theName, "chamfer")
10517 ## Perform a chamfer on edges,
10518 # with distance D1 on the first specified face (if several for one edge)
10519 # @param theShape Shape, to perform chamfer on.
10520 # @param theD1,theD2 Chamfer size
10521 # @param theEdges Sequence of edges of \a theShape.
10522 # @param theName Object name; when specified, this parameter is used
10523 # for result publication in the study. Otherwise, if automatic
10524 # publication is switched on, default value is used for result name.
10526 # @return New GEOM.GEOM_Object, containing the result shape.
10528 # @ref swig_FilletChamfer "Example"
10529 @ManageTransactions("LocalOp")
10530 def MakeChamferEdges(self, theShape, theD1, theD2, theEdges, theName=None):
10532 Perform a chamfer on edges,
10533 with distance D1 on the first specified face (if several for one edge)
10536 theShape Shape, to perform chamfer on.
10537 theD1,theD2 Chamfer size
10538 theEdges Sequence of edges of theShape.
10539 theName Object name; when specified, this parameter is used
10540 for result publication in the study. Otherwise, if automatic
10541 publication is switched on, default value is used for result name.
10544 New GEOM.GEOM_Object, containing the result shape.
10546 theD1,theD2,Parameters = ParseParameters(theD1,theD2)
10547 anObj = self.LocalOp.MakeChamferEdges(theShape, theD1, theD2, theEdges)
10548 RaiseIfFailed("MakeChamferEdges", self.LocalOp)
10549 anObj.SetParameters(Parameters)
10550 self._autoPublish(anObj, theName, "chamfer")
10553 ## The Same that MakeChamferEdges() but with params theD is chamfer length and
10554 # theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10555 @ManageTransactions("LocalOp")
10556 def MakeChamferEdgesAD(self, theShape, theD, theAngle, theEdges, theName=None):
10558 The Same that geompy.MakeChamferEdges but with params theD is chamfer length and
10559 theAngle is Angle of chamfer (angle in radians or a name of variable which defines angle in degrees)
10562 if isinstance(theAngle,str):
10564 theD,theAngle,Parameters = ParseParameters(theD,theAngle)
10566 theAngle = theAngle*math.pi/180.0
10567 anObj = self.LocalOp.MakeChamferEdgesAD(theShape, theD, theAngle, theEdges)
10568 RaiseIfFailed("MakeChamferEdgesAD", self.LocalOp)
10569 anObj.SetParameters(Parameters)
10570 self._autoPublish(anObj, theName, "chamfer")
10573 ## @sa MakeChamferEdge(), MakeChamferFaces()
10575 # @ref swig_MakeChamfer "Example"
10576 def MakeChamfer(self, aShape, d1, d2, aShapeType, ListShape, theName=None):
10578 See geompy.MakeChamferEdge() and geompy.MakeChamferFaces() functions for more information.
10580 # Example: see GEOM_TestOthers.py
10582 # note: auto-publishing is done in self.MakeChamferEdge() or self.MakeChamferFaces()
10583 if aShapeType == self.ShapeType["EDGE"]:
10584 anObj = self.MakeChamferEdge(aShape,d1,d2,ListShape[0],ListShape[1],theName)
10586 anObj = self.MakeChamferFaces(aShape,d1,d2,ListShape,theName)
10589 ## Remove material from a solid by extrusion of the base shape on the given distance.
10590 # @param theInit Shape to remove material from. It must be a solid or
10591 # a compound made of a single solid.
10592 # @param theBase Closed edge or wire defining the base shape to be extruded.
10593 # @param theH Prism dimension along the normal to theBase
10594 # @param theAngle Draft angle in degrees.
10595 # @param theInvert If true material changes the direction
10596 # @param theName Object name; when specified, this parameter is used
10597 # for result publication in the study. Otherwise, if automatic
10598 # publication is switched on, default value is used for result name.
10600 # @return New GEOM.GEOM_Object, containing the initial shape with removed material
10602 # @ref tui_creation_prism "Example"
10603 @ManageTransactions("PrimOp")
10604 def MakeExtrudedCut(self, theInit, theBase, theH, theAngle, theInvert=False, theName=None):
10606 Add material to a solid by extrusion of the base shape on the given distance.
10609 theInit Shape to remove material from. It must be a solid or a compound made of a single solid.
10610 theBase Closed edge or wire defining the base shape to be extruded.
10611 theH Prism dimension along the normal to theBase
10612 theAngle Draft angle in degrees.
10613 theInvert If true material changes the direction.
10614 theName Object name; when specified, this parameter is used
10615 for result publication in the study. Otherwise, if automatic
10616 publication is switched on, default value is used for result name.
10619 New GEOM.GEOM_Object, containing the initial shape with removed material.
10621 # Example: see GEOM_TestAll.py
10622 theH,theAngle,Parameters = ParseParameters(theH,theAngle)
10623 anObj = self.PrimOp.MakeDraftPrism(theInit, theBase, theH, theAngle, False, theInvert)
10624 RaiseIfFailed("MakeExtrudedBoss", self.PrimOp)
10625 anObj.SetParameters(Parameters)
10626 self._autoPublish(anObj, theName, "extrudedCut")
10629 ## Add material to a solid by extrusion of the base shape on the given distance.
10630 # @param theInit Shape to add material to. It must be a solid or
10631 # a compound made of a single solid.
10632 # @param theBase Closed edge or wire defining the base shape to be extruded.
10633 # @param theH Prism dimension along the normal to theBase
10634 # @param theAngle Draft angle in degrees.
10635 # @param theInvert If true material changes the direction
10636 # @param theName Object name; when specified, this parameter is used
10637 # for result publication in the study. Otherwise, if automatic
10638 # publication is switched on, default value is used for result name.
10640 # @return New GEOM.GEOM_Object, containing the initial shape with added material
10642 # @ref tui_creation_prism "Example"
10643 @ManageTransactions("PrimOp")
10644 def MakeExtrudedBoss(self, theInit, theBase, theH, theAngle, theInvert=False, theName=None):
10646 Add material to a solid by extrusion of the base shape on the given distance.
10649 theInit Shape to add material to. It must be a solid or a compound made of a single solid.
10650 theBase Closed edge or wire defining the base shape to be extruded.
10651 theH Prism dimension along the normal to theBase
10652 theAngle Draft angle in degrees.
10653 theInvert If true material changes the direction.
10654 theName Object name; when specified, this parameter is used
10655 for result publication in the study. Otherwise, if automatic
10656 publication is switched on, default value is used for result name.
10659 New GEOM.GEOM_Object, containing the initial shape with added material.
10661 # Example: see GEOM_TestAll.py
10662 theH,theAngle,Parameters = ParseParameters(theH,theAngle)
10663 anObj = self.PrimOp.MakeDraftPrism(theInit, theBase, theH, theAngle, True, theInvert)
10664 RaiseIfFailed("MakeExtrudedBoss", self.PrimOp)
10665 anObj.SetParameters(Parameters)
10666 self._autoPublish(anObj, theName, "extrudedBoss")
10672 ## @addtogroup l3_basic_op
10675 ## Perform an Archimde operation on the given shape with given parameters.
10676 # The object presenting the resulting face is returned.
10677 # @param theShape Shape to be put in water.
10678 # @param theWeight Weight of the shape.
10679 # @param theWaterDensity Density of the water.
10680 # @param theMeshDeflection Deflection of the mesh, using to compute the section.
10681 # @param theName Object name; when specified, this parameter is used
10682 # for result publication in the study. Otherwise, if automatic
10683 # publication is switched on, default value is used for result name.
10685 # @return New GEOM.GEOM_Object, containing a section of \a theShape
10686 # by a plane, corresponding to water level.
10688 # @ref tui_archimede "Example"
10689 @ManageTransactions("LocalOp")
10690 def Archimede(self, theShape, theWeight, theWaterDensity, theMeshDeflection, theName=None):
10692 Perform an Archimde operation on the given shape with given parameters.
10693 The object presenting the resulting face is returned.
10696 theShape Shape to be put in water.
10697 theWeight Weight of the shape.
10698 theWaterDensity Density of the water.
10699 theMeshDeflection Deflection of the mesh, using to compute the section.
10700 theName Object name; when specified, this parameter is used
10701 for result publication in the study. Otherwise, if automatic
10702 publication is switched on, default value is used for result name.
10705 New GEOM.GEOM_Object, containing a section of theShape
10706 by a plane, corresponding to water level.
10708 # Example: see GEOM_TestAll.py
10709 theWeight,theWaterDensity,theMeshDeflection,Parameters = ParseParameters(
10710 theWeight,theWaterDensity,theMeshDeflection)
10711 anObj = self.LocalOp.MakeArchimede(theShape, theWeight, theWaterDensity, theMeshDeflection)
10712 RaiseIfFailed("MakeArchimede", self.LocalOp)
10713 anObj.SetParameters(Parameters)
10714 self._autoPublish(anObj, theName, "archimede")
10717 # end of l3_basic_op
10720 ## @addtogroup l2_measure
10723 ## Get point coordinates
10724 # @return [x, y, z]
10726 # @ref tui_point_coordinates_page "Example"
10727 @ManageTransactions("MeasuOp")
10728 def PointCoordinates(self,Point):
10730 Get point coordinates
10735 # Example: see GEOM_TestMeasures.py
10736 aTuple = self.MeasuOp.PointCoordinates(Point)
10737 RaiseIfFailed("PointCoordinates", self.MeasuOp)
10740 ## Get vector coordinates
10741 # @return [x, y, z]
10743 # @ref tui_measurement_tools_page "Example"
10744 def VectorCoordinates(self,Vector):
10746 Get vector coordinates
10752 p1=self.GetFirstVertex(Vector)
10753 p2=self.GetLastVertex(Vector)
10755 X1=self.PointCoordinates(p1)
10756 X2=self.PointCoordinates(p2)
10758 return (X2[0]-X1[0],X2[1]-X1[1],X2[2]-X1[2])
10761 ## Compute cross product
10762 # @return vector w=u^v
10764 # @ref tui_measurement_tools_page "Example"
10765 def CrossProduct(self, Vector1, Vector2):
10767 Compute cross product
10769 Returns: vector w=u^v
10771 u=self.VectorCoordinates(Vector1)
10772 v=self.VectorCoordinates(Vector2)
10773 w=self.MakeVectorDXDYDZ(u[1]*v[2]-u[2]*v[1], u[2]*v[0]-u[0]*v[2], u[0]*v[1]-u[1]*v[0])
10777 ## Compute cross product
10778 # @return dot product p=u.v
10780 # @ref tui_measurement_tools_page "Example"
10781 def DotProduct(self, Vector1, Vector2):
10783 Compute cross product
10785 Returns: dot product p=u.v
10787 u=self.VectorCoordinates(Vector1)
10788 v=self.VectorCoordinates(Vector2)
10789 p=u[0]*v[0]+u[1]*v[1]+u[2]*v[2]
10794 ## Get summarized length of all wires,
10795 # area of surface and volume of the given shape.
10796 # @param theShape Shape to define properties of.
10797 # @param theTolerance maximal relative error of area
10798 # and volume computation.
10799 # @return [theLength, theSurfArea, theVolume]\n
10800 # theLength: Summarized length of all wires of the given shape.\n
10801 # theSurfArea: Area of surface of the given shape.\n
10802 # theVolume: Volume of the given shape.
10804 # @ref tui_basic_properties_page "Example"
10805 @ManageTransactions("MeasuOp")
10806 def BasicProperties(self,theShape, theTolerance=1.e-6):
10808 Get summarized length of all wires,
10809 area of surface and volume of the given shape.
10812 theShape Shape to define properties of.
10813 theTolerance maximal relative error of area
10814 and volume computation.
10817 [theLength, theSurfArea, theVolume]
10818 theLength: Summarized length of all wires of the given shape.
10819 theSurfArea: Area of surface of the given shape.
10820 theVolume: Volume of the given shape.
10822 # Example: see GEOM_TestMeasures.py
10823 aTuple = self.MeasuOp.GetBasicProperties(theShape, theTolerance)
10824 RaiseIfFailed("GetBasicProperties", self.MeasuOp)
10827 ## Get parameters of bounding box of the given shape
10828 # @param theShape Shape to obtain bounding box of.
10829 # @param precise TRUE for precise computation; FALSE for fast one.
10830 # @return [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
10831 # Xmin,Xmax: Limits of shape along OX axis.
10832 # Ymin,Ymax: Limits of shape along OY axis.
10833 # Zmin,Zmax: Limits of shape along OZ axis.
10835 # @ref tui_bounding_box_page "Example"
10836 @ManageTransactions("MeasuOp")
10837 def BoundingBox (self, theShape, precise=False):
10839 Get parameters of bounding box of the given shape
10842 theShape Shape to obtain bounding box of.
10843 precise TRUE for precise computation; FALSE for fast one.
10846 [Xmin,Xmax, Ymin,Ymax, Zmin,Zmax]
10847 Xmin,Xmax: Limits of shape along OX axis.
10848 Ymin,Ymax: Limits of shape along OY axis.
10849 Zmin,Zmax: Limits of shape along OZ axis.
10851 # Example: see GEOM_TestMeasures.py
10852 aTuple = self.MeasuOp.GetBoundingBox(theShape, precise)
10853 RaiseIfFailed("GetBoundingBox", self.MeasuOp)
10856 ## Get bounding box of the given shape
10857 # @param theShape Shape to obtain bounding box of.
10858 # @param precise TRUE for precise computation; FALSE for fast one.
10859 # @param theName Object name; when specified, this parameter is used
10860 # for result publication in the study. Otherwise, if automatic
10861 # publication is switched on, default value is used for result name.
10863 # @return New GEOM.GEOM_Object, containing the created box.
10865 # @ref tui_bounding_box_page "Example"
10866 @ManageTransactions("MeasuOp")
10867 def MakeBoundingBox (self, theShape, precise=False, theName=None):
10869 Get bounding box of the given shape
10872 theShape Shape to obtain bounding box of.
10873 precise TRUE for precise computation; FALSE for fast one.
10874 theName Object name; when specified, this parameter is used
10875 for result publication in the study. Otherwise, if automatic
10876 publication is switched on, default value is used for result name.
10879 New GEOM.GEOM_Object, containing the created box.
10881 # Example: see GEOM_TestMeasures.py
10882 anObj = self.MeasuOp.MakeBoundingBox(theShape, precise)
10883 RaiseIfFailed("MakeBoundingBox", self.MeasuOp)
10884 self._autoPublish(anObj, theName, "bndbox")
10887 ## Get inertia matrix and moments of inertia of theShape.
10888 # @param theShape Shape to calculate inertia of.
10889 # @return [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
10890 # I(1-3)(1-3): Components of the inertia matrix of the given shape.
10891 # Ix,Iy,Iz: Moments of inertia of the given shape.
10893 # @ref tui_inertia_page "Example"
10894 @ManageTransactions("MeasuOp")
10895 def Inertia(self,theShape):
10897 Get inertia matrix and moments of inertia of theShape.
10900 theShape Shape to calculate inertia of.
10903 [I11,I12,I13, I21,I22,I23, I31,I32,I33, Ix,Iy,Iz]
10904 I(1-3)(1-3): Components of the inertia matrix of the given shape.
10905 Ix,Iy,Iz: Moments of inertia of the given shape.
10907 # Example: see GEOM_TestMeasures.py
10908 aTuple = self.MeasuOp.GetInertia(theShape)
10909 RaiseIfFailed("GetInertia", self.MeasuOp)
10912 ## Get if coords are included in the shape (ST_IN or ST_ON)
10913 # @param theShape Shape
10914 # @param coords list of points coordinates [x1, y1, z1, x2, y2, z2, ...]
10915 # @param tolerance to be used (default is 1.0e-7)
10916 # @return list_of_boolean = [res1, res2, ...]
10917 @ManageTransactions("MeasuOp")
10918 def AreCoordsInside(self, theShape, coords, tolerance=1.e-7):
10920 Get if coords are included in the shape (ST_IN or ST_ON)
10924 coords list of points coordinates [x1, y1, z1, x2, y2, z2, ...]
10925 tolerance to be used (default is 1.0e-7)
10928 list_of_boolean = [res1, res2, ...]
10930 return self.MeasuOp.AreCoordsInside(theShape, coords, tolerance)
10932 ## Get minimal distance between the given shapes.
10933 # @param theShape1,theShape2 Shapes to find minimal distance between.
10934 # @return Value of the minimal distance between the given shapes.
10936 # @ref tui_min_distance_page "Example"
10937 @ManageTransactions("MeasuOp")
10938 def MinDistance(self, theShape1, theShape2):
10940 Get minimal distance between the given shapes.
10943 theShape1,theShape2 Shapes to find minimal distance between.
10946 Value of the minimal distance between the given shapes.
10948 # Example: see GEOM_TestMeasures.py
10949 aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
10950 RaiseIfFailed("GetMinDistance", self.MeasuOp)
10953 ## Get minimal distance between the given shapes.
10954 # @param theShape1,theShape2 Shapes to find minimal distance between.
10955 # @return Value of the minimal distance between the given shapes, in form of list
10956 # [Distance, DX, DY, DZ].
10958 # @ref tui_min_distance_page "Example"
10959 @ManageTransactions("MeasuOp")
10960 def MinDistanceComponents(self, theShape1, theShape2):
10962 Get minimal distance between the given shapes.
10965 theShape1,theShape2 Shapes to find minimal distance between.
10968 Value of the minimal distance between the given shapes, in form of list
10969 [Distance, DX, DY, DZ]
10971 # Example: see GEOM_TestMeasures.py
10972 aTuple = self.MeasuOp.GetMinDistance(theShape1, theShape2)
10973 RaiseIfFailed("GetMinDistance", self.MeasuOp)
10974 aRes = [aTuple[0], aTuple[4] - aTuple[1], aTuple[5] - aTuple[2], aTuple[6] - aTuple[3]]
10977 ## Get closest points of the given shapes.
10978 # @param theShape1,theShape2 Shapes to find closest points of.
10979 # @return The number of found solutions (-1 in case of infinite number of
10980 # solutions) and a list of (X, Y, Z) coordinates for all couples of points.
10982 # @ref tui_min_distance_page "Example"
10983 @ManageTransactions("MeasuOp")
10984 def ClosestPoints (self, theShape1, theShape2):
10986 Get closest points of the given shapes.
10989 theShape1,theShape2 Shapes to find closest points of.
10992 The number of found solutions (-1 in case of infinite number of
10993 solutions) and a list of (X, Y, Z) coordinates for all couples of points.
10995 # Example: see GEOM_TestMeasures.py
10996 aTuple = self.MeasuOp.ClosestPoints(theShape1, theShape2)
10997 RaiseIfFailed("ClosestPoints", self.MeasuOp)
11000 ## Get angle between the given shapes in degrees.
11001 # @param theShape1,theShape2 Lines or linear edges to find angle between.
11002 # @note If both arguments are vectors, the angle is computed in accordance
11003 # with their orientations, otherwise the minimum angle is computed.
11004 # @return Value of the angle between the given shapes in degrees.
11006 # @ref tui_angle_page "Example"
11007 @ManageTransactions("MeasuOp")
11008 def GetAngle(self, theShape1, theShape2):
11010 Get angle between the given shapes in degrees.
11013 theShape1,theShape2 Lines or linear edges to find angle between.
11016 If both arguments are vectors, the angle is computed in accordance
11017 with their orientations, otherwise the minimum angle is computed.
11020 Value of the angle between the given shapes in degrees.
11022 # Example: see GEOM_TestMeasures.py
11023 anAngle = self.MeasuOp.GetAngle(theShape1, theShape2)
11024 RaiseIfFailed("GetAngle", self.MeasuOp)
11027 ## Get angle between the given shapes in radians.
11028 # @param theShape1,theShape2 Lines or linear edges to find angle between.
11029 # @note If both arguments are vectors, the angle is computed in accordance
11030 # with their orientations, otherwise the minimum angle is computed.
11031 # @return Value of the angle between the given shapes in radians.
11033 # @ref tui_angle_page "Example"
11034 @ManageTransactions("MeasuOp")
11035 def GetAngleRadians(self, theShape1, theShape2):
11037 Get angle between the given shapes in radians.
11040 theShape1,theShape2 Lines or linear edges to find angle between.
11044 If both arguments are vectors, the angle is computed in accordance
11045 with their orientations, otherwise the minimum angle is computed.
11048 Value of the angle between the given shapes in radians.
11050 # Example: see GEOM_TestMeasures.py
11051 anAngle = self.MeasuOp.GetAngle(theShape1, theShape2)*math.pi/180.
11052 RaiseIfFailed("GetAngle", self.MeasuOp)
11055 ## Get angle between the given vectors in degrees.
11056 # @param theShape1,theShape2 Vectors to find angle between.
11057 # @param theFlag If True, the normal vector is defined by the two vectors cross,
11058 # if False, the opposite vector to the normal vector is used.
11059 # @return Value of the angle between the given vectors in degrees.
11061 # @ref tui_angle_page "Example"
11062 @ManageTransactions("MeasuOp")
11063 def GetAngleVectors(self, theShape1, theShape2, theFlag = True):
11065 Get angle between the given vectors in degrees.
11068 theShape1,theShape2 Vectors to find angle between.
11069 theFlag If True, the normal vector is defined by the two vectors cross,
11070 if False, the opposite vector to the normal vector is used.
11073 Value of the angle between the given vectors in degrees.
11075 anAngle = self.MeasuOp.GetAngleBtwVectors(theShape1, theShape2)
11077 anAngle = 360. - anAngle
11078 RaiseIfFailed("GetAngleVectors", self.MeasuOp)
11081 ## The same as GetAngleVectors, but the result is in radians.
11082 def GetAngleRadiansVectors(self, theShape1, theShape2, theFlag = True):
11084 Get angle between the given vectors in radians.
11087 theShape1,theShape2 Vectors to find angle between.
11088 theFlag If True, the normal vector is defined by the two vectors cross,
11089 if False, the opposite vector to the normal vector is used.
11092 Value of the angle between the given vectors in radians.
11094 anAngle = self.GetAngleVectors(theShape1, theShape2, theFlag)*math.pi/180.
11097 ## @name Curve Curvature Measurement
11098 # Methods for receiving radius of curvature of curves
11099 # in the given point
11102 ## Measure curvature of a curve at a point, set by parameter.
11103 # @param theCurve a curve.
11104 # @param theParam parameter.
11105 # @return radius of curvature of \a theCurve.
11107 # @ref swig_todo "Example"
11108 @ManageTransactions("MeasuOp")
11109 def CurveCurvatureByParam(self, theCurve, theParam):
11111 Measure curvature of a curve at a point, set by parameter.
11115 theParam parameter.
11118 radius of curvature of theCurve.
11120 # Example: see GEOM_TestMeasures.py
11121 aCurv = self.MeasuOp.CurveCurvatureByParam(theCurve,theParam)
11122 RaiseIfFailed("CurveCurvatureByParam", self.MeasuOp)
11125 ## Measure curvature of a curve at a point.
11126 # @param theCurve a curve.
11127 # @param thePoint given point.
11128 # @return radius of curvature of \a theCurve.
11130 # @ref swig_todo "Example"
11131 @ManageTransactions("MeasuOp")
11132 def CurveCurvatureByPoint(self, theCurve, thePoint):
11134 Measure curvature of a curve at a point.
11138 thePoint given point.
11141 radius of curvature of theCurve.
11143 aCurv = self.MeasuOp.CurveCurvatureByPoint(theCurve,thePoint)
11144 RaiseIfFailed("CurveCurvatureByPoint", self.MeasuOp)
11148 ## @name Surface Curvature Measurement
11149 # Methods for receiving max and min radius of curvature of surfaces
11150 # in the given point
11153 ## Measure max radius of curvature of surface.
11154 # @param theSurf the given surface.
11155 # @param theUParam Value of U-parameter on the referenced surface.
11156 # @param theVParam Value of V-parameter on the referenced surface.
11157 # @return max radius of curvature of theSurf.
11159 ## @ref swig_todo "Example"
11160 @ManageTransactions("MeasuOp")
11161 def MaxSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
11163 Measure max radius of curvature of surface.
11166 theSurf the given surface.
11167 theUParam Value of U-parameter on the referenced surface.
11168 theVParam Value of V-parameter on the referenced surface.
11171 max radius of curvature of theSurf.
11173 # Example: see GEOM_TestMeasures.py
11174 aSurf = self.MeasuOp.MaxSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
11175 RaiseIfFailed("MaxSurfaceCurvatureByParam", self.MeasuOp)
11178 ## Measure max radius of curvature of surface in the given point
11179 # @param theSurf the given surface.
11180 # @param thePoint given point.
11181 # @return max radius of curvature of theSurf.
11183 ## @ref swig_todo "Example"
11184 @ManageTransactions("MeasuOp")
11185 def MaxSurfaceCurvatureByPoint(self, theSurf, thePoint):
11187 Measure max radius of curvature of surface in the given point.
11190 theSurf the given surface.
11191 thePoint given point.
11194 max radius of curvature of theSurf.
11196 aSurf = self.MeasuOp.MaxSurfaceCurvatureByPoint(theSurf,thePoint)
11197 RaiseIfFailed("MaxSurfaceCurvatureByPoint", self.MeasuOp)
11200 ## Measure min radius of curvature of surface.
11201 # @param theSurf the given surface.
11202 # @param theUParam Value of U-parameter on the referenced surface.
11203 # @param theVParam Value of V-parameter on the referenced surface.
11204 # @return min radius of curvature of theSurf.
11206 ## @ref swig_todo "Example"
11207 @ManageTransactions("MeasuOp")
11208 def MinSurfaceCurvatureByParam(self, theSurf, theUParam, theVParam):
11210 Measure min radius of curvature of surface.
11213 theSurf the given surface.
11214 theUParam Value of U-parameter on the referenced surface.
11215 theVParam Value of V-parameter on the referenced surface.
11218 Min radius of curvature of theSurf.
11220 aSurf = self.MeasuOp.MinSurfaceCurvatureByParam(theSurf,theUParam,theVParam)
11221 RaiseIfFailed("MinSurfaceCurvatureByParam", self.MeasuOp)
11224 ## Measure min radius of curvature of surface in the given point
11225 # @param theSurf the given surface.
11226 # @param thePoint given point.
11227 # @return min radius of curvature of theSurf.
11229 ## @ref swig_todo "Example"
11230 @ManageTransactions("MeasuOp")
11231 def MinSurfaceCurvatureByPoint(self, theSurf, thePoint):
11233 Measure min radius of curvature of surface in the given point.
11236 theSurf the given surface.
11237 thePoint given point.
11240 Min radius of curvature of theSurf.
11242 aSurf = self.MeasuOp.MinSurfaceCurvatureByPoint(theSurf,thePoint)
11243 RaiseIfFailed("MinSurfaceCurvatureByPoint", self.MeasuOp)
11247 ## Measure curvature radius of surface in the given point along the given direction.
11248 # @param theSurf the given face.
11249 # @param thePoint given point.
11250 # @param theDirection given direction.
11251 # @param theName Object name; when specified, this parameter is used
11252 # for result publication in the study. Otherwise, if automatic
11253 # publication is switched on, default value is used for result name.
11255 # @return New GEOM.GEOM_Object, containing vector of curvature of theSurf.
11256 # The returned vector is codirectional with the normal to the face
11257 # in the given point in case of positive curvature value
11258 # and opposite to the normal in case of negative curvature.
11259 # The normal of the returned vector is equal to the
11260 # absolute value of the curvature radius.
11261 # Null shape is returned in case of infinite radius
11262 # (zero curvature), for example, in case of flat face.
11264 ## @ref swig_CurvatureOnFace "Example"
11265 @ManageTransactions("MeasuOp")
11266 def CurvatureOnFace(self, theSurf, thePoint, theDirection, theName=None):
11268 Measure curvature radius of surface in the given point along the given direction.
11271 theSurf the given face.
11272 thePoint given point.
11273 theDirection given direction.
11274 theName Object name; when specified, this parameter is used
11275 for result publication in the study. Otherwise, if automatic
11276 publication is switched on, default value is used for result name.
11279 New GEOM.GEOM_Object, containing vector of curvature of theSurf.
11280 The returned vector is codirectional with the normal to the face
11281 in the given point in case of positive curvature value
11282 and opposite to the normal in case of negative curvature.
11283 The normal of the returned vector is equal to the
11284 absolute value of the curvature radius.
11285 Null shape is returned in case of infinite radius
11286 (zero curvature), for example, in case of flat face.
11289 curvature_1 = geompy.CurvatureOnFace(Face_1, Vertex_1, OX)
11291 aVec = self.MeasuOp.SurfaceCurvatureByPointAndDirection(theSurf,thePoint,theDirection)
11292 if self.MeasuOp.GetErrorCode() != "ZERO_CURVATURE":
11293 RaiseIfFailed("CurvatureOnFace", self.MeasuOp)
11294 self._autoPublish(aVec, theName, "curvature")
11297 ## Convert X,Y,Z points coordinates to UV parameters on the given surface.
11298 # @param theSurf the given face. It can be also a shell or a compound with one face.
11299 # @param theXYZlist float list of size 3*N where N is the number of points
11300 # for which we want their U,V coordinates.
11301 # If the user enters a list of size not divisible by 3
11302 # an exception will be thrown.
11303 # @param theIsNormalized if True, the returned parameters will be in range [0, 1].
11305 # @return list of float of size 2*N.
11307 # @ref tui_xyz_to_uv_page "Example"
11308 @ManageTransactions("MeasuOp")
11309 def XYZtoUV(self, theSurf, theXYZlist, theIsNormalized = True):
11311 Convert X,Y,Z points coordinates to UV parameters on the given surface.
11314 theSurf the given face. It can be also a shell or a compound with one face.
11315 theXYZlist float list of size 3*N where N is the number of points
11316 for which we want their U,V coordinates.
11317 If the user enters a list of size not divisible by 3
11318 an exception will be thrown.
11319 theIsNormalized if True, the returned parameters will be in range [0, 1].
11322 list of float of size 2*N.
11325 [u1,v1, u2,v2] = geompy.XYZtoUV(Face_1, [0,0,0, 0,10,10])
11327 aUVlist = self.MeasuOp.XYZtoUV(theSurf, theXYZlist, theIsNormalized)
11328 RaiseIfFailed("XYZtoUV", self.MeasuOp)
11331 ## Convert UV parameters on the given surface to 3D points coordinates.
11332 # @param theSurf the given face. It can be also a shell or a compound with one face.
11333 # @param theUVlist float list of size 2*N where N is the number of points
11334 # for which we want their X,Y,Z coordinates.
11335 # If the user enters a list of non-even size
11336 # an exception will be thrown.
11337 # @param theIsNormalized if True, the input parameters are expected to be in range [0, 1].
11339 # @return list of float of size 3*N.
11341 # @ref tui_xyz_to_uv_page "Example"
11342 @ManageTransactions("MeasuOp")
11343 def UVtoXYZ(self, theSurf, theUVlist, theIsNormalized = True):
11345 Convert UV parameters on the given surface to 3D points coordinates.
11348 theSurf the given face. It can be also a shell or a compound with one face.
11349 theUVlist float list of size 2*N where N is the number of points
11350 for which we want their X,Y,Z coordinates.
11351 If the user enters a list of non-even size
11352 an exception will be thrown.
11353 theIsNormalized if True, the input parameters are expected to be in range [0, 1].
11356 list of float of size 3*N.
11359 [x1,y1,z1, x2,y2,z2] = geompy.UVtoXYZ(Face_1, [0,0, 10,10])
11361 aXYZlist = self.MeasuOp.UVtoXYZ(theSurf, theUVlist, theIsNormalized)
11362 RaiseIfFailed("UVtoXYZ", self.MeasuOp)
11365 ## Get min and max tolerances of sub-shapes of theShape
11366 # @param theShape Shape, to get tolerances of.
11367 # @return [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]\n
11368 # FaceMin,FaceMax: Min and max tolerances of the faces.\n
11369 # EdgeMin,EdgeMax: Min and max tolerances of the edges.\n
11370 # VertMin,VertMax: Min and max tolerances of the vertices.
11372 # @ref tui_tolerance_page "Example"
11373 @ManageTransactions("MeasuOp")
11374 def Tolerance(self,theShape):
11376 Get min and max tolerances of sub-shapes of theShape
11379 theShape Shape, to get tolerances of.
11382 [FaceMin,FaceMax, EdgeMin,EdgeMax, VertMin,VertMax]
11383 FaceMin,FaceMax: Min and max tolerances of the faces.
11384 EdgeMin,EdgeMax: Min and max tolerances of the edges.
11385 VertMin,VertMax: Min and max tolerances of the vertices.
11387 # Example: see GEOM_TestMeasures.py
11388 aTuple = self.MeasuOp.GetTolerance(theShape)
11389 RaiseIfFailed("GetTolerance", self.MeasuOp)
11392 ## Obtain description of the given shape (number of sub-shapes of each type)
11393 # @param theShape Shape to be described.
11394 # @return Description of the given shape.
11396 # @ref tui_whatis_page "Example"
11397 @ManageTransactions("MeasuOp")
11398 def WhatIs(self,theShape):
11400 Obtain description of the given shape (number of sub-shapes of each type)
11403 theShape Shape to be described.
11406 Description of the given shape.
11408 # Example: see GEOM_TestMeasures.py
11409 aDescr = self.MeasuOp.WhatIs(theShape)
11410 RaiseIfFailed("WhatIs", self.MeasuOp)
11413 ## Obtain quantity of shapes of the given type in \a theShape.
11414 # If \a theShape is of type \a theType, it is also counted.
11415 # @param theShape Shape to be described.
11416 # @param theType the given ShapeType().
11417 # @return Quantity of shapes of type \a theType in \a theShape.
11419 # @ref tui_measurement_tools_page "Example"
11420 def NbShapes (self, theShape, theType):
11422 Obtain quantity of shapes of the given type in theShape.
11423 If theShape is of type theType, it is also counted.
11426 theShape Shape to be described.
11427 theType the given geompy.ShapeType
11430 Quantity of shapes of type theType in theShape.
11432 # Example: see GEOM_TestMeasures.py
11433 listSh = self.SubShapeAllIDs(theShape, theType)
11437 ## Obtain quantity of shapes of each type in \a theShape.
11438 # The \a theShape is also counted.
11439 # @param theShape Shape to be described.
11440 # @return Dictionary of ShapeType() with bound quantities of shapes.
11442 # @ref tui_measurement_tools_page "Example"
11443 def ShapeInfo (self, theShape):
11445 Obtain quantity of shapes of each type in theShape.
11446 The theShape is also counted.
11449 theShape Shape to be described.
11452 Dictionary of geompy.ShapeType with bound quantities of shapes.
11454 # Example: see GEOM_TestMeasures.py
11456 for typeSh in self.ShapeType:
11457 if typeSh in ( "AUTO", "SHAPE" ): continue
11458 listSh = self.SubShapeAllIDs(theShape, self.ShapeType[typeSh])
11464 def GetCreationInformation(self, theShape):
11466 infos = theShape.GetCreationInformation()
11469 opName = info.operationName
11470 if not opName: opName = "no info available"
11471 if res: res += "\n"
11472 res += "Operation: " + opName
11474 for parVal in info.params:
11475 res += "\n \t%s = %s" % ( parVal.name, parVal.value )
11478 ## Get a point, situated at the centre of mass of theShape.
11479 # @param theShape Shape to define centre of mass of.
11480 # @param theName Object name; when specified, this parameter is used
11481 # for result publication in the study. Otherwise, if automatic
11482 # publication is switched on, default value is used for result name.
11484 # @return New GEOM.GEOM_Object, containing the created point.
11486 # @ref tui_center_of_mass_page "Example"
11487 @ManageTransactions("MeasuOp")
11488 def MakeCDG(self, theShape, theName=None):
11490 Get a point, situated at the centre of mass of theShape.
11493 theShape Shape to define centre of mass of.
11494 theName Object name; when specified, this parameter is used
11495 for result publication in the study. Otherwise, if automatic
11496 publication is switched on, default value is used for result name.
11499 New GEOM.GEOM_Object, containing the created point.
11501 # Example: see GEOM_TestMeasures.py
11502 anObj = self.MeasuOp.GetCentreOfMass(theShape)
11503 RaiseIfFailed("GetCentreOfMass", self.MeasuOp)
11504 self._autoPublish(anObj, theName, "centerOfMass")
11507 ## Get a vertex sub-shape by index.
11508 # @param theShape Shape to find sub-shape.
11509 # @param theIndex Index to find vertex by this index (starting from zero)
11510 # @param theUseOri To consider edge/wire orientation or not
11511 # @param theName Object name; when specified, this parameter is used
11512 # for result publication in the study. Otherwise, if automatic
11513 # publication is switched on, default value is used for result name.
11515 # @return New GEOM.GEOM_Object, containing the created vertex.
11517 # @ref tui_measurement_tools_page "Example"
11518 @ManageTransactions("MeasuOp")
11519 def GetVertexByIndex(self, theShape, theIndex, theUseOri=True, theName=None):
11521 Get a vertex sub-shape by index.
11524 theShape Shape to find sub-shape.
11525 theIndex Index to find vertex by this index (starting from zero)
11526 theUseOri To consider edge/wire orientation or not
11527 theName Object name; when specified, this parameter is used
11528 for result publication in the study. Otherwise, if automatic
11529 publication is switched on, default value is used for result name.
11532 New GEOM.GEOM_Object, containing the created vertex.
11534 # Example: see GEOM_TestMeasures.py
11535 if isinstance( theUseOri, str ): # theUseOri was inserted before theName
11536 theUseOri, theName = True, theUseOri
11537 anObj = self.MeasuOp.GetVertexByIndex(theShape, theIndex, theUseOri)
11538 RaiseIfFailed("GetVertexByIndex", self.MeasuOp)
11539 self._autoPublish(anObj, theName, "vertex")
11542 ## Get the first vertex of wire/edge depended orientation.
11543 # @param theShape Shape to find first vertex.
11544 # @param theName Object name; when specified, this parameter is used
11545 # for result publication in the study. Otherwise, if automatic
11546 # publication is switched on, default value is used for result name.
11548 # @return New GEOM.GEOM_Object, containing the created vertex.
11550 # @ref tui_measurement_tools_page "Example"
11551 def GetFirstVertex(self, theShape, theName=None):
11553 Get the first vertex of wire/edge depended orientation.
11556 theShape Shape to find first vertex.
11557 theName Object name; when specified, this parameter is used
11558 for result publication in the study. Otherwise, if automatic
11559 publication is switched on, default value is used for result name.
11562 New GEOM.GEOM_Object, containing the created vertex.
11564 # Example: see GEOM_TestMeasures.py
11565 # note: auto-publishing is done in self.GetVertexByIndex()
11566 return self.GetVertexByIndex(theShape, 0, True, theName)
11568 ## Get the last vertex of wire/edge depended orientation.
11569 # @param theShape Shape to find last vertex.
11570 # @param theName Object name; when specified, this parameter is used
11571 # for result publication in the study. Otherwise, if automatic
11572 # publication is switched on, default value is used for result name.
11574 # @return New GEOM.GEOM_Object, containing the created vertex.
11576 # @ref tui_measurement_tools_page "Example"
11577 def GetLastVertex(self, theShape, theName=None):
11579 Get the last vertex of wire/edge depended orientation.
11582 theShape Shape to find last vertex.
11583 theName Object name; when specified, this parameter is used
11584 for result publication in the study. Otherwise, if automatic
11585 publication is switched on, default value is used for result name.
11588 New GEOM.GEOM_Object, containing the created vertex.
11590 # Example: see GEOM_TestMeasures.py
11591 nb_vert = self.NumberOfSubShapes(theShape, self.ShapeType["VERTEX"])
11592 # note: auto-publishing is done in self.GetVertexByIndex()
11593 return self.GetVertexByIndex(theShape, (nb_vert-1), True, theName)
11595 ## Get a normale to the given face. If the point is not given,
11596 # the normale is calculated at the center of mass.
11597 # @param theFace Face to define normale of.
11598 # @param theOptionalPoint Point to compute the normale at.
11599 # @param theName Object name; when specified, this parameter is used
11600 # for result publication in the study. Otherwise, if automatic
11601 # publication is switched on, default value is used for result name.
11603 # @return New GEOM.GEOM_Object, containing the created vector.
11605 # @ref swig_todo "Example"
11606 @ManageTransactions("MeasuOp")
11607 def GetNormal(self, theFace, theOptionalPoint = None, theName=None):
11609 Get a normale to the given face. If the point is not given,
11610 the normale is calculated at the center of mass.
11613 theFace Face to define normale of.
11614 theOptionalPoint Point to compute the normale at.
11615 theName Object name; when specified, this parameter is used
11616 for result publication in the study. Otherwise, if automatic
11617 publication is switched on, default value is used for result name.
11620 New GEOM.GEOM_Object, containing the created vector.
11622 # Example: see GEOM_TestMeasures.py
11623 anObj = self.MeasuOp.GetNormal(theFace, theOptionalPoint)
11624 RaiseIfFailed("GetNormal", self.MeasuOp)
11625 self._autoPublish(anObj, theName, "normal")
11628 ## Print shape errors obtained from CheckShape.
11629 # @param theShape Shape that was checked.
11630 # @param theShapeErrors the shape errors obtained by CheckShape.
11631 # @param theReturnStatus If 0 the description of problem is printed.
11632 # If 1 the description of problem is returned.
11633 # @return If theReturnStatus is equal to 1 the description is returned.
11634 # Otherwise doesn't return anything.
11636 # @ref tui_check_shape_page "Example"
11637 @ManageTransactions("MeasuOp")
11638 def PrintShapeErrors(self, theShape, theShapeErrors, theReturnStatus = 0):
11640 Print shape errors obtained from CheckShape.
11643 theShape Shape that was checked.
11644 theShapeErrors the shape errors obtained by CheckShape.
11645 theReturnStatus If 0 the description of problem is printed.
11646 If 1 the description of problem is returned.
11649 If theReturnStatus is equal to 1 the description is returned.
11650 Otherwise doesn't return anything.
11652 # Example: see GEOM_TestMeasures.py
11653 Descr = self.MeasuOp.PrintShapeErrors(theShape, theShapeErrors)
11654 if theReturnStatus == 1:
11659 ## Check a topology of the given shape.
11660 # @param theShape Shape to check validity of.
11661 # @param theIsCheckGeom If FALSE, only the shape's topology will be checked, \n
11662 # if TRUE, the shape's geometry will be checked also.
11663 # @param theReturnStatus If 0 and if theShape is invalid, a description
11664 # of problem is printed.
11665 # If 1 isValid flag and the description of
11666 # problem is returned.
11667 # If 2 isValid flag and the list of error data
11669 # @return TRUE, if the shape "seems to be valid".
11670 # If theShape is invalid, prints a description of problem.
11671 # If theReturnStatus is equal to 1 the description is returned
11672 # along with IsValid flag.
11673 # If theReturnStatus is equal to 2 the list of error data is
11674 # returned along with IsValid flag.
11676 # @ref tui_check_shape_page "Example"
11677 @ManageTransactions("MeasuOp")
11678 def CheckShape(self,theShape, theIsCheckGeom = 0, theReturnStatus = 0):
11680 Check a topology of the given shape.
11683 theShape Shape to check validity of.
11684 theIsCheckGeom If FALSE, only the shape's topology will be checked,
11685 if TRUE, the shape's geometry will be checked also.
11686 theReturnStatus If 0 and if theShape is invalid, a description
11687 of problem is printed.
11688 If 1 IsValid flag and the description of
11689 problem is returned.
11690 If 2 IsValid flag and the list of error data
11694 TRUE, if the shape "seems to be valid".
11695 If theShape is invalid, prints a description of problem.
11696 If theReturnStatus is equal to 1 the description is returned
11697 along with IsValid flag.
11698 If theReturnStatus is equal to 2 the list of error data is
11699 returned along with IsValid flag.
11701 # Example: see GEOM_TestMeasures.py
11703 (IsValid, ShapeErrors) = self.MeasuOp.CheckShapeWithGeometry(theShape)
11704 RaiseIfFailed("CheckShapeWithGeometry", self.MeasuOp)
11706 (IsValid, ShapeErrors) = self.MeasuOp.CheckShape(theShape)
11707 RaiseIfFailed("CheckShape", self.MeasuOp)
11709 if theReturnStatus == 0:
11710 Descr = self.MeasuOp.PrintShapeErrors(theShape, ShapeErrors)
11712 if theReturnStatus == 1:
11713 Descr = self.MeasuOp.PrintShapeErrors(theShape, ShapeErrors)
11714 return (IsValid, Descr)
11715 elif theReturnStatus == 2:
11716 return (IsValid, ShapeErrors)
11719 ## Detect self-intersections in the given shape.
11720 # @param theShape Shape to check.
11721 # @param theCheckLevel is the level of self-intersection check.
11722 # Possible input values are:
11723 # - GEOM.SI_V_V(0) - only V/V interferences
11724 # - GEOM.SI_V_E(1) - V/V and V/E interferences
11725 # - GEOM.SI_E_E(2) - V/V, V/E and E/E interferences
11726 # - GEOM.SI_V_F(3) - V/V, V/E, E/E and V/F interferences
11727 # - GEOM.SI_E_F(4) - V/V, V/E, E/E, V/F and E/F interferences
11728 # - GEOM.SI_ALL(5) - all interferences.
11729 # @return TRUE, if the shape contains no self-intersections.
11731 # @ref tui_check_self_intersections_page "Example"
11732 @ManageTransactions("MeasuOp")
11733 def CheckSelfIntersections(self, theShape, theCheckLevel = GEOM.SI_ALL):
11735 Detect self-intersections in the given shape.
11738 theShape Shape to check.
11739 theCheckLevel is the level of self-intersection check.
11740 Possible input values are:
11741 - GEOM.SI_V_V(0) - only V/V interferences
11742 - GEOM.SI_V_E(1) - V/V and V/E interferences
11743 - GEOM.SI_E_E(2) - V/V, V/E and E/E interferences
11744 - GEOM.SI_V_F(3) - V/V, V/E, E/E and V/F interferences
11745 - GEOM.SI_E_F(4) - V/V, V/E, E/E, V/F and E/F interferences
11746 - GEOM.SI_ALL(5) - all interferences.
11749 TRUE, if the shape contains no self-intersections.
11751 # Example: see GEOM_TestMeasures.py
11752 (IsValid, Pairs) = self.MeasuOp.CheckSelfIntersections(theShape, EnumToLong(theCheckLevel))
11753 RaiseIfFailed("CheckSelfIntersections", self.MeasuOp)
11756 ## Detect self-intersections of the given shape with algorithm based on mesh intersections.
11757 # @param theShape Shape to check.
11758 # @param theDeflection Linear deflection coefficient that specifies quality of tessellation:
11759 # - if \a theDeflection <= 0, default deflection 0.001 is used
11760 # @param theTolerance Specifies a distance between sub-shapes used for detecting gaps:
11761 # - if \a theTolerance <= 0, algorithm detects intersections (default behavior)
11762 # - if \a theTolerance > 0, algorithm detects gaps
11763 # @return TRUE, if the shape contains no self-intersections.
11765 # @ref tui_check_self_intersections_fast_page "Example"
11766 @ManageTransactions("MeasuOp")
11767 def CheckSelfIntersectionsFast(self, theShape, theDeflection = 0.001, theTolerance = 0.0):
11769 Detect self-intersections of the given shape with algorithm based on mesh intersections.
11772 theShape Shape to check.
11773 theDeflection Linear deflection coefficient that specifies quality of tessellation:
11774 - if theDeflection <= 0, default deflection 0.001 is used
11775 theTolerance Specifies a distance between shapes used for detecting gaps:
11776 - if theTolerance <= 0, algorithm detects intersections (default behavior)
11777 - if theTolerance > 0, algorithm detects gaps
11780 TRUE, if the shape contains no self-intersections.
11782 # Example: see GEOM_TestMeasures.py
11783 (IsValid, Pairs) = self.MeasuOp.CheckSelfIntersectionsFast(theShape, theDeflection, theTolerance)
11784 RaiseIfFailed("CheckSelfIntersectionsFast", self.MeasuOp)
11787 ## Check boolean and partition operations arguments.
11788 # @param theShape the argument of an operation to be checked
11789 # @return TRUE if the argument is valid for a boolean or partition
11790 # operation; FALSE otherwise.
11791 @ManageTransactions("MeasuOp")
11792 def CheckBOPArguments(self, theShape):
11794 Check boolean and partition operations arguments.
11797 theShape the argument of an operation to be checked
11800 TRUE if the argument is valid for a boolean or partition
11801 operation; FALSE otherwise.
11803 return self.MeasuOp.CheckBOPArguments(theShape)
11805 ## Detect intersections of the given shapes with algorithm based on mesh intersections.
11806 # @param theShape1 First source object
11807 # @param theShape2 Second source object
11808 # @param theTolerance Specifies a distance between shapes used for detecting gaps:
11809 # - if \a theTolerance <= 0, algorithm detects intersections (default behavior)
11810 # - if \a theTolerance > 0, algorithm detects gaps
11811 # @param theDeflection Linear deflection coefficient that specifies quality of tessellation:
11812 # - if \a theDeflection <= 0, default deflection 0.001 is used
11813 # @return TRUE, if there are intersections (gaps) between source shapes
11814 # @return List of sub-shapes IDs from 1st shape that localize intersection.
11815 # @return List of sub-shapes IDs from 2nd shape that localize intersection.
11817 # @ref tui_fast_intersection_page "Example"
11818 @ManageTransactions("MeasuOp")
11819 def FastIntersect(self, theShape1, theShape2, theTolerance = 0.0, theDeflection = 0.001):
11821 Detect intersections of the given shapes with algorithm based on mesh intersections.
11824 theShape1 First source object
11825 theShape2 Second source object
11826 theTolerance Specifies a distance between shapes used for detecting gaps:
11827 - if theTolerance <= 0, algorithm detects intersections (default behavior)
11828 - if theTolerance > 0, algorithm detects gaps
11829 theDeflection Linear deflection coefficient that specifies quality of tessellation:
11830 - if theDeflection <= 0, default deflection 0.001 is used
11833 TRUE, if there are intersections (gaps) between source shapes
11834 List of sub-shapes IDs from 1st shape that localize intersection.
11835 List of sub-shapes IDs from 2nd shape that localize intersection.
11837 # Example: see GEOM_TestMeasures.py
11838 IsOk, Res1, Res2 = self.MeasuOp.FastIntersect(theShape1, theShape2, theTolerance, theDeflection)
11839 RaiseIfFailed("FastIntersect", self.MeasuOp)
11840 return IsOk, Res1, Res2
11842 ## Get position (LCS) of theShape.
11844 # Origin of the LCS is situated at the shape's center of mass.
11845 # Axes of the LCS are obtained from shape's location or,
11846 # if the shape is a planar face, from position of its plane.
11848 # @param theShape Shape to calculate position of.
11849 # @return [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
11850 # Ox,Oy,Oz: Coordinates of shape's LCS origin.
11851 # Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
11852 # Xx,Xy,Xz: Coordinates of shape's LCS X direction.
11854 # @ref swig_todo "Example"
11855 @ManageTransactions("MeasuOp")
11856 def GetPosition(self,theShape):
11858 Get position (LCS) of theShape.
11859 Origin of the LCS is situated at the shape's center of mass.
11860 Axes of the LCS are obtained from shape's location or,
11861 if the shape is a planar face, from position of its plane.
11864 theShape Shape to calculate position of.
11867 [Ox,Oy,Oz, Zx,Zy,Zz, Xx,Xy,Xz].
11868 Ox,Oy,Oz: Coordinates of shape's LCS origin.
11869 Zx,Zy,Zz: Coordinates of shape's LCS normal(main) direction.
11870 Xx,Xy,Xz: Coordinates of shape's LCS X direction.
11872 # Example: see GEOM_TestMeasures.py
11873 aTuple = self.MeasuOp.GetPosition(theShape)
11874 RaiseIfFailed("GetPosition", self.MeasuOp)
11877 ## Get kind of theShape.
11879 # @param theShape Shape to get a kind of.
11880 # @return Returns a kind of shape in terms of <VAR>GEOM.GEOM_IKindOfShape.shape_kind</VAR> enumeration
11881 # and a list of parameters, describing the shape.
11882 # @note Concrete meaning of each value, returned via \a theIntegers
11883 # or \a theDoubles list depends on the kind() of the shape.
11885 # @ref swig_todo "Example"
11886 @ManageTransactions("MeasuOp")
11887 def KindOfShape(self,theShape):
11889 Get kind of theShape.
11892 theShape Shape to get a kind of.
11895 a kind of shape in terms of GEOM_IKindOfShape.shape_kind enumeration
11896 and a list of parameters, describing the shape.
11898 Concrete meaning of each value, returned via theIntegers
11899 or theDoubles list depends on the geompy.kind of the shape
11901 # Example: see GEOM_TestMeasures.py
11902 aRoughTuple = self.MeasuOp.KindOfShape(theShape)
11903 RaiseIfFailed("KindOfShape", self.MeasuOp)
11905 aKind = aRoughTuple[0]
11906 anInts = aRoughTuple[1]
11907 aDbls = aRoughTuple[2]
11909 # Now there is no exception from this rule:
11910 aKindTuple = [aKind] + aDbls + anInts
11912 # If they are we will regroup parameters for such kind of shape.
11914 #if aKind == kind.SOME_KIND:
11915 # # SOME_KIND int int double int double double
11916 # aKindTuple = [aKind, anInts[0], anInts[1], aDbls[0], anInts[2], aDbls[1], aDbls[2]]
11917 if aKind == self.kind.CRV_BSPLINE:
11918 aKindTuple = [aKind] + anInts[:6] + aDbls + anInts[6:]
11919 elif aKind == self.kind.CRV_BEZIER:
11920 aKindTuple = [aKind] + anInts[:2] + aDbls + anInts[2:]
11924 ## The function takes a single face with holes and returns a list of faces,
11925 # first of them is the original face without holes, and the other faces are placed
11926 # on the same surface as the original face but bounded by each hole wire.
11927 # If the original face has no holes, it will be returned as an output
11928 # @param theShape Face to perform operation on.
11930 # @return GEOM.ListOfGO, list created faces, where first of them is the original face without holes
11931 @ManageTransactions("MeasuOp")
11932 def PatchFace(self, theShape):
11934 The function takes a single face with holes and returns a list of faces,
11935 first of them is the original face without holes, and the other faces are placed
11936 on the same surface as the original face but bounded by each hole wire.
11937 If the original face has no holes, it will be returned as an output
11940 theShape Face to perform operation on.
11943 GEOM.ListOfGO, list created faces, where first of them is the original face without holes
11946 Circle_1 = geompy.MakeCircle(None, None, 190)
11947 Circle_2 = geompy.MakeCircle(None, None, 100)
11948 Face_1 = geompy.MakeFaceWires([Circle_1], 1)
11949 Face_2 = geompy.MakeFaceWires([Circle_2], 1)
11950 Cut_1 = geompy.MakeCutList(Face_1, [Face_2], True)
11951 faces = geompy.PatchFace(Cut_1)
11953 aList = self.MeasuOp.PatchFace(theShape)
11954 RaiseIfFailed("PatchFace", self.MeasuOp)
11957 ## Returns the string that describes if the shell is good for solid.
11958 # This is a support method for MakeSolid.
11960 # @param theShell the shell to be checked.
11961 # @return Returns a string that describes the shell validity for
11962 # solid construction.
11963 @ManageTransactions("MeasuOp")
11964 def _IsGoodForSolid(self, theShell):
11966 Returns the string that describes if the shell is good for solid.
11967 This is a support method for MakeSolid.
11970 theShell the shell to be checked.
11973 Returns a string that describes the shell validity for
11974 solid construction.
11976 aDescr = self.MeasuOp.IsGoodForSolid(theShell)
11979 ## Obtain a canonical recognition interface.
11980 # @return An instance of
11981 # @ref canonicalrecognition.CanonicalRecognition "CanonicalRecognition" interface
11983 # @ref tui_3dsketcher_page "Example"
11984 def CanonicalRecognition (self):
11986 Obtain a canonical recognition interface.
11989 cr = geompy.CanonicalRecognition()
11990 cr.isLine(aLine, tolerance)
11992 cr = CanonicalRecognition (self)
11995 # end of l2_measure
11998 ## @addtogroup l2_import_export
12001 ## Import a shape from the BREP, IGES, STEP or other file
12002 # (depends on given format) with given name.
12004 # Note: this function is deprecated, it is kept for backward compatibility only
12005 # Use Import<FormatName> instead, where <FormatName> is a name of desirable format to import.
12007 # @param theFileName The file, containing the shape.
12008 # @param theFormatName Specify format for the file reading.
12009 # Available formats can be obtained with InsertOp.ImportTranslators() method.
12010 # If format 'IGES_SCALE' is used instead of 'IGES' or
12011 # format 'STEP_SCALE' is used instead of 'STEP',
12012 # length unit will be set to 'meter' and result model will be scaled.
12013 # @param theName Object name; when specified, this parameter is used
12014 # for result publication in the study. Otherwise, if automatic
12015 # publication is switched on, default value is used for result name.
12017 # @return New GEOM.GEOM_Object, containing the imported shape.
12018 # If material names are imported it returns the list of
12019 # objects. The first one is the imported object followed by
12021 # @note Auto publishing is allowed for the shape itself. Imported
12022 # material groups are not automatically published.
12024 # @ref swig_Import_Export "Example"
12025 @ManageTransactions("InsertOp")
12026 def ImportFile(self, theFileName, theFormatName, theName=None):
12028 Import a shape from the BREP, IGES, STEP or other file
12029 (depends on given format) with given name.
12031 Note: this function is deprecated, it is kept for backward compatibility only
12032 Use Import<FormatName> instead, where <FormatName> is a name of desirable format to import.
12035 theFileName The file, containing the shape.
12036 theFormatName Specify format for the file reading.
12037 Available formats can be obtained with geompy.InsertOp.ImportTranslators() method.
12038 If format 'IGES_SCALE' is used instead of 'IGES' or
12039 format 'STEP_SCALE' is used instead of 'STEP',
12040 length unit will be set to 'meter' and result model will be scaled.
12041 theName Object name; when specified, this parameter is used
12042 for result publication in the study. Otherwise, if automatic
12043 publication is switched on, default value is used for result name.
12046 New GEOM.GEOM_Object, containing the imported shape.
12047 If material names are imported it returns the list of
12048 objects. The first one is the imported object followed by
12051 Auto publishing is allowed for the shape itself. Imported
12052 material groups are not automatically published.
12054 # Example: see GEOM_TestOthers.py
12056 WARNING: Function ImportFile is deprecated, use Import<FormatName> instead,
12057 where <FormatName> is a name of desirable format for importing.
12059 aListObj = self.InsertOp.ImportFile(theFileName, theFormatName)
12060 RaiseIfFailed("ImportFile", self.InsertOp)
12061 aNbObj = len(aListObj)
12063 self._autoPublish(aListObj[0], theName, "imported")
12068 ## Deprecated analog of ImportFile()
12069 def Import(self, theFileName, theFormatName, theName=None):
12071 Deprecated analog of geompy.ImportFile, kept for backward compatibility only.
12073 # note: auto-publishing is done in self.ImportFile()
12074 return self.ImportFile(theFileName, theFormatName, theName)
12076 ## Read a shape from the binary stream, containing its bounding representation (BRep).
12078 # @note As the byte-stream representing the shape data can be quite large, this method
12079 # is not automatically dumped to the Python script with the DumpStudy functionality;
12080 # so please use this method carefully, only for strong reasons.
12082 # @note GEOM.GEOM_Object.GetShapeStream() method can be used to obtain the shape's
12085 # @param theStream The BRep binary stream.
12086 # @param theName Object name; when specified, this parameter is used
12087 # for result publication in the study. Otherwise, if automatic
12088 # publication is switched on, default value is used for result name.
12090 # @return New GEOM_Object, containing the shape, read from theStream.
12092 # @ref swig_Import_Export "Example"
12093 @ManageTransactions("InsertOp")
12094 def RestoreShape (self, theStream, theName=None):
12096 Read a shape from the binary stream, containing its bounding representation (BRep).
12099 shape.GetShapeStream() method can be used to obtain the shape's BRep stream.
12102 theStream The BRep binary stream.
12103 theName Object name; when specified, this parameter is used
12104 for result publication in the study. Otherwise, if automatic
12105 publication is switched on, default value is used for result name.
12108 New GEOM_Object, containing the shape, read from theStream.
12110 # Example: see GEOM_TestOthers.py
12112 # this is the workaround to ignore invalid case when data stream is empty
12113 if int(os.getenv("GEOM_IGNORE_RESTORE_SHAPE", "0")) > 0:
12114 print("WARNING: Result of RestoreShape is a NULL shape!")
12116 anObj = self.InsertOp.RestoreShape(theStream)
12117 RaiseIfFailed("RestoreShape", self.InsertOp)
12118 self._autoPublish(anObj, theName, "restored")
12121 ## Export the given shape into a file with given name.
12123 # Note: this function is deprecated, it is kept for backward compatibility only
12124 # Use Export<FormatName> instead, where <FormatName> is a name of desirable format to export.
12126 # @param theObject Shape to be stored in the file.
12127 # @param theFileName Name of the file to store the given shape in.
12128 # @param theFormatName Specify format for the shape storage.
12129 # Available formats can be obtained with
12130 # geompy.InsertOp.ExportTranslators()[0] method.
12132 # @ref swig_Import_Export "Example"
12133 @ManageTransactions("InsertOp")
12134 def Export(self, theObject, theFileName, theFormatName):
12136 Export the given shape into a file with given name.
12138 Note: this function is deprecated, it is kept for backward compatibility only
12139 Use Export<FormatName> instead, where <FormatName> is a name of desirable format to export.
12142 theObject Shape to be stored in the file.
12143 theFileName Name of the file to store the given shape in.
12144 theFormatName Specify format for the shape storage.
12145 Available formats can be obtained with
12146 geompy.InsertOp.ExportTranslators()[0] method.
12148 # Example: see GEOM_TestOthers.py
12150 WARNING: Function Export is deprecated, use Export<FormatName> instead,
12151 where <FormatName> is a name of desirable format for exporting.
12153 self.InsertOp.Export(theObject, theFileName, theFormatName)
12154 if self.InsertOp.IsDone() == 0:
12155 raise RuntimeError("Export : " + self.InsertOp.GetErrorCode())
12159 # end of l2_import_export
12162 ## @addtogroup l3_blocks
12165 ## Create a quadrangle face from four edges. Order of Edges is not
12166 # important. It is not necessary that edges share the same vertex.
12167 # @param E1,E2,E3,E4 Edges for the face bound.
12168 # @param theName Object name; when specified, this parameter is used
12169 # for result publication in the study. Otherwise, if automatic
12170 # publication is switched on, default value is used for result name.
12172 # @return New GEOM.GEOM_Object, containing the created face.
12174 # @ref tui_building_by_blocks_page "Example"
12175 @ManageTransactions("BlocksOp")
12176 def MakeQuad(self, E1, E2, E3, E4, theName=None):
12178 Create a quadrangle face from four edges. Order of Edges is not
12179 important. It is not necessary that edges share the same vertex.
12182 E1,E2,E3,E4 Edges for the face bound.
12183 theName Object name; when specified, this parameter is used
12184 for result publication in the study. Otherwise, if automatic
12185 publication is switched on, default value is used for result name.
12188 New GEOM.GEOM_Object, containing the created face.
12191 qface1 = geompy.MakeQuad(edge1, edge2, edge3, edge4)
12193 # Example: see GEOM_Spanner.py
12194 anObj = self.BlocksOp.MakeQuad(E1, E2, E3, E4)
12195 RaiseIfFailed("MakeQuad", self.BlocksOp)
12196 self._autoPublish(anObj, theName, "quad")
12199 ## Create a quadrangle face on two edges.
12200 # The missing edges will be built by creating the shortest ones.
12201 # @param E1,E2 Two opposite edges for the face.
12202 # @param theName Object name; when specified, this parameter is used
12203 # for result publication in the study. Otherwise, if automatic
12204 # publication is switched on, default value is used for result name.
12206 # @return New GEOM.GEOM_Object, containing the created face.
12208 # @ref tui_building_by_blocks_page "Example"
12209 @ManageTransactions("BlocksOp")
12210 def MakeQuad2Edges(self, E1, E2, theName=None):
12212 Create a quadrangle face on two edges.
12213 The missing edges will be built by creating the shortest ones.
12216 E1,E2 Two opposite edges for the face.
12217 theName Object name; when specified, this parameter is used
12218 for result publication in the study. Otherwise, if automatic
12219 publication is switched on, default value is used for result name.
12222 New GEOM.GEOM_Object, containing the created face.
12226 p1 = geompy.MakeVertex( 0., 0., 0.)
12227 p2 = geompy.MakeVertex(150., 30., 0.)
12228 p3 = geompy.MakeVertex( 0., 120., 50.)
12229 p4 = geompy.MakeVertex( 0., 40., 70.)
12231 edge1 = geompy.MakeEdge(p1, p2)
12232 edge2 = geompy.MakeEdge(p3, p4)
12233 # create a quadrangle face from two edges
12234 qface2 = geompy.MakeQuad2Edges(edge1, edge2)
12236 # Example: see GEOM_Spanner.py
12237 anObj = self.BlocksOp.MakeQuad2Edges(E1, E2)
12238 RaiseIfFailed("MakeQuad2Edges", self.BlocksOp)
12239 self._autoPublish(anObj, theName, "quad")
12242 ## Create a quadrangle face with specified corners.
12243 # The missing edges will be built by creating the shortest ones.
12244 # @param V1,V2,V3,V4 Corner vertices for the face.
12245 # @param theName Object name; when specified, this parameter is used
12246 # for result publication in the study. Otherwise, if automatic
12247 # publication is switched on, default value is used for result name.
12249 # @return New GEOM.GEOM_Object, containing the created face.
12251 # @ref tui_building_by_blocks_page "Example 1"
12252 # \n @ref swig_MakeQuad4Vertices "Example 2"
12253 @ManageTransactions("BlocksOp")
12254 def MakeQuad4Vertices(self, V1, V2, V3, V4, theName=None):
12256 Create a quadrangle face with specified corners.
12257 The missing edges will be built by creating the shortest ones.
12260 V1,V2,V3,V4 Corner vertices for the face.
12261 theName Object name; when specified, this parameter is used
12262 for result publication in the study. Otherwise, if automatic
12263 publication is switched on, default value is used for result name.
12266 New GEOM.GEOM_Object, containing the created face.
12270 p1 = geompy.MakeVertex( 0., 0., 0.)
12271 p2 = geompy.MakeVertex(150., 30., 0.)
12272 p3 = geompy.MakeVertex( 0., 120., 50.)
12273 p4 = geompy.MakeVertex( 0., 40., 70.)
12274 # create a quadrangle from four points in its corners
12275 qface3 = geompy.MakeQuad4Vertices(p1, p2, p3, p4)
12277 # Example: see GEOM_Spanner.py
12278 anObj = self.BlocksOp.MakeQuad4Vertices(V1, V2, V3, V4)
12279 RaiseIfFailed("MakeQuad4Vertices", self.BlocksOp)
12280 self._autoPublish(anObj, theName, "quad")
12283 ## Create a hexahedral solid, bounded by the six given faces. Order of
12284 # faces is not important. It is not necessary that Faces share the same edge.
12285 # @param F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
12286 # @param theName Object name; when specified, this parameter is used
12287 # for result publication in the study. Otherwise, if automatic
12288 # publication is switched on, default value is used for result name.
12290 # @return New GEOM.GEOM_Object, containing the created solid.
12292 # @ref tui_building_by_blocks_page "Example 1"
12293 # \n @ref swig_MakeHexa "Example 2"
12294 @ManageTransactions("BlocksOp")
12295 def MakeHexa(self, F1, F2, F3, F4, F5, F6, theName=None):
12297 Create a hexahedral solid, bounded by the six given faces. Order of
12298 faces is not important. It is not necessary that Faces share the same edge.
12301 F1,F2,F3,F4,F5,F6 Faces for the hexahedral solid.
12302 theName Object name; when specified, this parameter is used
12303 for result publication in the study. Otherwise, if automatic
12304 publication is switched on, default value is used for result name.
12307 New GEOM.GEOM_Object, containing the created solid.
12310 solid = geompy.MakeHexa(qface1, qface2, qface3, qface4, qface5, qface6)
12312 # Example: see GEOM_Spanner.py
12313 anObj = self.BlocksOp.MakeHexa(F1, F2, F3, F4, F5, F6)
12314 RaiseIfFailed("MakeHexa", self.BlocksOp)
12315 self._autoPublish(anObj, theName, "hexa")
12318 ## Create a hexahedral solid between two given faces.
12319 # The missing faces will be built by creating the smallest ones.
12320 # @param F1,F2 Two opposite faces for the hexahedral solid.
12321 # @param theName Object name; when specified, this parameter is used
12322 # for result publication in the study. Otherwise, if automatic
12323 # publication is switched on, default value is used for result name.
12325 # @return New GEOM.GEOM_Object, containing the created solid.
12327 # @ref tui_building_by_blocks_page "Example 1"
12328 # \n @ref swig_MakeHexa2Faces "Example 2"
12329 @ManageTransactions("BlocksOp")
12330 def MakeHexa2Faces(self, F1, F2, theName=None):
12332 Create a hexahedral solid between two given faces.
12333 The missing faces will be built by creating the smallest ones.
12336 F1,F2 Two opposite faces for the hexahedral solid.
12337 theName Object name; when specified, this parameter is used
12338 for result publication in the study. Otherwise, if automatic
12339 publication is switched on, default value is used for result name.
12342 New GEOM.GEOM_Object, containing the created solid.
12345 solid1 = geompy.MakeHexa2Faces(qface1, qface2)
12347 # Example: see GEOM_Spanner.py
12348 anObj = self.BlocksOp.MakeHexa2Faces(F1, F2)
12349 RaiseIfFailed("MakeHexa2Faces", self.BlocksOp)
12350 self._autoPublish(anObj, theName, "hexa")
12356 ## @addtogroup l3_blocks_op
12359 ## Get a vertex, found in the given shape by its coordinates.
12360 # @param theShape Block or a compound of blocks.
12361 # @param theX,theY,theZ Coordinates of the sought vertex.
12362 # @param theEpsilon Maximum allowed distance between the resulting
12363 # vertex and point with the given coordinates.
12364 # @param theName Object name; when specified, this parameter is used
12365 # for result publication in the study. Otherwise, if automatic
12366 # publication is switched on, default value is used for result name.
12368 # @return New GEOM.GEOM_Object, containing the found vertex.
12370 # @ref swig_GetPoint "Example"
12371 @ManageTransactions("BlocksOp")
12372 def GetPoint(self, theShape, theX, theY, theZ, theEpsilon, theName=None):
12374 Get a vertex, found in the given shape by its coordinates.
12377 theShape Block or a compound of blocks.
12378 theX,theY,theZ Coordinates of the sought vertex.
12379 theEpsilon Maximum allowed distance between the resulting
12380 vertex and point with the given coordinates.
12381 theName Object name; when specified, this parameter is used
12382 for result publication in the study. Otherwise, if automatic
12383 publication is switched on, default value is used for result name.
12386 New GEOM.GEOM_Object, containing the found vertex.
12389 pnt = geompy.GetPoint(shape, -50, 50, 50, 0.01)
12391 # Example: see GEOM_TestOthers.py
12392 anObj = self.BlocksOp.GetPoint(theShape, theX, theY, theZ, theEpsilon)
12393 RaiseIfFailed("GetPoint", self.BlocksOp)
12394 self._autoPublish(anObj, theName, "vertex")
12397 ## Find a vertex of the given shape, which has minimal distance to the given point.
12398 # @param theShape Any shape.
12399 # @param thePoint Point, close to the desired vertex.
12400 # @param theName Object name; when specified, this parameter is used
12401 # for result publication in the study. Otherwise, if automatic
12402 # publication is switched on, default value is used for result name.
12404 # @return New GEOM.GEOM_Object, containing the found vertex.
12406 # @ref swig_GetVertexNearPoint "Example"
12407 @ManageTransactions("BlocksOp")
12408 def GetVertexNearPoint(self, theShape, thePoint, theName=None):
12410 Find a vertex of the given shape, which has minimal distance to the given point.
12413 theShape Any shape.
12414 thePoint Point, close to the desired vertex.
12415 theName Object name; when specified, this parameter is used
12416 for result publication in the study. Otherwise, if automatic
12417 publication is switched on, default value is used for result name.
12420 New GEOM.GEOM_Object, containing the found vertex.
12423 pmidle = geompy.MakeVertex(50, 0, 50)
12424 edge1 = geompy.GetEdgeNearPoint(blocksComp, pmidle)
12426 # Example: see GEOM_TestOthers.py
12427 anObj = self.BlocksOp.GetVertexNearPoint(theShape, thePoint)
12428 RaiseIfFailed("GetVertexNearPoint", self.BlocksOp)
12429 self._autoPublish(anObj, theName, "vertex")
12432 ## Get an edge, found in the given shape by two given vertices.
12433 # @param theShape Block or a compound of blocks.
12434 # @param thePoint1,thePoint2 Points, close to the ends of the desired edge.
12435 # @param theName Object name; when specified, this parameter is used
12436 # for result publication in the study. Otherwise, if automatic
12437 # publication is switched on, default value is used for result name.
12439 # @return New GEOM.GEOM_Object, containing the found edge.
12441 # @ref swig_GetEdge "Example"
12442 @ManageTransactions("BlocksOp")
12443 def GetEdge(self, theShape, thePoint1, thePoint2, theName=None):
12445 Get an edge, found in the given shape by two given vertices.
12448 theShape Block or a compound of blocks.
12449 thePoint1,thePoint2 Points, close to the ends of the desired edge.
12450 theName Object name; when specified, this parameter is used
12451 for result publication in the study. Otherwise, if automatic
12452 publication is switched on, default value is used for result name.
12455 New GEOM.GEOM_Object, containing the found edge.
12457 # Example: see GEOM_Spanner.py
12458 anObj = self.BlocksOp.GetEdge(theShape, thePoint1, thePoint2)
12459 RaiseIfFailed("GetEdge", self.BlocksOp)
12460 self._autoPublish(anObj, theName, "edge")
12463 ## Find an edge of the given shape, which has minimal distance to the given point.
12464 # @param theShape Block or a compound of blocks.
12465 # @param thePoint Point, close to the desired edge.
12466 # @param theName Object name; when specified, this parameter is used
12467 # for result publication in the study. Otherwise, if automatic
12468 # publication is switched on, default value is used for result name.
12470 # @return New GEOM.GEOM_Object, containing the found edge.
12472 # @ref swig_GetEdgeNearPoint "Example"
12473 @ManageTransactions("BlocksOp")
12474 def GetEdgeNearPoint(self, theShape, thePoint, theName=None):
12476 Find an edge of the given shape, which has minimal distance to the given point.
12479 theShape Block or a compound of blocks.
12480 thePoint Point, close to the desired edge.
12481 theName Object name; when specified, this parameter is used
12482 for result publication in the study. Otherwise, if automatic
12483 publication is switched on, default value is used for result name.
12486 New GEOM.GEOM_Object, containing the found edge.
12488 # Example: see GEOM_TestOthers.py
12489 anObj = self.BlocksOp.GetEdgeNearPoint(theShape, thePoint)
12490 RaiseIfFailed("GetEdgeNearPoint", self.BlocksOp)
12491 self._autoPublish(anObj, theName, "edge")
12494 ## Returns a face, found in the given shape by four given corner vertices.
12495 # @param theShape Block or a compound of blocks.
12496 # @param thePoint1,thePoint2,thePoint3,thePoint4 Points, close to the corners of the desired face.
12497 # @param theName Object name; when specified, this parameter is used
12498 # for result publication in the study. Otherwise, if automatic
12499 # publication is switched on, default value is used for result name.
12501 # @return New GEOM.GEOM_Object, containing the found face.
12503 # @ref swig_todo "Example"
12504 @ManageTransactions("BlocksOp")
12505 def GetFaceByPoints(self, theShape, thePoint1, thePoint2, thePoint3, thePoint4, theName=None):
12507 Returns a face, found in the given shape by four given corner vertices.
12510 theShape Block or a compound of blocks.
12511 thePoint1,thePoint2,thePoint3,thePoint4 Points, close to the corners of the desired face.
12512 theName Object name; when specified, this parameter is used
12513 for result publication in the study. Otherwise, if automatic
12514 publication is switched on, default value is used for result name.
12517 New GEOM.GEOM_Object, containing the found face.
12519 # Example: see GEOM_Spanner.py
12520 anObj = self.BlocksOp.GetFaceByPoints(theShape, thePoint1, thePoint2, thePoint3, thePoint4)
12521 RaiseIfFailed("GetFaceByPoints", self.BlocksOp)
12522 self._autoPublish(anObj, theName, "face")
12525 ## Get a face of block, found in the given shape by two given edges.
12526 # @param theShape Block or a compound of blocks.
12527 # @param theEdge1,theEdge2 Edges, close to the edges of the desired face.
12528 # @param theName Object name; when specified, this parameter is used
12529 # for result publication in the study. Otherwise, if automatic
12530 # publication is switched on, default value is used for result name.
12532 # @return New GEOM.GEOM_Object, containing the found face.
12534 # @ref swig_todo "Example"
12535 @ManageTransactions("BlocksOp")
12536 def GetFaceByEdges(self, theShape, theEdge1, theEdge2, theName=None):
12538 Get a face of block, found in the given shape by two given edges.
12541 theShape Block or a compound of blocks.
12542 theEdge1,theEdge2 Edges, close to the edges of the desired face.
12543 theName Object name; when specified, this parameter is used
12544 for result publication in the study. Otherwise, if automatic
12545 publication is switched on, default value is used for result name.
12548 New GEOM.GEOM_Object, containing the found face.
12550 # Example: see GEOM_Spanner.py
12551 anObj = self.BlocksOp.GetFaceByEdges(theShape, theEdge1, theEdge2)
12552 RaiseIfFailed("GetFaceByEdges", self.BlocksOp)
12553 self._autoPublish(anObj, theName, "face")
12556 ## Find a face, opposite to the given one in the given block.
12557 # @param theBlock Must be a hexahedral solid.
12558 # @param theFace Face of \a theBlock, opposite to the desired face.
12559 # @param theName Object name; when specified, this parameter is used
12560 # for result publication in the study. Otherwise, if automatic
12561 # publication is switched on, default value is used for result name.
12563 # @return New GEOM.GEOM_Object, containing the found face.
12565 # @ref swig_GetOppositeFace "Example"
12566 @ManageTransactions("BlocksOp")
12567 def GetOppositeFace(self, theBlock, theFace, theName=None):
12569 Find a face, opposite to the given one in the given block.
12572 theBlock Must be a hexahedral solid.
12573 theFace Face of theBlock, opposite to the desired face.
12574 theName Object name; when specified, this parameter is used
12575 for result publication in the study. Otherwise, if automatic
12576 publication is switched on, default value is used for result name.
12579 New GEOM.GEOM_Object, containing the found face.
12581 # Example: see GEOM_Spanner.py
12582 anObj = self.BlocksOp.GetOppositeFace(theBlock, theFace)
12583 RaiseIfFailed("GetOppositeFace", self.BlocksOp)
12584 self._autoPublish(anObj, theName, "face")
12587 ## Find a face of the given shape, which has minimal distance to the given point.
12588 # @param theShape Block or a compound of blocks.
12589 # @param thePoint Point, close to the desired face.
12590 # @param theName Object name; when specified, this parameter is used
12591 # for result publication in the study. Otherwise, if automatic
12592 # publication is switched on, default value is used for result name.
12594 # @return New GEOM.GEOM_Object, containing the found face.
12596 # @ref swig_GetFaceNearPoint "Example"
12597 @ManageTransactions("BlocksOp")
12598 def GetFaceNearPoint(self, theShape, thePoint, theName=None):
12600 Find a face of the given shape, which has minimal distance to the given point.
12603 theShape Block or a compound of blocks.
12604 thePoint Point, close to the desired face.
12605 theName Object name; when specified, this parameter is used
12606 for result publication in the study. Otherwise, if automatic
12607 publication is switched on, default value is used for result name.
12610 New GEOM.GEOM_Object, containing the found face.
12612 # Example: see GEOM_Spanner.py
12613 anObj = self.BlocksOp.GetFaceNearPoint(theShape, thePoint)
12614 RaiseIfFailed("GetFaceNearPoint", self.BlocksOp)
12615 self._autoPublish(anObj, theName, "face")
12618 ## Find a face of block, whose outside normale has minimal angle with the given vector.
12619 # @param theBlock Block or a compound of blocks.
12620 # @param theVector Vector, close to the normale of the desired face.
12621 # @param theName Object name; when specified, this parameter is used
12622 # for result publication in the study. Otherwise, if automatic
12623 # publication is switched on, default value is used for result name.
12625 # @return New GEOM.GEOM_Object, containing the found face.
12627 # @ref swig_todo "Example"
12628 @ManageTransactions("BlocksOp")
12629 def GetFaceByNormale(self, theBlock, theVector, theName=None):
12631 Find a face of block, whose outside normale has minimal angle with the given vector.
12634 theBlock Block or a compound of blocks.
12635 theVector Vector, close to the normale of the desired face.
12636 theName Object name; when specified, this parameter is used
12637 for result publication in the study. Otherwise, if automatic
12638 publication is switched on, default value is used for result name.
12641 New GEOM.GEOM_Object, containing the found face.
12643 # Example: see GEOM_Spanner.py
12644 anObj = self.BlocksOp.GetFaceByNormale(theBlock, theVector)
12645 RaiseIfFailed("GetFaceByNormale", self.BlocksOp)
12646 self._autoPublish(anObj, theName, "face")
12649 ## Find all sub-shapes of type \a theShapeType of the given shape,
12650 # which have minimal distance to the given point.
12651 # @param theShape Any shape.
12652 # @param thePoint Point, close to the desired shape.
12653 # @param theShapeType Defines what kind of sub-shapes is searched GEOM::shape_type
12654 # @param theTolerance The tolerance for distances comparison. All shapes
12655 # with distances to the given point in interval
12656 # [minimal_distance, minimal_distance + theTolerance] will be gathered.
12657 # @param theName Object name; when specified, this parameter is used
12658 # for result publication in the study. Otherwise, if automatic
12659 # publication is switched on, default value is used for result name.
12661 # @return New GEOM_Object, containing a group of all found shapes.
12663 # @ref swig_GetShapesNearPoint "Example"
12664 @ManageTransactions("BlocksOp")
12665 def GetShapesNearPoint(self, theShape, thePoint, theShapeType, theTolerance = 1e-07, theName=None):
12667 Find all sub-shapes of type theShapeType of the given shape,
12668 which have minimal distance to the given point.
12671 theShape Any shape.
12672 thePoint Point, close to the desired shape.
12673 theShapeType Defines what kind of sub-shapes is searched (see GEOM::shape_type)
12674 theTolerance The tolerance for distances comparison. All shapes
12675 with distances to the given point in interval
12676 [minimal_distance, minimal_distance + theTolerance] will be gathered.
12677 theName Object name; when specified, this parameter is used
12678 for result publication in the study. Otherwise, if automatic
12679 publication is switched on, default value is used for result name.
12682 New GEOM_Object, containing a group of all found shapes.
12684 # Example: see GEOM_TestOthers.py
12685 anObj = self.BlocksOp.GetShapesNearPoint(theShape, thePoint, theShapeType, theTolerance)
12686 RaiseIfFailed("GetShapesNearPoint", self.BlocksOp)
12687 self._autoPublish(anObj, theName, "group")
12690 # end of l3_blocks_op
12693 ## @addtogroup l4_blocks_measure
12696 ## Check, if the compound of blocks is given.
12697 # To be considered as a compound of blocks, the
12698 # given shape must satisfy the following conditions:
12699 # - Each element of the compound should be a Block (6 faces).
12700 # - Each face should be a quadrangle, i.e. it should have only 1 wire
12701 # with 4 edges. If <VAR>theIsUseC1</VAR> is set to True and
12702 # there are more than 4 edges in the only wire of a face,
12703 # this face is considered to be quadrangle if it has 4 bounds
12704 # (1 or more edge) of C1 continuity.
12705 # - A connection between two Blocks should be an entire quadrangle face or an entire edge.
12706 # - The compound should be connexe.
12707 # - The glue between two quadrangle faces should be applied.
12708 # @param theCompound The compound to check.
12709 # @param theIsUseC1 Flag to check if there are 4 bounds on a face
12710 # taking into account C1 continuity.
12711 # @param theAngTolerance the angular tolerance to check if two neighbor
12712 # edges are codirectional in the common vertex with this
12713 # tolerance. This parameter is used only if
12714 # <VAR>theIsUseC1</VAR> is set to True.
12715 # @return TRUE, if the given shape is a compound of blocks.
12716 # If theCompound is not valid, prints all discovered errors.
12718 # @ref tui_check_compound_of_blocks_page "Example 1"
12719 # \n @ref swig_CheckCompoundOfBlocks "Example 2"
12720 @ManageTransactions("BlocksOp")
12721 def CheckCompoundOfBlocks(self,theCompound, theIsUseC1 = False,
12722 theAngTolerance = 1.e-12):
12724 Check, if the compound of blocks is given.
12725 To be considered as a compound of blocks, the
12726 given shape must satisfy the following conditions:
12727 - Each element of the compound should be a Block (6 faces).
12728 - Each face should be a quadrangle, i.e. it should have only 1 wire
12729 with 4 edges. If theIsUseC1 is set to True and
12730 there are more than 4 edges in the only wire of a face,
12731 this face is considered to be quadrangle if it has 4 bounds
12732 (1 or more edge) of C1 continuity.
12733 - A connection between two Blocks should be an entire quadrangle face or an entire edge.
12734 - The compound should be connexe.
12735 - The glue between two quadrangle faces should be applied.
12738 theCompound The compound to check.
12739 theIsUseC1 Flag to check if there are 4 bounds on a face
12740 taking into account C1 continuity.
12741 theAngTolerance the angular tolerance to check if two neighbor
12742 edges are codirectional in the common vertex with this
12743 tolerance. This parameter is used only if
12744 theIsUseC1 is set to True.
12747 TRUE, if the given shape is a compound of blocks.
12748 If theCompound is not valid, prints all discovered errors.
12750 # Example: see GEOM_Spanner.py
12753 aTolerance = theAngTolerance
12754 (IsValid, BCErrors) = self.BlocksOp.CheckCompoundOfBlocks(theCompound, aTolerance)
12755 RaiseIfFailed("CheckCompoundOfBlocks", self.BlocksOp)
12757 Descr = self.BlocksOp.PrintBCErrors(theCompound, BCErrors)
12761 ## Retrieve all non blocks solids and faces from \a theShape.
12762 # @param theShape The shape to explore.
12763 # @param theIsUseC1 Flag to check if there are 4 bounds on a face
12764 # taking into account C1 continuity.
12765 # @param theAngTolerance the angular tolerance to check if two neighbor
12766 # edges are codirectional in the common vertex with this
12767 # tolerance. This parameter is used only if
12768 # <VAR>theIsUseC1</VAR> is set to True.
12769 # @param theName Object name; when specified, this parameter is used
12770 # for result publication in the study. Otherwise, if automatic
12771 # publication is switched on, default value is used for result name.
12773 # @return A tuple of two GEOM_Objects. The first object is a group of all
12774 # non block solids (= not 6 faces, or with 6 faces, but with the
12775 # presence of non-quadrangular faces). The second object is a
12776 # group of all non quadrangular faces (= faces with more then
12777 # 1 wire or, if <VAR>theIsUseC1</VAR> is set to True, faces
12778 # with 1 wire with not 4 edges that do not form 4 bounds of
12781 # @ref tui_get_non_blocks_page "Example 1"
12782 # \n @ref swig_GetNonBlocks "Example 2"
12783 @ManageTransactions("BlocksOp")
12784 def GetNonBlocks (self, theShape, theIsUseC1 = False,
12785 theAngTolerance = 1.e-12, theName=None):
12787 Retrieve all non blocks solids and faces from theShape.
12790 theShape The shape to explore.
12791 theIsUseC1 Flag to check if there are 4 bounds on a face
12792 taking into account C1 continuity.
12793 theAngTolerance the angular tolerance to check if two neighbor
12794 edges are codirectional in the common vertex with this
12795 tolerance. This parameter is used only if
12796 theIsUseC1 is set to True.
12797 theName Object name; when specified, this parameter is used
12798 for result publication in the study. Otherwise, if automatic
12799 publication is switched on, default value is used for result name.
12802 A tuple of two GEOM_Objects. The first object is a group of all
12803 non block solids (= not 6 faces, or with 6 faces, but with the
12804 presence of non-quadrangular faces). The second object is a
12805 group of all non quadrangular faces (= faces with more then
12806 1 wire or, if <VAR>theIsUseC1</VAR> is set to True, faces
12807 with 1 wire with not 4 edges that do not form 4 bounds of
12811 (res_sols, res_faces) = geompy.GetNonBlocks(myShape1)
12813 # Example: see GEOM_Spanner.py
12816 aTolerance = theAngTolerance
12817 aTuple = self.BlocksOp.GetNonBlocks(theShape, aTolerance)
12818 RaiseIfFailed("GetNonBlocks", self.BlocksOp)
12819 self._autoPublish(aTuple, theName, ("groupNonHexas", "groupNonQuads"))
12822 ## Remove all seam and degenerated edges from \a theShape.
12823 # Unite faces and edges, sharing one surface. It means that
12824 # this faces must have references to one C++ surface object (handle).
12825 # @param theShape The compound or single solid to remove irregular edges from.
12826 # @param doUnionFaces If True, then unite faces. If False (the default value),
12827 # do not unite faces.
12828 # @param theName Object name; when specified, this parameter is used
12829 # for result publication in the study. Otherwise, if automatic
12830 # publication is switched on, default value is used for result name.
12832 # @return Improved shape.
12834 # @ref swig_RemoveExtraEdges "Example"
12835 @ManageTransactions("BlocksOp")
12836 def RemoveExtraEdges(self, theShape, doUnionFaces=False, theName=None):
12838 Remove all seam and degenerated edges from theShape.
12839 Unite faces and edges, sharing one surface. It means that
12840 this faces must have references to one C++ surface object (handle).
12843 theShape The compound or single solid to remove irregular edges from.
12844 doUnionFaces If True, then unite faces. If False (the default value),
12845 do not unite faces.
12846 theName Object name; when specified, this parameter is used
12847 for result publication in the study. Otherwise, if automatic
12848 publication is switched on, default value is used for result name.
12853 # Example: see GEOM_TestOthers.py
12854 nbFacesOptimum = -1 # -1 means do not unite faces
12855 if doUnionFaces is True: nbFacesOptimum = 0 # 0 means unite faces
12856 anObj = self.BlocksOp.RemoveExtraEdges(theShape, nbFacesOptimum)
12857 RaiseIfFailed("RemoveExtraEdges", self.BlocksOp)
12858 self._autoPublish(anObj, theName, "removeExtraEdges")
12861 ## Performs union faces of \a theShape
12862 # Unite faces sharing one surface. It means that
12863 # these faces must have references to one C++ surface object (handle).
12864 # @param theShape The compound or single solid that contains faces
12865 # to perform union.
12866 # @param theName Object name; when specified, this parameter is used
12867 # for result publication in the study. Otherwise, if automatic
12868 # publication is switched on, default value is used for result name.
12870 # @return Improved shape.
12872 # @ref swig_UnionFaces "Example"
12873 @ManageTransactions("BlocksOp")
12874 def UnionFaces(self, theShape, theName=None):
12876 Performs union faces of theShape.
12877 Unite faces sharing one surface. It means that
12878 these faces must have references to one C++ surface object (handle).
12881 theShape The compound or single solid that contains faces
12883 theName Object name; when specified, this parameter is used
12884 for result publication in the study. Otherwise, if automatic
12885 publication is switched on, default value is used for result name.
12890 # Example: see GEOM_TestOthers.py
12891 anObj = self.BlocksOp.UnionFaces(theShape)
12892 RaiseIfFailed("UnionFaces", self.BlocksOp)
12893 self._autoPublish(anObj, theName, "unionFaces")
12896 ## Check, if the given shape is a blocks compound.
12897 # Fix all detected errors.
12898 # \note Single block can be also fixed by this method.
12899 # @param theShape The compound to check and improve.
12900 # @param theName Object name; when specified, this parameter is used
12901 # for result publication in the study. Otherwise, if automatic
12902 # publication is switched on, default value is used for result name.
12904 # @return Improved compound.
12906 # @ref swig_CheckAndImprove "Example"
12907 @ManageTransactions("BlocksOp")
12908 def CheckAndImprove(self, theShape, theName=None):
12910 Check, if the given shape is a blocks compound.
12911 Fix all detected errors.
12914 Single block can be also fixed by this method.
12917 theShape The compound to check and improve.
12918 theName Object name; when specified, this parameter is used
12919 for result publication in the study. Otherwise, if automatic
12920 publication is switched on, default value is used for result name.
12925 # Example: see GEOM_TestOthers.py
12926 anObj = self.BlocksOp.CheckAndImprove(theShape)
12927 RaiseIfFailed("CheckAndImprove", self.BlocksOp)
12928 self._autoPublish(anObj, theName, "improved")
12931 # end of l4_blocks_measure
12934 ## @addtogroup l3_blocks_op
12937 ## Get all the blocks, contained in the given compound.
12938 # @param theCompound The compound to explode.
12939 # @param theMinNbFaces If solid has lower number of faces, it is not a block.
12940 # @param theMaxNbFaces If solid has higher number of faces, it is not a block.
12941 # @param theName Object name; when specified, this parameter is used
12942 # for result publication in the study. Otherwise, if automatic
12943 # publication is switched on, default value is used for result name.
12945 # @note If theMaxNbFaces = 0, the maximum number of faces is not restricted.
12947 # @return List of GEOM.GEOM_Object, containing the retrieved blocks.
12949 # @ref tui_explode_on_blocks "Example 1"
12950 # \n @ref swig_MakeBlockExplode "Example 2"
12951 @ManageTransactions("BlocksOp")
12952 def MakeBlockExplode(self, theCompound, theMinNbFaces, theMaxNbFaces, theName=None):
12954 Get all the blocks, contained in the given compound.
12957 theCompound The compound to explode.
12958 theMinNbFaces If solid has lower number of faces, it is not a block.
12959 theMaxNbFaces If solid has higher number of faces, it is not a block.
12960 theName Object name; when specified, this parameter is used
12961 for result publication in the study. Otherwise, if automatic
12962 publication is switched on, default value is used for result name.
12965 If theMaxNbFaces = 0, the maximum number of faces is not restricted.
12968 List of GEOM.GEOM_Object, containing the retrieved blocks.
12970 # Example: see GEOM_TestOthers.py
12971 theMinNbFaces,theMaxNbFaces,Parameters = ParseParameters(theMinNbFaces,theMaxNbFaces)
12972 aList = self.BlocksOp.ExplodeCompoundOfBlocks(theCompound, theMinNbFaces, theMaxNbFaces)
12973 RaiseIfFailed("ExplodeCompoundOfBlocks", self.BlocksOp)
12974 for anObj in aList:
12975 anObj.SetParameters(Parameters)
12977 self._autoPublish(aList, theName, "block")
12980 ## Find block, containing the given point inside its volume or on boundary.
12981 # @param theCompound Compound, to find block in.
12982 # @param thePoint Point, close to the desired block. If the point lays on
12983 # boundary between some blocks, we return block with nearest center.
12984 # @param theName Object name; when specified, this parameter is used
12985 # for result publication in the study. Otherwise, if automatic
12986 # publication is switched on, default value is used for result name.
12988 # @return New GEOM.GEOM_Object, containing the found block.
12990 # @ref swig_todo "Example"
12991 @ManageTransactions("BlocksOp")
12992 def GetBlockNearPoint(self, theCompound, thePoint, theName=None):
12994 Find block, containing the given point inside its volume or on boundary.
12997 theCompound Compound, to find block in.
12998 thePoint Point, close to the desired block. If the point lays on
12999 boundary between some blocks, we return block with nearest center.
13000 theName Object name; when specified, this parameter is used
13001 for result publication in the study. Otherwise, if automatic
13002 publication is switched on, default value is used for result name.
13005 New GEOM.GEOM_Object, containing the found block.
13007 # Example: see GEOM_Spanner.py
13008 anObj = self.BlocksOp.GetBlockNearPoint(theCompound, thePoint)
13009 RaiseIfFailed("GetBlockNearPoint", self.BlocksOp)
13010 self._autoPublish(anObj, theName, "block")
13013 ## Find block, containing all the elements, passed as the parts, or maximum quantity of them.
13014 # @param theCompound Compound, to find block in.
13015 # @param theParts List of faces and/or edges and/or vertices to be parts of the found block.
13016 # @param theName Object name; when specified, this parameter is used
13017 # for result publication in the study. Otherwise, if automatic
13018 # publication is switched on, default value is used for result name.
13020 # @return New GEOM.GEOM_Object, containing the found block.
13022 # @ref swig_GetBlockByParts "Example"
13023 @ManageTransactions("BlocksOp")
13024 def GetBlockByParts(self, theCompound, theParts, theName=None):
13026 Find block, containing all the elements, passed as the parts, or maximum quantity of them.
13029 theCompound Compound, to find block in.
13030 theParts List of faces and/or edges and/or vertices to be parts of the found block.
13031 theName Object name; when specified, this parameter is used
13032 for result publication in the study. Otherwise, if automatic
13033 publication is switched on, default value is used for result name.
13036 New GEOM_Object, containing the found block.
13038 # Example: see GEOM_TestOthers.py
13039 anObj = self.BlocksOp.GetBlockByParts(theCompound, theParts)
13040 RaiseIfFailed("GetBlockByParts", self.BlocksOp)
13041 self._autoPublish(anObj, theName, "block")
13044 ## Return all blocks, containing all the elements, passed as the parts.
13045 # @param theCompound Compound, to find blocks in.
13046 # @param theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
13047 # @param theName Object name; when specified, this parameter is used
13048 # for result publication in the study. Otherwise, if automatic
13049 # publication is switched on, default value is used for result name.
13051 # @return List of GEOM.GEOM_Object, containing the found blocks.
13053 # @ref swig_todo "Example"
13054 @ManageTransactions("BlocksOp")
13055 def GetBlocksByParts(self, theCompound, theParts, theName=None):
13057 Return all blocks, containing all the elements, passed as the parts.
13060 theCompound Compound, to find blocks in.
13061 theParts List of faces and/or edges and/or vertices to be parts of the found blocks.
13062 theName Object name; when specified, this parameter is used
13063 for result publication in the study. Otherwise, if automatic
13064 publication is switched on, default value is used for result name.
13067 List of GEOM.GEOM_Object, containing the found blocks.
13069 # Example: see GEOM_Spanner.py
13070 aList = self.BlocksOp.GetBlocksByParts(theCompound, theParts)
13071 RaiseIfFailed("GetBlocksByParts", self.BlocksOp)
13072 self._autoPublish(aList, theName, "block")
13075 ## Multi-transformate block and glue the result.
13076 # Transformation is defined so, as to superpose direction faces.
13077 # @param Block Hexahedral solid to be multi-transformed.
13078 # @param DirFace1 ID of First direction face.
13079 # @param DirFace2 ID of Second direction face.
13080 # @param NbTimes Quantity of transformations to be done.
13081 # @param theName Object name; when specified, this parameter is used
13082 # for result publication in the study. Otherwise, if automatic
13083 # publication is switched on, default value is used for result name.
13085 # @note Unique ID of sub-shape can be obtained, using method GetSubShapeID().
13087 # @return New GEOM.GEOM_Object, containing the result shape.
13089 # @ref tui_multi_transformation "Example"
13090 @ManageTransactions("BlocksOp")
13091 def MakeMultiTransformation1D(self, Block, DirFace1, DirFace2, NbTimes, theName=None):
13093 Multi-transformate block and glue the result.
13094 Transformation is defined so, as to superpose direction faces.
13097 Block Hexahedral solid to be multi-transformed.
13098 DirFace1 ID of First direction face.
13099 DirFace2 ID of Second direction face.
13100 NbTimes Quantity of transformations to be done.
13101 theName Object name; when specified, this parameter is used
13102 for result publication in the study. Otherwise, if automatic
13103 publication is switched on, default value is used for result name.
13106 Unique ID of sub-shape can be obtained, using method GetSubShapeID().
13109 New GEOM.GEOM_Object, containing the result shape.
13111 # Example: see GEOM_Spanner.py
13112 DirFace1,DirFace2,NbTimes,Parameters = ParseParameters(DirFace1,DirFace2,NbTimes)
13113 anObj = self.BlocksOp.MakeMultiTransformation1D(Block, DirFace1, DirFace2, NbTimes)
13114 RaiseIfFailed("MakeMultiTransformation1D", self.BlocksOp)
13115 anObj.SetParameters(Parameters)
13116 self._autoPublish(anObj, theName, "transformed")
13119 ## Multi-transformate block and glue the result.
13120 # @param Block Hexahedral solid to be multi-transformed.
13121 # @param DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
13122 # @param DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
13123 # @param NbTimesU,NbTimesV Quantity of transformations to be done.
13124 # @param theName Object name; when specified, this parameter is used
13125 # for result publication in the study. Otherwise, if automatic
13126 # publication is switched on, default value is used for result name.
13128 # @return New GEOM.GEOM_Object, containing the result shape.
13130 # @ref tui_multi_transformation "Example"
13131 @ManageTransactions("BlocksOp")
13132 def MakeMultiTransformation2D(self, Block, DirFace1U, DirFace2U, NbTimesU,
13133 DirFace1V, DirFace2V, NbTimesV, theName=None):
13135 Multi-transformate block and glue the result.
13138 Block Hexahedral solid to be multi-transformed.
13139 DirFace1U,DirFace2U IDs of Direction faces for the first transformation.
13140 DirFace1V,DirFace2V IDs of Direction faces for the second transformation.
13141 NbTimesU,NbTimesV Quantity of transformations to be done.
13142 theName Object name; when specified, this parameter is used
13143 for result publication in the study. Otherwise, if automatic
13144 publication is switched on, default value is used for result name.
13147 New GEOM.GEOM_Object, containing the result shape.
13149 # Example: see GEOM_Spanner.py
13150 DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV,Parameters = ParseParameters(
13151 DirFace1U,DirFace2U,NbTimesU,DirFace1V,DirFace2V,NbTimesV)
13152 anObj = self.BlocksOp.MakeMultiTransformation2D(Block, DirFace1U, DirFace2U, NbTimesU,
13153 DirFace1V, DirFace2V, NbTimesV)
13154 RaiseIfFailed("MakeMultiTransformation2D", self.BlocksOp)
13155 anObj.SetParameters(Parameters)
13156 self._autoPublish(anObj, theName, "transformed")
13159 ## Build all possible propagation groups.
13160 # Propagation group is a set of all edges, opposite to one (main)
13161 # edge of this group directly or through other opposite edges.
13162 # Notion of Opposite Edge make sense only on quadrangle face.
13163 # @param theShape Shape to build propagation groups on.
13164 # @param theName Object name; when specified, this parameter is used
13165 # for result publication in the study. Otherwise, if automatic
13166 # publication is switched on, default value is used for result name.
13168 # @return List of GEOM.GEOM_Object, each of them is a propagation group.
13170 # @ref swig_Propagate "Example"
13171 @ManageTransactions("BlocksOp")
13172 def Propagate(self, theShape, theName=None):
13174 Build all possible propagation groups.
13175 Propagation group is a set of all edges, opposite to one (main)
13176 edge of this group directly or through other opposite edges.
13177 Notion of Opposite Edge make sense only on quadrangle face.
13180 theShape Shape to build propagation groups on.
13181 theName Object name; when specified, this parameter is used
13182 for result publication in the study. Otherwise, if automatic
13183 publication is switched on, default value is used for result name.
13186 List of GEOM.GEOM_Object, each of them is a propagation group.
13188 # Example: see GEOM_TestOthers.py
13189 listChains = self.BlocksOp.Propagate(theShape)
13190 RaiseIfFailed("Propagate", self.BlocksOp)
13191 self._autoPublish(listChains, theName, "propagate")
13194 # end of l3_blocks_op
13197 ## @addtogroup l3_groups
13200 ## Creates a new group which will store sub-shapes of theMainShape
13201 # @param theMainShape is a GEOM object on which the group is selected
13202 # @param theShapeType defines a shape type of the group (see GEOM::shape_type)
13203 # @param theName Object name; when specified, this parameter is used
13204 # for result publication in the study. Otherwise, if automatic
13205 # publication is switched on, default value is used for result name.
13207 # @return a newly created GEOM group (GEOM.GEOM_Object)
13209 # @ref tui_working_with_groups_page "Example 1"
13210 # \n @ref swig_CreateGroup "Example 2"
13211 @ManageTransactions("GroupOp")
13212 def CreateGroup(self, theMainShape, theShapeType, theName=None):
13214 Creates a new group which will store sub-shapes of theMainShape
13217 theMainShape is a GEOM object on which the group is selected
13218 theShapeType defines a shape type of the group:"COMPOUND", "COMPSOLID",
13219 "SOLID", "SHELL", "FACE", "WIRE", "EDGE", "VERTEX", "SHAPE".
13220 theName Object name; when specified, this parameter is used
13221 for result publication in the study. Otherwise, if automatic
13222 publication is switched on, default value is used for result name.
13225 a newly created GEOM group
13228 group = geompy.CreateGroup(Box, geompy.ShapeType["FACE"])
13231 # Example: see GEOM_TestOthers.py
13232 anObj = self.GroupOp.CreateGroup(theMainShape, theShapeType)
13233 RaiseIfFailed("CreateGroup", self.GroupOp)
13234 self._autoPublish(anObj, theName, "group")
13237 ## Adds a sub-object with ID theSubShapeId to the group
13238 # @param theGroup is a GEOM group to which the new sub-shape is added
13239 # @param theSubShapeID is a sub-shape ID in the main object.
13240 # \note Use method GetSubShapeID() to get an unique ID of the sub-shape
13242 # @ref tui_working_with_groups_page "Example"
13243 @ManageTransactions("GroupOp")
13244 def AddObject(self,theGroup, theSubShapeID):
13246 Adds a sub-object with ID theSubShapeId to the group
13249 theGroup is a GEOM group to which the new sub-shape is added
13250 theSubShapeID is a sub-shape ID in the main object.
13253 Use method GetSubShapeID() to get an unique ID of the sub-shape
13255 # Example: see GEOM_TestOthers.py
13256 self.GroupOp.AddObject(theGroup, theSubShapeID)
13257 if self.GroupOp.GetErrorCode() != "PAL_ELEMENT_ALREADY_PRESENT":
13258 RaiseIfFailed("AddObject", self.GroupOp)
13262 ## Removes a sub-object with ID \a theSubShapeId from the group
13263 # @param theGroup is a GEOM group from which the new sub-shape is removed
13264 # @param theSubShapeID is a sub-shape ID in the main object.
13265 # \note Use method GetSubShapeID() to get an unique ID of the sub-shape
13267 # @ref tui_working_with_groups_page "Example"
13268 @ManageTransactions("GroupOp")
13269 def RemoveObject(self,theGroup, theSubShapeID):
13271 Removes a sub-object with ID theSubShapeId from the group
13274 theGroup is a GEOM group from which the new sub-shape is removed
13275 theSubShapeID is a sub-shape ID in the main object.
13278 Use method GetSubShapeID() to get an unique ID of the sub-shape
13280 # Example: see GEOM_TestOthers.py
13281 self.GroupOp.RemoveObject(theGroup, theSubShapeID)
13282 RaiseIfFailed("RemoveObject", self.GroupOp)
13285 ## Adds to the group all the given shapes. No errors, if some shapes are already included.
13286 # @param theGroup is a GEOM group to which the new sub-shapes are added.
13287 # @param theSubShapes is a list of sub-shapes to be added.
13289 # @ref tui_working_with_groups_page "Example"
13290 @ManageTransactions("GroupOp")
13291 def UnionList (self,theGroup, theSubShapes):
13293 Adds to the group all the given shapes. No errors, if some shapes are already included.
13296 theGroup is a GEOM group to which the new sub-shapes are added.
13297 theSubShapes is a list of sub-shapes to be added.
13299 # Example: see GEOM_TestOthers.py
13300 self.GroupOp.UnionList(theGroup, theSubShapes)
13301 RaiseIfFailed("UnionList", self.GroupOp)
13304 ## Adds to the group all the given shapes. No errors, if some shapes are already included.
13305 # @param theGroup is a GEOM group to which the new sub-shapes are added.
13306 # @param theSubShapes is a list of indices of sub-shapes to be added.
13308 # @ref swig_UnionIDs "Example"
13309 @ManageTransactions("GroupOp")
13310 def UnionIDs(self,theGroup, theSubShapes):
13312 Adds to the group all the given shapes. No errors, if some shapes are already included.
13315 theGroup is a GEOM group to which the new sub-shapes are added.
13316 theSubShapes is a list of indices of sub-shapes to be added.
13318 # Example: see GEOM_TestOthers.py
13319 self.GroupOp.UnionIDs(theGroup, theSubShapes)
13320 RaiseIfFailed("UnionIDs", self.GroupOp)
13323 ## Removes from the group all the given shapes. No errors, if some shapes are not included.
13324 # @param theGroup is a GEOM group from which the sub-shapes are removed.
13325 # @param theSubShapes is a list of sub-shapes to be removed.
13327 # @ref tui_working_with_groups_page "Example"
13328 @ManageTransactions("GroupOp")
13329 def DifferenceList (self,theGroup, theSubShapes):
13331 Removes from the group all the given shapes. No errors, if some shapes are not included.
13334 theGroup is a GEOM group from which the sub-shapes are removed.
13335 theSubShapes is a list of sub-shapes to be removed.
13337 # Example: see GEOM_TestOthers.py
13338 self.GroupOp.DifferenceList(theGroup, theSubShapes)
13339 RaiseIfFailed("DifferenceList", self.GroupOp)
13342 ## Removes from the group all the given shapes. No errors, if some shapes are not included.
13343 # @param theGroup is a GEOM group from which the sub-shapes are removed.
13344 # @param theSubShapes is a list of indices of sub-shapes to be removed.
13346 # @ref swig_DifferenceIDs "Example"
13347 @ManageTransactions("GroupOp")
13348 def DifferenceIDs(self,theGroup, theSubShapes):
13350 Removes from the group all the given shapes. No errors, if some shapes are not included.
13353 theGroup is a GEOM group from which the sub-shapes are removed.
13354 theSubShapes is a list of indices of sub-shapes to be removed.
13356 # Example: see GEOM_TestOthers.py
13357 self.GroupOp.DifferenceIDs(theGroup, theSubShapes)
13358 RaiseIfFailed("DifferenceIDs", self.GroupOp)
13361 ## Union of two groups.
13362 # New group is created. It will contain all entities
13363 # which are present in groups theGroup1 and theGroup2.
13364 # @param theGroup1, theGroup2 are the initial GEOM groups
13365 # to create the united group from.
13366 # @param theName Object name; when specified, this parameter is used
13367 # for result publication in the study. Otherwise, if automatic
13368 # publication is switched on, default value is used for result name.
13370 # @return a newly created GEOM group.
13372 # @ref tui_union_groups_anchor "Example"
13373 @ManageTransactions("GroupOp")
13374 def UnionGroups (self, theGroup1, theGroup2, theName=None):
13376 Union of two groups.
13377 New group is created. It will contain all entities
13378 which are present in groups theGroup1 and theGroup2.
13381 theGroup1, theGroup2 are the initial GEOM groups
13382 to create the united group from.
13383 theName Object name; when specified, this parameter is used
13384 for result publication in the study. Otherwise, if automatic
13385 publication is switched on, default value is used for result name.
13388 a newly created GEOM group.
13390 # Example: see GEOM_TestOthers.py
13391 aGroup = self.GroupOp.UnionGroups(theGroup1, theGroup2)
13392 RaiseIfFailed("UnionGroups", self.GroupOp)
13393 self._autoPublish(aGroup, theName, "group")
13396 ## Intersection of two groups.
13397 # New group is created. It will contain only those entities
13398 # which are present in both groups theGroup1 and theGroup2.
13399 # @param theGroup1, theGroup2 are the initial GEOM groups to get common part of.
13400 # @param theName Object name; when specified, this parameter is used
13401 # for result publication in the study. Otherwise, if automatic
13402 # publication is switched on, default value is used for result name.
13404 # @return a newly created GEOM group.
13406 # @ref tui_intersect_groups_anchor "Example"
13407 @ManageTransactions("GroupOp")
13408 def IntersectGroups (self, theGroup1, theGroup2, theName=None):
13410 Intersection of two groups.
13411 New group is created. It will contain only those entities
13412 which are present in both groups theGroup1 and theGroup2.
13415 theGroup1, theGroup2 are the initial GEOM groups to get common part of.
13416 theName Object name; when specified, this parameter is used
13417 for result publication in the study. Otherwise, if automatic
13418 publication is switched on, default value is used for result name.
13421 a newly created GEOM group.
13423 # Example: see GEOM_TestOthers.py
13424 aGroup = self.GroupOp.IntersectGroups(theGroup1, theGroup2)
13425 RaiseIfFailed("IntersectGroups", self.GroupOp)
13426 self._autoPublish(aGroup, theName, "group")
13429 ## Cut of two groups.
13430 # New group is created. It will contain entities which are
13431 # present in group theGroup1 but are not present in group theGroup2.
13432 # @param theGroup1 is a GEOM group to include elements of.
13433 # @param theGroup2 is a GEOM group to exclude elements of.
13434 # @param theName Object name; when specified, this parameter is used
13435 # for result publication in the study. Otherwise, if automatic
13436 # publication is switched on, default value is used for result name.
13438 # @return a newly created GEOM group.
13440 # @ref tui_cut_groups_anchor "Example"
13441 @ManageTransactions("GroupOp")
13442 def CutGroups (self, theGroup1, theGroup2, theName=None):
13445 New group is created. It will contain entities which are
13446 present in group theGroup1 but are not present in group theGroup2.
13449 theGroup1 is a GEOM group to include elements of.
13450 theGroup2 is a GEOM group to exclude elements of.
13451 theName Object name; when specified, this parameter is used
13452 for result publication in the study. Otherwise, if automatic
13453 publication is switched on, default value is used for result name.
13456 a newly created GEOM group.
13458 # Example: see GEOM_TestOthers.py
13459 aGroup = self.GroupOp.CutGroups(theGroup1, theGroup2)
13460 RaiseIfFailed("CutGroups", self.GroupOp)
13461 self._autoPublish(aGroup, theName, "group")
13464 ## Union of list of groups.
13465 # New group is created. It will contain all entities that are
13466 # present in groups listed in theGList.
13467 # @param theGList is a list of GEOM groups to create the united group from.
13468 # @param theName Object name; when specified, this parameter is used
13469 # for result publication in the study. Otherwise, if automatic
13470 # publication is switched on, default value is used for result name.
13472 # @return a newly created GEOM group.
13474 # @ref tui_union_groups_anchor "Example"
13475 @ManageTransactions("GroupOp")
13476 def UnionListOfGroups (self, theGList, theName=None):
13478 Union of list of groups.
13479 New group is created. It will contain all entities that are
13480 present in groups listed in theGList.
13483 theGList is a list of GEOM groups to create the united group from.
13484 theName Object name; when specified, this parameter is used
13485 for result publication in the study. Otherwise, if automatic
13486 publication is switched on, default value is used for result name.
13489 a newly created GEOM group.
13491 # Example: see GEOM_TestOthers.py
13492 aGroup = self.GroupOp.UnionListOfGroups(theGList)
13493 RaiseIfFailed("UnionListOfGroups", self.GroupOp)
13494 self._autoPublish(aGroup, theName, "group")
13497 ## Cut of lists of groups.
13498 # New group is created. It will contain only entities
13499 # which are present in groups listed in theGList.
13500 # @param theGList is a list of GEOM groups to include elements of.
13501 # @param theName Object name; when specified, this parameter is used
13502 # for result publication in the study. Otherwise, if automatic
13503 # publication is switched on, default value is used for result name.
13505 # @return a newly created GEOM group.
13507 # @ref tui_intersect_groups_anchor "Example"
13508 @ManageTransactions("GroupOp")
13509 def IntersectListOfGroups (self, theGList, theName=None):
13511 Cut of lists of groups.
13512 New group is created. It will contain only entities
13513 which are present in groups listed in theGList.
13516 theGList is a list of GEOM groups to include elements of.
13517 theName Object name; when specified, this parameter is used
13518 for result publication in the study. Otherwise, if automatic
13519 publication is switched on, default value is used for result name.
13522 a newly created GEOM group.
13524 # Example: see GEOM_TestOthers.py
13525 aGroup = self.GroupOp.IntersectListOfGroups(theGList)
13526 RaiseIfFailed("IntersectListOfGroups", self.GroupOp)
13527 self._autoPublish(aGroup, theName, "group")
13530 ## Cut of lists of groups.
13531 # New group is created. It will contain only entities
13532 # which are present in groups listed in theGList1 but
13533 # are not present in groups from theGList2.
13534 # @param theGList1 is a list of GEOM groups to include elements of.
13535 # @param theGList2 is a list of GEOM groups to exclude elements of.
13536 # @param theName Object name; when specified, this parameter is used
13537 # for result publication in the study. Otherwise, if automatic
13538 # publication is switched on, default value is used for result name.
13540 # @return a newly created GEOM group.
13542 # @ref tui_cut_groups_anchor "Example"
13543 @ManageTransactions("GroupOp")
13544 def CutListOfGroups (self, theGList1, theGList2, theName=None):
13546 Cut of lists of groups.
13547 New group is created. It will contain only entities
13548 which are present in groups listed in theGList1 but
13549 are not present in groups from theGList2.
13552 theGList1 is a list of GEOM groups to include elements of.
13553 theGList2 is a list of GEOM groups to exclude elements of.
13554 theName Object name; when specified, this parameter is used
13555 for result publication in the study. Otherwise, if automatic
13556 publication is switched on, default value is used for result name.
13559 a newly created GEOM group.
13561 # Example: see GEOM_TestOthers.py
13562 aGroup = self.GroupOp.CutListOfGroups(theGList1, theGList2)
13563 RaiseIfFailed("CutListOfGroups", self.GroupOp)
13564 self._autoPublish(aGroup, theName, "group")
13567 ## Returns a list of sub-objects ID stored in the group
13568 # @param theGroup is a GEOM group for which a list of IDs is requested
13570 # @ref swig_GetObjectIDs "Example"
13571 @ManageTransactions("GroupOp")
13572 def GetObjectIDs(self,theGroup):
13574 Returns a list of sub-objects ID stored in the group
13577 theGroup is a GEOM group for which a list of IDs is requested
13579 # Example: see GEOM_TestOthers.py
13580 ListIDs = self.GroupOp.GetObjects(theGroup)
13581 RaiseIfFailed("GetObjects", self.GroupOp)
13584 ## Returns a type of sub-objects stored in the group
13585 # @param theGroup is a GEOM group which type is returned.
13587 # @ref swig_GetType "Example"
13588 @ManageTransactions("GroupOp")
13589 def GetType(self,theGroup):
13591 Returns a type of sub-objects stored in the group
13594 theGroup is a GEOM group which type is returned.
13596 # Example: see GEOM_TestOthers.py
13597 aType = self.GroupOp.GetType(theGroup)
13598 RaiseIfFailed("GetType", self.GroupOp)
13601 ## Convert a type of geom object from id to string value
13602 # @param theId is a GEOM object type id.
13603 # @return type of geom object (POINT, VECTOR, PLANE, LINE, TORUS, ... )
13604 # @ref swig_GetType "Example"
13605 def ShapeIdToType(self, theId):
13607 Convert a type of geom object from id to string value
13610 theId is a GEOM object type id.
13613 type of geom object (POINT, VECTOR, PLANE, LINE, TORUS, ... )
13640 return "REVOLUTION"
13688 return "FREE_BOUNDS"
13696 return "THRUSECTIONS"
13698 return "COMPOUNDFILTER"
13700 return "SHAPES_ON_SHAPE"
13702 return "ELLIPSE_ARC"
13704 return "3DSKETCHER"
13710 return "PIPETSHAPE"
13711 return "Shape Id not exist."
13713 ## Returns a main shape associated with the group
13714 # @param theGroup is a GEOM group for which a main shape object is requested
13715 # @return a GEOM object which is a main shape for theGroup
13717 # @ref swig_GetMainShape "Example"
13718 @ManageTransactions("GroupOp")
13719 def GetMainShape(self,theGroup):
13721 Returns a main shape associated with the group
13724 theGroup is a GEOM group for which a main shape object is requested
13727 a GEOM object which is a main shape for theGroup
13729 Example of usage: BoxCopy = geompy.GetMainShape(CreateGroup)
13731 # Example: see GEOM_TestOthers.py
13732 anObj = self.GroupOp.GetMainShape(theGroup)
13733 RaiseIfFailed("GetMainShape", self.GroupOp)
13736 ## Create group of edges of theShape, whose length is in range [min_length, max_length].
13737 # If include_min/max == 0, edges with length == min/max_length will not be included in result.
13738 # @param theShape given shape (see GEOM.GEOM_Object)
13739 # @param min_length minimum length of edges of theShape
13740 # @param max_length maximum length of edges of theShape
13741 # @param include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13742 # @param include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13743 # @param theName Object name; when specified, this parameter is used
13744 # for result publication in the study. Otherwise, if automatic
13745 # publication is switched on, default value is used for result name.
13747 # @return a newly created GEOM group of edges
13749 # @@ref swig_todo "Example"
13750 def GetEdgesByLength (self, theShape, min_length, max_length, include_min = 1, include_max = 1, theName=None):
13752 Create group of edges of theShape, whose length is in range [min_length, max_length].
13753 If include_min/max == 0, edges with length == min/max_length will not be included in result.
13756 theShape given shape
13757 min_length minimum length of edges of theShape
13758 max_length maximum length of edges of theShape
13759 include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13760 include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13761 theName Object name; when specified, this parameter is used
13762 for result publication in the study. Otherwise, if automatic
13763 publication is switched on, default value is used for result name.
13766 a newly created GEOM group of edges.
13768 edges = self.SubShapeAll(theShape, self.ShapeType["EDGE"])
13769 edges_in_range = []
13771 Props = self.BasicProperties(edge)
13772 if min_length <= Props[0] and Props[0] <= max_length:
13773 if (not include_min) and (min_length == Props[0]):
13776 if (not include_max) and (Props[0] == max_length):
13779 edges_in_range.append(edge)
13781 if len(edges_in_range) <= 0:
13782 print("No edges found by given criteria")
13785 # note: auto-publishing is done in self.CreateGroup()
13786 group_edges = self.CreateGroup(theShape, self.ShapeType["EDGE"], theName)
13787 self.UnionList(group_edges, edges_in_range)
13791 ## Create group of edges of selected shape, whose length is in range [min_length, max_length].
13792 # If include_min/max == 0, edges with length == min/max_length will not be included in result.
13793 # @param min_length minimum length of edges of selected shape
13794 # @param max_length maximum length of edges of selected shape
13795 # @param include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13796 # @param include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13797 # @return a newly created GEOM group of edges
13798 # @ref swig_todo "Example"
13799 def SelectEdges (self, min_length, max_length, include_min = 1, include_max = 1):
13801 Create group of edges of selected shape, whose length is in range [min_length, max_length].
13802 If include_min/max == 0, edges with length == min/max_length will not be included in result.
13805 min_length minimum length of edges of selected shape
13806 max_length maximum length of edges of selected shape
13807 include_max indicating if edges with length == max_length should be included in result, 1-yes, 0-no (default=1)
13808 include_min indicating if edges with length == min_length should be included in result, 1-yes, 0-no (default=1)
13811 a newly created GEOM group of edges.
13813 nb_selected = sg.SelectedCount()
13814 if nb_selected < 1:
13815 print("Select a shape before calling this function, please.")
13817 if nb_selected > 1:
13818 print("Only one shape must be selected")
13821 id_shape = sg.getSelected(0)
13822 shape = IDToObject( id_shape )
13824 group_edges = self.GetEdgesByLength(shape, min_length, max_length, include_min, include_max)
13828 if include_min: left_str = " <= "
13829 if include_max: right_str = " <= "
13831 self.addToStudyInFather(shape, group_edges, "Group of edges with " + repr(min_length)
13832 + left_str + "length" + right_str + repr(max_length))
13834 sg.updateObjBrowser()
13841 #@@ insert new functions before this line @@ do not remove this line @@#
13843 ## Create a copy of the given object
13845 # @param theOriginal geometry object for copy
13846 # @param theName Object name; when specified, this parameter is used
13847 # for result publication in the study. Otherwise, if automatic
13848 # publication is switched on, default value is used for result name.
13850 # @return New GEOM_Object, containing the copied shape.
13852 # @ingroup l1_geomBuilder_auxiliary
13853 # @ref swig_MakeCopy "Example"
13854 @ManageTransactions("InsertOp")
13855 def MakeCopy(self, theOriginal, theName=None):
13857 Create a copy of the given object
13860 theOriginal geometry object for copy
13861 theName Object name; when specified, this parameter is used
13862 for result publication in the study. Otherwise, if automatic
13863 publication is switched on, default value is used for result name.
13866 New GEOM_Object, containing the copied shape.
13868 Example of usage: Copy = geompy.MakeCopy(Box)
13870 # Example: see GEOM_TestAll.py
13871 anObj = self.InsertOp.MakeCopy(theOriginal)
13872 RaiseIfFailed("MakeCopy", self.InsertOp)
13873 self._autoPublish(anObj, theName, "copy")
13876 ## Add Path to load python scripts from
13877 # @param Path a path to load python scripts from
13878 # @ingroup l1_geomBuilder_auxiliary
13879 def addPath(self,Path):
13881 Add Path to load python scripts from
13884 Path a path to load python scripts from
13886 if (sys.path.count(Path) < 1):
13887 sys.path.append(Path)
13891 ## Load marker texture from the file
13892 # @param Path a path to the texture file
13893 # @return unique texture identifier
13894 # @ingroup l1_geomBuilder_auxiliary
13895 @ManageTransactions("InsertOp")
13896 def LoadTexture(self, Path):
13898 Load marker texture from the file
13901 Path a path to the texture file
13904 unique texture identifier
13906 # Example: see GEOM_TestAll.py
13907 ID = self.InsertOp.LoadTexture(Path)
13908 RaiseIfFailed("LoadTexture", self.InsertOp)
13911 ## Get internal name of the object based on its study entry
13912 # @note This method does not provide an unique identifier of the geometry object.
13913 # @note This is internal function of GEOM component, though it can be used outside it for
13914 # appropriate reason (e.g. for identification of geometry object).
13915 # @param obj geometry object
13916 # @return unique object identifier
13917 # @ingroup l1_geomBuilder_auxiliary
13918 def getObjectID(self, obj):
13920 Get internal name of the object based on its study entry.
13921 Note: this method does not provide an unique identifier of the geometry object.
13922 It is an internal function of GEOM component, though it can be used outside GEOM for
13923 appropriate reason (e.g. for identification of geometry object).
13926 obj geometry object
13929 unique object identifier
13932 entry = salome.ObjectToID(obj)
13933 if entry is not None:
13934 lst = entry.split(":")
13936 ID = lst[-1] # -1 means last item in the list
13937 return "GEOM_" + ID
13942 ## Add marker texture. @a Width and @a Height parameters
13943 # specify width and height of the texture in pixels.
13944 # If @a RowData is @c True, @a Texture parameter should represent texture data
13945 # packed into the byte array. If @a RowData is @c False (default), @a Texture
13946 # parameter should be unpacked string, in which '1' symbols represent opaque
13947 # pixels and '0' represent transparent pixels of the texture bitmap.
13949 # @param Width texture width in pixels
13950 # @param Height texture height in pixels
13951 # @param Texture texture data
13952 # @param RowData if @c True, @a Texture data are packed in the byte stream
13953 # @return unique texture identifier
13954 # @ingroup l1_geomBuilder_auxiliary
13955 @ManageTransactions("InsertOp")
13956 def AddTexture(self, Width, Height, Texture, RowData=False):
13958 Add marker texture. Width and Height parameters
13959 specify width and height of the texture in pixels.
13960 If RowData is True, Texture parameter should represent texture data
13961 packed into the byte array. If RowData is False (default), Texture
13962 parameter should be unpacked string, in which '1' symbols represent opaque
13963 pixels and '0' represent transparent pixels of the texture bitmap.
13966 Width texture width in pixels
13967 Height texture height in pixels
13968 Texture texture data
13969 RowData if True, Texture data are packed in the byte stream
13972 return unique texture identifier
13974 if not RowData: Texture = PackData(Texture)
13975 ID = self.InsertOp.AddTexture(Width, Height, Texture)
13976 RaiseIfFailed("AddTexture", self.InsertOp)
13979 ## Transfer not topological data from one GEOM object to another.
13981 # @param theObjectFrom the source object of non-topological data
13982 # @param theObjectTo the destination object of non-topological data
13983 # @param theFindMethod method to search sub-shapes of theObjectFrom
13984 # in shape theObjectTo. Possible values are: GEOM.FSM_GetInPlace,
13985 # GEOM.FSM_GetInPlaceByHistory and GEOM.FSM_GetInPlace_Old.
13986 # Other values of GEOM.find_shape_method are not supported.
13988 # @return True in case of success; False otherwise.
13990 # @ingroup l1_geomBuilder_auxiliary
13992 # @ref swig_TransferData "Example"
13993 @ManageTransactions("InsertOp")
13994 def TransferData(self, theObjectFrom, theObjectTo,
13995 theFindMethod=GEOM.FSM_GetInPlace):
13997 Transfer not topological data from one GEOM object to another.
14000 theObjectFrom the source object of non-topological data
14001 theObjectTo the destination object of non-topological data
14002 theFindMethod method to search sub-shapes of theObjectFrom
14003 in shape theObjectTo. Possible values are:
14004 GEOM.FSM_GetInPlace, GEOM.FSM_GetInPlaceByHistory
14005 and GEOM.FSM_GetInPlace_Old. Other values of
14006 GEOM.find_shape_method are not supported.
14009 True in case of success; False otherwise.
14011 # Example: see GEOM_TestOthers.py
14013 # Example: see GEOM_TestAll.py
14014 isOk = self.InsertOp.TransferData(theObjectFrom,
14015 theObjectTo, theFindMethod)
14016 RaiseIfFailed("TransferData", self.InsertOp)
14019 ## Creates a new folder object. It is a container for any GEOM objects.
14020 # @param Name name of the container
14021 # @param Father parent object. If None,
14022 # folder under 'Geometry' root object will be created.
14023 # @return a new created folder
14024 # @ingroup l1_publish_data
14025 def NewFolder(self, Name, Father=None):
14027 Create a new folder object. It is an auxiliary container for any GEOM objects.
14030 Name name of the container
14031 Father parent object. If None,
14032 folder under 'Geometry' root object will be created.
14035 a new created folder
14037 return self.CreateFolder(Name, Father)
14039 ## Move object to the specified folder
14040 # @param Object object to move
14041 # @param Folder target folder
14042 # @ingroup l1_publish_data
14043 def PutToFolder(self, Object, Folder):
14045 Move object to the specified folder
14048 Object object to move
14049 Folder target folder
14051 self.MoveToFolder(Object, Folder)
14054 ## Move list of objects to the specified folder
14055 # @param ListOfSO list of objects to move
14056 # @param Folder target folder
14057 # @ingroup l1_publish_data
14058 def PutListToFolder(self, ListOfSO, Folder):
14060 Move list of objects to the specified folder
14063 ListOfSO list of objects to move
14064 Folder target folder
14066 self.MoveListToFolder(ListOfSO, Folder)
14069 ## @addtogroup l2_field
14073 # @param shape the shape the field lies on
14074 # @param name the field name
14075 # @param type type of field data: 0 - bool, 1 - int, 2 - double, 3 - string
14076 # @param dimension dimension of the shape the field lies on
14077 # 0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
14078 # @param componentNames names of components
14079 # @return a created field
14080 @ManageTransactions("FieldOp")
14081 def CreateField(self, shape, name, type, dimension, componentNames):
14086 shape the shape the field lies on
14087 name the field name
14088 type type of field data
14089 dimension dimension of the shape the field lies on
14090 0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
14091 componentNames names of components
14096 if isinstance( type, int ):
14097 if type < 0 or type > 3:
14098 raise RuntimeError("CreateField : Error: data type must be within [0-3] range")
14099 type = [GEOM.FDT_Bool,GEOM.FDT_Int,GEOM.FDT_Double,GEOM.FDT_String][type]
14101 f = self.FieldOp.CreateField( shape, name, type, dimension, componentNames)
14102 RaiseIfFailed("CreateField", self.FieldOp)
14104 geom._autoPublish( f, "", name)
14107 ## Removes a field from the GEOM component
14108 # @param field the field to remove
14109 def RemoveField(self, field):
14110 "Removes a field from the GEOM component"
14112 if isinstance( field, GEOM._objref_GEOM_Field ):
14113 geom.RemoveObject( field )
14114 elif isinstance( field, geomField ):
14115 geom.RemoveObject( field.field )
14117 raise RuntimeError("RemoveField() : the object is not a field")
14120 ## Returns number of fields on a shape
14121 @ManageTransactions("FieldOp")
14122 def CountFields(self, shape):
14123 "Returns number of fields on a shape"
14124 nb = self.FieldOp.CountFields( shape )
14125 RaiseIfFailed("CountFields", self.FieldOp)
14128 ## Returns all fields on a shape
14129 @ManageTransactions("FieldOp")
14130 def GetFields(self, shape):
14131 "Returns all fields on a shape"
14132 ff = self.FieldOp.GetFields( shape )
14133 RaiseIfFailed("GetFields", self.FieldOp)
14136 ## Returns a field on a shape by its name
14137 @ManageTransactions("FieldOp")
14138 def GetField(self, shape, name):
14139 "Returns a field on a shape by its name"
14140 f = self.FieldOp.GetField( shape, name )
14141 RaiseIfFailed("GetField", self.FieldOp)
14147 ## @addtogroup l2_testing
14150 ## Build a mesh on the given shape.
14151 # @param shape the source shape
14152 # @param linear_deflection linear deflection coefficient
14153 # @param is_relative says if given value of deflection is relative to shape's bounding box
14154 # @param angular_deflection angular deflection for edges in degrees
14155 # @return True in case of success; otherwise False.
14156 @ManageTransactions("TestOp")
14157 def Tesselate(self, shape, linear_deflection=0, is_relative=True, angular_deflection=0):
14158 """Build a mesh on the given shape.
14161 shape the source shape
14162 linear_deflection linear deflection coefficient
14163 is_relative says if given value of deflection is relative to shape's bounding box
14164 angular_deflection angular deflection for edges in degrees
14167 True in case of success; otherwise False.
14169 if angular_deflection > 0:
14170 angular_deflection = angular_deflection * math.pi / 180.
14171 r = self.TestOp.Tesselate(shape, linear_deflection, is_relative, angular_deflection)
14172 RaiseIfFailed("Tesselate", self.TestOp)
14175 ## Obtain a shape checker
14176 # @return An instance of @ref conformity.CheckConformity "CheckConformity" interface
14178 # @ref tui_conformity_page "Example"
14179 def CheckConformity (self, shape):
14181 Obtain a shape checker.
14184 conf = geompy.CheckConformity(shape)
14185 valid = conf.isValid()
14186 si2d = conf.selfIntersected2D()
14187 dist = conf.distantShapes()
14188 small = conf.smallEdges()
14189 interfer = cc.interferingSubshapes()
14191 conf = CheckConformity (shape, self)
14194 ## Obtain a shape proximity calculator
14195 # @return An instance of @ref proximity.ShapeProximity "ShapeProximity" interface
14197 # @ref tui_proximity_page "Example"
14198 def ShapeProximity (self):
14200 Obtain a shape proximity calculator.
14203 prox = geompy.ShapeProximity()
14204 value = prox.proximity(shape1, shape2)
14206 prox = ShapeProximity (self)
14209 # end of l2_testing
14213 # Register the new proxy for GEOM_Gen
14214 omniORB.registerObjref(GEOM._objref_GEOM_Gen._NP_RepositoryId, geomBuilder)
14217 ## Field on Geometry
14218 # @ingroup l2_field
14219 class geomField( GEOM._objref_GEOM_Field ):
14221 def __init__(self, *args):
14222 GEOM._objref_GEOM_Field.__init__(self, *args)
14223 self.field = GEOM._objref_GEOM_Field
14226 ## Returns the shape the field lies on
14227 def getShape(self):
14228 "Returns the shape the field lies on"
14229 return self.field.GetShape(self)
14231 ## Returns the field name
14233 "Returns the field name"
14234 return self.field.GetName(self)
14236 ## Returns type of field data as integer [0-3]
14238 "Returns type of field data"
14239 return EnumToLong(self.field.GetDataType(self))
14241 ## Returns type of field data:
14242 # one of GEOM.FDT_Bool, GEOM.FDT_Int, GEOM.FDT_Double, GEOM.FDT_String
14243 def getTypeEnum(self):
14244 "Returns type of field data"
14245 return self.field.GetDataType(self)
14247 ## Returns dimension of the shape the field lies on:
14248 # 0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape
14249 def getDimension(self):
14250 """Returns dimension of the shape the field lies on:
14251 0 - VERTEX, 1 - EDGE, 2 - FACE, 3 - SOLID, -1 - whole shape"""
14252 return self.field.GetDimension(self)
14254 ## Returns names of components
14255 def getComponents(self):
14256 "Returns names of components"
14257 return self.field.GetComponents(self)
14259 ## Adds a time step to the field
14260 # @param step the time step number further used as the step identifier
14261 # @param stamp the time step time
14262 # @param values the values of the time step
14263 def addStep(self, step, stamp, values):
14264 "Adds a time step to the field"
14265 stp = self.field.AddStep( self, step, stamp )
14267 raise RuntimeError("Field.addStep() : Error: step %s already exists in this field"%step)
14269 geom._autoPublish( stp, "", "Step %s, %s"%(step,stamp))
14270 self.setValues( step, values )
14273 ## Remove a time step from the field
14274 def removeStep(self,step):
14275 "Remove a time step from the field"
14278 stepObj = self.field.GetStep( self, step )
14280 stepSO = geom.myStudy.FindObjectID( stepObj.GetStudyEntry() )
14283 #traceback.print_exc()
14285 self.field.RemoveStep( self, step )
14287 geom.myBuilder.RemoveObjectWithChildren( stepSO )
14290 ## Returns number of time steps in the field
14291 def countSteps(self):
14292 "Returns number of time steps in the field"
14293 return self.field.CountSteps(self)
14295 ## Returns a list of time step IDs in the field
14296 def getSteps(self):
14297 "Returns a list of time step IDs in the field"
14298 return self.field.GetSteps(self)
14300 ## Returns a time step by its ID
14301 def getStep(self,step):
14302 "Returns a time step by its ID"
14303 stp = self.field.GetStep(self, step)
14305 raise RuntimeError("Step %s is missing from this field"%step)
14308 ## Returns the time of the field step
14309 def getStamp(self,step):
14310 "Returns the time of the field step"
14311 return self.getStep(step).GetStamp()
14313 ## Changes the time of the field step
14314 def setStamp(self, step, stamp):
14315 "Changes the time of the field step"
14316 return self.getStep(step).SetStamp(stamp)
14318 ## Returns values of the field step
14319 def getValues(self, step):
14320 "Returns values of the field step"
14321 return self.getStep(step).GetValues()
14323 ## Changes values of the field step
14324 def setValues(self, step, values):
14325 "Changes values of the field step"
14326 stp = self.getStep(step)
14327 errBeg = "Field.setValues(values) : Error: "
14329 ok = stp.SetValues( values )
14330 except Exception as e:
14332 if excStr.find("WrongPythonType") > 0:
14333 raise RuntimeError(errBeg +\
14334 "wrong type of values, %s values are expected"%str(self.getTypeEnum())[4:])
14335 raise RuntimeError(errBeg + str(e))
14337 nbOK = self.field.GetArraySize(self)
14340 raise RuntimeError(errBeg + "len(values) must be %s but not %s"%(nbOK,nbKO))
14342 raise RuntimeError(errBeg + "failed")
14345 pass # end of class geomField
14347 # Register the new proxy for GEOM_Field
14348 omniORB.registerObjref(GEOM._objref_GEOM_Field._NP_RepositoryId, geomField)
14351 ## Create a new geomBuilder instance.The geomBuilder class provides the Python
14352 # interface to GEOM operations.
14357 # salome.salome_init()
14358 # from salome.geom import geomBuilder
14359 # geompy = geomBuilder.New()
14361 # @param instance CORBA proxy of GEOM Engine. If None, the default Engine is used.
14362 # @return geomBuilder instance
14363 def New( instance=None):
14365 Create a new geomBuilder instance.The geomBuilder class provides the Python
14366 interface to GEOM operations.
14370 salome.salome_init()
14371 from salome.geom import geomBuilder
14372 geompy = geomBuilder.New()
14375 instance CORBA proxy of GEOM Engine. If None, the default Engine is used.
14377 geomBuilder instance
14379 #print "New geomBuilder ", study, instance
14383 if instance and isinstance( instance, SALOMEDS._objref_Study ):
14385 sys.stderr.write("Warning: 'study' argument is no more needed in geomBuilder.New(). Consider updating your script!!!\n\n")
14390 geom = geomBuilder()
14391 assert isinstance(geom,geomBuilder), "Geom engine class is %s but should be geomBuilder.geomBuilder. Import geomBuilder before creating the instance."%geom.__class__
14396 # Register methods from the plug-ins in the geomBuilder class
14397 plugins_var = os.environ.get( "GEOM_PluginsList" )
14400 if plugins_var is not None:
14401 plugins = plugins_var.split( ":" )
14402 plugins=[x for x in plugins if len(x)>0]
14403 if plugins is not None:
14404 for pluginName in plugins:
14405 pluginBuilderName = pluginName + "Builder"
14407 exec( "from salome.%s.%s import *" % (pluginName, pluginBuilderName))
14408 except Exception as e:
14409 from salome_utils import verbose
14410 print("Exception while loading %s: %s" % ( pluginBuilderName, e ))
14412 exec( "from salome.%s import %s" % (pluginName, pluginBuilderName))
14413 plugin = eval( pluginBuilderName )
14415 # add methods from plugin module to the geomBuilder class
14416 for k in dir( plugin ):
14417 if k[0] == '_': continue
14418 method = getattr( plugin, k )
14419 if type( method ).__name__ == 'function':
14420 if not hasattr( geomBuilder, k ):
14421 setattr( geomBuilder, k, method )