Override graphics element

Главная Форумы Python Revit Library (API) Override graphics element

Помечено: ,

В этой теме 0 ответов, 1 участник, последнее обновление  Legantmar 8 мес., 2 нед. назад.

Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Автор
    Сообщения
  • #6391 Score: 0

    Legantmar
    Хранитель
    409 pts

    Продолжаем отмечать годовщину форума.
    Делюсь своим опытом.
    В продолжении темы про Graphics style хочу рассказать про Override graphics – переопределение вида элемента на конкретном виде.
    Для начала инициализируем класс OverrideGraphicsSettings (попросту говоря создадим сам объект):
    override = OverrideGraphicSettings()
    Напоминаю, что все изменения должны происходить в транзакции.
    TransactionManager.Instance.EnsureInTransaction(doc)
    …ваш код…
    TransactionManager.Instance.TransactionTaskDone()

    Чтобы включить полутона (halftone) или выключить используется команда
    override.SetHalftone(1) # 1 – поставить галочку, 0 – снять галочку

    Для установки толщины ЛИНИИ:
    override.SetProjectionLineWeight(6)  # где 6 условная толщина линии для примера

    Установка цвета для ЛИНИИ:
    rgb = [125, 25, 0] # [R, G, B]
    color = rColor(con.ToByte(rgb[0]), con.ToByte(rgb[1]), con.ToByte(rgb[2])) # преобразования чисел в байты для создания Revit color
    override.SetProjectionLineColor(color)

    # Установка паттерна для ЛИНИИ по имени:
    Вариант 1
    patterns = FilteredElementCollector(doc).OfClass(LinePatternElement).ToElements() # собираем все паттерны из тех, ЧТО УЖЕ ИСПОЛЬЗУЮТСЯ В ПРОЕКТЕ на видах
    patternName = “Dash” # зададим имя паттерна, для примера Dash (или ‘Штрих’, в зависимости от языка вашей версии Revit)
    patternId = [U(i).Id for i in patterns if i.Name == patternName][0] # поиск нужного паттерна  по имени
    override.SetProjectionLinePatternId(patternId)

    Вариант 2
    patternId = U(LinePatternElement.GetLinePatternElementByName(doc, ‘Штрих’)).Id # или сразу паттерн по имени (из тех, что есть в файле, даже если они не используются на каких-либо видах)!
    * примечание: U() – это сокращение от UnwrapElement()

    Ну и чтобы увидеть изменения их нужно применить к вашему элементу (elem.Id) на нужном виде (view)!
    view.SetElementOverrides(elem.Id, override)
    Удачи!
    Скрипт с заготовкой команд и библиотек можно скачать в разделе Скачать

     

Просмотр 1 сообщения - с 1 по 1 (всего 1)

Для ответа в этой теме необходимо авторизоваться.