读取器(Reader)
通过插件的方式添加一个新的读取器和添加滤波器基本相同。唯一的区别是不需要指明读取器需要添加到GUI上的类别。
对于ParaView的最新版本,我们不需要为GUI指定任何特殊内容,因为读取器的所有细节都可以在读取器的XML代理定义中获得。
对于ParaView版本4.0.1和更早的版本,我们需要XML来定义这个阅读器可以处理什么文件扩展名。这个XML (MyReaderGUI.xml)如下所示:
<ParaViewReaders>
<Reader name="MyPNGReader" extensions="png" file_description="My PNG Filters">
</Reader>
</ParaViewReaders>
MyPNGReader.xml文件示例如下。几乎在所有的情况下,都需要有一个SetFileName函数。你也已指定其他属性,就像滤波器插件一样。提示部分(Hints)是将文件扩展名与客户端上的阅读器关联起来所必需的。ReaderFactory提示是客户端用来从源码中标识读取器的信息。
<ServerManagerConfiguration>
<ProxyGroup name="sources">
<SourceProxy name="MyPNGReader" class="vtkMyPNGReader" label="PNGReader">
<Documentation long_help="Read a PNG file" short_help="Read a PNG file">
</Documentation>
<StringVectorProperty
name="FileName"
animateable="0"
command="SetFileName"
number_of_elements="1">
<FileListDomain name="filters"/>
<Documentation>
This property specifies the file name for the PNG reader.
</Documentation>
</StringVectorProperty>
<StringVectorProperty
name="RegistrationName"
number_of_elements="1"
default_values="MyCustomName"
command="GetRegistrationName"
panel_visibility="never"
information_only="1">
<Documentation>
This property specify the pipeline name for the reader, using the return value of 'command'.
If 'command' attributes is not specified, it uses 'default_value'.
</Documentation>
</StringVectorProperty>
<Hints>
<ReaderFactory extensions="png" file_description="PNG File Format"/>
</Hints>
</SourceProxy>
</ProxyGroup>
</ServerManagerConfiguration>
读取器的CMake代码和滤波器的基本相同。唯一区别是插件需要传递REQUIRED_ON_SERVER到paraview_add_plugin函数,因为服务器端需要将该读取器处于可用状态。
CMakeLists.txt的格式如下。其中vtkMyPNGReader.cxx是读取器的源代码,MyPNGReader.xml是服务端配置xml文件。
find_package(ParaView REQUIRED)
include(${PARAVIEW_USE_FILE})
add_paraview_plugin(MyReader "1.0"
SERVER_MANAGER_XML MyPNGReader.xml
SERVER_MANAGER_SOURCES vtkMyPNGReader.cxx
REQUIRED_ON_SERVER)
请注意,这是针对ParaView的最新版本。对于ParaView 4.0.1和更早版本,CMakeLists.txt文件需要包含GUI xml,以便将阅读器与文件扩展名相关联。代码如下:
find_package(ParaView REQUIRED)
include(${PARAVIEW_USE_FILE})
add_paraview_plugin(MyReader "1.0"
SERVER_MANAGER_XML MyPNGReader.xml
SERVER_MANAGER_SOURCES vtkMyPNGReader.cxx
GUI_RESOURCE_FILES MyReaderGUI.xml)
如果您想让您的读者正确使用文件系列,请参考 file series animation了解详情。
使用CMake生成项目并编译项目后,在ParaView中进入工具>管理插件/扩展。在Local Plugins下,单击Load New并浏览刚刚创建的共享库文件。现在,您应该可以在“打开文件”对话框的“文件类型”列表中看到新的文件类型。
输出器(Writer)
和输入器插件一样,输出器插件需要告诉ParaView它所支持的输出扩展名。对于最新版本的ParaView,该步骤是在服务器端XML文件中的Hints标签下完成:
<Hints>
<WriterFactor extensions="tif" file_description="My Tiff Files"/>
</Hints>