Connected alignment info

Hi, any help with the below python script? I am trying to automatically extract incoming and outgoing alignment id from the connected alignment to build the corridor.

Load the Python Standard and DesignScript Libraries

import sys
import clr

Add Assemblies for AutoCAD and Civil3D

clr.AddReference(‘AcMgd’)
clr.AddReference(‘AcCoreMgd’)
clr.AddReference(‘AcDbMgd’)
clr.AddReference(‘AeccDbMgd’)

Import references from AutoCAD

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 *

Import references from Civil3D

from Autodesk.Civil.ApplicationServices import *
from Autodesk.Civil.DatabaseServices import *

The inputs to this node will be stored as a list in the IN variables.

dataEnteringNode = IN

adoc = Application.DocumentManager.MdiActiveDocument
editor = adoc.Editor
civdoc = CivilApplication.ActiveDocument

The input should be a list of connected alignments

CAs = IN[0] # Connected Alignments (as objects)

Initialize an empty list to store parent alignment IDs

parent_alignment_ids =

try:
with adoc.LockDocument():
with adoc.Database.TransactionManager.StartTransaction() as t:
# Loop through connected alignments (CAs)
for CA in CAs:
if isinstance(CA, Alignment):
# Debug: Print alignment ID
editor.WriteMessage(“\nProcessing Alignment: {0}”.format(CA.Id))

                # Retrieve the connected alignment info
                connectedAlignmentInfo = CA.GetConnectedAlignmentInfo()

                if connectedAlignmentInfo:
                    # Retrieve and debug first (incoming) alignment ID
                    firstAlignmentId = connectedAlignmentInfo.IncomingParentAlignmentId
                    if firstAlignmentId != ObjectId.Null:
                        parent_alignment_ids.append(firstAlignmentId)
                        editor.WriteMessage("\nIncoming Parent Alignment ID: {0}".format(firstAlignmentId))
                    else:
                        editor.WriteMessage("\nIncoming Parent Alignment ID is Null for Alignment: {0}".format(CA.Id))

                    # Retrieve and debug second (outgoing) alignment ID
                    secondAlignmentId = connectedAlignmentInfo.OutgoingParentAlignmentId
                    if secondAlignmentId != ObjectId.Null:
                        parent_alignment_ids.append(secondAlignmentId)
                        editor.WriteMessage("\nOutgoing Parent Alignment ID: {0}".format(secondAlignmentId))
                    else:
                        editor.WriteMessage("\nOutgoing Parent Alignment ID is Null for Alignment: {0}".format(CA.Id))
                else:
                    editor.WriteMessage("\nConnectedAlignmentInfo is None for Alignment: {0}".format(CA.Id))

        # Commit the transaction after processing
        t.Commit()

except Exception as ex:
# In case of an error, output the error message
editor.WriteMessage(“\nError: {0}”.format(ex))

Assign your output to the OUT variable.

OUT = parent_alignment_ids

Can you attached example drawing for testing your code