Announcements
Due to scheduled maintenance, the Autodesk Community will be inaccessible from 10:00PM PDT on Oct 16th for approximately 1 hour. We appreciate your patience during this time.
Dynamo – Русский – только для чтения
Раздел для программистов и специалистов, использующих Dynamo
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

[Dynamo] Где найти НОД или метод Python, чтоб вычислять итоги столбца спецификации?

7 REPLIES 7
SOLVED
Reply
Message 1 of 8
mikechil
958 Views, 7 Replies

[Dynamo] Где найти НОД или метод Python, чтоб вычислять итоги столбца спецификации?

Здравствуйте. Я создаю спецификации через Dynamo и Python

Не могу найти НОД или метод питона, чтоб вычислять итоги столбца спецификации

 

mikechil_0-1639307488647.png

 

Прошу помочь

Спасибо

 

@mikechil 

Название темы было изменено @alina.balkanskaia для улучшения навигации на форуме. Оригинальное название: [Dynamo] НОД или метод питона, чтоб вычислять итоги столбца спецификации

7 REPLIES 7
Message 2 of 8
KozyrevYA
in reply to: mikechil

Приветствую. Стандартных нодов таких нет. В пакетах может быть, но не встречал. А на питоне это делается следующим образом (спецификация берется с активного вида для простоты примера):

 

scheduleView = doc.ActiveView

field = scheduleView.Definition.GetField(1) # Получаем нужный столбец спецификации по номеру (от 0 до n)

field.DisplayType = ScheduleFieldDisplayType.Totals # Устанавливаем значение (В данном случае Totals это "Вычислять итоги")

 

Message 3 of 8
mikechil
in reply to: mikechil

Спасибо. Да это оно.

Message 4 of 8
status_diamond
in reply to: KozyrevYA

Я извиняюсь, в питоне я ноль и понимаю, что возможно это для вас раздражающе просто, но все же прошу.

Как мне записать ваш код в скрипт питона чтобы можно было выбрать конкретную спецификацию через scheduleView? Тоже нужно вычислить итоги для колонки "Длина"

Message 5 of 8
KozyrevYA
in reply to: status_diamond

Приветствую. В общем виде, это выглядит так. IN[0] - подается спецификация или несколько. IN[1] - подаем порядковый номер столбца, который нас интересует. Его вы можете записать вручную, как в примере или получить, как вариант, вытащив индекс из нода "ScheduleView.Fields" или ещё как-то.

 

KozyrevYA_0-1647691396603.png

 

Код для вставки в "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

 

 

Message 6 of 8
status_diamond
in reply to: KozyrevYA

Спасибо за неравнодушие!

Сделал один в один, не получается. Попытался также через индекс в "ScheduleView.Fields" , результат тот же.

Message 7 of 8
KozyrevYA
in reply to: status_diamond

Я думал у вас список будет передаваться в слот IN[0], тогда добавьте после строки " quantity = IN[1]" следующее в PythonSctript:

if not isinstance(scheduleViews, list):
	scheduleViews = [scheduleViews]

 

Message 8 of 8
status_diamond
in reply to: KozyrevYA

Заработало! Спасибо!

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report