我有3个.stl文件,每个文件都包含一个从VTK生成的圆柱体(通过vtkLineSource+vtkTubeFilter+vtkTriangleFilter和CappingOn)。每个圆柱体有不同的方向,在一端相交,并且有一个三角形网格。在
我想使用vtkTooleanOperationPolyDataFilter()将这三个圆柱体连接在一起。我用下面的代码来做这个。在
from vtk import *
def main():
a = vtkSTLReader()
a.SetFileName('booleanTest0.stl')
b = vtkSTLReader()
b.SetFileName('booleanTest1.stl')
c = vtkSTLReader()
c.SetFileName('booleanTest2.stl')
boolOp1 = vtkBooleanOperationPolyDataFilter()
boolOp1.SetOperationToUnion()
boolOp1.SetInputConnection(0,a.GetOutputPort())
boolOp1.SetInputConnection(1,b.GetOutputPort())
boolOp1.Update()
boolOp2 = vtkBooleanOperationPolyDataFilter()
boolOp2.SetOperationToUnion()
boolOp2.SetInputConnection(0,boolOp1.GetOutputPort())
boolOp2.SetInputConnection(1,c.GetOutputPort())
boolOp2.Update()
mapper = vtkPolyDataMapper()
mapper.SetInputConnection(boolOp2.GetOutputPort(0))
actor = vtkActor()
actor.SetMapper(mapper)
map1.SetInputConnection(a.GetOutputPort())
map2.SetInputConnection(b.GetOutputPort())
map3.SetInputConnection(c.GetOutputPort())
ren = vtkRenderer()
ren.AddActor(actor)
renwin = vtkRenderWindow()
renwin.AddRenderer(ren)
iren = vtkRenderWindowInteractor()
iren.SetRenderWindow(renwin)
renwin.Render()
iren.Initialize()
iren.Start()
main()
代码失败,出现分段错误:
^{pr2}$经过一些测试,我发现第一个布尔值通过了,但是第二个布尔值的更新导致了分割错误。在
boolOp2.Update()
关于如何规避这个问题有什么想法吗?我在python2.7中使用archlinux;在vtk6.1.0和5.10中进行了测试。在
你可以在这里下载stl:https://drive.google.com/file/d/0B27CeIphBFy-SEtLc1NPd3Z0bGs/view?usp=sharing
目前没有回答
相关问题 更多 >
编程相关推荐