A parser and writer for the Visualization Toolkit (VTK) file formats.
This is meant to be a feature complete parser of Legacy and XML VTK file formats. Both serial and parallel XML file formats are supported.
The Legacy format parser is written using nom.
XML VTK files are import and exported with quick-xml
and serde
crates.
To use this library simply add the crate name to your Cargo.toml
file:
rust
[dependencies]
vtkio = "0.6"
Many sample files can be found in the assets
directory. For the following example, we
will load a VTK file named tet.vtk
, modify it and write it back in Legacy ASCII format.
```rust use vtkio::model::*; // import model definition of a VTK file use vtkio::{import, exportascii}; fn main() { use std::path::PathBuf; let filepath = PathBuf::from("assets/tet.vtk");
let mut vtk_file = import(&file_path)
.expect(&format!("Failed to load file: {:?}", file_path));
vtk_file.version = Version::new((4,2)); // arbitrary change
export_ascii(vtk_file, &file_path)
.expect(&format!("Failed to save file: {:?}", file_path));
} ```
There are two main features available:
xml
feature flag (enabled by default).
This allows importing and exporting VTK files in the modern XML format. If disabled, only the legacy
file format is supported, however the build is faster since it does not include additional
dependencies (serde
and quick-xml
) and code needed to parse and write XML files.compression
feature flag (enabled by default).
This flag exposes additional APIs to export and import compressed VTK files (only for XML format).
This feature has no benefit when the xml
feature is disabled.To disable the features above simply set default-features
to false
. To enable a specific feature
add it to the list under features
. For instance to disable only the compression
feature, add the
vtkio
dependency as
rust
[dependencies]
vtkio = { version = "0.6", default-features = false, features = ["xml"] }
To disable all additional features use
rust
[dependencies]
vtkio = { version = "0.6", default-features = false }
Version 0.3 of the crate supports only Legacy VTK formats. For a list of changes
introduced in the new versions of vtkio
(v0.4+) see the CHANGELOG.
This repository is licensed under either of
at your option.
Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.