-- http://www.scriptspot.com/forums/3ds-max/general-scripting/when-changes-do ( global Ar_Hpoint = #() global Ar_Line = #() global Ar_All = #(Ar_Hpoint, Ar_Line) Fn ADDpoint &ArrayA = --- & means in/out paramiter ( local p = point box:true cross:false size:20 constantscreensize:false append ArrayA p ) Fn drawLineBetweenTwoPoints pointA pointB &ArrayC = --- & means in/out paramiter ( local s = SplineShape pos:pointA append ArrayC s addNewSpline s addKnot s 1 #corner #line PointA addKnot s 1 #corner #line PointB updateShape s ) ADDpoint &Ar_Hpoint ADDpoint &Ar_Hpoint move Ar_Hpoint [2] [50,0,0] ADDpoint &Ar_Hpoint move Ar_Hpoint [3] [100,0,0] drawLineBetweenTwoPoints Ar_Hpoint[1].pos Ar_Hpoint[2].pos &Ar_Line drawLineBetweenTwoPoints Ar_Hpoint[2].pos Ar_Hpoint[3].pos &Ar_Line --------- NEW PART --------- local str = stringStream "" for i = 1 to 2 do ( format "when transform Ar_Hpoint[%] changes do (setKnotPoint Ar_Line[%] 1 1 Ar_Hpoint[%].pos ; updateShape Ar_Line[%])\n" i i i i to:str format "when transform Ar_Hpoint[%+1] changes do (setKnotPoint Ar_Line[%] 1 2 Ar_Hpoint[%+1].pos ; updateShape Ar_Line[%])\n" i i i i to:str ) execute(str as string) --first part /* when transform Ar_Hpoint[1] changes do (setKnotPoint Ar_Line[1] 1 1 Ar_Hpoint[1].pos ; updateShape Ar_Line[1]) when transform Ar_Hpoint[2] changes do (setKnotPoint Ar_Line[1] 1 2 Ar_Hpoint[2].pos ; updateShape Ar_Line[1]) when transform Ar_Hpoint[2] changes do (setKnotPoint Ar_Line[2] 1 1 Ar_Hpoint[2].pos ; updateShape Ar_Line[2]) when transform Ar_Hpoint[3] changes do (setKnotPoint Ar_Line[2] 1 2 Ar_Hpoint[3].pos ; updateShape Ar_Line[2]) */ --second part /* for i = 1 to 2 do ( when transform Ar_Hpoint[i] changes do (setKnotPoint Ar_Line[i] 1 1 Ar_Hpoint[i].pos ; updateShape Ar_Line[i]) when transform Ar_Hpoint[i+1] changes do (setKnotPoint Ar_Line[i] 1 2 Ar_Hpoint[i+1].pos ; updateShape Ar_Line[i]) ) */ --third part /* for b=1 to 2 do ( global i=b when transform Ar_Hpoint[i] changes do (setKnotPoint Ar_Line[i] 1 1 Ar_Hpoint[i].pos ; updateShape Ar_Line[i]) when transform Ar_Hpoint[i+1] changes do (setKnotPoint Ar_Line[i] 1 2 Ar_Hpoint[i+1].pos ; updateShape Ar_Line[i]) ) */ )