Dynamo to swap out Assets in a Material

We are using our Revit model to test exterior finish schemes and while Design Options are feasible I think they are also a bit of nightmare since it’s the entire exterior that’s changing, including Walls, Roofs, Fascias, Railings, Model In-Place elements…all really annoying stuff to make duplicate types of just to change the material. We’d rather not save a copy of the model per scheme either because our drawings & design will still be developing during all of this and nobody wants to redo that work once we decide on a scheme.

So I’m hoping there’s a Dynamo solution to this i’m just not sure how if its possible and havent found anything on it

The idea would be to make Generic Material types pertaining to each section of the exterior, then use dynamo swap out specific Material Assets per material. For example, we’d name one material ‘Main House Siding Material’ then our script would swap in either ‘4" Wood Panels’ or ‘6" Shiplap’ Assets.

Any help would be greatly appreciated


Swapping assets is certainly doable, but you may want to consider just having materials for each asset and setting parameter values accordingly (easier to keep a consistent use for stuff you don’t want to change), and will ensure that you have all data collected added and resolved in a cleaner way (whoops we failed to set the parameter values for the material at the same time and now it looks great but it’s from the wrong company). It’s also easier to manage the library of materials than the library of assets (IMO).

To set assets, look into the GeniusLoci package.


This is awesome! Thank you!

Do you know if it’s possible to select materials from a list rather than by Select Model Element? it would be great if I could swap multiple materials in one script (List In, List Out)

Use the Categories node to collect materials.


After poking around for a bit, I’m breaking down to ask the question. And I’ll be honest, I haven’t dug to deep, but I’m not sure what I’m looking to do is 100% possible.
When working on BIM 360 projects and dealing with materials, from time to time, some of our offices aren’t able to load custom materials that are located on a separate network. Our individual office all have access to the data. We’ve created a way by which we can path to them. And the method is working with our linked cad files. However material asset images appear to be a different animal.
Using the packages mentioned above I can get all the assets. However getting the rendered image path is proving to be difficult. All I’m looking to do is tell Revit to get all the material assets in the model, find the File Path for the png or jpg that’s used in the appearance asset and reload it from the same path. Anyone else try to do this?

Also trying to figure this one out, looking into Revit SDK now

The only option I’ve seen or gotten from Autodesk was to push all the materials used to everyone’s local C drive in the default location so they are available.
I’ve heard that as a similar solution when trying to deploy packages.

One team in our office has successfully mapped the location using Creative Cloud. Some cloud based services like Desktop Connector includes the user name in the file path because it points to documents on the C Drive. Others, like creative cloud I believe ensured that cloud locations are identical regardless of user, so the common paths can actually be used to link textures in Revit and you get cloud syncing. https://docs.microsoft.com/en-us/windows/deployment/usmt/usmt-recognized-environment-variables

I have yet to successfully map across two different partnering offices, but I feel like I am finally close to a solution with this exact same BIM 360 texture mapping issue.

I think it call comes down to approaching the entire materials mapping and rendering pipeline for Revit. We need our materials mapped properly when we go to third party apps like max, etc.

I feel First we prepare an excel/ Then utilizing Dynamo We will create materials and asset of the same name. We will also apply the fill patterns loaded in the file too. Then we Select those materials and replace the image of the asset. (Genisu Loci/Clockwork)

il soon share this script, still working to make it more stream line. If someone has a better way of automating there materials we should really start a new thread. We all need to come together to produce something that works for us. Even grasshopper has lovely workflows to work with Revit materials with the new Revit addin (Rhino Inside)

The above workflow reduces the entire material creation process. Now coming to a central location where . Wasnt the Options>Rendering>Locations utilised to allow revit to reload all textures automatically once the path is defined. ?