Select dimensions connected to linked models

Hi there,

I am trying to get Dynamo to select the dimensions that are attached to linked models in the current view but not the dimensions that are only attached to my own model or detail lines.

First I filtered the dimensions in the current view and then made the references visible that they are attached to.

But how do I filter and select only the right dimensions?

Who can help me with the last pieces of the puzzle? :wink:

@ssw ,

you can try group by function, maybe with identity it does work, or category to filter out

Hi Draxl,

Thank you for your input but I just found the solution for this issue or better said: Chat GPT found it for me.

I asked it to create a python script and it did a good job. after that I connected a node to select the elements in Revit.

Here is the script for anyone who wants it:

https://chatgpt.com/share/66ed47f5-440c-800e-83ab-2d27673b90f2

1 Like

@ssw

thats great, i can`t see anything in the link, can you paste the code

</>

Sure, here is the code:

import clr
clr.AddReference(‘RevitServices’)
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

clr.AddReference(‘RevitAPI’)
from Autodesk.Revit.DB import *

clr.AddReference(‘RevitNodes’)
import Revit
clr.ImportExtensions(Revit.Elements)

Huidige document en view ophalen

doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
view = doc.ActiveView

Alle dimensions in de huidige view ophalen

collector = FilteredElementCollector(doc, view.Id)
dimensions = collector.OfClass(Dimension).ToElements()

Lijst om de geselecteerde dimensies op te slaan

linked_dimensions =

Functie om te controleren of een element uit een linked model komt

def is_from_linked_model(reference):
linked_element = doc.GetElement(reference.ElementId)
if linked_element is None:
return False
if isinstance(linked_element, RevitLinkInstance):
return True
return False

Controleren of de dimensions verbonden zijn aan een gelinkt model

for dimension in dimensions:
references = dimension.References
for reference in references:
if is_from_linked_model(reference):
linked_dimensions.append(dimension)
break # We hoeven maar één gekoppelde referentie te vinden

Output van het script, de lijst met dimensies die aan een gelinkt model vastzitten

OUT = linked_dimensions

1 Like
import clr
clr.AddReference("RevitServices")
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import *

clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)

# Huidige document en view ophalen
doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
view = doc.ActiveView

# 🛒Alle dimensions in de huidige view ophalen
collector = FilteredElementCollector(doc, view.Id)
dimensions = collector.OfClass(Dimension).ToElements()

# 🎣 Lijst om de geselecteerde dimensies op te slaan
linked_dimensions = []

# 🚀 Functie om te controleren of een element uit een linked model komt
def is_from_linked_model(reference):
    linked_element = doc.GetElement(reference.ElementId)
    if linked_element is None:
        return False
    if isinstance(linked_element, RevitLinkInstance):
        return True
        return False

# 🏓 Controleren of de dimensions verbonden zijn aan een gelinkt model
for dimension in dimensions:
    references = dimension.References
    for reference in references:
        if is_from_linked_model(reference):
        linked_dimensions.append(dimension)
        break 
# 📍 We hoeven maar één gekoppelde referentie te vinden

# ✅ Output van het script, de lijst met dimensies die aan een gelinkt model vastzitten
OUT = linked_dimensions