X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH_SWIG%2FsmeshBuilder.py;h=f56f9551c823039637838cf3e40964f484dda164;hp=8f49d4937cd8d07035f7a8d1bbdd4d2f2e37c5d3;hb=466da2436e3a2de79c6c79edafc0d4cac819f839;hpb=02ac54c6f33c5437c1d2204d704cf3da6fd31a8e diff --git a/src/SMESH_SWIG/smeshBuilder.py b/src/SMESH_SWIG/smeshBuilder.py index 8f49d4937..f56f9551c 100644 --- a/src/SMESH_SWIG/smeshBuilder.py +++ b/src/SMESH_SWIG/smeshBuilder.py @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -32,7 +32,6 @@ ## @{ ## @defgroup l3_algos_basic Basic meshing algorithms ## @defgroup l3_algos_proj Projection Algorithms -## @defgroup l3_algos_radialp Radial Prism ## @defgroup l3_algos_segmarv Segments around Vertex ## @defgroup l3_algos_3dextr 3D extrusion meshing algorithm @@ -70,10 +69,9 @@ ## @defgroup l2_modif_trsf Transforming meshes (Translation, Rotation, Symmetry, Sewing, Merging) ## @defgroup l2_modif_movenode Moving nodes ## @defgroup l2_modif_throughp Mesh through point -## @defgroup l2_modif_invdiag Diagonal inversion of elements ## @defgroup l2_modif_unitetri Uniting triangles -## @defgroup l2_modif_changori Changing orientation of elements ## @defgroup l2_modif_cutquadr Cutting elements +## @defgroup l2_modif_changori Changing orientation of elements ## @defgroup l2_modif_smooth Smoothing ## @defgroup l2_modif_extrurev Extrusion and Revolution ## @defgroup l2_modif_patterns Pattern mapping @@ -252,7 +250,7 @@ def TreatHypoStatus(status, hypName, geomName, isAlgo, mesh): if mesh: meshName = GetName( mesh ) if meshName and meshName != NO_NAME: - where = '"%s" in "%s"' % ( geomName, meshName ) + where = '"%s" shape in "%s" mesh ' % ( geomName, meshName ) if status < HYP_UNKNOWN_FATAL and where: print '"%s" was assigned to %s but %s' %( hypName, where, reason ) elif where: @@ -310,9 +308,9 @@ engine = None doLcc = False created = False -## This class allows to create, load or manipulate meshes -# It has a set of methods to create load or copy meshes, to combine several meshes. -# It also has methods to get infos on meshes. +## This class allows to create, load or manipulate meshes. +# It has a set of methods to create, load or copy meshes, to combine several meshes, etc. +# It also has methods to get infos and measure meshes. class smeshBuilder(object, SMESH._objref_SMESH_Gen): # MirrorType enumeration @@ -614,6 +612,7 @@ class smeshBuilder(object, SMESH._objref_SMESH_Gen): # @param allGroups forces creation of groups corresponding to every input mesh # @param name name of a new mesh # @return an instance of Mesh class + # @ingroup l2_compounds def Concatenate( self, meshes, uniteIdenticalGroups, mergeNodesAndElements = False, mergeTolerance = 1e-5, allGroups = False, name = ""): @@ -1162,7 +1161,7 @@ omniORB.registerObjref(SMESH._objref_SMESH_Gen._NP_RepositoryId, smeshBuilder) # import salome # salome.salome_init() # from salome.smesh import smeshBuilder -# smesh = smeshBuilder.New(theStudy) +# smesh = smeshBuilder.New(salome.myStudy) # \endcode # @param study SALOME study, generally obtained by salome.myStudy. # @param instance CORBA proxy of SMESH Engine. If None, the default Engine is used. @@ -1177,7 +1176,7 @@ def New( study, instance=None): import salome salome.salome_init() from salome.smesh import smeshBuilder - smesh = smeshBuilder.New(theStudy) + smesh = smeshBuilder.New(salome.myStudy) Parameters: study SALOME study, generally obtained by salome.myStudy. @@ -1424,8 +1423,10 @@ class Mesh: # Treat compute errors computeErrors = self.smeshpyD.GetComputeErrors( self.mesh, geom ) + shapeText = "" for err in computeErrors: - shapeText = " on %s" % self.GetSubShapeName( err.subShapeID ) + if self.mesh.HasShapeToMesh(): + shapeText = " on %s" % self.GetSubShapeName( err.subShapeID ) errText = "" stdErrors = ["OK", #COMPERR_OK "Invalid input mesh", #COMPERR_BAD_INPUT_MESH @@ -1503,6 +1504,12 @@ class Mesh: pass return ok + ## Return a list of error messages (SMESH.ComputeError) of the last Compute() + def GetComputeErrors(self, shape=0 ): + if shape == 0: + shape = self.mesh.GetShapeToMesh() + return self.smeshpyD.GetComputeErrors( self.mesh, shape ) + ## Return a name of a sub-shape by its ID # @param subShapeID a unique ID of a sub-shape # @return a string describing the sub-shape; possible variants: @@ -1591,13 +1598,13 @@ class Mesh: return groups ## Return sub-mesh objects list in meshing order - # @return list of list of sub-meshes + # @return list of lists of sub-meshes # @ingroup l2_construct def GetMeshOrder(self): return self.mesh.GetMeshOrder() ## Set order in which concurrent sub-meshes sould be meshed - # @param submeshes list of sub-meshes + # @param submeshes list of lists of sub-meshes # @ingroup l2_construct def SetMeshOrder(self, submeshes): return self.mesh.SetMeshOrder(submeshes) @@ -1680,9 +1687,10 @@ class Mesh: if self.mesh.HasShapeToMesh(): hyp_type = hyp.GetName() lib_name = hyp.GetLibName() - checkAll = ( not geom.IsSame( self.mesh.GetShapeToMesh() )) - if checkAll and geom: - checkAll = geom.GetType() == 37 + # checkAll = ( not geom.IsSame( self.mesh.GetShapeToMesh() )) + # if checkAll and geom: + # checkAll = geom.GetType() == 37 + checkAll = False isApplicable = self.smeshpyD.IsApplicable(hyp_type, lib_name, geom, checkAll) if isApplicable: AssureGeomPublished( self, geom, "shape for %s" % hyp.GetName()) @@ -1967,7 +1975,7 @@ class Mesh: # @param groupName the name of the mesh group # @param elementType the type of elements in the group; either of # (SMESH.NODE, SMESH.EDGE, SMESH.FACE, SMESH.VOLUME). - # @param elemIDs the list of ids + # @param elemIDs either the list of ids, group, sub-mesh, or filter # @return SMESH_Group # @ingroup l2_grps_create def MakeGroupByIds(self, groupName, elementType, elemIDs): @@ -2150,7 +2158,7 @@ class Mesh: ## # Create a standalone group of entities basing on nodes of other groups. - # \param groups - list of groups, sub-meshes or filters, of any type. + # \param groups - list of reference groups, sub-meshes or filters, of any type. # \param elemType - a type of elements to include to the new group; either of # (SMESH.NODE, SMESH.EDGE, SMESH.FACE, SMESH.VOLUME). # \param name - a name of the new group. @@ -2162,7 +2170,10 @@ class Mesh: # - SMESH.AT_LEAST_ONE - include if one or more node is common, # - SMEHS.MAJORITY - include if half of nodes or more are common. # \param underlyingOnly - if \c True (default), an element is included to the - # new group provided that it is based on nodes of one element of \a groups. + # new group provided that it is based on nodes of an element of \a groups; + # in this case the reference \a groups are supposed to be of higher dimension + # than \a elemType, which can be useful for example to get all faces lying on + # volumes of the reference \a groups. # @return an instance of SMESH_Group # @ingroup l2_grps_operon def CreateDimGroup(self, groups, elemType, name, @@ -2173,7 +2184,7 @@ class Mesh: ## Convert group on geom into standalone group - # @ingroup l2_grps_delete + # @ingroup l2_grps_edit def ConvertToStandalone(self, group): return self.mesh.ConvertToStandalone(group) @@ -3070,7 +3081,7 @@ class Mesh: # @param NodeID1 the ID of the first node # @param NodeID2 the ID of the second node # @return false if proper faces were not found - # @ingroup l2_modif_invdiag + # @ingroup l2_modif_cutquadr def InverseDiag(self, NodeID1, NodeID2): return self.editor.InverseDiag(NodeID1, NodeID2) @@ -3987,6 +3998,7 @@ class Mesh: if isinstance( RefPoint, geomBuilder.GEOM._objref_GEOM_Object): RefPoint = self.smeshpyD.GetPointStruct(RefPoint) if isinstance( RefPoint, list ): + if not RefPoint: RefPoint = [0,0,0] RefPoint = SMESH.PointStruct( *RefPoint ) if isinstance( PathMesh, Mesh ): PathMesh = PathMesh.GetMesh() @@ -4019,8 +4031,9 @@ class Mesh: # only SMESH::Extrusion_Error otherwise # @ingroup l2_modif_extrurev def ExtrusionAlongPathX(self, Base, Path, NodeStart, - HasAngles, Angles, LinearVariation, - HasRefPoint, RefPoint, MakeGroups, ElemType): + HasAngles=False, Angles=[], LinearVariation=False, + HasRefPoint=False, RefPoint=[0,0,0], MakeGroups=False, + ElemType=SMESH.FACE): n,e,f = [],[],[] if ElemType == SMESH.NODE: n = Base if ElemType == SMESH.EDGE: e = Base @@ -4050,7 +4063,7 @@ class Mesh: # only SMESH::Extrusion_Error otherwise # @ingroup l2_modif_extrurev def ExtrusionAlongPath(self, IDsOfElements, PathMesh, PathShape, NodeStart, - HasAngles, Angles, HasRefPoint, RefPoint, + HasAngles=False, Angles=[], HasRefPoint=False, RefPoint=[], MakeGroups=False, LinearVariation=False): n,e,f = [],IDsOfElements,IDsOfElements gr,er = self.ExtrusionAlongPathObjects(n,e,f, PathMesh, PathShape, @@ -4080,7 +4093,7 @@ class Mesh: # only SMESH::Extrusion_Error otherwise # @ingroup l2_modif_extrurev def ExtrusionAlongPathObject(self, theObject, PathMesh, PathShape, NodeStart, - HasAngles, Angles, HasRefPoint, RefPoint, + HasAngles=False, Angles=[], HasRefPoint=False, RefPoint=[], MakeGroups=False, LinearVariation=False): n,e,f = [],theObject,theObject gr,er = self.ExtrusionAlongPathObjects(n,e,f, PathMesh, PathShape, NodeStart, @@ -4109,7 +4122,7 @@ class Mesh: # only SMESH::Extrusion_Error otherwise # @ingroup l2_modif_extrurev def ExtrusionAlongPathObject1D(self, theObject, PathMesh, PathShape, NodeStart, - HasAngles, Angles, HasRefPoint, RefPoint, + HasAngles=False, Angles=[], HasRefPoint=False, RefPoint=[], MakeGroups=False, LinearVariation=False): n,e,f = [],theObject,[] gr,er = self.ExtrusionAlongPathObjects(n,e,f, PathMesh, PathShape, NodeStart, @@ -4138,7 +4151,7 @@ class Mesh: # only SMESH::Extrusion_Error otherwise # @ingroup l2_modif_extrurev def ExtrusionAlongPathObject2D(self, theObject, PathMesh, PathShape, NodeStart, - HasAngles, Angles, HasRefPoint, RefPoint, + HasAngles=False, Angles=[], HasRefPoint=False, RefPoint=[], MakeGroups=False, LinearVariation=False): n,e,f = [],[],theObject gr,er = self.ExtrusionAlongPathObjects(n,e,f, PathMesh, PathShape, NodeStart,