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:
@@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
#include "vde/brep/brep.h"
|
||||
#include <vector>
|
||||
namespace vde::brep {
|
||||
[[nodiscard]] BrepModel variable_radius_blend(const BrepModel& body, int edge_id, double r_start, double r_end);
|
||||
[[nodiscard]] BrepModel multi_face_blend(const BrepModel& body, const std::vector<int>& face_ids, double radius);
|
||||
[[nodiscard]] BrepModel rolling_ball_blend(const BrepModel& body, int edge_id, double radius);
|
||||
} // namespace vde::brep
|
||||
@@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
#include "vde/brep/brep.h"
|
||||
#include "vde/brep/assembly.h"
|
||||
namespace vde::brep {
|
||||
enum class AssemblyFeatureType { BoltHole, PinSlot, WeldJoint, RivetPattern };
|
||||
struct AssemblyFeatureParams { AssemblyFeatureType type; std::vector<double> values; core::Vector3D direction{0,0,1}; };
|
||||
[[nodiscard]] Assembly apply_assembly_feature(const Assembly& assembly, const AssemblyFeatureParams& params);
|
||||
} // namespace vde::brep
|
||||
@@ -0,0 +1,10 @@
|
||||
#pragma once
|
||||
#include "vde/brep/brep.h"
|
||||
#include "vde/brep/feature_recognition.h"
|
||||
#include <vector>
|
||||
namespace vde::brep {
|
||||
[[nodiscard]] BrepModel defeature(const BrepModel& body, const std::vector<RecognizedFeature>& features);
|
||||
[[nodiscard]] BrepModel remove_holes(const BrepModel& body);
|
||||
[[nodiscard]] BrepModel remove_fillets(const BrepModel& body, double max_radius=5.0);
|
||||
[[nodiscard]] BrepModel simplify_for_meshing(const BrepModel& body, double min_feature_size=1.0);
|
||||
} // namespace vde::brep
|
||||
@@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
#include "vde/brep/brep.h"
|
||||
namespace vde::fasteners {
|
||||
[[nodiscard]] brep::BrepModel create_bolt(double diameter, double length, double thread_pitch=1.5);
|
||||
[[nodiscard]] brep::BrepModel create_nut(double diameter, double thickness=0.8);
|
||||
[[nodiscard]] brep::BrepModel create_washer(double inner_d, double outer_d, double thickness=0.1);
|
||||
[[nodiscard]] brep::BrepModel create_threaded_hole(double diameter, double depth, double pitch=1.5);
|
||||
} // namespace vde::fasteners
|
||||
@@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
#include "vde/brep/brep.h"
|
||||
#include <vector>
|
||||
#include <string>
|
||||
namespace vde::brep {
|
||||
enum class RecognizedFeatureType { Hole, Slot, Pocket, Boss, Fillet, Chamfer, Rib, Unknown };
|
||||
struct RecognizedFeature {
|
||||
RecognizedFeatureType type = RecognizedFeatureType::Unknown;
|
||||
std::vector<int> face_ids;
|
||||
std::string label;
|
||||
double radius = 0.0, depth = 0.0;
|
||||
core::Point3D center{0,0,0};
|
||||
core::Vector3D axis{0,0,1};
|
||||
};
|
||||
struct FeatureRecognitionResult {
|
||||
std::vector<RecognizedFeature> features;
|
||||
int hole_count=0, slot_count=0, pocket_count=0, boss_count=0, fillet_count=0, chamfer_count=0, rib_count=0;
|
||||
};
|
||||
[[nodiscard]] FeatureRecognitionResult recognize_features(const BrepModel& body);
|
||||
} // namespace vde::brep
|
||||
@@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
#include "vde/brep/assembly.h"
|
||||
namespace vde::brep {
|
||||
[[nodiscard]] Assembly create_flexible_assembly(const std::vector<BrepModel>& parts, const std::vector<int>& deformable_ids);
|
||||
} // namespace vde::brep
|
||||
Reference in New Issue
Block a user