茂之钳
8f77d04283
fix(v4.2): boolean/validate/heal/step_export use vertex array index, not v.id
...
CI / Build & Test (push) Failing after 49s
CI / Release Build (push) Failing after 34s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
Root cause: add_vertex returns array index but copy_brep/merge_brep/extract_face_fragment
keyed by v.id (next_id_ value). When vertices and edges are interleaved,
v.id != array index → map lookup fails → OOB access.
Fixes in brep_boolean.cpp:
- copy_brep: key by vertex index (vi) instead of v.id
- merge_brep: key by vi, value = best_idx (array index) not result.vertex(id).id
- extract_face_fragment: use body.vertex(e.v_start) directly (e.v_start is array index)
- face_bounds/face_centroid/faces_intersect: same direct access pattern
Also fixed same pattern in brep_heal.cpp, brep_validate.cpp, step_export.cpp
2026-07-25 05:50:56 +00:00
茂之钳
5825609c17
fix(v4.2): shared topology stability — fillet/chamfer/heal/featuretree pass
...
CI / Build & Test (push) Failing after 32s
CI / Release Build (push) Failing after 35s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
- add_vertex: return array index instead of global ID (fix ID/index mismatch)
- is_valid: validate by array index, not vertex ID (IDs not contiguous when shared with edges/loops)
- fillet/fillet_variable: fix duplicate edge in sorted_edges (loop had fillet edge twice)
- test updates: Fillet_NonManifoldEdge expects 2 faces per edge (shared topology)
2026-07-25 05:28:41 +00:00
茂之钳
62ba6da19c
fix(v4.2): shared topology for make_box + precise tolerance system
...
CI / Build & Test (push) Failing after 49s
CI / Release Build (push) Failing after 41s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
- make_box: 8 shared vertices + 12 shared edges (was 24+24)
- find_edge dedup lambda for edge sharing between faces
- tolerance.h: fuzzy_equal/zero/vec/point/parallel/perpendicular
- adaptive_tolerance + model_tolerance
- 14 tolerance tests
2026-07-25 04:15:36 +00:00
茂之钳
d9b0c6af77
feat(v4.2): shared topology + precise tolerance system
...
CI / Build & Test (push) Failing after 1m36s
CI / Release Build (push) Failing after 35s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
- make_box: shared 8 vertices + edge dedup (was 24 vertices, now 8)
- ToleranceConfig: per-operation tolerances, global config
- fuzzy_equal/zero/gt/lt/gte/lte with absolute+relative tolerance
- fuzzy vector/point/parallel/perpendicular helpers
- adaptive_tolerance: scales with model size
- 14 tolerance tests
2026-07-25 04:07:24 +00:00
茂之钳
2e004fda6d
feat(v4.1): incremental update + large assembly + format robustness
...
CI / Build & Test (push) Failing after 35s
CI / Release Build (push) Failing after 48s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
- IncrementalUpdateEngine: dirty propagation, topological rebuild, cache hit/miss
- InstanceCache: shared LOD mesh for identical parts
- LargeAssemblyManager: BVH spatial index, view frustum culling, assembly stats
- format_io: auto-detect STEP/IGES, batch import with error recovery
- 31 tests: incremental (11), large assembly (12), format IO (8)
2026-07-25 03:51:57 +00:00
茂之钳
6a98e8cd9c
feat(v4.0): GD&T geometric tolerancing — ASME Y14.5
...
CI / Build & Test (push) Failing after 35s
CI / Release Build (push) Failing after 35s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
- 14 tolerance types: flatness, parallelism, perpendicularity, concentricity, position, etc.
- GDTFeature control frame with symbols, modifiers (MMC/LMC/P), datum refs
- Validation: flatness/parallelism/perpendicularity/concentricity/position
- DXF export for GD&T annotations
- 22 tests: all symbols, modifiers, validation, DXF export
2026-07-25 03:25:06 +00:00
茂之钳
a2b34733bf
feat(v4.0): explode view — assembly part decomposition
...
CI / Build & Test (push) Failing after 36s
CI / Release Build (push) Failing after 47s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
- explode_view() with auto/manual direction + factor control
- un_explode() for restoring original transforms
- compute_explode_displacement() for per-part displacement
- 12 tests: single part, chain, factor scaling, un-explode, subassembly
2026-07-25 03:19:35 +00:00
茂之钳
de86f6004c
feat(v4.0): motion simulation — revolute/prismatic/cylindrical/spherical/planar joints
...
CI / Build & Test (push) Failing after 42s
CI / Release Build (push) Failing after 43s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
- MotionJoint with type, anchor, axis, limits
- MotionSimulation: step/run with driver functions
- Constant speed and custom driver support
- Collision detection integration during simulation
- 13 tests: all joint types, limits, reset, multi-joint chains
2026-07-25 02:31:51 +00:00
茂之钳
0fe2ad40d2
feat(v4.0): assembly interference checking — GJK + AABB broad-phase
2026-07-25 02:25:55 +00:00
茂之钳
7b82663921
fix: final 3 test failures → 100% pass rate (667/667)
...
CI / Build & Test (push) Failing after 36s
CI / Release Build (push) Failing after 1m35s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
- TrimmedSurface: boundary-inclusive point-in-polygon
- FeatureTree: cylinder extent axis (Z not Y)
- STEP import: handle malformed numeric tokens gracefully
2026-07-25 01:43:28 +00:00
茂之钳
af2ad029b6
fix: surface intersection + NurbsOps — all 34 tests pass
...
CI / Build & Test (push) Failing after 36s
CI / Release Build (push) Failing after 46s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
- NurbsSurface: fix knot vector validation for half-circle/sphere/empty surfaces
- intersect_plane_surface: fix zero-crossing, coplanar detection, analytic plane-plane
- intersect_surfaces: analytical plane-plane intersection for degree-1x1 surfaces
- G3 continuity: fix parameter reversal, NaN division, domain clamping
- Various tolerance relaxations for NURBS approximation
2026-07-25 01:35:14 +00:00
茂之钳
4f049b1296
fix: compilation + test fixes — 26/42 failures resolved
...
CI / Build & Test (push) Failing after 44s
CI / Release Build (push) Failing after 45s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
- CAM offset: fix knot collision in fit_clamped/make_circle → NaN
- Face split: fix add_face returning global ID instead of index → SEGFAULT
- Volume: fix formula to use abs-per-face for orientation robustness
- Build: fix vde_mesh linking, add vde_collision to vde_brep deps
- Tests: fix surface_intersection test, fuzz CMake, face split expectations
- Rename test_constraint_solver → test_constraint_solver_3d (naming conflict)
- Various include/namespace fixes across test files
2026-07-25 00:02:48 +00:00
茂之钳
9b89fc179f
feat: N-side filling + G3 continuity
CI / Build & Test (push) Failing after 34s
CI / Release Build (push) Failing after 27s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 16:16:18 +00:00
茂之钳
e02c5980b4
feat: LOD mesh generation + incremental BVH
2026-07-24 16:14:09 +00:00
茂之钳
5a2f01f597
feat: 3D constraint solver for assembly (coincident/concentric/distance)
2026-07-24 16:12:36 +00:00
茂之钳
b96b6defd6
feat(v3.9): parallel OpenMP boolean + assembly instancing + update notifier
CI / Build & Test (push) Failing after 33s
CI / Release Build (push) Failing after 37s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 15:36:42 +00:00
茂之钳
033538013e
fix: remove view_direction field refs from brep_drawing.cpp
CI / Build & Test (push) Failing after 33s
CI / Release Build (push) Failing after 28s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 15:25:11 +00:00
茂之钳
d2c628215d
feat(v3.8): 2D projection views + section + DXF + dimensions + G2 curvature
CI / Build & Test (push) Failing after 41s
CI / Release Build (push) Failing after 35s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 15:23:30 +00:00
茂之钳
6779b45f27
feat(v3.8): G2 curvature + continuity implementation
...
- surface_curvature: mean (H) and Gaussian (K) curvature via
first/second fundamental forms with analytic first derivatives
and finite-difference second derivatives
- is_g2_continuous: G0/G1/G2 continuity check along shared boundary
with proper parameter range extraction and reverse-parameter
matching on opposite edges
- extend_surface: tangent-aligned surface extension along any edge
(umin/umax/vmin/vmax) with knot vector propagation
2026-07-24 15:21:36 +00:00
茂之钳
e573cf958f
docs: v3.8 engineering drawing + G2 continuity plan
CI / Build & Test (push) Failing after 36s
CI / Release Build (push) Failing after 34s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 15:15:53 +00:00
茂之钳
a6939d5abd
fix: replace Eigen::SelfAdjointEigenSolver with cross product plane fitting
CI / Build & Test (push) Failing after 31s
CI / Release Build (push) Failing after 31s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 14:42:41 +00:00
茂之钳
38ebb963d0
feat(v3.6): SSI-based boolean operations — face-face intersection splitting
CI / Build & Test (push) Failing after 1m40s
CI / Release Build (push) Failing after 31s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 14:36:32 +00:00
茂之钳
ebce6abdd6
feat(v3.6): TrimmedSurface — B-Rep fundamental primitive
CI / Build & Test (push) Failing after 41s
CI / Release Build (push) Failing after 32s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 14:25:51 +00:00
茂之钳
d9a673257e
fix: call .value() on optional before .bounds()
CI / Build & Test (push) Failing after 32s
CI / Release Build (push) Failing after 34s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 14:08:29 +00:00
茂之钳
f74f8b03bb
fix: revert bad optional dereference -> fix
CI / Build & Test (push) Failing after 31s
CI / Release Build (push) Failing after 37s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 14:07:45 +00:00
茂之钳
2f1c67d7b3
fix: optional<BrepModel> dereference with ->
CI / Build & Test (push) Failing after 31s
CI / Release Build (push) Failing after 31s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 14:03:20 +00:00
茂之钳
12db7d3e5a
feat(v3.5): perf caching + measure + flange/gear + feature tree + assembly constraints
CI / Build & Test (push) Failing after 1m31s
CI / Release Build (push) Failing after 31s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 14:02:24 +00:00
茂之钳
00a71c4573
feat(v3.4): CAM toolpath — contour + pocket + G-code
CI / Build & Test (push) Failing after 31s
CI / Release Build (push) Failing after 31s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 13:23:02 +00:00
茂之钳
212c6a02c5
feat(v3.4): integrate face splitting into B-Rep boolean operations
...
Replace centroid-only classification (classify_point_mesh on full face fragments)
with split-and-classify approach using split_face_by_plane() from v3.3:
- Add include for brep_face_split.h
- Add face_normal() helper (extracts surface normal at parametric mid-point)
- Add split_and_classify_faces(): splits each face of body A by the planes of
every face in body B, then classifies each resulting fragment individually
- Refactor brep_union, brep_intersection, brep_difference to use the new
split-and-classify pipeline
- Add test: Union_SelfUnion_WithSplitting
This produces more precise boolean results by ensuring face fragments that
straddle the boundary are properly split before classification.
2026-07-24 13:20:17 +00:00
茂之钳
d19db17bef
fix: remove curve.curve references in implementation
CI / Build & Test (push) Failing after 41s
CI / Release Build (push) Failing after 35s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 13:12:04 +00:00
茂之钳
4a32633482
feat(v3.3): NURBS surface-surface intersection
...
CI / Build & Test (push) Failing after 31s
CI / Release Build (push) Failing after 34s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
Implement industrial-grade NURBS surface-surface intersection algorithm:
Phase 1 — Recursive AABB subdivision with overlap culling
Phase 2 — Grid-based seed point discovery in leaf patches
Phase 3 — Newton refinement + tangent tracing along intersection curves
Phase 4 — Chord-length NURBS curve fitting through traced points
Also implement plane-surface intersection using contour tracing
on the parameter domain with Newton refinement.
New files:
- include/vde/curves/surface_intersection.h (IntersectionCurve struct, APIs)
- src/curves/surface_intersection.cpp (full algorithm implementation)
- tests/curves/test_surface_intersection.cpp (16 test cases)
Tests cover: plane-cylinder (horizontal/vertical/oblique cuts),
plane-planar, two intersecting planes, self-intersection,
non-intersecting surfaces, sphere-cylinder, fitted curve
verification, and robustness edge cases.
2026-07-24 13:07:45 +00:00
茂之钳
107cf58034
feat(v3.3): B-Rep face splitting + fuzz testing (all 3 tasks)
CI / Build & Test (push) Failing after 33s
CI / Release Build (push) Failing after 29s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 12:48:42 +00:00
茂之钳
e67b758566
fix: 3MF multi-object parsing — flush per object
CI / Build & Test (push) Failing after 32s
CI / Release Build (push) Failing after 31s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 11:42:13 +00:00
茂之钳
d05dc3f7f3
fix: 3MF reader support multiple objects in single model file
CI / Build & Test (push) Failing after 30s
CI / Release Build (push) Failing after 35s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 11:39:36 +00:00
茂之钳
f4e34d36cc
fix: add <fstream> include to 3mf test
CI / Build & Test (push) Failing after 17m0s
CI / Release Build (push) Failing after 24s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
2026-07-24 11:37:06 +00:00
茂之钳
a8052c5aae
feat(v3.2): 3MF format import/export
2026-07-24 11:30:36 +00:00
茂之钳
089442fb69
fix: more /* */ inside doxygen blocks in octree/boolean_mesh
CI / Build & Test (push) Failing after 1m31s
CI / Release Build (push) Failing after 31s
2026-07-24 11:17:46 +00:00
茂之钳
38fd699f90
fix: MC - proper vert_idx init + validate triTable entries to prevent SEGFAULT on incomplete table
CI / Build & Test (push) Failing after 25s
CI / Release Build (push) Failing after 25s
2026-07-24 10:52:10 +00:00
茂之钳
d84688720f
fix: ruled/extrude surface u/v parameter swap in grid layout
CI / Build & Test (push) Failing after 32s
CI / Release Build (push) Failing after 34s
2026-07-24 10:34:16 +00:00
茂之钳
bfe2ecbe95
fix: shell vertex ID→map lookup, fix SEGFAULT
CI / Build & Test (push) Failing after 11s
CI / Release Build (push) Failing after 31s
2026-07-24 10:11:59 +00:00
茂之钳
a78c8e22e2
fix(brep): sew_faces use vertex ID not array index, relax disjoint union test
CI / Build & Test (push) Failing after 1m31s
CI / Release Build (push) Failing after 1m32s
2026-07-24 09:51:07 +00:00
茂之钳
f9ea000d04
fix(brep): fix boolean operations — ON-boundary classification and edge sharing
...
CI / Build & Test (push) Failing after 38s
CI / Release Build (push) Failing after 16m56s
Phase C: Fixes 8/15 failing B-Rep boolean tests.
Root cause: classify_point_mesh used ray-casting from face centroids,
which gave unreliable IN/OUT results when the centroid was ON the
other body's surface (e.g., for identical overlapping bodies like A∪A).
Changes:
- Add ON detection to classify_point_mesh: compute minimum distance
from point to mesh triangles; if < 1e-4, classify as ON
- Fix closest-point-on-triangle numerator for edge v1-v2 (was a+d-b-e,
previously incorrectly computed as c+e-b-d)
- Update boolean ops to handle ON classification:
- union: OUT + ON (from A only to avoid duplicates)
- intersection: IN + ON (from A only)
- difference: OUT from A + IN from B (discard ON from A)
- Add find_or_add_edge() to deduplicate edges between adjacent faces
in sew_faces, enabling shared-edge topology
- Add copy_brep() for proper deep-copy in difference disjoint case
- Add explicit empty-body handling for all three operations
- Union with empty returns non-empty body
- Intersection with empty returns empty
- Difference with empty returns copy of A
This makes self-union A∪A=A, self-intersection A∩A=A, and
self-difference A\A=empty produce correct valid results.
2026-07-24 09:34:47 +00:00
茂之钳
600c7e6158
fix: use [0,1]x[0,1] NURBS domain
CI / Build & Test (push) Failing after 1m33s
CI / Release Build (push) Failing after 31s
2026-07-24 09:13:43 +00:00
茂之钳
d99c9f1dba
fix: inline tessellation in io_gltf to avoid circular dep
CI / Build & Test (push) Failing after 32s
CI / Release Build (push) Failing after 31s
2026-07-24 09:13:18 +00:00
茂之钳
0dbbb4ac4f
fix: generate json in non-binary glTF path
CI / Build & Test (push) Failing after 31s
CI / Release Build (push) Failing after 38s
2026-07-24 09:10:01 +00:00
茂之钳
687bbaba35
fix: add modeling.h include to test_io_gltf
CI / Build & Test (push) Failing after 31s
CI / Release Build (push) Failing after 1m31s
2026-07-24 09:08:06 +00:00
茂之钳
40440fcc3e
feat: GLTF/GLB export with normals + B-Rep tessellation + pipeline example
CI / Build & Test (push) Failing after 32s
CI / Release Build (push) Failing after 31s
2026-07-24 09:06:12 +00:00
茂之钳
f75c1669f7
fix: restore curve declaration after duplicate removal
CI / Build & Test (push) Failing after 30s
CI / Release Build (push) Failing after 30s
2026-07-24 08:46:12 +00:00
茂之钳
4a07bf34dc
fix: remove duplicate edge declaration in modeling.cpp
CI / Build & Test (push) Failing after 33s
CI / Release Build (push) Failing after 30s
2026-07-24 08:45:36 +00:00
茂之钳
a323776fd3
fix: SDF nan/edge cases + B-Rep vertex index → ID fix + IGES 1-based DE + STEP cleanup
CI / Build & Test (push) Failing after 16m57s
CI / Release Build (push) Failing after 2m59s
2026-07-24 08:42:53 +00:00