Edit Baseline StartStation value

Hello, here is the pythonized code:

#Edit Corridor Baseline Stations

__author__ = 'Jesus A Duran - jduran@moffattnichol.com'
__version__ = '0.0.0'

# 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('AecBaseMgd')
clr.AddReference('AecPropDataMgd')
clr.AddReference('AeccDbMgd')
clr.AddReference('AeccPressurePipesMgd')
clr.AddReference('acdbMgdbRep')

# Create an alias to the Autodesk.AutoCAD.ApplicationServices.Application class
import Autodesk.AutoCAD.ApplicationServices.Application as acapp

# 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 for PropertySets
from Autodesk.Aec.PropertyData import *
from Autodesk.Aec.PropertyData.DatabaseServices 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 = acapp.DocumentManager.MdiActiveDocument
ed = adoc.Editor
   
def edit_station(co_name, re_name, new_station_val):
	global adoc
	
	corrid = None
	
	output = {}
	
	with adoc.LockDocument():
		with adoc.Database as db:
			with db.TransactionManager.StartTransaction() as t:
				bt = t.GetObject(db.BlockTableId, OpenMode.ForWrite)
				btr = t.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite)
				
				for oid in btr:
					obj = t.GetObject(oid, OpenMode.ForWrite)
					if isinstance(obj, Corridor):
						if obj.Name == co_name:
							corrid = oid
							break
				
				if corrid is None:
					return "Corridor not found"
				corr = t.GetObject(corrid, OpenMode.ForWrite)
				baseReColl = corr.Baselines[0].BaselineRegions
				baseRegion = baseReColl[re_name]
				baseRegion.StartStation = new_station_val
				for a in dir(baseRegion):
					try:
						output[a] = getattr(baseRegion, a)
					except:
						pass
				t.Commit()
	return baseRegion.StartStation

OUT = edit_station(IN[0],IN[1],IN[2])

So the dynamo code will be like this:


Where “Edit Corridor baseline stations” has the phyton code.

Hope this is helpfull to someone

2 Likes