1 # -*- coding: utf-8 -*-
5 from .identifieElementsFissure import identifieElementsFissure
6 from .identifieElementsDebouchants import identifieElementsDebouchants
7 from .trouveEdgesFissPeau import trouveEdgesFissPeau
8 from .identifieFacesPeau import identifieFacesPeau
9 from .identifieEdgesPeau import identifieEdgesPeau
11 def identifieElementsGeometriquesPeau(ifil, partitionPeauFissFond, edgesPipeFiss,
12 edgesFondFiss, wireFondFiss, aretesVivesC,
13 facesDefaut, centreFondFiss, rayonPipe,
18 fillingFaceExterne = facesDefaut[ifil]
20 logging.debug("traitement partitionPeauFissFond %s", ifil)
22 # --- identification edges fond de fissure, edges pipe sur la face de fissure, edges prolongées
23 # edges internes communes pipe et fissure, points communs edges fissure peau et edges circulaires
25 (edgesPipeIn, verticesPipePeau, edgesFondIn, facesInside, facesOnside) = identifieElementsFissure(ifil, facesDefaut, partitionPeauFissFond,
26 edgesPipeFiss, edgesFondFiss, aretesVivesC,
27 fillingFaceExterne, centreFondFiss)
29 # --- elements débouchants (intersection pipe et peau), indexés selon les edges du fond de fissure (edgesFondIn)
31 (verticesEdgesFondIn, pipexts, cercles,
32 facesFissExt, edgesFissExtPeau, edgesFissExtPipe) = identifieElementsDebouchants(ifil, facesDefaut, partitionPeauFissFond,
33 edgesFondIn, edgesFondFiss, wireFondFiss,
34 aretesVivesC, fillingFaceExterne,
35 edgesPipeIn, verticesPipePeau, rayonPipe,
36 facesInside, facesOnside)
38 # --- pour les faces de peau sans extremité débouchante de fissure, il faut recenser les edges de fissure sur la face de peau
40 if len(verticesPipePeau) == 0: # aucune extrémité du pipe sur cette face de peau
41 edgesFissExtPeau = trouveEdgesFissPeau(facesInside, facesOnside, edgesPipeIn, edgesFondIn, partitionPeauFissFond, edgesFissExtPeau)
43 # --- inventaire des faces de peau : face de peau percée du pipe, extrémités du pipe
45 (facePeau, facesPeauSorted, edgesPeauFondIn) = identifieFacesPeau(ifil, verticesPipePeau, facesOnside, wireFondFiss,
46 verticesEdgesFondIn, pipexts, cercles,
47 fillingFaceExterne, centreFondFiss)
49 # --- identification précise des edges et disques des faces de peau selon index extremité fissure
51 (endsEdgeFond, facesPipePeau, edgeRadFacePipePeau,
52 edgesCircPeau, verticesCircPeau, groupEdgesBordPeau,
53 bordsVifs, edgesFissurePeau, aretesVivesCoupees) = identifieEdgesPeau(edgesFissExtPipe, verticesPipePeau, facePeau, facesPeauSorted,
54 edgesPeauFondIn, fillingFaceExterne, aretesVivesC, aretesVivesCoupees)
56 dataPPFF = dict(endsEdgeFond = endsEdgeFond, # pour chaque face [points edge fond de fissure aux débouchés du pipe]
57 facesPipePeau = facesPipePeau, # pour chaque face [faces du pipe débouchantes]
58 edgeRadFacePipePeau = edgeRadFacePipePeau, # pour chaque face [edge radiale des faces du pipe débouchantes ]
59 facesFissExt = facesFissExt, # pour chaque face [faces de fissure externes au pipe]
60 edgesFissExtPeau = edgesFissExtPeau, # pour chaque face [edge en peau des faces de fissure externes (pas subshape facePeau)]
61 edgesFissExtPipe = edgesFissExtPipe, # pour chaque face [edge commun au pipe des faces de fissure externes]
62 facePeau = facePeau, # pour chaque face : la face de peau finale a mailler (percee des faces débouchantes)
63 edgesCircPeau = edgesCircPeau, # pour chaque face de peau : [groupe subshapes edges circulaires aux débouchés du pipe]
64 verticesCircPeau = verticesCircPeau, # pour chaque face de peau : [groupe subshapes points sur edges circulaires aux débouchés du pipe]
65 groupEdgesBordPeau = groupEdgesBordPeau, # pour chaque face de peau : groupe subshape des edges aux bords liés à la partie saine
66 bordsVifs = bordsVifs, # pour chaque face de peau : groupe subshape des edges aux bords correspondant à des arêtes vives
67 edgesFissurePeau = edgesFissurePeau, # pour chaque face de peau : [subshape edge en peau des faces de fissure externes]
68 verticesPipePeau = verticesPipePeau # pour chaque face de peau : [point commun edFissPeau edCircPeau]
71 return dataPPFF, aretesVivesCoupees