CadQuery (CQ) [1] is a Python library for building of parametric 3D models. The overarching design goal is to provide a fluent API that enables the user to express the design in a natural way. CQ is based on the open source CAD kernel from OpenCascade [2] and therefore offers industry standard B-Rep modeling capabilities and allows exporting to STEP and many other formats.
With the upcoming 2.1 release [3] there many improvements coming to CQ. I will briefly summarize them but will focus on the new assembly system. The new CQ version allows the user to combine individual CQ objects into an assembly with the possibility of nesting. The individual object positions can be specified manually in terms of constraints that are solved using a numerical solver. Once an assembly is defined and all the positions specified it can be exported to STEP preserving the assembly structure or an internal OpenCascade XML format. In the I will discuss the current assembly system design, capabilities, limitations and possible future development directions.
References
[1] https://github.com/CadQuery/cadquery
[2] https://dev.opencascade.org/
[3] https://github.com/CadQuery/cadquery/releases/tag/2.1RC1