How to set worksets without using packages


Hi my new company wont let me install any packages for dynamo because its blocked on my computer from installing anything. My question is how do I set worksets to all elements in a view, if I cant use any external packages? I got pretty close but it puked on me because worksets cant take strings apparently.


First, tell your company to install all the packages to a single networked location, and every time you want one they have 24 hours to review and install. Anything longer than that is insane and is an IT department overstepping its bounds in order to feel important and justify their existence. If the company lets them do this regularly than I’d start to look for another new job.

Second, for the most part packages aren’t software, they are files which can be copied into place if you have write access to the folder. They may have some code in them, but if you have python installed and dynamo installed you don’t need anything else other than the files. Download them to the correct location and you should be good to go. If you can’t write to the default folder, then try adding a “dynamo packages” directory to your documents folder and save them there. If you can’t write there then just walk out cuz that’s insane.

If you really can’t make any packages work, try to feed the workset element, not the name. Might not work as I haven’t tested this before.

Lastly, if your IT department wants some more input on why this isn’t an issue, have the director (or whoever is holding this back) start another “security concerns” post with their account so we can correct any misinformation, or so things can be run up the ladder, and the dev team can address any legitimate security concerns directly. They have already done quite a bit towards that end (“The package you are downloading contains python scripts” made me chuckle the first time I saw it.).


I appreciate that you have the same views as me about my IT department, but there is too much red tape there to solve my problem. But I have a couple quick questions for your. If I have dynamo installed dont I already have python? or is it a separate package all together? If it is, I dont think I can get it. With that being said. How do I actually download the packages outside of dynamo to actually paste them into the folder like you suggest? any exe or msi file or dynamo package gets rejected on my computer. Lastly I read elsewhere that worksets are an element, that I can find, but I just dont know where to find them. Do you? I checked in Categories, and Built In parameters, but I cant find them. How do I flush them out? Thanks so much Jacob!


Most direct downloads shouldn’t be an issue. Lady bug and a few others may have issues.

You should already have Python, try adding a Python node to your workspace. If you don’t than bigger issues are present.

Not sure how to find wirksets without custom nodes. Worse case scenario you can rebuild them as nodes in your workspace. Time consuming and slow though. :frowning:



Go to and download from there (its all zip-files).
Create a folder and unzip it there.
In Dynamo go to settings and add the path to the newly created folder.
Exit Dynamo and start it again.

A carpenter without a hammer cant do his job.



Good analogy @Marcel_Rijsmus, but is more like a carpenter without a power tool to those who use it. Those skill saws allow for cleaner cuts in way less time you know?

If it had added cost I would at least be willing to hear the argument, but it’s free… oh well more work and higher profit margins for those of us who utilize modern tools.


Thank Marcel, but I tried to restart dynamo and it didnt take. I added the path in dynamo settings and restarted but it didnt seem to take effect. I have a couple questions. Does each package that I download need to be added to its own folder named accordingly or how exactly can I consolidate these packages into one directory? thanks for your help!



Have them all have their own folder in the newly created folder and address only the top folder.
Dynamo will read the subfolders.



Indeed, my boss loves it when i do the work of a week in 10 minutes.
We need guys like you, were inundated with new projects.



Ok thanks, Ill try that.

@Marcel_Rijsmus Yeah, my last job was like that. I could do 5 peoples jobs. But when you chop my favorite work horse, off at the knees I’m kind of powerless. lol. Is that a job offer? lol



We are hiring. :slight_smile:



I tried to do what you said, but I am not getting my packages to show up. Only spring nodes shows up for some reason, Can you tell me what I am doing wrong please? I created subfolders titled the same as the package and put it into the directory I created, and extracted all the packages to its corresponding folder, but its not taking. Please advise. thanks


Hi @mix

It work best if you only have one folder for all packages, and better still, if it is on a network drive, so all your collegues can acces it too,and run the scripts you create for them.
The only reason i can think of why its reading only the SpringNodes package is that there may be .DLL files in the other folders which are blocked by your IT department.



Hello, I do have only one folder for all packages dont I? All my packages where put into the “Dynamo Packages” folder above, unless you mean that I should only have one directory to the packages? Do the individual package folders need to be spelled a specific way in order for dynamo to read them properly? Edit: I think you might be right on the .dll thing. When I hit he “add” button, and go to import library, it want a .dll file. and when I try to load one from the folder I get this error message


You can get workset names and ids from Python. The id is the actual parameter value you need to set an element’s workset.

import clr
from Autodesk.DesignScript.Geometry import *

# Import DocumentManager
import RevitServices
from RevitServices.Persistence import DocumentManager

# Import RevitAPI
import Autodesk

# Import ToDSType(bool) extension method
import Revit
from Autodesk.Revit.DB import *

#The inputs to this node will be stored as a list in the IN variable.
#doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
doc = DocumentManager.Instance.CurrentDBDocument

#create workset collector
userWorksets = FilteredWorksetCollector(doc).OfKind(WorksetKind.UserWorkset)

names, ids = [], []
for i in userWorksets:

#Assign your output to the OUT variable
OUT = names, ids

Place elements onto worksets

Thanks Nick! that script works perfectly,
Now how do I plug the id element into the element set parameter by name? do i have to convert the IDs to something somehow?


The python node exports both the workset name (index 0) and the workset ID (index 1), so you need to first get the item at index 1, then the item at index 132.

Looks like this: