def Execute(self):

        if self.Surface == None:
            self.PrintError('Error: No input surface.')

        if self.Centerlines == None:
            self.PrintError('Error: No input centerlines.')

        if self.UseCombinedDistance == 1:
            if self.RadiusArrayName == '':
                self.PrintError('Error: CenterlineRadiusArrayName not set.')
            distanceToCenterlinesFilter = vtkvmtk.vtkvmtkPolyDataDistanceToCenterlines(
            )
            distanceToCenterlinesFilter.SetInputData(self.Surface)
            distanceToCenterlinesFilter.SetCenterlines(self.Centerlines)
            distanceToCenterlinesFilter.SetUseRadiusInformation(1)
            distanceToCenterlinesFilter.SetEvaluateCenterlineRadius(1)
            distanceToCenterlinesFilter.SetProjectPointArrays(
                self.ProjectPointArrays)
            distanceToCenterlinesFilter.SetDistanceToCenterlinesArrayName(
                self.DistanceToCenterlinesArrayName)
            distanceToCenterlinesFilter.SetCenterlineRadiusArrayName(
                self.RadiusArrayName)
            distanceToCenterlinesFilter.Update()

            surface = distanceToCenterlinesFilter.GetOutput()
            centerlineArray = surface.GetPointData().GetArray(
                self.DistanceToCenterlinesArrayName)
            radiusArray = surface.GetPointData().GetArray(self.RadiusArrayName)

            for i in range(surface.GetNumberOfPoints()):
                centerlineval = centerlineArray.GetComponent(i, 0)
                radius = radiusArray.GetComponent(i, 0)
                if centerlineval > 1.4 * radius:
                    centerlineArray.SetTuple1(i, 1.4 * radius)
                elif centerlineval < 0.9 * radius:
                    centerlineArray.SetTuple1(i, radius)

            self.Surface = surface

        else:
            distanceToCenterlinesFilter = vtkvmtk.vtkvmtkPolyDataDistanceToCenterlines(
            )
            distanceToCenterlinesFilter.SetInputData(self.Surface)
            distanceToCenterlinesFilter.SetCenterlines(self.Centerlines)
            distanceToCenterlinesFilter.SetUseRadiusInformation(
                self.UseRadiusInformation)
            distanceToCenterlinesFilter.SetEvaluateTubeFunction(
                self.EvaluateTubeFunction)
            distanceToCenterlinesFilter.SetEvaluateCenterlineRadius(
                self.EvaluateCenterlineRadius)
            distanceToCenterlinesFilter.SetProjectPointArrays(
                self.ProjectPointArrays)
            distanceToCenterlinesFilter.SetDistanceToCenterlinesArrayName(
                self.DistanceToCenterlinesArrayName)
            distanceToCenterlinesFilter.SetCenterlineRadiusArrayName(
                self.RadiusArrayName)
            distanceToCenterlinesFilter.Update()

            self.Surface = distanceToCenterlinesFilter.GetOutput()
Esempio n. 2
0
    def Execute(self):

        if self.Surface == None:
            self.PrintError('Error: No input surface.')

        if self.Centerlines == None:
            self.PrintError('Error: No input centerlines.')

        if self.UseCombinedDistance == 1:
            if self.RadiusArrayName == '':
                self.PrintError('Error: CenterlineRadiusArrayName not set.')
            distanceToCenterlinesFilter = vtkvmtk.vtkvmtkPolyDataDistanceToCenterlines()
            distanceToCenterlinesFilter.SetInput(self.Surface)
            distanceToCenterlinesFilter.SetCenterlines(self.Centerlines)
            distanceToCenterlinesFilter.SetUseRadiusInformation(1)
            distanceToCenterlinesFilter.SetEvaluateCenterlineRadius(1)
            distanceToCenterlinesFilter.SetProjectPointArrays(self.ProjectPointArrays)
            distanceToCenterlinesFilter.SetDistanceToCenterlinesArrayName(self.DistanceToCenterlinesArrayName)
            distanceToCenterlinesFilter.SetCenterlineRadiusArrayName(self.RadiusArrayName)
            distanceToCenterlinesFilter.Update()    
            
            surface = distanceToCenterlinesFilter.GetOutput()
            centerlineArray = surface.GetPointData().GetArray(self.DistanceToCenterlinesArrayName)
            radiusArray = surface.GetPointData().GetArray(self.RadiusArrayName)

            for i in range (surface.GetNumberOfPoints()):
                centerlineval = centerlineArray.GetComponent(i,0)
                radius = radiusArray.GetComponent(i,0)
                if centerlineval > 1.4 * radius:
                    centerlineArray.SetTuple1(i,1.4 * radius)
                elif centerlineval < 0.9 * radius:
                    centerlineArray.SetTuple1(i,radius)
                
            self.Surface = surface
            
        else:    
            distanceToCenterlinesFilter = vtkvmtk.vtkvmtkPolyDataDistanceToCenterlines()
            distanceToCenterlinesFilter.SetInput(self.Surface)
            distanceToCenterlinesFilter.SetCenterlines(self.Centerlines)
            distanceToCenterlinesFilter.SetUseRadiusInformation(self.UseRadiusInformation)
            distanceToCenterlinesFilter.SetEvaluateTubeFunction(self.EvaluateTubeFunction)
            distanceToCenterlinesFilter.SetEvaluateCenterlineRadius(self.EvaluateCenterlineRadius)
            distanceToCenterlinesFilter.SetProjectPointArrays(self.ProjectPointArrays)
            distanceToCenterlinesFilter.SetDistanceToCenterlinesArrayName(self.DistanceToCenterlinesArrayName)
            distanceToCenterlinesFilter.SetCenterlineRadiusArrayName(self.RadiusArrayName)
            distanceToCenterlinesFilter.Update()
    
            self.Surface = distanceToCenterlinesFilter.GetOutput()


        if self.Surface.GetSource():
            self.Surface.GetSource().UnRegisterAllOutputs()
Esempio n. 3
0
    def Execute(self):

        if self.Surface == None:
            self.PrintError('Error: No input surface.')

        if self.Centerlines == None:
            self.PrintError('Error: No input centerlines.')

        distanceToCenterlinesFilter = vtkvmtk.vtkvmtkPolyDataDistanceToCenterlines(
        )
        distanceToCenterlinesFilter.SetInput(self.Surface)
        distanceToCenterlinesFilter.SetCenterlines(self.Centerlines)
        distanceToCenterlinesFilter.SetUseRadiusInformation(
            self.UseRadiusInformation)
        distanceToCenterlinesFilter.SetEvaluateTubeFunction(
            self.EvaluateTubeFunction)
        distanceToCenterlinesFilter.SetEvaluateCenterlineRadius(
            self.EvaluateCenterlineRadius)
        distanceToCenterlinesFilter.SetProjectPointArrays(
            self.ProjectPointArrays)
        distanceToCenterlinesFilter.SetDistanceToCenterlinesArrayName(
            self.DistanceToCenterlinesArrayName)
        distanceToCenterlinesFilter.SetCenterlineRadiusArrayName(
            self.RadiusArrayName)
        distanceToCenterlinesFilter.Update()

        self.Surface = distanceToCenterlinesFilter.GetOutput()

        if self.Surface.GetSource():
            self.Surface.GetSource().UnRegisterAllOutputs()
    def Execute(self):

        if self.Surface == None:
            self.PrintError('Error: No input surface.')

        if self.Centerlines == None:
            self.PrintError('Error: No input centerlines.')

        distanceToCenterlinesFilter = vtkvmtk.vtkvmtkPolyDataDistanceToCenterlines()
        distanceToCenterlinesFilter.SetInput(self.Surface)
        distanceToCenterlinesFilter.SetCenterlines(self.Centerlines)
        distanceToCenterlinesFilter.SetUseRadiusInformation(self.UseRadiusInformation)
        distanceToCenterlinesFilter.SetEvaluateTubeFunction(self.EvaluateTubeFunction)
        distanceToCenterlinesFilter.SetEvaluateCenterlineRadius(self.EvaluateCenterlineRadius)
        distanceToCenterlinesFilter.SetProjectPointArrays(self.ProjectPointArrays)
        distanceToCenterlinesFilter.SetDistanceToCenterlinesArrayName(self.DistanceToCenterlinesArrayName)
        distanceToCenterlinesFilter.SetCenterlineRadiusArrayName(self.RadiusArrayName)
        distanceToCenterlinesFilter.Update()

        self.Surface = distanceToCenterlinesFilter.GetOutput()

        if self.Surface.GetSource():
            self.Surface.GetSource().UnRegisterAllOutputs()