# rust-zw3d **Repository Path**: rust-cad/rust-zw3d ## Basic Information - **Project Name**: rust-zw3d - **Description**: No description available - **Primary Language**: Rust - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-10 - **Last Updated**: 2025-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README rust-zw3d ========== 当前版本:Alpha(框架阶段)。仅提供基础绑定与最小封装,仍需进一步打磨与扩展,欢迎 Issue/PR(仓库:`https://gitee.com/rust-cad/rust-zw3d`)。 Rust 版 ZW3D SDK 绑定与工具集。 - 提供由 bindgen 生成的低层 `ffi` 绑定与一层轻量 `wrapper` 封装 - 提供命令与回调的注册/卸载工具,以及模块进出点宏 - 通过 feature 选择 SDK 主版本(`24`/`25`/`26`,三者互斥) 工作区结构 ----------- - `crates/rust-zw3d`:核心 crate,包含: - `ffi`:根据头文件自动生成的 FFI 绑定 - `wrapper`:少量易用封装(如 `cvxMsgDisp`、命令/回调注册) - 宏与注册工具:`register_commands!`、`register_callbacks!`、`zw3d_module!` 等 - `crates/rust-zw3d-macros`:过程宏 crate,导出属性宏 `#[cmd]`、`#[callback]` 环境准备与链接 -------------- 本项目需要能链接到 ZW3D SDK 的 `ZW3D.lib` 以及对应头文件: 1) 设置环境变量(优先): ```powershell $env:ZW3D_PATH = "C:\Path\To\SDK\lib-dir-with-ZW3D.lib" # 可选:自定义头文件目录(默认使用 $ZW3D_PATH\api\inc) $env:ZW3D_INCLUDE = "C:\Path\To\SDK\api\inc" ``` 2) 或者将 SDK 复制到仓库目录(兜底方案): - `zw3dsdk/lib/ZW3D.lib` - `zw3dsdk/inc/*.h` 构建脚本会: - 将库搜索路径指向 `ZW3D_PATH`(或兜底 `zw3dsdk/lib`) - 将头文件包含目录指向 `ZW3D_INCLUDE`(或兜底 `zw3dsdk/inc`) Feature 与版本 -------------- - `24`、`25`、`26` 三者互斥(默认启用 `26`) - `macros`:启用后在 `rust-zw3d` 中重导出 `#[cmd]`、`#[callback]` 快速上手 -------- 在你的插件 crate 中: ```toml [dependencies] rust-zw3d = { version = "0.1.0-alpha.1", features = ["26", "macros"] } ``` ```rust use rust_zw3d::*; #[cmd] // 可选参数:#[cmd("Alias")] 或 #[cmd(name = "Alias", code = ffi::VX_CODE_GENERAL)] fn hello(_code: i32) -> i32 { cvxMsgDisp("hello from rust"); 0 } #[callback] // 可选:#[callback("OnEvent")] 指定回调名 fn on_event(name: &str, a: i32, b: i32) -> i32 { cvxMsgDisp(name); 0 } // 生成模块的 Init/Exit 出口:进入时注册命令/回调,退出时卸载 zw3d_module!(myplugin); ``` 示例工程 -------- - 参见 `samples/hello`,展示了最小可用的命令与回调。 发布到 crates.io(可选) ---------------------- - 在各 crate 的 `Cargo.toml` 中补充元数据(`description`、`repository`、`readme` 等) - 确保不携带专有 SDK:通过 `.gitignore` 与 Cargo 包含/排除规则避免将 `zw3dsdk` 打包 - 本仓库使用 MIT 许可 许可 ---- MIT