Add the pluggable solver API as header-only files under src/Mod/Assembly/Solver/. This is Phase 1a of the pluggable solver system (INTER_SOLVER.md). New files: - Types.h: BaseJointKind enum (24 decomposed constraint types), Transform, Part, Constraint, SolveContext, SolveResult, and supporting types. Uses standalone types (no FreeCAD dependency) for future server worker compatibility. - IKCSolver.h: Abstract solver interface with solve(), drag protocol (pre_drag/drag_step/post_drag), kinematic simulation (run_kinematic/num_frames/update_for_frame), and diagnostics. Only solve(), name(), and supported_joints() are pure virtual; all other methods have default implementations. - SolverRegistry.h: Thread-safe singleton registry for solver backends with factory-based registration and default solver selection. - CMakeLists.txt: INTERFACE library target (header-only for now). Modified: - Assembly/CMakeLists.txt: add_subdirectory(Solver) - Assembly/App/CMakeLists.txt: link KCSolve INTERFACE target
13 lines
298 B
CMake
13 lines
298 B
CMake
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
|
|
# Phase 1a: header-only INTERFACE library.
|
|
# Phase 1b will convert to SHARED when .cpp files are added.
|
|
|
|
add_library(KCSolve INTERFACE)
|
|
|
|
target_include_directories(KCSolve
|
|
INTERFACE
|
|
${CMAKE_SOURCE_DIR}/src
|
|
${CMAKE_BINARY_DIR}/src
|
|
)
|