Copying uniformly distributed loads using RIR

Hello Guys

Please tell me how to copy uniformly distributed loads, I try using Clone Element and Element Curve nodes, but I get errors?

As per my understanding we need analytical host element to apply the loads. May be you should try API method to create a new area load.

1 Like

Hi @Foxman

You can use setloop method to assign new area to your load if its not constrained.

import clr
clr.AddReference("RevitAPI")
clr.AddReference("RevitAPIUI")
clr.AddReference("RhinoInside.Revit")
clr.AddReference("System")

from RhinoInside.Revit import Revit
from RhinoInside.Revit.Convert.Geometry import GeometryEncoder
from Autodesk.Revit import DB
from System.Collections.Generic import List

# Inputs from Grasshopper
area_load = AreaLoadElement  # AreaLoad element (from Graphical Element)
rhino_curves = RhinoCurves   # List of Rhino.Geometry.Curve objects 

doc = Revit.ActiveDBDocument

t = DB.Transaction(doc, "Set Area Load Loops")
t.Start()

try:
    curve_loop = DB.CurveLoop()
    for rh_crv in rhino_curves:
        revit_curve = GeometryEncoder.ToCurve(rh_crv)
        curve_loop.Append(revit_curve)

    curve_loops = List[DB.CurveLoop]()
    curve_loops.Add(curve_loop)

    success = area_load.SetLoops(doc, curve_loops)

    t.Commit()

except Exception as e:
    t.RollBack()
    result.append(f"Error: {str(e)}")

If you have defined your base area load using the Boundary option, you can use the following workflow to copy the load and assigned it to the new boundary.

1 Like

Just to add, since the load is defined by a sketch, and as long as you are going to maintain the same count of segments (their geometry can not change from line to arcs etc.)… you can access them through the sketch lines component and modify them through Element Curve

2 Likes