Files
ViewDesignEngine/include/vde/brep/assembly_constraints.h
T

33 lines
1.0 KiB
C++
Raw Normal View History

#pragma once
#include "vde/brep/assembly.h"
#include "vde/core/point.h"
namespace vde::brep {
/// Constraint types for assembly
enum class ConstraintType {
Coincident, // Face-face coincident (align planes)
Concentric, // Cylinder-cylinder concentric (align axes)
Tangent, // Face-face tangent
Parallel, // Face-face parallel
Perpendicular,// Face-face perpendicular
Distance, // Face-face at fixed distance
Angle // Face-face at fixed angle
};
/// Apply a mate constraint between two assembly nodes
/// @param assembly Target assembly
/// @param node_a First node
/// @param node_b Second node (this one moves to satisfy constraint)
/// @param type Constraint type
/// @param value Optional value (for Distance/Angle constraints)
/// @return true if constraint applied successfully
[[nodiscard]] bool apply_constraint(
Assembly& assembly,
AssemblyNode* node_a,
AssemblyNode* node_b,
ConstraintType type,
double value = 0.0);
} // namespace vde::brep