37,743
社区成员




from PyIOMeshingController.Reader.tFlow_geom_parser_reader import *
import os
import sys
class salomeInput(object):
def __init__(self,geomElements):
# initialisation
import salome
self.salome = salome
self.salome.salome_init()
#import geometry python module
import GEOM
import SALOMEDS
from salome.geom import geomBuilder
self.geomBuilder = geomBuilder
self.the_Study = None
self.geompy = None
self.geom_elements = geomElements
# self.geom_elements = geometryStructure_tFlow()
self.origin = {}
self.num_vertex = 0
self.vertex_dict = {}
self.num_edge = 0
self.edge_dict = {}
self.num_face = 0
self.face_dict = {}
self.num_block = 0
self.block_dict = {}
print('\ngeometrical elements from tFlow input file are building...............................................')
self.createNewStudy()
self.createGEOM()
self.getInfo()
self.addToStudy()
self.importVertex()
self.importEdge()
self.importFace()
self.importBlock()
self.trailer()
def createNewStudy(self):
self.the_Study = self.salome.myStudy
print('\nnew study is already created....................................')
return self.the_Study
def createGEOM(self):
self.geompy = self.geomBuilder.New(self.the_Study)
print('\ngeometry components are creating................................')
return self.geompy
def getInfo(self):
self.num_vertex = self.geom_elements.number_vertices
# print(self.num_vertex)
self.num_edge = self.geom_elements.number_edges
# print(self.num_edge)
self.num_face = self.geom_elements.number_faces
# print(self.num_face)
self.num_block = self.geom_elements.number_solids
# print(self.num_block)
return self.num_vertex, self.num_edge, self.num_face, self.num_block
def importVertex(self):
print('{} vertices are creating...........................................'.format(self.num_vertex))
for vertex in self.geom_elements.vertices:
locals()['vertex_{}'.format(vertex.id)] = self.geompy.MakeVertex(vertex.x, vertex.y, vertex.z)
self.vertex_dict[vertex.id] = locals()['vertex_{}'.format(vertex.id)]
self.geompy.addToStudy(locals()['vertex_{}'.format(vertex.id)],'vertex_{}'.format(vertex.id))
# print(self.vertex_dic)
return self.vertex_dict
def importEdge(self):
print('{} edges are creating...........................................'.format(self.num_edge))
for edge in self.geom_elements.edges:
# print(edge.connective_vertices)
if len(edge.connective_vertices) == 2:
start = self.vertex_dict[edge.start_punkt]
# print(start)
end = self.vertex_dict[edge.end_punkt]
# print(end)
locals()['edge_{}'.format(edge.id)] = self.geompy.MakeLineTwoPnt(start,end)
self.edge_dict[edge.id] = locals()['edge_{}'.format(edge.id)]
self.geompy.addToStudy(locals()['edge_{}'.format(edge.id)], 'edge_{}'.format(edge.id))
else:
# FIXME: later add # create an arc from a center point, a start point and end point geompy.MakeArcCenter(p0, p1, p2, 1)
start = self.vertex_dict[edge.start_punkt]
end = self.vertex_dict[edge.end_punkt]
center = self.vertex_dict[edge.center_punkt]
locals()['arc_{}'.format(edge.id)] = self.geompy.MakeArcCenter(center, start, end)
self.edge_dict[edge.id] = locals()['arc_{}'.format(edge.id)]
self.geompy.addToStudy(locals()['arc_{}'.format(edge.id)], 'arc_{}'.format(edge.id))
return self.edge_dict
def importFace(self):
print('{} faces are creating...........................................'.format(self.num_face))
for face in self.geom_elements.faces:
edge1 = self.edge_dict[face.connective_edges[0]]
edge2 = self.edge_dict[face.connective_edges[1]]
edge3 = self.edge_dict[face.connective_edges[2]]
edge4 = self.edge_dict[face.connective_edges[3]]
locals()['face_{}'.format(face.id)] = self.geompy.MakeQuad(edge1, edge2, edge3, edge4)
self.face_dict[face.id] = locals()['face_{}'.format(face.id)]
self.geompy.addToStudy(locals()['face_{}'.format(face.id)], 'face_{}'.format(face.id))
return self.face_dict
def importBlock(self):
print('{} blocks are creating...........................................'.format(self.num_block))
for block in self.geom_elements.solids:
face1 = self.face_dict[block.connective_faces[0]]
face2 = self.face_dict[block.connective_faces[1]]
face3 = self.face_dict[block.connective_faces[2]]
face4 = self.face_dict[block.connective_faces[3]]
face5 = self.face_dict[block.connective_faces[4]]
face6 = self.face_dict[block.connective_faces[5]]
locals()['block_{}'.format(block.id)] = self.geompy.MakeHexa(face1, face2, face3, face4, face5, face6)
self.block_dict[block.id] = locals()['block_{}'.format(block.id)]
self.geompy.addToStudy(locals()['block_{}'.format(block.id)], 'block_{}'.format(block.id))
return self.block_dict
def addToStudy(self):
print('origin punkt and coordinates are creating...........................................................')
# add origin coordinates
O = self.geompy.MakeVertex(0, 0, 0)
self.origin['O'] = O
OX = self.geompy.MakeVectorDXDYDZ(1, 0, 0)
self.origin['OX'] = OX
OY = self.geompy.MakeVectorDXDYDZ(0, 1, 0)
self.origin['OY'] = OY
OZ = self.geompy.MakeVectorDXDYDZ(0, 0, 1)
self.origin['OZ'] = OZ
self.geompy.addToStudy(O, 'O')
self.geompy.addToStudy(OX, 'OX')
self.geompy.addToStudy(OY, 'OY')
self.geompy.addToStudy(OZ, 'OZ')
return self.origin
def trailer(self):
# Update Object Browser
if self.salome.sg.hasDesktop():
self.salome.sg.updateObjBrowser(True)
print('\ngeometrical elements from tFlow input are already created..........................................')
if __name__=='__main__':
geom_file_path = r'F:\Masterarbeit\Python_Programm\Python3_neu\iomeshing\docs\tFlow_channel.geom'
geomElements = geometryStructure_tFlow()
geomReader(geom_file_path,geomElements,'mesh_set_up', 'vertex', 'polyline', 'block')
sInput = salomeInput(geomElements)