BREP_app 0.4.0

The BREP CAD application: an eframe (egui + wgpu) host that draws the brep-render 3D engine into an egui frame — native + wasm from one codebase.
Documentation
//! The "Wire harness" workbench: routed wire runs between PORTs over a
//! network of SPLINE paths.
//!
//! Creatable set: the harness authoring geometry — `PORT` (a named connection
//! point with a direction), `SP` (a spline whose end anchors attach to ports
//! and so becomes a harness segment), plus the shared building blocks `S` /
//! `D` / `P` and `ACOMP` (a harness routes across placed components, whose
//! connector faces seat the ports). Every modeling and sheet-metal feature is
//! filtered out of the creation lists; the history stays fully editable.
//!
//! Claims the **Wire Harness** panel (the connection list — its own) AND the
//! two assembly panels, so a harness document has its components and their
//! constraints to hand. Routing is automatic — every history run re-routes the
//! connections at its tail — so there are no toolbar buttons to press.

use super::{FeatureInfo, Workbench, WorkbenchButton};

/// The Wire Harness connection panel's id (claim + registration key).
pub const PANEL_ID: &str = "wireHarness";

/// Datum / Plane / Sketch / Spline / Port / Component.
fn includes(feature: &FeatureInfo<'_>) -> bool {
    matches!(feature.type_code, "S" | "D" | "P" | "SP" | "PORT" | "ACOMP")
}

/// No extra toolbar buttons: routing happens on every run.
static BUTTONS: &[WorkbenchButton] = &[];

/// The connection panel plus the two assembly panels.
static PANELS: &[&str] = &[
    PANEL_ID,
    super::assembly::CONSTRAINTS_PANEL_ID,
    super::assembly::BOM_PANEL_ID,
];

pub static WIRE_HARNESS: Workbench = Workbench {
    id: "wireHarness",
    label: "Wire harness",
    glyph: "\u{E063}",
    includes,
    buttons: BUTTONS,
    panels: PANELS,
};