Wednesday, September 12, 2007

Revit RDBLink: Enhancements to ODBC Export



One of the things that Emile Kfoury, the Sr. Product Manager for the AEC platform mentioned at the DevCamp last week was a new SDK Sample which would be available in the Revit 2008 Service Pack 2 download, called RDBLink.





A wide variety of customers continue to seem interested in the ODBC Export capabilities of Revit. This sample is an example of how you can use the API to take it even further.

Background
This tool picks up AFTER you have already exported a database to ODBC (make sure that you have a clean export from the current Revit version).

Export Enhancement
The tool creates a number of additional tables within the existing Revit database:

  • ElementLevel (relationships between elements and levels)
  • ElementPhase (relationships between elements and their created/demolished phases)
  • DoorWall (relationships between Doors and their host wall)
  • WindowWall (relationships between Windows and their host wall)
  • RoomTags (relationships between Tags, their Rooms what view they're shown)
  • Categories (full descriptions of categories, including their default material info)
  • Openings
  • LineLoadOnBeam
  • AreaLoadOnSlab

In addition, I believe more parameters are pushed into existing tables (such as shared parameters).

All in all, this puts more information into the database - which can only be a good thing for people who are trying to leverage the information from the outside.

Import Enhancement
An important distinction is that this version is also capable of pushing information BACK to Revit. While I haven't tested it extensively, it appears to push a variety of property changes which are made in the database back to their corresponding elements in Revit.

In addition, it appears that this application can create new Family Types based on added rows in the database. The code hints that even more "creation-oriented" capability could be implemented as well.

Summary

It will be interesting to see how different firms might use this - it represents another way of exposing BIM data to leverage it in other downstream processes... And the import capabilities will get people thinking about workflows that line up well with the real world (where the design iterates many, many times) - and the BIM data needs to flow in a variety of directions to be ultimately helpful.

NOTE: The Revit RDBLink is part of the 2008 SP2 SDK - so it should be available to everyone (not just ADN members, is my understanding).

12 comments:

Unknown said...

Hi,

I am Carl, New Caledonia, French South Pacific Island, RDBLink API does not work.
I use SqlServerExpress, Access 2007 and C#Express. I have always error to database connect. Are you an idea to correct this probleme .
Sorry for my english.

Matt Mason said...

Carl,
I've tried it with Access 2007, myself...

1. Did you export with the File + Export + ODBC first?

2. Can you post your specific error message?

I'm not sure how much help I can be, but I'm willing to look.

-Matt

seifert001 said...

Hi Matt,

this is André from Weimar.
I trying to get RDBLink run too.
I use mysql and access successfully with "normal" ODBC export.
With RDBLink I always get the error "The database used should be an existing db. that ever exported through Revit"
But I did open this db first :-(

What can I do?

I'm especially interested in exporting shared parameters via ODBC.

André

Matt Mason said...

Andre,

The application appears to say this if one of two things happens:

1. Any of the existing tables which it thinks should be there are not there.

2. It is unable to create the new tables which it adds.

Since you're using MySQL, you might check and see if it is a problem with any of the "existing tables". In particular, look for "Columns", which the code already indicates is illegal on SQL Server and will be "Columns1" instead.

The required columns:
"Columns",//will be "Columns1" in SQLServer
"AreaSchemes",
"AssemblyCodes",
"Constructions1",
"DesignOptions",
"Materials",
"Phases",
"ProjectInformation",
"AirTerminalTypes",
"AreaLoads",
"CaseworkTypes",
"CeilingTypes",
"ColumnTypes",
"CommunicationDeviceTypes",
"Constructions",
"CurtainPanelTypes",
"CurtainSystemTypes",
"CurtainWallMullionTypes",
"DataDeviceTypes",
"DemandFactorTypes",
"DesignOptionSets",
"DistributionSystemTypes",
"DoorTypes",
"DuctAccessoryTypes",
"DuctFittingTypes",
"DuctSystems",
"DuctTypes",
"ElectricalCircuits",
"ElectricalEquipmentTypes",
"ElectricalFixtureTypes",
"FireAlarmDeviceTypes",
"FlexDuctTypes",
"FlexPipeTypes",
"FloorTypes",
"FurnitureSystemTypes",
"FurnitureTypes",
"GenericModelTypes",
"InternalAreaLoads",
"InternalLineLoads",
"InternalPointLoads",
"Levels",
"LightingDeviceTypes",
"LightingFixtureTypes",
"LineLoads",
"MaterialQuantities",
"MechanicalEquipmentTypes",
"NurseCallDeviceTypes",
"ParkingTypes",
"PipeAccessoryTypes",
"PipeFittingTypes",
"PipeTypes",
"PipingSystems",
"PlantingTypes",
"PlumbingFixtureTypes",
"PointLoads",
"Profiles",
"PropertyLineTypes",
"RailingTypes",
"RampTypes",
"RoofTypes",
"SecurityDeviceTypes",
"SiteTypes",
"SpecialtyEquipmentTypes",
"SprinklerTypes",
"StairTypes",
"StructuralColumnTypes",
"StructuralFoundationTypes",
"StructuralFramingTypes",
"StructuralFramingTypes1",
"StructuralRebarTypes",
"StructuralStiffenerTypes",
"SwitchSystem",
"TelephoneDeviceTypes",
"TopographyTypes",
"VoltageTypes",
"WallTypes",
"WindowTypes",
"WireTypes",
"AirTerminals",
"Areas",
"Casework",
"Ceilings",
"CommunicationDevices",
"CurtainPanels",
"CurtainSystems",
"CurtainWallMullions",
"DataDevices",
"DemandFactors",
"DistributionSystems",
"Doors",
"DuctAccessories",
"DuctFittings",
"Ducts",
"ElectricalEquipment",
"ElectricalFixtures",
"FasciaTypes",
"FireAlarmDevices",
"FlexDucts",
"FlexPipes",
"Floors",
"Furniture",
"FurnitureSystems",
"GenericModels",
"GutterTypes",
"LightingDevices",
"LightingFixtures",
"MechanicalEquipment",
"NurseCallDevices",
"Parking",
"PipeAccessories",
"PipeFittings",
"Pipes",
"Planting",
"PlumbingFixtures",
"PropertyLines",
"Railings",
"Ramps",
"Roofs",
"Rooms",
"SecurityDevices",
"Site",
"SlabEdgeTypes",
"SpecialtyEquipment",
"Sprinklers",
"Stairs",
"StructuralColumns",
"StructuralFoundations",
"StructuralFraming",
"StructuralRebar",
"StructuralStiffeners",
"StructuralTrusses",
"TelephoneDevices",
"Topography",
"Voltages",
"Walls",
"WallSweeps",
"WallSweepTypes",
"Windows",
"Wires",
"Fascias",
"Gutters",
"RoomAssociations",
"RoomFromToAssociations",
"SlabEdges",

Best Regards,
Matt

seifert001 said...

Thanks for your quick reply Matt

I got 148 (German)Tables in a "clean" odbc export (you posted 144 ?)
The RDBLinks works neither with "stützen1" nor "stützen" :-(
By default the table is named "stützen".
Could it be a problem with German Revit2008 versions?

What else can I try?

André

Matt Mason said...

Andre,

Now it all makes sense to me... I didn't realize that the German version created tables with German names.

In looking at the source code, I can see that it is specifically looking for the English names of the tables (which is what I posted).

1. I'm presuming that there is not a separate German version of the tool?

2. I'm not sure what the best way is to change the behavior... Change the source code to reflect the German names? or somehow change the database so that the German tables can be addressed by English names?

Best Regards,
Matt

seifert001 said...

Matt,

thanks for your efforts.
I found an "already implemented" way to export shared parameters via ODBC.
Just add the shared parameter to the project parameters in your project.rvt too.
After that you are to delete the former table to have Ravit add the new parameter.

best regards
André

RevitRenzo said...

Hello Matt,

I try to find the download for the SDK2 with the RDBlink you mentioned. However, I can not find it on Autodesk.com. Only SDK, in which no RDBlink can be found.....

Can you help me?

Thanks Renzo

BerndE said...

hi all,
i am searching for a possibility to download the revit rdblink and couldnt found it after an intensiv google-tour. can anybody tell me the link?
many thanks
bernd

Matt Mason said...

Bernd,

I got it from Autodesk via Buzzsaw early on - but I don't know if that's still available. According to the ADN newsletter, it should be in the regular Revit 2008 SP2 installation, under the SDK folder?

http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=9262388

Best Regards,
Matt

Clete said...

Matt:

We need Reference Keynote mods. Has anyone developed a rutine to grab reference keynotes from each view on a sheet and be able to create a single division-separated legend? We'd also like to export the ref notes from the entire project to a databse. Didn't see this ability with RDBLink. Thoughts? Thank you, Clete

Ratfink said...

I have been tying to find a functioning version of the RDBlink. I know it is one of the Revit SDK samples, but I have no experience programming right now. Do you have an idea where I can find it or is there someone who send a copy of it to me?

David