X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH_SWIG%2FsmeshBuilder.py;h=61c239b15741723c903ecfc8aefce0fdcb6d35cf;hb=079e65a9b152c9dec23fa91a346ac312b04eb145;hp=a51e40ce8ff5a1189af8d5f7283dc3d7f2452217;hpb=811a7a4c176887c38fcd93e53b1822ef60981c6b;p=modules%2Fsmesh.git diff --git a/src/SMESH_SWIG/smeshBuilder.py b/src/SMESH_SWIG/smeshBuilder.py index a51e40ce8..61c239b15 100644 --- a/src/SMESH_SWIG/smeshBuilder.py +++ b/src/SMESH_SWIG/smeshBuilder.py @@ -207,12 +207,15 @@ def GetName(obj): raise RuntimeError, "Null or invalid object" ## Prints error message if a hypothesis was not assigned. -def TreatHypoStatus(status, hypName, geomName, isAlgo): +def TreatHypoStatus(status, hypName, geomName, isAlgo, mesh): if isAlgo: hypType = "algorithm" else: hypType = "hypothesis" pass + reason = "" + if hasattr( status, "__getitem__" ): + status,reason = status[0],status[1] if status == HYP_UNKNOWN_FATAL : reason = "for unknown reason" elif status == HYP_INCOMPATIBLE : @@ -235,17 +238,24 @@ def TreatHypoStatus(status, hypName, geomName, isAlgo): elif status == HYP_HIDING_ALGO: reason = "it hides algorithms of lower dimensions by generating elements of all dimensions" elif status == HYP_NEED_SHAPE: - reason = "Algorithm can't work without shape" + reason = "algorithm can't work without shape" + elif status == HYP_INCOMPAT_HYPS: + pass else: return - hypName = '"' + hypName + '"' - geomName= '"' + geomName+ '"' - if status < HYP_UNKNOWN_FATAL and not geomName =='""': - print hypName, "was assigned to", geomName,"but", reason - elif not geomName == '""': - print hypName, "was not assigned to",geomName,":", reason + where = geomName + if where: + where = '"%s"' % geomName + if mesh: + meshName = GetName( mesh ) + if meshName and meshName != NO_NAME: + where = '"%s" in "%s"' % ( geomName, meshName ) + if status < HYP_UNKNOWN_FATAL and where: + print '"%s" was assigned to %s but %s' %( hypName, where, reason ) + elif where: + print '"%s" was not assigned to %s : %s' %( hypName, where, reason ) else: - print hypName, "was not assigned:", reason + print '"%s" was not assigned : %s' %( hypName, reason ) pass ## Private method. Add geom (sub-shape of the main shape) into the study if not yet there @@ -1586,13 +1596,13 @@ class Mesh: AssureGeomPublished( self, geom, "shape for %s" % hyp.GetName()) status = self.mesh.AddHypothesis(geom, hyp) else: - status = HYP_BAD_GEOMETRY + status = HYP_BAD_GEOMETRY,"" hyp_name = GetName( hyp ) geom_name = "" if geom: geom_name = geom.GetName() isAlgo = hyp._narrow( SMESH_Algo ) - TreatHypoStatus( status, hyp_name, geom_name, isAlgo ) + TreatHypoStatus( status, hyp_name, geom_name, isAlgo, self ) return status ## Return True if an algorithm of hypothesis is assigned to a given shape @@ -1866,7 +1876,12 @@ class Mesh: # @ingroup l2_grps_create def MakeGroupByIds(self, groupName, elementType, elemIDs): group = self.mesh.CreateGroup(elementType, groupName) - group.Add(elemIDs) + if hasattr( elemIDs, "GetIDs" ): + if hasattr( elemIDs, "SetMesh" ): + elemIDs.SetMesh( self.GetMesh() ) + group.AddFrom( elemIDs ) + else: + group.Add(elemIDs) return group ## Creates a mesh group by the given conditions @@ -1878,7 +1893,7 @@ class Mesh: # @param UnaryOp FT_LogicalNOT or FT_Undefined # @param Tolerance the tolerance used by FT_BelongToGeom, FT_BelongToSurface, # FT_LyingOnGeom, FT_CoplanarFaces criteria - # @return SMESH_Group + # @return SMESH_GroupOnFilter # @ingroup l2_grps_create def MakeGroup(self, groupName, @@ -1895,40 +1910,32 @@ class Mesh: ## Creates a mesh group by the given criterion # @param groupName the name of the mesh group # @param Criterion the instance of Criterion class - # @return SMESH_Group + # @return SMESH_GroupOnFilter # @ingroup l2_grps_create def MakeGroupByCriterion(self, groupName, Criterion): - aFilterMgr = self.smeshpyD.CreateFilterManager() - aFilter = aFilterMgr.CreateFilter() - aCriteria = [] - aCriteria.append(Criterion) - aFilter.SetCriteria(aCriteria) - group = self.MakeGroupByFilter(groupName, aFilter) - aFilterMgr.UnRegister() - return group + return self.MakeGroupByCriteria( groupName, [Criterion] ) ## Creates a mesh group by the given criteria (list of criteria) # @param groupName the name of the mesh group # @param theCriteria the list of criteria - # @return SMESH_Group + # @param binOp binary operator used when binary operator of criteria is undefined + # @return SMESH_GroupOnFilter # @ingroup l2_grps_create - def MakeGroupByCriteria(self, groupName, theCriteria): - aFilterMgr = self.smeshpyD.CreateFilterManager() - aFilter = aFilterMgr.CreateFilter() - aFilter.SetCriteria(theCriteria) + def MakeGroupByCriteria(self, groupName, theCriteria, binOp=SMESH.FT_LogicalAND): + aFilter = self.smeshpyD.GetFilterFromCriteria( theCriteria, binOp ) group = self.MakeGroupByFilter(groupName, aFilter) - aFilterMgr.UnRegister() return group ## Creates a mesh group by the given filter # @param groupName the name of the mesh group # @param theFilter the instance of Filter class - # @return SMESH_Group + # @return SMESH_GroupOnFilter # @ingroup l2_grps_create def MakeGroupByFilter(self, groupName, theFilter): - group = self.CreateEmptyGroup(theFilter.GetElementType(), groupName) - theFilter.SetMesh( self.mesh ) - group.AddFrom( theFilter ) + #group = self.CreateEmptyGroup(theFilter.GetElementType(), groupName) + #theFilter.SetMesh( self.mesh ) + #group.AddFrom( theFilter ) + group = self.GroupOnFilter( theFilter.GetElementType(), groupName, theFilter ) return group ## Removes a group @@ -2578,7 +2585,7 @@ class Mesh: ## Get measure structure specifying bounding box data of the specified object(s) # @param IDs single source object or list of source objects or list of nodes/elements IDs - # @param isElem if @a objects is a list of IDs, @c True value in this parameters specifies that @a objects are elements, + # @param isElem if @a IDs is a list of IDs, @c True value in this parameters specifies that @a objects are elements, # @c False specifies that @a objects are nodes # @return Measure structure # @sa BoundingBox()