Possible new-to-old workaround?

I am new to python, and have only gone as far with PyRevit as to modify a couple of scripts in small ways. However, I expect to spend more time over the coming months looking at ways to build small tools to help my Revit experience. Recently I had an idea which I thought I would ask about here first to see if it seems workable or not.

We’re a structural engineering firm, and we work with multiple versions of Revit – generally working in 2023 or 2024, but going back as far as 2021 depending on the architect’s version. Frequently I want to take a detail from Project A and use it in Project B, which won’t work if Project B is an older version.

Now, since most of this only involves linework – detail items and profiles – I wondered if there was a way to read all the specifications of a bunch of selected lines (i.e. the values of their x/y/length/radius/etc) and generate text to describe this – text which could of course be copied into a text editor independent of Revit. Then, a second script could be used to read this data (perhaps pasted in, perhaps reading from a saved txt file) and draw the specified lines.

This way, I could call the first script from Revit 2024, save my text ‘specification’ of the lines, then go to Revit 2021 and use those specs to create that linework inside that version of the program, where I can then use it as needed – thus successfully ‘importing’ the newer content into the older program.

Of course I could instead just export the 2024 linework as CAD, then import that into the older version and trace, but I think my idea (if it can work) would be faster and pretty foolproof.

So – any thoughts? Is this even possible/practical? Thanks for any input.

Create details in 2020. And families as well. Or whatever the safest older version is for you. Then it always compatible.

Do these details get modified or are they the same for each job?

They can’t just be pulled from a detail library independent from the project?

If you do go to cad, you can create a generic annotation family, import the CAD line work and explode to revit line work. Hard to say what best approach is without know what details are and how they are used

The problem is that a lot of details have been developed along the way in whatever version of Revit was being used by that technologist at the time. Or a typical detail is used, then on a later project the tech copies his or her previous work, and this time the detail gets modified, which the engineer likes better, and then eventually someone says “add this detail from project 12345” and it turns out that’s in a higher version than the 2021 version that we’re trying to use as the basis for all our details :o

So it’s complicated … And quite a few details are what we call “reference” details, meaning you grab them and build upon them according to your project’s needs. But then if the result turns out to be exactly what someone else’s project needs, but their project has to be in an older version of Revit, then they can’t use what was just made and have no choice but to redraw everything.

Yes, it’s true that every time someone works on a detail, they could open Revit 2021, work on it, and then import/upgrade it into Revit 2022/2023/2024 as needed, but it’s a bit of a hassle to have to repeat that workflow ever time there’s a change to the detail. Hence we find ourselves in this situation.

And often I’m working on something that’s so unique to the particular project that I don’t go to the trouble of making a family. Maybe I need to draw a bunch of lines for a very particular fastener that’s only in this one project, so I just make a group and use it as necessary. But 6 months later, an engineer calls for that same uncommon fastener, and the architect is using an older version of Revit, and I can’t use the linework I created.

So – if I could make a python script to facilitate this, it would be useful – at least for our company :slight_smile: