Salome HOME
Merge tag 'V8_3_0a2' into ngr/python3_dev
[modules/smesh.git] / src / Tools / blocFissure / gmu / ajustePointsEdgePipeFissure.py
1 # -*- coding: utf-8 -*-
2
3 import logging
4
5 from .geomsmesh import geompy
6 from .findWireIntermediateVertices import findWireIntermediateVertices
7 from .projettePointSurCourbe import projettePointSurCourbe
8
9 def ajustePointsEdgePipeFissure(edgesPipeFissureExterneC, wirePipeFissureExterne, gptsdisks, idisklim):
10   """
11   ajustement precis des points sur edgesPipeFissureExterneC
12   """
13   logging.info('start')
14   
15   edgesPFE = geompy.ExtractShapes(edgesPipeFissureExterneC, geompy.ShapeType["EDGE"], False)
16   verticesPFE = findWireIntermediateVertices(wirePipeFissureExterne)  # vertices intermédiaires (des points en trop dans ptsInWireFissExtPipe)
17   idiskmin = idisklim[0] + 1 # on ne prend pas le disque sur la peau, déjà ajusté
18   idiskmax = idisklim[1]     # on ne prend pas le disque sur la peau, déjà ajusté
19   idiskint = []
20   for vtx in verticesPFE:
21     distPtVt = []
22     for idisk in range(idiskmin, idiskmax):
23       gptdsk = gptsdisks[idisk]
24       pt = gptdsk[0][-1]       # le point sur l'edge de la fissure externe au pipe
25       distPtVt.append((geompy.MinDistance(pt, vtx), idisk))
26     distPtVt.sort()
27     idiskint.append(distPtVt[0][1])
28     gptsdisks[idiskint[-1]][0][-1] = vtx
29     logging.debug("ajustement point sur edgePipeFissureExterne, vertex: %s %s", idiskint[-1], distPtVt[0][0])
30   for idisk in range(idiskmin, idiskmax):
31     if idisk in idiskint:
32       break
33     logging.debug("ajustement point sur edgePipeFissureExterne: %s", idisk)
34     gptdsk = gptsdisks[idisk]
35     pt = gptdsk[0][-1]       # le point sur l'edge de la fissure externe au pipe
36     distPtEd = [(geompy.MinDistance(pt, edgePFE), k, edgePFE) for k, edgePFE in enumerate(edgesPFE)]
37     distPtEd.sort()
38     edgePFE = distPtEd[0][2]
39     u = projettePointSurCourbe(pt, edgePFE)
40     ptproj = geompy.MakeVertexOnCurve(edgePFE, u)
41     gptsdisks[idisk][0][-1] = ptproj
42
43   return gptsdisks