Здравствуйте. Я создаю спецификации через Dynamo и Python
Не могу найти НОД или метод питона, чтоб вычислять итоги столбца спецификации
Прошу помочь
Спасибо
Название темы было изменено @alina.balkanskaia для улучшения навигации на форуме. Оригинальное название: [Dynamo] НОД или метод питона, чтоб вычислять итоги столбца спецификации
Solved! Go to Solution.
Solved by KozyrevYA. Go to Solution.
Приветствую. Стандартных нодов таких нет. В пакетах может быть, но не встречал. А на питоне это делается следующим образом (спецификация берется с активного вида для простоты примера):
scheduleView = doc.ActiveView
field = scheduleView.Definition.GetField(1) # Получаем нужный столбец спецификации по номеру (от 0 до n)
field.DisplayType = ScheduleFieldDisplayType.Totals # Устанавливаем значение (В данном случае Totals это "Вычислять итоги")
Я извиняюсь, в питоне я ноль и понимаю, что возможно это для вас раздражающе просто, но все же прошу.
Как мне записать ваш код в скрипт питона чтобы можно было выбрать конкретную спецификацию через scheduleView? Тоже нужно вычислить итоги для колонки "Длина"
Приветствую. В общем виде, это выглядит так. IN[0] - подается спецификация или несколько. IN[1] - подаем порядковый номер столбца, который нас интересует. Его вы можете записать вручную, как в примере или получить, как вариант, вытащив индекс из нода "ScheduleView.Fields" или ещё как-то.
Код для вставки в "Python Script":
import clr
clr.AddReference('ProtoGeometry')
import Autodesk.DesignScript.Geometry as DG
clr.AddReference("RevitServices")
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import *
TransactionManager.Instance.EnsureInTransaction(doc)
scheduleViews = UnwrapElement(IN[0])
quantity = IN[1]
for scv in scheduleViews:
field = scv.Definition.GetField(quantity)
field.DisplayType = ScheduleFieldDisplayType.Totals
TransactionManager.Instance.TransactionTaskDone()
OUT = scheduleViews
Спасибо за неравнодушие!
Сделал один в один, не получается. Попытался также через индекс в "ScheduleView.Fields" , результат тот же.
Я думал у вас список будет передаваться в слот IN[0], тогда добавьте после строки " quantity = IN[1]" следующее в PythonSctript:
if not isinstance(scheduleViews, list):
scheduleViews = [scheduleViews]
Can't find what you're looking for? Ask the community or share your knowledge.