def charge_et_genere_3d(self, fichier): #print marshal.version f = open(fichier, 'rb') self.section_catalogue = marshal.load(f) obj = marshal.load(f) f.close() formecentre = self.__salome_genere_section_catalogue() newvolume = [] repereglobal = geompy.MakeMarker(0, 0, 0, 1, 0, 0, 0, 1, 0) for a in obj: ori = geompy.MakeVertex(a[0][0], a[0][1], a[0][2]) fin = geompy.MakeVertex(a[1][0], a[1][1], a[1][2]) nouveaurepere = geompy.MakeMarker(a[0][0], a[0][1], a[0][2], a[2][0], a[2][1], a[2][2], a[3][0], a[3][1], a[3][2]) basesurface = geompy.MakePosition(formecentre[a[4]], repereglobal, nouveaurepere) newvolume.append(geompy.MakePrism(basesurface, ori, fin)) #for k,v in formecentre.iteritems(): # geompy.addToStudy(v,k) #for v in newvolume: # geompy.addToStudy(v,"Volumique") outshape = geompy.MakeCompound(newvolume) geompy.addToStudy(outshape, "Volumique") #geompy.Export(outshape, "/home/fred/asteretude/kuwait/toto.stp", "STEP") salome.sg.updateObjBrowser(1)
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 __salome_genere_section_catalogue(self, SANS_RECALAGE=None): #print obj formecentre = {} for k, sec in self.section_catalogue.iteritems(): #sec=v[4] gen = self.generation[sec[0]] extl, intl, dcar = gen.gen_lists(sec[1]) ll = self.__generation_salomesubsurface(extl) for a in intl: ll.extend(self.__generation_salomesubsurface(a)) #for v in ll: # geompy.addToStudy(v,k) surface = geompy.MakeFaceWires(ll, 1) #gestion de la translation surfacet = surface if (SANS_RECALAGE != "OUI" and (sec[2][15] < -1e-5 or sec[2][15] > 1e-5 or sec[2][16] < -1e-5 or sec[2][16] > 1e-5)): surfacet = geompy.MakeTranslation(surface, -sec[2][15], -sec[2][16], 0) surfacetr = surfacet #gestion de la rotation p0 = geompy.MakeVertex(0, 0, 0) p1 = geompy.MakeVertex(0, 0, 1) vecteurr = geompy.MakeVector(p0, p1) if (SANS_RECALAGE != "OUI" and (sec[2][14] < -1e-5 or sec[2][14] > 1e-5)): #print "rotation",-math.pi*sec[2][14]/180. surfacetr = geompy.MakeRotation(surfacet, vecteurr, -sec[2][14]) formecentre[k] = surfacetr return formecentre
def makeRectanglarMesh(self, dList, width, height): if len(dList) < 3: dList.append(0) Vertex_1 = geompy.MakeVertex(dList[0], dList[1], dList[2]) Vertex_2 = geompy.MakeVertex(dList[0] + width, dList[1], dList[2]) Vertex_3 = geompy.MakeVertex(dList[0] + width, dList[1] + height, dList[2]) Vertex_4 = geompy.MakeVertex(dList[0], dList[1] + height, dList[2]) rect = geompy.MakeQuad4Vertices(Vertex_1, Vertex_2, Vertex_3, Vertex_4) Mesh_1 = smesh.Mesh(rect) Regular_1D = Mesh_1.Segment() Local_Length_1 = Regular_1D.LocalLength(self.meshDensity) Local_Length_1.SetPrecision(1e-07) Mesh_1.Quadrangle() Mesh_1.Compute() return Mesh_1
def charge_et_genere_3d(self, fichier, exportstl=None): #print marshal.version f = open(fichier, 'rb') self.section_catalogue = marshal.load(f) obj = marshal.load(f) f.close() formecentre = self.__salome_genere_section_catalogue() newvolume = [] repereglobal = geompy.MakeMarker(0, 0, 0, 1, 0, 0, 0, 1, 0) for a in obj: #impression du nom de la forme debug #print a[4] ori = geompy.MakeVertex(a[0][0], a[0][1], a[0][2]) fin = geompy.MakeVertex(a[1][0], a[1][1], a[1][2]) nouveaurepere = geompy.MakeMarker(a[0][0], a[0][1], a[0][2], a[2][0], a[2][1], a[2][2], a[3][0], a[3][1], a[3][2]) basesurface = geompy.MakePosition(formecentre[a[4]], repereglobal, nouveaurepere) newvolume.append(geompy.MakePrism(basesurface, ori, fin)) #for k,v in formecentre.iteritems(): # geompy.addToStudy(v,k) #for v in newvolume: # geompy.addToStudy(v,"Volumique") outshape = geompy.MakeCompound(newvolume) geompy.addToStudy(outshape, "Volumique") if exportstl != None: geompy.Export(outshape, exportstl, "STL_Bin") salome.sg.updateObjBrowser(1)
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"
def dump_wing(Vehicle): import salome, geompy, smesh Sections = Vehicle.Wings['Wing_Body'].Sections Segments = Vehicle.Wings['Wing_Body'].Segments origin = Vehicle.Wings['Wing_Body'].origin for i, seg in enumerate(Segments.values()): sec = Sections[i] sec.chord = seg.RC sec.origin = copy.deepcopy(origin) origin[0] += seg.span * np.tan(seg.sweep * np.pi / 180.) origin[1] += seg.span * np.tan(seg.dihedral * np.pi / 180.) origin[2] += seg.span Sections[-1].chord = Segments[-1].TC Sections[-1].origin = origin wires = [] origins = [] seg = None for sec in Sections.values(): # build vertices origin, points = build_foil(sec) verts = [geompy.MakeVertex(v[0], v[1], v[2]) for v in points] # sketch sections wire = draw_airfoil_section(sec.tag, verts) # store origins.append(origin) wires.append(wire) # make wires data = { 'wires': wires, 'origins': origins, } # dump fileout = open('sections.pkl') pickle.dump(fileout, data)
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)
notebook = salome_notebook.notebook sys.path.insert( 0, r'/home/bordreuil/Enseignement/Polytech/ElementsFinis/2013/C_Treillis') ### ### GEOM component ### 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) 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)
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
import SALOMEDS Lx = 250. # Demi-Longueur de la virole Rb = 250. # Rayon du bidon Rp = 40. # Rayon du piquage Rbri = 60. # Rayon de bride au niveau du piquage Lp = 300. Xber = 200. # Position des berceaux Lber = 250. # Longueur des berceaux dBer = 50. # hauteur du berceau 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(-Lx, 0, 0) Sommet_2 = geompy.MakeVertex(-Lx, Rb, 0) Sommet_3 = geompy.MakeVertex(Lx, Rb, 0) Sommet_4 = geompy.MakeVertex(Lx, 0, 0) Sommet_5 = geompy.MakeVertex(0, 0, 0) Sommet_6 = geompy.MakeVertex(0, Lp, 0) Sommet_7 = geompy.MakeVertex(Lx+Rb, 0, 0) Sommet_8 = geompy.MakeVertex(-(Lx+Rb), 0, 0)
return groups def update_screen(): if salome.sg.hasDesktop(): salome.sg.updateObjBrowser(True) ## Geometry part ## salome.salome_init() geompy.init_geom(salome.myStudy) cyl_rad = 10 cyl_height = 40 box_final_coords = [70, 30, 150] 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]) geompy.addToStudy(box, 'box') points = [ geompy.MakeVertex(box_final_coords[0] / 2, box_final_coords[1], box_final_coords[2] - 130), geompy.MakeVertex(box_final_coords[0] / 2, box_final_coords[1], box_final_coords[2] - 20) ] for each_point, counter in zip(points, range(1, 3)): geompy.addToStudy(each_point, 'point_' + str(counter))
### GEOM component ### import GEOM import geompy import math import SALOMEDS #----Initialisation du module geometrie geompy.init_geom(theStudy) # Caracteristiques geometriques de l'anneau rayon = 25. longu = 50. Sommet_1 = geompy.MakeVertex(0, rayon + longu, 0) [geomObj_1] = geompy.SubShapeAll(Sommet_1, geompy.ShapeType["VERTEX"]) [geomObj_2] = geompy.SubShapeAll(Sommet_1, geompy.ShapeType["VERTEX"]) Sommet_2 = geompy.MakeVertex(rayon, longu, 0) Sommet_3 = geompy.MakeVertex(rayon, 0, 0) [geomObj_3] = geompy.SubShapeAll(Sommet_3, geompy.ShapeType["VERTEX"]) [geomObj_4] = geompy.SubShapeAll(Sommet_3, geompy.ShapeType["VERTEX"]) Sommet_4 = geompy.MakeVertex(0, longu, 0) Arc_1 = geompy.MakeArcCenter(Sommet_4, Sommet_1, Sommet_2, False) Ligne_1 = geompy.MakeLineTwoPnt(Sommet_2, Sommet_3) Anneau = geompy.MakeWire([Arc_1, Ligne_1], 1e-07) # definition du point haut pour encastrement listSubShapeIDs = geompy.SubShapeAllIDs(Anneau, geompy.ShapeType["VERTEX"]) listSubShapeIDs = geompy.SubShapeAllIDs(Anneau, geompy.ShapeType["VERTEX"])
notebook = salome_notebook.notebook sys.path.insert( 0, r'/home/bordreuil/Enseignement/elementsFiNimes/Examples/3D/G_RepMart') ### ### GEOM component ### 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) Corps_principal = geompy.ImportSTEP("/home/bordreuil/Enseignement/elementsFiNimes/Examples/3D/G_RepMart/piedRepMart.stp") [Esquisse_1] = geompy.SubShapes(Corps_principal, [56]) geomObj_1 = geompy.MakeMarker(0, 0, 0, 1, 0, 0, 0, 1, 0) geomObj_2 = geompy.MakeMarker(0, 0, 0, 1, 0, 0, 0, 1, 0) Corps_principal_1 = geompy.GetSubShape(Corps_principal, [261]) Esquisse_1 = geompy.MakeSketcherOnPlane("Sketcher:F -0.050000 0.000000:TT 0.050000 0.000000:TT 0.050000 -0.050000:TT -0.050000 -0.050000:WW", Corps_principal_1 ) Enl_vement_extrud__1 = geompy.MakeExtrudedCut(Corps_principal, Esquisse_1, 90, 0) [Appui1] = geompy.SubShapes(Enl_vement_extrud__1, [278]) [Appui2] = geompy.SubShapes(Enl_vement_extrud__1, [309]) [Tige] = geompy.SubShapes(Enl_vement_extrud__1, [349]) geompy.addToStudy( O, 'O' )
notebook = salome_notebook.notebook sys.path.insert( 0, r'/home/bordreuil/Enseignement/elementsFiNimes/Examples/Poutres/D_Treillis') ### ### GEOM component ### 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(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)
N = 500 A = 3.1926 H = 200 # [m] a = H * AR # [m] x = linspace(0, a, N) # [m] y = -H * 1 / 6.04844 * (sp.j0(A) * sp.i0(A * x / a) - sp.i0(A) * sp.j0(A * x / a)) 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)
y_3 = -400. x_4 = -550. y_4 = -425. z_4 = 50. x_5 = -530. y_5 = -50. z_5 = 40. x_6 = -900. y_6 = -480. z_6 = 85. x_7 = 75. y_7 = -450 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)
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
counter+=1 return groups def update_screen(): if salome.sg.hasDesktop(): salome.sg.updateObjBrowser(True) ## 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) )
notebook = salome_notebook.notebook sys.path.insert(0, r'/home/bordreuil/Enseignement/E_BMXPoutre') ### ### GEOM component ### 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, 0, 100) Sommet_3 = geompy.MakeVertex(0, 0, 200) Sommet_4 = geompy.MakeVertex(0, 0, 300) Sommet_5 = geompy.MakeVertex(-200, 0, 200) Sommet_6 = geompy.MakeVertex(-200, 0, 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_5, Sommet_3) Ligne_5 = geompy.MakeLineTwoPnt(Sommet_6, Sommet_2) Ligne_1_vertex_2 = geompy.GetSubShape(Ligne_1, [2])
def RebuildData(theStudy): geompy.init_geom(theStudy) global Edge_1, Edge_2, Vertex_3, Revolution_1, Vertex_5, Vertex_4, Vertex_6, Face_1, Cone_1, Edge_5, Edge_3, Cylinder_1, Edge_4, Translation_1, Y, Vertex_2, Common_1, Cut_1, Compound_1, Vector_1, Fillet_1, X, Box_1, Rotation_1, Partition_1, Cone_1_edge_7, Torus_1, Vertex_1, Circle_1 Vertex_1 = geompy.MakeVertex(200, 200, 0) Vertex_2 = geompy.MakeVertexWithRef(Vertex_1, 0, 0, 200) Vector_1 = geompy.MakeVector(Vertex_1, Vertex_2) Cone_1 = geompy.MakeConeR1R2H(100, 0, 300) Cylinder_1 = geompy.MakeCylinder(Vertex_2, Vector_1, 100, 100) geomObj_1 = geompy.GetSubShape(Cone_1, [7]) Circle_1 = geompy.MakeCircle(Vertex_1, Vector_1, 100) Cone_1_edge_7 = geompy.GetSubShape(Cone_1, [7]) Revolution_1 = geompy.MakeRevolution2Ways(Circle_1, Cone_1_edge_7, 45*math.pi/180.0) Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200) Torus_1 = geompy.MakeTorusRR(200, 75) Common_1 = geompy.MakeCommon(Torus_1, Box_1) Cut_1 = geompy.MakeCut(Torus_1, Box_1) Translation_1 = geompy.MakeTranslation(Torus_1, 190, 190, 0) Y = geompy.MakeVectorDXDYDZ(0, 100, 0) X = geompy.MakeVectorDXDYDZ(100, 0, 0) Rotation_1 = geompy.MakeRotation(Translation_1, Y, -90*math.pi/180.0) Compound_1 = geompy.MakeCompound([Translation_1, Torus_1, Rotation_1]) Fillet_1 = geompy.MakeFilletAll(Box_1, 35) Vertex_3 = geompy.MakeVertex(0, 0, 0) Vertex_4 = geompy.MakeVertex(0, 0, 200) Vertex_5 = geompy.MakeVertex(200, 0, 200) Vertex_6 = geompy.MakeVertex(200, 0, 0) Edge_1 = geompy.MakeEdge(Vertex_3, Vertex_4) Edge_2 = geompy.MakeEdge(Vertex_4, Vertex_5) Edge_3 = geompy.MakeEdge(Vertex_5, Vertex_6) Edge_4 = geompy.MakeEdge(Vertex_6, Vertex_3) Face_1 = geompy.MakeFaceWires([Edge_1, Edge_2, Edge_3, Edge_4], 1) Edge_5 = geompy.MakeEdge(Vertex_3, Vertex_5) Partition_1 = geompy.MakePartition([Face_1], [Edge_5], [], [], geompy.ShapeType["FACE"], 0, [], 0) geompy.addToStudy( Vertex_1, "Vertex_1" ) geompy.addToStudy( Vertex_2, "Vertex_2" ) geompy.addToStudy( Vector_1, "Vector_1" ) geompy.addToStudy( Cone_1, "Cone_1" ) geompy.addToStudy( Cylinder_1, "Cylinder_1" ) geompy.addToStudy( Circle_1, "Circle_1" ) geompy.addToStudyInFather( Cone_1, Cone_1_edge_7, "Cone_1:edge_7" ) geompy.addToStudy( Revolution_1, "Revolution_1" ) geompy.addToStudy( Box_1, "Box_1" ) geompy.addToStudy( Torus_1, "Torus_1" ) geompy.addToStudy( Common_1, "Common_1" ) geompy.addToStudy( Cut_1, "Cut_1" ) geompy.addToStudy( Translation_1, "Translation_1" ) geompy.addToStudy( Y, "Y" ) geompy.addToStudy( X, "X" ) geompy.addToStudy( Rotation_1, "Rotation_1" ) geompy.addToStudy( Compound_1, "Compound_1" ) geompy.addToStudy( Fillet_1, "Fillet_1" ) geompy.addToStudy( Vertex_3, "Vertex_3" ) geompy.addToStudy( Vertex_4, "Vertex_4" ) geompy.addToStudy( Vertex_5, "Vertex_5" ) geompy.addToStudy( Vertex_6, "Vertex_6" ) geompy.addToStudy( Edge_1, "Edge_1" ) geompy.addToStudy( Edge_2, "Edge_2" ) geompy.addToStudy( Edge_3, "Edge_3" ) geompy.addToStudy( Edge_4, "Edge_4" ) geompy.addToStudy( Face_1, "Face_1" ) geompy.addToStudy( Edge_5, "Edge_5" ) geompy.addToStudy( Partition_1, "Partition_1" ) ### Store presentation parameters of displayed objects import iparameters ipar = iparameters.IParameters(theStudy.GetModuleParameters("Interface Applicative", "GEOM", 1)) #Set up entries: # set up entry GEOM_11 (Cut_1) parameters ipar.setParameter("GEOM_11", "OCCViewer_0_Visibility", "On") ipar.setParameter("GEOM_11", "OCCViewer_0_DisplayMode", "1") ipar.setParameter("GEOM_11", "OCCViewer_0_Transparency", "0") ipar.setParameter("GEOM_11", "OCCViewer_0_Isos", "1:1") pass
def generateCarbonPlatinumGeometry(self): self.__carbonPlatinumSphere = geompy.MakeSpherePntR( geompy.MakeVertex(self.position[0], self.position[1], self.position[2]), self.radius)
import salome_notebook notebook = salome_notebook.notebook ### ### GEOM component ### 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' ) ###
import salome_notebook notebook = salome_notebook.notebook ### ### GEOM component ### 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) Rayon = 50. # Largeur de la piece au niveau de l axe Rtrou = 15. # Rayon de l axe Rgorge = 5. # Rayon de la gorge Lhaut = 100. # Largeur au niveau de la gorge Sommet_1 = geompy.MakeVertex(0., 0., 0.) Sommet_2 = geompy.MakeVertex(Rayon, 0., 0.)
def injectorFaceGroups (injGeom, aInjLens, aInjRads, aWallS ,aTol): # L1= aInjLens[0] L2= aInjLens[1] L3= aInjLens[2] L4= aInjLens[3] L5= aInjLens[4] L6= aInjLens[5] # R0= aInjRads[0] R1= aInjRads[1] R2= aInjRads[2] R3= aInjRads[3] R4= aInjRads[4] # S = aWallS # RMAX = R0 LSUMM = L1 + L2 + L3 + L4 + L5 + L6 XMIN = -L1 -L2 XMAX = LSUMM + XMIN HALFR2= R2*0.5 # vertex1 = geompy.MakeVertex(0, 0, 0) vertex2 = geompy.MakeVertex(0, 0, 1) vector1 = geompy.MakeVector(vertex1, vertex2) # vertex3 = geompy.MakeVertex(1, 0, 0) vertex4 = geompy.MakeVertex(XMIN, 0, 0) Xvector = geompy.MakeVector(vertex1, vertex3) # symmWalls = faceSelect.SelectFacesWithNormalParallelToVec(injGeom, [vector1], aTol) # # now, remove all faces which are in small quadrangle # selGroup0faces = [] selGroup0faces = geompy.SubShapeAll(symmWalls, geompy.ShapeType["FACE"]) nFaces = len(selGroup0faces) idsToRemove = [] nToRemove=0 for jFace in range(0,nFaces): jFaceCOM = geompy.MakeCDG(selGroup0faces[jFace]) COMCoords = geompy.PointCoordinates(jFaceCOM) jFaceID = geompy.GetSubShapeID(injGeom, selGroup0faces[jFace]) ZCoord = COMCoords[2] Cond = (ZCoord >= aTol) if Cond: idsToRemove.append (jFaceID) nToRemove = nToRemove + 1 print "---" print nToRemove print "---" # for jFace in range(0,nToRemove): geompy.RemoveObject(symmWalls, idsToRemove[jFace]) # id_symmWalls = geompy.addToStudyInFather(injGeom,symmWalls,"symm-walls") # activeInlet = faceSelect.SelectFacesWithCoordinateAndLessRadius(injGeom,XMIN,0,vertex4,R1, aTol) id_activeInlet = geompy.addToStudyInFather(injGeom,activeInlet,"active-inlet") # passiveInlet = faceSelect.SelectFacesWithCoordinateAndGreaterRadius(injGeom,XMIN,0,vertex4,R1+S, aTol) id_passiveInlet = geompy.addToStudyInFather(injGeom,passiveInlet,"passive-inlet") Outlet = faceSelect.SelectFacesWithCOM_OnCoordinate(injGeom, XMAX, 0, aTol) id_Outlet = geompy.addToStudyInFather(injGeom,Outlet,"outlet") # faceGroups = [symmWalls, activeInlet, passiveInlet, Outlet] return faceGroups
ipar.append("AP_MODULES_LIST", "Geometry") ipar.append("AP_MODULES_LIST", "Mesh") ### ### GEOM component ### 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)
h = 10. nsub = 1 phibase = 2.4 phitop = 0.8 geompy.init_geom(theStudy) #generation du quadriage de noeud node = [] deltax = lx / nsub deltay = ly / nsub for a in range(0, nsub + 1): liste = [] node.append(liste) for b in range(0, nsub + 1): newvertex = geompy.MakeVertex(a * deltax, b * deltay, h) #geompy.addToStudy( newvertex, 'PX%dY%d'%(a,b) ) liste.append(newvertex) ##generation du quadriage de line #line=[] #linex=[] #liney=[] #for a in range(0,nsub): # listex=[] # linex.append(listex) # listey=[] # linex.append(listey) # 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) )
def injectorEdgeGroups (aInjGeom, aInjLens, aInjRads, aWallS ,aTol): # L1= aInjLens[0] L2= aInjLens[1] L3= aInjLens[2] L4= aInjLens[3] L5= aInjLens[4] L6= aInjLens[5] # R0= aInjRads[0] R1= aInjRads[1] R2= aInjRads[2] R3= aInjRads[3] R4= aInjRads[4] # S = aWallS # RMAX = R4 LSUMM = L1 + L2 + L3 + L4 + L5 + L6 X = [-(L1+L2), -L2, 0, L3, L3+L4, L3+L4+L5, L3+L4+L5+L6] Sqrt2By2 = math.sqrt(2.0)/2.0 YL1 = R2 * Sqrt2By2 * 0.5 ZL1 = R2 * Sqrt2By2 * 0.5 YL2 = (R1+S) * Sqrt2By2 ZL2 = (R1+S) * Sqrt2By2 YL2b= (R1) * Sqrt2By2 ZL2b= (R1) * Sqrt2By2 YL3 = (R2+S) * Sqrt2By2 ZL3 = (R2+S) * Sqrt2By2 YL3b= (R2) * Sqrt2By2 ZL3b= (R2) * Sqrt2By2 # v0 = geompy.MakeVertex(X[0], YL1, ZL1) v0a= geompy.MakeVertex(X[0], YL2, ZL2) v0b= geompy.MakeVertex(X[0], YL2b, ZL2b) v1 = geompy.MakeVertex(X[1], YL1, ZL1) v1a= geompy.MakeVertex(X[1], YL2, ZL2) v2 = geompy.MakeVertex(X[2], YL1, ZL1) v2a= geompy.MakeVertex(X[2], YL3, ZL3) v2b= geompy.MakeVertex(X[2], YL3b, ZL3b) v3 = geompy.MakeVertex(X[3], YL1, ZL1) v4 = geompy.MakeVertex(X[4], YL1, ZL1) v5 = geompy.MakeVertex(X[5], YL1, ZL1) v6 = geompy.MakeVertex(X[6], YL1, ZL1) # Edge_L1 = edgeSelect.EdgeOnEnds (aInjGeom, v0, v1, aTol) Edge_L1a= edgeSelect.EdgeOnEnds (aInjGeom, v0a,v1a,aTol) Edge_L2a= edgeSelect.EdgeOnEnds (aInjGeom, v1a,v2a,aTol) Edge_L2 = edgeSelect.EdgeOnEnds (aInjGeom, v1, v2, aTol) Edge_L3 = edgeSelect.EdgeOnEnds (aInjGeom, v2, v3, aTol) Edge_L4 = edgeSelect.EdgeOnEnds (aInjGeom, v3, v4, aTol) Edge_L5 = edgeSelect.EdgeOnEnds (aInjGeom, v4, v5, aTol) Edge_L6 = edgeSelect.EdgeOnEnds (aInjGeom, v5, v6, aTol) # Edge_L1_Group = geompy.CreateGroup(aInjGeom, geompy.ShapeType["EDGE"]) Edge_L1_ID = geompy.GetSubShapeID(aInjGeom, Edge_L1) geompy.AddObject(Edge_L1_Group, Edge_L1_ID) geompy.addToStudyInFather(aInjGeom,Edge_L1_Group,"LE1") # Edge_L1a_Group = geompy.CreateGroup(aInjGeom, geompy.ShapeType["EDGE"]) Edge_L1a_ID = geompy.GetSubShapeID(aInjGeom, Edge_L1a) geompy.AddObject(Edge_L1a_Group, Edge_L1a_ID) geompy.addToStudyInFather(aInjGeom,Edge_L1a_Group,"LE1a") # Edge_L2_Group = geompy.CreateGroup(aInjGeom, geompy.ShapeType["EDGE"]) Edge_L2_ID = geompy.GetSubShapeID(aInjGeom, Edge_L2) geompy.AddObject(Edge_L2_Group, Edge_L2_ID) geompy.addToStudyInFather(aInjGeom,Edge_L2_Group,"LE2") # Edge_L2a_Group = geompy.CreateGroup(aInjGeom, geompy.ShapeType["EDGE"]) Edge_L2a_ID = geompy.GetSubShapeID(aInjGeom, Edge_L2a) geompy.AddObject(Edge_L2a_Group, Edge_L2a_ID) geompy.addToStudyInFather(aInjGeom,Edge_L2a_Group,"LE2a") # Edge_L3_Group = geompy.CreateGroup(aInjGeom, geompy.ShapeType["EDGE"]) Edge_L3_ID = geompy.GetSubShapeID(aInjGeom, Edge_L3) geompy.AddObject(Edge_L3_Group, Edge_L3_ID) geompy.addToStudyInFather(aInjGeom,Edge_L3_Group,"LE3") # Edge_L4_Group = geompy.CreateGroup(aInjGeom, geompy.ShapeType["EDGE"]) Edge_L4_ID = geompy.GetSubShapeID(aInjGeom, Edge_L4) geompy.AddObject(Edge_L4_Group, Edge_L4_ID) geompy.addToStudyInFather(aInjGeom,Edge_L4_Group,"LE4") # Edge_L5_Group = geompy.CreateGroup(aInjGeom, geompy.ShapeType["EDGE"]) Edge_L5_ID = geompy.GetSubShapeID(aInjGeom, Edge_L5) geompy.AddObject(Edge_L5_Group, Edge_L5_ID) geompy.addToStudyInFather(aInjGeom,Edge_L5_Group,"LE5") # Edge_L6_Group = geompy.CreateGroup(aInjGeom, geompy.ShapeType["EDGE"]) Edge_L6_ID = geompy.GetSubShapeID(aInjGeom, Edge_L6) geompy.AddObject(Edge_L6_Group, Edge_L6_ID) geompy.addToStudyInFather(aInjGeom,Edge_L6_Group,"LE6") # YL5 = R2 * 0.5 ZL5 = 0.0 YL6 = -R2 * 0.5 ZL6 = 0.0 YL7 = YL5 * Sqrt2By2 ZL7 = YL7 YL8 = YL6 * Sqrt2By2 ZL8 = YL7 # v7 = geompy.MakeVertex(X[0], YL5, ZL5) v8 = geompy.MakeVertex(X[0], YL7, ZL7) v9 = geompy.MakeVertex(X[0], YL6, ZL6) v10 = geompy.MakeVertex(X[0], YL8, ZL8) # Edge_A11 = edgeSelect.EdgeOnEnds (aInjGeom, v7, v8, aTol) Edge_A12 = edgeSelect.EdgeOnEnds (aInjGeom, v9, v10, aTol) Edge_A2 = edgeSelect.EdgeOnEnds (aInjGeom, v8, v10, aTol) # Edge_A1_Group = geompy.CreateGroup(aInjGeom, geompy.ShapeType["EDGE"]) Edge_A11_ID = geompy.GetSubShapeID(aInjGeom, Edge_A11) Edge_A12_ID = geompy.GetSubShapeID(aInjGeom, Edge_A12) geompy.AddObject(Edge_A1_Group, Edge_A11_ID) geompy.AddObject(Edge_A1_Group, Edge_A12_ID) geompy.addToStudyInFather(aInjGeom,Edge_A1_Group,"AE1") # Edge_A2_Group = geompy.CreateGroup(aInjGeom, geompy.ShapeType["EDGE"]) Edge_A2_ID = geompy.GetSubShapeID(aInjGeom, Edge_A2) geompy.AddObject(Edge_A2_Group, Edge_A2_ID) geompy.addToStudyInFather(aInjGeom,Edge_A2_Group,"AE2") # Edge_R1 = edgeSelect.EdgeOnEnds (aInjGeom, v8, v0b, aTol) Edge_R2 = edgeSelect.EdgeOnEnds (aInjGeom, v2a,v2b,aTol) # Edge_R1_Group = geompy.CreateGroup(aInjGeom, geompy.ShapeType["EDGE"]) Edge_R1_ID = geompy.GetSubShapeID(aInjGeom, Edge_R1) geompy.AddObject(Edge_R1_Group, Edge_R1_ID) geompy.addToStudyInFather(aInjGeom,Edge_R1_Group,"RE1") # Edge_R2_Group = geompy.CreateGroup(aInjGeom, geompy.ShapeType["EDGE"]) Edge_R2_ID = geompy.GetSubShapeID(aInjGeom, Edge_R2) geompy.AddObject(Edge_R2_Group, Edge_R2_ID) geompy.addToStudyInFather(aInjGeom,Edge_R2_Group,"RE2") # subMeshEdges = [Edge_L1_Group, Edge_L1a_Group, Edge_L2_Group, Edge_L2a_Group, Edge_L3_Group, Edge_L4_Group, Edge_L5_Group, Edge_L6_Group, Edge_A1_Group, Edge_A2_Group, Edge_R1_Group, Edge_R2_Group] return subMeshEdges
### ### GEOM component ### import GEOM import geompy import math import SALOMEDS Lplq = 500. lplq = 100. 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)
#################################################### ## End of variables section ## #################################################### ### ### GEOM component ### import GEOM import geompy import math import SALOMEDS geompy.init_geom(theStudy) Vertex_1 = geompy.MakeVertex(0, 0, 0) Vertex_2 = geompy.MakeVertex(0, width, 0) Vertex_3 = geompy.MakeVertex(C_GDL_h, width, 0) Vertex_4 = geompy.MakeVertex(C_GDL_h, 0, 0) Vertex_5 = geompy.MakeVertex(C_GDL_h + C_MPL_h, 0, 0) Vertex_6 = geompy.MakeVertex(C_GDL_h + C_MPL_h, width, 0) Vertex_7 = geompy.MakeVertex(C_GDL_h + C_MPL_h + C_CL_h, width, 0) Vertex_8 = geompy.MakeVertex(C_GDL_h + C_MPL_h + C_CL_h, 0, 0) Vertex_9 = geompy.MakeVertex(C_GDL_h + C_MPL_h + C_CL_h + Mem_h, 0, 0) Vertex_10 = geompy.MakeVertex(C_GDL_h + C_MPL_h + C_CL_h + Mem_h, width, 0) Vertex_11 = geompy.MakeVertex(C_GDL_h + C_MPL_h + C_CL_h + Mem_h + A_CL_h, width, 0) Vertex_12 = geompy.MakeVertex(C_GDL_h + C_MPL_h + C_CL_h + Mem_h + A_CL_h, 0, 0) Vertex_13 = geompy.MakeVertex( C_GDL_h + C_MPL_h + C_CL_h + Mem_h + A_CL_h + A_MPL_h, 0, 0)