had some troubles with something similar myself a few days ago and i found it easiest to first copy the main objects rotation into a temporary variable then set the rotation to 0,0,0 create the hinges and finally rotate things back
i first tried to calculate the new up vector for the hinge but it was just to much trouble compared to this
heres parts of the code i used for getting the hinges to work on mine
self.seat=LoadModel("abstract::office_rollerchair_seat.gmf")
Rot=self.model:GetRotation(1)
self.model:SetRotation(Vec3(0,0,0))
self.joint = CreateJointHinge( self.model, self.seat,self.seat:GetPosition(1),Vec3(0,1,0))
self.model:SetRotation(Rot)
self.seat:SetRotation( self.model:GetRotation(1),1 )
self.seat:SetPosition( self.model:GetPosition(1) )