EndPoint of a Autodesk.Aec.Structural.DatabaseServices.Member

Greetings,
After importing IFC to Civil 3D.
I then need a report of the Autodesk.Aec.Structural.DatabaseServices.Member objects (Beams).
For each member, we have the WCS StartPoint. How do you get the WCS EndPoint?
I guessed at using the Orientation property with a TransformBy.
That’s not correct though. (refer strange red lines in image below).
Thx for your patience,
K.

import clr
clr.AddReference('AcMgd')
clr.AddReference('AcCoreMgd')
clr.AddReference('AcDbMgd')
clr.AddReference('AecBaseMgd')
clr.AddReference('AeccDbMgd')

clr.AddReference('AecPropDataMgd')
clr.AddReference('AecStructureMgd')

from Autodesk.AutoCAD.Runtime import *
from Autodesk.AutoCAD.ApplicationServices import *
from Autodesk.AutoCAD.EditorInput import *
from Autodesk.AutoCAD.DatabaseServices import *
from Autodesk.AutoCAD.Geometry import *

from Autodesk.Civil.ApplicationServices import CivilApplication

from Autodesk.Aec.PropertyData import *
from Autodesk.Aec.PropertyData.DatabaseServices import *

from Autodesk.Aec.Structural.DatabaseServices import *

from traceback import format_exc

doc = Application.DocumentManager.MdiActiveDocument
db = doc.Database
tm = db.TransactionManager

extents_list = []
elog = []

with tm.StartTransaction() as tr:
    try:
        msid = SymbolUtilityServices.GetBlockModelSpaceId(db);
        btr = tr.GetObject(msid, OpenMode.ForRead)
        for obj_id in btr:
            obj = tr.GetObject(obj_id, OpenMode.ForRead)
            if(obj is None):
                continue
            xd = []
            sm = obj
            if not isinstance(sm, Member):
                continue
            otrans = sm.Orientation
            sp = str(sm.StartPoint)
            ep = str(sm.EndPoint.TransformBy(otrans))
            sp = sp.replace("(","")
            sp = sp.replace(")","")
            sp = sp.replace(","," ")
            #
            ep = ep.replace("(","")
            ep = ep.replace(")","")
            ep = ep.replace(","," ")
            #
            xd.append(sp)
            xd.append(ep)
            xd.append("")
            xd.append("")
            xd.append("")
            propSets = PropertyDataServices.GetPropertySets(obj)
            for propSet in propSets:
                pset = tr.GetObject(propSet,OpenMode.ForRead)
                psd = tr.GetObject(pset.PropertySetDefinition, OpenMode.ForRead) 
                for d in psd.Definitions:
                    propertyId = pset.PropertyNameToId(d.Name)
                    value = pset.GetAt(propertyId);
                    if(d.Name == "Name"):
                        xd[2] = value
                    if(d.Name == "ObjectType"):
                        xd[3] = value
                    if(d.Name == "Reference"):
                        xd[4] = value
            extents_list.append(xd)
    except:
        elog.append(format_exc())
    tr.Commit()

OUT = [extents_list,elog]

C3D-aecs-members-03.dyn (12.8 KB)

a-Roof.dwg (3.9 MB)