zoukankan      html  css  js  c++  java
  • 02


    VTK6 引入了许多不兼容的变化,这其中就包括用SetInputData()和SetInputConnection()替换SetInput()方法。在先前的版本中,VTK4 引入了SetInput()方法,VTK5中引入了SetInputConnection()。

    下面举一些例子:在如下例子中,虽然我只演示了替换SetInput(),读者可以类比替换SetSource()。在例子中,读者可以搜索相应的替换方法SetSourceConnection() or SetSourceData()。

      例子1


    anotherFilter->SetInput(aFilter->GetOutput()); 变成 anotherFilter->SetInputConnection(aFilter->GetOutputPort());


    例子2

    vtkDataObject* output = aFilter->GetOutput();
    anotherFilter->SetInput(output);

    应该变成:anotherFilter->SetInputConnection(aFilter->GetOutputPort());

    例子3


    vtkPolyData *pd = vtkPolyData::New();
    aFilter->SetInput(pd);

    变成:

    vtkPolyData *pd = vtkPolyData::New();
    aFilter->SetInputData(pd);  

    例子4


    vtkDataObject* output = aFilter->GetOutput();
    aFilter->Update();
    anotherFilter->SetInput(output);

    这个该法分两种情况,如果aFilter在以后的更新流中不在被修改的话,我们可以简单的用SetInputData(不建立管道)

    vtkDataObject* output = aFilter->GetOutput();
    aFilter->Update();
    anotherFilter->SetInputData(output);

    另外一种情况就是建立管道连接。

    例子5


    void myfunction(vtkDataObject* dobj)
    {
      vtkAFilter* aFilter = vtkAFilter::New();
      aFilter->SetInput(dobj);
      aFilter->Update();
      //
    }

    对于上面这个方法需要改写,分两种情况,如果调用者传入的是myfunction(aFilter->GetOutput());,则需要传入方法的参数变成算法,如下:

    void myfunction(vtkAlgorithm* alg, int port)
    {
      vtkAFilter* aFilter = vtkAFilter::New();
      aFilter->SetInputConnection(alg->GetOutputPort(port));
      aFilter->Update();
      //
    }

    另一种情况是vtkPolyData* pd = vtkPolyData::New()myfunction(pd);则,仅仅需要替换为SetInputData()

    void myfunction(vtkDataObject* dobj)
    {
      vtkAFilter* aFilter = vtkAFilter::New();
      aFilter->SetInputData(dobj);
      aFilter->Update();
      //
    }

    例子6


    class foo
    {
      vtkDataObject* DataObject;
      void Process()
        {
        vtkAFilter* aFilter = vtkAFilter::New();
        aFilter->SetInput(this->DataObject);
        aFilter->Update();
        //
        }
    };

    这个和例子5的修改方式一样,需要决定vtkDataObject的产生式通过polydata还是algorithm。

  • 相关阅读:
    python requests 模拟登陆网站,抓取数据
    python 爬取淘宝的模特照片
    vim 和grep 正则表达式相似和区别
    python 读取文件时报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multibyte sequence
    python 正则表达式
    12个球,其中一个和其他的重量不一样,有一个天平,最多几次找出这个球
    25匹马中选出跑得最快的3匹,每次只有5匹马同时跑,最少要比赛几次
    1000瓶药水,1瓶有毒药,几只小白鼠能够找出毒药
    146 LRU Cache
    用两个int值实现读写锁
  • 原文地址:https://www.cnblogs.com/ankier/p/3166210.html
Copyright © 2011-2022 走看看