X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FTools%2FblocFissure%2Fgmu%2FidentifieEdgesPeau.py;h=70595896ef34d9461632b806c2840defafa5b0ba;hb=62336a394b80b503991ff801f2ebf7feff47e7f0;hp=efb7df915efb61bcd9ca67f930427c2f6c483d0d;hpb=77b224bfc97465d694c206f026d02fc5ea70a0a3;p=modules%2Fsmesh.git diff --git a/src/Tools/blocFissure/gmu/identifieEdgesPeau.py b/src/Tools/blocFissure/gmu/identifieEdgesPeau.py index efb7df915..70595896e 100644 --- a/src/Tools/blocFissure/gmu/identifieEdgesPeau.py +++ b/src/Tools/blocFissure/gmu/identifieEdgesPeau.py @@ -3,8 +3,9 @@ import logging from geomsmesh import geompy -from geomsmesh import geomPublishDebug -from geomsmesh import geomPublishDebugInFather +from geomsmesh import geomPublish +from geomsmesh import geomPublishInFather +import initLog from substractSubShapes import substractSubShapes @@ -14,16 +15,16 @@ def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSor identification précise des edges et disques des faces de peau selon index extremité fissure """ logging.info('start') - + facesPipePeau = [None for i in range(len(edgesFissExtPipe))] endsEdgeFond = [None for i in range(len(edgesFissExtPipe))] edgeRadFacePipePeau = [None for i in range(len(edgesFissExtPipe))] - + edgesListees = [] edgesCircPeau = [] verticesCircPeau = [] if len(verticesPipePeau) > 0: # --- au moins une extrémité du pipe sur cette face de peau - + for face in facesPeauSorted[:-1]: # la ou les faces débouchantes, pas la grande face de peau logging.debug("examen face debouchante circulaire") for i,efep in enumerate(edgesFissExtPipe): @@ -39,37 +40,37 @@ def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSor nameEdge = "edgeRadFacePipePeau%d"%i facesPipePeau[i] = face endsEdgeFond[i] = sharedVertices[0] - geomPublishDebug(face, nameFace) - geomPublishDebug(sharedVertices[0], nameVert) + geomPublish(initLog.debug, face, nameFace) + geomPublish(initLog.debug, sharedVertices[0], nameVert) edgesFace = geompy.ExtractShapes(face, geompy.ShapeType["EDGE"], True) for edge in edgesFace: if geompy.MinDistance(edge, sharedVertices[0]) < 1e-3: edgeRadFacePipePeau[i] = edge - geomPublishDebug(edge, nameEdge) + geomPublish(initLog.debug, edge, nameEdge) break pass pass pass pass - + # --- edges circulaires de la face de peau et points de jonction de la face externe de fissure logging.debug("facesPipePeau: %s", facesPipePeau) edgesCircPeau = [None for i in range(len(facesPipePeau))] - verticesCircPeau = [None for i in range(len(facesPipePeau))] + verticesCircPeau = [None for i in range(len(facesPipePeau))] for i,fcirc in enumerate(facesPipePeau): edges = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["EDGE"]) grpEdgesCirc = geompy.CreateGroup(facePeau, geompy.ShapeType["EDGE"]) geompy.UnionList(grpEdgesCirc, edges) edgesCircPeau[i] = grpEdgesCirc name = "edgeCirc%d"%i - geomPublishDebugInFather(facePeau, grpEdgesCirc, name) + geomPublishInFather(initLog.debug, facePeau, grpEdgesCirc, name) edgesListees = edgesListees + edges vertices = geompy.GetSharedShapesMulti([facePeau, fcirc], geompy.ShapeType["VERTEX"]) grpVertCircPeau = geompy.CreateGroup(facePeau, geompy.ShapeType["VERTEX"]) geompy.UnionList(grpVertCircPeau, vertices) verticesCircPeau[i] = grpVertCircPeau name = "pointEdgeCirc%d"%i - geomPublishDebugInFather(facePeau, grpVertCircPeau, name) + geomPublishInFather(initLog.debug, facePeau, grpVertCircPeau, name) pass pass # --- au moins une extrémité du pipe sur cette face de peau @@ -80,7 +81,7 @@ def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSor for i, edge in enumerate(edgesFilling): edgepeau = geompy.GetInPlace(facePeau, edge) name = "edgepeau%d"%i - geomPublishDebugInFather(facePeau,edgepeau, name) + geomPublishInFather(initLog.debug, facePeau,edgepeau, name) logging.debug("edgepeau %s", geompy.ShapeInfo(edgepeau)) if geompy.ShapeInfo(edgepeau)['EDGE'] > 1: logging.debug(" EDGES multiples") @@ -95,9 +96,28 @@ def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSor geompy.UnionList(groupEdgesBordPeau, edgesBords) bordsVifs = None if aretesVivesC is not None: + logging.debug("identification des bords vifs par GetInPlace") bordsVifs = geompy.GetInPlace(facePeau, aretesVivesC) + if bordsVifs is None: + logging.debug("pas d'identification des bords vifs par GetInPlace: test par distance") + edvifs = [] + arvives = geompy.ExtractShapes(aretesVivesC, geompy.ShapeType["EDGE"], False) + edgs = geompy.ExtractShapes(facePeau, geompy.ShapeType["EDGE"], False) + for ed in edgs: + vxs = geompy.ExtractShapes(ed, geompy.ShapeType["VERTEX"], False) + for ar in arvives: + d = geompy.MinDistance(vxs[0], ar) + d += geompy.MinDistance(vxs[1], ar) + logging.debug("test distance bord face peau - arete vive: %s",d) + if d < 0.001: + edvifs.append(ed) + break + if len(edvifs) >0: + bordsVifs = geompy.CreateGroup(facePeau,geompy.ShapeType["EDGE"]) + for ed in edvifs: + geompy.AddObject(bordsVifs, geompy.GetSubShapeID(facePeau, ed)) if bordsVifs is not None: - geomPublishDebugInFather(facePeau, bordsVifs, "bordsVifs") + geomPublishInFather(initLog.debug, facePeau, bordsVifs, "bordsVifs") groupEdgesBordPeau = geompy.CutGroups(groupEdgesBordPeau, bordsVifs) grptmp = None if len(aretesVivesCoupees) > 0: @@ -111,10 +131,10 @@ def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSor edv = geompy.ExtractShapes(grpnew, geompy.ShapeType["EDGE"], False) aretesVivesCoupees += edv logging.debug("aretesVivesCoupees %s",aretesVivesCoupees) - geomPublishDebugInFather(facePeau, groupEdgesBordPeau , "EdgesBords") - + geomPublishInFather(initLog.debug, facePeau, groupEdgesBordPeau , "EdgesBords") + # --- edges de la face de peau partagées avec la face de fissure - + edgesPeau = geompy.ExtractShapes(facePeau, geompy.ShapeType["EDGE"], False) edges = substractSubShapes(facePeau, edgesPeau, edgesListees) edgesFissurePeau = [] @@ -125,7 +145,7 @@ def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSor if (geompy.MinDistance(grpVert, edge) < 1.e-3) and (edge not in edgesFissurePeau): edgesFissurePeau[i] = edge name = "edgeFissurePeau%d"%i - geomPublishDebugInFather(facePeau, edge, name) + geomPublishInFather(initLog.debug, facePeau, edge, name) for edge in edges: # on ajoute après les edges manquantes if edge not in edgesFissurePeau: edgesFissurePeau.append(edge) @@ -133,8 +153,8 @@ def identifieEdgesPeau(edgesFissExtPipe,verticesPipePeau, facePeau, facesPeauSor for i, edge in enumerate(edges): edgesFissurePeau.append(edge) name = "edgeFissurePeau%d"%i - geomPublishDebugInFather(facePeau, edge, name) - + geomPublishInFather(initLog.debug, facePeau, edge, name) + return (endsEdgeFond, facesPipePeau, edgeRadFacePipePeau, edgesCircPeau, verticesCircPeau, groupEdgesBordPeau, bordsVifs, edgesFissurePeau, aretesVivesCoupees)