Assuming you have a fixed rotating pinion moving a linear rack, this was my workaround pre-07. I simply set up an equation that calculated the pinion rotation angle based on a linear distance that I would input.
If
P = Pinion position angle
D= Linear travel of rack
RP = Pitch of rack
T = # of teeth on pinion
R = # of revolutions
Then
R = D / RP * T
That is the total number of revolutions, but all you really need is the angle (from 0 to 360) to position the pinion. So, taking this into account as well as any zero situations (i.e. D= 0), you get:
P = (((D / RP * T) + 1) – int ((D / RP * T) +1)) * 360 + .0001
The .0001 is only because solidworks will not allow you to enter 0 for an angle mate. And the int command simply rounds down to the nearest whole revolution.
So, if you set up the pinion as an angle mate (P), and the rack position as a distance mate (D), this equation will allow you to enter a linear distance while solidworks calculates a position angle for the pinion. Obviously, it could be solved the other way if that makes more sense for you.
If you want to do an animation, suppress the mates and apply a motor to the pinion or rack.
Anyway, that’s what worked for me.
Brian