As I suggested earlier for me I would tend to use the rotate3d function, you take a shape place on the start of the path, then stand it up vertically and rotate to be at 90 degrees to the path. This is an example take shape drawn in World, rotate to align with path, move based on correct base point, I used m2p picked center of flanges, then end of path, rotate3d so stand shape vertical, then did Extrude using path. It could be a lisp.

Thought straight away lines or plines on angle but flat no 3d. For say UB would get mid point flanges, then mid top and get angle, then realign to match angle of line etc and stand up vertical.
This is line only as a test if happy will add more objects, The paths can be at angles.
(defun c:dbeam ( / oldang oldang pt1 pt2 pt3 pt4 ang1 ang2 ent1 ent2 )
(setq oldang (getvar 'aunits))
(setvar 'aunits 3)
(setq oldsnap (getvar 'osmode))
(setq pt1 (getpoint "\nPick base point on object "))
(setq pt2 (getpoint "\nPick 2nd point for alignment "))
(setq ang1 (angle pt1 pt2))
(setq ent1 (ssname (ssget pt2) 0))
(setvar 'osmode 1)
(setq ent2 (car (entsel "\nPick path near start end ")))
(setq entg (entget ent2))
(setq pt3 (cdr (assoc 10 entg)))
(setq pt4 (cdr (assoc 11 entg)))
(setq ang2 (angle Pt3 pt4))
(setvar 'osmode 0)
(command "move" ent1 "" pt1 pt3)
(command "rotate" ent1 "" pt3 (- ang2 ang1))
(command "ucs" "OB" ent2 )
(command "rotate3d" ent1 "" "Y" "0,0,0" (/ pi 2.))
(command "UCS" "W")
(command "extrude" ent1 "" "path" ent2)
(setvar 'aunits oldang)
(setvar 'osmode oldsnap)
(princ)
)
(c:dbeam)