How to get revit objects without material?

I needed to bring Revit models, but it’s all from all kinds of different places. Each blocks inside blocks have materials, including a lot of duplicates that are made as different materials.

What should I add to this definition to strip all materials? I tried to brick everything in first then delete materials from Rhino material list, but there are more than thousands. It just crashes Rhino.


Hmm, note that this is the opposite of what most people request.

One way would be to use the Element View Geometry component, this removes the nesting aspect and returns the geometry seen in the view.

Ideally you want to keep materials from Revit. But when it adds thousands of random materials (and duplicates) because it’s from all kinds of different vendors, you definitely don’t want that.

I think I matched your definition (it’s a little hard for me to know what icons are if it doesn’t say what it is), but it looks like it does the same thing that I already use for simply exporting from Revit to Rhino, shown below in the screenshot.

Both export objects as individual objects without materials (as opposed to blocks), but it’s not ideal when you need to bring a lot of equipment as each blocks. Is there no way to use the category import but add some sort of function not to include materials?

Please consider this workflow in Rhino.

  1. Bake all Revit Elements to Rhino (they come in as blocks w/ materials)
  2. Edit all Blocks/Layers to Replace Materials
  3. Purge the Rhino file.

R8-Material-Override.gh (15.7 KB)

@Japhy, Thank you so much for all your help.
I tried to somehow edit this definition, but I failed.

The problem is all these blocks now have inside objects material set to Default. If I want change all kitchen equipment blocks to certain a certain material, I have to open every single block to apply the material.

I thought I could bring the blocks in a new Rhino file and modify the default material to something else, but it still keeps the default material.

If there’s any way to make all objects inside blocks set to “use layer material” or “use object parent”, that will be amazing.

Certainly.


R8-ChangeBlockContentsToMaterialByLayer.gh (9.3 KB)

Thank you so much. It worked, and everything inside blocks are now set for layer material.
In your screenshot, there’s “Source” showing by layer, object, and parent. I thought somehow I’d use 1,2, or 3 to use which one. However, the downloaded definition doesn’t show that (the left in the screenshot ). Probably you didn’t explain because it was obvious, but would you mind spelling it out for me, please? How I would change it to by parent, or by object?

You had it, if note the data type required in the input you can go from there. (integer, the 7 icon next to the green dot)

Here i made a Value List with those values


image
R8-ValueList.gh (7.1 KB)

1 Like

Thank you so much again. I’m still not quite understanding it, but fiddling with the new and old definitions from you, I got it to work by only connecting Value List to Source in Object Material.

Still not sure what Integer and other panels are needed for. Grasshopper is still a big mystery. I’m very glad your helping on such specific questions and requests.

The way Rhino handles blocks has always been frustrating with layers / materials (to begin with). It’s a huge relief that it can be edited easily now. I feel that this should be included in Rhino Block functions. Select all blocks and change the layer / material by layer or object parent for everything inside. This will be very helpful for people who work with many different people and vendors for projects, importing CAD, Revit, Sketchup, etc. Rhino layer and material become a complete mess very quickly.