Получение выделенного элемента из линк-файла

Главная Форумы Задать вопрос Получение выделенного элемента из линк-файла

Просмотр 11 сообщений - с 1 по 11 (из 11 всего)
  • Автор
    Сообщения
  • #5086 Score: 0
    txt
    Модератор
    86 pts

    Друзья, есть пара вопросов

    Работаю в файле мех. оборудования, подгружен архитектурный файл, выделяю в нем окно:

    Вопрос 1: как в динамо получить это окно (и вообще любой единичный выделенный элемент) из линк-файла?

    Вопрос 2: как выделить все подобные окна из линк-файла на текущем виде (видимо надо использовать нод -all elements in active view – и далее фильтровать по выбранным из связанного файла элементам) ?

    #5092 Score: 1
    Legantmar
    Хранитель
    475 pts
    #5095 Score: 0
    txt
    Модератор
    86 pts

    Здорово, все отлично работает. Спасибо огромное!

     

    #5097 Score: 0
    txt
    Модератор
    86 pts

    Возник еще такой вопрос : можно ли получить именно те элементы из линк-файла , которые находятся в ТЕКУЩЕМ виде , подобно тому, как их определяет нод “All elements in active view” для активных элементов проекта . Допустим, работаю на плане 1 этажа , необходимо получить все окна из связанного файла только на этом виде. Далее перехожу на 2 этажа получаю все окна на этом этаже и т.д. ?

    #5099 Score: 1
    Legantmar
    Хранитель
    475 pts

    Можно сравнить имя уровня у активного вида с именами уровней у окон.
    Добавил несколько нодов.
    https://yadi.sk/d/XUDavtJu3EaKcn

    #5737 Score: 0
    txt
    Модератор
    86 pts

    После обновления Динамо почему то стала вылетать ошибка при запуске скрипта (одного из питон кода (на входе принимает True/False) в скрипте указанном выше), отвечающим за извлечение всех стен из связанного файла:

    код:


    import clr
    clr.AddReference('ProtoGeometry')
    from Autodesk.DesignScript.Geometry import *
    # Import ToDSType(bool) extension method
    clr.AddReference("RevitNodes")
    import Revit
    clr.ImportExtensions(Revit.Elements)
    # Import geometry conversion extension methods
    clr.ImportExtensions(Revit.GeometryConversion)
    # Import DocumentManager and TransactionManager
    clr.AddReference("RevitServices")
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from RevitServices.Transactions import TransactionManager
    from System.Collections.Generic import *
    # Import RevitAPI
    clr.AddReference("RevitAPI")
    import Autodesk
    from Autodesk.Revit.DB import *

    doc = DocumentManager.Instance.CurrentDBDocument
    uiapp = DocumentManager.Instance.CurrentUIApplication
    app = uiapp.Application

    uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument

    view = doc.ActiveView

    collector = FilteredElementCollector(doc) # создали коллектор
    filter = ElementCategoryFilter(BuiltInCategory.OST_RvtLinks) # создали фильтр по категории RvtLinks
    linkinst=collector.WherePasses(filter).WhereElementIsNotElementType().ToElements() # link instance

    linkdoc = []

      for i in linkinst:

    linkdoc.append(i.GetLinkDocument()) # link documents

    Windows=[]

      for i in linkdoc:

    ws= FilteredElementCollector(i).OfCategory(BuiltInCategory.OST_Walls).WhereElementIsNotElementType().ToElements()
    OUT = ws

    Какова может быть причина?

    #5741 Score: 0
    txt
    Модератор
    86 pts

    Пробовал на другом компе с версией 1.2 там все норм работает

    Сейчас удалил Динамо 1.3 и вернул свою старую версию 1.2 – но не помогло, та же ошибка

    Возможно, хотя скорее всего точно, даже дело не в версии (может и скрипт выше и работает у кого то в версии 1.3) это у меня именно такой глюк

    #5742 Score: 0
    Legantmar
    Хранитель
    475 pts

    что то с входным аргументом.. ругается на document
    проверяй (название, ссылки, местораположения и пр.). попробуй с другим линк-файлом в другом месте..

    #5744 Score: 0
    Oleg
    Участник
    28 pts

    Может быть у вас установлены какие-то надстройки, плагины, у которых имеется такой же метод FilteredElementCollector, и теперь возникает конфликт.. подумал так потому что exception ссылается на такой путь:

    d:\ship\2017_px64\source\revit\revitdbapi\gensrc\APIFilteredElementCollectorProxy.cpp

    #5745 Score: 0
    txt
    Модератор
    86 pts

    Да действительно,

    очевидно , что из-за двух линк-файлов он не будет работать

    в проекте было два линк -файла , после того как удалил один все заработало

    Возник вопрос: если в проекте 2 и более линк файла , то как в скрипте указать чтобы он выбрал все окна именно с конкретного линка (указав, вероятно, его имя) ?

    #5748 Score: 1
    Legantmar
    Хранитель
    475 pts

    Потому, что не учишь питон. Если бы было написано не ws = , а Windows.append( то все получил бы..

    Замени строчки

Просмотр 11 сообщений - с 1 по 11 (из 11 всего)
  • Для ответа в этой теме необходимо авторизоваться.