VTK中的算法更新中的分段错误(Python)

时间:2014-12-04 23:18:54

标签: python vtk

我有3个.stl文件,每个文件都包含一个从VTK生成的圆柱体(通过vtkLineSource + vtkTubeFilter +带CappingOn的vtkTriangleFilter)。每个圆柱体具有不同的方向,在一端相交,并且具有三角形网格。

我想使用vtkBooleanOperationPolyDataFilter()将这三个柱体连接在一起。我使用下面的代码执行此操作。

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()

代码无法提供分段错误:

Segmentation fault (core dumped)

经过一些测试后,我发现传递了第一个布尔值,但第二个布尔值的更新导致了分段错误。

boolOp2.Update()

有关如何规避此问题的任何想法?我正在使用Arch Linux和Python 2.7;使用VTK 6.1.0和5.10进行测试。

您可以在此处下载:https://drive.google.com/file/d/0B27CeIphBFy-SEtLc1NPd3Z0bGs/view?usp=sharing

0 个答案:

没有答案