SolidWorks Collada Export Rigid Constraint problem

I am having a problem with the COLLADA export of SolidWorks. I am working on a importer for the COLLADA files produced by SolidWorks to 20sim (http://www.20sim.com). I am having problems with the Rigid Constraints. If, for example you create a distance mate (A 1-dimensional constraint that the distance along one axis should be fixed) between the surfaces of two cubes Solidworks maps this on the 6 DOF (3 translation DOF and 3 rotation DOF) rigid constraint in COLLADA.

If two objects have a fixed distance between them but are free to move in every other way movement is possible along the surface of cubes and rotation is possible along an axis perpendicular to the surface so that the distance does not change. So for example you get two translation DOF, X & Y. And then you would still have one rotational DOF left which would be the rotation along the Z axis.

This is not the case with the COLLADA export of SolidWorks. It creates a rigid constraint with translation along the Y&Z axis and rotation along the Z axis, which seems wrong.

Am I wrong or is the SolidWorks COLLADA export wrong?

From the two sentences I underlined, it sounds to me like you are contradicting yourself?

No, the first one says X&Y translation and Z rotation.

The second one says Z&Y translation and Z rotation

Ah… missed that details. Then I would suspect that that <asset><up_axis> element is not being used or handled correctly and there is a difference between the two apps .

The up_axis should only rotate the representation shouldn’t it?

If I understand correctly, the axis should stay the same i.e. the Y-axis remains the Y-Axis and the X-Axis remains the X-axis.

Only if you want to display objects with the right side up it would be relevant to look at the <up_axis>?