1 # -*- coding: utf-8 -*-
5 from .geomsmesh import geompy
6 from .geomsmesh import geomPublish
7 from .geomsmesh import geomPublishInFather
10 from .extractionOrientee import extractionOrientee
11 from .extractionOrienteeMulti import extractionOrienteeMulti
13 def identifieElementsFissure(ifil, facesDefaut, partitionPeauFissFond,
14 edgesPipeFiss, edgesFondFiss, aretesVivesC,
15 fillingFaceExterne, centreFondFiss):
17 # -----------------------------------------------------------------------
18 # --- identification edges fond de fissure, edges pipe sur la face de fissure,
20 # edges internes communes pipe et fissure, points communs edges fissure peau et edges circulaires
25 edgesPipeC = geompy.GetInPlace(partitionPeauFissFond, geompy.MakeCompound(edgesPipeFiss))
26 geomPublishInFather(initLog.debug, partitionPeauFissFond, edgesPipeC, "edgesPipeFiss")
27 edgesFondC = geompy.GetInPlace(partitionPeauFissFond, geompy.MakeCompound(edgesFondFiss))
28 geomPublishInFather(initLog.debug, partitionPeauFissFond, edgesFondC, "edgesFondFiss")
30 if aretesVivesC is None:
31 [edgesInside, edgesOutside, edgesOnside] = extractionOrientee(fillingFaceExterne, partitionPeauFissFond, centreFondFiss, "EDGE", 1.e-3)
32 [facesInside, facesOutside, facesOnside] = extractionOrientee(fillingFaceExterne, partitionPeauFissFond, centreFondFiss, "FACE", 1.e-3)
34 [edgesInside, edgesOutside, edgesOnside] = extractionOrienteeMulti(facesDefaut, ifil, partitionPeauFissFond, centreFondFiss, "EDGE", 1.e-3)
35 [facesInside, facesOutside, facesOnside] = extractionOrienteeMulti(facesDefaut, ifil, partitionPeauFissFond, centreFondFiss, "FACE", 1.e-3)
37 edgesPipeIn = geompy.GetSharedShapesMulti([edgesPipeC, geompy.MakeCompound(edgesInside)], geompy.ShapeType["EDGE"])
40 for i, edge in enumerate(edgesPipeIn):
42 vertices = geompy.GetSharedShapesMulti([edge, geompy.MakeCompound(facesOnside)], geompy.ShapeType["VERTEX"])
43 verticesPipePeau.append(vertices[0])
44 name = "edgePipeIn%d"%i
45 geomPublishInFather(initLog.debug, partitionPeauFissFond, edge, name)
46 name = "verticePipePeau%d"%i
47 geomPublishInFather(initLog.debug, partitionPeauFissFond, vertices[0], name)
48 logging.debug("edgePipeIn%s coupe les faces OnSide", i)
50 logging.debug("edgePipeIn%s ne coupe pas les faces OnSide", i)
53 if len(verticesPipePeau) > 0: # au moins une extrémité du pipe sur cette face de peau
54 #tmp = geompy.GetSharedShapesMulti([edgesFondC, geompy.MakeCompound(edgesOutside)], geompy.ShapeType["EDGE"])
55 #edgesFondOut = [ ed for ed in tmp if geompy.MinDistance(ed, geompy.MakeCompound(facesOnside)) < 1.e-3]
56 tmp = geompy.GetSharedShapesMulti([edgesFondC, geompy.MakeCompound(edgesInside)], geompy.ShapeType["EDGE"])
57 edgesFondIn = [ ed for ed in tmp if geompy.MinDistance(ed, geompy.MakeCompound(facesOnside)) < 1.e-3]
59 return (edgesPipeIn, verticesPipePeau, edgesFondIn, facesInside, facesOnside)