1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//! 2.5D feature recognition (lane C13 row 1).
//!
//! Recognition is kernel-free: it reads the machine-space mesh snapshot for
//! adjacency, convexity and extents, the exact analytic carriers the kernel
//! adapter reports per face ([`FaceCarrier`], `kernel_adapter::features::
//! face_carriers`), the exact planar regions of horizontal faces
//! (`kernel_adapter::planar::horizontal_faces`) and lane C8's recognised
//! holes. Every feature is reported in machine space with its machining
//! direction; a feature the setup cannot machine along `+Z` stays in the
//! result with `machinable: false` and the reason.
//!
//! Definitions (the rules the tests pin):
//! - A *floor* is a planar face. Its *walls* are the neighbours across
//! concave edges that rise along the floor's normal; *drops* are the
//! neighbours across convex edges.
//! - *Face to face*: the highest upward planar face(s) of a body.
//! - *Closed pocket*: an upward floor whose outer boundary is entirely walls;
//! *open pocket*: walls and drops; *step*: an open pocket with exactly one
//! connected wall chain; *slot*: a closed pocket whose floor outline is a
//! stadium (two parallel lines joined by two half circles).
//! - *Boss*: an island loop of a floor (the material standing on it), or an
//! upward planar face below the top whose outer boundary is entirely drops.
//! - *Chamfer*: a planar face inclined to the tool axis between a horizontal
//! face above and a steeper face below, across convex edges. *Fillet*: a
//! cylinder (any revolution with a straight generatrix parallel to its
//! axis) in the same position; a vertical concave cylinder beside a floor
//! is that pocket's corner radius instead.
//! - *Hole*: lane C8's recognition; a floor whose walls all belong to one
//! recognised hole is that hole's bottom, not a pocket.
use cratePoint3;
use ;
pub use ;
pub use TechDb;
/// The exact analytic surface of one face, in machine space.
/// A face's carrier by persistent body/face name.