Hi JN,
Have you tried setting the lacing of the custom node that you created to Longest?
Otherwise you could use a for loop in Python:
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
if isinstance(IN[0], list):
lines = []
for i in IN[0]:
lines.append(UnwrapElement(i))
else:
lines = [UnwrapElement(IN[0])]
crvs = []
for line in lines:
crvs.append(line.GeometryCurve)
TransactionManager.Instance.EnsureInTransaction(doc)
for crv in crvs:
ref = ReferenceArray()
ref.Append(crv.GetEndPointReference(0))
ref.Append(crv.GetEndPointReference(1))
dim = doc.Create.NewDimension(doc.ActiveView, crv, ref)
TransactionManager.Instance.TransactionTaskDone()
OUT = dim
I use an offset to position the dimension:
and the python code becomes:
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
if isinstance(IN[0], list):
lines = []
for i in IN[0]:
lines.append(UnwrapElement(i))
else:
lines = [UnwrapElement(IN[0])]
crvs = []
for line in lines:
crvs.append(line.GeometryCurve)
if isinstance(IN[1], list):
linea = []
for i in IN[1]:
linea.append(UnwrapElement(i).ToRevitType())
else:
linea = [UnwrapElement(IN[1]).ToRevitType()]
TransactionManager.Instance.EnsureInTransaction(doc)
for i in range (0,len(linea)):
ref = ReferenceArray()
ref.Append(crvs[i].GetEndPointReference(0))
ref.Append(crvs[i].GetEndPointReference(1))
dim = doc.Create.NewDimension(doc.ActiveView, linea[i], ref)
TransactionManager.Instance.TransactionTaskDone()
OUT = linea