Let's veer away from the Revit API for a moment and take a look at family type catalogues, since questions on those pop up regularly in connection with programming as well:
Question: Is there any API support (function) to create type catalogues?
Answer: As far as I know, there are two ways to create type catalogues, and both are programmatically accessible:
I assume you are interested in the latter?
I tried searching the Revit API help for 'catalog', and that does indeed not return any relevant results.
However, searching the various What's New in the Revit API overviews, I found the following for Revit 2014:
Because CSV files are no longer used to drive MEP fitting parameters, Revit supports a new set of APIs to manage fitting parameters through several classes:
Is this possibly what you are looking for?
So maybe what you are after is the FamilySizeTable class and all its associated methods and properties.
Response: Actually we are interested in the first item, creating a TXT file associated with the family listing the possible combinations of dimensioning parameters.
Is there a way to create this txt file using Revit API?
Answer: That case is quite trivial, as far as I know:
Simply create a TXT file with the same name as the family definition RFA, and it will be picked up automatically by Revit.
I am not aware of any specific Revit API to achieve this or support it in any way.
To create the file, you can use standard .NET functionality, or anything else you like.
Basically this approach is simply making use of the standard family definition user interface functionality.
Question: Is there any support for TXT family type catalogue files inside Revit API?
If I use one of the LoadFamily methods and there is a TXT file along with the RFA, will the type selection dialogue pop up automatically?
Is there any way to tweak or suppress this behaviour?
Answer: While there isn't any support to handle the family type catalogue TXT files using the API, I was wondering if, instead of using LoadFamily, using LoadFamilySymbol to load up the specific symbols would work for you.
Alternatively, you can also load any single type from the family, programmatically duplicate it and modify the new type's parameters as you like.
Question: I have three questions related to type catalogues:
Type##OTHER##
or Thickness##LENGTH##MILLIMETERS
.
What is the logic how that extra information is added and from where?Answer: This information is about standard end user content creation and not at all Revit API related.
Therefore, you can probably find the answers yourself by researching those topics from an end user point of view.
One place to start is obviously the related documentation on type catalogues and their syntax – by the way, interestingly enough, the same help id also applies for LT.
I think this should help with your issues #1 and #2.
Regarding #3: it is indeed possible to create a poorly defined type catalogue.
That will get some sort of warning or error when you try to load such a family.
I am not aware of any other way to check or validate via API or otherwise.
Loading a family with a type catalog displays the dialogue 'Specify Types':
The grid under the types section is driven directly from the type catalog. If the type catalog includes additional parameters that are not in the family, a warning is displayed and they are ignored.
Question: we're trying to create type catalogue in txt file for Radiator family. We were trying to define a parameter in watt units, with no success. How to define header for this parameter?
Answer: Look at page 15 of Martin Schmid's Autodesk University class handout on Creating Revit MEP Content for Engineering Coordination.
Here is a sample Exhaust Fan RFA and TXT file for you to play with.
They don't use Watts, but should give the idea if you are not already familiar with type catalogues.
Also, the families guide provides a list of the parameter types, namely, for electrical_power: watts, kilowatts, british_thermal_units_per_second, british_thermal_units_per_hour, calories_per_second, kilocalories_per_second, volt_amperes, kilovolt_amperes, horsepower.
Thus, the header definition for such a parameter would be:
[paramname]##electrical_power##watts