Updating Object Style line weights

Starting up a new thread since didn’t get feedback after a day of posting on a previous thread.

Link to other thread:

It appears that the script I put together works because there are not errors or nulls, but nothing seemed to change in my object styles. So I’m looking for some help on what part I’m missing.


The reason that nobody answered might be that everybody focusses on Filters.
not sure

I was working on the assumption that when I replied on a thread that whomever was in the thread gets dinged, they then go look to see the new reply and respond if they wanted to.

Are you referring to the tags associated with each thread when you mention filters?

Filters in Revit off coarse, sorry

I’m not following how Revit filters relates to a script that changes a bunch of object styles line weights at one time

Well, Filters are like Object Styles square, in power, to change Line Weights with an override, since overrides can be set to finer grain, whatever Object Style is saying. So if there are Filters at work, you can change Object Styles, but they may be overridden, so you don’t see a change.

Edit the last custom node, and bring the guts of the dyf into the dyn via copy-paste. Wire things in to see what errors are popping up. Careful with inputs expecting lists/single items. Working on a subcategory element instead of a list thereof might help to start.

1 Like


The custom node is working fine so it is probably a matter of list level or lacing.
Did you try with the longest lacing ?

1 Like

I tried to capture a few things in this screenshot.

  1. I tried changing it to longest lacing and I received ‘nulls’

  2. I opened the custom node and tried to look at the Python code and nothing appears.

  3. I tried running it with the nodes pasted into the overall environment and didn’t get any errors and it didn’t work.

Based on that it worked for you when you provided a number, is there is issue with how the list is input into the custom node?

There is an error in the screenshot because that was me trying to a few other things after pasting in the custom node and then reattaching the nodes back to the custom node.


Can you share a sample project with only the relevant informations (casework category) and your Dynamo graph ?
You can share it by private message if necessary.

1 Like

It won’t let me upload or send a Revit Template File, but there is nothing special about the file.

object styles.dyn (28.5 KB)


It is working perfectly fine on my side in a test file with the longest lacing and without list levels.


You should also update the Genius Loci package to the latest version.
object styles V2.dyn (26.3 KB)


I just needed to download the latest version of the package and replace the nodes. Thank you for the help, I hadn’t realized a new version had been released.

1 Like

If I wanted to input several numbers to check for how would I do that? I tried creating several number nodes and turning that into a list, but that didn’t seem to work. Would list.contains work? The description implies a single item, not a list.

If the list has 1 or 2, change to 3
If the last has 1, 2, 3, 4, change to 5

You need to write a conditional statement.
The easier is to use the Design Script language. Search “conditional statement” in the forum to find examples.



I have been using this Genius Loci “Set Subcategory Properties” to change the Object Style Material parameter for several Subcategories at the same time (talking about 100+ Subcategories, getting a list of material by Subcategory from an external Excel sheet).

The problem with this method is that the custom Python code, as it is written, uses a different transaction for each Subcategory change, and Revit regenerates the model after each transaction, making it take a VERY long time to do something that I guess could be done much faster in a single transaction (if you do the same thing using the UI, you can change several Subcategories at once in the Object Styles window, and Revit will only regenerate once, after you’ve finished)

Since I know nothing about Python, I was wondering if a charitable and curious soul would be willing to take a look on this code and find out if it would actually be possible to change it, so it does everything in just one transacition?

Thanks in advance!