在Paravi中的自定义筛选器中导入日志记录

2024-10-01 17:25:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个自定义过滤器,我一直在尝试添加日志记录,但无法使其工作,Paraview GUI不断崩溃,我不知道为什么

我试过类似的东西

import vtk
import math
import numpy as np
import numpy.linalg as la

from vtkmodules.util.vtkAlgorithm import VTKPythonAlgorithmBase
from vtkmodules.vtkCommonDataModel import vtkDataSet

from paraview.util.vtkAlgorithm import smproxy, smproperty

from vtk.numpy_interface import algorithms as algs
from vtk.numpy_interface import dataset_adapter as dsa
import logging

logging.basicConfig(filename='app.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')
logging.warning('This will get logged to a file')

@smproxy.filter(label="Custom Markers Filter")
@smproperty.input(name="Input")
class CustomMarkersFilter(VTKPythonAlgorithmBase):
    def __init__(self):
        VTKPythonAlgorithmBase.__init__(self)

    def RequestData(self, request, inInfo, outInfo):
        logging.info('Requesting Data')
        inp = vtkDataSet.GetData(inInfo[0])
        dsaInp = dsa.WrapDataObject(inp)

        points = dsaInp.GetPoints()

        centers = identify_markers(points)

        M1_, M2_, M3_ = centers
        print("M1': " + str(M1_))
        print("M2': " + str(M2_))
        print("M3': " + str(M3_))

        # Create vtkPoints from markers centers
        pts = vtk.vtkPoints()
        for p in centers:
            pts.InsertNextPoint(p)

        opt = vtkDataSet.GetData(outInfo)
        dsaOpt = dsa.WrapDataObject(opt)

        opt.SetPoints(pts)

        numPts = pts.GetNumberOfPoints()

        ptIds = vtk.vtkIdList()
        ptIds.SetNumberOfIds(numPts)
        for a in range(numPts):
            ptIds.SetId(a, a)

        dsaOpt.Allocate(1)
        dsaOpt.InsertNextCell(vtk.VTK_POLY_VERTEX, ptIds)

        return 1

我还尝试在类内部初始化,但也没有成功

即使在应用程序崩溃时,有没有办法获得反馈


Tags: fromimportselfnumpyloggingasptsvtk

热门问题