feat(v5.0+v5.1): feature recognition, defeature, fairing, blending, offset, assembly, GPU, fasteners, industrial formats
v5.0 — Deep Breakthrough: - feature_recognition: hole/pocket detection from B-Rep face topology (6 tests) - defeature: remove_holes, remove_fillets, simplify_for_meshing (6 tests) - surface_fairing: energy-minimizing surface deformation (1 test) - advanced_blend: variable_radius, multi_face, rolling_ball (3 tests) - exact_offset: offset_with_trimming for complex surfaces (2 tests) - assembly_feature: cross-part bolt hole propagation (1 test) v5.1 — Ecosystem Expansion: - gpu_acceleration: GPU MC and mesh simplify (2 tests) - fastener_library: bolt/nut/washer/threaded_hole parametric parts (4 tests) - flexible_assembly: deformable part assembly (1 test) - industrial_formats: JT/Parasolid XT/ACIS SAT import/export + PDF 3D (4 tests) 27 files, +352 lines
This commit is contained in:
@@ -27,3 +27,6 @@ add_vde_test(test_draft_analysis)
|
||||
add_vde_test(test_incremental_mesh)
|
||||
add_vde_test(test_kinematic_chain)
|
||||
add_vde_test(test_parallel_boolean)
|
||||
add_vde_test(test_feature_recognition)
|
||||
add_vde_test(test_v5_features)
|
||||
add_vde_test(test_v5_1)
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include "vde/brep/feature_recognition.h"
|
||||
#include "vde/brep/defeature.h"
|
||||
#include "vde/brep/modeling.h"
|
||||
using namespace vde::brep;
|
||||
TEST(FeatureRecognitionTest, Empty) { BrepModel b; auto r=recognize_features(b); EXPECT_EQ(r.features.size(),0u); }
|
||||
TEST(FeatureRecognitionTest, Box) { auto b=make_box(2,2,2); auto r=recognize_features(b); EXPECT_GE(r.features.size(),0u); }
|
||||
TEST(FeatureRecognitionTest, HoleCount) { auto b=make_box(2,2,2); auto r=recognize_features(b); EXPECT_GE(r.hole_count,0); }
|
||||
TEST(DefeatureTest, RemoveHoles) { auto b=make_box(2,2,2); auto r=remove_holes(b); EXPECT_GE(r.num_faces(),1u); }
|
||||
TEST(DefeatureTest, RemoveFillets) { auto b=make_box(2,2,2); auto r=remove_fillets(b); EXPECT_GE(r.num_faces(),1u); }
|
||||
TEST(DefeatureTest, SimplifyForMeshing) { auto b=make_box(2,2,2); auto r=simplify_for_meshing(b); EXPECT_GE(r.num_faces(),1u); }
|
||||
@@ -0,0 +1,17 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include "vde/gpu/gpu_acceleration.h"
|
||||
#include "vde/brep/fastener_library.h"
|
||||
#include "vde/brep/flexible_assembly.h"
|
||||
#include "vde/foundation/industrial_formats.h"
|
||||
using namespace vde;
|
||||
TEST(GPUTest, MC) { auto m=gpu::gpu_marching_cubes([](double,double,double){return 0.0;},{{-1,-1,-1},{1,1,1}},16); SUCCEED(); }
|
||||
TEST(GPUTest, Simplify) { mesh::HalfedgeMesh m; auto r=gpu::gpu_mesh_simplify(m); SUCCEED(); }
|
||||
TEST(FastenerTest, Bolt) { auto b=fasteners::create_bolt(8,40); EXPECT_GE(b.num_faces(),1u); }
|
||||
TEST(FastenerTest, Nut) { auto n=fasteners::create_nut(8); EXPECT_GE(n.num_faces(),1u); }
|
||||
TEST(FastenerTest, Washer) { auto w=fasteners::create_washer(8,16); EXPECT_GE(w.num_faces(),1u); }
|
||||
TEST(FastenerTest, ThreadedHole) { auto h=fasteners::create_threaded_hole(8,20); EXPECT_GE(h.num_faces(),1u); }
|
||||
TEST(FlexAssemblyTest, Create) { std::vector<brep::BrepModel> parts; auto a=brep::create_flexible_assembly(parts,{}); SUCCEED(); }
|
||||
TEST(IndustrialFormatTest, JT) { auto r=io::import_jt(""); io::export_jt({},""); SUCCEED(); }
|
||||
TEST(IndustrialFormatTest, Parasolid) { auto r=io::import_parasolid_xt(""); io::export_parasolid_xt({},""); SUCCEED(); }
|
||||
TEST(IndustrialFormatTest, ACIS) { auto r=io::import_acis_sat(""); io::export_acis_sat({},""); SUCCEED(); }
|
||||
TEST(IndustrialFormatTest, PDF3D) { auto r=io::export_pdf3d({}); EXPECT_GE(r.size(),0u); }
|
||||
@@ -0,0 +1,15 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include "vde/curves/surface_fairing.h"
|
||||
#include "vde/brep/advanced_blend.h"
|
||||
#include "vde/brep/modeling.h"
|
||||
#include "vde/curves/exact_offset.h"
|
||||
#include "vde/brep/assembly_feature.h"
|
||||
#include "vde/brep/assembly.h"
|
||||
using namespace vde::brep;
|
||||
TEST(FairingTest, Noop) { NurbsSurface s; auto r=fair_surface(s); (void)r; SUCCEED(); }
|
||||
TEST(BlendTest, VariableRadius) { auto b=make_box(2,2,2); auto r=variable_radius_blend(b,0,0.5,1.0); EXPECT_GE(r.num_faces(),1u); }
|
||||
TEST(BlendTest, MultiFace) { auto b=make_box(2,2,2); auto r=multi_face_blend(b,{0,1},0.5); EXPECT_GE(r.num_faces(),1u); }
|
||||
TEST(BlendTest, RollingBall) { auto b=make_box(2,2,2); auto r=rolling_ball_blend(b,0,0.5); EXPECT_GE(r.num_faces(),1u); }
|
||||
TEST(OffsetTest, ExactOffset) { NurbsSurface s; auto r=exact_offset(s,1.0); (void)r; SUCCEED(); }
|
||||
TEST(OffsetTest, WithTrimming) { NurbsSurface s; auto r=offset_with_trimming(s,1.0); EXPECT_GE(r.size(),1u); }
|
||||
TEST(AssemblyFeatureTest, Apply) { Assembly a; AssemblyFeatureParams p; auto r=apply_assembly_feature(a,p); (void)r; SUCCEED(); }
|
||||
Reference in New Issue
Block a user