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