Как задать индивидуальность Линиям модели в семействе?

Главная Форумы Задать вопрос Как задать индивидуальность Линиям модели в семействе?

Просмотр 12 сообщений - с 1 по 12 (из 12 всего)
  • Автор
    Сообщения
  • #4748 Score: 0
    Арсений
    Участник
    1 pt

    Приветствую!  Возникла неразрешимая задача.

    В семействе линиями модели задана условная планировка. На её основе в проекте предполагалось “поднять” стены при помощи Wall.ByCurveAndLevels, в соответствии с заданными подкатегориями (см. рис) . Оказалось, что все линии из семейства – в проекте “обезличены”. Существуют ли какие-то пути, чтобы линии было возможно отсортировать по их подкатегории, или идентифицировать их?  Поиски в интернете по извлечению “Object Styles” не привели к успеху..

    #4752 Score: 0
    Legantmar
    Хранитель
    474 pts

    в каком семействе? как в семействе заданы подкатегории? )))

    #4754 Score: 0
    Арсений
    Участник
    1 pt

    Семейство на основе типовой модели. Подкатегории заданы через “Стили объектов”, называются: наружная стена [проекция], внутренняя стена [проекция] и перегородка [проекция]. Семейство загружено в проект (собственно принсткрин сделан из проекта)

    #4755 Score: 0
    Legantmar
    Хранитель
    474 pts

    выложи rvt файлик..

    #4756 Score: 0
    Арсений
    Участник
    1 pt
    #4761 Score: 1
    Khasan Mamaev
    Модератор
    186 pts

    Таким кодом удалось добраться до идентификационных номеров типов линий содержащихся внутри семейства

    import clr
    clr.AddReference('ProtoGeometry')
    from Autodesk.DesignScript.Geometry import *
    clr.AddReference("RevitAPI")
    from Autodesk.Revit.DB import *
     
    clr.AddReference("RevitNodes")
    import Revit
    clr.ImportExtensions(Revit.GeometryConversion)
    
    reset = IN[0]
    
    element = UnwrapElement(IN[1])
    
    Gopt = Options()
    geo1 = element.get_Geometry(Gopt)
    geo2 = [i for i in geo1]
    
    items = [i for i in geo2[0].SymbolGeometry]
    
    GSI = [i.GraphicsStyleId for i in items]
    
    OUT = GSI
    #4762 Score: 1
    Legantmar
    Хранитель
    474 pts

    Хасан, отлично!
    немного доработал

    внутри скрипта есть комбинация типа list[:-1] – это чтобы избавится от какого то скрытого Solid

    скачать скрипт

    #4763 Score: 0
    Khasan Mamaev
    Модератор
    186 pts

    Лучше конечно делать выборку по типу элемента, чем отсекать последний элемент списка, ведь “мусор” может оказаться и в другом месте списка

    #4764 Score: 0
    Legantmar
    Хранитель
    474 pts

    согласен

    #4765 Score: 0
    Арсений
    Участник
    1 pt
    1. Спасибо за участие. Это похоже на шаманство. Даже не знаю что или кого пришлось принести в жертву)
    2. Остался вопрос.. Три штуки.
    3. Питон-скрипт выбирает только один элемент. Но это можно решить и обходными путями, более длинными правда.
    4. Элементы рисуются относительно ноля проекта (это и понятно, ведь в семействе они построены от ноля). Но это, предположительно, можно решить путем перемещения по “инстансу” семейства в проекте.
    5. Скрипт видит только первый уровень вложенности семейства. Т.е. если семейство с этими линиями вложить в другое семейство и уже его загрузить в проект, то линии не распознаются  – это печально. Сложно ли решается этот вопрос?
    6. В любом случае вы уже помогли, спасибо.
    #4766 Score: 0
    Khasan Mamaev
    Модератор
    186 pts

    Арсений к чему такие сложности? Все для того чтобы строить стены по линиям? А если бы не было Динамо? Кажется проблем было бы меньше. Стройте линии сразу в проекте, на кой их нужно два-три раза прятать в семейства? Кстати есть нод для мультивыбора, плюс есть мой скрипт для выбора в Ревит. Я про него ролик записывал, под роликом можно скачать скрипт.

    #4767 Score: 0
    Арсений
    Участник
    1 pt

    Спасибо, посмотрю ваш урок.

    Линии запараметризованы на различные планировки

    Наверное это побочные эффекты желания сделать мифическую “красную кнопку” – она же “сделать красиво” :)

     

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