1 # -*- coding: iso-8859-1 -*-
3 outil métier Cabri pour Salome
8 def tetra( name, **param ):
10 construction géométrie Cabri en Tetra
12 #*************************************************************
13 # Paramètres physiques
14 #*************************************************************
15 # Nombre déléments circonférentiels (NBR_CIR)
18 temps = param['temps']
19 # Nombre déléments de lalésage (NBR_ALE)
20 nsect = param['nsect']
21 # Nombre déléments radiaux (NBR_RAD)
23 # Nombre déléments verticaux (NBR_VER)
27 # Epaisseur de la rondelle (GOUJ_E_RONDEL)
29 # Hauteur de la bride (BRID_H)
31 # Epaisseur de lécrou (GOUJ_E_ECROU)
33 # Nombre de goujons de la jonction boulonnée (GOUJ_N_GOUJON)
34 nbgouj = param['nbgouj']
35 # Diamètre des goujons de la jonction boulonnée (GOUJ_D_GOUJON)
37 # Hauteur des alésages de la bride permettant lintroduction des goujons (BRID_H_ALESAG)
38 htrou = param['htrou']
39 # Epaisseur du joint au niveau de linterface détanchéité (ETAN_E_JOINT)
41 # Hauteur de lépaulement de la bride au niveau de linterface détanchéité (BRID_H_EPAUL)
43 # Rayon du congé de la bride (BRID_R_CONGE)
44 rcong = param['rcong']
45 # Position des alésages de la bride permettant lintroduction des goujons (BRID_P_ALESAG)
46 dtrou = param['dtrou']
47 # Profondeur (épaisseur) des filets des goujons (GOUJ_E_FILET)
49 # Hauteur de conduite (TUBU_H)
51 # Diamètre intérieur de la bride (BRID_D_INT)
53 # Diamètre extérieur de la bride (BRID_D_EXT)
55 # Diamètre des alésages de la bride permettant lintroduction des goujons (BRID_D_ALESAG)
57 # Diamètre de lécrou (GOUJ_D_ECROU)
59 # Diamétre extérieur de la conduite (TUBU_D_EXT)
61 # Diamètre de la rondelle (GOUJ_D_RONDEL)
63 # Diamètre de lépaulement de la bride au niveau de linterface détanchéité (BRID_D_EPAUL)
65 # Position (diamètre) du congé de la bride (BRID_D_CONGE)
73 # imports spécifiques à salome:
78 #Import de l'interface graphique de GEOM (nécessaire pour affecter de la couleur)
79 gg = salome.ImportComponentGUI("GEOM")
81 time_init = time.time()
83 #**************************
84 # test sur les parametres *
85 #**************************
119 if ((nbgouj == 2) and (ncir <= 4)):
138 if ((dtrou-dt) <= dex2):
146 if (dex3 > (dtrou-dt)):
149 if ((dtrou+drd) <= (2*dtrou-dex3)):
160 if ((hb+htrou) >= hc1):
185 #**************************
186 # parametres intrinsèques *
187 #**************************
188 #opti dime 3 elem cub8
213 beta = math.pi / nbgouj
218 # if ((beta-tet) < (0.1*tet)):
228 p0 = geompy.MakeVertex(0., 0., 0.)
230 Vx = geompy.MakeVectorDXDYDZ(1., 0., 0.)
231 Vy = geompy.MakeVectorDXDYDZ(0., 1., 0.)
232 Vz = geompy.MakeVectorDXDYDZ(0., 0., 1.)
235 p1 = geompy.MakeVertex(rint, 0., 0.)
236 p2 = geompy.MakeVertex(rint, 0., -j/2.)
237 p3 = geompy.MakeVertex(rex3, 0., -j/2.)
238 p4 = geompy.MakeVertex(rex3, 0., 0.)
240 edge1 = geompy.MakeEdge(p1,p2)
241 edge2 = geompy.MakeEdge(p2,p3)
242 edge3 = geompy.MakeEdge(p3,p4)
243 edge4 = geompy.MakeEdge(p4,p1)
245 wire_joint = geompy.MakeWire([edge1, edge2, edge3, edge4])
246 face_joint = geompy.MakeFace(wire_joint,1)
248 p5 = geompy.MakeVertex(rex3, 0., hb)
250 edge5 = geompy.MakeEdge(p4, p5)
252 p7 = geompy.MakeVertex(rext, 0., hb)
253 p8 = geompy.MakeVertex(rext, 0., hb + htrou)
254 p9 = geompy.MakeVertex(rex2, 0., hb + htrou)
256 edge6 = geompy.MakeEdge(p5, p7)
257 edge9 = geompy.MakeEdge(p7, p8)
258 # construction du congé
259 # Rq: voir ce que l'on fait si la rondelle s'appuye sur le congé
261 an = math.atan ((hc1-h)/(rex2-rex1))
262 alpha = (math.pi - an)/2.
264 conge_p1 = geompy.MakeVertex(rex2 + rcong/math.tan(alpha), 0., h)
265 conge_centre = geompy.MakeVertex(rex2 + rcong/math.tan(alpha), 0., h + rcong)
267 gamma = math.pi - 2*alpha
269 conge_axe = geompy.MakePrismVecH(conge_centre, Vy, 1)
270 conge = geompy.MakeRevolution(conge_p1, conge_axe, gamma)
271 # geompy.addToStudy(conge, "conge")
273 conge_p2 = geompy.MakeRotation(conge_p1, conge_axe, gamma)
275 ## fin construction du congé
278 edge10 = geompy.MakeEdge(p8, conge_p1)
280 p12 = geompy.MakeVertex(rex1, 0., hc1)
281 edge11 = geompy.MakeEdge(conge_p2, p12)
283 p11 = geompy.MakeVertex(rint, 0., hc1)
284 p13 = geompy.MakeVertex(rex1, 0., hc1 + hcg1)
285 p14 = geompy.MakeVertex(rint, 0., hc1 + hcg1)
287 edge16 = geompy.MakeEdge(p11, p14)
288 edge17 = geompy.MakeEdge(p14, p13)
289 edge18 = geompy.MakeEdge(p13, p12)
291 edge19 = geompy.MakeEdge(p11, p1)
293 wire_front = geompy.MakeWire([edge4, edge5, edge6, edge9, edge10, conge,
294 edge11, edge18, edge17, edge16, edge19])
296 face_front = geompy.MakeFace(wire_front,1)
297 # geompy.addToStudy(face_front, "face_front")
298 # on ajoutera le joint après la révolution
301 # Création du bloc solide
303 bride_revol = geompy.MakeRevolution(face_front, Vz, beta)
304 # geompy.addToStudy(bride_revol, "bride_revol")
307 p_goujon = geompy.MakeVertex(rtrou, 0., -j/2.)
308 cut_tool = geompy.MakeCylinder(p_goujon, Vz, rt, hc1 + j)
309 # geompy.addToStudy(cut_tool, "cut_tool")
312 bride_cut = geompy.MakeCut(bride_revol, cut_tool)
313 # geompy.addToStudy(bride_cut, "bride_cut")
318 axe_goujon = geompy.MakePrismVecH(p_goujon, Vz, 1.)
319 p_rayon_goujon = geompy.MakeTranslation(p_goujon, rg, 0., 0.)
320 rayon_goujon = geompy.MakeEdge(p_goujon, p_rayon_goujon)
321 # base_goujon = geompy.MakeRevolution(rayon_goujon, axe_goujon, math.pi)
322 h_goujon = j/2. + h + e + 1.5 * he
323 p1_filet_goujon = geompy.MakeVertex(rtrou + rg, 0., h_goujon - pf)
324 p2_filet_goujon = geompy.MakeVertex(rtrou + rg - pf, 0., h_goujon)
325 p_goujon_h = geompy.MakeVertex(rtrou, 0., h_goujon)
326 edge1_goujon = geompy.MakeEdge(p_rayon_goujon, p1_filet_goujon)
327 edge2_goujon = geompy.MakeEdge(p1_filet_goujon, p2_filet_goujon)
328 edge3_goujon = geompy.MakeEdge(p2_filet_goujon, p_goujon_h)
329 wire_goujon = geompy.MakeWire([rayon_goujon, edge1_goujon, edge2_goujon, edge3_goujon])
330 face_ext_goujon = geompy.MakeRevolution(wire_goujon, axe_goujon, math.pi)
331 # geompy.addToStudy(face_ext_goujon, "face_ext_goujon")
332 wire_gauche_goujon = geompy.MakeRotation(wire_goujon, axe_goujon, math.pi)
334 p2_filet_goujon_g = geompy.MakeRotation(p2_filet_goujon, axe_goujon, math.pi)
335 p_rayon_goujon_g = geompy.MakeTranslation(p_goujon, - rg, 0., 0.)
336 diametre_haut = geompy.MakeEdge(p2_filet_goujon_g, p2_filet_goujon)
337 diametre_bas = geompy.MakeEdge(p_rayon_goujon_g, p_rayon_goujon)
338 edge1_goujon_g = geompy.MakeRotation(edge1_goujon, axe_goujon, math.pi)
339 edge2_goujon_g = geompy.MakeRotation(edge2_goujon, axe_goujon, math.pi)
340 wire_face_int_goujon2 = geompy.MakeWire([diametre_bas, edge1_goujon, edge2_goujon,
341 diametre_haut, edge1_goujon_g, edge2_goujon_g])
342 # geompy.addToStudy(wire_face_int_goujon2, "wire_face_int_goujon2")
343 face_int_goujon = geompy.MakeFace(wire_face_int_goujon2, 1)
345 shell_goujon = geompy.MakeShell([face_ext_goujon, face_int_goujon])
346 goujon = geompy.MakeSolid([shell_goujon])
347 # geompy.addToStudy(goujon, "goujon")
350 p1_ecrou = geompy.MakeVertex(rtrou + rg, 0., hb + htrou + e)
351 p2_ecrou = geompy.MakeVertex(rtrou + rec, 0., hb + htrou + e)
352 rayon_ecrou = geompy.MakeEdge(p1_ecrou, p2_ecrou)
353 base_ecrou = geompy.MakeRevolution(rayon_ecrou, axe_goujon, math.pi)
354 ecrou = geompy.MakePrismVecH(base_ecrou, Vz, he)
355 # geompy.addToStudy(ecrou, "ecrou")
357 # assemblage goujon, ecrou:
358 goujon_ecrou = geompy.MakeCompound([goujon, ecrou])
359 # geompy.addToStudy(goujon_ecrou, "goujon_ecrou")
363 p1_rondelle = geompy.MakeVertex(rtrou + rt, 0., hb + htrou)
364 p2_rondelle = geompy.MakeVertex(rtrou + rrd, 0., hb + htrou)
365 rayon_rondelle = geompy.MakeEdge(p1_rondelle, p2_rondelle)
366 # base_rondelle = geompy.MakeRevolution(rayon_rondelle, axe_goujon, math.pi)
367 face_rondelle = geompy.MakePrismVecH(rayon_rondelle, Vz, e)
368 rondelle = geompy.MakeRevolution(face_rondelle, axe_goujon, math.pi)
369 # geompy.addToStudy(rondelle, "rondelle")
372 # assemblage goujon-ecrou avec rondelle
373 goujon_ecrou_rondelle = geompy.MakeFuse(goujon_ecrou, rondelle)
374 # geompy.addToStudy(goujon_ecrou_rondelle, "goujon_ecrou_rondelle")
377 # assemblage sur la piece principale
378 bride_but_joint_tmp = geompy.MakeFuse(bride_cut, goujon_ecrou_rondelle)
379 # geompy.addToStudy(bride_but_joint_tmp, "bride_but_joint_tmp")
381 # On partitionne avec la rondelle pour récupérer les solides physiques
382 bride_but_joint = geompy.MakePartition([bride_but_joint_tmp], [rondelle])
383 # geompy.addToStudy(bride_but_joint, "bride_but_joint")
385 # on ajoute le joint (compound pour que les faces communes soient en double)
386 joint = geompy.MakeRevolution(face_joint, Vz, beta)
387 # geompy.addToStudy(joint, "joint")
389 bride_tmp = geompy.MakeCompound([bride_but_joint, joint])
390 # geompy.addToStudy(bride_tmp, "bride_tmp")
393 print "Temps Geometrie = ", (time_0-time_init)
396 # on partitionne pour obtenir certains points (P_BRI, P_GOU)
397 p6 = geompy.MakeVertex(rint, 0., hb)
398 edge_part = geompy.MakeEdge(p6, p7)
399 plan_part = geompy.MakeRevolution(edge_part, Vz, beta)
400 bride_part = geompy.MakePartition([bride_tmp], [plan_part])
401 # geompy.addToStudy(bride_part, "bride_part")
403 edge_p5_p6 = geompy.GetEdge(bride_part, p5, p6)
404 edge_p5_p6_ind = geompy.GetSubShapeID(bride_part, edge_p5_p6)
405 bride_vertex1 = geompy.DivideEdge(bride_part, edge_p5_p6_ind, 1./3., 1)
406 # geompy.addToStudy(bride_vertex1, "bride_vertex1")
408 p_gouj_part1 = geompy.MakeVertex(rtrou - rg, 0., hb)
409 p_gouj_part2 = geompy.MakeVertex(rtrou + rg, 0., hb)
410 p_gouj_mid = geompy.MakeVertex(rtrou, 0., hb)
411 edge_gouj_part = geompy.GetEdgeNearPoint(bride_vertex1, p_gouj_mid)
412 edge_gouj_part_ind = geompy.GetSubShapeID(bride_vertex1, edge_gouj_part)
413 bride = geompy.DivideEdge(bride_vertex1, edge_gouj_part_ind, 0.5, 1)
414 # geompy.addToStudy(bride, "bride")
415 geompy.addToStudy(bride, name )
419 print "Temps Partition = ", (time_1-time_0)
421 # Détermination des différents solides et affichage en couleur
425 GOUJON1 = geompy.GetBlockNearPoint(bride, p_goujon)
426 GOUJON2 = geompy.GetBlockNearPoint(bride, p_goujon_h)
427 list_GOUJON = [GOUJON1, GOUJON2]
429 GOUJON = geompy.CreateGroup(bride, geompy.ShapeType["SOLID"])
430 id_GOUJON = geompy.addToStudyInFather(bride, GOUJON, "GOUJON")
431 idToDisplay.append(id_GOUJON)
433 for solid in list_GOUJON:
434 f_ind_tmp = geompy.GetSubShapeID(bride, solid)
435 geompy.AddObject(GOUJON, f_ind_tmp)
438 JOINT = geompy.GetBlockNearPoint(bride, p2)
439 id_JOINT = geompy.addToStudyInFather(bride, JOINT, "JOINT")
440 idToDisplay.append(id_JOINT)
442 p_rondelle = geompy.MakeTranslation(p2_rondelle, 0., 0., e)
443 ROND = geompy.GetBlockNearPoint(bride, p_rondelle)
444 id_ROND = geompy.addToStudyInFather(bride, ROND, "ROND")
445 idToDisplay.append(id_ROND)
447 p_ecrou = geompy.MakeTranslation(p2_ecrou, 0., 0., he)
448 ECROU = geompy.GetBlockNearPoint(bride, p_ecrou)
449 id_ECROU = geompy.addToStudyInFather(bride, ECROU, "ECROU")
450 idToDisplay.append(id_ECROU)
454 BRIDE1 = geompy.GetBlockNearPoint(bride, p14)
455 list_BRIDE.append(BRIDE1)
457 p_BRIDE2 = geompy.MakeVertex((rint+rex3)/2., 0., hb/2.)
458 p_BRIDE2_rota = geompy.MakeRotation(p_BRIDE2, Vz, beta/2.)
459 BRIDE2 = geompy.GetBlockNearPoint(bride, p_BRIDE2_rota)
460 list_BRIDE.append(BRIDE2)
462 BRIDE = geompy.CreateGroup(bride, geompy.ShapeType["SOLID"])
463 id_BRIDE = geompy.addToStudyInFather(bride, BRIDE, "BRIDE")
464 idToDisplay.append(id_BRIDE)
466 for solid in list_BRIDE:
467 f_ind_tmp = geompy.GetSubShapeID(bride, solid)
468 geompy.AddObject(BRIDE, f_ind_tmp)
470 RedGreenBlue = [[189,97,0],[255,215,0],[255,0,0],[0,176,0],[0,0,255]]
472 for i in range(len(idToDisplay)):
473 gg.createAndDisplayGO(idToDisplay[i])
474 gg.setDisplayMode(idToDisplay[i],1)
475 gg.setColor(idToDisplay[i],RedGreenBlue[i][0],RedGreenBlue[i][1],RedGreenBlue[i][2])
477 list_VTOT = geompy.SubShapeAllSorted(bride, geompy.ShapeType["SOLID"])
478 VTOT = geompy.CreateGroup(bride, geompy.ShapeType["SOLID"])
479 for solid in list_VTOT:
480 f_ind_tmp = geompy.GetSubShapeID(bride, solid)
481 geompy.AddObject(VTOT, f_ind_tmp)
482 geompy.addToStudyInFather(bride, VTOT, "VTOT")
485 print "Temps affichage solides = ", (time_2-time_1)
487 # Détermination des différentes faces
489 p_SCEG = geompy.MakeVertex(rtrou, rg, h + e + he/2.)
490 SCEG = geompy.GetFaceNearPoint(ECROU, p_SCEG)
491 geompy.addToStudyInFather(bride, SCEG, "SCEG")
493 SCGE = geompy.GetFaceNearPoint(GOUJON, p_SCEG)
494 geompy.addToStudyInFather(bride, SCGE, "SCGE")
496 p_2_3 = geompy.MakeVertexOnCurve(edge2, 0.5)
497 p_2_3_rota = geompy.MakeRotation(p_2_3, Vz, beta/2.)
498 M_JOI = geompy.GetFaceNearPoint(JOINT, p_2_3_rota)
499 geompy.addToStudyInFather(bride, M_JOI, "M_JOI")
501 p_1_4 = geompy.MakeVertexOnCurve(edge4, 0.5)
502 p_1_4_rota = geompy.MakeRotation(p_1_4, Vz, beta/2.)
503 SCJB = geompy.GetFaceNearPoint(JOINT, p_1_4_rota)
504 geompy.addToStudyInFather(bride, SCJB, "SCJB")
506 SCBJ = geompy.GetFaceNearPoint(BRIDE, p_1_4_rota)
507 geompy.addToStudyInFather(bride, SCBJ, "SCBJ")
509 p1_rota = geompy.MakeRotation(p1, Vz, beta/2.)
510 Vint = geompy.MakeVector(p1_rota, p0)
511 list_M_INT = geompy.GetShapesOnPlane(bride, geompy.ShapeType["FACE"],
512 Vint, geompy.GEOM.ST_ONOUT)
514 M_INT = geompy.CreateGroup(bride, geompy.ShapeType["FACE"])
515 geompy.addToStudyInFather(bride, M_INT, "M_INT")
517 for face in list_M_INT:
518 f_ind_tmp = geompy.GetSubShapeID(bride, face)
519 geompy.AddObject(M_INT, f_ind_tmp)
522 p_13_14 = geompy.MakeVertexOnCurve(edge17, 0.5)
523 p_13_14_rota = geompy.MakeRotation(p_13_14, Vz, beta/2.)
524 M_TUB = geompy.GetFaceNearPoint(BRIDE, p_13_14_rota)
525 geompy.addToStudyInFather(bride, M_TUB, "M_TUB")
527 p_M_GOU = geompy.MakeVertex(rtrou, rg/2., -j/2.)
528 M_GOU = geompy.GetFaceNearPoint(GOUJON, p_M_GOU)
529 geompy.addToStudyInFather(bride, M_GOU, "M_GOU")
531 Vy_rota = geompy.MakeRotation(Vy, Vz, beta)
532 list_M_L_SA = geompy.GetShapesOnPlane(bride, geompy.ShapeType["FACE"],
533 Vy_rota, geompy.GEOM.ST_ONOUT)
535 M_L_SA = geompy.CreateGroup(bride, geompy.ShapeType["FACE"])
536 geompy.addToStudyInFather(bride, M_L_SA, "M_L_SA")
538 for face in list_M_L_SA:
539 f_ind_tmp = geompy.GetSubShapeID(bride, face)
540 geompy.AddObject(M_L_SA, f_ind_tmp)
543 moins_Vy = geompy.ChangeOrientation(Vy)
544 list_M_L_AA = geompy.GetShapesOnPlane(bride, geompy.ShapeType["FACE"],
545 moins_Vy, geompy.GEOM.ST_ONOUT)
547 M_L_AA = geompy.CreateGroup(bride, geompy.ShapeType["FACE"])
548 geompy.addToStudyInFather(bride, M_L_AA, "M_L_AA")
550 for face in list_M_L_AA:
551 f_ind_tmp = geompy.GetSubShapeID(bride, face)
552 geompy.AddObject(M_L_AA, f_ind_tmp)
557 p_4_5 = geompy.MakeVertexOnCurve(edge5, 0.5)
558 p_4_5_rota = geompy.MakeRotation(p_4_5, Vz, beta/2.)
559 M_EXT1 = geompy.GetFaceNearPoint(bride, p_4_5_rota)
560 list_M_EXT.append(M_EXT1)
562 p_M_EXT2 = geompy.MakeVertex((rex3 + rtrou-rt)/2., 0., hb)
563 p_M_EXT2_rota = geompy.MakeRotation(p_M_EXT2, Vz, beta/2.)
564 M_EXT2 = geompy.GetFaceNearPoint(bride, p_M_EXT2_rota)
565 list_M_EXT.append(M_EXT2)
567 p_7_8 = geompy.MakeVertexOnCurve(edge9, 0.5)
568 p_7_8_rota = geompy.MakeRotation(p_7_8, Vz, beta/2.)
569 M_EXT3 = geompy.GetFaceNearPoint(bride, p_7_8_rota)
570 list_M_EXT.append(M_EXT3)
572 p_M_EXT4 = geompy.MakeVertex((rext + rtrou+rrd)/2., 0., h)
573 p_M_EXT4_rota = geompy.MakeRotation(p_M_EXT4, Vz, beta/2.)
574 M_EXT4 = geompy.GetFaceNearPoint(bride, p_M_EXT4_rota)
575 list_M_EXT.append(M_EXT4)
577 p_mid_conge = geompy.MakeVertexOnCurve(conge, 0.5)
578 p_mid_conge_rota = geompy.MakeRotation(p_mid_conge, Vz, beta/2.)
579 M_EXT5 = geompy.GetFaceNearPoint(bride, p_mid_conge_rota)
580 list_M_EXT.append(M_EXT5)
582 p_9_12 = geompy.MakeVertexOnCurve(edge11, 0.5)
583 p_9_12_rota = geompy.MakeRotation(p_9_12, Vz, beta/2.)
584 M_EXT6 = geompy.GetFaceNearPoint(bride, p_9_12_rota)
585 list_M_EXT.append(M_EXT6)
587 p_12_13 = geompy.MakeVertexOnCurve(edge18, 0.5)
588 p_12_13_rota = geompy.MakeRotation(p_12_13, Vz, beta/2.)
589 M_EXT7 = geompy.GetFaceNearPoint(bride, p_12_13_rota)
590 list_M_EXT.append(M_EXT7)
592 p_haut_gouj = geompy.MakeTranslation(p_goujon_h, 0., (rg-pf)/2., 0.)
593 M_EXT8 = geompy.GetFaceNearPoint(bride, p_haut_gouj)
594 list_M_EXT.append(M_EXT8)
596 p_filet_gouj = geompy.MakeVertexOnCurve(edge2_goujon, 0.5)
597 p_filet_gouj_rota = geompy.MakeRotation(p_filet_gouj, axe_goujon, math.pi/2.)
598 M_EXT9 = geompy.GetFaceNearPoint(bride, p_filet_gouj_rota)
599 list_M_EXT.append(M_EXT9)
601 p_cote_gouj = geompy.MakeVertex(rtrou, rg, (h+e+he + h_goujon) / 2.)
602 M_EXT10 = geompy.GetFaceNearPoint(bride, p_cote_gouj)
603 list_M_EXT.append(M_EXT10)
605 p_haut_ecrou = geompy.MakeVertex(rtrou, (rg+rec)/2., h + e + he)
606 M_EXT11 = geompy.GetFaceNearPoint(bride, p_haut_ecrou)
607 list_M_EXT.append(M_EXT11)
609 p_cote_ecrou = geompy.MakeVertex(rtrou, rec, h + e + he/2.)
610 M_EXT12 = geompy.GetFaceNearPoint(bride, p_cote_ecrou)
611 list_M_EXT.append(M_EXT12)
613 p_haut_rondelle = geompy.MakeVertex(rtrou, (rec+rrd)/2., h + e)
614 M_EXT13 = geompy.GetFaceNearPoint(bride, p_haut_rondelle)
615 list_M_EXT.append(M_EXT13)
617 p_cote_rondelle = geompy.MakeVertex(rtrou, rrd, h + e/2.)
618 M_EXT14 = geompy.GetFaceNearPoint(bride, p_cote_rondelle)
619 list_M_EXT.append(M_EXT14)
621 M_EXT = geompy.CreateGroup(bride, geompy.ShapeType["FACE"])
622 geompy.addToStudyInFather(bride, M_EXT, "M_EXT")
624 for face in list_M_EXT:
625 f_ind_tmp = geompy.GetSubShapeID(bride, face)
626 geompy.AddObject(M_EXT, f_ind_tmp)
629 print "Temps explosion des faces = ", (time_3-time_2)
632 # Détermination des différents points
637 PJE_OUV = geompy.GetPoint(JOINT, rex3, 0., 0., epsilon)
638 geompy.addToStudyInFather(bride, PJE_OUV, "PJE_OUV")
641 PJI_OUV = geompy.GetPoint(JOINT, rint, 0., 0., epsilon)
642 geompy.addToStudyInFather(bride, PJI_OUV, "PJI_OUV")
645 PBE_OUV = geompy.GetPoint(BRIDE, rex3, 0., 0., epsilon)
646 geompy.addToStudyInFather(bride, PBE_OUV, "PBE_OUV")
649 PBI_OUV = geompy.GetPoint(BRIDE, rint, 0., 0., epsilon)
650 geompy.addToStudyInFather(bride, PBI_OUV, "PBI_OUV")
652 P_ECR = geompy.GetPoint(bride, rtrou + rt, 0., h + e, epsilon)
653 geompy.addToStudyInFather(bride, P_ECR, "P_ECR")
655 P_GOU = geompy.GetPoint(bride, rtrou, 0., hb, epsilon)
656 geompy.addToStudyInFather(bride, P_GOU, "P_GOU")
658 P_BRI = geompy.GetPoint(bride, rint + (rex3-rint)/3., 0., hb, epsilon)
659 geompy.addToStudyInFather(bride, P_BRI, "P_BRI")
662 print "Temps explosion des vertices = ", (time_4-time_3)
665 # #=============== MAILLAGE ======================
667 # AverageLength = (rex1-rint)/nrad
669 # # Creation du maillage
670 # # --------------------
672 # maillageBride = smesh.Mesh(bride, "MeshBride")
674 # # Algorithmes et hypotheses globales
675 # # ----------------------------------
679 # algo = maillageBride.Segment()
680 # algo.LocalLength(AverageLength)
681 # # On veut un maillage quadratique
682 # algo.QuadraticMesh()
686 # algo = maillageBride.Triangle()
687 # algo.LengthFromEdges()
691 # maillageBride.Tetrahedron(smesh.NETGEN)
697 # maillageBride.Compute()
698 # time_5 = time.time()
699 # print "Temps Maillage = ", (time_5-time_4)
701 # # Création des groupes
702 # # --------------------
704 # maillageBride.Group(P_GOU, "P_GOU")
705 # maillageBride.Group(PBI_OUV, "PBI_OUV")
706 # maillageBride.Group(P_BRI, "P_BRI")
707 # maillageBride.Group(PBE_OUV, "PBE_OUV")
708 # maillageBride.Group(P_ECR, "P_ECR")
709 # maillageBride.Group(PJI_OUV, "PJI_OUV")
710 # maillageBride.Group(SCEG, "SCEG")
711 # maillageBride.Group(SCGE, "SCGE")
712 # maillageBride.Group(M_JOI, "M_JOI")
713 # maillageBride.Group(SCJB, "SCJB")
714 # maillageBride.Group(SCBJ, "SCBJ")
715 # maillageBride.Group(M_EXT, "M_EXT")
716 # maillageBride.Group(M_INT, "M_INT")
717 # maillageBride.Group(M_TUB, "M_TUB")
718 # maillageBride.Group(M_GOU, "M_GOU")
719 # maillageBride.Group(M_L_SA, "M_L_SA")
720 # maillageBride.Group(M_L_AA, "M_L_AA")
721 # maillageBride.Group(GOUJON, "GOUJON")
722 # maillageBride.Group(ROND, "ROND")
723 # maillageBride.Group(ECROU, "ECROU")
724 # maillageBride.Group(BRIDE, "BRIDE")
725 # maillageBride.Group(JOINT, "JOINT")
726 # maillageBride.Group(VTOT, "VTOT")
728 # time_6 = time.time()
730 # print "Temps Groupes Maillage = ", (time_6-time_5)
731 # # Mise à jour de l'arbre d'étude
733 salome.sg.updateObjBrowser(1)