Пишу плагин по тонированию (заливке) заголовков спецификации цветом. И столкнулся с такой проблемой: когда открываешь спецификацию, цвет ячеек такой, который я задал плагином, а вот на листе остается старый цвет.
То есть за отображение цвета отвечают два свойства класса TableCellStyle:
- BackgroundColor (The background color of this cell in the grid view) - цвет в спецификации
- SheetBackgroundColor (The background color of this cell in the sheet view) - цвет на листе
Но SheetBackgroundColor только для чтения и как его изменить я не знаю.
Привожу код рабочий код для pyRevit
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import datetime
from datetime import *
import clr
import os, sys
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
from Autodesk.Revit import ApplicationServices
clr.AddReference('System')
import System
from System.Collections.Generic import *
from System import Byte
uidoc = __revit__.ActiveUIDocument
doc = uidoc.Document
app = __revit__.Application
printManager = doc.PrintManager
schedule = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Schedules).WhereElementIsNotElementType().ToElements()
schedule = [x for x in schedule if x.ViewSpecific is False and x.IsTemplate is False]
color = Autodesk.Revit.DB.Color(System.Byte.Parse(str(255)), System.Byte.Parse(str(255)), System.Byte.Parse(str(255)))
transaction = Transaction(doc)
transaction.Start("-")
for x in schedule:
tb = x.GetTableData().GetSectionData(SectionType.Body)
columns = tb.NumberOfColumns
rows = tb.NumberOfRows
fr = tb.FirstRowNumber
fc = tb.FirstColumnNumber
for r in range(fr, rows):
for c in range(fc, columns):
if tb.IsValidColumnNumber(c) and tb.IsValidRowNumber(r) and tb.AllowOverrideCellStyle(r,c):
style = tb.GetTableCellStyle(r,c)
style.BackgroundColor = color
tb.SetCellStyle(r,c,style)
tb.RefreshData()
transaction.Commit()
Если после обработкой плагином вывести эти свойства цветов спецификации, то они будут разными. То есть в спецификации будем видеть переопределенный цвет, а на листе останется старый.
Подскажите, каким методом нужно пользоваться, чтобы залить цветом еще и на листе.
![](https://i.postimg.cc/WqPTMHhT/2019-12-21-19-55-40.png)