mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-07 20:41:50 +00:00
743accca7a
* claim: #4031 * Triangulation: split a crossing boundary segment ourselves, never in spade's assert (#4031) A trimmed face's boundary segment that crosses a constraint already in the triangulation went to spade's add_constraint_and_split, which asserts (cdt.rs:978, `!previous_region.is_empty() || from == final_vertex`) when a split lands so near another vertex or constraint that the piece up to it is blocked. The kernel guard caught it, but the whole operation failed and a crash report was written; a STEP body imported empty or not at all (#4598, also #4293, #4478, #5068, #5229). PolyBoundary::add_constraints now adds every segment that can be added, then splits each blocked one itself: a vertex at each crossing, inserted from the crossed edge's own vertex, and the pieces between added where they can be. A segment with crowded or very many crossings, or a face with more than four blocked segments (a rim that runs back and forth across itself), leaves them out, as truck did before #1653, so the face meshes slightly off instead of not at all. Pinched faces (#1648) still split where they cross. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>