* Tangent hole contacts: every symmetric contact gives the same faces (#307) Three things made the four symmetric contacts of reference case 42 differ: - The 2D prism boolean's ray-parity test miscounted a ray grazing the bottom of a patterned hole, whose two halves are read back with centres a few ulps apart: one half counted the touch, the other missed it. The loop chaining then failed and those cuts fell back to the general boolean, which treats circles tangent within its tolerance as overlapping and splits the hole. The ray is now moved off vertices and arc extremes by far less than any modelling tolerance. - The prism result's volume check used a coarser mesh than the operands, so a plate with many holes read too large and correct results were rejected. - The merged topology did not join a hole's two pieces across the line where two tangent holes touch (four faces meet there). Case 42 now gives 39 faces (33 holes, 6 planes); its expected.json pins it. Fixes #307 Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01RjGw4gA5ZvKrU8MQP6sBgT * Kernel test: tangent hole pinch no longer splits the wall (#307) Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01RjGw4gA5ZvKrU8MQP6sBgT --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
26 lines
606 B
JSON
26 lines
606 B
JSON
{
|
|
"source": "freecad 1.1.4",
|
|
"method": "FreeCAD (OpenCASCADE) build of recipe.json by tools/freecad-oracle/build.py: Part extrude, Part extrude cut, pattern (tools transformed and re-applied), Part extrude cut, pattern (tools transformed and re-applied)",
|
|
"body_count": 1,
|
|
"volume_mm3": 38487.063633850754,
|
|
"area_mm2": 21686.603498756176,
|
|
"center_of_mass": [
|
|
-4.7262358616155635e-15,
|
|
2.1740684963431593e-15,
|
|
2.499999999999997
|
|
],
|
|
"bbox": {
|
|
"min": [
|
|
-50.0,
|
|
-50.0,
|
|
-1e-07
|
|
],
|
|
"max": [
|
|
50.0,
|
|
50.0,
|
|
5.0000001
|
|
]
|
|
},
|
|
"faces": 39
|
|
}
|