1 # -*- coding: utf-8 -*-
5 from geomsmesh import geompy
6 from extractionOrientee import extractionOrientee
7 from extractionOrienteeMulti import extractionOrienteeMulti
9 def identifieElementsFissure(ifil, facesDefaut, partitionPeauFissFond,
10 edgesPipeFiss, edgesFondFiss, aretesVivesC,
11 fillingFaceExterne, centreFondFiss):
13 # -----------------------------------------------------------------------
14 # --- identification edges fond de fissure, edges pipe sur la face de fissure,
16 # edges internes communes pipe et fissure, points communs edges fissure peau et edges circulaires
21 edgesPipeC = geompy.GetInPlace(partitionPeauFissFond, geompy.MakeCompound(edgesPipeFiss))
22 geompy.addToStudyInFather(partitionPeauFissFond, edgesPipeC, "edgesPipeFiss")
23 edgesFondC = geompy.GetInPlace(partitionPeauFissFond, geompy.MakeCompound(edgesFondFiss))
24 geompy.addToStudyInFather(partitionPeauFissFond, edgesFondC, "edgesFondFiss")
26 if aretesVivesC is None:
27 [edgesInside, edgesOutside, edgesOnside] = extractionOrientee(fillingFaceExterne, partitionPeauFissFond, centreFondFiss, "EDGE", 1.e-3)
28 [facesInside, facesOutside, facesOnside] = extractionOrientee(fillingFaceExterne, partitionPeauFissFond, centreFondFiss, "FACE", 1.e-3)
30 [edgesInside, edgesOutside, edgesOnside] = extractionOrienteeMulti(facesDefaut, ifil, partitionPeauFissFond, centreFondFiss, "EDGE", 1.e-3)
31 [facesInside, facesOutside, facesOnside] = extractionOrienteeMulti(facesDefaut, ifil, partitionPeauFissFond, centreFondFiss, "FACE", 1.e-3)
33 edgesPipeIn = geompy.GetSharedShapesMulti([edgesPipeC, geompy.MakeCompound(edgesInside)], geompy.ShapeType["EDGE"])
36 for i, edge in enumerate(edgesPipeIn):
38 vertices = geompy.GetSharedShapesMulti([edge, geompy.MakeCompound(facesOnside)], geompy.ShapeType["VERTEX"])
39 verticesPipePeau.append(vertices[0])
40 name = "edgePipeIn%d"%i
41 geompy.addToStudyInFather(partitionPeauFissFond, edge, name)
42 name = "verticePipePeau%d"%i
43 geompy.addToStudyInFather(partitionPeauFissFond, vertices[0], name)
44 logging.debug("edgePipeIn%s coupe les faces OnSide", i)
46 logging.debug("edgePipeIn%s ne coupe pas les faces OnSide", i)
49 if len(verticesPipePeau) > 0: # au moins une extrémité du pipe sur cette face de peau
50 #tmp = geompy.GetSharedShapesMulti([edgesFondC, geompy.MakeCompound(edgesOutside)], geompy.ShapeType["EDGE"])
51 #edgesFondOut = [ ed for ed in tmp if geompy.MinDistance(ed, geompy.MakeCompound(facesOnside)) < 1.e-3]
52 tmp = geompy.GetSharedShapesMulti([edgesFondC, geompy.MakeCompound(edgesInside)], geompy.ShapeType["EDGE"])
53 edgesFondIn = [ ed for ed in tmp if geompy.MinDistance(ed, geompy.MakeCompound(facesOnside)) < 1.e-3]
55 return (edgesPipeIn, verticesPipePeau, edgesFondIn, facesInside, facesOnside)