#cad #import #3d #model #scene #file-format

cad_import

一个简单的库,用于将不同格式的 CAD 数据导入到统一的内存结构中

5 个不稳定版本

0.3.1 2023 年 5 月 21 日
0.3.0 2023 年 3 月 23 日
0.2.1 2023 年 2 月 22 日
0.2.0 2023 年 2 月 22 日
0.1.0 2023 年 1 月 28 日

#1153数据结构

Download history 7/week @ 2024-03-13 2/week @ 2024-03-20 8/week @ 2024-03-27 9/week @ 2024-04-03

53 每月下载量
cad_viewer 中使用

MIT 许可证

105KB
2.5K SLoC

cad_import - 简单 CAD 导入库

一个简单的库,用于将不同格式的 CAD 数据导入到统一的内存结构中。

本库的目标是

  • 支持多种 3D 和 CAD 格式
  • 简单设计和支持
  • 在统一的内存结构中表示

支持格式

变更日志

有关更改,请参阅 变更日志


lib.rs:

cad_import 是一个用于加载各种 3D 和 CAD 文件格式的库。

该库由一个加载器管理器中注册的加载器列表和一个用于存储加载的 CAD/3D 数据的统一内存结构组成。

示例

以下代码将所有注册的加载器列表打印到控制台。

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
        );
    }
}

为了加载特定文件,请参阅以下代码

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);
    }
}

依赖项

~7MB
~138K SLoC