The developer conference in Paris went well, and Adam, Partha and I spent a nice day exploring Paris using their wonderful velib bicycle rental system. You pay just one euro for a one-day membership. It allows you to pick up and return a bicycle at any one of the city's hundreds of completely automated and networked rental points. If you return the bike within thirty minutes, it is free of charge. Beyond that time, it costs a euro or two per half hour extra.
Here are some impressions of our tour; first of all, a happy Karl Osti enjoying a smoke in Vienna airport en route from Moscow to Paris:
He can be retrieved using a dedicated CarloFilter, represented here by this smoker's cabin.
Karl, in turn, uses a MarlboroFilter.
Here are Adam and Partha using a BicycleFilter, after the first leg of rental bicycling up from Bercy along the Boulevard du Temple:
More photos are available in the Facebook album.
Meanwhile, returning to Revit, here is something I have been waiting to do for quite a while now, but new things kept cropping up. After discussing my own filtered element collector benchmarks early on in the Revit 2011 release cycle, Kevin's filtering samples and benchmarks last week, and a large number of other samples in between, I hope that we have covered everything relevant by now and the right moment has finally arrived to present a pretty extensive filtered element collector sample overview:
- My first Revit 2011 plug-in, the pipe to conduit converter.
- A very simple collector to retrieve view sheets.
- Some utility methods to filter for levels and types such as door type and a door tag type symbol.
- Retrieving newly added elements.
- Retrieving stairs on a level.
- Retrieving views.
- Retrieving family instances and their family.
- Retrieving title block symbols and instances to determine the sheet size.
- Retrieving AVF display styles with a specific name.
- Retrieving MEP elements.
- Retrieving structural elements.
- Retrieving text notes and text note types.
- Retrieving model elements, with some enhancements.
- A collector performance benchmark including several collector samples.
- Using LINQ and anonymous methods in VB.
- A RevitLookup update and retrieving all database elements.
- Why not to retrieve all database elements.
- Many examples of parameter filters.
- Parameter filter for an element name.
- Parameter filter for a shared parameter.
- Filtering for a non-native class, i.e. "an element type that exists in the API, but not in Revit's native object model".
- Resolving another non-native class issue, the Panel class in the MeasurePanelArea SDK sample.
- Filter for view and phase.
- Level filter benchmark comparing Level filter versus parameter filter versus LINQ post-processing to retrieve elements on a given level.
- XML family usage report using FamilySymbolFilter and FamilyInstanceFilter.
- Retrieving intersecting elements using collector viewId constructor, BoundingBoxIntersectsFilter and exclusion filter.
- Retrieving wall types with a specific name and walls using a specific wall type using parameter filters.
- Kevin's optimisation tips and tricks presentation.
- Kevin's filtering samples and benchmarks.
I hope this provides a useful knowledge base to enable you to solve all your element retrieval needs. Obviously, some creativity on your side will also be required.