def __generation_salomesubsurface(self, liste): lpsalo = [] #print 'liste',liste for a in liste[0]: lpsalo.append(geompy.MakeVertex(a[0], a[1], 0)) llsalo = [] for i in range(0, len(liste[1]) - 1): if liste[1][i][0] == 'l': ligne = geompy.MakeLineTwoPnt(lpsalo[i], lpsalo[i + 1]) elif liste[1][i][0] == 'c': ligne = geompy.MakeArcCenter( geompy.MakeVertex(liste[1][i][1][0], liste[1][i][1][1], 0), lpsalo[i], lpsalo[i + 1], 0) else: print "erreur type de ligne non reconue" llsalo.append(ligne) if liste[1][len(lpsalo) - 1][0] == 'l': ligne = geompy.MakeLineTwoPnt(lpsalo[len(lpsalo) - 1], lpsalo[0]) elif liste[1][len(lpsalo) - 1][0] == 'c': ligne = geompy.MakeArcCenter( geompy.MakeVertex(liste[1][len(lpsalo) - 1][1][0], liste[1][len(lpsalo) - 1][1][1], 0), lpsalo[len(lpsalo) - 1], lpsalo[0], 0) else: print "erreur type de ligne non reconue" #dist=math.sqrt((liste[0][len(liste[1])-1][0]-liste[0][0][0])**2+(liste[0][len(liste[1])-1][1]-liste[0][0][1])**2) #ligne.Transfinite(int(dist/dcar)) llsalo.append(ligne) return llsalo
def CreateSalomeGeom(newnode, newline, groupline=[], groupnode=[]): """creation a la volle d une geometrie dans salome n'est disponible que depuis salome""" liennoeudsalome = [] for i in range(0, newnode.shape[0]): liennoeudsalome.append( geompy.MakeVertex(newnode[i, 0], newnode[i, 1], newnode[i, 2])) lienlinesalome = [] for i in range(0, len(newline)): lienlinesalome.append( geompy.MakeLineTwoPnt(liennoeudsalome[newline[i][0]], liennoeudsalome[newline[i][1]])) complist = [] complist.extend(liennoeudsalome) complist.extend(lienlinesalome) outshape = geompy.MakeCompound(complist) sortie = geompy.addToStudy(outshape, "treilli") sortiegr = [] #creation des groupes for groupe in groupline: if (len(groupe[1]) > 0): newgr = geompy.CreateGroup(outshape, geompy.ShapeType["EDGE"]) for a in groupe[1]: lineid = geompy.GetSubShapeID(outshape, lienlinesalome[a]) geompy.AddObject(newgr, lineid) sortiegr.append( geompy.addToStudyInFather(outshape, newgr, groupe[0])) #creation des groupes for groupe in groupnode: if (len(groupe[1]) > 0): newgr = geompy.CreateGroup(outshape, geompy.ShapeType["VERTEX"]) for a in groupe[1]: noeudid = geompy.GetSubShapeID(outshape, liennoeudsalome[a]) geompy.AddObject(newgr, noeudid) sortiegr.append( geompy.addToStudyInFather(outshape, newgr, groupe[0])) #gg = salome.ImportComponentGUI("GEOM") # #gg.createAndDisplayGO(sortie) #for a in sortiegr: # gg.createAndDisplayGO(a) salome.sg.updateObjBrowser(1) print "salome geom done"
z_7 = 0. # Definition des points Sommet_1 = geompy.MakeVertex(x_0, y_0, 0.) Sommet_2 = geompy.MakeVertex(x_1, y_1, 0.) Sommet_3 = geompy.MakeVertex(x_2, y_2, 0.) Sommet_4 = geompy.MakeVertex(x_3, y_3, 0.) Sommet_5 = geompy.MakeVertex(x_4, y_4, z_4) Sommet_6 = geompy.MakeVertex(x_4, y_4, -z_4) Sommet_7 = geompy.MakeVertex(x_5, y_5, z_5) Sommet_8 = geompy.MakeVertex(x_5, y_5, -z_5) Sommet_9 = geompy.MakeVertex(x_6, y_6, z_6) Sommet_10 = geompy.MakeVertex(x_6, y_6, -z_6) Sommet_11 = geompy.MakeVertex(x_7, y_7, z_7) Direction = geompy.MakeLineTwoPnt(Sommet_1, Sommet_2) Barre_sup = geompy.MakeLineTwoPnt(Sommet_1, Sommet_3) Barre_inf = geompy.MakeLineTwoPnt(Sommet_2, Sommet_4) Barre_selle = geompy.MakeLineTwoPnt(Sommet_3, Sommet_4) Arriere_bas_1 = geompy.MakeLineTwoPnt(Sommet_4, Sommet_5) Arriere_bas_2 = geompy.MakeLineTwoPnt(Sommet_4, Sommet_6) Arriere_bas_3 = geompy.MakeLineTwoPnt(Sommet_6, Sommet_10) Arriere_bas_4 = geompy.MakeLineTwoPnt(Sommet_5, Sommet_9) Arriere_haut_1 = geompy.MakeLineTwoPnt(Sommet_3, Sommet_7) Arriere_haut_2 = geompy.MakeLineTwoPnt(Sommet_3, Sommet_8) Arriere_haut_3 = geompy.MakeLineTwoPnt(Sommet_8, Sommet_10) Arriere_haut_4 = geompy.MakeLineTwoPnt(Sommet_7, Sommet_9) Renfort = geompy.MakeLineTwoPnt(Sommet_7, Sommet_8) Fourche = geompy.MakeLineTwoPnt(Sommet_2, Sommet_11)
geompy.init_geom(theStudy) O = geompy.MakeVertex(0, 0, 0) OX = geompy.MakeVectorDXDYDZ(1, 0, 0) OY = geompy.MakeVectorDXDYDZ(0, 1, 0) OZ = geompy.MakeVectorDXDYDZ(0, 0, 1) Sommet_1 = geompy.MakeVertex(0, 0, 0) Sommet_2 = geompy.MakeVertex(2000, 0, 0) Sommet_3 = geompy.MakeVertex(4000, 0, 0) Sommet_4 = geompy.MakeVertex(6000, 0, 0) Sommet_5 = geompy.MakeVertex(1000, 1500, 0) Sommet_6 = geompy.MakeVertex(3000, 1500, 0) Sommet_7 = geompy.MakeVertex(5000, 1500, 0) Ligne_1 = geompy.MakeLineTwoPnt(Sommet_1, Sommet_2) Ligne_2 = geompy.MakeLineTwoPnt(Sommet_2, Sommet_3) Ligne_3 = geompy.MakeLineTwoPnt(Sommet_3, Sommet_4) Ligne_4 = geompy.MakeLineTwoPnt(Sommet_4, Sommet_7) Ligne_5 = geompy.MakeLineTwoPnt(Sommet_7, Sommet_3) Ligne_6 = geompy.MakeLineTwoPnt(Sommet_3, Sommet_6) Ligne_7 = geompy.MakeLineTwoPnt(Sommet_6, Sommet_2) Ligne_8 = geompy.MakeLineTwoPnt(Sommet_2, Sommet_5) Ligne_1_vertex_2 = geompy.GetSubShape(Ligne_1, [2]) Ligne_9 = geompy.MakeLineTwoPnt(Sommet_5, Ligne_1_vertex_2) Ligne_8_vertex_3 = geompy.GetSubShape(Ligne_8, [3]) Ligne_10 = geompy.MakeLineTwoPnt(Ligne_8_vertex_3, Sommet_6) Ligne_11 = geompy.MakeLineTwoPnt(Sommet_6, Sommet_7) Treillis = geompy.MakeCompound([Ligne_1, Ligne_2, Ligne_3, Ligne_4, Ligne_5, Ligne_6, Ligne_7, Ligne_8, Ligne_9, Ligne_10, Ligne_11]) listSubShapeIDs = geompy.SubShapeAllIDs(Treillis, geompy.ShapeType["SHAPE"]) geomObj_1 = geompy.GetSubShape(Treillis, [2])
import GEOM import geompy import math import SALOMEDS geompy.init_geom(theStudy) O = geompy.MakeVertex(0, 0, 0) OX = geompy.MakeVectorDXDYDZ(1, 0, 0) OY = geompy.MakeVectorDXDYDZ(0, 1, 0) OZ = geompy.MakeVectorDXDYDZ(0, 0, 1) Sommet_1 = geompy.MakeVertex(0, 0, 0) Sommet_2 = geompy.MakeVertex(0, 1, 0) Ligne_1 = geompy.MakeLineTwoPnt(Sommet_1, Sommet_2) geompy.addToStudy( O, 'O' ) geompy.addToStudy( OX, 'OX' ) geompy.addToStudy( OY, 'OY' ) geompy.addToStudy( OZ, 'OZ' ) geompy.addToStudy( Sommet_1, 'Sommet_1' ) geompy.addToStudy( Sommet_2, 'Sommet_2' ) geompy.addToStudy( Ligne_1, 'Ligne_1' ) ### ### SMESH component ### import smesh, SMESH, SALOMEDS smesh.SetCurrentStudy(theStudy)
OZ = geompy.MakeVectorDXDYDZ(0, 0, 1) O_1 = geompy.MakeVertex(0, 0, 0) OX_1 = geompy.MakeVectorDXDYDZ(1, 0, 0) OY_1 = geompy.MakeVectorDXDYDZ(0, 1, 0) OZ_1 = geompy.MakeVectorDXDYDZ(0, 0, 1) Distance = 2000. Sommet_1 = geompy.MakeVertex(0, 0, 0) Sommet_2 = geompy.MakeVertex(2000, 0, 0) Sommet_3 = geompy.MakeVertex(4000, 0, 0) Sommet_4 = geompy.MakeVertex(6000, 0, 0) Sommet_5 = geompy.MakeVertex(7000, 0, 0) Sommet_6 = geompy.MakeVertex(8000, 0, 0) Sommet_7 = geompy.MakeVertex(6000, 500, 0) Sommet_8 = geompy.MakeVertex(4000, 1000, 0) Sommet_9 = geompy.MakeVertex(2000, 500, 0) Ligne_1 = geompy.MakeLineTwoPnt(Sommet_1, Sommet_2) Ligne_2 = geompy.MakeLineTwoPnt(Sommet_2, Sommet_3) Ligne_3 = geompy.MakeLineTwoPnt(Sommet_3, Sommet_4) Ligne_4 = geompy.MakeLineTwoPnt(Sommet_4, Sommet_5) Ligne_5 = geompy.MakeLineTwoPnt(Sommet_5, Sommet_6) Ligne_6 = geompy.MakeLineTwoPnt(Sommet_6, Sommet_7) Ligne_7 = geompy.MakeLineTwoPnt(Sommet_7, Sommet_8) Ligne_8 = geompy.MakeLineTwoPnt(Sommet_8, Sommet_9) Ligne_9 = geompy.MakeLineTwoPnt(Sommet_9, Sommet_1) Ligne_10 = geompy.MakeLineTwoPnt(Sommet_2, Sommet_9) Ligne_11 = geompy.MakeLineTwoPnt(Sommet_8, Sommet_3) Ligne_12 = geompy.MakeLineTwoPnt(Sommet_7, Sommet_4) Assemblage_1 = geompy.MakeCompound([ Ligne_1, Ligne_2, Ligne_3, Ligne_4, Ligne_5, Ligne_6, Ligne_7, Ligne_8, Ligne_9, Ligne_10, Ligne_11, Ligne_12 ])
Sommet_2 = geompy.MakeVertex(Rayon, 0., 0.) Sommet_3 = geompy.MakeVertex(Rtrou, 0., 0.) Sommet_4 = geompy.MakeVertex(0., Rtrou, 0.) Sommet_5 = geompy.MakeVertex(-Rtrou, 0., 0.) Sommet_6 = geompy.MakeVertex(0., -Rtrou, 0.) Sommet_7 = geompy.MakeVertex(Lhaut, 200., 0.) Sommet_8 = geompy.MakeVertex(0., 200., 0.) Sommet_9 = geompy.MakeVertex(0., 200. + Rgorge, 0.) Sommet_10 = geompy.MakeVertex(0., 200. + 2. * Rgorge, 0.) Sommet_11 = geompy.MakeVertex(Lhaut, 200. + 2 * Rgorge, 0.) Sommet_12 = geompy.MakeVertex(-Lhaut, 200. + 2 * Rgorge, 0.) Sommet_13 = geompy.MakeVertex(-Rayon, 0., 0.) Sommet_14 = geompy.MakeVertex(0., -Rayon, 0.) Sommet_15 = geompy.MakeVertex(-Rgorge, 200. + Rgorge, 0.) Sommet_16 = geompy.MakeVertex(0., 200. + 2. * Rgorge + Lhaut, 0.) Ligne_1 = geompy.MakeLineTwoPnt(Sommet_2, Sommet_7) Ligne_2 = geompy.MakeLineTwoPnt(Sommet_7, Sommet_8) Ligne_3 = geompy.MakeLineTwoPnt(Sommet_10, Sommet_11) Ligne_4 = geompy.MakeLineTwoPnt(Sommet_12, Sommet_13) Arc_1 = geompy.MakeArcCenter(Sommet_9, Sommet_8, Sommet_15, False) Arc_2 = geompy.MakeArcCenter(Sommet_9, Sommet_15, Sommet_10, False) Arc_3 = geompy.MakeArcCenter(Sommet_10, Sommet_11, Sommet_16, False) Arc_4 = geompy.MakeArcCenter(Sommet_10, Sommet_16, Sommet_12, False) Arc_5 = geompy.MakeArcCenter(Sommet_1, Sommet_3, Sommet_4, False) Arc_6 = geompy.MakeArcCenter(Sommet_1, Sommet_4, Sommet_5, False) Arc_7 = geompy.MakeArcCenter(Sommet_1, Sommet_5, Sommet_6, False) Arc_8 = geompy.MakeArcCenter(Sommet_1, Sommet_6, Sommet_3, False) Arc_9 = geompy.MakeArcCenter(Sommet_1, Sommet_13, Sommet_14, False) Arc_10 = geompy.MakeArcCenter(Sommet_1, Sommet_14, Sommet_2, False)
Sommet_7 = geompy.MakeVertex(Lx+Rb, 0, 0) Sommet_8 = geompy.MakeVertex(-(Lx+Rb), 0, 0) Sommet_9 = geompy.MakeVertex(-Xber, -Rb+dBer, -Lber/2.) Sommet_10 = geompy.MakeVertex(-Xber, -Rb+dBer, Lber/2.) Sommet_11 = geompy.MakeVertex(-Xber, -Rb-dBer, Lber/2.) Sommet_12 = geompy.MakeVertex(-Xber, -Rb-dBer, -Lber/2.) Sommet_13 = geompy.MakeVertex(Xber, -Rb+dBer, -Lber/2.) Sommet_14 = geompy.MakeVertex(Xber, -Rb+dBer, Lber/2.) Sommet_15 = geompy.MakeVertex(Xber, -Rb-dBer, Lber/2.) Sommet_16 = geompy.MakeVertex(Xber, -Rb-dBer, -Lber/2.) # Creation de la forme de revolution Ligne_1 = geompy.MakeLineTwoPnt(Sommet_2, Sommet_3) Arc_1 = geompy.MakeArcCenter(Sommet_1, Sommet_8, Sommet_2,False) Arc_2 = geompy.MakeArcCenter(Sommet_4, Sommet_3, Sommet_7,False) profil = geompy.MakeWire([Ligne_1, Arc_1, Arc_2], 1e-07) R_volution_1 = geompy.MakeRevolution(profil, OX, 360*math.pi/180.0) # Creation de la geometrie du piquage Ligne_2 = geompy.MakeLineTwoPnt(Sommet_6, Sommet_5) Cercle_1 = geompy.MakeCircle(Sommet_6, Ligne_2, Rp) Extrusion_1 = geompy.MakePrismVecH(Cercle_1, Ligne_2, 100) Cercle_2 = geompy.MakeCircle(Sommet_6, Ligne_2, Rbri) Ligne_3 = geompy.MakeLineTwoPnt(Sommet_9, Sommet_10) Ligne_4 = geompy.MakeLineTwoPnt(Sommet_10, Sommet_11) Ligne_5 = geompy.MakeLineTwoPnt(Sommet_11, Sommet_12)
def getnodebyintersection(shape, porigine, vect, default=(0, 0, 0), extend=10, tolerance=0.1): p0 = geompy.MakeVertex(porigine[0] + extend * vect[0], porigine[1] + extend * vect[1], porigine[2] + extend * vect[2]) p1 = geompy.MakeVertex(porigine[0] - extend * vect[0], porigine[1] - extend * vect[1], porigine[2] - extend * vect[2]) line = geompy.MakeLineTwoPnt(p0, p1) partition = geompy.MakeHalfPartition(line, shape) # recherche du point de la partition par difference avec les premiers points #remplir les localisation des points subnew = geompy.SubShapeAllSorted(partition, geompy.ShapeType["VERTEX"]) subnewp = [] for a in subnew: subnewp.append(geompy.PointCoordinates(a)) subold = geompy.SubShapeAllSorted(line, geompy.ShapeType["VERTEX"]) #recuperarion des deux extremite existante de la ligne suboldp = [] for a in subold: suboldp.append(geompy.PointCoordinates(a)) # #affichage pour debug #gg = salome.ImportComponentGUI("GEOM") #id_partition= geompy.addToStudy(partition,"Partitionfun") #gg.createAndDisplayGO(id_partition) #id_line= geompy.addToStudy(line,"linefun") #gg.createAndDisplayGO(id_line) #gg.setDisplayMode(id_partition,1) # #print subnewp #print suboldp if (len(subnew) == len(subold)): print "default", default return default else: couple = [] for i in range(0, len(subold)): oldpts = suboldp[i] ii = 0 poursuite = True while (ii < len(subnew) and poursuite): newpts = subnewp[ii] if not (ii in couple): #print "i",i,"ii",ii #print "match",newpts,oldpts #print "test",abs(oldpts[0]-newpts[0])+abs(oldpts[1]-newpts[1])+abs(oldpts[2]-newpts[2]) if (abs(oldpts[0] - newpts[0]) + abs(oldpts[1] - newpts[1]) + abs(oldpts[2] - newpts[2]) < tolerance): #print "match",newpts,oldpts poursuite = False couple.append(ii) ii += 1 for i in range(0, len(subnew)): if (not (i in couple)): #print "subnewp[i]",subnewp[i] return subnewp[i] print "default", default return default
nPts = len(x) x = append(x, max(a * 200, 3600)) y = append(y, 0) nPts = nPts + 1 ptList = [] print "Creating %s points" % nPts for i in range(nPts): v = geompy.MakeVertex(x[i], 0, y[i]) geompy.addToStudy(v, "Vertex_%d" % (i + 1)) ptList.append(v) print str([i, x[i], y[i], 0]) print "creating polyLine" polyline = geompy.MakePolyline(ptList) #interpol = geompy.MakeInterpol(ptList) geompy.addToStudy(polyline, "polyline") #geompy.addToStudy(interpol, "interpol" ) print "creating revolution" Vertex_a = geompy.MakeVertex(0, 0, 0) Vertex_b = geompy.MakeVertex(0, 0, H) Line_1 = geompy.MakeLineTwoPnt(Vertex_a, Vertex_b) Revolution_1 = geompy.MakeRevolution(polyline, Line_1, 360 * math.pi / 180.0) newName = "Martinez3D_h_" + str(H) + "_AR_" + str(AR) print "exporting stl" geompy.Export(Revolution_1, newName + ".stl", "STL_ASCII") print "saved file name " + newName geompy.addToStudy(Revolution_1, 'Revolution_1')
## Geometry part ## salome.salome_init() geompy.init_geom(salome.myStudy) cyl_rad = 10 cyl_height = 40 box_final_coords = [ 100, 30, 100 ] points_offset = 35 vectorOY = geompy.MakeVector(geompy.MakeVertex(0,0,0), geompy.MakeVertex(0,100,0)) box = geompy.MakeBoxDXDYDZ(box_final_coords[0], box_final_coords[1],box_final_coords[2]) box = geompy.MakeRotation(box, vectorOY, 45) geompy.addToStudy ( box, 'box' ) diagons = [ geompy.MakeLineTwoPnt(geompy.MakeVertex( 0,box_final_coords[1], 0 ), geompy.MakeVertex( box_final_coords[0],box_final_coords[1], box_final_coords[2])), geompy.MakeLineTwoPnt(geompy.MakeVertex( box_final_coords[0], box_final_coords[1], 0 ), geompy.MakeVertex( 0, box_final_coords[1], box_final_coords[2]))] for counter in range(1,3): diagons[counter-1] = geompy.MakeRotation(diagons[counter-1], vectorOY, 45) geompy.addToStudy( diagons[counter-1], 'diagon_' + str(counter) ) central_point = geompy.MakeVertexOnLinesIntersection(diagons[0], diagons[1]) points = [ geompy.MakeVertexWithRef(central_point, -points_offset, 0, 0), geompy.MakeVertexWithRef(central_point, points_offset, 0, 0) ] for each_point,counter in zip(points, range(1,3)): geompy.addToStudy ( each_point, 'point_' + str(counter) ) cyls = [] for each_point,counter in zip(points, range(0,2)): cyls.append( geompy.MakeCylinder(each_point, vectorOY, cyl_rad, cyl_height) ) geompy.addToStudy ( cyls[counter], 'Cylinder_' + str(counter + 1) )
import GEOM import geompy import math import SALOMEDS geompy.init_geom(theStudy) Centre = geompy.MakeVertex(0, 0, 0) Vertex_droite = geompy.MakeVertex(6, 34, 0) Vertex_gauche = geompy.MakeVertex(-6, 34, 0) Arc_1 = geompy.MakeArcCenter(Centre, Vertex_droite, Vertex_gauche, False) [geomObj_1] = geompy.SubShapeAll(Arc_1, geompy.ShapeType["EDGE"]) [geomObj_2] = geompy.SubShapeAll(Arc_1, geompy.ShapeType["EDGE"]) centre_loin = geompy.MakeVertex(0, 0, 42) Line_extrusion = geompy.MakeLineTwoPnt(centre_loin, Centre) Plaque = geompy.MakePrismVecH(Arc_1, Line_extrusion, -42) listSubShapeIDs = geompy.SubShapeAllIDs(Plaque, geompy.ShapeType["EDGE"]) [Edge_1, Edge_2, Edge_3, Edge_4] = geompy.ExtractShapes(Plaque, geompy.ShapeType["EDGE"], True) listSubShapeIDs = geompy.SubShapeAllIDs(Plaque, geompy.ShapeType["EDGE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Plaque, geompy.ShapeType["EDGE"]) listSameIDs = geompy.GetSameIDs(Plaque, geomObj_1) listSameIDs = geompy.GetSameIDs(Plaque, geomObj_2) listSubShapeIDs = geompy.SubShapeAllIDs(Plaque, geompy.ShapeType["EDGE"]) [geomObj_3, geomObj_4] = geompy.SubShapeAll(Edge_2, geompy.ShapeType["VERTEX"]) [geomObj_5] = geompy.SubShapeAll(Edge_2, geompy.ShapeType["EDGE"]) [geomObj_6] = geompy.SubShapeAll(Edge_2, geompy.ShapeType["EDGE"])
import GEOM import geompy import math import SALOMEDS geompy.init_geom(theStudy) O = geompy.MakeVertex(0, 0, 0) OX = geompy.MakeVectorDXDYDZ(1, 0, 0) OY = geompy.MakeVectorDXDYDZ(0, 1, 0) OZ = geompy.MakeVectorDXDYDZ(0, 0, 1) Sommet_1 = geompy.MakeVertex(0, 0, 0) Sommet_2 = geompy.MakeVertex(1, 0, 0) Sommet_3 = geompy.MakeVertex(1, 1, 0) Sommet_4 = geompy.MakeVertex(0, 1, 0) Ligne_1 = geompy.MakeLineTwoPnt(Sommet_1, Sommet_2) Ligne_2 = geompy.MakeLineTwoPnt(Sommet_2, Sommet_3) Ligne_3 = geompy.MakeLineTwoPnt(Sommet_3, Sommet_4) Ligne_4 = geompy.MakeLineTwoPnt(Sommet_4, Sommet_1) Plaque = geompy.MakeFaceWires([Ligne_1, Ligne_2, Ligne_3, Ligne_4], 1) listSubShapeIDs = geompy.SubShapeAllIDs(Plaque, geompy.ShapeType["EDGE"]) BORD = geompy.CreateGroup(Plaque, geompy.ShapeType["EDGE"]) geompy.UnionIDs(BORD, [3, 6, 8, 10]) geomObj_1 = geompy.GetSubShape(Plaque, [3]) geompy.addToStudy(O, 'O') geompy.addToStudy(OX, 'OX') geompy.addToStudy(OY, 'OY') geompy.addToStudy(OZ, 'OZ') geompy.addToStudy(Sommet_1, 'Sommet_1') geompy.addToStudy(Sommet_2, 'Sommet_2') geompy.addToStudy(Sommet_3, 'Sommet_3')
# for b in range(0,nsub+1): # newlinex=geompy.MakeLineTwoPnt(node[a][b], node[a+1][b]) # geompy.addToStudy( newlinex, 'lxX%dY%d'%(a,b) ) # listex.append(newlinex) # newliney=geompy.MakeLineTwoPnt(node[b][a], node[b][a+1]) # geompy.addToStudy( newliney, 'lyX%dY%d'%(a,b) ) # listey.append(newliney) #generation des faces de contact facenodeup = [] for a in range(0, nsub + 1): liste = [] facenodeup.append(liste) for b in range(0, nsub + 1): newvertex = geompy.MakeTranslation(node[a][b], 0, 0, 1) newline = geompy.MakeLineTwoPnt(node[a][b], newvertex) newface = geompy.MakeFaceObjHW(newline, phitop, phitop) #geompy.addToStudy( newface, 'faceX%dY%d'%(a,b) ) liste.append(newface) #generation du grand rectange V0 = geompy.MakeVertex(0 - phitop / 2., 0 - phitop / 2., 0) V1 = geompy.MakeVertex(lx + phitop / 2., ly + phitop / 2., h) Box_1 = geompy.MakeBoxTwoPnt(V0, V1) #geompy.addToStudy( Box_1, 'Box_1' ) #generation de la face inferieur grand rectange V0 = geompy.MakeVertex(lx / 2., ly / 2., 0) V1 = geompy.MakeVertex(lx / 2., ly / 2., h) newline = geompy.MakeLineTwoPnt(V0, V1) infbase = geompy.MakeFaceObjHW(newline, phibase, phibase)
def CreateGEOM(injLens, injRads, injAngs, wallS): L1 = injLens[0] L2 = injLens[1] L3 = injLens[2] L4 = injLens[3] L5 = injLens[4] L6 = injLens[5] # R0 = injRads[0] R1 = injRads[1] R2 = injRads[2] R3 = injRads[3] R4 = injRads[4] # A1 = injAngs[0] # S = wallS # # Printing input # LSUMM = L1 + L2 + L3 + L4 + L5 + L6 DX1= math.tan(A1*math.pi/180.)*L3 + R3 - R0 # print "Input Data" print "L1, L2, L3, L4, L5, L6" print L1, L2, L3, L4, L5, L6 print "R0, R1, R2, R3, R4" print R0, R1, R2, R3, R4 print "A1 = ", A1 print "S = ", S # print "Intermediate variables: " print "LSUMM = ", LSUMM print "DX1 = ", DX1 # # # # oXYZ = geompy.MakeVertex(0, 0, 0) xPnt = geompy.MakeVertex(1, 0, 0) yPnt = geompy.MakeVertex(0, 1, 0) zPnt = geompy.MakeVertex(0, 0, 1) oX = geompy.MakeVector(oXYZ, xPnt) oY = geompy.MakeVector(oXYZ, yPnt) oZ = geompy.MakeVector(oXYZ, zPnt) # # Inlet and nozzle points and faces # P000 = geompy.MakeVertexWithRef(oXYZ, -(L1+L2), R1, 0) P001 = geompy.MakeVertexWithRef(oXYZ, -L2, R1, 0) P002 = geompy.MakeVertexWithRef(oXYZ, -L2, 0, 0) P003 = geompy.MakeVertexWithRef(oXYZ, -(L1+L2), 0, 0) # P004 = geompy.MakeVertexWithRef(oXYZ, 0, R2, 0) P005 = geompy.MakeVertexWithRef(oXYZ, 0, 0, 0) # P006 = geompy.MakeVertexWithRef(P000, 0, S, 0) P007 = geompy.MakeVertexWithRef(P006, L1,0, 0) P008 = geompy.MakeVertexWithRef(oXYZ, DX1,R0,0) P009 = geompy.MakeVertexWithRef(oXYZ, -(L1+L2), R0, 0) # F000 = geompy.MakeQuad4Vertices(P000, P001, P002, P003) F001 = geompy.MakeQuad4Vertices(P001, P002, P005, P004) F002 = geompy.MakeQuad4Vertices(P006, P007, P008, P009) # # Mixing chamber # P009 = geompy.MakeVertexWithRef(P004, 0, S, 0) P010 = geompy.MakeVertexWithRef(P005, L3,0, 0) P011 = geompy.MakeVertexWithRef(P010, 0,R3, 0) E000 = geompy.MakeLineTwoPnt(P008, P011) P012 = geompy.MakeVertexOnCurve(E000,0.9) P013 = geompy.MakeVertexWithRef(P010, L4, 0, 0) P014 = geompy.MakeVertexWithRef(P013, 0, R3, 0) # F003 = geompy.MakeQuad4Vertices(P009, P007, P008, P012) F004 = geompy.MakeQuad4Vertices(P004, P009, P012, P011) F005 = geompy.MakeQuad4Vertices(P004, P005, P010, P011) F006 = geompy.MakeQuad4Vertices(P010, P011, P014, P013) # # Diffusor and out tube # P015 = geompy.MakeVertexWithRef(P013, L5, 0, 0) P016 = geompy.MakeVertexWithRef(P015, 0, R4, 0) P017 = geompy.MakeVertexWithRef(P016, L6, 0, 0) P018 = geompy.MakeVertexWithRef(P017, 0, -R4,0) # F007 = geompy.MakeQuad4Vertices(P013, P014, P016, P015) F008 = geompy.MakeQuad4Vertices(P015, P016, P017, P018) # faceComp = geompy.MakeShell([F000, F001, F002, F003, F004, F005, F006, F007, F008]) # # Solid geomtry # sBase1 = geompy.MakeRotation(faceComp, oX, 0) sBase2 = geompy.MakeRotation(sBase1, oX, 45.*math.pi/180.) sBase3 = geompy.MakeRotation(sBase2, oX, 90.*math.pi/180.) # solid1 = geompy.MakeRevolution(sBase1, oX, 45.*math.pi/180.) solid2 = geompy.MakeRevolution(sBase2, oX, 90.*math.pi/180.) solid3 = geompy.MakeRevolution(sBase3, oX, 45.*math.pi/180.) # # Cutters # E002 = geompy.MakeLineTwoPnt(P005, P004) E003 = geompy.MakeRotation(E002, oX, 45.*math.pi/180.) E004 = geompy.MakeRotation(E003, oX, 90.*math.pi/180.) E005 = geompy.MakeRotation(E004, oX, 45.*math.pi/180.) P019 = geompy.MakeVertexOnCurve(E002,0.5) P020 = geompy.MakeVertexOnCurve(E003,0.5) P021 = geompy.MakeVertexOnCurve(E004,0.5) P022 = geompy.MakeVertexOnCurve(E005,0.5) zmin = geompy.PointCoordinates(oXYZ)[2] zmax = geompy.PointCoordinates(P020)[2] ymin = geompy.PointCoordinates(P022)[1] ymax = geompy.PointCoordinates(P019)[1] print "ymin, ymax, zmin, zmax" print ymin, ymax, zmin, zmax # E006 = geompy.MakeLineTwoPnt(P019, P020) E007 = geompy.MakeLineTwoPnt(P020, P021) E008 = geompy.MakeLineTwoPnt(P021, P022) E009 = geompy.MakeLineTwoPnt(P021, P022) edgeComp1 = geompy.MakeCompound([E006, E007, E008, E009]) edgeComp2 = geompy.MakeTranslation(edgeComp1, -(2*L1 + 2*L2), 0, 0) cutter1 = geompy.MakePrismVecH(edgeComp2, oX, LSUMM*2) # # Hexa solid # solid1_hex_v1 = geompy.MakePartition([solid1], [cutter1], [], [], geompy.ShapeType["SOLID"], 0, [], 0) solid2_hex_v1 = geompy.MakePartition([solid2], [cutter1], [], [], geompy.ShapeType["SOLID"], 0, [], 0) solid3_hex_v1 = geompy.MakePartition([solid3], [cutter1], [], [], geompy.ShapeType["SOLID"], 0, [], 0) dom_v1 = geompy.MakeCompound([solid1_hex_v1, solid2_hex_v1, solid3_hex_v1]) hsolids1 = geompy.SubShapeAll(dom_v1, geompy.ShapeType["SOLID"]) nSolids = len(hsolids1) hsolids2 = [] for jSolid in xrange(0,nSolids): solidCDG = geompy.MakeCDG(hsolids1[jSolid]) coordCDG = geompy.PointCoordinates(solidCDG) ys = coordCDG[1] zs = coordCDG[2] zOk = (zs >= zmin) * (zs <= zmax) yOk = (ys >= ymin) * (ys <= ymax) if not(zOk and yOk): hsolids2.append(hsolids1[jSolid]) # Creasting hexahedrons near the center sBase4 = geompy.MakeQuad4Vertices(P019, P020, P021, P022) sBase5 = geompy.MakeTranslation(sBase4, -(L1 + L2), 0, 0) hsolids2.append(geompy.MakePrismVecH(sBase5, oX, L1)) sBase6 = geompy.MakeTranslation(sBase5, L1, 0, 0) hsolids2.append(geompy.MakePrismVecH(sBase6, oX, L2)) sBase7 = geompy.MakeTranslation(sBase6, L2, 0, 0) hsolids2.append(geompy.MakePrismVecH(sBase7, oX, L3)) sBase8 = geompy.MakeTranslation(sBase7, L3, 0, 0) hsolids2.append(geompy.MakePrismVecH(sBase8, oX, L4)) sBase9 = geompy.MakeTranslation(sBase8, L4, 0, 0) hsolids2.append(geompy.MakePrismVecH(sBase9, oX, L5)) sBase10= geompy.MakeTranslation(sBase9,L5, 0, 0) hsolids2.append(geompy.MakePrismVecH(sBase10, oX, L6)) # # Domain # dom_v2 = geompy.MakeCompound(hsolids2) dom_comp = geompy.MakeGlueFaces(dom_v2,1.0E-6) return dom_comp
lfin = 20. geompy.init_geom(theStudy) O = geompy.MakeVertex(0, 0, 0) OX = geompy.MakeVectorDXDYDZ(1, 0, 0) OY = geompy.MakeVectorDXDYDZ(0, 1, 0) OZ = geompy.MakeVectorDXDYDZ(0, 0, 1) Sommet_1 = geompy.MakeVertex(0, 0, 0) Sommet_2 = geompy.MakeVertex(Lplq, 0, 0) Sommet_3 = geompy.MakeVertex(Lplq, lfin, 0) Sommet_4 = geompy.MakeVertex(Lplq, lplq, 0) Sommet_5 = geompy.MakeVertex(0, lplq, 0) Sommet_6 = geompy.MakeVertex(0, lfin, 0) Ligne_1 = geompy.MakeLineTwoPnt(Sommet_1, Sommet_2) Ligne_2 = geompy.MakeLineTwoPnt(Sommet_2, Sommet_3) Ligne_3 = geompy.MakeLineTwoPnt(Sommet_3, Sommet_6) Ligne_4 = geompy.MakeLineTwoPnt(Sommet_1, Sommet_6) Ligne_5 = geompy.MakeLineTwoPnt(Sommet_3, Sommet_4) Ligne_6 = geompy.MakeLineTwoPnt(Sommet_4, Sommet_5) Ligne_7 = geompy.MakeLineTwoPnt(Sommet_5, Sommet_6) Face_1 = geompy.MakeFaceWires([Ligne_1, Ligne_2, Ligne_3, Ligne_4], 1) Face_2 = geompy.MakeFaceWires([Ligne_3, Ligne_5, Ligne_6, Ligne_7], 1) Plaque = geompy.MakeCompound([Face_1, Face_2]) Sym = geompy.CreateGroup(Plaque, geompy.ShapeType["EDGE"]) geompy.UnionIDs(Sym, [4]) gauche = geompy.CreateGroup(Plaque, geompy.ShapeType["EDGE"]) geompy.UnionIDs(gauche, [7]) droite = geompy.CreateGroup(Plaque, geompy.ShapeType["EDGE"]) geompy.UnionIDs(droite, [11])
def generateFilmGeometry(self): if self.percentageCoverage < 0: print "Error: Cannot compute negative coverage percentages!!!" raise Exception elif self.percentageCoverage < 100: theta = (math.pi) * float(self.percentageCoverage / 100) zetha = theta / 2 + self.filmOrient[0] - (math.pi) / 2 gamma = self.filmOrient[0] - theta / 2 print theta, zetha, gamma arc1Pt1 = [ -math.sin(zetha) * self.radius + self.position[0], math.cos(zetha) * self.radius + self.position[1], self.position[2] ] arc1Pt2 = [ math.sin(gamma) * self.radius + self.position[0], math.cos(gamma) * self.radius + self.position[1], self.position[2] ] arc2Pt1 = [ arc1Pt1[0] - math.sin(zetha) * self.filmThickness, arc1Pt1[1] + math.cos(zetha) * self.filmThickness, arc1Pt1[2] ] arc2Pt2 = [ arc1Pt2[0] + math.sin(gamma) * self.filmThickness, arc1Pt2[1] + math.cos(gamma) * self.filmThickness, arc1Pt2[2] ] circleCentre = geompy.MakeVertex(self.position[0], self.position[1], self.position[2]) arc1V1 = geompy.MakeVertex(arc1Pt1[0], arc1Pt1[1], arc1Pt1[2]) arc1V2 = geompy.MakeVertex(arc1Pt2[0], arc1Pt2[1], arc1Pt2[2]) arc2V1 = geompy.MakeVertex(arc2Pt1[0], arc2Pt1[1], arc2Pt1[2]) arc2V2 = geompy.MakeVertex(arc2Pt2[0], arc2Pt2[1], arc2Pt2[2]) print arc1Pt1, arc1Pt2, arc2Pt1, arc2Pt2 arc1 = geompy.MakeArcCenter(circleCentre, arc1V1, arc1V2) arc2 = geompy.MakeArcCenter(circleCentre, arc2V1, arc2V2) line1 = geompy.MakeLineTwoPnt(arc1V1, arc2V1) line2 = geompy.MakeLineTwoPnt(arc1V2, arc2V2) face1 = geompy.MakeFaceWires([arc1, arc2, line1, line2], 1) circleVector = geompy.MakeVectorDXDYDZ(self.filmOrient[0], self.filmOrient[1], self.filmOrient[2]) circle1 = geompy.MakeCircle(circleCentre, circleVector, self.radius) self.__ionomerPipe = geompy.MakePipe(face1, circle1) elif self.percentageCoverage == 100: circleCentre = geompy.MakeVertex(self.position[0], self.position[1], self.position[2]) circle1 = geompy.MakeCircle(circleCentre, None, self.radius) circle2 = geompy.MakeCircle(circleCentre, None, self.radius + self.filmThickness) face1 = geompy.MakeFaceWires([circle1, circle2], 1) vector1 = geompy.MakeVectorDXDYDZ(0, 1, 0) circle3 = geompy.MakeCircle(circleCentre, vector1, 1) self.__ionomerPipe = geompy.MakePipe(face1, circle3)