簡體   English   中英

從Paraview中的像元和點創建網格

[英]Create mesh from cells and points in Paraview

我有一個包含應力數據和幾何圖形的CSV文件,該文件是我想在Paraview中從ANSYS Mechanical導出的。 每個節點都有一堆與其相關的應力數據。 我在Paraview中設法將點導入為點雲,但我也想重新創建ANSYS網格。 我認為Paraview中的“可編程源”可能是一種替代方法,通過谷歌搜索,我可能會弄清楚如何將數據讀取到numpy數組中,但是基本的問題是,如何在Paraview中從點創建可編程源中的網格和細胞/面部? 我的CSV文件如下所示:

Node, X, Y, Z, Stress_data
1, 1.0, 1.0, 1.0, 123
2, 2.0, 2.0, 2.0, 234
3, 3.0, 3.0, 3.0, 345
...

Faces
1, 2, 3
3, 4, 5
...

更新
是一個指向示例csv文件(包括連接性列)的鏈接,該網格在Ansys中的外觀如何,該網格在Paraview中的外觀以及經過稍微修改的腳本。

以下python腳本從csv文件創建一個polydata對象,並將其寫入文件,該文件可以在paraview中讀取:

import vtk

f = open('Example-2.csv')

pd = vtk.vtkPolyData()
points = vtk.vtkPoints()
cells = vtk.vtkCellArray()
connectivity = vtk.vtkIntArray()
connectivity.SetName('Connectivity')
stress = vtk.vtkFloatArray()
stress.SetName('Stress')

line = f.readline()
for line in iter(lambda: f.readline(), ""):
    if 'Faces' in line:
        break
    v = line.split(',')
    points.InsertNextPoint(float(v[1]),
                           float(v[2]),
                           float(v[3]))
    stress.InsertNextTuple1(float(v[5]))
    connectivity.InsertNextTuple1(float(v[4]))

for line in iter(lambda: f.readline(), ""):
    v = line.split(',')
    cell = vtk.vtkTriangle()
    Ids = cell.GetPointIds()
    for kId in range(len(v)):
        Ids.SetId(kId,int(v[kId]))
    cells.InsertNextCell(cell)
f.close()

pd.SetPoints(points)
pd.SetPolys(cells)
pd.GetPointData().AddArray(stress)
pd.GetPointData().AddArray(connectivity)

writer = vtk.vtkXMLPolyDataWriter()
writer.SetFileName('Example-2.vtp')
writer.SetInputData(pd)

writer.Write()

或者,您可以在csv文件上使用可編程過濾器( 請參閱此處 )。 這樣我不確定如何將節點和面數據饋送到單獨的對象中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM