Skip to content

Commit fee7ef2

Browse files
committed
Add a shape_analysis c++ bridge
1 parent aa72e03 commit fee7ef2

File tree

4 files changed

+44
-10
lines changed

4 files changed

+44
-10
lines changed

crates/opencascade-sys/build.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,13 @@ fn main() {
4949
println!("cargo:rustc-link-lib=dylib=user32");
5050
}
5151

52-
let rust_bridges =
53-
["src/lib.rs", "src/b_rep_g_prop.rs", "src/g_prop.rs", "src/shape_upgrade.rs"];
52+
let rust_bridges = [
53+
"src/b_rep_g_prop.rs",
54+
"src/g_prop.rs",
55+
"src/lib.rs",
56+
"src/shape_analysis.rs",
57+
"src/shape_upgrade.rs",
58+
];
5459

5560
let mut build = cxx_build::bridges(rust_bridges);
5661

crates/opencascade-sys/src/lib.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
pub mod b_rep_g_prop;
22
pub mod g_prop;
3+
pub mod shape_analysis;
34
pub mod shape_upgrade;
45

56
#[cxx::bridge]
@@ -1327,13 +1328,6 @@ pub mod ffi {
13271328

13281329
// BRepTools
13291330
pub fn outer_wire(face: &TopoDS_Face) -> UniquePtr<TopoDS_Wire>;
1330-
1331-
pub fn connect_edges_to_wires(
1332-
edges: Pin<&mut HandleTopTools_HSequenceOfShape>,
1333-
tolerance: f64,
1334-
shared: bool,
1335-
wires: Pin<&mut HandleTopTools_HSequenceOfShape>,
1336-
);
13371331
}
13381332
}
13391333

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
use std::pin::Pin;
2+
3+
pub use inner::*;
4+
5+
#[cxx::bridge]
6+
mod inner {
7+
unsafe extern "C++" {
8+
include!("opencascade-sys/include/wrapper.hxx");
9+
10+
type TopoDS_Shape = crate::ffi::TopoDS_Shape;
11+
type HandleTopTools_HSequenceOfShape = crate::ffi::HandleTopTools_HSequenceOfShape;
12+
13+
#[cxx_name = "ShapeAnalysis_FreeBounds"]
14+
type FreeBounds;
15+
16+
fn connect_edges_to_wires(
17+
edges: Pin<&mut HandleTopTools_HSequenceOfShape>,
18+
tolerance: f64,
19+
shared: bool,
20+
wires: Pin<&mut HandleTopTools_HSequenceOfShape>,
21+
);
22+
}
23+
}
24+
25+
impl FreeBounds {
26+
pub fn connect_edges_to_wires(
27+
edges: Pin<&mut HandleTopTools_HSequenceOfShape>,
28+
tolerance: f64,
29+
shared: bool,
30+
wires: Pin<&mut HandleTopTools_HSequenceOfShape>,
31+
) {
32+
connect_edges_to_wires(edges, tolerance, shared, wires);
33+
}
34+
}

crates/opencascade/src/primitives/wire.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use opencascade_sys::shape_analysis::connect_edges_to_wires;
12
use std::iter::once;
23

34
use crate::{
@@ -97,7 +98,7 @@ impl Wire {
9798
EdgeConnection::Fuzzy { tolerance } => (tolerance, false),
9899
};
99100

100-
ffi::connect_edges_to_wires(edges.pin_mut(), tolerance, shared, wires.pin_mut());
101+
connect_edges_to_wires(edges.pin_mut(), tolerance, shared, wires.pin_mut());
101102

102103
let mut make_wire = ffi::BRepBuilderAPI_MakeWire_ctor();
103104

0 commit comments

Comments
 (0)