Binds the modeling core the app builds every feature out of — 93 of its 138 symbols now resolve, up from 34. New modules: GeomAbs, Geom2d, Geom, TCollection, TColgp, TColStd, GProp, BRepGProp, Bnd, BRepBndLib, Adaptor3d, BRepAdaptor, GeomLProp, GeomAPI, BRepBuilderAPI, BOPAlgo, BRepAlgoAPI, BRepPrimAPI, GC, BRepMesh; gp and BRep_Tool completed. Three structural decisions: - BRepBuilderAPI_MakeShape carries Build/Shape/Generated/Modified/IsDeleted for every maker in the binding, so the booleans, the primitives and (later) the fillet builders all answer the app's duck-typed provenance layer through ordinary virtual dispatch. History lists come back copied, so they outlive the builder. - The executing two-argument BRepAlgoAPI constructors stay unbound; operands go in through SetArguments/SetTools. Section keeps Init1/Init2, which are plain setters. BOPAlgo moved up from Inc 2 — SetGlue needs its enum. - Adaptor3d is registered although the app never imports it: every method it calls on BRepAdaptor_Curve/Surface is a virtual declared there, so binding them once on the bases leaves mod_BRepAdaptor.cpp with just constructors. Gate: tests/test_inc1_modeling.py against reference values gen_fixtures.py now records from the stock wheel — measurements, per-face area/centroid in map order, mesh counts, and the boolean history map compared exactly, since that is the substrate the app's topological naming is built on. tools/sigdiff.py compares our bound surface against stock's, because a wrong nb::init<> is silent: MakePrism's five-argument form bound OCCT's semi-infinite gp_Dir overload (gp_Dir converts from gp_Vec), producing a valid solid of the wrong shape with the flags shifted along. The fixture digest caught it; sigdiff finds the class of bug directly, and now reports only one deliberate deviation. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DfriM8XUkn7uYf5Dwe2xo6
41 lines
705 B
Plaintext
41 lines
705 B
Plaintext
# Credentials (the Gitea publish PAT lives here)
|
|
.secrets
|
|
|
|
# Python
|
|
__pycache__/
|
|
*.py[cod]
|
|
.venv/
|
|
venv/
|
|
*.egg-info/
|
|
.pytest_cache/
|
|
.ruff_cache/
|
|
|
|
# Build output — scikit-build-core drives CMake into these
|
|
build/
|
|
_skbuild/
|
|
dist/
|
|
wheelhouse/
|
|
CMakeUserPresets.json
|
|
|
|
# Compiled extension / generated stubs land in the package tree
|
|
*.so
|
|
*.dylib
|
|
*.pyd
|
|
python/OCP/*.pyi
|
|
python/n3xd_ocp/*.pyi
|
|
|
|
# Vendored or locally built OCCT (never committed; it comes from the
|
|
# builder image, and a kernel tree would dwarf this repo)
|
|
occt/build/
|
|
occt/install/
|
|
third_party/
|
|
|
|
# Editor / OS
|
|
.vscode/*
|
|
!.vscode/extensions.json
|
|
.idea/
|
|
.DS_Store
|
|
|
|
# Stray venv/lock from running uv inside this repo (it is not a uv project)
|
|
uv.lock
|