C. Map of the crates
Geop is a Cargo workspace in four tiers. core/ defines what things are: math, geometry and topology; a program, the part it builds, and how it is edited. lib/ holds the algorithms two operations share, taking geometry and models. ops/ has one crate per family of operations, each with its forms, examples and tests, over the targets geop-ops-model defines. cad/ composes them, one register line per crate, and carries them to the browser and the command line. web/ is a React front end that loads the composition compiled to WebAssembly and renders its output with three.js.
The rules between the tiers are checked by scripts/check-layering.sh, and are explained in Lecture 40. This table lists every crate in the workspace’s Cargo.toml, with the reference page where there is one and the lectures that teach it.
core/: what things are
| Crate | What it is | Reference | Taught in |
|---|---|---|---|
core/geop-core-math | the interval scalar and the number trait it shares with dual numbers, linear algebra, errors, frames, rays, datums, poses, solvers | page | 4, 5, 24, 37 |
core/geop-core-geometry | NURBS curves and surfaces, their constructors, compatible curves, Coons and Gordon patches, containment and intersection | page | 6 to 16 |
core/geop-core-topology | the B-rep, building, editing and validation, wires | page | 17 to 20 |
core/geop-core-rasterize | a model as a triangle mesh, STL, debug renderings | page | 35, 42 |
core/geop-core-sketch | 2-D constraint sketches: entities, constraints as residuals, profiles, dimensions in a plane | page | 23 to 25 |
core/geop-core-program | a program, its values and the part it builds: a memo table of nodes, placed parts, the runner, the workspace and the cache | page | 2, 38 |
core/geop-core-editor | what an operation is and how it is edited, what an editor draws, exporters and inspectors, the editor over a registry | page | 39, 40 |
lib/: algorithms operations share
| Crate | What it is | Reference | Taught in |
|---|---|---|---|
lib/geop-lib-sheet | the sheets drawings and flat patterns are written on: SVG, DXF | page | 35 |
lib/geop-lib-booleans | booleans and the remesh under them, split, imprint, trim up to the next face, a step’s Combine | page | 21, 22 |
lib/geop-lib-sweep | extrude, revolve, screw, sweeps along paths, lofts, the skinned grid blends share | page | 26 to 28 |
lib/geop-lib-shell | rebuilding a solid face by face, shelling, thickening and offsetting faces | page | 30, 31 |
lib/geop-lib-fixtures | test-only steps: a solid or a datum at given coordinates; the stress sweeps’ bodies | page | 40 |
lib/geop-lib-stdlib | the standard parts, one program per family, and the store that puts them beside a workspace’s files | page | 32, 38 |
lib/geop-lib-constraints | the constraints and unknowns of a part’s state, and the solver over them | page | 37 |
ops/: one crate per family of operations
| Crate | What it is | Reference | Taught in |
|---|---|---|---|
ops/geop-ops-model | the vocabulary every operation shares: the model, sketch, datum, parameter and placed-part targets and the references into them | page | 2, 40 |
ops/geop-ops-sketch | the sketch operation, its tools, snapping and references | page | 23, 25 |
ops/geop-ops-sketch3d | the 3-D sketch operation: wires in space, paths and rails | 25 | |
ops/geop-ops-reference-geometry | the datum operation: points, axes, planes and frames from what is picked | page | 2 |
ops/geop-ops-extrude-revolve | extrude, revolve, sweep and loft | page | 26 to 28 |
ops/geop-ops-hole | holes from ISO and NPT tables, threads on straight or tapered walls, cosmetic or modelled | 32 | |
ops/geop-ops-fillet | fillets and chamfers, rolling-ball blends of tangent chains | 29 | |
ops/geop-ops-shell | the shell operation | 30 | |
ops/geop-ops-plastic | ribs, lips and grooves, drafts | 33 | |
ops/geop-ops-boolean | the boolean and split operations | page | 22, 40 |
ops/geop-ops-pattern | patterns, mirrors and moves of bodies and features; bodies scaled, tapered, twisted or bent | 32 | |
ops/geop-ops-subd | subdivision surfaces: a control cage, box modelling, its Catmull–Clark limit | 34 | |
ops/geop-ops-surface | boundary and UV surfaces, offset, thicken, knit, trim and extend | 28, 31 | |
ops/geop-ops-edit | delete a body, extract a face, project a sketch; direct edits: move, offset, replace and delete faces | 30 | |
ops/geop-ops-assembly | placing parts, mates and joints, part patterns, the joints panel, the drag tool, the settler, STL and URDF export | page | 36, 37 |
ops/geop-ops-harness | wire harnesses routed through connectors and clips | not taught | |
ops/geop-ops-step | STEP import and export, assemblies as products and occurrences; STL meshes imported as B-reps | 35 | |
ops/geop-ops-drawing | 2-D drawings: views, hidden lines, sections, dimensions, title block, parts list | 35 | |
ops/geop-ops-sheetmetal | flanges, bends, hems, cuts, the flat pattern and its DXF | 33 | |
ops/geop-ops-inspect | mass properties, measurements, interference | 19, 41 | |
ops/geop-ops-bom | bills of materials, an inspector and a CSV exporter | not taught |
cad/: composition
| Crate | What it is | Reference | Taught in |
|---|---|---|---|
cad/geop-cad-base | composition: registry, one register line per crate, the editor of all of it beside the standard parts, and the composition’s tests | page | 39 |
cad/geop-cad-web | the wasm bindings the web app loads (package geop), and the check of web/src/geop.ts against the protocol | page | 39 |
cad/geop-cad-cli | the geop command line: compile, examples, serve, open, app, mcp | page | 39 |
Outside the workspace: web/ is the React front end, vscode-extension/ the VS Code extension, homepage/ the landing page, cloudflare-functions/ the Cloudflare Pages Functions deployed with the web app, and scripts/ the release, layering and affected-test scripts.
Which page should I read?
A lecture tells you why, and a crate page tells you what is there. Reference pages cover each crate’s types and decisions in a compact form, without exercises, and do not repeat the lectures’ first principles. They were written alongside the code and are older than the lectures; if the two disagree, trust the code first and the lectures second.