Problem and Questions:
i just read through the entire thread, and i'm not clear on where to find the current/relevant pieces of the latest proposed system.
it seems one needs:
- realthunder's asm3. is the current preview, Preview 0.9.1, 2019.02.02 appropriate?
- fosselius' GUI portion. or is this in asm3?
- zolko's script/macro?
it seems, at cursory glance that the matter of having places to store text, object links, etc would be relatively straightforward with new python features. and python features make it really easy for lots of people to try things out. no compiling, no branches, no merging.
long term of course, FreeCAD should have a full constraint solver. but i agree with saso and zolko (i think), that it is not appetizing to try to work with something that clearly violates the basic rules of assembly documents.
basic rules like:
1 - assemblies should refer to, and not contain, their members. otherwise, they are just a complicated models.
2 - an assembly should not care if one of it's members is a part or an assembly (sub-assembly in the context of the first mentioned assembly). the only limitation being that an assembly cannot contain itself as a sub-assembly, at any sub-level.
3 -a clear unique identifier for the assembly, and a mechanism to to retrieve the same identifier for all members (whether simple parts or subassemblies). this is my addition to the conversation here. Don't forget BOM stuff, you actually need it to verify the 'no self containing loops' rule.
all a constraint solver does is calculate the final placement for a particular member of the assembly. it is completely separate from the data structure of the assembly. as zolko points out, the data structure itself has value even without the solver, since in 99% of real world use cases, the user can provide the placement solution. not a delta robot placement solution, but that is a separate concern.
taking it to the next extreme, an assembly document that does the three things above, but doesn't even allow repositioning is still incredibly valuable, because at least it is a database of the assembly design from which you can extract BOM, total mass, etc. no one would call that a full assembly system but still useful.
next layer: add the repositioning feature per zolko's spec, and if you have proper linking it'll pull in his LCSs, and any new features.
next layer: add a solver, and if the solver is well implemented, it'll have no problem accessing and manipulating the placement property. the existing LCSs can be easily converted into assembly constraints.
personally i would just use sketches instead of an entirely new object for LCSs, or make sketches valid as LCSs. sketches have a placement property so it is cake to slap one (from a part) on top of another (in an assembly).
the gif below is a silly thing i made for fun a long time ago. but i shows sketches controlling a 3D curve, sketches placed along that curve controlling more curves, sketches placed along those curve controlling more curves...so you can reach an arbitrary set of sketches in full 3D
a complex nested series of sketches like that at the top level of an assembly could then have parts positioned on them (through zolko's LCS system), and the possible 3D assembly complexity jumps through the roof. before we even have a solver