Files

59 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OCCT issues
Kernel behaviour n3xd works around. Each entry says how to reproduce it, what
the app does about it and which OCCT version last showed it. Recheck them on
every kernel bump. Missing bindings are not listed here; they live in
`NOTEPAD.md`.
## `BRepFilletAPI_MakeFillet` segfaults on a fillet as wide as its wall
- **Symptom:** SIGSEGV inside the fillet build. It is a native fault, so no
exception reaches Python and the whole process dies.
- **Repro:** a 23-face part. It has a 110 × 60 × 20 mm base, a 2 mm diagonal
slab and 2 mm side walls, and already carries one r = 2 fillet. A second
r = 2 fillet on any edge bounding a 2 mm side wall crashes, for example the
wall's outer diagonal edge. r = 1 on the same edges builds. Production
project `d0260694`, 2026-10-14.
- **Workaround:** every fillet and chamfer builds in a forked child
(`app/backend/n3xd/cad/cad_pool.py`), where the fault becomes a "try a
smaller radius" error. An earlier gate built parts under 200 faces in the
server process, on the assumption that 8.0.1's `ChFi3d_Builder::StartSol()`
hardening had removed the fault class. It hadn't.
- **Last seen:** OCCT 8.0.1 (`n3xd-ocp` 8.0.1.2).
## Fillets at an exact tangent radius fail or come out invalid
- **Symptom:** at a radius that makes the blend exactly tangent to a
neighbouring face, `BRepFilletAPI_MakeFillet` either reports
`IsDone() == false` or reports success and returns a solid that
`BRepCheck_Analyzer` rejects.
- **Workaround:** retry with an imperceptibly smaller radius
(`app/backend/n3xd/cad/operations/fillet.py`).
- **Last seen:** OCCT 8.0.1.
## Tangential union along a closed curve returns an empty shape
- **Symptom:** fusing two solids that touch along a full circle (a revolved
ring exactly filling a matching hole) gives `IsDone()` and an empty compound,
which `BRepCheck_Analyzer` calls valid. Exact, fuzzy, `BOPAlgo_GlueShift`,
OBB, `CellsBuilder` and `MakerVolume` all give an empty or invalid result.
- **Workaround:** `boolean_combine` rejects the empty result, so the feature
reports `boolean_failed`. Moving the tool by 1e-4 mm before the fuse gives
the right union in both operand orders, but silently moving user geometry
was rejected as a default. The app-side opt-in idea is in
`app/NOTEPAD.md`.
- **Test:** `app/backend/tests/test_boolean.py::test_tangential_fuse_is_rejected_not_silently_emptied`
- **Last seen:** OCCT 8.0.1 (rechecked 2026-08-11).
## `BRepGProp` mass properties drift on spline-bounded shapes
- **Symptom:** with default settings, `SurfaceProperties_s` and
`VolumeProperties_s` misreport spline-bounded faces and solids, while the
geometry itself is exact. A closed Catmull-Rom region in `spline.n3xd` reads
110.64 against a true 110.01 (+0.57 %). Its extrusion reads about 1109
against 1100.1.
- **Partial workaround:** the eps overload (`SurfaceProperties_s(shape, props,
1e-6)`) fixes the area (110.01) but makes the volume worse (about 1166), so
it is not a drop-in. The app-side follow-up is in `app/NOTEPAD.md`.
- **Last seen:** OCCT 7.9 / 8.0 (not rechecked since).