2016-06-13 7 views
0

シリンダーの束を回転させてパイプモデルを作成しましたが、共通部品をフィルターする方法がなく、シリンダを作成し円で回転させるforループを実行しています。これは私がループ内での位置を設定する必要が問題を抱えている、私はこれが1つの使用vtkAppendPolyDataにいくつかの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

であること を使用し、その後1つのpolydataオブジェクトとに全気筒を添付するオブジェクト:

import vtk 

append = vtk.vtkAppendPolyData() 

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

append.Update() 

アクターを追加してループの外側にレンダリングすることができます。

関連する問題