brep_kernel/feature_pipeline/
schema.rs1use wasm_bindgen::prelude::*;
13
14pub fn feature_schema_catalogue() -> serde_json::Value {
18 serde_json::json!({
19 "version": 1,
20 "assemblyConstraints": super::assembly::constraint_schema_catalogue(),
21 "features": [
22 super::features::datum::schema(),
23 super::features::plane::schema(),
24 super::features::cube::schema(),
25 super::features::cylinder::schema(),
26 super::features::cone::schema(),
27 super::features::sphere::schema(),
28 super::features::torus::schema(),
29 super::features::pyramid::schema(),
30 super::features::nurbs_solid::schema(),
31 super::features::import3d::schema(),
32 super::features::sketch::schema(),
33 super::features::sketch3d::schema(),
34 super::features::spline::schema(),
35 super::features::waypoint::schema(),
36 super::features::helix::schema(),
37 super::features::extrude::schema(),
38 super::features::boolean::schema(),
39 super::features::fillet::schema(),
40 super::features::chamfer::schema(),
41 super::features::offset_shell::schema(),
42 super::features::offset_face::schema(),
43 super::features::push_face::schema(),
44 super::features::transform_face::schema(),
45 super::features::delete_face::schema(),
46 super::features::refit_faces::schema(),
47 super::features::thicken::schema(),
48 super::features::sheet_metal_tab::schema(),
49 super::features::sheet_metal_contour_flange::schema(),
50 super::features::sheet_metal_flange::schema(),
51 super::features::sheet_metal_hem::schema(),
52 super::features::sheet_metal_closed_corner::schema(),
53 super::features::sheet_metal_mirror::schema(),
54 super::features::sheet_metal_corner::schema_fillet(),
55 super::features::sheet_metal_corner::schema_chamfer(),
56 super::features::sheet_metal_cutout::schema(),
57 super::features::loft::schema(),
58 super::features::mirror::schema(),
59 super::features::split::schema(),
60 super::features::revolve::schema(),
61 super::features::rib::schema(),
62 super::features::sweep::schema(),
63 super::features::path_sweep::schema(),
64 super::features::hole::schema(),
65 super::features::tube::schema(),
66 super::features::transform::schema(),
67 super::features::pattern::schema(),
68 super::features::assembly_component::schema(),
69 super::features::assembly_pattern::schema()
70 ]
71 })
72}
73
74#[wasm_bindgen]
76pub fn feature_schemas_json() -> String {
77 feature_schema_catalogue().to_string()
78}
79
80pub fn feature_hidden_params(feature_type: &str, values: &serde_json::Value) -> Vec<String> {
94 let keys: Vec<&'static str> = match feature_type {
95 "H" => super::features::hole::hidden_params(values),
96 "SM.CLOSED_CORNER" => super::features::sheet_metal_closed_corner::hidden_params(values),
97 _ => Vec::new(),
98 };
99 keys.into_iter().map(str::to_owned).collect()
100}
101