Продолжаем отмечать годовщину форума.
Делюсь своим опытом.
В продолжении темы про 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)
Удачи!
Скрипт с заготовкой команд и библиотек можно скачать в разделе Скачать