gH]kDwP&trueSpaceBeta 7.61[VS_O93YJClinton Reese, Clintons 3D Creations`d8pM*#ͺOPNG  IHDR`ZKIDATxJQ/,VQ\46Dq U$7+h(MZPDTD&&c6At!Hrs o9>x9I>}^)L` S0)L` S0)L` S0)L` S0)L` S0)L` S0)L` S0)L` S0,@m,;A `uV1Oh9vJ{ixLx^ Fjvl@}xt n^2_\ߊk~fؼ$^tep@z6-fVҕ5,aTof3ユwߦR{W䟀j=Xds?<_rIwP( b#װVyIͭLl` M#^jwhn-[,G7ֲAFo Kep%~ w2`8 d S0)L` SWAiIENDB`/tfѭ8Lwb"q?܂dKu=|**install lathe button0x#.;]kI 忞@.;]kI 忞@"SubObject*Encapsulated objects"0x#3+3+3+x#4W}@O{4W}@O{$ Owner4Owner of the Encapsulator$(XFҦV(XFҦV"LE2Data$LE2 Data for node >g'JNjn*p" zFAa| zFAa|DhelpText\vRm)EC!avRm)EC!aD leftClickScript\1V {E!Y1V {E!YD name\!K0}q!K0}qD"rightClickScript\-1OSM n-1OSM n"LayoutLayout 럆L<_ї"1V {E!YsayHello!K0}q2System.Alert("goodbye");(XFҦV>g'JNjn*pFDk@@T@B?vRm)EC!a<System.Alert("hello there!"); zFAa|say hello-1OSM n 럆L<_їˁDefaultOˁ CRih[ }}LActivity.Run('%THIS_NAME%' + "/doIt")8install buttons and scriptsZ`Ez]UO GFʠN= 0 ,}} version 1.0Z`Ez]UO}},e#Te#tK`._E#ބ6*CustomFrame(x#.;]kI 忞@"3+0x#4W}@O{$*O΢C}*O΢C} WinIDWindow ID0x#-pϗO 0)t-pϗO 0)PositionShelf Position mz!OHwcx#x#>-MD'zZt>-MD'zZRectangle"Screen Rectangle THj6F 2s*Vy#RÒGbDeC tRÒGbDeC  WidthWindow widthx#x#[FB%n*jt[FB%n*jHeightWindow heightx# [GDJM [GDJMMin Width$Min. Window width%]GJ7ψ%]GJ7ψMin Height&Min. Window height^^Dy^^DyMax Width$Max. Window widthv43N tv43N tMax Height&Max. Window height~൱D@ j#^c~൱D@ j#^cMaximized(Window Is Maximized 9@'s9@'sRootNodeRootNode{Q !aOt {Q !aOt  TitleTitle Text6*Mv46*Mv4View Index$View window indexf$I `7f$I `7Frame TypeFrame Typej^G@!,j^G@!,"ViewersViewers array 2bOdA)f "I)LL !I)LL ! Def1D Default 1D GUID8M0cry8M0cry Def2D Default 2D GUIDF L$3F L$3 Def3D Default 3D GUIDobFFJL}obFFJL}SnappedTo$Snapped To WindowBXPjKɸtEBXPjKɸtE SnappedToTarget@Snapped To Window Target CornerkJHx(V@WkJHx(V@W SnappedToSource@Snapped To Window Source CornerKTLA7~fKTLA7~f"SnappedToOffsetX6Snapped To Window Offset XK8Y8O#=gtMK8Y8O#=gtM"SnappedToOffsetY6Snapped To Window Offset Ymk~_Lb.mk~_Lb.SnappedToWidth0Snapped To Window Width|7EId |7EId  SnappedToHeight2Snapped To Window HeightKXtO LKXtO L,StartSnappedToOffsetXBStart Snapped To Window Offset XVG))jHETVG))jHET,StartSnappedToOffsetYBStart Snapped To Window Offset Y?V{N7l?V{N7lSnappedToRatio,Snapped To Ratio Mode 86*n^HD9t 86*n^HD9t OwnedByOwned By|_ D|_ DTabsAsButtons Tabs As Buttons _N>G1_N>G1HiddenHidden Flag \q^2FII3w\q^2FII3wPreference,View Preference Panel >=жaMpT>=жaMpT&HideDockedTitlebarJHide Title bar when window is docked N'D)L-N'D)L-MinimizedBHJWindow Is Minimized into Blue Handle ϕ`&FSx9wϕ`&FSx9wSizeLockPrevent horizontal and/or vertical size change. 0x01 - horizontal, 0x02 - vertical˽OS˽OSDispTitleText,Display Titlebar Text Ī8mݧC>!7Ī8mݧC>!7SmallerTabs*Display smaller Tabs (XFҦV"&BXPjKɸtEkJHx(V@W|_ D8M0cryN{485B725E-A69D-4AD5-A876-B3BBA72D2C0A}mk~_Lb.[FB%n*jRÒGbDeC 1 [GDJM6*Mv4K8Y8O#=gtM\q^2FII3w{Q !aOt f$I `7v43N t I)LL !obFFJL}Ī8mݧC>!7^^Dy(XFҦV>g'JNjn*pFBtBX@1@?*O΢C}N{5FDDFE6E-518F-464A-B4B9-8D24B556E36C}9@'s_N>G1-pϗO 0)mz!OHwc ˽OSF L$3>=жaMpTϕ`&FSx9w>-MD'zZ%]GJ7ψj^G@!,2bOdA)f 6^r[HJv-, ^r[HJv-, KXtO LVG))jHET?V{N7l ~൱D@ j#^cKTLA7~f|7EId 86*n^HD9t N'D)L-^r[HJv-, ^*Toolbar.;]kI 忞@"3+4W}@O{$n_<&KES Qn_<&KES Q NameItem nameo(K ]p do(K ]p dHelpTextHelp text8Cechg8Cechg RowsToolbar RowsNL {NL {$Dimension$Toolbar dimension$Z_IFL!OSZ_IFL!OSHorizontal Horizontal Flag .S)A2UЍc.S)A2UЍcIsSubToolbar$IsSubToolbar Flag =JM@hM Q3=JM@hM Q3IsImportant2IsImportant Toolbar Flag .UuwO e.UuwO eIDToolbar ID'0#ԪC'X/9}'0#ԪC'X/9}$ IndexItem Index$_N>G1JdWJc~JdWJc~PrototypePrototype name<9BH@b\<9BH@b\IsMinimizedPTrue/False flag if toolbar is minimized m O1Wwm O1Ww$IsAspectT(Aspect Toolbar Flag $(XFҦV".UuwO e'0#ԪC'X/9}=JM@hM Q3 m O1Ww(XFҦV>g'JNjn*pFBCb@ f@?NL {Z_IFL!OS _N>G18CechgJdWJc~n_<&KES Q.S)A2UЍc o(K ]p d<9BH@b\ 48@J g'JNjn*pceZU@䑧rceZU@䑧r$_scriptData*Internal Script data [җJs@ %3+4W}@O{$(XFҦVLE2Data, 1#J@#QLJ@#QLLE2Data$LE2 Data for node >g'JNjn*pLE2Data, 3MT^RwL~YYTMT^RwL~YYTޢLE2Data$LE2 Data for node >g'JNjn*pLE2Data, 22|=Bynj2|=Bynj Control OutTransitionOutz@Hoz@Ho Control InTransitionIn 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommandx // Execute // Called to execute the command function Execute(params) { // TODO: put your action code here owner = System.ThisOwner(); button1 = "latheButton"; theScript = "latheScript"; // if(Node.Exists("/Project/Windows Manager Space/CustomFrame/Toolbar/" + button1)) { replaceLeft = System.Question(button1 + " button already exists in the toolbar. Would you like to replace it?"); if(replaceLeft) Node.Delete("/Project/Windows Manager Space/CustomFrame/Toolbar/" + button1); else return; } //check for and create customframe if(!Node.Exists("/Project/Windows Manager Space/CustomFrame")) Node.Copy(owner + "/CustomFrame","/Project/Windows Manager Space"); //copy buttons to custom frame oldButt = Node.Copy(owner + "/" + button1,"/Project/Windows Manager Space/CustomFrame/Toolbar"); //copy script to custom commands //create CustomCommands if(!Node.Exists("/Scripts/CustomCommands")) { temp = Node.Create("Kernel Package/Object","/Scripts"); custcom = Node.Rename(temp,"CustomCommands"); } if(Node.Exists("/Scripts/CustomCommands/" + theScript)) { replaceLeft = System.Question(theScript + " script already exists. Would you like to replace it?"); if(replaceLeft) Node.Delete("/Scripts/CustomCommands/" + theScript); else return; } Node.Copy(owner + "/" + theScript,"/Scripts/CustomCommands"); //activate it WindowsManager.Activate(); WindowsManager.UpdateWindowsStructure(); //reset the toolbar //1D Aspect WindowsManager.SetWindowAspect('/Project/Windows Manager Space/CustomFrame', 1); //2D Aspect WindowsManager.SetWindowAspect('/Project/Windows Manager Space/CustomFrame', 2); } NScript Object Package/jScript language#`4W}@O{(XFҦV>g'JNjn*pn7C`b@H@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їjControlOˁ CRih[ Ca8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0 Ca:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@HoR/$ķKniaW*latheButton.;]kI 忞@"3+4W}@O{$n_<&KES Qo(K ]p dQm6l3Ll/V^Qm6l3Ll/V^CommandAction commandN="QEj%:N="QEj%:RClickCommand,RClick Action Command$ܿORE bi$ܿORE biPreview2D8Item preview 2D resource id*S]?G[~x;*S]?G[~x;Preview3D8Item preview 3D resource id'0#ԪC'X/9}'0#ԪC'X/9} IndexItem IndexSr)B8Sr)B8Package"Package class idDNOQsP'ѭDNOQsP'ѭBitmap.Item preview 3D bitmap eSBgciDsL[wiDsL[wRadio Group(Radio buttons group4E*4E*ControlID2D&User Control ID 2Dh>ǑJ]@<h>ǑJ]@<ControlID3D&User Control ID 3D+fyOA7XC+fyOA7XC MaxItemBmpWidth2Maximal item bitmap sizeTl@fC.^&GZTl@fC.^&GZ"MaxItemBmpHeight2Maximal item bitmap sizeh0OY~ C h0OY~ C  MaxItemTxtWidth.Maximal item text size]8teO?s]8teO?s"MaxItemTxtHeight.Maximal item text size sH?DC sH?DCTagTagIlfāA>ˁwIlfāA>ˁwTagAliasTag Alias/ru|GF0/ru|GF0AgentIDUpdate agentID][D+Iv(][D+Iv( MenuAct As Menu ?Aυ D)7t?Aυ D)7tGrayPercentxGray icon about specified percents if it is not highlighted8{Nm(!8{Nm(!IsMenuButtonIs Menu Button (XFҦV"-1OSM n"ko6V__8(<[j]MN#a6[-i3lv$q*-k|{}"\sGbqqXLEk;-.ﳕ-}eۇ~z)7_gqA֛$) k7pWn簚5.km)q;>CҮA=ps"ߥo&d{#iH6@z4xjdO{ S쾎ޛHM;m"<$C7 ̻EZ9#v8y Itz' }G~FkH ٮ(>AL*-ʲD9 ?vKG(؄ܡ|jsXp!C>@ޯµEV ncԖ qx?= yG&!+y'"w-z@!{ b+_ۅ2Q0!ac4fb^Di2;Fr 5$m["2ÈqD lAޖo.(r7.aHሳ0$y&!cI]߿b!~ sPA&:'М7*Դ#vb1ZF'ڏ-#27]"EHA,ۃȪ Uk0gz V[[!g4O,1܊PشsTf舵m88{wpѮ2!/hyqܣ~jefFS՚KvbvK*XFĵ\}5D>ޡ|E4W=SmEBci1p=c&X\lB Y6MCbGe ^(Oy[Bu!TRI|#P}YzVFfPFf}4E3sF3&Dk “*{F2 1#Sd/ x)1={e!(Βj!KRGF:7 \C&-*|+e)@܀ŕ^@=C|?]N-}?X,1F`9{?տxemTWB,ڏa%nyZ7M\# 0L&3'-[DS@}$8C(~s9=EHϱ/՜Id6Ɔfe6-_{o@R)bwl@@k[dl~OmoLuؽj,f616k#ŷ'=ur8gO,kz޼b62c^{"Ec5zױzwsX}q:OTc sH?DC܂dKu=*latheScript3+.;]kI 忞@"3+3+3+3+3+4W}@O{$(XFҦV"-1OSM n"(XFҦV>g'JNjn*pFGDBd@@@CpA?-1OSM n 럆L<_ї˜ GFʠN=( ,}} version 1.0Z`Ez]UO}}48@J `g4RJLUDB3+3+CܞiEE^$CܞiEE^$BcurobjB3+2|=Bynjz@Ho 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ *NewCommand// Execute // Called to execute the command function Execute(params) { scene = Space.CurrentScene(); owner = System.ThisOwner(); //if not PE return firstSel = Node.FirstSelected(); if(!firstSel) { System.Alert("Select one or more mesh faces first."); return; } if(!Node.ConExists(firstSel,"Mesh") || Node.IsCamera(firstSel) || Node.IsLight(firstSel)) { System.Alert("Select one or more mesh faces first."); return; } if(!Node.ConExists(firstSel,"Selection")) { System.Alert("Select one or more mesh faces first."); return; } workMatrix = System.CreateDO("Math Package/Matrix Float Data"); workMatrix = Node.Value(firstSel,"WldMatrix"); rollabs = Math.abs(workMatrix.GetRoll()); yawabs = Math.abs(workMatrix.GetYaw()); pitchabs = Math.abs(workMatrix.GetPitch()); small = 0.0001 if(rollabs > small || yawabs > small || pitchabs > small) { System.Alert("The source object must have all rotations = 0"); return; } params.ConValue("curobj") = firstSel; thesel = System.CreateDO("Space 3D Package/Selection Data"); thesel = Node.Value(firstSel,"Selection"); //save selection type and indices - face, edge params.ConValue("savesel") = thesel; //numedges = thesel.GetNumSelectedEdges(); numfaces = thesel.GetNumSelectedFaceTriangles(); //if not face or edge return //if(numedges==0 && numfaces==0) return; //if not face return if(numfaces==0) return; //if(!Node.Exists(scene + "/latheGuides")) // Node.Copy(owner + "/latheGuides", scene); //Widgets.ActivateToolWidget("Widgets/Tools/mesh editor/PE Target Weld tool",''); MeshModifiers.DuplicateSelection(''); MeshModifiers.SeparateSelected(''); //exit PE mode Widgets.ActivateDefaultWidget(); subcnt = Node.SubObjectCount(scene); newmesh = Node.SubObject(scene,subcnt-1); Node.Select(scene + "/" + newmesh); //set render mode to wireframe D3DView.ShowRenderAttribsForObject('',''); objrend = scene + "/" + newmesh + "/Object Render Attributes"; Node.Value(objrend, "Ignore layer attributes") = -1; Node.Value(objrend, "Edges opacity") = 1; Node.Value(objrend, "Surface Opacity") = 0; Activity.Run("/Scripts/CustomCommands/latheScript/preLatheArray") } NScript Object Package/jScript language\e)@Space 3D Package/Selection Datasavesel >`g4RJLUD^ԪFleƱstringcurobjCܞiEE^$4W}@O{CܞiEE^$N/Project/curvesDevelopment, 4/Plane, 3(XFҦV>g'JNjn*pnC`@@T@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?^ԪFleƱ>`g4RJLUDz@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// doGrid // convert a scene object to a radial array object // December 4 2010 // Clinton Reese clintons3d.com // // Execute // Called to execute the command function Execute(params) { //owner of this encapsulator owner = System.ThisOwner(); //the selected node firstsel = Node.FirstSelected(); //the owner of the selected node firstselowner = Node.Owner(firstsel); //scratch working matrices workMatrix = System.CreateDO("Math Package/Matrix Float Data"); workMatrix2 = System.CreateDO("Math Package/Matrix Float Data"); //be sure selection has a wldmatrix connector if(!Node.ConExists(firstsel,"WldMatrix")) { System.Alert("Not a valid selection"); return; } workMatrix = Node.Value(firstsel,"WldMatrix"); rollabs = Math.abs(workMatrix.GetRoll()); yawabs = Math.abs(workMatrix.GetYaw()); pitchabs = Math.abs(workMatrix.GetPitch()); small = 0.0001 if(rollabs > small || yawabs > small || pitchabs > small) { System.Alert("The source object must have all rotations = 0"); return; } //copy grid to the owner of the selected object thegrid = Node.Copy(owner + "/radialArrayTemplate",firstselowner); //note if object ownermatrix is connected and to what - take encapsulation into account ownermatcount = Node.LinkedInputNodeCount(firstsel,"OwnerMatrix"); if(ownermatcount>0) { ownermatnode = Node.LinkedInputNode(firstsel,"OwnerMatrix",0);//full name, index 0 } else ownermatnode = ""; //translate array to the selected object workMatrix = Node.Value(firstsel,"ObjMatrix"); workMatrix2.LoadIdentity(); workMatrix2.SetTransX(workMatrix.GetTransX()); workMatrix2.SetTransY(workMatrix.GetTransY()); workMatrix2.SetTransZ(workMatrix.GetTransZ()); Node.Value(thegrid,"Matrix") = workMatrix2; //move selected object into grid encapsulator //theoriginal = Node.Move(firstsel,thegrid);move result empty node theoriginal = Node.Copy(firstsel,thegrid); Node.Delete(firstsel); //set local translation of the object to (0,0,0) workMatrix2 = Node.Value(theoriginal,"ObjMatrix"); workMatrix2.SetTransX(0); workMatrix2.SetTransY(0); workMatrix2.SetTransZ(0); Node.Value(theoriginal,"Matrix") = workMatrix2; // //both local and world coord // //connect the object owner matrix to the grid world matrix Node.ConnectTo(thegrid + "/Transform", "WldMatrix", theoriginal, "OwnerMatrix"); //rename the original mesh object newname = Node.Rename(theoriginal,"meshObj"); //remove cone object placeholder Node.Delete(thegrid + "/replaceme"); //connect grid to ownermatrix if needed if(ownermatnode!="") { Node.ConnectTo(ownermatnode, "WldMatrix", thegrid, "OwnerMatrix"); } //rename the grid thegrid2 = Node.SafeRename(thegrid,"radialArray"); params.ConValue("arraynode") = thegrid2; //run the update to initialize the array Activity.Run(thegrid2 + "/update copies"); //select the grid and open the panel view Node.Select(thegrid); UserInterface.OpenToolPanelViewEx2("" , "" ,thegrid2, 3,1,0) } NScript Object Package/jScript language~൱D@ j#^cstringarraynode_RRCY_RRCYZ/Project/curvesDevelopment, 4/radialArray, 14W}@O{(XFҦV>g'JNjn*pnBb@@P@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J `g4RJLUDD3+Gy05Mh&ep_Gy05Mh&ep_DarraynodeD?(s]LL#r?(s]LL#rD"facenormalmatrix `^02eE{|@D2|=Bynjz@Ho 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ 46NewCommand3// Execute // Called to execute the command function Execute(params) { var origobject = params.ConValue('origobject'); var arraynode = params.ConValue('arraynode'); var origselect = params.ConValue('origselect'); var facenormalmatrix = params.ConValue('facenormalmatrix'); //select original object //Node.Select(origobject); //enter PE mode //MeshModifiers.ActivatePointEditWidget('','','Default'); //apply saved selection //Node.Value(origobject,"Selection") = origselect; height = Node.Value(arraynode,"Height"); sliceradial = Node.Value(arraynode,"SliceRadial"); //note if height = 0 and sliceradial=360 special case //do one more segment from end to start //delete the face //give message to heal vertices to close the mesh //extrude based on chosen base cone(x,y or z) axis = Node.Value(arraynode,"axischoice"); if(axis==0) basecone = arraynode + "/ConeX"; if(axis==1) basecone = arraynode + "/ConeY"; if(axis==2) basecone = arraynode + "/ConeZ"; ncMesh = System.CreateDO("Space 3D Package/Mesh Data"); ncMesh = Node.Value(basecone,"Mesh"); ncVert = System.CreateDO("Space 3D Package/Vertex Stream Data"); ncVert = ncMesh.GetVertices(); ncMatrix = System.CreateDO("Math Package/Matrix Float Data"); ncMatrix = Node.Value(basecone,"WldMatrix"); invMatrix = System.CreateDO("Math Package/Matrix Float Data"); curpos = System.CreateDO('Math Package/Point Data'); prevpos = System.CreateDO('Math Package/Point Data'); nextpos = System.CreateDO('Math Package/Point Data'); curposT = System.CreateDO('Math Package/Point Data'); prevposT = System.CreateDO('Math Package/Point Data'); nextposT = System.CreateDO('Math Package/Point Data'); curdir = System.CreateDO('Math Package/Point Data'); prevdir = System.CreateDO('Math Package/Point Data'); curdirT = System.CreateDO('Math Package/Point Data'); prevdirT = System.CreateDO('Math Package/Point Data'); headMatrix = System.CreateDO("Math Package/Matrix Float Data"); tailMatrix = System.CreateDO("Math Package/Matrix Float Data"); prevMatrix = System.CreateDO("Math Package/Matrix Float Data"); workMatrix1 = System.CreateDO("Math Package/Matrix Float Data"); workMatrix2 = System.CreateDO("Math Package/Matrix Float Data"); workMatrix3 = System.CreateDO("Math Package/Matrix Float Data"); numverts = ncVert.GetNumVertices(); seg = 1; region = true; mode = 0; avgNorm = false; step = 0.001; small = 0.001; //owner = System.ThisOwner(); scene = Space.CurrentScene(); curmoMatrix = System.CreateDO("Math Package/Matrix Float Data"); prevmoMatrix = System.CreateDO("Math Package/Matrix Float Data"); nextmoMatrix = System.CreateDO("Math Package/Matrix Float Data"); //do axis plus flatten for each copy for(rail=0;rail<numverts-2;rail++) { if(rail==0) theobj = arraynode + "/meshObj"; else theobj = arraynode + "/meshObj, " + rail; Node.Select(theobj); System.Trace(theobj + " flattened"); ScriptObject.RunCmd("tools package/show axes", "Selection", ""); ScriptObject.RunCmd("mesh modifiers package/apply pivot transform to mesh", "ConntrolIn", 0, "Selection", ""); //hide axes RsTool.ShowAxes(Node.Selection() ); } //select original object Node.Select(origobject); //enter PE mode MeshModifiers.ActivatePointEditWidget('','','Default'); //apply saved selection Node.Value(origobject,"Selection") = origselect; //keeporigfaceflipped = true; //small = 0.00001; //if(Math.abs(height) > small || Math.abs(sliceradial - 360) > small) // keeporigfaceflipped = false; //if(keeporiginalfaceflipped) //{ //} small = 0.001; for(railseg=1;railseg<numverts-2;railseg++) { curobj = arraynode + "/meshObj, " + railseg; curmoMatrix = Node.Value(curobj,"WldMatrix"); //System.Trace(curobj); if(railseg==1) prevobj = arraynode + "/meshObj"; else prevobj = arraynode + "/meshObj, " + (railseg-1); prevmoMatrix = Node.Value(prevobj,"WldMatrix"); //System.Trace(prevobj); curposT.x = curmoMatrix.GetTransX(); curposT.y = curmoMatrix.GetTransY(); curposT.z = curmoMatrix.GetTransZ(); prevposT.x = prevmoMatrix.GetTransX(); prevposT.y = prevmoMatrix.GetTransY(); prevposT.z = prevmoMatrix.GetTransZ(); prevMatrix = prevmoMatrix; MeshModifiers.NormalSweepSelection('', seg, region, mode, avgNorm, step); step = -step; Widgets.Move('',-prevposT.x , -prevposT.y , -prevposT.z ); dyaw = curmoMatrix.GetYaw() - prevmoMatrix.GetYaw(); dpitch = curmoMatrix.GetPitch() - prevmoMatrix.GetPitch(); droll = curmoMatrix.GetRoll() - prevmoMatrix.GetRoll(); //if(dyaw>180) dyaw=dyaw-360; //if(dyaw<-180) dyaw=dyaw+360; //if(dpitch >180) dpitch =dpitch -360; //if(dpitch <-180) dpitch =dpitch +360; //if(droll >180) droll =droll -360; //if(droll <-180) droll =droll +360; Widgets.Rotate('', droll, dpitch, dyaw, 0, 0, 0); Widgets.Move('', curposT.x , curposT.y , curposT.z ); prevMatrix = tailMatrix; } height = Node.Value(arraynode,"Height"); sliceradial = Node.Value(arraynode,"SliceRadial"); //note if height = 0 and sliceradial=360 special case verysmall = 0.00001; if(Math.abs(height) < small && Math.abs(sliceradial - 360) < small) { //do one more segment from end to start curobj = arraynode + "/meshObj"; curmoMatrix = Node.Value(curobj,"WldMatrix"); prevobj = arraynode + "/meshObj, " + (railseg-1); prevmoMatrix = Node.Value(prevobj,"WldMatrix"); curposT.x = curmoMatrix.GetTransX(); curposT.y = curmoMatrix.GetTransY(); curposT.z = curmoMatrix.GetTransZ(); prevposT.x = prevmoMatrix.GetTransX(); prevposT.y = prevmoMatrix.GetTransY(); prevposT.z = prevmoMatrix.GetTransZ(); prevMatrix = prevmoMatrix; MeshModifiers.NormalSweepSelection('', seg, region, mode, avgNorm, step); step = -step; Widgets.Move('',-prevposT.x , -prevposT.y , -prevposT.z ); dyaw = curmoMatrix.GetYaw() - prevmoMatrix.GetYaw(); dpitch = curmoMatrix.GetPitch() - prevmoMatrix.GetPitch(); droll = curmoMatrix.GetRoll() - prevmoMatrix.GetRoll(); Widgets.Rotate('', droll, dpitch, dyaw, 0, 0, 0); Widgets.Move('', curposT.x , curposT.y , curposT.z ); //delete the face MeshModifiers.DeleteElements(''); //give message to heal vertices to close the mesh MeshModifiers.HealVertices('', verysmall); } //remove the array from the scene Node.Delete(arraynode); //exit PE mode ? keep this or not ? //Widgets.ActivateDefaultWidget(); } NScript Object Package/jScript languageHeUGstringorigobjectTi;iMZ=1@1.@Space 3D Package/Selection Dataorigselect >`g4RJLUDɆAW μstringarraynodeGy05Mh&ep_>Math Package/Matrix Float Data"facenormalmatrix `^02eE{|@?(s]LL#rTi;iMZ=1@1.N/Project/curvesDevelopment, 4/Plane, 34W}@O{(XFҦV>g'JNjn*pnyC`@@P@2|=Bynj|?z@Hoۙ>??(s]LL#rɆAW μJ@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?Gy05Mh&ep_Z/Project/curvesDevelopment, 4/radialArray, 1-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho܂dKu=D?*(radialArrayTemplate 3+.;]kI 忞@"3+#4+%4+N4+Q4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+4+3+4W}@O{$3+׊;Jf|ڢ׊;Jf|ڢBWldMatrixWorld matrix `^02eE{|@R3+偢jD%~`8偢jD%~`8BObjMatrix Object's matrix `^02eE{|@R3+WAGWAGOwnerMatrixOwner's matrix `^02eE{|@"4+3+<ĠF姁J]<ĠF姁J]DMatrix,Object's input matrix `^02eE{|@T!4+(XFҦV"-1OSM n"3+H=1Gn@`U)H=1Gn@`U) Radial segments.Count of side segments3+W4+4+4+3+1)ps6DU9rL1)ps6DU9rLRadiusBottom(Bottom radius value3+W4+4+4+3+BƆK``;a!BƆK``;a!SliceRadial,Radial slice to angle3+X4+4+4+3+ <@@: <@@:DaxischoiceT4+4+4+5+3+@,G8R(@,G8R(HeightMesh Height4+5+ 偢jD%~`8(XFҦV>g'JNjn*pFtk@p@0?׊;Jf|ڢ <@@:@,G8R(WAG`^02eE{|@B????<ĠF姁J]`^02eE{|@B????-1OSM n 럆L<_ї Default clean GFʠN=[XG1 }}<ĠF姁J]Z`Ez]UO GFʠN= [XG1 }}WAGZ`Ez]UO GFʠN= 0[XG1 }}偢jD%~`8Z`Ez]UO GFʠN=0@[XG1 }}׊;Jf|ڢZ`Ez]UO GFʠN=@pXX{&1 }}H=1Gn@`U)Z`Ez]UO1釥GP>ap@XX{&0 }}H=1Gn@`U)Z`Ez]UO GFʠN=ppX{&1 }}1)ps6DU9rLZ`Ez]UO1釥GP>appX{&0 }}1)ps6DU9rLZ`Ez]UO GFʠN=XppX{&1 }}BƆK``;a!Z`Ez]UO1釥GP>apXpX{&0 }}BƆK``;a!Z`Ez]UO[~K^3s H0X{&6 tz0 <@@:ƄvR^I҂{iks[~K^3sH 0X{&6 uzb1 <@@:ƄvR^I҂{iks[~K^3s 0X{&6 uz2 <@@:ƄvR^I҂{iks AϠOsXX{&)}}AxisZ`Ez]UO GFʠN=H X{&&wzXƄvR^I҂{iks GFʠN=H X{&&xyYƄvR^I҂{iks GFʠN= X{&&w}<ZƄvR^I҂{iksPN AnqH@XX{&B}}H=1Gn@`U)@D=Z`Ez]UOPN AnqHXpX{&B}}BƆK``;a!? G=Z`Ez]UOPN AnqHpX{&B}}1)ps6DU9rLo:zD>Z`Ez]UO AϠOsX0@X{&)vppƄvR^I҂{iksOˁ CRih[pX{&}}PNode.Select('%THIS_NAME%' + "/Center");Center ControlZ`Ez]UOOˁ CRih[pX{&}}axischoice = Node.Value('%THIS_NAME%',"axischoice"); if(axischoice ==0) conename = "/ConeX"; if(axischoice ==1) conename = "/ConeY"; if(axischoice ==2) conename = "/ConeZ"; Node.Select('%THIS_NAME%' + conename);Control MeshZ`Ez]UOOˁ CRih[@X{&}}tActivity.Run("/Scripts/CustomCommands/latheScript/doit");Commit LatheZ`Ez]UO GFʠN=X{&2}}version 1.1 latheZ`Ez]UO GFʠN=pX{&7 }}Height@,G8R(Z`Ez]UO1釥GP>apX{&0 }}@,G8R(Z`Ez]UOPN AnqHX{&B}}@,G8R(D>Z`Ez]UO}}}}H=1Gn@`U)1)ps6DU9rL@BƆK``;a!C܂dKu= z* ConeZ3+.;]kI 忞@"3+4+4+4+4+4+3+4W}@O{$ G?ŋ G?ŋ tSObjLtrueSpace object synchronization data W5f@(䐈Z5+h^p03+׊;Jf|ڢZh_p03+偢jD%~`8Z4+3+WAG3+3+<ĠF姁J]\3+$1&KߊPV$1&KߊPV$AutoShowPanelAutoShowPanel$3+-V?XM%-V?XM%Material ListMaterial List +N⩊(XFҦV"3+@,G8R(3+3+H=1Gn@`U)3+3+1)ps6DU9rL3+3+BƆK``;a!4+3+L[> IkF:ǭJL[> IkF:ǭJB Pivot0Local coordinate system `^02eE{|@R3+S $hKnPSVmS $hKnPSVm"RenderAttributes"RenderAttributes HEoq5v(-V?XM%S $hKnPSVm偢jD%~`8L[> IkF:ǭJ(XFҦV>g'JNjn*pFBX@1@?׊;Jf|ڢ@,G8R(WAG G?ŋg'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0{`D@}㒱u*Cone primitive 3+tveDCE`"IWJPB3+3+*tL V0*Pt*tL V0*PRadiusTop"Top radius value3+3+1)ps6DU9rLp3+3+@,G8R(p3+3+H=1Gn@`U)p3+3+DMN{ g;tDMN{ g;Cap segments4Count of top cap segments3+4+[T}lAuܿxjt[T}lAuܿxj Height segments2Count of height segments3+4+BƆK``;a!p3+4+4W}@O{$(XFҦV"-1OSM n" *tL V0*P[T}lAuܿxj(XFҦV>g'JNjn*pFCCb@ b@?@,G8R(H=1Gn@`U)1)ps6DU9rL@tveDCE`"IWJ-1OSM n 럆L<_ї% Default GFʠN=p@P7 }}Height[T}lAuܿxjZ`Ez]UO1釥GP>apP`0 }}[T}lAuܿxjZ`Ez]UO GFʠN=p = }} RadiusBottom1)ps6DU9rLZ`Ez]UO1釥GP>ap 0 }}1)ps6DU9rLZ`Ez]UO GFʠN=p: }} RadiusTop*tL V0*PZ`Ez]UO1釥GP>ap0 }}*tL V0*PZ`Ez]UO GFʠN=8@pP7 }}RadialH=1Gn@`U)Z`Ez]UO1釥GP>a8P``0 }}H=1Gn@`U)Z`Ez]UO GFʠN=08@< }} RadialSliceBƆK``;a!Z`Ez]UO1釥GP>a0@0 }}BƆK``;a!Z`Ez]UO GFʠN=@P4 }}CapDMN{ g;Z`Ez]UO1釥GP>aP`0 }}DMN{ g;Z`Ez]UOPN AnqHP`>[T}lAuܿxj?K?Z`Ez]UOPN AnqH >1)ps6DU9rLK>Z`Ez]UOPN AnqH>*tL V0*PK>Z`Ez]UOPN AnqH`Pp`>H=1Gn@`U)@@K?Z`Ez]UOPN AnqHP`>DMN{ g;K?Z`Ez]UO GFʠN=@8`)}}SegmentsZ`Ez]UON\q+nN-K^80@A\VVv@BƆK``;a!Z`Ez]UOY@ GFʠN= p01 }}@,G8R(Z`Ez]UO1釥GP>ap 00 }}@,G8R(Z`Ez]UOPN AnqH 0>@,G8R(K>Z`Ez]UOBƆK``;a!CDMN{ g;܂dKu=|*Material List4+.;]kI 忞@"4+4+4+4W}@O{$4+-V?XM%3+(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%X*,Material List Manager4+-V?XM%P4+4+&zB}J?t&zB}J?&Active material ID2Active material class ID4+4+4W}@O{$4+QbicHU^ 2=tQbicHU^ 2=Mat Chunk 0BDynamic material input connector |E8y4+-V?XM%QbicHU^ 2=&zB}J?܂dKu= T*Material 04+.;]kI 忞@" 4+4+4+4W}@O{$4+gYأC۲+?gYأC۲+?Material ChunkMaterial Chunk |E8y4+gYأC۲+?b=h0CRfD*0Material Flavor Manager4+gYأC۲+?P4+4+!EJGWMt!EJGWMMaterial IndexMaterial Index4+ 4+6~qK;2t&t6~qK;2t&Active Info4Active and validity flags NOI/)[&4+ 4+4W}@O{$ 4+?.9>DGl{?t?.9>DGl{?Mat Item 0BDynamic material input connector4+!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀D4;* Solid 4+.F_P#T.F_P#Material Output material __W8E#( 4+ 4+n%⟀A}aJtn%⟀A}aJDiffuseColorDiffuseColor -n,Njlpg 4+ 4+>]zJ4 t>]zJ4 (VertexColorStrength(VertexColorStrength 4+ 4+J.HE /*gtJ.HE /*gShininessShininess 4+ 4+8VnZN:W pt8VnZN:W p DiffuseStrength DiffuseStrength 4+ 4+ll-#Ez k^tll-#Ez k^"SpecularStrength"SpecularStrength 4+ 4+K#uiL$tK#uiL$AlphaTestAlphaTest :KrbSx 4+4+,L?D}t,L?D}AlphaTestValueAlphaTestValue 4+4+4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????,L?D}.F_P#K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabledll-#Ez k^8VnZN:W p?"L2OƲ@5NT* Pivot4+L[> IkF:ǭJPB3+4+<ĠF姁J]pD4+4+4+WAGp4+4+4+׊;Jf|ڢpB4+4W}@O{$L[> IkF:ǭJ׊;Jf|ڢWAG<ĠF姁J]`^02eE{|@B?eϳ%/S?Z>WS?D@#r43KQS?u8DMhbEK*OwnerName4+6VPoint Size in Point rendering.4+4+\Eh{5t\Eh{5Points ColorLColor of points during the rendering. -n,Njlpg4+4+"PbEGDߗrt"PbEGDߗr0Ignore mesh point color0Ignore mesh point color 4+4+F?N dtF?N d.Ignore mesh point size.Ignore mesh point size 4+4+]*qBCxt]*qBCxEdges opacityEdges opacity4+4+\J:I%7ut\J:I%7uEdges ColorEdges Color -n,Njlpg4+4+iA޲1rIK>XtiA޲1rIK>X0Ignore mesh edges color0Ignore mesh edges color 4+4+,ot"AaYt,ot"AaY$Show hidden lines`Do not use ZBuffer in point and wireframe modes 4+4+^RI8ÿRt^RI8ÿRShow backfaceslEnable two-sided rendering when Color mode is enabled 4+4+çwH5#VtçwH5#V0Ignore layer attributesvDo not combine render attributes with layer defined values 4+4+4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"4+o[nfFto[nfF Overlay opacity Overlay opacity4+4+zgGFohN)tzgGFohN)Overlay ColorOverlay Color. -n,Njlpg4+4+vhD zʔtvhD zʔ4Ignore mesh overlay color6Ignore mesh overlay color. 4+W0@zdW0@zd$VersionVersion$4+ȅ8vDCxZtȅ8vDCxZInvisibleInvisible flag 4+4+F+2MGtF+2MGCast shadows$Cast shadows flag 4+4+I2GWM:).$tI2GWM:).$ Receive shadows Receive shadows 4+4+mBޖw ptmBޖw pLayer index(Modeler layer index4+4+fB #^tfB #^$Transparency Mode@Quality of transparency solving :KrbSx4+4+|$}mK;)t|$}mK;) OverlayEnable*Enable color overlay  4+ 4+rg@*oHtrg@*oH OverlayColor*Color of the overlay -n,Njlpg 4+ 4+!eLZE^Nt!eLZE^N OverlayStrengthJStrength (visibility) of the overlay 4+!4+pSLDMF:ɅpSLDMF:ɅDObject_NameObject_NameDzgGFohN)I2GWM:).$ ]*qBCx?S $hKnPSVmvhD zʔçwH5#V rg@*oH4W}@O{\J:I%7u-n,Njlpg???\Eh{5-n,Njlpg????fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort(XFҦV>g'JNjn*pFC(Bk@ b@?pSLDMF:Ʌ|/Project/Space 3D/radialArrayScript/radialArrayTemplate/ConeZF?N d 8Ns2]ȅ8vDCxZ "PbEGDߗr F+2MG J@#QL>g'JNjn*pFzCCb@q@?(lrsGr?^mګA~Ksi[o[nfFW0@zdmBޖw p-1OSM n 럆L<_ї DefaultAdvanced! GFʠN=0@Ƃ1 }}F+2MGZ`Ez]UOͽ>fdN*5Ւh0@Ƃ, }}F+2MGZ`Ez]UO GFʠN= 0Ƃ1 }}ȅ8vDCxZZ`Ez]UOͽ>fdN*5Ւh 0Ƃ, }}ȅ8vDCxZZ`Ez]UO GFʠN=P`Ƃ1 }}mBޖw pZ`Ez]UO1釥GP>aP`Ƃ0 }}mBޖw pZ`Ez]UO GFʠN=@PƂ1 }}I2GWM:).$Z`Ez]UOͽ>fdN*5Ւh@PƂ, }}I2GWM:).$Z`Ez]UO GFʠN=Ƃ1 }}^RI8ÿRZ`Ez]UOͽ>fdN*5ՒhƂ, }}^RI8ÿRϱZ`Ez]UO GFʠN= Ƃ1 }},ot"AaYZ`Ez]UOͽ>fdN*5Ւh Ƃ, }},ot"AaYZ`Ez]UO GFʠN=@(P<6 }}Color\J:I%7uZ`Ez]UO B>I(@hP<%}}\J:I%7uZ`Ez]UO GFʠN=P(`<8 }}Opacity]*qBCxZ`Ez]UON\q+nN-K^(Ph`<A\VV?]*qBCxZ`Ez]UO` Y@ GFʠN=hP`<@ }}Enable Obj ModeçwH5#VZ`Ez]UOͽ>fdN*5ՒhP`<, }}çwH5#VZ`Ez]UO GFʠN=h 0<6 }}Color\Eh{5Z`Ez]UO B>I 0<%}}\Eh{5Z`Ez]UO GFʠN=h0@<9 }}Oppacity^mګA~Ksi[Z`Ez]UON\q+nN-K^0@<A\VV?^mګA~Ksi[Z`Ez]UO` Y@ GFʠN=h@P<5 }}Size(lrsGrZ`Ez]UON\q+nN-K^@P<A\VV?$@(lrsGrZ`Ez]UO`UUX@ GFʠN= (0<8 }}Opacity8Ns2]Z`Ez]UON\q+nN-K^( h0<A\VV?8Ns2]Z`Ez]UO` Y@ GFʠN=`hp<1 }}fB #^Z`Ez]UOnevG4'h`p<2fB #^Z`Ez]UO1釥GP>a0<0 }}pSLDMF:ɅZ`Ez]UO GFʠN=h <(}}SurfaceZ`Ez]UO GFʠN=h <'}}PointsZ`Ez]UO GFʠN=0h@<&}}EdgesZ`Ez]UO GFʠN=0<7 }}ObjectpSLDMF:ɅZ`Ez]UO,ot"AaY ^RI8ÿR |$}mK;)!eLZE^NiA޲1rIK>X 47m2O T_*Transform!4+<ĠF姁J]pD"4+#4+"4+WAGp#4+"4+偢jD%~`8PB3+#4+׊;Jf|ڢPB3+3+'4+T4+4+4+#4+4W}@O{$(XFҦV"偢jD%~`8(XFҦV>g'JNjn*pFBBX@1@?׊;Jf|ڢWAG<ĠF姁J]܂dKu=`*replaceme $4+.;]kI 忞@"-4+/4+<4+=4+D4+%4+4W}@O{$ G?ŋ&4+tveDCE`"IWJZhNhOp0&4+׊;Jf|ڢZhO}Np0'4+偢jD%~`8Z'4+WAG+4+(4+<ĠF姁J]\+4+$1&KߊPV$ asvHhTG asvHhTG$NodeIconNodeIcon eSBgc$)4+-V?XM%N(XFҦV"*4+S $hKnPSVmhCOhO -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pFD[Cb@ d@? asvHhTG׊;Jf|ڢWAG G?ŋg'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0܂dKu=DGl{?p34+!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀DD[* Solid 64+.F_P#T.F_P#Material Output material __W8E#(54+64+n%⟀A}aJp64+74+>]zJ4 p64+74+J.HE /*gp64+84+8VnZN:W pp64+84+ll-#Ez k^p64+94+K#uiL$p64+94+,L?D}p64+:4+4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????.F_P#,L?D}ll-#Ez k^K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabled8VnZN:W p?n':hF% Ik*Editable shape:4+VIQGіF͡TtVIQGіF͡TInput Mesh*Input Mesh for Shape >W5f@(䐈;4+;4+tveDCE`"IWJPB&4+;4+/nkUCEHLjt/nkUCEHLjSelection.Mesh selected elements >`g4RJLUD;4+<4+4W}@O{$/nkUCEHLjVIQGіF͡T>W5f@(䐈ٸ*ćIC7 >e*3߿>e*3=*J>e*3=m>*;)l5>=#)>=m*;)g5=")= h* 6H?BJy'HNLjUb)R  8{EE%D7[          ZpߘHXO>;U?>=U?>>U?>>U?????:U@U=UCUuuZ0ub0/ux1??u?1u?Ⱥ1u?0u?><U>?U>>U>>U;U?>U?BU?BU?89Ig"?*???*?*?*??*?>?>*??>*?>?>>>*??>tveDCE`"IWJu8DMhbE+*OwnerName<4+6V4+8Ns2]p=4+>4+^mګA~Ksi[p=4+?4+(lrsGrp=4+?4+\Eh{5p=4+@4+"PbEGDߗrp=4+@4+F?N dp=4+A4+]*qBCxp=4+A4+\J:I%7up=4+B4+iA޲1rIK>Xp=4+B4+,ot"AaYp=4+C4+^RI8ÿRp=4+C4+çwH5#Vp=4+D4+4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"F4+o[nfFp=4+F4+zgGFohN)p=4+G4+vhD zʔp=4+W0@zdW0@zd$VersionVersion$H4+ȅ8vDCxZp=4+H4+F+2MGp=4+I4+I2GWM:).$p=4+I4+mBޖw pp=4+J4+fB #^p=4+J4+|$}mK;)p =4+K4+rg@*oHp =4+K4+!eLZE^Np =4+L4+pSLDMF:ɅDzgGFohN)I2GWM:).$ ]*qBCxS $hKnPSVmvhD zʔçwH5#V rg@*oH4W}@O{\J:I%7u-n,Njlpg???\Eh{5-n,Njlpg????fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort(XFҦV>g'JNjn*pFC(Bk@ b@?pSLDMF:Ʌ/Project/Space 3D/radialArrayScript/radialArrayTemplate/replacemeF?N d 8Ns2]?ȅ8vDCxZ "PbEGDߗr F+2MG J@#QL>g'JNjn*pFzCCb@q@?(lrsGr?^mګA~Ksi[o[nfFW0@zdmBޖw p-1OSM n 럆L<_ї DefaultAdvanced! GFʠN=0@Ƃ1 }}F+2MGZ`Ez]UOͽ>fdN*5Ւh0@Ƃ, }}F+2MGZ`Ez]UO GFʠN= 0Ƃ1 }}ȅ8vDCxZZ`Ez]UOͽ>fdN*5Ւh 0Ƃ, }}ȅ8vDCxZZ`Ez]UO GFʠN=P`Ƃ1 }}mBޖw pZ`Ez]UO1釥GP>aP`Ƃ0 }}mBޖw pZ`Ez]UO GFʠN=@PƂ1 }}I2GWM:).$Z`Ez]UOͽ>fdN*5Ւh@PƂ, }}I2GWM:).$Z`Ez]UO GFʠN=Ƃ1 }}^RI8ÿRZ`Ez]UOͽ>fdN*5ՒhƂ, }}^RI8ÿRϱZ`Ez]UO GFʠN= Ƃ1 }},ot"AaYZ`Ez]UOͽ>fdN*5Ւh Ƃ, }},ot"AaYZ`Ez]UO GFʠN=@(P<6 }}Color\J:I%7uZ`Ez]UO B>I(@hP<%}}\J:I%7uZ`Ez]UO GFʠN=P(`<8 }}Opacity]*qBCxZ`Ez]UON\q+nN-K^(Ph`<A\VV?]*qBCxZ`Ez]UO` Y@ GFʠN=hP`<@ }}Enable Obj ModeçwH5#VZ`Ez]UOͽ>fdN*5ՒhP`<, }}çwH5#VZ`Ez]UO GFʠN=h 0<6 }}Color\Eh{5Z`Ez]UO B>I 0<%}}\Eh{5Z`Ez]UO GFʠN=h0@<9 }}Oppacity^mګA~Ksi[Z`Ez]UON\q+nN-K^0@<A\VV?^mګA~Ksi[Z`Ez]UO` Y@ GFʠN=h@P<5 }}Size(lrsGrZ`Ez]UON\q+nN-K^@P<A\VV?$@(lrsGrZ`Ez]UO`UUX@ GFʠN= (0<8 }}Opacity8Ns2]Z`Ez]UON\q+nN-K^( h0<A\VV?8Ns2]Z`Ez]UO` Y@ GFʠN=`hp<1 }}fB #^Z`Ez]UOnevG4'h`p<2fB #^Z`Ez]UO1釥GP>a0<0 }}pSLDMF:ɅZ`Ez]UO GFʠN=h <(}}SurfaceZ`Ez]UO GFʠN=h <'}}PointsZ`Ez]UO GFʠN=0h@<&}}EdgesZ`Ez]UO GFʠN=0<7 }}ObjectpSLDMF:ɅZ`Ez]UO,ot"AaY ^RI8ÿR |$}mK;)!eLZE^NiA޲1rIK>X 48@J g'JNjn*pLE2Data, 2J@#QLLE2Data, 3-1OSM n# 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ P'NewCommand&// size update // update the physical dimensions of the array // Dec 4 2010 // Clinton Reese - clintons3d.com // // Execute // Called to execute the command function Execute(params) { owner = System.ThisOwner(); //return if template, not the actual array object snowner = Node.ShortName(owner); if(snowner == "radialArrayTemplate") return; // //save cone rotations and pivot worldmatrix //and set rotations to the default values for each axis // // X Cone tempmat = System.CreateDO("Math Package/Matrix Float Data"); tempmat = Node.Value(owner + "/ConeX","Matrix"); pivxorig = System.CreateDO("Math Package/Matrix Float Data");//original pivot matrix pivxorig = Node.Value(owner + "/ConeX/Pivot","WldMatrix"); conexroll = tempmat.GetRoll(); conexpitch = tempmat.GetPitch(); conexyaw = tempmat.GetYaw(); tempmat.SetRoll(0); tempmat.SetPitch(-90); tempmat.SetYaw(0); Node.Value(owner + "/ConeX","Matrix") = tempmat; // Y Cone pivyorig = System.CreateDO("Math Package/Matrix Float Data");//original pivot matrix pivyorig = Node.Value(owner + "/ConeY/Pivot","WldMatrix"); tempmat = Node.Value(owner + "/ConeY","Matrix"); coneyroll = tempmat.GetRoll(); coneypitch = tempmat.GetPitch(); coneyyaw = tempmat.GetYaw(); tempmat.SetRoll(90); tempmat.SetPitch(0); tempmat.SetYaw(0); Node.Value(owner + "/ConeY","Matrix") = tempmat; // Z Cone pivzorig = System.CreateDO("Math Package/Matrix Float Data");//original pivot matrix pivzorig = Node.Value(owner + "/ConeZ/Pivot","WldMatrix"); tempmat = Node.Value(owner + "/ConeZ","Matrix"); conezroll = tempmat.GetRoll(); conezpitch = tempmat.GetPitch(); conezyaw = tempmat.GetYaw(); tempmat.SetRoll(0); tempmat.SetPitch(0); tempmat.SetYaw(0); Node.Value(owner + "/ConeZ","Matrix") = tempmat; // //need to update each of the axis templates // for(axis=0;axis<=2;axis++) { if(axis==0) conename = "/ConeX"; if(axis==1) conename = "/ConeY"; if(axis==2) conename = "/ConeZ"; radiusbot = Node.Value(owner,"RadiusBottom"); pivotMatrix = System.CreateDO("Math Package/Matrix Float Data"); objMatrix = System.CreateDO("Math Package/Matrix Float Data"); //update pivot pivotMatrix = Node.Value(owner + conename + "/Pivot","Matrix"); pivotMatrix.SetTransX(radiusbot); Node.Value(owner + conename + "/Pivot","Matrix") = pivotMatrix ; //update the matrix objMatrix = Node.Value(owner + conename,"ObjMatrix"); if(axis==0) objMatrix .SetTransZ(radiusbot); if(axis==1) objMatrix .SetTransX(-radiusbot); if(axis==2) objMatrix .SetTransX(-radiusbot); Node.Value(owner + conename,"Matrix") = objMatrix ; } // // restore cone rotations for ConeX // tempmat = Node.Value(owner + "/ConeX","Matrix"); tempmat.SetRoll( conexroll) ; tempmat.SetPitch( conexpitch) ; tempmat.SetYaw(conexyaw) ; Node.Value(owner + "/ConeX","Matrix") = tempmat; // and adjust the pivot pivxnew = System.CreateDO("Math Package/Matrix Float Data"); pivxnew = Node.Value(owner + "/ConeX/Pivot","WldMatrix"); dx = pivxnew.GetTransX() - pivxorig.GetTransX(); dy = pivxnew.GetTransY() - pivxorig.GetTransY(); dz = pivxnew.GetTransZ() - pivxorig.GetTransZ(); tempmat.SetTransX(tempmat.GetTransX() - dx); tempmat.SetTransY(tempmat.GetTransY() - dy); tempmat.SetTransZ(tempmat.GetTransZ() - dz); Node.Value(owner + "/ConeX","Matrix") = tempmat; // // restore cone rotations for ConeY // tempmat = Node.Value(owner + "/ConeY","Matrix"); tempmat.SetRoll(coneyroll) ; tempmat.SetPitch(coneypitch ); tempmat.SetYaw(coneyyaw); Node.Value(owner + "/ConeY","Matrix") = tempmat; // and adjust the pivot pivynew = System.CreateDO("Math Package/Matrix Float Data"); pivynew = Node.Value(owner + "/ConeY/Pivot","WldMatrix"); dx = pivynew.GetTransX() - pivyorig.GetTransX(); dy = pivynew.GetTransY() - pivyorig.GetTransY(); dz = pivynew.GetTransZ() - pivyorig.GetTransZ(); tempmat.SetTransX(tempmat.GetTransX() - dx); tempmat.SetTransY(tempmat.GetTransY() - dy); tempmat.SetTransZ(tempmat.GetTransZ() - dz); Node.Value(owner + "/ConeY","Matrix") = tempmat; // // restore cone rotations for ConeZ // tempmat = Node.Value(owner + "/ConeZ","Matrix"); tempmat.SetRoll(conezroll) ; tempmat.SetPitch(conezpitch) ; tempmat.SetYaw(conezyaw); Node.Value(owner + "/ConeZ","Matrix") = tempmat; // and adjust the pivot pivznew = System.CreateDO("Math Package/Matrix Float Data"); pivznew = Node.Value(owner + "/ConeZ/Pivot","WldMatrix"); dx = pivznew.GetTransX() - pivzorig.GetTransX(); dy = pivznew.GetTransY() - pivzorig.GetTransY(); dz = pivznew.GetTransZ() - pivzorig.GetTransZ(); tempmat.SetTransX(tempmat.GetTransX() - dx); tempmat.SetTransY(tempmat.GetTransY() - dy); tempmat.SetTransZ(tempmat.GetTransZ() - dz); Node.Value(owner + "/ConeZ","Matrix") = tempmat; } NScript Object Package/jScript languagePO`)4W}@O{(XFҦV>g'JNjn*pn6D Cb@H@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho܂dKu=* ConeYQ4+.;]kI 忞@"[4+a4+c4+q4+r4+y4+Q4+4W}@O{$ G?ŋR4+tveDCE`"IWJZ5+h=ONp0S4+׊;Jf|ڢZhNhPp0S4+偢jD%~`8Z4+T4+WAGZ4+T4+<ĠF姁J]\Y4+$1&KߊPV$U4+-V?XM%hN(XFҦV"V4+@,G8R(^4+W4+H=1Gn@`U)_4+W4+1)ps6DU9rL^4+X4+BƆK``;a!`4+X4+L[> IkF:ǭJRY4+S $hKnPSVm IkF:ǭJ偢jD%~`8(XFҦV>g'JNjn*pFBKCX@1@?׊;Jf|ڢ@,G8R(WAG G?ŋg'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0{`D@}㒱F*Cone primitive ]4+tveDCE`"IWJPBR4+]4+*tL V0*Pp]4+^4+1)ps6DU9rLp]4+^4+@,G8R(p]4+_4+H=1Gn@`U)p]4+_4+DMN{ g;p]4+`4+[T}lAuܿxjp]4+`4+BƆK``;a!p]4+a4+4W}@O{$(XFҦV"-1OSM n" *tL V0*P[T}lAuܿxj(XFҦV>g'JNjn*pFCCb@ b@?@,G8R(-1OSM n 럆L<_ї% Default GFʠN=p@P7 }}Height[T}lAuܿxjZ`Ez]UO1釥GP>apP`0 }}[T}lAuܿxjZ`Ez]UO GFʠN=p = }} RadiusBottom1)ps6DU9rLZ`Ez]UO1釥GP>ap 0 }}1)ps6DU9rLZ`Ez]UO GFʠN=p: }} RadiusTop*tL V0*PZ`Ez]UO1釥GP>ap0 }}*tL V0*PZ`Ez]UO GFʠN=8@pP7 }}RadialH=1Gn@`U)Z`Ez]UO1釥GP>a8P``0 }}H=1Gn@`U)Z`Ez]UO GFʠN=08@< }} RadialSliceBƆK``;a!Z`Ez]UO1釥GP>a0@0 }}BƆK``;a!Z`Ez]UO GFʠN=@P4 }}CapDMN{ g;Z`Ez]UO1釥GP>aP`0 }}DMN{ g;Z`Ez]UOPN AnqHP`>[T}lAuܿxj?K?Z`Ez]UOPN AnqH >1)ps6DU9rLK>Z`Ez]UOPN AnqH>*tL V0*PK>Z`Ez]UOPN AnqH`Pp`>H=1Gn@`U)@@K?Z`Ez]UOPN AnqHP`>DMN{ g;K?Z`Ez]UO GFʠN=@8`)}}SegmentsZ`Ez]UON\q+nN-K^80@A\VVv@BƆK``;a!Z`Ez]UOY@ GFʠN= p01 }}@,G8R(Z`Ez]UO1釥GP>ap 00 }}@,G8R(Z`Ez]UOPN AnqH 0>@,G8R(K>Z`Ez]UOtveDCE`"IWJ1)ps6DU9rL@H=1Gn@`U)DMN{ g;BƆK``;a!C܂dKu=*Material Listb4+.;]kI 忞@"e4+g4+c4+4W}@O{$c4+-V?XM%U4+(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%*,Material List Managerd4+-V?XM%Pc4+e4+&zB}J?pd4+e4+4W}@O{$f4+QbicHU^ 2=pd4+-V?XM%QbicHU^ 2=&zB}J?܂dKu=̤*Material 0f4+.;]kI 忞@"i4+n4+g4+4W}@O{$g4+gYأC۲+?f4+gYأC۲+?b=h0CRf*0Material Flavor Managerh4+gYأC۲+?Pg4+h4+!EJGWMph4+i4+6~qK;2t&ph4+i4+4W}@O{$j4+?.9>DGl{?ph4+!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀D.* Solid j4+.F_P#T.F_P#Material Output material __W8E#(j4+k4+n%⟀A}aJpj4+k4+>]zJ4 pj4+l4+J.HE /*gpj4+l4+8VnZN:W ppj4+m4+ll-#Ez k^pj4+m4+K#uiL$pj4+n4+,L?D}pj4+n4+4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????.F_P#,L?D}ll-#Ez k^K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabled8VnZN:W p?"L2OƲ@5N* Pivoto4+L[> IkF:ǭJPBX4+o4+<ĠF姁J]pDo4+p4+p4+WAGpo4+p4+p4+׊;Jf|ڢpBq4+4W}@O{$L[> IkF:ǭJ׊;Jf|ڢWAG<ĠF姁J]`^02eE{|@BS?%? -?gK2?V?=Xpr4+w4+,ot"AaYpr4+x4+^RI8ÿRpr4+x4+çwH5#Vpr4+y4+4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"{4+o[nfFpr4+{4+zgGFohN)pr4+|4+vhD zʔpr4+W0@zdW0@zd$VersionVersion$}4+ȅ8vDCxZpr4+}4+F+2MGpr4+~4+I2GWM:).$pr4+~4+mBޖw ppr4+4+fB #^pr4+4+|$}mK;)p r4+4+rg@*oHp r4+4+!eLZE^Np r4+4+pSLDMF:ɅDzgGFohN)I2GWM:).$ ]*qBCx?S $hKnPSVmvhD zʔçwH5#V rg@*oH4W}@O{\J:I%7u-n,Njlpg???\Eh{5-n,Njlpg????fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort(XFҦV>g'JNjn*pFC(Bk@ b@?pSLDMF:Ʌ|/Project/Space 3D/radialArrayScript/radialArrayTemplate/ConeYF?N d 8Ns2]ȅ8vDCxZ "PbEGDߗr F+2MG J@#QL>g'JNjn*pFzCCb@q@?(lrsGr?^mګA~Ksi[o[nfFW0@zdmBޖw p-1OSM n 럆L<_ї DefaultAdvanced! GFʠN=0@Ƃ1 }}F+2MGZ`Ez]UOͽ>fdN*5Ւh0@Ƃ, }}F+2MGZ`Ez]UO GFʠN= 0Ƃ1 }}ȅ8vDCxZZ`Ez]UOͽ>fdN*5Ւh 0Ƃ, }}ȅ8vDCxZZ`Ez]UO GFʠN=P`Ƃ1 }}mBޖw pZ`Ez]UO1釥GP>aP`Ƃ0 }}mBޖw pZ`Ez]UO GFʠN=@PƂ1 }}I2GWM:).$Z`Ez]UOͽ>fdN*5Ւh@PƂ, }}I2GWM:).$Z`Ez]UO GFʠN=Ƃ1 }}^RI8ÿRZ`Ez]UOͽ>fdN*5ՒhƂ, }}^RI8ÿRϱZ`Ez]UO GFʠN= Ƃ1 }},ot"AaYZ`Ez]UOͽ>fdN*5Ւh Ƃ, }},ot"AaYZ`Ez]UO GFʠN=@(P<6 }}Color\J:I%7uZ`Ez]UO B>I(@hP<%}}\J:I%7uZ`Ez]UO GFʠN=P(`<8 }}Opacity]*qBCxZ`Ez]UON\q+nN-K^(Ph`<A\VV?]*qBCxZ`Ez]UO` Y@ GFʠN=hP`<@ }}Enable Obj ModeçwH5#VZ`Ez]UOͽ>fdN*5ՒhP`<, }}çwH5#VZ`Ez]UO GFʠN=h 0<6 }}Color\Eh{5Z`Ez]UO B>I 0<%}}\Eh{5Z`Ez]UO GFʠN=h0@<9 }}Oppacity^mګA~Ksi[Z`Ez]UON\q+nN-K^0@<A\VV?^mګA~Ksi[Z`Ez]UO` Y@ GFʠN=h@P<5 }}Size(lrsGrZ`Ez]UON\q+nN-K^@P<A\VV?$@(lrsGrZ`Ez]UO`UUX@ GFʠN= (0<8 }}Opacity8Ns2]Z`Ez]UON\q+nN-K^( h0<A\VV?8Ns2]Z`Ez]UO` Y@ GFʠN=`hp<1 }}fB #^Z`Ez]UOnevG4'h`p<2fB #^Z`Ez]UO1釥GP>a0<0 }}pSLDMF:ɅZ`Ez]UO GFʠN=h <(}}SurfaceZ`Ez]UO GFʠN=h <'}}PointsZ`Ez]UO GFʠN=0h@<&}}EdgesZ`Ez]UO GFʠN=0<7 }}ObjectpSLDMF:ɅZ`Ez]UO,ot"AaY ^RI8ÿR |$}mK;)!eLZE^NiA޲1rIK>X ܂dKu=t* ConeX4+.;]kI 忞@"4+4+4+4+4+4+4+4W}@O{$ G?ŋ4+tveDCE`"IWJZ5+hPhOp04+׊;Jf|ڢZhxNQp04+偢jD%~`8Z4+4+WAG4+4+<ĠF姁J]\4+$1&KߊPV$4+-V?XM%h.P(XFҦV"4+@,G8R(4+4+H=1Gn@`U)4+4+1)ps6DU9rL4+4+BƆK``;a!4+4+L[> IkF:ǭJR4+S $hKnPSVm-Nh7O-V?XM%S $hKnPSVm偢jD%~`8L[> IkF:ǭJ(XFҦV>g'JNjn*pF(BCX@1@?׊;Jf|ڢ@,G8R(WAG G?ŋg'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0{`D@}㒱g'JNjn*pFCCb@ b@?@,G8R(H=1Gn@`U)1)ps6DU9rL@tveDCE`"IWJ-1OSM n 럆L<_ї% Default GFʠN=p@P7 }}Height[T}lAuܿxjZ`Ez]UO1釥GP>apP`0 }}[T}lAuܿxjZ`Ez]UO GFʠN=p = }} RadiusBottom1)ps6DU9rLZ`Ez]UO1釥GP>ap 0 }}1)ps6DU9rLZ`Ez]UO GFʠN=p: }} RadiusTop*tL V0*PZ`Ez]UO1釥GP>ap0 }}*tL V0*PZ`Ez]UO GFʠN=8@pP7 }}RadialH=1Gn@`U)Z`Ez]UO1釥GP>a8P``0 }}H=1Gn@`U)Z`Ez]UO GFʠN=08@< }} RadialSliceBƆK``;a!Z`Ez]UO1釥GP>a0@0 }}BƆK``;a!Z`Ez]UO GFʠN=@P4 }}CapDMN{ g;Z`Ez]UO1釥GP>aP`0 }}DMN{ g;Z`Ez]UOPN AnqHP`>[T}lAuܿxj?K?Z`Ez]UOPN AnqH >1)ps6DU9rLK>Z`Ez]UOPN AnqH>*tL V0*PK>Z`Ez]UOPN AnqH`Pp`>H=1Gn@`U)@@K?Z`Ez]UOPN AnqHP`>DMN{ g;K?Z`Ez]UO GFʠN=@8`)}}SegmentsZ`Ez]UON\q+nN-K^80@A\VVv@BƆK``;a!Z`Ez]UOY@ GFʠN= p01 }}@,G8R(Z`Ez]UO1釥GP>ap 00 }}@,G8R(Z`Ez]UOPN AnqH 0>@,G8R(K>Z`Ez]UOBƆK``;a!CDMN{ g;܂dKu=T*Material List4+.;]kI 忞@"4+4+4+4W}@O{$4+-V?XM%4+(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%*,Material List Manager4+-V?XM%P4+4+&zB}J?p4+4+4W}@O{$4+QbicHU^ 2=p4+-V?XM%QbicHU^ 2=&zB}J?܂dKu=T*Material 04+.;]kI 忞@"4+4+4+4W}@O{$4+gYأC۲+?4+gYأC۲+?b=h0CRf*0Material Flavor Manager4+gYأC۲+?P4+4+!EJGWMp4+4+6~qK;2t&p4+4+4W}@O{$4+?.9>DGl{?p4+!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀DD* Solid 4+.F_P#T.F_P#Material Output material __W8E#(4+4+n%⟀A}aJp4+4+>]zJ4 p4+4+J.HE /*gp4+4+8VnZN:W pp4+4+ll-#Ez k^p4+4+K#uiL$p4+4+,L?D}p4+4+4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????,L?D}.F_P#K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabledll-#Ez k^8VnZN:W p?"L2OƲ@5NN* Pivot4+L[> IkF:ǭJPB4+4+<ĠF姁J]pD4+4+4+WAGp4+4+4+׊;Jf|ڢpB4+4W}@O{$L[> IkF:ǭJ׊;Jf|ڢWAG<ĠF姁J]`^02eE{|@BS?Ę\sU,S?-|S?@ts5OS?u8DMhbE$*OwnerName4+6VXp4+4+,ot"AaYp4+4+^RI8ÿRp4+4+çwH5#Vp4+4+4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"4+o[nfFp4+4+zgGFohN)p4+4+vhD zʔp4+W0@zdW0@zd$VersionVersion$4+ȅ8vDCxZp4+4+F+2MGp4+4+I2GWM:).$p4+4+mBޖw pp4+4+fB #^p4+4+|$}mK;)p 4+4+rg@*oHp 4+4+!eLZE^Np 4+4+pSLDMF:ɅDzgGFohN)I2GWM:).$ ]*qBCx?S $hKnPSVmvhD zʔçwH5#V rg@*oH4W}@O{\J:I%7u-n,Njlpg???\Eh{5-n,Njlpg????fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort(XFҦV>g'JNjn*pFC(Bk@ b@?pSLDMF:Ʌ|/Project/Space 3D/radialArrayScript/radialArrayTemplate/ConeXF?N d 8Ns2]ȅ8vDCxZ "PbEGDߗr F+2MG J@#QL>g'JNjn*pFzCCb@q@?(lrsGr?^mګA~Ksi[o[nfFW0@zdmBޖw p-1OSM n 럆L<_ї DefaultAdvanced! GFʠN=0@Ƃ1 }}F+2MGZ`Ez]UOͽ>fdN*5Ւh0@Ƃ, }}F+2MGZ`Ez]UO GFʠN= 0Ƃ1 }}ȅ8vDCxZZ`Ez]UOͽ>fdN*5Ւh 0Ƃ, }}ȅ8vDCxZZ`Ez]UO GFʠN=P`Ƃ1 }}mBޖw pZ`Ez]UO1釥GP>aP`Ƃ0 }}mBޖw pZ`Ez]UO GFʠN=@PƂ1 }}I2GWM:).$Z`Ez]UOͽ>fdN*5Ւh@PƂ, }}I2GWM:).$Z`Ez]UO GFʠN=Ƃ1 }}^RI8ÿRZ`Ez]UOͽ>fdN*5ՒhƂ, }}^RI8ÿRϱZ`Ez]UO GFʠN= Ƃ1 }},ot"AaYZ`Ez]UOͽ>fdN*5Ւh Ƃ, }},ot"AaYZ`Ez]UO GFʠN=@(P<6 }}Color\J:I%7uZ`Ez]UO B>I(@hP<%}}\J:I%7uZ`Ez]UO GFʠN=P(`<8 }}Opacity]*qBCxZ`Ez]UON\q+nN-K^(Ph`<A\VV?]*qBCxZ`Ez]UO` Y@ GFʠN=hP`<@ }}Enable Obj ModeçwH5#VZ`Ez]UOͽ>fdN*5ՒhP`<, }}çwH5#VZ`Ez]UO GFʠN=h 0<6 }}Color\Eh{5Z`Ez]UO B>I 0<%}}\Eh{5Z`Ez]UO GFʠN=h0@<9 }}Oppacity^mګA~Ksi[Z`Ez]UON\q+nN-K^0@<A\VV?^mګA~Ksi[Z`Ez]UO` Y@ GFʠN=h@P<5 }}Size(lrsGrZ`Ez]UON\q+nN-K^@P<A\VV?$@(lrsGrZ`Ez]UO`UUX@ GFʠN= (0<8 }}Opacity8Ns2]Z`Ez]UON\q+nN-K^( h0<A\VV?8Ns2]Z`Ez]UO` Y@ GFʠN=`hp<1 }}fB #^Z`Ez]UOnevG4'h`p<2fB #^Z`Ez]UO1釥GP>a0<0 }}pSLDMF:ɅZ`Ez]UO GFʠN=h <(}}SurfaceZ`Ez]UO GFʠN=h <'}}PointsZ`Ez]UO GFʠN=0h@<&}}EdgesZ`Ez]UO GFʠN=0<7 }}ObjectpSLDMF:ɅZ`Ez]UO,ot"AaY ^RI8ÿR |$}mK;)!eLZE^NiA޲1rIK>X  5@(l 7**Axis Watch Dog Event4+2|=Bynj4+4+8ffNzw̮8ffNzw̮Change detect.Change detection inputz@Ho4+4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pFC[Cb@@P@? asvHhTGeSBgc|< |J~DE+y*;0<<x}XT9`1~ޘx{[b7j{oXb/REAT@AP`TD{y˙s55<9032]]e3g-HH4k W޾ ?oߊ^}[:t~[b͘ '7/d7hQ hGQ+$&rL2 Q'P`FƢmTs<S_^⊊t7P|WJMɨunF&w5w,l7ݏ#Q5> Q@2m9On#gh4W JZ$5T"*I5(URUJPt{¿,Pv/?Id"ʅ@PtQ+0z"-0e t6ч#WPh?9`޼aIxVD֭u0~YA`2͛wt9' AӁQ{'Svmҍ*95o{B(eʇBٞۃ1 c] dk=)T8 l~h F|^E}Xs#vpj(wD?Fd+;B`klV+Xk6yR٘j:ٌwcr(ߤt(ţ䁳(v6a59k.tۅa x&}4 b} f +og$9$H1ܺ͛;qv\4\83q,a.AX[a,ẍ́F ,wg0f Cߑ!PK.(=g1> EQaOu߆ W|#QE;*m G>W?Z5ń8x8 ^w")8${?Vz7pw3p{t內7A'H/N&Xp4N^Xi ǣ(V _e|Hxo)|wo" 4$d[E65nɫr t9$wIҐ;FheA$ېs97M/<ēkxtq_uS9>ĕGY 6:9[; ߍ_ׅ(ܡ'>\I((ލ)LoL[NPTK6Cm-ԪSp‘OHgzO .=w 疷 s)^Lz>ӕʽ w\](>0= SdЏ(Tr*Pvt Cɽ2 /]bQlj%|0~qٳ"7pg~pN'9Aǐ죧wC<GoN{M{1뫮¯\:{N [I,1a*icBQnޗbêC엮ױ)rP~Uk?լ'#|A0Jr$N {Ǔ?<ݽ/l?sٿW zu@҅'\;C׏O ,voGJ9ٗQ~ ŃDGծjk&1gPTYEs` HF!|@;u  /W>qkw6)w\5xYe6 Cὐx4ڴӭ|M-㖭EC~*y@ ~k7w$3>:l~[ؼƢ«q.e3h݉J(5t"ʐ >L),<<Umi<[kɟc/ 'uIu$/Ӌu S>`z2>hXj(b'Qocq_lhyj_F(R>. ͳq܈i8poys{g>yoÖSHOw:Rs:`; [xȫ ^ s(NZFیy(֡Jq~o˔pԹ5#6lޓbYؿ۹ƽZkkvϰߗvqx3~|!{ (g5")>0?Սy‹:q[\m3?3 N̮8dhiPj8Vy΂+&H o剺 @B(o`,cI5<|gr@ ` gk:VRʬ߆'߽YV4 Db*Uu ??|Nz30m^E:CfeA{Ⱦp8a1_Oo5Ɵsݳ^SUNeR|/Nυ>&U>9;LHrxluUbc3ݸszY`}`anՇBTX7m Sٝ/_^,c3˜I$yQRct:ҁl _#d}u,p_̾b1f cWtg7tLZ)Pco4.,xll}к=5dk6ad{n;8ZJ>qk4anui)$'0慯z26N^3k\_(UE)ەPB}f >`F~%E ,r6nXWp3{x3>ʀ7LH.:z%׊izŇ}<~[Xg<<|F6RiF`֡JGX99b@Jj]ѡtyp4l%پX#VOy8{5><)pzl]Or1<>!z@ԃ3@ rs? P>8 ?/Qr&96n[1|ͯ1!$KrZ8~J{Q#r뀎sz`#0^u@ZnW^}.]W Qj5!x{s9`ž0Թ|l-~rYH[Fkgkk,f9 r.u쨴Dz|$0p\~|:0@> }-+estY1} R7RB̏h &X9!;Y/2b`QaGwM&ʄ$# bvD>3+fke7X=:>Z&Lrb>00ϔ|97e8.c,DXf8Xx_^\u}ӝq,دjDAQb@m&O _w S4-zD¡xvS>w/R|5Bh Ov}C\c3tUz,}ygtb.ވDpߣmތozyx,<a,|ݩ%[vA̞q@y 1i){pgu|_E^yHʃe/[$wܕW =5Wt Y~II;Ba>gƹĀ|g aæY3PmJ+ךyK-4R}b_5 w/jZY}7xOMޖX^.ާ]>qh}@?~#1Ыօ_dylLuB5;ߓ7}Ȧ[oZ2ƫ>[lOek>i cGHMr<9:0KybXӅF:`R%H s& &dwyվ@~3"/ OÇ${!`S|]aMקF@[R$ĐPXK> GߨՄi 5~P2(omr<_WF{ *n?j8}lsƱw-zm_#]Ws=⟎ CS#+Uy8+rB;FJ;ɺ0G~IMkċ\'_k4'^CQlaTbr<_K'D韎hգ%\8<^̏y |.s/8]iƳNgqb])1>C]HGAy ,|g{W& O({~7=eb!ʯ؈~ûkdwټlAc8qg~9-?~ Oܑsd_'ھ#/bփ/倯?pj8m 1Pf[P~w,FShI`=~,q3iu?g>15S/}x=#yE5Ȗ:8]7j>@5`1b @ټ!vp:@nu'v'tùc͟ݡ!QSN'q?Y~uх9Oo5.1 !rtVe>,?ܒ%Lp@2n8`@#sfy逻aOy0=;0i,#ipFE{4o  -)!~^Ca6tt{xNsM{7?[mzIZւd_zSSYDx?in;r Qw95xfF"0ؿ^9'x^1h#?ress O [ b%zY\fo?{ ޗ"/ˋ!C[.B,èsP (ۢEALv6=hI.  =doK_էOg c 9#F~93p۳C͂ـ0A٠C|q} d|"];WR7[D/=;%1 z'sݫ~Xb??χ sq'&9iJ( qe1|5 8 ͯej)|ӿ =,p!iM_{Ntt W}9`?/~ zQ_g\yjU? G8BW PtWy}_ Ehu &Wa8yd9y|r/X,I:9gu\.H␻'yC3ܸ_h2k*T(|vRttͯnhDE:++eG`\bL:G~f =@la̸/z}]UʄPVtpC_c,~q=A2_g{/- d+oE8xKϒ|={0MG/K&{_b|'vN/f@GwWwksܓ En:aT}# /z:s8y::P<(*l 79V,VC;hp>5NDtf} >_uF>@= }=XwA. K_`< v[W= 7#m =b'~?yl}N{>@̧ kj>!;FoDKl؅»c?fYg E3 ϕ|αUكዧb=>x_@8L8To1G-_ٻ1rco˳A}t/콞(q(ttބF^3T^v=x= uA}]$,ϑz }K,0M"N/pkzg~~}_fPu:ZN†U8$`n?? 87Y.-OY7>WPZyƏh>}̯|b3nNkbFlFQgڙwDjcߔYv +gQ>H\pZ+l\\q8'̫/vov3e !HCiC,Ƚ\9Gq!~=U}epxoRZWK;0 j=A`qqit灲0ݫ$K=y"|Y?6H\Yfgx3>I%{vϰt+ؚNɻt%W~AL^W~ۋjF cU; t<1Yົ[y aP BN;]}:=F߿2sg]p~t>!6?:c!8Cev [8pD W&u #0>^w[ECqtG~Rm"`GWfK?c {/+}G`/~gz@VnݙH|c(+c·hOc[uḆw:(OX߄2 M݇lYu(_x&&P9wQ |z!'@wPtJ! ڲaɍȼgW)yE]uOW2w؀˙v3l4GQӀW_+w8e9{GR:Mʼn4/ܡi ٝ Q\Jؾo矾 OO2Y|q=c(E>o5-uyw,~&'W(=g(t`IV,20ԑϞP:.An(LKO8̺0j,FۏI7Q]T<1=NǶ#/ӽp֞*׏<|j8=qy̍yXd!U t57PmoQ[vmt\ .wu|ǜ~Z.WlWCny⻰ nwfA ",6f] P(9CZ_hrTAitP=/ԃّghy,1BI<d@ ]v[ P~ ˏ(֪ ?fzt ܏'/xA>p;,c᜴ v$^+<&?G8#5 G̍Hꏸ;zvpNŜ̫B̓Ot1'sÈ%o/פ7>w}>,&Y *Uesg9:`8-(YgL>el@*(PQė㗯Ex8'HGGvocpIمiC!f\[cujZp}z \/!n$"$"WR.fi 9N؟@='YH,ʴ9 ͻeCaό-1oz~=$^E>+v^+9(,2bۡws5+QR:fY3l/zEšj|~,<*{b5< vDV[^x_܋Cr9Wv":#3'$3k!!8B"8 _ú[W0:=raN%)zƁIOy7fͱG+0*pe/EY .>:]m;g{KRP|o(6識2(]h=w3{~- MATT>P<GT#)?d|/W4 B0qz ]?&fGοs8;gyz<+:; fSQ2mP~q9>@M{2JZ$@ut80(wAGG(=wW4gZ%cY׬ðj Go􋉀El FcTnELZGUjZɫVbrLf_&,׳އBvDf΅<̹2{~&P:ɇP{ (Ln>ǝ||?WNPUjePw&jP[Mx(ڽA0{",Auhn]ax.HJ:%*nN߂aF>q;'{Gw|9PgxρfSx5 >Pk+$--+p9߄5KdX.7r#03vf`y6M{#n/qg];ioAi:l~8Ԇ JnP-$ͭv=8;Io+=>MbH6OÔGl~꠭b;۩m,M!'R'웏"Gp4EݠTi5Z?1sY /Wlo^cpBxtc)2tAFw[Bn:̅t`à4PFZF&_w][.gև)_^`GbK"sgvʸP(W)+lk*Xߕao'x &}|՛l+ԪmQRsL:.Ŝyr^4J.U.H eqzemgk:*a +ZJ|Qhyץ \xxG=2<_{#ys~{Jy6LSݫP^bl.2:Uۣб ͻ.X: p^߽# {;Gg#L{^*s'_Avx^yFrFC3_+Pr}t3k }y~y,P~|>{o?@ Oٽt$j!ud5o7a/_/ (g:<ݦa uE1Av(S {uDݞk:^'{jdƓ'Q~ǰgu Pj@<+*j f|]Ms|}*qϱ2Jui> {oyn/!P*Ǿ+@f \mO>;^{KgqZ= p ۹+{:,W[ܞVg>a?8^QkuZ#*}Fb"n'Wݒ=L.ݟ|f<o|jP:C^^m;QQ[^%Y]G#;ZZtws}P[~0{^keMo'r{ľhNuڣtz$=lQގ^=|uyg矢xgsU^\O-'jzr'rq<rq|*ImI&YD14Y}^^Qٽ2.gqy~.gaثH& _E~;Pi+L2w6bn m3e'u}+SOu]pWX=c-g\o0c5=ۋnyyW =}Nn&_s\ﱜV,SX꺓Ϗ%^+}]/qxϓ8PoеOQ&]JG1{sSy} y~~T96PȅBU޿{8Z-׬r[Tn#M5:*Rnk]yAð#{9b.mٌu&Zg yS Tnmz`Xo*ibvj<f؟&Y}':b*(lVsNi68prkZ;y-ǂޝ)+ ^^_=>a;K>_bJ;x=W{n ެj|UKw^@XV{xw?{ {{0ݫ=a/빬7&ox^QӡX_j+c'oLeh`,ϟ'汘oV՛kL ,8fu{E=Ǟf3Ay-W=Qj[Ti jyoJ7*%Dg%:[Di(f-FD(xJo@3/J@#QL>g'JNjn*pFBB`@P@?8ffNzw̮-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho 5@(l*6ObjMatrixX Watch Dog Event4+2|=Bynj5+4+8ffNzw̮z@Ho4+4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pFlCBX@E@? asvHhTGeSBgc8 |J~DE+y*;0J@#QL>g'JNjn*pFBB`@P@?8ffNzw̮-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho 5@(ld *6ObjMatrixY Watch Dog Event4+2|=Bynj5+4+8ffNzw̮z@Ho4+4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pFlCACX@E@? asvHhTGeSBgc8 |J~DE+y*;08ffNzw̮J@#QL>g'JNjn*pFBB`@P@?-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho 5@(ltf*6ObjMatrixZ Watch Dog Event4+2|=Bynj5+4+8ffNzw̮z@Ho4+4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pFlCCX@E@? asvHhTGeSBgc8 |J~DE+y*;0J@#QL>g'JNjn*pFBB`@P@?8ffNzw̮-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho 5@(lb*8SliceRadial Watch Dog Event4+2|=Bynj5+4+8ffNzw̮z@Ho4+4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pFCCX@E@? asvHhTGeSBgc8 |J~DE+y*;08ffNzw̮CJ@#QL>g'JNjn*pFBB`@P@?-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho 5@(l *:RadiusBottom Watch Dog Event4+2|=BynjO4+4+8ffNzw̮z@Ho4+4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pFC BX@E@? asvHhTGeSBgc8 |J~DE+y*;0J@#QL>g'JNjn*pFBB`@P@?8ffNzw̮@-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho 5@(l4*@Radial Segments Watch Dog Event4+2|=Bynj5+4+8ffNzw̮z@Ho4+4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pFCBX@L@? asvHhTGeSBgc8 |J~DE+y*;08ffNzw̮J@#QL>g'JNjn*pFBB`@P@?-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho܂dKu=*Center 4+.;]kI 忞@"4+4+4+4+4W}@O{$ G?ŋ4+tveDCE`"IWJZhhOhUOp04+׊;Jf|ڢZ4+hsQOp04+偢jD%~`8Z4+WAG4+4+<ĠF姁J]\4+$1&KߊPV$4+-V?XM%hgO(XFҦV" -V?XM%偢jD%~`8(XFҦV>g'JNjn*pF CDb@ b@?׊;Jf|ڢWAG G?ŋg'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0܂dKu=ħ*Material List4+.;]kI 忞@"4+4+4+4W}@O{$4+-V?XM%4+(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%*,Material List Manager4+-V?XM%P4+4+&zB}J?p4+4+4W}@O{$4+zqLxs^tzqLxs^Mat Chunk 0BDynamic material input connector |E8y4+-V?XM%&zB}J?zqLxs^܂dKu=,*Material 04+.;]kI 忞@"4+4+4+4W}@O{$4+gYأC۲+?4+gYأC۲+?b=h0CRfq*0Material Flavor Manager4+gYأC۲+?P4+4+!EJGWMp4+4+6~qK;2t&p4+4+4W}@O{$4+?.9>DGl{?p4+!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀Dw* Solid 4+.F_P#T.F_P#Material Output material __W8E#(4+4+n%⟀A}aJp4+4+>]zJ4 p4+4+J.HE /*gp4+4+8VnZN:W pp4+4+ll-#Ez k^p4+4+K#uiL$p4+4+,L?D}p4+4+4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????,L?D}.F_P#K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabledll-#Ez k^8VnZN:W p?n':hF% I{*Editable shape4+VIQGіF͡Tp4+4+tveDCE`"IWJPB4+4+/nkUCEHLjp4+4+4W}@O{$(XFҦV"/nkUCEHLj(XFҦV>g'JNjn*pFBCX@1@?VIQGіF͡T>W5f@(䐈6ٸ*ćIC7 =>i=>i==>i>i=r>i=r>i=r>i=r>i?bN=>i=?r>i=?bN=>i?r>i=bN=>i==bN=>i㺛?>i==㺛?>i=㺛?>i=㺛?>ibN=>i=bN=>ir>i=bN=>i=r>ibN=>i=bN=?bN=?=r?r?bN==bN=r=r h* 6H?BJ <                  y'HN <LjUb)R <   !""""""#$%%&#'())*'+,--.+/0112/33333345667489::;8<=>>?<@ABBC@DDDDDDEFGGHEIJKKLIMNOOPMQRSSTQUUUUUUVWXXYVZ[\\]Z^_``a^bcddeb8{EE%D7[ <        ZpߘHXO f???????????????????????????????????????????????????89Ig"@?>?>@?*??*??>@?>?*?@?*?>>?>>*??*?>>>*?>*??>>>?>>*??*?>???tveDCE`"IWJ48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ 0NewCommandH// recenter // moves the center mesh to the center of the radial array template // December 4 2010 // Clinton Reese clintons3d.com // // Execute // Called to execute the command function Execute(params) { var axischoice = params.ConValue('axischoice'); owner = System.ThisOwner(); if(axischoice ==0) { conename = "/ConeX"; } if(axischoice ==1) { conename = "/ConeY"; System.Alert("arning: Y axis array will give unstable results.") } if(axischoice ==2) { conename = "/ConeZ"; } //position centered on selected axis mat = System.CreateDO("Math Package/Matrix Float Data"); mat = Node.Value(owner + conename,"ObjMatrix"); //position only mat.SetPitch(0); mat.SetRoll(0); mat.SetPitch(0); Node.Value(owner + "/Center","Matrix") = mat; } NScript Object Package/jScript language~൱Dl *#^cintaxischoicepa:B U4W}@O{(XFҦV>g'JNjn*pnCCb@@P@2|=Bynj|?z@Hoۙ>?pa:B UJ@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ N'NewCommandf&// calculate center // determine and implement the center of the array based on the center control mesh // December 4 2010 // Clinton Reese clintons3d.com // // Execute // Called to execute the command function Execute(params) { var axischoice = params.ConValue('axischoice'); owner = System.ThisOwner(); //return if the template, not the actual array object in the scene snowner = Node.ShortName(owner); if(snowner == "radialArrayTemplate") return; //pivot before and after rotate pivotmat1 = System.CreateDO("Math Package/Matrix Float Data"); pivotmat2 = System.CreateDO("Math Package/Matrix Float Data"); if(axischoice ==0) { conename = "/ConeX"; } if(axischoice ==1) { conename = "/ConeY"; } if(axischoice ==2) { conename = "/ConeZ"; } //cone points source matrix conemat = System.CreateDO("Math Package/Matrix Float Data"); conemat = Node.Value(owner + conename,"WldMatrix"); //original mesh matrix originmat = System.CreateDO("Math Package/Matrix Float Data"); originmat = Node.Value(owner + "/meshObj","WldMatrix"); //current center location centergoalmat = System.CreateDO("Math Package/Matrix Float Data"); centergoalmat = Node.Value(owner + "/Center","WldMatrix"); //vectors for atan angle measurement constvec = System.CreateDO("Math Package/Point Data"); centvec = System.CreateDO("Math Package/Point Data"); //from original mesh to the center of the selected cone axis - constant constvec.x = conemat.GetTransX() - originmat.GetTransX(); constvec.y = conemat.GetTransY() - originmat.GetTransY(); constvec.z = conemat.GetTransZ() - originmat.GetTransZ(); //from original mesh to the goal set by the center mesh centvec.x = centergoalmat.GetTransX() - originmat.GetTransX(); centvec.y = centergoalmat .GetTransY() - originmat.GetTransY(); centvec.z = centergoalmat .GetTransZ() - originmat.GetTransZ(); //find the angle and radius if(axischoice ==0) { constvec.x = 0; centvec.x = 0; } if(axischoice ==1) { constvec.y = 0; centvec.y = 0; } if(axischoice ==2) { constvec.z = 0; centvec.z = 0; } //new radius is the center vector magnitude centvecmag = Math.sqrt(centvec.x*centvec.x + centvec.y*centvec.y + centvec.z*centvec.z); constvecmag = Math.sqrt(constvec.x*constvec.x + constvec.y*constvec.y + constvec.z*constvec.z); small = 0.00001; if(centvecmag < small || constvecmag < small) { //set new radius Node.Value(owner,"RadiusBottom") = centvecmag; return;//no difference between goal and current direction } //convert to unit vectors centvec.x = centvec.x / centvecmag; centvec.y = centvec.y / centvecmag; centvec.z = centvec.z / centvecmag; constvec.x = constvec.x / constvecmag; constvec.y = constvec.y / constvecmag; constvec.z = constvec.z / constvecmag; //dot product //dotprod = constvec.x*centvec.x + constvec.y*centvec.y + constvec.z*centvec.z; //angle = Math.acos(dotprod);only gives 0 to PI, need -PI to +PI //atan2 to get -PI to +PI angle difference if(axischoice ==0) { x1 = constvec.y; y1 = constvec.z; x2 = centvec.y; y2 = centvec.z; } if(axischoice ==1) { x2 = constvec.x; y2 = constvec.z; x1 = centvec.x; y1 = centvec.z; } if(axischoice ==2) { x1 = constvec.x; y1 = constvec.y; x2 = centvec.x; y2 = centvec.y; } //get the angle in degrees, normalized to + or - 180 degress angle = Math.atan2(y1,x1) - Math.atan2(y2,x2); angledeg = angle * 180/ 3.14159; if(angledeg>180) angledeg = angledeg - 360; if(angledeg<-180) angledeg = angledeg + 360; //read control mesh pivot pivotmat1 = Node.Value(owner + conename + "/Pivot","WldMatrix"); //rotate the control mesh - by adding to the existing rotation xrot = conemat.GetRoll(); yrot = conemat.GetPitch(); zrot = conemat.GetYaw(); if(axischoice ==0) { xrot = xrot + angledeg; } if(axischoice ==1) { zrot = zrot + angledeg; } if(axischoice ==2) { zrot = zrot + angledeg; } RsTool.Rotate(owner + conename, xrot, yrot, zrot);//in degrees local coord //read new control mesh pivot pivotmat2 = Node.Value(owner + conename + "/Pivot","WldMatrix"); //move mesh oldpivot -> new pivot //cones local matrix conematloc = System.CreateDO("Math Package/Matrix Float Data"); conematloc = Node.Value(owner + conename,"Matrix"); dx = pivotmat2.GetTransX() - pivotmat1.GetTransX(); dy = pivotmat2.GetTransY() - pivotmat1.GetTransY(); dz = pivotmat2.GetTransZ() - pivotmat1.GetTransZ(); xv = conematloc.GetTransX() - dx; yv = conematloc.GetTransY() - dy; zv = conematloc.GetTransZ() - dz; conematloc.SetTransX(xv); conematloc.SetTransY(yv); conematloc.SetTransZ(zv); Node.Value(owner + conename,"Matrix") = conematloc; //set new radius Node.Value(owner,"RadiusBottom") = centvecmag; } NScript Object Package/jScript language8d)intaxischoicepa:B U4W}@O{(XFҦV>g'JNjn*pn@ DDb@@P@2|=Bynj|?z@Hoۙ>?pa:B UJ@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho 5@(l4*>Center Control Watch Dog Event4+2|=Bynj4+4+8ffNzw̮z@Ho4+4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pFC+Db@S@? asvHhTGeSBgc8 |J~DE+y*;08ffNzw̮J@#QL>g'JNjn*pFBB`@P@?-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ v NewCommand // cleanIt // empty the array object converting it to an ordinary group node // Dec 2 2010 // Clinton Reese - clintons3d.com // // Execute // Called to execute the command function Execute(params) { owner = System.ThisOwner(); snowner = Node.ShortName(owner); if(snowner == "radialArrayTemplate") return;//protect templated version of the encapsulator // //delete all the array nodes, scripts and watchdogs // Node.Delete(owner + "/update copies"); Node.Delete(owner + "/size update"); Node.Delete(owner + "/ConeX"); Node.Delete(owner + "/ConeY"); Node.Delete(owner + "/ConeZ"); Node.Delete(owner + "/ObjMatrixX Watch Dog Event"); Node.Delete(owner + "/ObjMatrixY Watch Dog Event"); Node.Delete(owner + "/ObjMatrixZ Watch Dog Event"); Node.Delete(owner + "/Axis Watch Dog Event"); Node.Delete(owner + "/SliceRadial Watch Dog Event"); Node.Delete(owner + "/RadiusBottom Watch Dog Event"); Node.Delete(owner + "/Radial Segments Watch Dog Event"); Node.Delete(owner + "/Center Control Watch Dog Event"); Node.Delete(owner + "/Height Watch Dog Event"); Node.Delete(owner + "/Center"); Node.Delete(owner + "/recenter"); Node.Delete(owner + "/calculate center"); // //remove all the exported connections // Node.ConRemove(owner, 'axischoice'); Node.ConRemove(owner, 'Radial segments'); Node.ConRemove(owner, 'RadiusBottom'); Node.ConRemove(owner, 'SliceRadial'); Node.Delete(owner + "/cleanIt");//can i delete myself? yes i can } NScript Object Package/jScript languageĨ)4W}@O{(XFҦV>g'JNjn*pn@nDgC`@@P@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho 5@(l*.Height Watch Dog Event4+2|=Bynj5+4+8ffNzw̮z@Ho4+4W}@O{%J@#QL(XFҦVLE2Data, 1#-1OSM n" asvHhTG$2|=Bynj4W}@O{(XFҦV>g'JNjn*pF8Cb@S@? asvHhTGeSBgc8 |J~DE+y*;0J@#QL>g'JNjn*pFBB`@P@?8ffNzw̮-1OSM n 럆L<_їActivity GFʠN=1 }}8ffNzw̮Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho48@J W5f@(䐈D5+ <@@:D5+CֹiCpq?rCֹiCpq?rDpointmeshY >W5f@(䐈D5+?@zIwW%%9?@zIwW%%9DpointmeshZ >W5f@(䐈D5+nsS#eKE=w1nsS#eKE=w1DHeightD2|=Bynj5+z@Ho2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?bLx$մ߁ceZU@䑧r[җJs@ ?NewCommand<// update copies // refresh the array based on input values and preexisting array elements // Dec 2 2010 // Dec 29 2010 - add spiral height option, bug in copy orientation // Clinton Reese - clintons3d.com // // Execute // Called to execute the command function Execute(params) { //the point mesh contains the points used as copy locations for the grid array elements var pointmeshX = params.ConValue('pointmeshX'); var pointmeshY = params.ConValue('pointmeshY'); var pointmeshZ = params.ConValue('pointmeshZ'); var axischoice = params.ConValue('axischoice'); var Height = params.ConValue('Height'); axis = axischoice ;//0=x, 1=y, 2=z pointmesh = System.CreateDO("Space 3D Package/Mesh Data"); if(axis==0) { pointmesh = pointmeshX; conename = "/ConeX"; } if(axis==1) { pointmesh = pointmeshY; conename = "/ConeY"; } if(axis==2) { pointmesh = pointmeshZ; conename = "/ConeZ"; } objectName = "meshObj";//original object for the array myVector = System.CreateDO('Math Package/Point Data'); transVect = System.CreateDO('Math Package/Point Data'); points = System.CreateDO("Space 3D Package/Vertex Stream Data"); rawpoints = System.CreateDO("Space 3D Package/Vertex Stream Data"); rawpoints = pointmesh.GetVertices(); points = pointmesh.GetVertices(); pivotMatrix = System.CreateDO("Math Package/Matrix Float Data");//pivot of the point source objMatrix = System.CreateDO("Math Package/Matrix Float Data"); finalMatrix = System.CreateDO("Math Package/Matrix Float Data"); origMatrix = System.CreateDO("Math Package/Matrix Float Data"); newmat = System.CreateDO("Math Package/Matrix Float Data"); idmat = System.CreateDO("Math Package/Matrix Float Data"); idmat.LoadIdentity(); owner = System.ThisOwner(); //return if the template, not the actual array object in the scene snowner = Node.ShortName(owner); if(snowner == "radialArrayTemplate") return; pivotMatrix = Node.Value(owner + conename +"/Pivot","Matrix");//get the pivot of the point source object objMatrix = Node.Value(owner + conename,"ObjMatrix"); //local transform of the point source //get rotation values of the point source finalMatrix.LoadIdentity(); finalMatrix.SetPitch(objMatrix.GetPitch()); finalMatrix.SetYaw(objMatrix.GetYaw()); finalMatrix.SetRoll(objMatrix.GetRoll()); numcopies = pointmesh.GetNumVertices();//object will be copied to each point location numcopies = numcopies - 2;//dont copy to last two points(center and tip) //dangle = 360/numcopies; dangle = Node.Value(owner,"SliceRadial"); if(dangle >= 360) dangle = dangle/numcopies; else dangle = dangle/(numcopies-1); //height = Node.Value(owner,"Height"); //transform the point values based on the point source local rotation for(m=0;m<numcopies;m++) { //base point positions are offset by the pivot so that the point at index 0 is at the location of the source object myVector.x = rawpoints.x(m)-pivotMatrix.GetTransX(); myVector.y = rawpoints.y(m)-pivotMatrix.GetTransY(); myVector.z = rawpoints.z(m)-pivotMatrix.GetTransZ(); if(Math.abs(Height)>0) myVector.z = myVector.z + Height*m/numcopies; transVect = finalMatrix.TransformPoint(myVector); points.x(m) = transVect.x ; points.y(m) = transVect.y ; points.z(m) = transVect.z ; } //if any zero value sizes in the array definition then a new list for points needed //the array will have repeating point locations, so process to remove the repeats myVec = System.CreateDO('Math Package/Point Data'); myVec2 = System.CreateDO('Math Package/Point Data'); goodbad = new Array(numcopies); uncleannumcopies = numcopies;//original unmodified number of copies //pre-existing node count after only original object copied into the array encapsulator numNotCopy = 4+1+2+7+1+1+1+1+1+1;//transform, point template, original, script,size update script //2 more templates so have x y and z, 7 watchdogs, center mesh, center script //calculate center script, center control watchdog, cleanUp //height watchdog //how many nodes now numsub = Node.SubObjectCount(owner); //the original object to be copied orig = owner + "/" + objectName; //indicates the original object count - always one numorig = 1; //how many copies of the original are needed? //gives the change in the number of copies deltacopy = (numcopies + numNotCopy - numorig) - numsub ; //delete extra copies - number of array elements has been reduced if(deltacopy < 0) { //get range of postfix values to remove from the array encapsulator end = numsub-numNotCopy; start = end + deltacopy + numorig;//note negative delta added //original has no postfix, copies are "objMesh, 1" "objMesh, 2" etc. for(k=start;k<=end;k++) { nodeName = owner + "/" + objectName + ", " + k; Node.Delete(nodeName); } } //get fresh count after any deletion of nodes above numsub = Node.SubObjectCount(owner); //recalculate the change in the number of copies deltacopy = (numcopies + numNotCopy - numorig) - numsub ; //if no change or positive change in number of copies need to update existing node positions if(deltacopy >= 0) { origMatrix = Node.Value(orig,"ObjMatrix");//for world matrix calculations if array in world mode //move old nodes into new positions for(j=0;j<=(numsub-numNotCopy);j++) { //create a new matrix based on transformed point locations newmat.LoadIdentity(); newmat.SetTransX(points.x(j)); newmat.SetTransY(points.y(j)); newmat.SetTransZ(points.z(j)); newmat.SetPitch(origMatrix.GetPitch()); newmat.SetRoll(origMatrix.GetRoll()); newmat.SetYaw(origMatrix.GetYaw()); if(axis==0) { newmat.SetRoll(origMatrix.GetRoll() - j*dangle); } if(axis==1) { newmat.SetPitch(origMatrix.GetPitch() - j*dangle); } if(axis==2) { newmat.SetYaw(origMatrix.GetYaw() - j*dangle); } //preserve original object scale values newmat.SetScaleX(origMatrix.GetScaleX()); newmat.SetScaleY(origMatrix.GetScaleY()); newmat.SetScaleZ(origMatrix.GetScaleZ()); //get the node name based on the index and apply the new matrix to it if(j==0) nodeName = owner + "/" + objectName ; else nodeName = owner + "/" + objectName + ", " + j; Node.Value(nodeName,"Matrix") = newmat; } } //if positive change in number need to add in the new copies if(deltacopy > 0) { //calculate the first index of the new copies start = numsub - numNotCopy + numorig; for(i=start;i<numcopies;i++) { //copy the original mesh node - copy will automatically name to the first free postfix numerical value cpy = Node.Copy(orig,owner); //create a new matrix based on transformed point locations newmat.LoadIdentity(); newmat.SetTransX(points.x(i)); newmat.SetTransY(points.y(i)); newmat.SetTransZ(points.z(i)); newmat.SetPitch(origMatrix.GetPitch()); newmat.SetRoll(origMatrix.GetRoll()); newmat.SetYaw(origMatrix.GetYaw()); if(axis==0) { newmat.SetRoll(origMatrix.GetRoll() - i*dangle); } if(axis==1) { newmat.SetPitch(origMatrix.GetPitch() - i*dangle); } if(axis==2) { newmat.SetYaw(origMatrix.GetYaw() - i*dangle); } //preserve original scale values newmat.SetScaleX(origMatrix.GetScaleX()); newmat.SetScaleY(origMatrix.GetScaleY()); newmat.SetScaleZ(origMatrix.GetScaleZ()); //apply the matrix and connect to the group transform node Node.Value(cpy,"Matrix") = newmat; Node.ConnectTo(owner + "/Transform", "WldMatrix", cpy, "OwnerMatrix"); } } } NScript Object Package/jScript language~൱D)#^c6Space 3D Package/Mesh DatapointmeshX >W5f@(䐈bLx$մ߁intaxischoice <@@:6Space 3D Package/Mesh DatapointmeshY >W5f@(䐈CֹiCpq?r6Space 3D Package/Mesh DatapointmeshZ >W5f@(䐈?@zIwW%%9numberHeightnsS#eKE=w1nsS#eKE=w1CֹiCpq?r4W}@O{?@zIwW%%9(XFҦV>g'JNjn*pn#DCb@ `@2|=Bynj|?z@Hoۙ>? <@@:J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho8ʯȥJH|o7 gH]kDwPڭ`d8pM*#ͺO/tfѭ8Lwb"qL?]B