Engine: the meshing commands pass the design's edge seeds to the meshers

mesh.tet.generate, mesh.hex.*, mesh.hex.blocks and mesh.cells give every
seed on the open design to their meshers, which match them to their own
curves by position, so a seed on an edge two cells share holds in both. The
tet reply gives, per seed, the mesh edges along it. Docs and the roadmap
say what is honoured where.

Fixes #230.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
jyvikoandClaude Opus 5.5 authored and Irakli Kourtis committed 2026-10-14 21:23:05 -04:00
1 parent f78680e091
commit eb66b86e26
8 files changed
+142 -15

No files matched your search

+2 -1
View File
@@ -138,10 +138,11 @@ fn cells(s: &mut Session, p: &Value) -> Result<Value> {
let (tet_options, quality) = quality_options(&tet_params, s.limits.max_tets as u64)?;
let cdt = CdtOptions { max_steiner: s.limits.max_steiner, max_tets: tet_options.max_tets };
let seeds = super::seeds::edge_seeds(s)?;
let mut meshed: Vec<(Meshed, Value)> = Vec::with_capacity(shapes.len());
for shape in shapes {
let method = methods.get(&shape.name).copied().unwrap_or(default);
let input = || super::hex::shape_input(shape, Some(tolerance));
let input = || Ok::<_, EngineError>(Input { seeds: seeds.clone(), ..super::hex::shape_input(shape, Some(tolerance))? });
let hex = |m: HexMethod| -> Result<(Input<'static>, HexMesh)> {
let b = input()?;
let mesh = hex_body(&hex_params, &b, m, quadratic, size)?;