From 23ad5930fcb472213905271f296868ad1d232298 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=82=E4=B9=8B=E9=92=B3?= Date: Mon, 27 Jul 2026 12:26:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20resolve=20all=20compilation=20errors=20?= =?UTF-8?q?=E2=80=94=200=20build=20errors?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: - src/CMakeLists.txt: add tolerant_modeling.cpp to vde_brep (was missing) - tests/core/test_cam_5axis.cpp: fix curves namespace, replace curves::NurbsSurface → NurbsSurface - tests/brep/test_constraint_solver_3d.cpp: add brep_drawing.h include, replace core:: prefixes (core::Point3D→Point3D etc) - src/CMakeLists.txt: revert vde_capi SHARED→STATIC (fix PIC relocation error) Build: Docker vde-builder, 4 CPUs, 8GB, GCC 11.4 — 0 errors Test: benchmarks timeout in container (expected), core tests pass --- src/CMakeLists.txt | 3 ++- src/capi/vde_capi.cpp | 2 +- tests/brep/test_constraint_solver_3d.cpp | 15 ++++++++------- tests/core/test_cam_5axis.cpp | 5 +++-- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d0b2643..6271bf8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -218,6 +218,7 @@ add_library(vde_brep STATIC brep/assembly_lod.cpp brep/ffd_deformation.cpp brep/advanced_healing.cpp + brep/tolerant_modeling.cpp brep/sheet_metal.cpp brep/direct_modeling.cpp brep/quality_feedback.cpp @@ -280,7 +281,7 @@ if(VDE_USE_TENSORRT) endif() # ── C API ────────────────────────────────────────── -add_library(vde_capi SHARED +add_library(vde_capi STATIC capi/vde_capi.cpp ) target_include_directories(vde_capi diff --git a/src/capi/vde_capi.cpp b/src/capi/vde_capi.cpp index ec34c28..25e6f39 100644 --- a/src/capi/vde_capi.cpp +++ b/src/capi/vde_capi.cpp @@ -324,7 +324,7 @@ VdeMeshHandle vde_sdf_to_mesh(VdeHandle, VdeSdfHandle sh, int res) { auto* w = reinterpret_cast(sh); auto mcm = sdf::sdf_to_mesh(w->node, res); auto* hm = new HalfedgeMesh(); - hm->build_from_triangles(mcm.vertices, mcm.indices); + hm->build_from_triangles(mcm.vertices, mcm.triangles); return reinterpret_cast(hm); } void vde_sdf_free(VdeSdfHandle sh) { delete reinterpret_cast(sh); } diff --git a/tests/brep/test_constraint_solver_3d.cpp b/tests/brep/test_constraint_solver_3d.cpp index e72e6c4..e048a9a 100644 --- a/tests/brep/test_constraint_solver_3d.cpp +++ b/tests/brep/test_constraint_solver_3d.cpp @@ -1,6 +1,7 @@ #include #include "vde/brep/constraint_solver.h" #include "vde/brep/drawing_standards.h" +#include "vde/brep/brep_drawing.h" #include "vde/brep/modeling.h" #include "vde/core/transform.h" #include "vde/core/aabb.h" @@ -974,8 +975,8 @@ TEST(KinematicChainTest, InverseKinematicsReachable) { }; // Target at (0, 2) — reachable by 2 links of length 1 - core::Transform3D target = core::Transform3D::Identity(); - target.translation() = core::Vector3D(0.0, 2.0, 0.0); + Transform3D target = Transform3D::Identity(); + target.translation() = Vector3D(0.0, 2.0, 0.0); auto angles = solver.inverse_kinematics(assy, links, target); EXPECT_EQ(angles.size(), 2u); // Should produce 2 angles @@ -991,8 +992,8 @@ TEST(KinematicChainTest, InverseKinematicsUnreachable) { }; // Target at (0, 3) — unreachable (max reach = 2) - core::Transform3D target = core::Transform3D::Identity(); - target.translation() = core::Vector3D(0.0, 3.0, 0.0); + Transform3D target = Transform3D::Identity(); + target.translation() = Vector3D(0.0, 3.0, 0.0); auto angles = solver.inverse_kinematics(assy, links, target); EXPECT_TRUE(angles.empty()); // Unreachable @@ -1006,10 +1007,10 @@ TEST(KinematicChainTest, IsReachableCheck) { {1, 0.5, 0.0, 0.0, "l2"} }; - core::Point3D near(1.0, 0.0, 0.0); + Point3D near(1.0, 0.0, 0.0); EXPECT_TRUE(solver.is_reachable(links, near)); - core::Point3D far(10.0, 0.0, 0.0); + Point3D far(10.0, 0.0, 0.0); EXPECT_FALSE(solver.is_reachable(links, far)); } @@ -1018,7 +1019,7 @@ TEST(KinematicChainTest, DHTransformIdentity) { auto T = KinematicChainSolver::dh_transform(0.0, 0.0, 0.0, 0.0); // Not fully identity because DH includes rotation // At theta=0, should be I + translation on a=0 - core::Transform3D I = core::Transform3D::Identity(); + Transform3D I = Transform3D::Identity(); EXPECT_TRUE(T.isApprox(I, 1e-6)); } diff --git a/tests/core/test_cam_5axis.cpp b/tests/core/test_cam_5axis.cpp index 7baad96..56eb291 100644 --- a/tests/core/test_cam_5axis.cpp +++ b/tests/core/test_cam_5axis.cpp @@ -10,13 +10,14 @@ using namespace vde::core; using namespace vde::brep; +using namespace vde::curves; // =========================================================================== // 辅助函数 // =========================================================================== /// 创建一个简单的 NURBS 平面用于测试 -static curves::NurbsSurface make_test_surface() { +static NurbsSurface make_test_surface() { // 10×10 平面 (degree 1×1) std::vector> grid(2, std::vector(2)); grid[0][0] = Point3D(-5, -5, 0); @@ -26,7 +27,7 @@ static curves::NurbsSurface make_test_surface() { std::vector ku = {0, 0, 1, 1}; std::vector kv = {0, 0, 1, 1}; std::vector> w(2, std::vector(2, 1.0)); - return curves::NurbsSurface(grid, ku, kv, w, 1, 1); + return NurbsSurface(grid, ku, kv, w, 1, 1); } /// 创建一个测试用的 B-Rep 方体