Representation of addConnection: addConnection( (FaceA,EdgeofA), (FaceB,EdgeofB), front-front/front-back, (x,y,z), (rotationX,rotationY,rotationZ) )
Step1: user should assume FaceA is in an x-y-z coordinates with EdgeofA aligned with the x-axis in the xy plane. The connected faceB is also in the xy plane with EdgeofB aligned with the x-axis following the front-front/front-back relation.
Step2: (x,y,z) specify a vector which translates FaceA within the reference frame of FaceB.
Step3: (rotationX,rotationY,rotationZ) specify the angle of rotation in this strict order.
Sample Furniture
The reason why it is hard to go from A to B given that user's input is the instruction from B to A.