2016-06-13 34 views
0

我通過旋轉一束圓柱體創建了一個管道模型,但我不知道如何過濾常見部分,我正在運行一個for循環來創建圓柱體並將它們旋轉到圓上。這有我需要設置在環路中的位置的問題,我想所有氣缸連接到一個POLYDATA對象,然後用它 這是我的代碼如何在vtk中創建具有可重複性的管道模型

import vtk 
import math 
import wx 
# create a rendering window and renderer 
ren = vtk.vtkRenderer() 
renWin = vtk.vtkRenderWindow() 
renWin.AddRenderer(ren) 

# create a renderwindowinteractor 
iren = vtk.vtkRenderWindowInteractor() 
iren.SetRenderWindow(renWin) 
i=0 
sourc=[] 
mapper=[] 
actor=[] 


for i in range(0,360): 
    sourc.append(vtk.vtkCylinderSource()) 
    sourc[i].SetRadius(0.3) 
    sourc[i].SetHeight(6) 

    sourc[i].SetCenter(2*math.cos(i),0,2*math.sin(i)) 
    sourc[i].SetResolution(100.0) 
    sourc[i].Update() 

    mapper.append(vtk.vtkPolyDataMapper()) 
    mapper[i].SetInput(sourc[i].GetOutput()) 

    actor.append(vtk.vtkActor()) 
    actor[i].SetMapper(mapper[i]) 
     #actor[i].SetPosition(0,2*math.cos(j),2*math.sin(j)) 
     #actor[i].RotateZ(j) 
    actor[i].GetProperty().SetOpacity(1) 

     #actor[i].SetPosition(2*cos(i),2*sin(i),0) 
    ren.AddActor(actor[i]) 

    i=i+1 
# create source 
# 
transform = vtk.vtkTransform() 
transform.Translate(0.0, 0.0,0) 

axes = vtk.vtkAxesActor() 
# The axes are positioned with a user transform 
axes.SetUserTransform(transform) 



ren.AddActor(axes) 



# enable user interface interactor 
iren.Initialize() 
renWin.Render() 
iren.Start() 
+0

你能更具體地說明你想要做什麼嗎?你的可視化是什麼,你想看到什麼? – MrPedru22

回答

0

要添加多個PolyData對象爲一個使用vtkAppendPolyData object:

import vtk 

append = vtk.vtkAppendPolyData() 

for i in range(0, 360): 
    (...) 
    append.SetInputData(sourc[i].GetOutput()) 

append.Update() 

然後你可以在你的循環之外添加actor和渲染。

相關問題