1 # -*- coding: utf-8 -*-
5 from geomsmesh import geompy
6 from projettePointSurCourbe import projettePointSurCourbe
8 def creePointsPipePeau(listEdges, idFacesDebouchantes, idFillingFromBout,
9 ptEdgeFond, ptFisExtPi, edCircPeau, gptsdisks, idisklim, nbsegRad):
11 création des points du maillage du pipe sur la face de peau
15 for i, edges in enumerate(listEdges):
16 idf = idFacesDebouchantes[i] # indice de face débouchante (facesPipePeau)
19 if idf > 0: # idf vaut 0 ou 1
20 idf = -1 # si idf vaut 1, on prend le dernier élément de la liste (1 ou 2 extrémités débouchent sur la face)
21 centre = ptEdgeFond[idFillingFromBout[i]][idf]
23 geompy.addToStudy(centre, name)
24 vertPipePeau = ptFisExtPi[idFillingFromBout[i]][idf]
25 geompy.addToStudyInFather(centre, vertPipePeau, "vertPipePeau")
26 grpsEdgesCirc = edCircPeau[idFillingFromBout[i]] # liste de groupes
28 for grpEdgesCirc in grpsEdgesCirc:
29 edgesCirc += geompy.ExtractShapes(grpEdgesCirc, geompy.ShapeType["EDGE"], False)
30 for k, edge in enumerate(edges):
31 extrems = geompy.ExtractShapes(edge, geompy.ShapeType["VERTEX"], True)
32 if geompy.MinDistance(centre, extrems[0]) < geompy.MinDistance(centre, extrems[1]):
36 # ajustement du point extrémité (bout) sur l'edge circulaire en face de peau
37 logging.debug("edgesCirc: %s", edgesCirc)
38 distEdgeCirc = [(geompy.MinDistance(bout, edgeCirc), k2, edgeCirc) for k2, edgeCirc in enumerate(edgesCirc)]
40 logging.debug("distEdgeCirc: %s", distEdgeCirc)
41 u = projettePointSurCourbe(bout, distEdgeCirc[0][2])
42 if (abs(u) < 0.02) or (abs(1-u) < 0.02): # les points très proches d'une extrémité doivent y être mis précisément.
43 extrCircs = geompy.ExtractShapes(distEdgeCirc[0][2], geompy.ShapeType["VERTEX"], True)
44 if geompy.MinDistance(bout, extrCircs[0]) < geompy.MinDistance(bout, extrCircs[1]):
49 bout = geompy.MakeVertexOnCurve(distEdgeCirc[0][2], u)
51 geompy.addToStudyInFather(centre, bout, name)
52 # enregistrement des points dans la structure
54 for j in range(nbsegRad +1):
56 points.append(geompy.MakeVertexOnCurve(edge, u))
57 if geompy.MinDistance(bout, points[0]) < geompy.MinDistance(centre, points[0]):
63 gptsdisks[idisklim[0] -1] = gptdsk
64 idisklim[0] = idisklim[0] -1
66 gptsdisks[idisklim[1] +1] = gptdsk
67 idisklim[1] = idisklim[1] +1
69 return (gptsdisks, idisklim)