How to change a managed image?

How can you link an image to a Revit element ?

This would have to one of the most useful functions in Revit, being able to link an image, in this case a QR Code to an element.

Yet Revit it seems, only gives you a manual method to assign or link the image (through “Manage Images” dialog) which seems very limiting, to the point you will not use this functionality at all.

Is there another way to link a list or excel table programmatically to link an image to an element to create a schedule displaying the image ?

303_EQUIP_SCHEDULES.dyn (19.2 KB)

Manually linking images

Schedule displayed on sheet

There’s a method for creating the ImageType and then I’d assume you set the paramter value like any other element.

Hi Nick, thanks for the reply, I’m struggling with Dynamo, let alone python & the api, I guess my point is why have an image field that can only be changed by manually accessing it ? You can’t add a shared parameter which is instance based to the family, and if you add a type base shared parameter you can’t even change it’s value. I understand your approach to offer a solution and that you assume you can set the parameter value like any other element, but what’s the point of the current image field if it can’t be accessed like any other element ?

Hello @r.lietz …not sure but probably something here could work for you…

Wow @sovitek ! Like a lighting bolt out of the blue, almost famous, but short of a Bo Derek. I’m unsure where to find ImageTypeOptions.Create, Element Classes, ImagesTypes.Create and All Elements of Class.

1 Like

I use element classes as i are in newer version, you can just element types and all element of types…the custom nodes are from archilab he has a lot of nodes for images :wink:

I’m not quite sure I understand your argument/question here. All of those things are possible from my experience.

1 Like

This is my experience, you can not add a new Image field as an instance parameter in Family editing, you can only add as Type parameter. In the Project you can not change the image set as a type parameter, this has to be done at the family editing level. You can change the image which is labelled “Image” in the family, but in my case only manually, it seems as though @sovitek has a solution, but unfortunately I’m stuck in a time warp, where the project managers are confining the project to R19. Which it seems the Archi-Lab tools aren’t compatible with, therefore if the process which @sovitek describes can’t not work in R19, then it looks like I’m stuck in Back to the Future.

the “image” field I would like to change, perhaps using dynamo

Can’t create an instance “image” field in Family

Unfortunately Archi-labs not working for me.

Hello…dont think you had the right version archilab installed, it should work at 2019 as well… i remeber right you can have 2 dynamo version installed in revit 2019 make sure you had the right one…
Highest #DynamoBIM Version for #Revit Versions

@sovitek , thanks for your support, I really appreciate it, but on the surface I think I tick all the boxes




You’ve installed the wrong version of Archi-Lab. The last two digits need to align to the Revit version you’re using, which if you’re using Dynamo 2.0.4 means Revit 2020 should be something like XXXX.YY.ZZ20

1 Like

Thanks Jacob for your reply, I’m actually confined to R19 as mentioned above, my installation of Dynamo tells me it’s (Up-to-date). How do I select the “right” version of Archi-labs if I’m only presented with one ? As you have mentioned this version of Archi-labs is not compatible with Dynamo 2.0.4, do I change the version of Archi-labs or should I revert back to Dynamo 2.0.3 ?

I do not believe that any current build of Archilab is supported for 2019; Try a build from 2 or 3 years ago, or upgrade to a supported Revit build (2019 has been EOL’d for 3 or 4 months now)

Ah, I misunderstood your original statement. Yes, image parameters have limited functionality compared to other parameter types, but that doesn’t really change anything with your automation. As others have mentioned now, you just need to have the right package and version for accessing this data in 2019. I’ll also mention that you can add instance parameters for images via project parameters.

1 Like

Ah, it seems I’m stuck between a rock and a hard place, our project managers are sticking with 2019, it seems some people are still afraid of the dark, and software support that runs out in three years.

Let’s be truthful, I still would have thought there would be some relevant code to change the image parameter even in 2019. Dynamo is about using nodes. There are coders that like the control of line by line code, and there are coders that rely on these coders to use tools like dynamo, otherwise dynamo wouldn’t exist.

Nick suggests adding in an image instance parameter via project parameters, this is a nice thought, but it’s like a parent putting you on a carousel, you go round and round, but you still get off at the same spot, if you can’t change the existing image parameter, what’s the point of trying to change a new one.

I guess I have to wait until the project managers come to their senses.

Installing an older Archi-Lab should work; You will have to do some trial and error to find out which one though.

In case it helps, here is some boiler plate advice I’ve shared with people to help PMs get over the fear of upgrading.

Reasons to upgrade:

  1. 2019 hasn’t been supported for awhile now, and as a result is likely missing some security updates which are present in 2020+, and could impact the entire org from a infosec standpoint. Have a look here (note the PDF Tron in particular) for some of these issues: Security Advisories | Autodesk Trust Center
  2. As 2019 is unsupported, if a model gets corrupted my colleagues in support may not be able to help recover the data. They’ll always do what they can, but there are limits in what we can do with older file formats. Imagine coming in one morning and opening a model to a warning message like “This model contains too many missing elements and cannot be opened, contact support.” That could result in your team having to roll the entire model back a few months to clear out the corruption (assuming you have a viable backup to roll back to) and get back up and running. It’s rare, but I have personally had to deliver such a message in the past.
  3. 2020, 2021, 2022 and 2023 all have significant performance, reliability, and stability improvements, in addition to time saving features. This means staff will be more effective in some tasks with new tools, and more productive when simply performing the same routines they perform now.

Reasons to not upgrade a project:

  1. Ignorance of impact on production
  2. Lack of planning
  3. Lack of coordination among team
  4. Lack of defined internal process
  5. Unrealistic concern over contract(s)

Cost impact of upgrading: minimal to nil
Risk in not upgrading: significant

I’m still having a hard time understanding exactly what it is you’re trying to do and what exactly is keeping you from doing it. I’m pretty sure you could create a shared instance parameter as a project parameter, add a new image type (if it doesn’t already exist), and then assign the image to the parameter of any elements that meet your requirements. All of this is possible through Dynamo and the API.

The only issue (that I can see so far) is that the node for creating project parameters does not allow for a shared parameter. So you could either create a non-shared parameter or manually add the shared one. Or potentially learn some python to create the shared project parameter through the API.

Thanks Jacob, for your excellent reply, I’ll forward it on to our project managers, and hopefully they will be able to see their folly.

1 Like

To Nick, I must profusely apologise to you on hand and knee, it must have been very late at night that I kicked this post off, now I go back and see the code I originally posted, and I thought it was clean, but you might have thought, what medication is this guy on ! Here is what I thought I was posting. What I would like to achieve is to post images to the “image” container of a Mech Element or Elec Element, such as a QR code, and then have the ability at any stage update that QR code because the link may point to a different URL, I would have thought this was an “easy” task, but perhaps not, however it might be a good segue into lessons learnt from the old movie “The Gods Must be Crazy” where, if you ever travel into the bush or wilderness, always take a box of matches, because if a fire front is bearing down on you, you light a fire in front of you so you can step into a safe zone before the fire front hits. I managed to even trap myself, at first thinking I had to change the image element, then reverted back to trying to change the family element, but unfortunately neither strategy worked. That’s what I’m trying to solve in software I thought would knock it over in a breeze.

307_EQUIP_SCHEDULES.dyn (38.7 KB)

1 Like

Silly me, I’ll be speaking in Swahili soon, the match was broken, and the breeze blowing.

308_EQUIP_SCHEDULES.dyn (19.9 KB)