使用python vtk 生成立体网格

效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
points = vtk.vtkPoints()
   cells = vtk.vtkCellArray()
   polydata = vtk.vtkPolyData()
   mapper = vtk.vtkPolyDataMapper()
 
   rangeX = [-10,10]
   rangeY = [-10,10]
   rangeZ = [-10,10]
 
   intervalX = 2
   intervalY = 2
   intervalZ = 2
 
   for gridZ in range(rangeZ[0],rangeZ[1] + intervalZ,intervalZ):
       for gridX in range(rangeX[0],rangeX[1] + intervalX,intervalX):
           lineStart = [gridX, rangeY[0],gridZ]
           lineEnd = [gridX,rangeY[1],gridZ]
 
           pointIdStart = points.InsertNextPoint(lineStart)
           pointIdEnd = points.InsertNextPoint(lineEnd)
 
           singleLineCell = [pointIdStart,pointIdEnd]
           cells.InsertNextCell(2,singleLineCell)
 
       for gridY in range(rangeY[0],rangeY[1] +intervalY,intervalY):
           lineStart = [gridY, rangeX[0],gridZ]
           lineEnd = [gridY,rangeX[1],gridZ]
 
           pointIdStart = points.InsertNextPoint(lineStart)
           pointIdEnd = points.InsertNextPoint(lineEnd)
 
           singleLineCell = [pointIdStart,pointIdEnd]
           cells.InsertNextCell(2,singleLineCell)
 
   for gridY in range(rangeY[0], rangeY[1] + intervalY , intervalY):
       for gridZ in range(rangeZ[0], rangeZ[1] + intervalZ, intervalZ):
           lineStart = [rangeX[0], gridY, gridZ]
           lineEnd = [rangeX[1], gridY, gridZ]
 
           pointIdStart = points.InsertNextPoint(lineStart)
           pointIdEnd = points.InsertNextPoint(lineEnd)
 
           singleLineCell = [pointIdStart, pointIdEnd]
           cells.InsertNextCell(2, singleLineCell)
 
       for gridX in range(rangeX[0], rangeX[1] +intervalX, intervalX):
           lineStart = [gridX, gridY, rangeZ[0]]
           lineEnd = [gridX, gridY, rangeZ[1]]
 
           pointIdStart = points.InsertNextPoint(lineStart)
           pointIdEnd = points.InsertNextPoint(lineEnd)
 
           singleLineCell = [pointIdStart, pointIdEnd]
           cells.InsertNextCell(2, singleLineCell)
 
   polydata.SetLines(cells)
   polydata.SetPoints(points)
   mapper.SetInputData(polydata)
 
   actor = vtk.vtkActor()
   actor.SetMapper(mapper)
 
   ren1 = vtk.vtkRenderer()
   ren1.AddActor(actor)
   ren1.SetBackground(0.1,0.2,0.4)
 
   renWin = vtk.vtkRenderWindow()
   renWin.AddRenderer(ren1);
   renWin.SetSize(300, 300);
 
   #enderWindowInteractor
   iren = vtk.vtkRenderWindowInteractor();
   iren.SetRenderWindow(renWin);
   style = vtk.vtkInteractorStyleTrackballCamera();
   iren.SetInteractorStyle(style);
 
   renWin.SetSize(600, 600);
   renWin.Render();
   iren.Initialize()
   iren.Start()

  

 代码:

posted @   丢了木剑的温华  阅读(818)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示