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。

02 - 替换SetInput方法 VTK 6.0 迁移 (2013-06-30 16:22)的更多相关文章

  1. 05 - 替换vtkDataObject中的Update方法 VTK 6.0 迁移

    VTK6 引入了许多不兼容的变.其中之一是删除vtkDataObject中所有有关管道的方法.下面讨论update方法并提供迁移现有代码的建议. Update() vtkDataObject::Upd ...

  2. 04 - 替换vtkDataObject中的GetPipelineInformation 和GetExecutive 方法 VTK 6.0 迁移

    VTK6 引入了许多不兼容的变.其中之一是删除vtkDataObject中所有有关管道的方法.其中的两个方法就是GetPipelineInformation() 和 GetExecutive().这些 ...

  3. 03 - 替换vtkDataObject中的GetProducerPort()方法 VTK 6.0 迁移

    VTK6 引入了许多不兼容的变.其中之一是删除vtkDataObject中所有有关管道的方法.其中的一个方法就是GetProducerPort(). 一般,先前使用这个方法如下例子: vtkPolyD ...

  4. 09 - 删除vtkDataObject中的ShouldIReleaseData() and ReleaseDataFlag 方法 VTK 6.0 迁移

    VTK6 引入了许多不兼容的变.其中之一是删除vtkDataObject中所有有关管道的方法.下面列出来的就是其中的一些方法: ShouldIReleaseData() SetReleaseDataF ...

  5. 11 - 改变vtkImageData中的Manipulation 方法 VTK 6.0 迁移

    VTK6 引入了许多不兼容的变.这其中就包括关于vtkImageData中元数据管理及内存分配的方法.这些方法有些直接改变了行为或者能加了额外的参数. GetScalarTypeMin() GetSc ...

  6. 10 - 删除vtkDataObject中的Update Extent方法 VTK 6.0 迁移

    VTK6 引入了许多不兼容的变.其中之一是删除vtkDataObject中所有有关管道的方法.下面列出来的就是其中的一些方法: SetUpdateExtent(int piece, int numPi ...

  7. 08 - 删除vtkDataObject中的SetWholeExtent() 方法 VTK 6.0 迁移

    VTK6 引入了许多不兼容的变.其中之一是删除vtkDataObject中所有有关管道的方法.其中之一就是SetWholeExtent().SetWholeExtent()方法先前被用来管理结构话数据 ...

  8. 07 - 删除vtkDataObject中的SetExtentTranslator 和 GetExtentTranslator方法 VTK 6.0 迁移

    VTK6 引入了许多不兼容的变.其中之一是删除vtkDataObject中所有有关管道的方法.其中的两个方法就是SetExtentTranslator() 和 GetExtentTranslator( ...

  9. 01 - 概述 VTK 6.0 迁移

    摘要 对vtk版本4和5的管道机制重新架架构的主要目的是:迁移数据对象和算法对象中的管道执行逻辑到一个新集合的类中,我们称这个集合类叫executives.分离数据和执行模型的代码后,可以双双简化修改 ...

随机推荐

  1. Best Time to Buy and Sell Stock II ——LeetCode

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  2. 计算机语言的发展(the history of computer's language)

    第一部分 计算机语言的分类: 机器语言:直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码.例如:1011011000000000,表示加法.可以直接执行. 汇编语言:汇编指令集.伪指 ...

  3. AJAX中的请求方式以及同步异步的区别

    AJAX中的请求方式以及同步异步的区别请求方式,分为GET与POST: GET 最为常见的HTTP请求,普通上网浏览页面就是GET.GET方式的参数请求直接跟在URL后,以问号开始.(JS中用wind ...

  4. Spark计算模型-RDD介绍

    在Spark集群背后,有一个非常重要的分布式数据架构,即弹性分布式数据集(Resilient Distributed DataSet,RDD),它是逻辑集中的实体,在集群中的多台集群上进行数据分区.通 ...

  5. Python学习 1 一 Python2.75的安装及环境配置教程

    Python2.75的安装及环境配置教程 Python的语法简洁,功能强大,有大量的第三方开发包(模块),非常适合初学者上手.同时Python不像java一样对内存要求非常高,适合做一些经常性的任务方 ...

  6. vmware workstation11虚拟机破解版(附安装教程) 32/64位

    http://kuai.xunlei.com/d/ru4IAALVJQBesH9U93e?p=20395 vmware workstation 11注册机是一款可以免费生成vmware11.0版本序列 ...

  7. Disposable microfluidic devices: fabrication, function, and application Gina S. Fiorini and Daniel T

    Disposable microfluidic devices: fabrication, function, and application Gina S. Fiorini and Daniel T ...

  8. Java基础知识强化26:Object类之hashCode()方法、getClass()方法

    1. Object类的hashCode()方法,如下: public  int  hashCode():返回该对象的哈希码值,这个值和地址值有关,但是不是实际地址值(哈希码值是根据实际地址值转化过来的 ...

  9. 配置Windows下编译运行C/C++过程

    1.首先确定电脑安装了VS或者VC++的IDE: 2.修改环境变量 在系统属性-高级-环境变量-用户变量中: 编辑PATH增加cl编译器的路径D:\Program Files\Microsoft Vi ...

  10. C#_串口程序_二次打包_事件响应

    using System;using System.IO.Ports;using System.Windows.Forms; namespace Dll_Serial_Comm{    public ...