1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//! `cad_import` is a library for loading various 3D and CAD file formats.
//!
//! The library consists of a list of loaders registered in a loader manager and an unified
//! in-memory structure to store the loaded CAD/3D-data.
//!
//! # Example
//!
//! The following code prints a list of all registered loader to the console.
//! ```rust
//! use cad_import::loader::Manager;
//!
//! fn main() {
//!     let manager = Manager::new();
//!
//!     for loader in manager.get_loader_list().iter() {
//!         let extensions: Vec<String> = loader.get_extensions_mime_type_map().keys().map(|s| s.clone()).collect();
//!         let extensions: String = extensions.join(",");
//!         let mime_types: String = loader.get_mime_types().join(",");
//!         println!(
//!             "Loader {}: Extensions=[{}], Mime-Types=[{}] ",
//!             loader.get_name(),
//!             extensions,
//!             mime_types
//!         );
//!     }
//! }
//! ```
//!
//! In order to load a specific file see the following code
//! ```rust
//! use cad_import::loader::Manager;
//! use std::{fs::File, path::Path};
//! use std::env;
//!
//! fn main() {
//!     let manager = Manager::new();
//!     let mime_type = "model/vnd.off";
//!
//!     let loader = manager.get_loader_by_mime_type(mime_type).unwrap();
//!
//!     let args: Vec<String> = env::args().collect();
//!     let args = &args[1..];
//!
//!     if args.len() != 2 {
//!       println!("USAGE: <FILE-PATH>");
//!     } else {
//!         let file_path = Path::new(&args[1]);
//!
//!         let cad_data = loader.read_file(&file_path, mime_type);
//!     }
//! }
//! ```
mod basic_types;
mod error;

pub mod loader;
pub mod structure;
pub mod exporter;

pub use basic_types::*;
pub use error::Error;