mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-04 02:55:54 +00:00
After the merge: main's new tests on the SMLib kernel
- Cut To the far side of a curved wall (#8634): the tool stops past the first crossing of the face ahead of the profile; SMLib's whole bore is one face that a line crosses twice, so the single-crossing rule found none and the cut took nothing. - Clearing view analyses goes through refresh_display, as main's #10687 made the others, so an open feature editor keeps OK and Cancel after Zebra. - vi, a complete catalog on main, gets the setback-too-short message. - fillets/KNOWN_FAILING: 4782's cause is now its continuity check (SMLib f916a8d builds the expected volume). - Known failing, as main's tests assume truck: the spline wall's spans as one mesh patch, a hole touching an edge at a point leaving one body, and a copy of a copy's triangles matching a fresh mesh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SdcgEu4Lr3moCCisdZShKz
This commit is contained in:
@@ -17,6 +17,9 @@
|
||||
"ko": {
|
||||
"ui.fillet_error_setback_short": "이 코너의 패치에 비해 셋백이 너무 짧습니다. {least}부터 만들 수 있습니다. 더 긴 셋백을 시도해 보세요."
|
||||
},
|
||||
"vi": {
|
||||
"ui.fillet_error_setback_short": "Khoảng Lùi quá ngắn cho mảng của góc này: mảng được tạo từ {least} trở lên. Hãy thử khoảng Lùi dài hơn."
|
||||
},
|
||||
"zh": {
|
||||
"ui.fillet_error_setback_short": "对于此角点的面片,后退距离太短:从 {least} 起可以构建。请尝试更长的后退距离。"
|
||||
}
|
||||
|
||||
@@ -6552,8 +6552,8 @@ fn trim_to_body(tools: Vec<Traced>, target: &ModelBody, dist_to_start: impl Fn(V
|
||||
|
||||
/// For a Cut To the curved face `fi` of `target`: the height above `plane` (along its normal) at
|
||||
/// which a flat-ended tool over `regions`, travelling along `travel` × the normal (±1), stops in
|
||||
/// the gap beyond that face. Rays over the profiles must each cross the face once, with material
|
||||
/// just before it and none just after; the end is halfway across the narrowest gap to the next
|
||||
/// the gap beyond that face. Rays over the profiles must each cross the face ahead of the profile,
|
||||
/// with material just before the first such crossing and none just after; the end is halfway across the narrowest gap to the next
|
||||
/// material (at most the usual run past a curved target). `None` when that does not hold.
|
||||
fn cut_end_past_face(target: &ModelBody, fi: usize, plane: &Plane, regions: &[Region2], travel: f64) -> Option<f64> {
|
||||
let m = target.mesh();
|
||||
@@ -6599,8 +6599,9 @@ fn cut_end_past_face(target: &ModelBody, fi: usize, plane: &Plane, regions: &[Re
|
||||
return None;
|
||||
}
|
||||
}
|
||||
let on_face: Vec<usize> = (0..hits.len()).filter(|&k| hits[k].1 == fi).collect();
|
||||
let [k] = on_face[..] else { return None };
|
||||
// The first crossing of the face ahead of the profile: an exact kernel's whole cylinder is
|
||||
// one face, which a line through it crosses twice.
|
||||
let k = (0..hits.len()).filter(|&k| hits[k].1 == fi && hits[k].0 > -eps).min_by(|a, b| hits[*a].0.total_cmp(&hits[*b].0))?;
|
||||
let e = hits[k].0;
|
||||
let at = |t: f64| plane.origin + n * (travel * t) + (q - plane.origin - n * height(q));
|
||||
if !m.contains(at(e - eps * 10.0)) || m.contains(at(e + eps * 10.0)) {
|
||||
|
||||
@@ -129,7 +129,7 @@ impl Session {
|
||||
self.continuity.clear();
|
||||
}
|
||||
self.status_analysis_changed(None);
|
||||
self.revision += 1;
|
||||
self.refresh_display();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,8 +11,11 @@
|
||||
solidcraft-cli::action_matrix::action_matrix_sample 2 baseline actions fail on SMLib: 2 shells (Bad Loop Orient on issue-616-lid-ribs; status 1001 on filleted-shelled-box, shelled again open at an inner wall)
|
||||
solidcraft-cli::naming_corpus::corpus_designs_name_alike_every_build_and_fail_where_a_reference_is_gone oracle/83-boundary-loop-thicken does not load: step 8, SMLib thicken status 1001
|
||||
solidcraft-engine::cmd::file::tests::each_format_has_an_export_command_of_its_own SMLib meshes a box's planar faces into 124 triangles, not 12 (the STL is 6284 bytes, the test counts 84 + 50 x 12)
|
||||
solidcraft-engine::cmd::sketch_project::tests::intersection_curve_of_picked_faces_spans_the_whole_surface its premise fails on SMLib: the fit-point spline wall's 3 span faces are not one surface patch in SMLib's mesh (surface_patch gives 1 face, the test wants 3: truck's mesh hides those seams); the patch is taken through meeting_edges either way
|
||||
solidcraft-engine::hole_face_tests::a_hole_wider_than_the_part_says_it_removes_all_of_it a 40 mm hole at (10, 10) touches the plate's edge y = 30 at one point; SMLib parts the plate there into 2 bodies, the test wants truck's 1
|
||||
solidcraft-engine::measure_centre_tests::a_fillet_round_a_boss_reports_its_radius SMLib's round at the foot of a boss is not an analytic torus of minor radius 3, so no face of the body is (the test finds none to measure)
|
||||
solidcraft-engine::tests::fillet_fit_taper_closes_to_a_point SMLib fillet status 1001 on the taper fit (radius 16 closing to 0)
|
||||
solidcraft-engine::tests::mirror_placed::dragging_a_mirrored_part_meshes_its_copies_once a copy of a copy drawn from its first copy's triangles (#10101) is triangulated differently from SMLib's fresh mesh of it (one vertex more), where truck's meshes are the same under a rigid move
|
||||
solidcraft-engine::tests::shell_tangent_chain_that_opens_every_face_explains_how_to_keep_walls SMLib shell status 1034 on a box with all 12 edges rounded (Ball corners since 5e8c9c1), opened at one face (tangency-labs/smlib#102)
|
||||
solidcraft-kernel::blend::corner_tests::a_round_ending_in_an_earlier_round_matches_both_together SMLib fillet status 1001 on the round that ends in the earlier one
|
||||
solidcraft-kernel::blend::corner_tests::corner_blends_hold_at_any_scale at 0.01x a picked edge runs on tangentially into an unblended edge and SMLib's result is not a closed solid (the smooth-vertex End, tangency-labs/smlib#81)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
1080-fillet-sloped-basin-1-mm-rim-r4-4-edges builds to the analytic volume (rel 3e-9), but the continuity check (g1 at every blend seam) takes in the mitre's creases, G0 by the mitre ruling: the case's continuity seams need the owner's word
|
||||
2893-chamfer-distance-and-angle-past-the-wall-refused refused for another reason: SMLib SM_ERR_INVALID_INPUT, not a check saying the angle runs past the wall
|
||||
2893-chamfer-two-distances-elliptical-rim SMLib status 1001: the two arcs of the rim take their chamfer offsets each at its own midpoint, where the faces' angle differs (78.5 and 101.5 deg), and their chamfers do not meet at the tangent corners (held for the owner's ruling on unequal chamfers of a varying angle)
|
||||
4782-fillet-bar-edge-wider-than-both-faces SMLib status 1001: a convex round past both its faces is not yet built by subtraction
|
||||
4782-fillet-bar-edge-wider-than-both-faces SMLib f916a8d builds the expected volume (630.2934869 against 630.2934873) but its continuity check finds no blend seams to grade ("Box: no null seams" against ">= g1 at every blend seam")
|
||||
5158-fillet-round-just-past-a-10mm-face SMLib status 1001: the round passes 5e-6 under the box's top back edge, inside the body's tolerance (1e-5), and subtracting its removal region maps that edge to two of the region's faces (SmTopologyIntersector); 10.0001-10.04 open
|
||||
851-fillet-arc-then-top-front SMLib status 1001: the top front edge's tangent chain (the edge, the arc round's end curve on the front face, the upright under it) rounded R2; along the end curve the R2 ball sits on the arc round's own centre circle, so that piece is the ball about (39.2538, -19, 8) touching front, top and wall (a torus of tube-centre radius 0), the three-edge rolling-ball corner; the same piece on a plane end arc builds (851-fillet-top-front-then-front-left-upright)
|
||||
851-fillet-top-front-then-upright SMLib status 1001: the upright's tangent chain (the upright, the first round's end curve on the wall, the arc's top edge) rounded R2; along the end curve the R2 ball sits on the first round's axis, so that piece is the ball about (39.2538, -19, 8) touching front, top and wall (a torus of tube-centre radius 0), the three-edge rolling-ball corner; the upright alone builds, the upright with the end curve fails the same; the same piece on a plane end arc builds (851-fillet-top-front-then-front-left-upright)
|
||||
|
||||
Reference in New Issue
Block a user