3.1 KiB
3.1 KiB
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'sChFi3d_Builder::StartSol()hardening had removed the fault class. It hadn't. - Last seen: OCCT 8.0.1 (
n3xd-ocp8.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_MakeFilleteither reportsIsDone() == falseor reports success and returns a solid thatBRepCheck_Analyzerrejects. - 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, whichBRepCheck_Analyzercalls valid. Exact, fuzzy,BOPAlgo_GlueShift, OBB,CellsBuilderandMakerVolumeall give an empty or invalid result. - Workaround:
boolean_combinerejects the empty result, so the feature reportsboolean_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 inapp/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_sandVolumeProperties_smisreport spline-bounded faces and solids, while the geometry itself is exact. A closed Catmull-Rom region inspline.n3xdreads 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 inapp/NOTEPAD.md. - Last seen: OCCT 7.9 / 8.0 (not rechecked since).