X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FTools%2FblocFissure%2Fgmu%2ForderEdgesFromWire.py;h=112cb2f03347bd43358423d92b11fc5573cc8811;hp=83228cdc08767359e934f55269fca11c18eca740;hb=f44efbc02056a2734440b736789b8cfa380430bb;hpb=71de383cb614e31ded6aa6343c052fbd8335b472 diff --git a/src/Tools/blocFissure/gmu/orderEdgesFromWire.py b/src/Tools/blocFissure/gmu/orderEdgesFromWire.py index 83228cdc0..112cb2f03 100644 --- a/src/Tools/blocFissure/gmu/orderEdgesFromWire.py +++ b/src/Tools/blocFissure/gmu/orderEdgesFromWire.py @@ -17,64 +17,61 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""Trouver les vertices intermédiaires d'un wire""" import logging -from .geomsmesh import geompy -# ----------------------------------------------------------------------------- -# --- trouver les vertices intermediaires d'un wire +from .geomsmesh import geompy def orderEdgesFromWire(aWire): - """ - fournit les edges ordonnées d'un wire selon ExtractShapes(,,False), + """Fournit les edges ordonnées d'un wire selon ExtractShapes(,,False), et l'ordre des edges selon le sens de parcours (ordre des indices de la liste d'edges) """ logging.info("start") edges = geompy.ExtractShapes(aWire, geompy.ShapeType["EDGE"], False) - + idverts = dict() - for i, edge in enumerate(edges): + for i_aux, edge in enumerate(edges): verts = geompy.ExtractShapes(edge, geompy.ShapeType["VERTEX"], True) -# idverts[(i,0)] = verts[0] -# idverts[(i,1)] = verts[1] - v0 = geompy.MakeVertexOnCurve(edge, 0.0) - dist = geompy.MinDistance(v0, verts[0]) + vertex_a = geompy.MakeVertexOnCurve(edge, 0.0) + dist = geompy.MinDistance(vertex_a, verts[0]) if dist < 1.e-4: - idverts[(i,0)] = verts[0] - idverts[(i,1)] = verts[1] + idverts[(i_aux,0)] = verts[0] + idverts[(i_aux,1)] = verts[1] else: - idverts[(i,0)] = verts[1] - idverts[(i,1)] = verts[0] - + idverts[(i_aux,0)] = verts[1] + idverts[(i_aux,1)] = verts[0] + idsubs = dict() - for kv, sub in idverts.items(): + for i_aux, sub in idverts.items(): subid = geompy.GetSubShapeID(aWire, sub) - if subid in list(idsubs.keys()): - idsubs[subid].append(kv) + if ( subid in idsubs ): + idsubs[subid].append(i_aux) else: - idsubs[subid] = [kv] - + idsubs[subid] = [i_aux] + debut = -1 - fin = -1 - for k, kvs in idsubs.items(): + fin = -1 + for _, kvs in idsubs.items(): if len(kvs) == 1: # une extremité - kv = kvs[0] - if kv[1] == 0: - debut = kv[0] + kv0 = kvs[0] + if kv0[1] == 0: + debut = kv0[0] else: - fin = kv[0] - logging.debug("nombre d'edges: {}, indice edge début: {}, fin: {}".format(len(edges), debut, fin)) + fin = kv0[0] + texte = "nombre d'edges: {}, indice edge début: {}, fin: {}".format(len(edges), debut, fin) + logging.debug(texte) if debut < 0: logging.critical("les edges du wire ne sont pas orientées dans le même sens: pas de début trouvé") return edges, list(range(len(edges))) - + orderedList = [debut] while len(orderedList) < len(edges): bout = orderedList[-1] vertex = idverts[(bout,1)] - for k, v in idverts.items(): + for k, vertex_a in idverts.items(): if k[0] not in orderedList: - if geompy.MinDistance(vertex, v) < 1.e-4: + if geompy.MinDistance(vertex, vertex_a) < 1.e-4: if k[1] == 0: orderedList.append(k[0]) break @@ -82,9 +79,12 @@ def orderEdgesFromWire(aWire): logging.critical("les edges du wire ne sont pas orientées dans le même sens: une edge à l'envers") return edges, list(range(len(edges))) - logging.debug("liste des edges ordonnées selon le sens de parcours : {}".format(orderedList)) + texte = "liste des edges ordonnées selon le sens de parcours : {}".format(orderedList) + logging.debug(texte) accessList = list(range(len(orderedList))) - for i,k in enumerate(orderedList): - accessList[k] = i - logging.info("position ordonnée des edges selon le sens de parcours : {}".format(accessList)) + for i_aux,k_aux in enumerate(orderedList): + accessList[k_aux] = i_aux + texte = "position ordonnée des edges selon le sens de parcours : {}".format(accessList) + logging.info(texte) + return edges, accessList