Hi Jeremy, hope you're well. For once, you post a reply that I totally disagree with.
Here's a reply that disagrees with your statements in turn.
"Family is a pure Revit concept"
"IFC knows nothing about families and never will." ???
IFC has classes derived from an IfcTypeProduct which are to all practical purposes the same as an Revit Family, and this concept is understand in various BIM software. You can read the description here. http://www.buildingsmart-tech.org/ifc/IFC4/final/html/link/ifctypeproduct.htm Note this was introduced in IFC2x which as I understand it was released circa 2000, a similar time to early development of Revit? If a family is a revit concept, I'm not sure how Bentley recognizes anything in a .rfa file http://communities.bentley.com/products/building/building_analysis___design/f/5917/t/87255 I am pretty sure that manufacturers have expressed object libraries in various forms including CAD prior to this.
Types as a concept in Revit (variations of a master parameric definition) is not typically implemented in IFC developments but hopefully this changes soon. IFC4 offers this and I am working on some object library projects that wish to utilize this.
"An IFC file can define a project, not a family."
This is again incorrect. IFC4 added a new context, the IfcProjectLibrary http://www.buildingsmart-tech.org/ifc/IFC4/final/html/link/ifcprojectlibrary.htm
This is appropriate for exchanging data in the form of object libraries and the like as per it's definition. It would not contain project and instance elements. I don't believe Revit supports this context in it's native importer or exporter.
"Therefore, if you open an IFC file, it will appear in the project view and never as a family."
This might be true at this point in time, but I would hope it might change at some point in time if Autodesk wants to support openBIM workflows.
To reply to the original question, Geometry Gym offers a 3rd party importer that does generate families and create parameters based on types in IfcProject and IfcProjectLibrary. http://geometrygym.blogspot.com.au/search/label/Revit This is primarily from the user interface, however if you require from the API then I can refactor the method slightly and provide it as a public method in the dll. An alternative would be to edit the open source importer and make it recognize these ifc concepts.
I look forward to discussing further,
Jon