我有一个带有压力数据和几何的CSV文件,我从ANSYS Mechanical导出,我希望在Paraview中可视化。每个节点都有一堆与之相关的压力数据。我在Paraview中管理点作为点云,但我也想重新创建ANSYS网格。我认为Paraview中的“可编程源”可能是一种替代方式,并且通过一些googleing我可能想出如何将数据读入numpy数组但基本问题是,我如何在Paraview中从可编程源创建网格和细胞/面孔? 我的CSV文件如下所示:
public static void main(String [] args){
Scanner sca = new Scanner(System.in);
System.out.println("Please type some words, then press enter: ");
String sentences= sca.nextLine();
String []count_words= sentences.split(" ");
for(String count : count_words){
System.out.println("number of word is "+count.length());}
}
更新
Here是一个示例csv文件(包括连接列)的链接,网格在Ansys中的外观,网格在Paraview中的外观以及稍微修改过的脚本。
答案 0 :(得分:1)
以下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文件(see here)上使用可编程过滤器。这样我就不确定如何将节点和面数据输入到单独的对象中。