--globals definition traj=#() wheel_helper=#() wheel_helper2=#() wheel=undefined verts=#() rollout wheel_align "WheelAlign v0.1" width:150 height:260 ( pickbutton pbtn_wheel "Pick wheel" pos:[2,4] width:130 height:23 label lbl3 "Start: End: Step:" pos:[5,31] width:131 height:17 spinner spn_start "" pos:[5,47] width:38 height:16 range:[0,1e+008,0] type:#integer spinner spn_end "" pos:[46,47] width:38 height:16 range:[1,1e+008,100] type:#integer spinner spn_step "" pos:[87,47] width:38 height:16 range:[1,1e+008,1] type:#integer label lbl2 "Diameter:" pos:[3,72] width:46 height:16 spinner spn_dia "" pos:[48,69] width:48 height:16 range:[-1e+008,1e+008,0] type:#float button btn_guess "Guess!" pos:[97,67] width:39 height:21 label lbl4 "Calculate rotation" pos:[33,92] width:105 height:20 label lbl5 "Calculate steering" pos:[33,112] width:105 height:20 checkbox chk_calc_rot "" pos:[16,88] width:18 height:20 checkbox chk_calc_steer "" pos:[16,109] width:18 height:20 button btn_go "GO!" pos:[11,131] width:114 height:28 --progress bar progressBar AnimateAlign "AnimateAlign" pos:[7,162] width:123 height:19 color:(color 255 0 0) --wheel diameter fn Diameter1 = ( rot = wheel.rotation.controller[2].value addmodifier wheel (edit_mesh()) for i = 1 to (getNumVerts wheel) do ( append verts (getvert wheel i).z wheel.rotation.controller[2].value = (wheel.rotation.controller[2].value + 11) ) deleteModifier wheel 1 spn_dia.value=(amax verts)-(amin verts) for j = 1 to verts.count do ( deleteitem verts verts.count ) wheel.rotation.controller[2].value = rot ) --The Magic happens here fn GOGO = ( for i = spn_start.value to spn_end.value by spn_step.value do ( sp_i = splineShape() append traj sp_i addnewSpline sp_i for j = i-1 to i do ( sliderTime = j addknot sp_i 1 #corner #line wheel.pos ) updateShape sp_i box_i = box() append wheel_helper box_i wheel_helper[wheel_helper.count].pos.controller=path follow:true path:traj[traj.count] sliderTime = animationrange.end deletekeys wheel_helper[wheel_helper.count] sliderTime = animationrange.start box2_i = box() append wheel_helper2 box2_i wheel_helper2[wheel_helper2.count].transform = wheel_helper[wheel_helper.count].transform pos1 = at time i wheel.pos pos2 = at time (i - spn_step.value) wheel.pos dist = distance pos1 pos2 rot_i = (360*dist)/(pi*spn_dia.value) animate on ( sliderTime = i if chk_calc_rot.state == true then ( wheel.rotation.controller[2].value = (wheel.rotation.controller[2].value + rot_i) ) if chk_calc_steer.state == true then ( wheel.rotation.controller[3].value = wheel_helper2[wheel_helper2.count].rotation.controller[3].value ) ) delete wheel_helper[wheel_helper.count] delete wheel_helper2[wheel_helper2.count] delete traj[traj.count] deleteitem wheel_helper 1 deleteitem wheel_helper2 1 deleteitem traj 1 animateAlign.value = ((1-((spn_end.value-i))/(spn_end.value-spn_start.value) as float)*100) ) ) --Pick wheel button on pbtn_wheel picked obj do ( if superclassof(obj) != GeometryClass then ( messagebox "Geometry only!" return false ) else ( pbtn_wheel.caption = obj.name wheel = obj ) ) --Guess button on btn_guess pressed do ( if wheel != undefined then ( Diameter1() ) else ( messagebox "Check selection!" return false ) ) --Go button on btn_go pressed do ( if wheel != undefined then ( disableSceneRedraw() setWaitCursor() GOGO() enableSceneRedraw() setArrowCursor() animateAlign.value = 0 ) else ( messagebox "Check selection!" return false ) ) ) rollout wheel_about "About" width:250 height:100 ( label lbl3 "(c) 2009" pos:[5,5] width:150 height:20 label lbl4 "Michal Maciejewski" pos:[5,20] width:110 height:20 label lbl5 "www.tas3d.com" pos:[5,35] width:110 height:20 ) theNewFloater = newRolloutFloater "Wheel Align v0.1" 150 240 addRollout wheel_align theNewFloater addRollout wheel_about theNewFloater wheel_about.open = 0