Querying a Linked model and Creating from it

Hey all,

Just a query on whether or not this is possible…

Would you be able to have a Structural Model open, query the Architectural model for locations of all windows/doors, then query their “openings” (As hosted in family), before creating “openings” from those polycurves in the structural walls of the Structural Model?

Obviously wanting to be able to simply run the script and update at will during the design changes.

Assuming here that Python would have to be possible - if at all.



its possible. :slight_smile:

Hurrah!! Let me guess, pretty hard though :smiley: ?

In our office that would alleviate a lot of issues. Here’s to a new (eventual) goal!

Idk, what your Revit API familiarity is, but it would have to go like this:

  • get desired elements from the linked file. without investigating this I am not sure if you want to collect walls or windows to get the openings. I am going to guess Windows. Then from windows you can get walls that windows are hosted in. Then walls will probably hold opening information. Start with "Steam Nodes" package, but I am not sure how far that will take you.
  • Once you get the openings you will need to translate the coordinates. If you grabbing stuff from a linked model, then its possible that it has a different origin point/orientation and the only thing that keeps it together is shared coordinates.
  • Then collect all of your structural walls, see what openings intersect what walls and add openings in those location. Again there are no nodes for that as far as i can tell.
Good luck! Let me know how this goes, and I can probably help along the way.


I’m not saying this is impossible as I have done something similar to use a linked file (generated from RAM Structural) to change all of the framing meta-data in my model. But I do think that the way Arch/Struct look at walls and how we define openings will cause some difficulty. Couple of things you will need to be on the lookout for and issues you will likely need to address.

First - the Structural wall and the Architectural wall likely have different positions (this may not matter given that you are dumping to Dynamo geometry first and not tracking element ID’s form the arch wall to the structural wall). Somehow - Copy/Monitor still works based on wall centerlines and not on core faces or core centerlines. Architects have finishes on their walls and structural engineers don’t, so the wall centerlines are never going to line up. Same goes for bounding box - the arch wall will have a larger bounding box than the structural wall… unless of course the arch wall changes every few feet because of different finishes while the structural wall (the core) is constant for the full length of wall.

Second- don’t assume that the opening the architect uses is correct. Structural wall openings are often larger than the openings that the arch family uses. Want the slab on grade to continue through the door opening? If so, the door opening then needs to be taller than the arch door opening and dropped down below the slab a few inches. Also the architect might not account for the correct “rough opening” in their families. So you may need to modify the opening curves after you’ve read them into Dynamo.

Third - all elements in the linked models will pull their dimensions relative to the Project Base Point of the linked Model, not the host Model. So if somehow your model and the linked model have different Base Points and you’ve manually aligned or done a Center to Center alignment…you may be dealing with vastly different coordinate systems. A transform Matrix can fix all of that, but it’s just another bump in the road to deal with.

That said - I really think we need (in Revit) a better way to Copy/Monitor openings wherein we can map an architectural door family to a structural “door opening” family instead of just having the CM automatically “read” the opening from the arch model, and I think whatever solution you come up with will be a step in that direction.

Good Luck…

(Edit- Looks like Konrad beat me to the punch on the coordinates issue)

Thank you kindly for the in-depth replies gentlemen,

I think I’ll need to brush up on my Revit API skills before attempting this one (Currently slim to non-existent). It’s the kind of practical problem we do have in house though and I do wish Autodesk would solve this particular issue. I work in an office that contains, in house, Engineers, Architects, Project Managers and the like. Given that we have enough problems sitting side by side I would hate to see how a disjunctive discipline split fares.


Theoretically, would the following workflow be easier?

1)Manually copy all the windows and doors from the arch model and paste them into the structural model.

2)With the help of Dynamo, create new structural window and door family types, based on the architectural ones

3)Replace the family type of the windows/doors from architectural to structural ones.

I was thinking of the above because that would negate the need to read information from linked files, which I’ve found to be hit and miss sometimes. You could also do the family manipulations with Clockwork nodes and probably avoid python.

1 Like

That workflow has a lot of merit Dimitar, I might have a play and see if I can manage something along those lines first.

Should be easy enough to read something from within a single file.

Love the conversation. I am looking to create an automated version of Dimitar’s workflow (without the manual copy/paste into place)

This week we experimented with Konrad’s node (select elements from linked file)





It worked really well. The elements however came in offset by the distance from the project base point and the origin. (We were using shared coordinates)

Can someone point me in the right direction for understanding origin points between linked files and host files.

Thanks so much.

Dimitar, have you seen a “Copy/Paste in Place” node/procedure? (non manual?)

The API method always extracts the location based on the origin of the linked file. I guess you could try querying the survey point coordinates, creating a vector from that and adding it to each extracted location point.

Hi Dimitar,

I have the same problem, i try to get the clashes between structural Columns/Beams/Walls…etc and the MEP Ducts. It seems that when i import for instance all the columns in Dynamo, all is good but when i import the ducts from the linked file …the geometry is far away…both models are linked by shared coordinates, all good with Navisworks…basically both are in the same place, no doubt about that. So Dynamo is placing geometry based on the Project Origin…in this case STR or MEP have moved the PBP unclipped and now the Origins are not matching. How can i get them in the same place in Dynamo??

Thank you.


you can get the latest version of spring nodes and try the “Collector.LinkedInstanceElements” node. It fetches the transform of the linked file and you can use that to modify the location of the extracted geometry:


Try it out.

1 Like

Hi Sol Amour

This one is for you!


Very cool man! Thanks for working that little gem out.

Hi Jesper,

I am working on the same thing and have one problem. All good with getting the Windows/doors from linked Arch model, getting the size of them, etc…but the problem that I have is that I need another way to get what window/door “is on my structural wall” .
With the the Geometry Does Intersect (cross product , all my walls and all the arch windows) I get some strange results. Tried everything, Bounding box contains Point, also created lines from the insertion point of the Windows and use the same Does Intersect…nothing.
I know that to place hosted families to cut the walls, if a wall has 3 Windows, is needed same wall repeated three times to feed in each hosted window opening family, but I am not able to get this.

Is the Geometry Intersect/ Does Intersect the only way to get what wall “has” a window, or there is something simpler? Is getting complicated when I have 100 walls and the arch model had 1500 doors.

Thank you.

Hi guys,
I am a little more advanced than a beginner in Dynamo, however I came across this post as I intended to perform something similar for rooms.

Scenario: I have put together a bi-directional flow (using FLUX) that allows me to amend rooms colour coding based rooms filed (which are in turn based on pre-determined sustainability metrics) using Excel. The workflow currently does not need Dynamo.

Unfortunately, I am now presented with a block of flats where external envelope and party walls are in the main model, while internal layouts are linked external RVT models. The (lazy) architect who modelled it has inserted rooms in the linked models, because it was quicker (internal layouts are fairly repetitive).

My question is: can rooms be queried from all external links, cut and pasted into the main model for FLUX to read them?


Hi, this thread has been solved already, could you open a new one with a specific title, a link to the post that interests you here and also some screenshots of your graph? Thanks :slight_smile:

1 Like

@Yna_Db thank you. I have opened a new topic here: Querying rooms from linked models and cutting/pasting them into the main model

Is it possible to share the script.

Thank you

If you manually copy/ paste walls from the linked model the windows and doors in the walls come with it. A dynamo graph to automate that process would be the first step perhaps.