import clr
clr.AddReference("RevitAPI")
clr.AddReference("System.Core")
import System
clr.ImportExtensions(System.Linq)
from Autodesk.Revit.DB import *
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
# Импорт библиотеки по работе с объектом iCollection
from System.Collections.Generic import *
# Забираем выходные значения
MaterialID = UnwrapElement(IN[0]) # Материал для сегмента
ScId = UnwrapElement(IN[1]) # Объект таблицы, которую копируем
NewScheldu = IN[2] # Имя новой спецификации
Dnom = IN[3] # Массив номинальных диамтеров
Dvnu = IN[4] # Массив внутренних диаметров
Dvne = IN[5] # Массив внешних диаметров
DnomCount = len(Dnom) # Подсчитываем количество вносимых элементов
doc = DocumentManager.Instance.CurrentDBDocument # Работа с текущим документом
# Все изменения вносим внтури транзакции
TransactionManager.Instance.EnsureInTransaction(doc)
# Дублируем спецификацию\тип с новым именем
DuplPipeSchel = ScId.Duplicate(NewScheldu)
i = 0 # Для счётчика
ms1 = [] # Пустой массив
df = List[MEPSize]() # Пустой элемент iCollection
while i < DnomCount:
p1 = int(Dnom[i]) / 304.8
p2 = int(Dvnu[i]) / 304.8
p3 = int(Dvne[i]) / 304.8
p4 = bool(1)
p5 = bool(1)
ms = MEPSize(p1,p2,p3,p4,p5) # Создание экземпляра класса MEPSize
df.Add(ms) # Добавление экземпляра класса MEPSize в объект iCollection
ms = 0
i = i + 1
# Создание сегмента
sg = Plumbing.PipeSegment.Create(doc, MaterialID.Id, DuplPipeSchel.Id, df)
TransactionManager.Instance.TransactionTaskDone()
OUT = sg