diff --git a/src/Tools/blocFissure/gmu/substractSubShapes.py b/src/Tools/blocFissure/gmu/substractSubShapes.py index 84ad6b852..9f867ebf9 100644 --- a/src/Tools/blocFissure/gmu/substractSubShapes.py +++ b/src/Tools/blocFissure/gmu/substractSubShapes.py @@ -17,25 +17,25 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""Substract a list of subShapes from another""" import logging + from .geomsmesh import geompy -# ----------------------------------------------------------------------------- -# --- substract a list of subShapes from another - def substractSubShapes(obj, subs, toRemove): - """ - liste de subshapes par difference - """ + """liste de subshapes par difference""" logging.info("start") - idToremove = {} - subList = [] - for s in toRemove: - idToremove[geompy.GetSubShapeID(obj, s)] = s - for s in subs: - idsub = geompy.GetSubShapeID(obj, s) - if idsub not in list(idToremove.keys()): - subList.append(s) + idToremove = dict() + for shape in toRemove: + idToremove[geompy.GetSubShapeID(obj, shape)] = shape + + subList = list() + for shape in subs: + idsub = geompy.GetSubShapeID(obj, shape) + if ( idsub not in idToremove ): + subList.append(shape) + logging.debug("subList=%s", subList) + return subList diff --git a/src/Tools/blocFissure/gmu/toreFissure.py b/src/Tools/blocFissure/gmu/toreFissure.py index 85d10b8ee..383ccb05d 100644 --- a/src/Tools/blocFissure/gmu/toreFissure.py +++ b/src/Tools/blocFissure/gmu/toreFissure.py @@ -17,20 +17,20 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""tore et plan de fissure""" import logging +import math + from .geomsmesh import geompy from .geomsmesh import geomPublish -from .geomsmesh import geomPublishInFather + from . import initLog -import math + from .triedreBase import triedreBase O, OX, OY, OZ = triedreBase() -# ----------------------------------------------------------------------------- -# --- tore et plan de fissure - def toreFissure(minRad,allonge,rayTore): """ Construction de la geometrie du tore elliptique autour du front de fissure. @@ -38,53 +38,53 @@ def toreFissure(minRad,allonge,rayTore): @param minRad :petit rayon @param allonge :rapport grand rayon / petit rayon @param rayTore :rayon du tore construit autour de la generatrice de l'ellipse - @return (generatrice, FaceGenFiss, Pipe_1, FaceFissure, Plane_1, Pipe1Part) : ellipse, section du tore, + @return (generatrice, face_gen_fiss, pipe, face_fissure, plane, pipe_part) : ellipse, section du tore, tore plein, face plane de le fissure, plan de la fissure, tore partitioné par le plan de fissure. """ - logging.info("start ", minRad, allonge, rayTore) - - Vertex_1 = geompy.MakeVertex( minRad, 0, 0) - Vertex_2 = geompy.MakeVertex(-minRad, 0, 0) - Vertex_3 = geompy.MakeRotation(Vertex_1, OZ, 45*math.pi/180.0) - Arc_1 = geompy.MakeArc(Vertex_1, Vertex_2, Vertex_3) - generatrice = geompy.MakeScaleAlongAxes(Arc_1, O, 1, allonge, 1) + logging.info("start %s %s %s", minRad, allonge, rayTore) - #geomPublish(initLog.debug, Vertex_1, 'Vertex_1' ) - #geomPublish(initLog.debug, Vertex_2, 'Vertex_2' ) - #geomPublish(initLog.debug, Vertex_3, 'Vertex_3' ) - #geomPublish(initLog.debug, Arc_1, 'Arc_1' ) + vertex_1 = geompy.MakeVertex( minRad, 0., 0.) + vertex_2 = geompy.MakeVertex(-minRad, 0., 0.) + vertex_3 = geompy.Makerotation(vertex_1, OZ, 45.*math.pi/180.0) + arc = geompy.MakeArc(vertex_1, vertex_2, vertex_3) + generatrice = geompy.MakeScaleAlongAxes(arc, O, 1, allonge, 1) + + #geomPublish(initLog.debug, vertex_1, 'vertex_1' ) + #geomPublish(initLog.debug, vertex_2, 'vertex_2' ) + #geomPublish(initLog.debug, vertex_3, 'vertex_3' ) + #geomPublish(initLog.debug, arc, 'arc' ) #geomPublish(initLog.debug, generatrice, 'generatrice' ) # --- face circulaire sur la generatrice, pour extrusion - Circle_1 = geompy.MakeCircle(O, OY, rayTore) - Rotation_1 = geompy.MakeRotation(Circle_1, OY, -90*math.pi/180.0) - Translation_1 = geompy.MakeTranslation(Rotation_1, minRad, 0, 0) - FaceGenFiss = geompy.MakeFaceWires([Translation_1], 1) + circle = geompy.MakeCircle(O, OY, rayTore) + rotation = geompy.MakeRotation(circle, OY, -90.*math.pi/180.0) + translation = geompy.MakeTranslation(rotation, minRad, 0., 0.) + face_gen_fiss = geompy.MakeFaceWires([translation], 1) - #geomPublish(initLog.debug, Circle_1, 'Circle_1' ) - #geomPublish(initLog.debug, Rotation_1, 'Rotation_1' ) - #geomPublish(initLog.debug, Translation_1, 'Translation_1' ) - #geomPublish(initLog.debug, FaceGenFiss, 'FaceGenFiss' ) + #geomPublish(initLog.debug, circle, 'circle' ) + #geomPublish(initLog.debug, rotation, 'rotation' ) + #geomPublish(initLog.debug, translation, 'translation' ) + #geomPublish(initLog.debug, face_gen_fiss, 'face_gen_fiss' ) # --- tore extrude - Pipe_1 = geompy.MakePipe(FaceGenFiss, generatrice) + pipe = geompy.MakePipe(face_gen_fiss, generatrice) # --- plan fissure, delimite par la generatrice - Scale_1_vertex_3 = geompy.GetSubShape(generatrice, [3]) - Line_1 = geompy.MakeLineTwoPnt(Vertex_1, Scale_1_vertex_3) - FaceFissure = geompy.MakeFaceWires([generatrice, Line_1], 1) + scale_vertex_3 = geompy.GetSubShape(generatrice, [3]) + line = geompy.MakeLineTwoPnt(vertex_1, scale_vertex_3) + face_fissure = geompy.MakeFaceWires([generatrice, line], 1) - #geomPublishInFather(initLog.debug, generatrice, Scale_1_vertex_3, 'Scale_1:vertex_3' ) - #geomPublish(initLog.debug, Line_1, 'Line_1' ) - #geomPublish(initLog.debug, FaceFissure, 'FaceFissure' ) + #geomPublishInFather(initLog.debug, generatrice, scale_vertex_3, 'scale_1:vertex_3' ) + #geomPublish(initLog.debug, line, 'line' ) + #geomPublish(initLog.debug, face_fissure, 'face_fissure' ) # --- tore coupe en 2 demi tore de section 1/2 disque - Plane_1 = geompy.MakePlane(O, OZ, 2000) - Pipe1Part = geompy.MakePartition([Pipe_1], [Plane_1], [], [], geompy.ShapeType["SOLID"], 0, [], 1) - geomPublish(initLog.debug, Pipe1Part , 'Pipe1Part' ) + plane = geompy.MakePlane(O, OZ, 2000) + pipe_part = geompy.MakePartition([pipe], [plane], [], [], geompy.ShapeType["SOLID"], 0, [], 1) + geomPublish(initLog.debug, pipe_part , 'pipe_part' ) - return generatrice, FaceGenFiss, Pipe_1, FaceFissure, Plane_1, Pipe1Part + return generatrice, face_gen_fiss, pipe, face_fissure, plane, pipe_part diff --git a/src/Tools/blocFissure/gmu/triedreBase.py b/src/Tools/blocFissure/gmu/triedreBase.py index 0b0528e1e..bae2fc181 100644 --- a/src/Tools/blocFissure/gmu/triedreBase.py +++ b/src/Tools/blocFissure/gmu/triedreBase.py @@ -17,14 +17,14 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""Origine et vecteurs de base""" import logging + from .geomsmesh import geompy from .geomsmesh import geomPublish -from .geomsmesh import geomPublishInFather -from . import initLog -# --- origine et vecteurs de base +from . import initLog O = None OX = None @@ -37,14 +37,14 @@ def triedreBase(): objets partages par plusieurs methodes """ global O, OX, OY, OZ - - if O == None: + + if ( O is None ): logging.info("start") O = geompy.MakeVertex(0, 0, 0) OX = geompy.MakeVectorDXDYDZ(1, 0, 0) OY = geompy.MakeVectorDXDYDZ(0, 1, 0) OZ = geompy.MakeVectorDXDYDZ(0, 0, 1) - + if not geompy.myStudy.FindObjectByName( 'OX', geompy.ComponentDataType() ): geomPublish(initLog.debug, O, 'O' ) geomPublish(initLog.debug, OX, 'OX' ) diff --git a/src/Tools/blocFissure/gmu/trouveEdgesFissPeau.py b/src/Tools/blocFissure/gmu/trouveEdgesFissPeau.py index db73d067b..1fbfd5fd7 100644 --- a/src/Tools/blocFissure/gmu/trouveEdgesFissPeau.py +++ b/src/Tools/blocFissure/gmu/trouveEdgesFissPeau.py @@ -17,34 +17,36 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""Pour les faces de peau sans extremité débouchante de fissure, il faut recenser les edges de fissure sur la face de peau""" import logging from .geomsmesh import geompy -from .geomsmesh import geomPublish from .geomsmesh import geomPublishInFather + from . import initLog def trouveEdgesFissPeau(facesInside, facesOnside, edgesPipeIn, edgesFondIn, partitionPeauFissFond, edgesFissExtPeau): - """ - pour les faces de peau sans extremité débouchante de fissure, il faut recenser les edges de fissure sur la face de peau - """ + """Pour les faces de peau sans extremité débouchante de fissure, il faut recenser les edges de fissure sur la face de peau""" logging.info('start') - - j = 0 + + i_aux = 0 for face in facesInside: - edgesPeauFis = [] - edgesPipeFis = [] - edgesPipeFnd = [] + + edgesPeauFis = list() + edgesPipeFis = list() + edgesPipeFnd = list() try: edgesPeauFis = geompy.GetSharedShapesMulti([geompy.MakeCompound(facesOnside), face], geompy.ShapeType["EDGE"]) edgesPipeFis = geompy.GetSharedShapesMulti([geompy.MakeCompound(edgesPipeIn), face], geompy.ShapeType["EDGE"]) edgesPipeFnd = geompy.GetSharedShapesMulti([geompy.MakeCompound(edgesFondIn), face], geompy.ShapeType["EDGE"]) except: pass - if (len(edgesPeauFis) > 0) and (len(edgesPipeFis) > 0) and (len(edgesPipeFnd) == 0): + + if ( edgesPeauFis and edgesPipeFis and ( not edgesPipeFnd ) ): edgesFissExtPeau.append(edgesPeauFis[0]) - name="edgesFissExtPeau%d"%j + name="edgesFissExtPeau{}".format(i_aux) geomPublishInFather(initLog.debug,partitionPeauFissFond, edgesPeauFis[0], name) - j += 1 - return edgesFissExtPeau \ No newline at end of file + i_aux += 1 + + return edgesFissExtPeau diff --git a/src/Tools/blocFissure/gmu/whichSide.py b/src/Tools/blocFissure/gmu/whichSide.py index 55e16a9e7..c88a9097d 100644 --- a/src/Tools/blocFissure/gmu/whichSide.py +++ b/src/Tools/blocFissure/gmu/whichSide.py @@ -17,13 +17,11 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""Calcul de la position d'une shape par rapport à une face (dessus, dessous, sur la surface même)""" import logging from .geomsmesh import geompy -# ----------------------------------------------------------------------------- -# --- calcul de la position d'une shape par rapport à une face (dessus, dessous, sur la surface même) - def whichSide(face, obj, tol = 1.e-3): """ Position d'un objet par rapport a une face (non nécessairement plane). @@ -40,6 +38,7 @@ def whichSide(face, obj, tol = 1.e-3): nbFaces = geompy.NbShapes(obj, geompy.ShapeType["FACE"]) # --- attention ! pour une seule face presente, renvoie 2 logging.debug(" nbFaces %s", nbFaces) vertices = geompy.ExtractShapes(obj, geompy.ShapeType["VERTEX"], False) + if nbEdges > 0 and nbFaces == 0: # --- edges if nbEdges <= 2: point = geompy.MakeVertexOnCurve(obj, 0.5) @@ -49,17 +48,20 @@ def whichSide(face, obj, tol = 1.e-3): for anEdge in edges: point = geompy.MakeVertexOnCurve(anEdge, 0.5) vertices.append(point) + elif nbFaces >0: # --- faces if nbFaces <=2: point = geompy.MakeVertexOnSurface(obj, 0.5, 0.5) vertices.append(point) - if nbFaces > 2: + else: faces = geompy.ExtractShapes(obj, geompy.ShapeType["FACE"], False) for aFace in faces: point = geompy.MakeVertexOnSurface(aFace, 0.5, 0.5) vertices.append(point) + else: # --- vertices vertices = [obj] + for vertex in vertices: distance = geompy.MinDistance(vertex, face) logging.debug(" distance %s", distance) @@ -74,5 +76,5 @@ def whichSide(face, obj, tol = 1.e-3): side = -1 break logging.debug(" side %s", side) - return side + return side diff --git a/src/Tools/blocFissure/gmu/whichSideMulti.py b/src/Tools/blocFissure/gmu/whichSideMulti.py index 31f7e2d52..74cb17218 100644 --- a/src/Tools/blocFissure/gmu/whichSideMulti.py +++ b/src/Tools/blocFissure/gmu/whichSideMulti.py @@ -17,12 +17,11 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""Calcul de la position d'une shape par rapport à une face (dessus, dessous, sur la surface même)""" import logging -from .geomsmesh import geompy -# ----------------------------------------------------------------------------- -# --- calcul de la position d'une shape par rapport à une face (dessus, dessous, sur la surface même) +from .geomsmesh import geompy def whichSideMulti(facerefs, ifil, obj, centre, tol = 1.e-3): """ @@ -39,6 +38,7 @@ def whichSideMulti(facerefs, ifil, obj, centre, tol = 1.e-3): nbEdges = geompy.NbShapes(obj, geompy.ShapeType["EDGE"]) # --- attention ! pour une seule edge presente, renvoie 2 logging.debug(" nbEdges %s", nbEdges) vertices = geompy.ExtractShapes(obj, geompy.ShapeType["VERTEX"], False) + if nbEdges > 0 : # --- edges if nbEdges <= 2: point = geompy.MakeVertexOnCurve(obj, 0.5) @@ -50,6 +50,7 @@ def whichSideMulti(facerefs, ifil, obj, centre, tol = 1.e-3): vertices.append(point) else: # --- vertices vertices = [obj] + nbOnRef = 0 nbOnOther = 0 for vertex in vertices: @@ -70,20 +71,21 @@ def whichSideMulti(facerefs, ifil, obj, centre, tol = 1.e-3): break else: nbMiss += 1 - pass # peut-être inside, tester les autres faces + # peut-être inside, tester les autres faces else: if i == ifil: nbOnRef +=1 # le point est sur la face de référence, on continue avec les autres points break else: nbOnOther += 1 # le point est sur une autre face, mais il peut aussi être sur la face de référence... - pass # on peut tester les autres faces + # on peut tester les autres faces if nbMiss == len(facerefs): side = 1 # inside if side != 0: break - if side == 0 and nbOnRef < len(vertices): - side = 1 # inside - logging.debug(" side %s", side) - return side + if side == 0 and nbOnRef < len(vertices): + side = 1 # inside + logging.debug(" side %s", side) + + return side diff --git a/src/Tools/blocFissure/gmu/whichSideVertex.py b/src/Tools/blocFissure/gmu/whichSideVertex.py index 86512c91d..eb67c51c8 100644 --- a/src/Tools/blocFissure/gmu/whichSideVertex.py +++ b/src/Tools/blocFissure/gmu/whichSideVertex.py @@ -17,12 +17,11 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # +"""Calcul de la position d'une shape par rapport à une face (dessus, dessous, sur la surface même)""" import logging -from .geomsmesh import geompy -# ----------------------------------------------------------------------------- -# --- calcul de la position d'une shape par rapport à une face (dessus, dessous, sur la surface même) +from .geomsmesh import geompy def whichSideVertex(face, vertex, tol = 1.e-3): """ @@ -34,6 +33,7 @@ def whichSideVertex(face, vertex, tol = 1.e-3): side = 0 distance = geompy.MinDistance(vertex, face) #logging.debug(" distance %s", distance) + if distance > tol: projection = geompy.MakeProjection(vertex, face) normal = geompy.GetNormal(face, projection) @@ -41,8 +41,8 @@ def whichSideVertex(face, vertex, tol = 1.e-3): angle = geompy.GetAngle(normal, vect) #logging.debug(" angle %s", angle) side = 1 - if abs(angle) > 10: + if ( abs(angle) > 10 ): side = -1 logging.debug("side %s distance %s", side, distance) - return side + return side