Before we hop into the updates, I owe (3) people a very thankful shout out for assistance on this update. 

The MVTs (Most Valuable Testers)

First, Celt, who is a friend from eng-tips and fellow programmer. His website is awesome, check it out here or some awesome free and open source calculations:

Celt helped out immensely with some good ideas on slowing down the program and general bug swatting, thank you!

Second, Liz, who reached out to be a beta tester early on. She runs a blog on bluebeam which is great:

She was extremely dedicated and hopped on multiple zoom calls with me to help troubleshoot the bugs. Thanks again for your help!

Third, Seth with Bentley, who was awesome at helping us trouble shoot the problems with R2R. Thank you!

Both Celt and Liz were having trouble with making API calls to RAM structural through RAM DataAccess. Weird errors about reading and writing to protected memory occurred when retrieving grid data and beam data.

After the better part of around 3 months, I was finally able to pinpoint the error, the silly .usr file that RAM structural creates when opening a model persisted a bit after I told the program to close the RAM structural file with code. I would then tell the application to reopen the RSS file, creating a new .usr file, which is not allowed and would throw the exception of reading and writing to protected memory. To solve this, I added a check function that checks the folder where the .rss files exists and checks for the presence of a .usr file, if the .usr fie exists, time out for 0.5 seconds, then check again. With this check in place, it should resolve the reading and writing to protected memory error that occured.

New Features - Studs and Camber Checking

The datagrid got a big face lift, let's review how to read the data. Any row that has a grey highlight has been mapped from RAM into Revit, but there are discrepancies in either the beam size, camber or studs. Any data that is populated in the grey row will have text in red to flag differences, this is the Revit element differences between the RAM element. The engineer should review all grey data rows as this represents a difference between RAM and Revit.

In order to find your companies stud parameter and camber parameter, I have add a new button the first screen to set up your mapping parameters. Click the "Revit Paras" button to be greeted by this screen:

This screen will load in all structural framing family members, please select the one you would like pull instance parameters from, and then select the correct instance parameters from the selected family. Save this file as as prompted, R2R_Paras.json, in the same file location as your R2R_Map.json file location. The import function will attempt to load in both of these .json files so you only have to do this process once per structural project. The name of you instance parameters are saved into this file and read on import.

A this moment, the only item that can be updated while in the datagrid view is studs to match the RAM beam. If the user selects a row and hits "Shift + S" on the keyboard, the program will determine the RSS studs and write that value into the Revit beam instance parameter. Changes are automatic, so you will be able to see your revit model update instantly. In addition, the datagrid background for these cells are changed to light blue and the text is change to black to indicate that the user has reviewed this data.

In the future, I would like to make the stud parameter a user input where you could mix and match if you wanted. The tool is really starting to save the backchecking time and money for the end users, this is MUCH quicker than reviewing this manually by hand, marking up a PDF and having a drafter pick up the revisions. You can have confidence that your RAM model and revit model are now coordinated in the click of a button. 

Smart Tags

Make sure you have "smart" tags setup with your stud parameters, aka, handle any formatting of your companies stud tagging out side of the parameter. For example, let's say I had a composite girder with the following stud layout 20,4,20, please make sure your instance parameter would be "20,4,20" and not "[20,4,20]". Place the "[" "]" formatting in your text label, not the actual parameter. I plan on adding functionality to check and revise camber soon, but I need to chat with users to see what the most common way people handle this parameter. I would like to see a parameter like "0.25" (string) where you text label would add the ' " ' inch symbol in the tag. I would assume that some companies might like "1/4" or might actually store camber as a double. All this leads to added coded complexity that I will need to logically think about moving forward and handle as user input comes in. If your company would like a customized instance parameter tag, please let me know, I could share one that I like to use.

My current company will need to work on updating to smart tags for the camber parameter, we currently input ' " ' in all of our camber tags, which is just time consuming and does not work with the way the R2R tool is currently coded.

For the Future

I am looking for feedback from my east coasters that record shear end reactions, what would be the best way to handle writing reactions into RAM structure beam? I have this data right now, but I am not writing it into the beam. I have heard that some like only record reactions over a certain number "x". How is "x" determined? Let me know and we can work out a way to handle driving reaction data into the revit model quickly and accurately.

My next task is to upgrade R2R for revit 2025, which is a big undertaking as I understand. Revit 2025 upgraded to .net 8.0 which is a big leap from the current .net 4.8. From reading on the revit forums, it sounds like some users are struggling with this update, but I can only find out by trying. I've got revit 2025 installed on the home computer, so I will start trying to make this upgrade. Sounds like people are making (2) .dll files, one for revit prior to 2025 and after 2025, sounds like a pain to maintain, (2) separate code bases to maintain? Or is there some fancy way to link only certain changes to 2025 versioning and above? We will find out....

I am waiting to push this update live until I figure out the Revit 2025 thing, but if you want to take this version out for a beta test, please let me know, I can send you a test file. As always, if you run into any bugs/would like any features added, please let me know.


Great job! We've been wanting a tool like this for so long that I'd considered making it myself. During my research, I stumbled across this blog right around the time you were looking for testers a few months ago. 

I'll be sure to spread the word about this amazing tool. Thanks again for all your hard work!

Our Sidebar

You can put any information here you'd like.

  • Latest Comments
  • marcello on RAM API - Cracked -


    I’m glad you found the class helpful on learning how to access the RAM API using dynamo.


  • Liz_Larsen on R2R - Update V1.1.0 -

    Great job! We've been wanting a tool like this for so long that I'd considered making it myself. During my research, I stumbled across this blog right around the time you were looking for testers a few months ago. 

    I'll be sure to spread the word about this amazing tool. Thanks …

  • retug on ETABs API - More Examples (Database Tables) -

    Hi rajavardhan, are you not able to delete selected frames and walls based on section properties through the ETABs program itself? Or through the API? I could put together a few quick examples for you with the API if needed.