1 # -*- coding: utf-8 -*-
4 from geomsmesh import geompy
6 # -----------------------------------------------------------------------------
8 ## --- faces 1/2 circulaires et leur centre, edges de ces faces dans le plan de fissure
10 def facesCirculaires(bloc, tore):
12 Extraction des faces demi circulaires à l'intersection du tore partitionné et de la paroi,
13 de leur centre, les edges de ces faces situees dans le plan de fissure et un booleen par edge,
14 indiquant son sens (normal / reversed).
15 @param bloc : bloc defaut
16 @param tore : le tore partitionné et coupé
17 @return (faces, centres, edges, reverses)
21 faces = geompy.GetShapesOnShape(bloc, tore, geompy.ShapeType["FACE"], GEOM.ST_ON)
23 geompy.addToStudyInFather( tore, faces[0], 'face0' )
24 geompy.addToStudyInFather( tore, faces[1], 'face1' )
25 geompy.addToStudyInFather( tore, faces[2], 'face2' )
26 geompy.addToStudyInFather( tore, faces[3], 'face3' )
28 centres = [None, None, None, None]
29 [v1,centres[0],v3] = geompy.ExtractShapes(faces[0], geompy.ShapeType["VERTEX"], True)
30 [v1,centres[1],v3] = geompy.ExtractShapes(faces[1], geompy.ShapeType["VERTEX"], True)
31 [v1,centres[2],v3] = geompy.ExtractShapes(faces[2], geompy.ShapeType["VERTEX"], True)
32 [v1,centres[3],v3] = geompy.ExtractShapes(faces[3], geompy.ShapeType["VERTEX"], True)
34 geompy.addToStudyInFather( faces[0], centres[0], 'centre0' )
35 geompy.addToStudyInFather( faces[1], centres[1], 'centre1' )
36 geompy.addToStudyInFather( faces[2], centres[2], 'centre2' )
37 geompy.addToStudyInFather( faces[3], centres[3], 'centre3' )
39 alledges = [None, None, None, None]
40 alledges[0] = geompy.ExtractShapes(faces[0], geompy.ShapeType["EDGE"], True)
41 alledges[1] = geompy.ExtractShapes(faces[1], geompy.ShapeType["EDGE"], True)
42 alledges[2] = geompy.ExtractShapes(faces[2], geompy.ShapeType["EDGE"], True)
43 alledges[3] = geompy.ExtractShapes(faces[3], geompy.ShapeType["EDGE"], True)
48 for i in range(len(alledges)):
49 edgesface = alledges[i]
51 for j in range(len(edgesface)):
52 props = geompy.BasicProperties(edgesface[j])
53 lenef.append(props[0])
56 for j in range(len(edgesface)):
58 edgid = geompy.GetSubShapeID(tore, edgesface[j])
59 if not (edgid in dicoedge):
60 dicoedge[edgid] = edgesface[j]
61 edges.append(edgesface[j])
62 named = 'edge_' + str(i) + '_' +str(j)
63 geompy.addToStudyInFather( faces[i], edgesface[j], named)
64 vertices = geompy.ExtractShapes(edgesface[j], geompy.ShapeType["VERTEX"], False)
65 #firstVertex = geompy.GetFirstVertex(edgesface[j])
66 if geompy.GetSubShapeID(tore, vertices[0]) != geompy.GetSubShapeID(tore, centres[i]):
68 #print 'reversed ' + str(edgid)
71 #print 'normal' + str(edgid)
77 return faces, centres, edges, reverses