RhinoINside Revit MEP Conduit

Hi All,

found this plugin from Dynamo package called -MEPover

image

code is as below.

import clr

clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument

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

clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)

toggle = ""

if isinstance(IN[0], list):
	lines = IN[0]
else:
	lines = [IN[0]]
FirstPoint = [x.StartPoint for x in lines]
SecondPoint = [x.EndPoint for x in lines]
conduittype = UnwrapElement(IN[1])
if isinstance(IN[2], list):
	level = UnwrapElement(IN[2])
	toggle += "0"
else:
	level = [UnwrapElement(IN[2])]
if isinstance(IN[3], list):
	diameter = IN[3]
	toggle += "1"
else:
	diameter = [IN[3]]

elements = []

if toggle == "":
	TransactionManager.Instance.EnsureInTransaction(doc)
	for i,x in enumerate(FirstPoint):
		conduit = Autodesk.Revit.DB.Electrical.Conduit.Create(doc,conduittype.Id,FirstPoint[i].ToXyz(),SecondPoint[i].ToXyz(),level[0].Id)
		
		param = conduit.get_Parameter(BuiltInParameter.RBS_CONDUIT_DIAMETER_PARAM)
		param.SetValueString(diameter[0].ToString())

		elements.append(conduit.ToDSType(False))

	TransactionManager.Instance.TransactionTaskDone()

elif toggle == "0":
	TransactionManager.Instance.EnsureInTransaction(doc)
	for i,x in enumerate(FirstPoint):
		conduit = Autodesk.Revit.DB.Electrical.Conduit.Create(doc,conduittype.Id,FirstPoint[i].ToXyz(),SecondPoint[i].ToXyz(),level[i].Id)
		
		param = conduit.get_Parameter(BuiltInParameter.RBS_CONDUIT_DIAMETER_PARAM)
		param.SetValueString(diameter[0].ToString())

		elements.append(conduit.ToDSType(False))

	TransactionManager.Instance.TransactionTaskDone()

elif toggle == "1":
	TransactionManager.Instance.EnsureInTransaction(doc)
	for i,x in enumerate(FirstPoint):
		conduit = Autodesk.Revit.DB.Electrical.Conduit.Create(doc,conduittype.Id,FirstPoint[i].ToXyz(),SecondPoint[i].ToXyz(),level[0].Id)
		
		param = conduit.get_Parameter(BuiltInParameter.RBS_CONDUIT_DIAMETER_PARAM)
		param.SetValueString(diameter[i].ToString())

		elements.append(conduit.ToDSType(False))

	TransactionManager.Instance.TransactionTaskDone()
	
elif toggle == "01":
	TransactionManager.Instance.EnsureInTransaction(doc)
	for i,x in enumerate(FirstPoint):
		conduit = Autodesk.Revit.DB.Electrical.Conduit.Create(doc,conduittype.Id,FirstPoint[i].ToXyz(),SecondPoint[i].ToXyz(),level[i].Id)
		
		param = conduit.get_Parameter(BuiltInParameter.RBS_CONDUIT_DIAMETER_PARAM)
		param.SetValueString(diameter[i].ToString())

		elements.append(conduit.ToDSType(False))

	TransactionManager.Instance.TransactionTaskDone()

OUT = elements

any idea how to convert it to Grasshopper for usage???

I think you’ll want to start from scratch, there are a lot of aspects of that snippet that are particular to Dynamo.

can you reckon if GH-python RIR has a conduit function to use?