GETTING THINGS TO MOVE TOGETHER
Making families parametric makes them WAY more useful that single size blobs.
But if things have anything but a very simple shape they may end up distorted when parameters change.
For example if an object has rounded corners the radius may change in undesirable ways.
I say may, because Revit tries to predict what you want, and sometimes it gets it right. But you can't rely on Revit, which is why best practice is to be explicit.
The only way to prevent this is to definitively tell Revit what dimension you want, by placing dimensions and locking them.
This can be done whilst editing inside a form (Extrusion etc), Filled Region or Masking Region. Effectively you are putting these dimensions inside the object, so if you copy the object they still exist.
These dimensions can be associated with a parameter, and you can draw Reference Planes within objects.
However make sure you are only dimensioning between lines or Reference Planes within the object - i.e. not to Reference Planes outside of the object.
It is quite quick to create dimensions because you can turn a virtual dimension (that appears when you select something) into a real dimensions by clicking on it.
Like this corner radius.
You can also lock dimensions easily:
Select object
Click on symbol below the virtual dimension
Select the real dimension created and click on the padlock to lock it.
(Note that radius dimensions don't have a lock - but it doesn't matter, simply having a dimension locks them)
Of course you can also just draw dimensions and lock them.
The point to remember is to be sure your family will work properly, dimension and lock everything.
CONTROLLING MOVEMENT DIRECTION
When a length parameter is changed the object associated with that parameter moves - but which end moves?
Sometimes it is the wrong end.
Pining the Reference Plane you want to NOT move sometimes works.
PROBLEMS WITH ANGLES
Angular parameters rarely work. In theory you are supposed to apply angle parameters to Reference Lines as Reference Planes don't have an end to rotate about, but it (usually) just doesn't work.
Some of the problems and possible solutions:
There is an inability to lock the end of a rotating Reference Line in 2 directions.
No work around. Sometimes applying the angle parameter to something other than a Reference Line works.
When an angle parameter goes beyond a certain value the Reference Line flips 90 degrees.
Use 2 angle parameters so the value doesn't get too big.
When you make an angle parameter 90 degrees and then try to change it to another value (like 60 degrees) it breaks.
This actually only happens in the family environment. Once placed in a project it works fine. Solution is to NEVER make the angle parameter 90 degrees. Problem of course is if you want the default value to be 90 degrees - you can't do it. Make it 89 degrees instead, no-one will (probably) notice.
The best solution is to avoid angle parameters. Instead use length parameters with trigonometry formulas.
OPTIONAL INSTANCE OVERRIDE
It is possible to create a round-robin of parameters so you can control whether a type or an instance parameter is used.
Effectively you create an 'override' tickbox.
Sounds useful, but beware if you want to schedule the parameter. If you are scheduling by Type then the schedule will not be correct - it will report the wrong value for the parameters that have been overridden.
So only do it for parameters which are NOT going to be schedule. Like, as in the example below, door swing.
Create following parameters:
Override Swing - instance - switch to change to Swing Override value
Swing - type - defines default swing (and will appear in Type schedules)
Swing Applied - instance - Parameter the is applied to geometry (i.e. dimension label)
Swing Override - instance - Value used when Override Swing is ticked.
In theory Override Swing could be a type parameter, so when ticked all doors of that type become controlled via an instance value.
But I'm not sure why you would do that - why not just make Swing an instance parameter in the first place?
On the surface this method looks like a good idea, but be careful, it may confuse people as to what is going on. Especially when they try and schedule.