Difficulty with array and pathing to Path modifier

Hi I am still relatively new to MAxscript. I have a script that splices tube bits then
puts them on splines. Whilst the splines and the tube elements work separately, when I run the full script it falls at the path modifier section.
I am sure there is a more efficient manner to create the various bits and pieces but I have struggled over the past few days to make it shorter.
The text file script is basically this information
TUN_MCD0-CRT_SITEA_SEC_1-#001|TUN_A_LIN_1-#001|6.2|6.5|471.2|246.366|514.576|43.029|472.4|247.419|514|43.021|1.2|40|-5.332|2.70|0|0|0
TUN_MCD0-CRT_SITEA_SEC_1-#002|TUN_A_LIN_1-#002|6.2|6.5|472.4|247.419|514|43.021|473.6|248.471|513.423|43.013|1.2|40|-5.332|2.70|0|0|0
TUN_MCD0-CRT_SITEA_SEC_1-#003|TUN_A_LIN_1-#003|6.2|6.5|473.6|248.471|513.423|43.013|474.8|249.524|512.846|43.006|1.2|40|-5.332|2.70|0|0|0

Could someone please help me with a few pointers on the path modifier element?
Thanks. The code below

Fn tunelem rad1 rad2 hgt tunname Tun_CTR =
(
	arrTMP =#()
	if $tunname* != undefined then delete $tunname*
		mygroup = tunname
 
	n=60 as integer		AB=51.429 as float 		BC=51.429 as float	 CD=51.429 as float	HA= 51.429 as float
	DE=51.429 as float	EF=44.554 as float		FG=13.749 as float	GH = 44.554 as float	
	Tu_AB = tunname + "Sec_AB" as string
	Tu_BC = tunname + "Sec_BC"  as string
	Tu_CD = tunname + "Sec_CD"  as string	Tu_DE = tunname + "Sec_DE"  as string Tu_EF = tunname + "Sec_EF"  as string	Tu_FG = tunname + "Sec_FG"  as string	Tu_GH = tunname + "Sec_GH"  as string
	 sidHA = (HA/360)*n as integer		Tu_HA = tunname + "Sec_HA"  as string	sidGH = (GH/360)*(n+3) as integer
	sidAB = (AB/360)*n as integer	sidBC = (BC/360)*n as integer	sidCD = (CD/360)*n as integer	sidDE = (DE/360)*n as integer	sidEF = (EF/360)*n as integer	sidFG = 8 
	oCyl1=Tube smooth:on sides:sidAB capsegs:1 heightsegs:1 radius1:rad1 radius2:rad2 height:hgt mapcoords:on realWorldMapSize:on pos:[0,0,0] slice:on sliceFrom:-90 sliceTo:(-90-AB) name: Tu_AB
	append arrTMP (Tu_AB)
	oCyl2=Tube smooth:on sides:sidBC capsegs:1 heightsegs:1 radius1:rad1 radius2:rad2 height:hgt mapcoords:on realWorldMapSize:on pos:[0,0,0] slice:on sliceFrom:(-90-AB) sliceTo:(-90-AB-BC) name: Tu_BC 
    append arrTMP (Tu_BC)
	oCyl3=Tube smooth:on sides:sidCD capsegs:1 heightsegs:1 radius1:rad1 radius2:rad2 height:hgt mapcoords:on realWorldMapSize:on pos:[0,0,0]   slice:on sliceFrom:(-90-AB-BC) sliceTo:(-90-AB-BC-CD) name: Tu_CD
	append arrTMP (Tu_CD)
	oCyl4=Tube smooth:on sides:sidDE capsegs:1 heightsegs:1 radius1:rad1 radius2:rad2 height:hgt mapcoords:on realWorldMapSize:on pos:[0,0,0] slice:on sliceFrom:(-90-AB-BC-CD) sliceTo:(-90-AB-BC-CD-DE) name: Tu_DE
	append arrTMP (Tu_DE)
	oCyl5=Tube smooth:on sides:sidEF capsegs:1 heightsegs:1 radius1:rad1 radius2:rad2 height:hgt mapcoords:on realWorldMapSize:on pos:[0,0,0] slice:on sliceFrom:(-90-AB-BC-CD-DE) sliceTo:(-90-AB-BC-CD-DE-EF-6) name: Tu_EF
	append arrTMP (Tu_EF)
	-- Big bit to be tapered next key part
	dg = 90 - (HA+GH+FG)
	s = sliceModifier Slice_Type:2
	x5=  (rad1+ (rad2-rad1)/2)*sin(dg)
	y5 = (rad1+ (rad2-rad1)/2)*cos(dg)
	z5 = hgt/2
	Wpos = [x5,y5,z5]
	tm=(matrix3 [1,0,0] [0,1,0] [0,0,1] [x5,y5,z5]) 
	yrots = (10 - (GH+HA) )+ FG 
	print yrots
	Wrot = (eulerangles 96 -71 90) as quat
   oCylob = oCyl5
	addModifier oCyl5 s
	objTM = oCyl5.objectTransform
	modTM = getModContextTM oCylob s
	s.Slice_Plane.rotation = Wrot * modTM - (inverse (objTM as quat)) 
	s.Slice_Plane.pos = [x5,y5,z5]*  (inverse objTM)
	convertTo OCylob Editable_Poly
 
	oCyl6=Tube smooth:on sides:sidFG capsegs:1 heightsegs:1 radius1:rad1 radius2:rad2 height:hgt mapcoords:on realWorldMapSize:on pos:[0,0,0] slice:on sliceFrom:(12-90-AB-BC-CD-DE-EF) sliceTo:(-90-AB-BC-CD-DE-EF-FG-6) name: Tu_FG
	append arrTMP (Tu_FG)
	dg = 90 - (HA+GH)
	s = sliceModifier Slice_Type:2
	x5=  (rad1+ (rad2-rad1)/2)*sin(dg)
	y5 = (rad1+ (rad2-rad1)/2)*cos(dg)
	z5 = hgt/2
	Wpos = [x5,y5,z5]
	tm=(matrix3 [1,0,0] [0,1,0] [0,0,1] [x5,y5,z5]) 
	yrots = (10 - (GH+HA) )+ FG 
	print yrots
	Wrot = (eulerangles 84 -84 90) as quat
   oCylobz = oCyl6
	addModifier oCyl6 s
	objTM = oCyl6.objectTransform
	modTM = getModContextTM oCylobz s
	s.Slice_Plane.rotation = Wrot * modTM - (inverse (objTM as quat)) 
	s.Slice_Plane.pos = [x5,y5,z5]*  (inverse objTM)
	--convertTo OCylobz Editable_Poly
	dg = 90 - (HA+GH+FG)
		s = sliceModifier Slice_Type:3
	x5=  (rad1+ (rad2-rad1)/2)*sin(dg)
	y5 = (rad1+ (rad2-rad1)/2)*cos(dg)
	z5 = hgt/2
	Wpos = [x5,y5,z5]
	tm=(matrix3 [1,0,0] [0,1,0] [0,0,1] [x5,y5,z5]) 
		Wrot = (eulerangles 96 -71 90) as quat
		 oCylobz6 = oCylobz
		addModifier oCylobz s
	objTM = oCylobz.objectTransform
	modTM = getModContextTM oCylobz6 s
	s.Slice_Plane.rotation = Wrot * modTM - (inverse (objTM as quat)) 
	s.Slice_Plane.pos = [x5,y5,z5]*  (inverse objTM)
	--convertTo OCylobz6 Editable_Poly
 
	oCyl7=Tube smooth:on sides:10 capsegs:1 heightsegs:1 radius1:rad1 radius2:rad2 height:hgt mapcoords:on realWorldMapSize:on pos:[0,0,0] slice:on sliceFrom:(-90-AB-BC-CD-DE-EF-FG +12) sliceTo:(-90-AB-BC-CD-DE-EF-FG-GH) name: Tu_GH
	append arrTMP (Tu_GH)
	-- Big bit to be tapered next key part
	dg = 90 - (HA+GH)
	s = sliceModifier Slice_Type:3
	x5=  (rad1+ (rad2-rad1)/2)*sin(dg)
	y5 = (rad1+ (rad2-rad1)/2)*cos(dg)
	z5 = hgt/2
	Wpos = [x5,y5,z5]
	tm=(matrix3 [1,0,0] [0,1,0] [0,0,1] [x5,y5,z5]) 
	Wrot = (eulerangles 84 -84 90) as quat
   oCylob7 = oCyl7
	addModifier oCyl7 s
	objTM = oCyl7.objectTransform
	modTM = getModContextTM oCylob7 s
	s.Slice_Plane.rotation = Wrot * modTM - (inverse (objTM as quat)) 
	s.Slice_Plane.pos = [x5,y5,z5]*  (inverse objTM)
	--convertTo OCylob7 Editable_Poly
 
oCyl8=Tube smooth:on sides:sidHA capsegs:1 heightsegs:1 radius1:rad1 radius2:rad2 height:hgt mapcoords:on realWorldMapSize:on pos:[0,0,0] slice:on sliceFrom:(-90-AB-BC-CD-DE-EF-FG-GH) sliceTo:(-90-AB-BC-CD-DE-EF-FG-GH-HA) name: Tu_HA
	append arrTMP (Tu_HA)
 --select arrTMP
-- #### Falls here #### 
for i = 1 to arrTMP.count do
		(
		pdef = SpacePathDeform()
			p = getNodeByName Tun_CTR
			oCylg = arrTMP[i].name
	addModifier oCylg pdef
			oCylg.path =  p
	oCylg.modifiers[#Path_Deform_Binding].Percent_along_path  = 0.0 --default: 0.0
	oCylg.modifiers[#Path_Deform_Binding].rotation = 0.0  --default: rotc  
	oCylg.modifiers[#Path_Deform_Binding].axis = 2 -- default: 2
	oCylg.modifiers[#Path_Deform_Binding].Flip_deformation_axis = 1
	oCylg.transform = p.transform    --MOVE TO PATH!
			--Ocylparent= arrTMP[1]
  --if par != 0 then (Ocylparent.parent = par)
		)
)
 
-- open data file of tunnel section 
 
desproj = sysInfo.currentdir -- Fix this
n = getOpenFileName caption:"Open Tunnel Elements File:"  filename: desproj
 
f = openfile n mode:"r"
count = 0
if $'*_LIN_*' != undefined then delete $'*_LIN_*'	
while not eof f do
(
  l = readline f
  data = filterstring l "|"
--/////////////////////////////////////////////////
	--TUN_SEC_A-#0000|TUN_LIN_A-#0000|1451.699|470.29|-8.361|1454.385|470.26|-8.523|10|11|3|0|11301
-- variables   
 global tunname = data[1] as string
 global Tun_CTR = data[2] as string
  fie = data[6] as float
  fin = data[7] as float
  fiz = data[8] as float
  ene = data[10] as float
	enn = data[11] as float
	enz = data[12] as float
 global rad1 = data[3] as float
  global rad2 = data[4] as float
 global hgt = data[13] as float
		--par = getNodeByName data[14] 
		--\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\   
 
-- Create Tunnel CTR String
         myCTRTun= splineShape name: ( uniqueName Tun_CTR)
         addnewspline myCTRTun
           (
            addknot myCTRTun 1 #corner #line (point3 fie fin fiz)
	    addknot myCTRTun 1 #corner #line (point3 ene enn enz)
            )
			updateshape myCTRTun
 
z = tunelem rad1 rad2 hgt tunname Tun_CTR
			clearselection ()
		)
		close f
<code>