Pipe to topo

@Tomasz_Puchala Highlight the code and press </>

import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

Import ToDSType(bool) extension method
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)

Import geometry conversion extension methods
clr.ImportExtensions(Revit.GeometryConversion)

Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
from System.Collections.Generic import *

Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *

doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument

FirstPoint = IN[0]
SecondPoint = IN[1]
pipeType = UnwrapElement(IN[2])
systemType = UnwrapElement(IN[3])
level = UnwrapElement(IN[4])

levelId = level.Id
elements = []

Start Transaction
TransactionManager.Instance.EnsureInTransaction(doc)

for i,x in enumerate(FirstPoint):
n = i % len(systemType)
pipe = Autodesk.Revit.DB.Plumbing.Pipe.Create(doc, systemType[n].Id, pipeType.Id, levelId, FirstPoint[i].ToXyz(), SecondPoint[i].ToXyz())

elements.append(pipe.Id)
TransactionManager.Instance.TransactionTaskDone()

OUT = elements
1 Like