Extracting all geometry of a given material


I am building a classic complex where architectural elements are either bricks or some kind of stone and marble.

Now, I am creating walls, doors, windows etc. in the way they were built in real life, that is, with some brick (structural) elements and some stone (cladding) components.

Walls are easy to construct using layers in their Structure.

Now I want to visualize the model without the cladding, that is, showing only the bricks.

This seems simple, but its not. Walls, for example, can be “stripped” of the cladding only by activating Parts. But not all wall can be broken into parts, some are too complex and create an error in the geometry of the parts.

Also, for some reason, dividing a wall into Parts erases all Inserts and Ends wrapping, therefore it removes cladding where it was supposed to stay.

Also, inserted families cannot be broken into parts.

If I export my model to a Collada format, and then I turn off the cladding, the walls disappear, because the underlying layer structure is not exported.

So, to the questions:

  1. Is it feasible to believe there is a Dynamo way to find every face (even within system family layers) with a certain material and export all that geometry separated by material?
  2. Is there a file format that exports a Revit model in such a way that all the layer information is preserved and therefore by turning off the cladding material of a wall we can see the structural material underneath?

Thank you guys!



Did you find anything on the forum about that? This for instance?

yeah, I saw that, but basically I need to select geometry by material, not just elements.

Selecting elements and query the material is useless if I cannot find the geometry of the layers within the compound.

In Dynamo, I can split a wall into parts, or I can inspect the materials of the layers, but I cannot find a way to select and use the geometry of the layers (parts).

Also, querying the materials of parts does not seem to work…

thank you


Try this:
1)Select all walls.
2) Get the compound layer structure with the clockwork package.
3)Also get their geometry and explode it.
4) Find the exterior face of the walls
5) Offset that face by its inverted normal and the total distance of the element thicknesses until you hit brick.
6) Do the same for the interior face.
7) Remaining geometry is the bricks.

Can also attempt to subtract the interior layers using solids built from the wall layers.

May help to do this for small sections of the building instead of all at once.

Part issues aside:

  1. Create parts
  2. Select parts
  3. Get “Element.Materials” (Clockwork) and element geometry
  4. Filter parts by material
  5. Use “DirectShape.ByGeometry” to instantiate brick geometry extents