Revit 2024 – How to create a single non-planar rebar from a 3D PolyCurve in Dynamo?

I’m working in Revit 2024 with Dynamo, and I’m trying to create a single 3D rebar like the one shown below (square zig-zag / inclined reinforcement).

I have already generated the complete 3D PolyCurve successfully in Dynamo. The geometry is correct, and the PolyCurve is continuous.

The problem is that I cannot create a native Revit rebar from it.
Is there any way to create one native Revit rebar from a non-planar 3D PolyCurve?

Hi , here’s an example with Rebar.CreateFreeForm

code Python (PythonNet3)

import sys
import clr
import System
clr.AddReference('RevitAPI')
import Autodesk
import Autodesk.Revit.DB as DB
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import*

from System.Collections.Generic import IList, List

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)

doc = DocumentManager.Instance.CurrentDBDocument

clr.AddReference("System.Core")
clr.ImportExtensions(System.Linq)

# dynamo curves as input
ds_curve = IN[0]
host = UnwrapElement(IN[1])
bar_type_name = IN[2]

bar_type = (
        FilteredElementCollector(doc).OfClass(RebarBarType)
        .WhereElementIsElementType()
        .FirstOrDefault(System.Func[DB.Element, System.Boolean](lambda e_type : bar_type_name == e_type.Name))
    )
if bar_type is not None:

    TransactionManager.Instance.EnsureInTransaction(doc)        
    
    lstCLoop = List[CurveLoop]()
    curve_loop = CurveLoop.Create(
                    List[Curve](
                            [c.ToRevitType() for c in ds_curve.Curves()]
                            )
                        )
    lstCLoop.Add(curve_loop)
    
    bar = Rebar.CreateFreeForm(doc, bar_type, host, lstCLoop, RebarStyle.Standard)
    
    TransactionManager.Instance.TransactionTaskDone()
    OUT = bar