Pipe to topo

I’ve done MARCELLO SGAMBELLURI, s “Make MEP Pipe System Families in Revit follow Topo with dynamo”. Where can I find he is using “Pipe.CreatePipe” node.
DATASET was not included.

Thanks

Hi,
You need something like this.

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

Don’t know how to paste code :smiley:

@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

Hehe, thanks!
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

I made a script but I did not get to work.
The included files

Regards ek
Pipe_Line_3D.rvt (2.9 MB)
Pipe_Line_3D.dyn (18.1 KB)