# Chijin

[![GitHub License](https://img.shields.io/github/license/lzpel/chijin)](https://github.com/lzpel/chijin/blob/main/LICENSE)
[![Crates.io](https://img.shields.io/crates/v/chijin.svg?logo=rust)](https://crates.io/crates/chijin)

Minimal Rust bindings for OpenCASCADE (OCC 7.9).

Provides safe, ergonomic wrappers around the OCC C++ kernel for:
- Reading/writing STEP and BRep formats (stream-based, no temp files)
- Constructing primitive shapes (box, cylinder, half-space)
- Boolean operations (union, subtract, intersect)
- Face/edge topology traversal
- Meshing with customizable tolerance

## Usage

Add this to your `Cargo.toml`:

```toml
[dependencies]
chijin = "0.1.0"
```

## Features

- `bundled` (default): Download and build OCCT 7.9.3 from source during `cargo build`.
  The built library is installed into `target/occt/` inside the crate directory.
- `prebuilt`: Use a pre-built OCCT pointed to by the `OCCT_ROOT` environment variable.
  `OCCT_ROOT` can be any directory that contains OCCT headers and static libraries —
  including the `target/occt/` generated by a previous `bundled` build.

  ```toml
  # Cargo.toml
  chijin = { version = "0.2", features = ["prebuilt"], default-features = false }
  ```

  ```sh
  # Shell (point to the bundled build output, or any other OCCT installation)
  export OCCT_ROOT=/path/to/occt
  cargo build
  ```

## License

This project is licensed under the MIT License.
