1 # -*- coding: utf-8 -*-
5 from geomsmesh import geompy
6 from findWireIntermediateVertices import findWireIntermediateVertices
7 from projettePointSurCourbe import projettePointSurCourbe
9 def ajustePointsEdgePipeFissure(edgesPipeFissureExterneC, wirePipeFissureExterne, gptsdisks, idisklim):
11 ajustement precis des points sur edgesPipeFissureExterneC
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é
20 for vtx in verticesPFE:
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))
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):
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)]
38 edgePFE = distPtEd[0][2]
39 u = projettePointSurCourbe(pt, edgePFE)
40 ptproj = geompy.MakeVertexOnCurve(edgePFE, u)
41 gptsdisks[idisk][0][-1] = ptproj