Repository navigation
query.face_p4: wire GetLoopCrossings in SmFace::ClassifyLoops - #717
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…yLoops SmFace::ClassifyLoops still returned Unported for a target loop that crosses no seam, although SmCurveClassification::GetLoopCrossings is ported. Call it with the target loops, the face props and the bisector's classification, as upstream does; its status stays ignored. The query.face_p4 runner now also exports the face props the bisector and GetLoopCrossings read (zone tolerance, no-vertex poles, pole points, missing seam direction). Faces whose surface or loop edge curves the importer cannot reproduce exactly report inexact_geometry on both sides when ClassifyLoops may evaluate them, decided from the export as unit query.face_p3 does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@erlis, a heads-up, since this lands on site 2 from your #681 list ( Wiring
Cause: upstream's bisector runs The fix: So these 40 entries are waiting on that conversion. Are you still planning to take site 2? If so, the 40 entries can come off in your PR. If you'd rather we did it, tell us and we'll pick it up straight after this lands. 🤖 Generated with Claude Code |
…p-edit mismatches Drop the runner's inexact_geometry exclusion. Most faces the loop bisector reaches have edge curves the importer only approximates, and every one of those cases agrees except two scale-1e-3 cylinders (gen0157, gen0300). The rule could not separate those two from the rest using the inputs alone, so they become known mismatches and the rest are compared again. Now that GetLoopCrossings runs, 40 heal-path cases (heal.heal_data_p1 26, topology.brep_p1 8, topology.brep_p10 6) disagree. Upstream's bisector builds missing UV trim curves on the real B-rep: CurveOnClassify -> IntersectTSBound -> ComputeUVPoint with bOKToMakeUVTrimCurve=TRUE, after which SetUVTrimCurve resets the vertex/face gaps. The port runs that on a private copy, so the edits are lost. These cases are listed as known mismatches with a findings entry until a follow-up threads &mut Brep through ClassifyLoops. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-loop-crossings # Conflicts: # crates/difftest/known_mismatches.toml
|
@brett19 thanks for the heads-up and the One overlap: your chain goes
Either way, the first step is making 🤖 Generated with Claude Code |
|
@erlis thanks, and sorry for the slow reply. (b) is already done: #697 merged earlier today (merge d2944e9), with the One update on the count: #718 (FindVertexSector) parked 9 more cases under the same reason, so it's now 49 in We won't touch 🤖 Generated with Claude Code |
Replaces the stale
UNPORTED(intersect.curve_class_p4): SmCurveClassification::GetLoopCrossingsstub inquery/face/p4.rs(SmFace::ClassifyLoops, bisector branch) with the real call. It passes what upstream passes: the target loops, the face props and the bisector classification. The status stays ignored, andInvalidInput/NotFound(upstream undefined behaviour) andUnportedpropagate.The query.face_p4 runner now exports the face props the bisector and GetLoopCrossings read (zone tolerance, no-vertex poles, pole points, missing seam direction). Without them, 32 of the newly compared cases disagreed.
On main this stub blocked about 410 deferred cases (query.face_p4 90, topology.brep_p10 153, heal.heal_data_p1 109, topology.brep_p7 26, heal.heal_data_p3 19, topology.brep_p1 12, heal.face_props 1).
Difftest, main (CI run 40061276652) → this branch (local)
Cases still deferred now mostly stop at
SmFace::FindVertexSector(topology.face_p4). The others stop atSmEdge::GetTolerance/GetCurve(topology.edge),SmFace::PointClassify(query.face_p2) and the trimmed-surface-cache tolerance growth (surface.surface_p2).Parked so this can land
CurveOnClassify→IntersectTSBound→SmVertexuse::ComputeUVPoint(uv)withbOKToMakeUVTrimCurve=TRUEbuilds missing UV trim curves.SetUVTrimCurvethen resets the vertex/face gaps (SmEdgeuse.cpp:4537). The port runs the bisector on theb.clone()copy inquery/face/p3.rs, so those edits are lost.&mut BrepthroughClassifyLoopscomes right after this PR. It is coordinated separately because it overlaps the planned bisector work and theheal/face_props.rschanges in Propagate remaining topology and healing failures (follow-up #521) #700.plan/findings.md.🤖 Generated with Claude Code