I also agree on the importance of having a

robust assembly solver.

Actually I think that the solvers used in A2+ and A3/Solvespace, while being effective in many applications, probably are not well suited to handle very large assemblies. This is because they are totally based on the numerical solution of a non-linear system and it is well known that this kind of problem doesn't scale well with the number of unknowns.

The solver times could be improved trough a reduction of the number of unknowns which can be done, in example, trough the identification

of rigid clusters. Let us suppose to have a set of N 3D points which are constrained by M point to point distances.

If we are able to identify a subset of 4 points such that all the relative distances are all fixed (there are 6 of such distances), this

subset is in effect a rigid body in the 3D space and is uniquely defined by 6 DOF (degrees of freedom).

So we can remove the 6 constraints and replace the 12 DOF associated with the 4 points in the 3D space with the 6 DOF

associated with the rigid body.

The initial problem characterized by N*3 DOF and M constraints is then replaced by a smaller problem characterized by N*3-6 DOF and

M-6 constraints. This reduction can be repeated until we are able to find other rigid clusters.

As explained in this document

http://graphics.tudelft.nl/~rick/pdfs/solving.pdf, there are also other ways to reduce the number of DOF apart of rigid clusters. The author of this paper has also produced a python code (named geosolver) which is aimed to demonstrate his numerical method for the solution of a geometric constraint problem. In the past I have tried it but without success because of incompatibility issues between that code and my python environment.