Would maybe a FreeCAD assembly ^[3]^ be what you're looking for? Here is an example tutorial on making an assembly ^[1]^. You can also animate an assembly ^[2][3.1]^.
References
- Type: Video. Title: "FreeCAD 1.0 Assembly in 30 minutes Beginners Crash Course / Tutorial 2025". Author: "MangoJelly Solutions for FreeCAD". Publisher: ["YouTube". "MangoJelly Solutions for FreeCAD"]. Published: 2025-01-29T13:37:36Z. Accessed: 2025-09-18T07:54Z. URI: https://www.youtube.com/watch?v=p2yDGlv5wI0.
- Type: Post (Comment). Author: "Workshop_Notes". Publisher: [Type: Post. Title: "FreeCAD 1.0 Assembly workbench joint variables". Author: "zultron". Publisher: "FreeCAD". Published: 2024-11-30T19:32:15+00:00. URI: https://forum.freecad.org/viewtopic.php?t=92562.]. Published: 2024-12-01T09:32:38+00:00. Accessed: 2025-09-18T08:03Z. URI: https://forum.freecad.org/viewtopic.php?p=794940#p794940.
- Type: Text. Location: ¶2.
[…]They all use Python to animate the assembly.[…]
- Type: Text. Location: ¶2.
- Type: Article. Title: "Assembly Workbench". Publisher: "FreeCAD". Accessed: 2025-09-18T08:05Z. Published: 2025-08-17T18:19. URI: https://wiki.freecad.org/Assembly_Workbench.
- Type: Article. Location: §"Example crank and slider">§"Drive the crank". URI: https://wiki.freecad.org/Assembly_Workbench#Drive_the_crank.