Profile Curves Length

try

import sys
import clr

clr.AddReference('AcMgd')
clr.AddReference('AcDbMgd')
clr.AddReference('AeccDbMgd')
#clr.AddReference('ProtoGeometry')
import clr
clr.AddReference('ProtoGeometry')
import Autodesk.DesignScript.Geometry
from Autodesk.DesignScript.Geometry import *

clr.AddReference('DSCoreNodes')
from DSCore import *

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

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

from System.Collections.Generic import Dictionary

adoc = Application.DocumentManager.MdiActiveDocument
cdoc = CivilApplication.ActiveDocument




def get_sample_line_info(sampleLines):
	
	global adoc
	global cdoc
	
	output = []
	

	if not sampleLines:
		return
	
	if not isinstance(sampleLines, list):
		sampleLines = [sampleLines]

	with adoc.LockDocument():
	    with adoc.Database as db:
	        with db.TransactionManager.StartTransaction() as t:
				for sampleLine in sampleLines:	
					sampleLineId = sampleLine.InternalObjectId
					obj = t.GetObject(sampleLineId, OpenMode.ForRead)
					objpv = obj.PVIs
					for saPVI in objpv:
					    VerticalC= saPVI.VerticalCurve
					    if VerticalC:
					       output.append( str(saPVI.Station) + " "+ str(saPVI.Elevation) +" "+  str(VerticalC.Length))
					    else:
					         output.append( str(saPVI.Station) +" "+  str(saPVI.Elevation) +" "+ " " )
					outputFlatten =List.Flatten(output, -1)
		
				t.Commit()
	return output 		

OUT = get_sample_line_info(IN[0])

2 Likes