gH]kDwP&trueSpaceBeta 7.61[VS_O93YJClinton Reese, Clintons 3D Creations`d8pM*#ͺOD$PNG  IHDR`ZIDATx1 0@1B>2z*Xyq]` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5kX` 5k hpIENDB`/tfѭ8Lwb"q(܂dKu=L%Linstall face to face snap Button v1.5 .;]kI 忞@.;]kI 忞@"SubObject*Encapsulated objects"` c @P `` 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*pFYCCr@@T@BB?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 K}}*RMB Copy function contributed by trueBlue.Z`Ez]UO}}d"T(MB2`._E#ބ6|&CustomFrame( .;]kI 忞@"l ` 4W}@O{$*O΢C}*O΢C} WinIDWindow ID` -pϗO 0)t-pϗO 0)PositionShelf Position mz!OHwc  >-MD'zZt>-MD'zZRectangle"Screen Rectangle THj6F 2s*` RÒGbDeC tRÒGbDeC  WidthWindow width ~ [FB%n*jt[FB%n*jHeightWindow height  [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*pFBCX@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 忞@"l 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@ %c 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@ NewCommand // Execute // Called to execute the command function Execute(params) { // TODO: put your action code here owner = System.ThisOwner(); button1 = "facetofaceButton"; theScript = "facetoface"; // 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 language4W}@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"facetofaceButton'0#ԪC'X/9}]8teO?s]8teO?s"MaxItemTxtHeight.Maximal item text size% sH?DC sH?DCTagTag%IlfāA>ˁwIlfāA>ˁwTagAliasTag Alias%/ru|GF0/ru|GF0AgentIDUpdate agentID(XFҦVLE2Data, 1"-1OSM n".;]kI 忞@"@P 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 idSr)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%?Aυ D)7t?Aυ D)7tGrayPercentxGray icon about specified percents if it is not highlighted][D+Iv(][D+Iv( MenuAct As Menu 8{Nm(!8{Nm(!IsMenuButtonIs Menu Button ko6ǑJ]@<N{2BBC850E-6EEF-4364-9265-A4A606AE464B}N="QEj%:~Activity.Run("/Scripts/CustomCommands/facetoface/setCopyFlag")$ܿORE bi//ru|GF0N{00000000-0000-0000-0000-000000000000}+fyOA7XC(XFҦV>g'JNjn*pFC b@v@p8B?8{Nm(!][D+Iv(ko6ˁw?Aυ D)7tUTl@fC.^&GZo(K ]p d|Face to Face snapping , RMB - Copy source , LMB - Move source]8teO?s.;]kI 忞@Sr)B8-1OSM n 럆L<_ї0DNOQsP'ѭeSBgc TC:\Users\Clint\Pictures\face2faceIcon.bmpcB<u xOTWĶ&m" ET6$[amQ,00þ 3"(n BXJI V 5iLj0kMk aiEII={(xU/ MF6 % _ؖ|fOJUXѴ$+ث<ײ̧H̥hr>?[ZgQ>zR]h WіfS8o\aZ1UzIOƌΰB3[t|V7NIqי_xx3Ȝyʕt%M:9%H?Ǽ/'7߈Yue אgg,:[ssh-0 BM0ƅ:R7bJ-:wVᕆixGxG# g)7=<1 G\9_L*:BιK8#,+! 3+&OI=Ntΐp*N6M8Ԏa{:r)u#? 'InuWpݎA(DZ [aW}2ֲ81bs1&[IH=n Ip+p1?㆗W–Ӭ.6JLg`ŻH-N'sIG2N_8[NAOXcATfepHh6sVԱjn*t;C$‰$/؄*^,5_ MeVg1ڸuT"mĹD\vt3#?0 \~ xNp 2™2,@8S):UCeiMozk6=؜>afͱq挍-}̉$ )giG.G(4)8EAjEwW]]W/Aӏ#=-7n$gq=Y(L9(rcݝ9D|KO@6Gxbsd*o+Ä1I30$IHiǒ;ԉ|bm_p"ZQjgDVQJ3ē>O"( lΐՙeqT;?Pi7MgܶLjcVZ:٭ 25KNdMғqe͖~p %fmp|uYOejTNl%TgroH߇< btvڙ#Xgߢ7йQ!1.pdQš/@zQGHѵN +B3G.cUD$|CtZyU(zŜMB bqbUx sH?DCB܂dKu=,facetoface.;]kI 忞@"#`ړ`ӓ`Γ`ɓན````ࠓ````~yt`p`B<`60`,'`#`౒`ຒ``4W}@O{$(XFҦV"-1OSM n"L}Ho3L}Ho3D Copy T༒L}Ho3 (XFҦV>g'JNjn*pF&DAX@@P@/?-1OSM n 럆L<_їDefaultOˁ CRih[`{}}^Activity.Run('%THIS_NAME%' + "/save obj ref"); do itZ`Ez]UO GFʠN=` {< }} Copy sourceL}Ho3Z`Ez]UOͽ>fdN*5Ւh {, }}L}Ho3Z`Ez]UO}}B48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?aG./Project/Space 3D/CubeceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { // TODO: put your action code here checkOK = true; selCount = Node.SelectedCount(); //System.Trace(selCount); if(selCount != 2) checkOK = false; else { selection = Node.Selection(); sel1 = Node.Selected(0); //System.Trace(sel1); sel2 = Node.Selected(1); //System.Trace(sel2); if(!Node.ConExists(sel1,"WldMatrix")) checkOK = false; if(!Node.ConExists(sel2,"WldMatrix")) checkOK = false; if(!Node.ConExists(sel1,"Mesh")) checkOK = false; if(!Node.ConExists(sel2,"Mesh")) checkOK = false; params.ConValue("node1") = sel1; params.ConValue("node2") = sel2; } //if ok enter PE mode and continue if(checkOK) { MeshModifiers.ActivatePointEditWidget('','','Default'); params.ConValue("twoOK") = 1; } else params.ConValue("notOK") = 1; } NScript Object Package/jScript language4 $!string node1-L #{{string node2aGint twoOK_"tVg'JNjn*pn~Cb@@X@2|=Bynj|?z@Hoۙ>?-L #{{</Project/Space 3D/Cylinder, 5ԪNǠzXHgyJ@#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]UO_"tVg'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho$ˋ%J)bkgd/Run Activity 2|=Bynj`,EwN:'eW[,EwN:'eW[LE2Data, 2$LE2 Data for node >g'JNjn*p19&FYL(W,19&FYL(W,LE2Data$LE2 Data for node >g'JNjn*p4W}@O{$(XFҦV#iP(I:7ntiP(I:7ntLE2Data, 1$LE2 Data for node >g'JNjn*p-1OSM n#`z@HouB!#~}uB!#~}LE2Data, 3$LE2 Data for node >g'JNjn*p啯]`O둒B啯]`O둒BLE2Data, 5$LE2 Data for node >g'JNjn*p asvHhTG asvHhTG$NodeIconNodeIcon eSBgc$ 2|=Bynj,EwN:'eW[>g'JNjn*pFAC7C`@c@?19&FYL(W,>g'JNjn*pFCB`@c@?4W}@O{(XFҦV>g'JNjn*pF)FCX@1@? asvHhTGeSBgc cB<urxxǟZEY2!F$f-UCV[nm(J b$?sוwܛ<'7֙?IH"E)RH"E3ر̦8#h7]`j,M8F_i0 u2)00hj׮M6 dS9 Մ S(44tRV}+W-oooãL{СC8͛>/)a^ӦMj۶-۷oOԱcGԩW.]k׮\Խ{w^zw8p,᳃fΚHSL41c͚5fϞ洹c?NO<=3p-Z,YB˖-z7i͚5jի?O>_S۶,?ލSo?U?ܹ_:p>|rrrѣ\'O3gйsΟ?O.\/ҥK._LW\|*..[n>{25`[:{970=$s˚+澭c m m5_~esV1Yo#G,Ͱ~@LeXQ֭-qzGMm۶ i˖-_M_~%ק~|{|ꫯK/D˗/g}ア'Ϛ7oߧcY*C~>==&OL&M{dzu$҈#hС4h JJJ_U&F?++_ۑ#G?ӳV9!98777Y*?'y(~6Wa;k ?ڄ/,~̙ï-77qKw7?|:tPW3XsN>6LJ~w/))͐P?sL~m:M6dح>{US{mةSVeÆ >հ$|M0d-σ \2!?3b[ݺuHQ+QFY%37S]S rքf+7رc*|||קƠ'8.9!N*5J@Z1%0?cn}߿?ϡAN $k9_!r,Xz)۱tR /܏^{^uz飏>k|?琬_mӦMyf~Wںu+B"/e<Ώ]v?Cu׮]3\75 943<yt36ǚG_= O*a۬??ּ~:mG$G,zX@ȉ=q0k*|7nv^޽vo6?9DC,o }SV\ߠ6u|V 5*S/>IM> }`P#6n8A|~<%%%bccw޲c;wB0 5Gc{:5c3^NÇ/jƤ`d2?>L ilA4{V#\fM(vgxpe+c1= w_vm/^rBsWklh3x7?bȧ1x霎uKI{~5$#:gϞg=5n8zh.A:zSN-~ k_|yz9_ĩ׭[">-bȏw5Gp+メXc͏X;"ѡCq|:"z,gC T =.bwX>fųvCn5~5}RL)YVLYO>N/}]cfɆ}#";ћ˻GXcL`O1GLZcgϞb~/<އK􄄏D;CUCo pB~N"B _zM?'4fBܢo߾: ~Iwi "~-'qm>=<0sJ}"'s@:"]kьg&JF튾gg.)/{y?ŵiYc":}LZ]@`9&j}:b"m!E_fR' K=U%c~sŵRܯ}Ri͚1'r{ kcϱq?؆ ΜmMsV !:I](}/ (Q{8žڷoK +46*_1=/ bsg@4n  1`-$?{#v>Gig`wǺ43joS׶{hv:9?3}ߥKq7&rybY#M1y50wi4KCwK4&onFQ 2 .Iӧ?fH5S;Ci+Uv@?LwK_Cw (eyF_l׮ݜdpE3i&EB^k]#>۷o?yZc! gi{v MȧhPLW2[D_0sLj@ϴ>K~%j%/f(?yNٛ#BU<^>{}Ϗ3?22 :uDEj8+Z^C O>㿘׻I,`4rػ&^ZD,O3'?S+WJHU=bh_R7MRgqJy/Cϱqu3ͧP6yǘEL&r*{D'?KeodTiBB,# ?n1ocٜܝS8&X5}T`߬t?Zɾ9j㷙=Ao>nTc>13.sZЛJP&Lo"[y}_OPbGzOKh8G_Uk15Ȯ}R3Sg~ثcCwf[esaj^?MPGOSkyMػ4*)AkQf.4N3җ_Զ"Z &kH_իP ?jZj%͟oc/{06|&NSv揾ޢKGTT}ť~`GriL~EՊ}`ze9f}o}JL »R9{9Ij *Zt 0h5Osc=;;4OCLn7=׾z_ʿEý4:sq }C;5#jzo{>=)(z;KkUE#[ܨv?}S|羟yY8D];Ԗs:_Uƿ=㏱o96ORXfK|%}Q=?sl4Ÿ_Ǻކ{gf'c U?U~=J)Ik fo~2'?x׺z6loW0%Ʈ6 {|Ծ2o[}!z>/zF|n4Ri*'X}ƾ=z?Jxo)wE"{;NQaA z*cܗ{u/u/>V}|޳S帝f4~(SG0jo2Ѯl ?{IW=#e;lG ϻJ읏ΐS=4fR/?΁G,}` .s軉 &RVB 1,fDoO '''Pwft%vPsbO<߿Ȯ96Ё*}YQO?`^ˇ}m;ޱtcC*~qPuu*ݵ}loOWۀ v *!~쾕\3Ufu'ʥ! 97:a_2풡j'9|k*:Ϋ'),hQk=GlB>^:'ԩLywd Zc_=ɓ}pVJFn.%jGee;rjBQvFHV)m2T::EZkuQs!~/zRٗ?h7le /o7JI^*`?j>Tڵm[\QQ3zDQll4>1Է_<OJiPr?>O))Il2_Rh9;iޱ =Tv=Eυof;Iw~EQ|ݗ+V-}rB?3^cz3䋢-[JsMG^[nB>rR !Gn\/ynnni!w\Ĥ1a= }"F8w{|> 5wW}YguUvb=G5{Ǎ^#+7})]ڷۄw0]W)WWLP!>g/n7}8yVo(|úXN{^g~LD~+wxx'﷟?d{gp'ˢ {%ouL\{P8W9s^ M6= ΐ~pݺu~gp~rAZh?3VpRGjzc6l=M9o{7 3}sύ֬!#g#?y8Mo=[q6.vu"Һ34+T^9]ΌՌKȊSh6ֶ>Jv}^[vv*""_eMur,swlrͦY?<%&7= 9݋譾}hΜtw#Uu22y?z6RSر̢fǼhvފ)RH"E_V啯]`O둒B>g'JNjn*pFCCa@T@?iP(I:7nt>g'JNjn*pFBUC`@c@?-1OSM n 럆L<_їeActivity GFʠN=0@@< }} Control Inz@HoZ`Ez]UO GFʠN=@0@= }} Control Out2|=BynjZ`Ez]UOOˁ CRih[ o8Activity.Run('%THIS_NAME%')Run ActivityZ`Ez]UOOˁ CRih[ 0s:Activity.Stop('%THIS_NAME%')Stop ActivityZ`Ez]UOz@HouB!#~}>g'JNjn*pFCBa@P@?48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ d NewCommandn // Execute // Called to execute the command function Execute(params) { var node1 = params.ConValue('node1'); var node2 = params.ConValue('node2'); owner = System.ThisOwner(); cont = false; selElem = System.CreateDO("Space 3D Package/Selection Data"); selElem = Node.Value(node1,"Selection"); tricnt = selElem.GetNumSelectedTriangles(); facetricnt = selElem.GetNumSelectedFaceTriangles(); if(tricnt != 0 || facetricnt != 0) { params.ConValue("source") = node1; params.ConValue("destination") = node2; Node.Value(owner + "/objRef","source") = node1; Node.Value(owner + "/objRef","destination") = node2; cont = true; } selElem = Node.Value(node2,"Selection"); tricnt = selElem.GetNumSelectedTriangles(); facetricnt = selElem.GetNumSelectedFaceTriangles(); if(tricnt != 0 || facetricnt != 0) { params.ConValue("source") = node2; params.ConValue("destination") = node1; Node.Value(owner + "/objRef","source") = node2; Node.Value(owner + "/objRef","destination") = node1; cont = true; } // params.ConValue("source") = ... // params.ConValue("destination") = ... // params.ConValue("point1") = ... // params.ConValue("loop") = ... // params.ConValue("continue") = ... if(cont) params.ConValue("continue") = 1; else params.ConValue("loop") = 1; } NScript Object Package/jScript language~൱D@ j#^cstring node1v(E͉`,string node2W,}Ly2<stringsource^JK #jBstringdestinationV3QQ(@@zvint loop-aA%nintcontinue 0ʂJ5z= DSpace 3D Package/Point Array Datapoint1 (F)ݟ{F^Y-aA%nW,}Ly2<./Project/Space 3D/Cube4W}@O{^JK #jB</Project/Space 3D/Cylinder, 5(XFҦV>g'JNjn*pn@!Cb@ b@2|=Bynj|?z@Hoۙ>?V3QQ(@@zv./Project/Space 3D/CubeJ@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?F^Y-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@Hov(E͉`,</Project/Space 3D/Cylinder, 548@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { // save point edit selection mode params.ConValue("PEselectionMode") = Node.Value('/Preferences/Mesh Editor Settings','PE selection mode'); //change to vertex mode Node.Value('/Preferences/Mesh Editor Settings','PE selection mode') = 'vertex'; MeshModifiers.ActivatePointEditWidget('','','Default'); } NScript Object Package/jScript language~൱D@ j#^cstring PEselectionModeb/pEj F4W}@O{b/pEj F face(XFҦV>g'JNjn*pnBX@1@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 g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { MeshModifiers.ConvertSelection('',''); } NScript Object Package/jScript language~൱D@ j#^c4W}@O{(XFҦV>g'JNjn*pn%CX@1@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 g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { var PEselectionMode = params.ConValue('PEselectionMode'); //change mode back to original Node.Value('/Preferences/Mesh Editor Settings','PE selection mode') = PEselectionMode; MeshModifiers.ActivatePointEditWidget('','','Default'); } NScript Object Package/jScript languagestring PEselectionMode/6H𗁻 4W}@O{(XFҦV>g'JNjn*pn Cb@@P@2|=Bynj|?z@Hoۙ>?/6H𗁻  faceJ@#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@ NewCommand// Execute // Called to execute the command function Execute(params) { MeshModifiers.ConvertSelection('',''); } NScript Object Package/jScript languageЫf\l 4W}@O{(XFҦV>g'JNjn*pnCX@>@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 g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ : NewCommand // Execute // Called to execute the command function Execute(params) { var sourceNode = params.ConValue('sourceNode'); owner = System.ThisOwner(); sourceNode = Node.Value(owner + "/objRef", "source"); // TODO: put your action code here //get the mesh and read it's selection data - IRdMeshSelection themesh = System.CreateDO("Space 3D Package/Mesh Data"); themesh = Node.Value(sourceNode,"Mesh"); seldata = System.CreateDO('Space 3D Package/Selection Data'); seldata = Node.Value(sourceNode,"Selection"); vertcnt = seldata.GetNumSelectedVertices(); dV = System.CreateDO("Space 3D Package/Vertex Stream Data"); dV = themesh.GetVertices(); xval = 0; yval = 0; zval = 0; for(i=0;i<vertcnt;i++) { vertind = seldata.GetSelectedVertexIndex(i); xval = xval + dV.x(vertind); yval = yval + dV.y(vertind); zval = zval + dV.z(vertind); } xval = xval/vertcnt; yval = yval/vertcnt; zval = zval/vertcnt theMatrix = System.CreateDO('Math Package/Matrix Float Data'); theMatrix = Node.Value(sourceNode,"WldMatrix"); //if(Node.ConExists(sourceNode,"Pivot")) // theMatrix = Node.Value(sourceNode,"Pivot"); oldPoint = System.CreateDO('Math Package/Point Data'); newPoint = System.CreateDO('Math Package/Point Data'); oldPoint.x = xval; oldPoint.y = yval; oldPoint.z = zval; newPoint = theMatrix.TransformPoint(oldPoint); Node.Value(owner + "/objRef","sourceCenter") = newPoint; params.ConValue("point1") = newPoint; } NScript Object Package/jScript language :EDSpace 3D Package/Point Array Datapoint1 (F)ݟ{5BistringsourceNode<˾vxG-4W}@O{(XFҦV>g'JNjn*pnWCb@@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]UO<˾vxG-4/Project/Space 3D/Cone, 2MT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ vNewCommand// Execute // Called to execute the command function Execute(params) { var sourceNode = params.ConValue('sourceNode'); var point1 = params.ConValue('point1'); owner = System.ThisOwner(); sourceNode = Node.Value(owner + "/objRef","source"); point1 = Node.Value(owner + "/objRef","sourceCenter"); // TODO: put your action code here dX = point1.x ; dY = point1.y ; dZ = point1.z ; RsTool.ShowAxes(sourceNode); // RsTool.NormalizeLocation(sourceNode + '/Pivot'); //RsTool.NormalizeRotation(sourceNode + '/Pivot'); Widgets.Move(sourceNode + "/Pivot",dX,dY,dZ); RsTool.ShowAxes(sourceNode ); } NScript Object Package/jScript languagestringsourceNode?IpO2cDSpace 3D Package/Point Array Datapoint1 (F)ݟ{͡|KDDQu4W}@O{(XFҦV>g'JNjn*pn9Db@@T@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>??IpO2c4/Project/Space 3D/Cone, 2͡|KDDQuuMF86F`Oa?-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$ˋ%J)bkg* Run Activity, 1 ๓2|=Bynj`,EwN:'eW[19&FYL(W,`4W}@O{$(XFҦV#iP(I:7nt-1OSM n#`z@HouB!#~}uB!#~}LE2Data, 3$LE2 Data for node >g'JNjn*p啯]`O둒B asvHhTG$ 2|=Bynj,EwN:'eW[>g'JNjn*pFAC7C`@c@?19&FYL(W,>g'JNjn*pFCB`@c@?4W}@O{(XFҦV>g'JNjn*pFCX@1@? asvHhTGeSBgc8 cB<u啯]`O둒B>g'JNjn*pFCCa@T@?iP(I:7nt>g'JNjn*pFBUC`@c@?-1OSM n 럆L<_їeActivity GFʠN=0@@< }} Control Inz@HoZ`Ez]UO GFʠN=@0@= }} Control Out2|=BynjZ`Ez]UOOˁ CRih[ o8Activity.Run('%THIS_NAME%')Run ActivityZ`Ez]UOOˁ CRih[ 0s:Activity.Stop('%THIS_NAME%')Stop ActivityZ`Ez]UOuB!#~}>g'JNjn*pFCBa@P@?z@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ d NewCommand// Execute // Called to execute the command function Execute(params) { var node1 = params.ConValue('node1'); var node2 = params.ConValue('node2'); owner = System.ThisOwner(); node2 = Node.Value(owner + "/objRef","destination"); // TODO: put your action code here cont = false; selElem = System.CreateDO("Space 3D Package/Selection Data"); selElem = Node.Value(node2,"Selection"); tricnt = selElem.GetNumSelectedTriangles(); facetricnt = selElem.GetNumSelectedFaceTriangles(); if(tricnt != 0 || facetricnt != 0) { cont = true; } // params.ConValue("source") = ... // params.ConValue("destination") = ... // params.ConValue("point2") = ... // params.ConValue("normal") = ... // params.ConValue("loop") = ... // params.ConValue("continue") = ... if(cont) params.ConValue("continue") = 1; else params.ConValue("loop") = 1; } NScript Object Package/jScript languagePWDi|string node1v(E͉`,string node2W,}Ly2<stringsource^JK #jBstringdestinationV3QQ(@@zvint loop-aA%nintcontinue 0ʂJ5z= DSpace 3D Package/Point Array Datapoint2 (F)ݟ{ȿIF=IXiDSpace 3D Package/Point Array Datanormal (F)ݟ{AHgMPFg'JNjn*pnCb@ d@2|=Bynj|?z@Hoۙ>?AHgMPFg'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@Hov(E͉`,R/Project/kg_brandi_sect_parented, 1/Cube48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { // save point edit selection mode params.ConValue("PEselectionMode") = Node.Value('/Preferences/Mesh Editor Settings','PE selection mode'); //change to vertex mode Node.Value('/Preferences/Mesh Editor Settings','PE selection mode') = 'vertex'; MeshModifiers.ActivatePointEditWidget('','','Default'); } NScript Object Package/jScript language~൱D@ j#^cstring PEselectionModeb/pEj F4W}@O{b/pEj Ftriangle(XFҦV>g'JNjn*pnC)CX@>@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 g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { MeshModifiers.ConvertSelection('',''); } NScript Object Package/jScript language~൱D@ j#^c4W}@O{(XFҦV>g'JNjn*pnCqCX@>@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 g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand // Execute // Called to execute the command function Execute(params) { var destNode = params.ConValue('destNode'); owner = System.ThisOwner(); destNode = Node.Value(owner + "/objRef","destination"); // TODO: put your action code here //get the mesh and read it's selection data - IRdMeshSelection themesh = System.CreateDO("Space 3D Package/Mesh Data"); themesh = Node.Value(destNode,"Mesh"); seldata = System.CreateDO('Space 3D Package/Selection Data'); seldata = Node.Value(destNode,"Selection"); vertcnt = seldata.GetNumSelectedVertices(); dV = System.CreateDO("Space 3D Package/Vertex Stream Data"); dV = themesh.GetVertices(); xval = 0; yval = 0; zval = 0; for(i=0;i<vertcnt;i++) { vertind = seldata.GetSelectedVertexIndex(i); xval = xval + dV.x(vertind); yval = yval + dV.y(vertind); zval = zval + dV.z(vertind); } xval = xval/vertcnt; yval = yval/vertcnt; zval = zval/vertcnt theMatrix = System.CreateDO('Math Package/Matrix Float Data'); theMatrix = Node.Value(destNode,"WldMatrix"); //if(Node.ConExists(sourceNode,"Pivot")) // theMatrix = Node.Value(sourceNode,"Pivot"); oldPoint = System.CreateDO('Math Package/Point Data'); newPoint = System.CreateDO('Math Package/Point Data'); oldPoint.x = xval; oldPoint.y = yval; oldPoint.z = zval; newPoint = theMatrix.TransformPoint(oldPoint); Node.Value(owner + "/objRef","destCenter") = newPoint; params.ConValue("point2") = newPoint; // params.ConValue("normal") = ... } NScript Object Package/jScript languageDSpace 3D Package/Point Array Datapoint2 (F)ݟ{XpAttDSpace 3D Package/Point Array Datanormal (F)ݟ{IYH͏~}stringdestNode?GN'IYH͏~}uMF86F`O] @?4W}@O{(XFҦV>g'JNjn*pnBCb@@X@2|=Bynj|?z@Hoۙ>?XpAttuMF86F`O)WV @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]UO?GN'./Project/Space 3D/CubeMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { // save point edit selection mode params.ConValue("PEselectionMode") = Node.Value('/Preferences/Mesh Editor Settings','PE selection mode'); //change to vertex mode Node.Value('/Preferences/Mesh Editor Settings','PE selection mode') = 'triangle'; MeshModifiers.ActivatePointEditWidget('','','Default'); } NScript Object Package/jScript languagetstring PEselectionModeb/pEj F4W}@O{b/pEj F face(XFҦV>g'JNjn*pnDX@1@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 g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { MeshModifiers.ConvertSelection('',''); } NScript Object Package/jScript language~൱D@ j#^c4W}@O{(XFҦV>g'JNjn*pn@)Db@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@Ho48@J l>A; I> l>AByawBޖXE)͞!ޖXE)͞!B pitchB2|=Bynj``z@Ho2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand*// Execute // Called to execute the command function Execute(params) { var destNode = params.ConValue('destNode'); owner = System.ThisOwner(); destNode = Node.Value(owner + "/objRef","destination"); theMesh = System.CreateDO("Space 3D Package/Mesh Data"); dV = System.CreateDO("Space 3D Package/Vertex Stream Data"); dF = System.CreateDO("Space 3D Package/Triangle Vertices Stream Data"); theMatrix = System.CreateDO("Math Package/Matrix Float Data"); myVector = System.CreateDO('Math Package/Point Data'); myVector2 = System.CreateDO('Math Package/Point Data'); myVector3 = System.CreateDO('Math Package/Point Data'); myNorm = System.CreateDO('Math Package/Point Data'); myNormT = System.CreateDO('Math Package/Point Data'); seldata = System.CreateDO("Space 3D Package/Selection Data"); seldata = Node.Value(destNode,"Selection"); //theMesh = Node.Value(destNode, "Mesh"); //must read mesh from input of mesh node theMesh = Node.Value(destNode + "/Editable shape", "Input Mesh"); theMatrix = Node.Value(destNode, "WldMatrix"); //if(Node.ConExists(destNode, "Pivot")) // theMatrix = Node.Value(destNode, "Pivot"); //dNTri = theMesh.GetTrianglesStreamByName('Triangle Normals Stream Data'); //dN = theMesh.GetCustStreamByName('Normals Stream Data'); dV = theMesh.GetVertices(); dF = theMesh.GetTriangles(); triind = seldata.GetSelectedTriangle(0);//use first selected triangle to get the face normal //ijk px = dV.x(dF.j(triind)) - dV.x(dF.i(triind)); py = dV.y(dF.j(triind)) - dV.y(dF.i(triind)); pz = dV.z(dF.j(triind)) - dV.z(dF.i(triind)); qx = dV.x(dF.k(triind)) - dV.x(dF.i(triind)); qy = dV.y(dF.k(triind)) - dV.y(dF.i(triind)); qz = dV.z(dF.k(triind)) - dV.z(dF.i(triind)); //cross product = normal myVector2.x = py*qz - pz*qy; myVector2.y = pz*qx - px*qz; myVector2.z = px*qy - py*qx; //opposite of normal for matching other normal myVector2.x = -myVector2.x ; myVector2.y = -myVector2.y ; myVector2.z = -myVector2.z ; myVector2.Normalize(); //myVector2.x = -myVector2.x; //myVector2.y = -myVector2.y; //myVector2.z = -myVector2.z; //myVector = theMatrix.TransformPoint(myVector2); myVector = theMatrix.TransformVector(myVector2); //System.Trace(myVector.x + ", " + myVector.y + ", " + myVector.z); //convert vector to angles yaw = Math.atan2(myVector.y, myVector.x );//angle from x axis pitch = Math.atan2(myVector.z, Math.sqrt((myVector.x * myVector.x) + (myVector.y * myVector.y))); pitch = pitch*180/3.14159 ; yaw = -yaw*180/3.14159; //use nodes to calculate pivot rotation owner = System.ThisOwner(); parentMatrix = System.CreateDO("Math Package/Matrix Float Data"); childMatrix = System.CreateDO("Math Package/Matrix Float Data"); parentMatrix.LoadIdentity(); childMatrix.LoadIdentity(); parentMatrix.SetYaw(yaw); Node.Value(owner + "/pivotParent", "Matrix") = parentMatrix; childMatrix.SetPitch(pitch); Node.Value(owner + "/pivotParent/pivotChild", "Matrix") = childMatrix; params.ConValue("yaw") = yaw; params.ConValue("pitch") = pitch; //params.ConValue("point2") = newPoint; // params.ConValue("normal") = ... } NScript Object Package/jScript language~൱D@ j#^cDSpace 3D Package/Point Array Datapoint2 (F)ݟ{XpAttDSpace 3D Package/Point Array Datanormal (F)ݟ{IYH͏~}stringdestNode?GN'numberyaw; I> l>Anumber pitchޖXE)͞!IYH͏~}4W}@O{; I> l>AԦ>f@(XFҦV>g'JNjn*pnBDb@ `@2|=Bynj|?z@Hoۙ>?XpAttJ@#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]UO?GN'./Project/Space 3D/CubeMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@HoޖXE)͞!Ԧ>V48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { // save point edit selection mode params.ConValue("PEselectionMode") = Node.Value('/Preferences/Mesh Editor Settings','PE selection mode'); //change to vertex mode Node.Value('/Preferences/Mesh Editor Settings','PE selection mode') = 'face'; MeshModifiers.ActivatePointEditWidget('','','Default'); } NScript Object Package/jScript language~൱Dm@#^cstring PEselectionModeb/pEj F4W}@O{b/pEj F face(XFҦV>g'JNjn*pnLBb@@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 l>ABޖXE)͞!B2|=Bynj`q`z@Ho2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommandf// Execute // Called to execute the command function Execute(params) { var destNode = params.ConValue('destNode'); owner = System.ThisOwner(); destNode = Node.Value(owner + "/objRef","source"); theMesh = System.CreateDO("Space 3D Package/Mesh Data"); dV = System.CreateDO("Space 3D Package/Vertex Stream Data"); dF = System.CreateDO("Space 3D Package/Triangle Vertices Stream Data"); theMatrix = System.CreateDO("Math Package/Matrix Float Data"); myVector = System.CreateDO('Math Package/Point Data'); myVector2 = System.CreateDO('Math Package/Point Data'); myVector3 = System.CreateDO('Math Package/Point Data'); myNorm = System.CreateDO('Math Package/Point Data'); myNormT = System.CreateDO('Math Package/Point Data'); seldata = System.CreateDO("Space 3D Package/Selection Data"); seldata = Node.Value(destNode,"Selection"); //theMesh = Node.Value(destNode, "Mesh"); //must read mesh from input of mesh node theMesh = Node.Value(destNode + "/Editable shape", "Input Mesh"); theMatrix = Node.Value(destNode, "WldMatrix"); //if(Node.ConExists(destNode, "Pivot")) // theMatrix = Node.Value(destNode, "Pivot"); //dNTri = theMesh.GetTrianglesStreamByName('Triangle Normals Stream Data'); //dN = theMesh.GetCustStreamByName('Normals Stream Data'); dV = theMesh.GetVertices(); dF = theMesh.GetTriangles(); triind = seldata.GetSelectedTriangle(0);//use first selected triangle to get the face normal //ijk px = dV.x(dF.j(triind)) - dV.x(dF.i(triind)); py = dV.y(dF.j(triind)) - dV.y(dF.i(triind)); pz = dV.z(dF.j(triind)) - dV.z(dF.i(triind)); qx = dV.x(dF.k(triind)) - dV.x(dF.i(triind)); qy = dV.y(dF.k(triind)) - dV.y(dF.i(triind)); qz = dV.z(dF.k(triind)) - dV.z(dF.i(triind)); //cross product = normal myVector2.x = py*qz - pz*qy; myVector2.y = pz*qx - px*qz; myVector2.z = px*qy - py*qx; //myVector2.Normalize(); //myVector2.x = -myVector2.x; //myVector2.y = -myVector2.y; //myVector2.z = -myVector2.z; //myVector = theMatrix.TransformPoint(myVector2); myVector = theMatrix.TransformVector(myVector2); //System.Trace(myVector.x + ", " + myVector.y + ", " + myVector.z); //convert vector to angles yaw = Math.atan2(myVector.y, myVector.x );//angle from x axis pitch = Math.atan2(myVector.z, Math.sqrt((myVector.x * myVector.x) + (myVector.y * myVector.y))); //myMatrix = System.CreateDO("Math Package/Matrix Float Data"); //myMatrix.LoadIdentity(); //myMatrix.SetYaw(yaw); //myMatrix.SetPitch(pitch); pitch = pitch*180/3.14159 ; yaw = -yaw*180/3.14159; //use nodes to calculate pivot rotation owner = System.ThisOwner(); parentMatrix = System.CreateDO("Math Package/Matrix Float Data"); childMatrix = System.CreateDO("Math Package/Matrix Float Data"); parentMatrix.LoadIdentity(); childMatrix.LoadIdentity(); parentMatrix.SetYaw(yaw); Node.Value(owner + "/pivotParent", "Matrix") = parentMatrix; childMatrix.SetPitch(pitch); Node.Value(owner + "/pivotParent/pivotChild", "Matrix") = childMatrix; //yaw = yaw + 90; RsTool.ShowAxes(destNode); RsTool.NormalizeLocation(destNode + '/Pivot'); RsTool.NormalizeRotation(destNode + '/Pivot'); //Node.Value(destNode + "/Pivot","Matrix") = myMatrix; Widgets.Rotate(destNode + "/Pivot", 0, 0, yaw, 0,0,0); //Widgets.Rotate(destNode + "/Pivot", 0, pitch, 0, 0,0,0); RsTool.ShowAxes(destNode); //Widgets.Rotate(destNode , 0, -pitch, -yaw, 0,0,0); params.ConValue("yaw") = yaw; params.ConValue("pitch") = pitch; //params.ConValue("point2") = newPoint; // params.ConValue("normal") = ... } NScript Object Package/jScript languageDSpace 3D Package/Point Array Datapoint2 (F)ݟ{XpAttDSpace 3D Package/Point Array Datanormal (F)ݟ{IYH͏~}stringdestNode?GN'numberyaw; I> l>Anumber pitchޖXE)͞!4W}@O{IYH͏~}; I> l>Ah;f(XFҦV>g'JNjn*pnCb@ `@2|=Bynj|?z@Hoۙ>?XpAttJ@#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ۙ>??GN'4/Project/Space 3D/Cone, 2ޖXE)͞!3OK>z@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { MeshModifiers.ConvertSelection('',''); } NScript Object Package/jScript language~൱D@ j#^c4W}@O{(XFҦV>g'JNjn*pnB 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@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { // save point edit selection mode params.ConValue("PEselectionMode") = Node.Value('/Preferences/Mesh Editor Settings','PE selection mode'); //change to vertex mode Node.Value('/Preferences/Mesh Editor Settings','PE selection mode') = 'triangle'; MeshModifiers.ActivatePointEditWidget('','','Default'); } NScript Object Package/jScript languagetstring PEselectionModeb/pEj F4W}@O{b/pEj Fvertex(XFҦV>g'JNjn*pnCX@>@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 `)|EB; s@>`)|EB; DthenodeDM M?' MM M?' MD pitchDq2|=Bynj``qz@Ho s@>`)|EB; 4/Project/Space 3D/Cone, 22|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?M M?' M}G33@ceZU@䑧r[җJs@ "NewCommand// Execute // Called to execute the command function Execute(params) { var thenode = params.ConValue('thenode'); var pitch = params.ConValue('pitch'); owner = System.ThisOwner(); thenode = Node.Value(owner + "/objRef","source"); // TODO: put your action code here RsTool.ShowAxes(thenode); RsTool.NormalizeLocation(thenode + '/Pivot'); RsTool.NormalizeRotation(thenode + '/Pivot'); //Node.Value(destNode + "/Pivot","Matrix") = myMatrix; //Widgets.Rotate(destNode + "/Pivot", 0, 0, yaw, 0,0,0); owner = System.ThisOwner(); myMatrix = System.CreateDO("Math Package/Matrix Float Data"); myMatrix = Node.Value(owner + "/pivotParent/pivotChild","WldMatrix"); roll = myMatrix.GetRoll(); pitch = myMatrix.GetPitch(); yaw = myMatrix.GetYaw(); Widgets.Rotate(thenode + "/Pivot", roll, pitch, yaw, 0,0,0); RsTool.ShowAxes(thenode); } NScript Object Package/jScript language3 Tstringthenodes@>`)|EB; number pitchM M?' M4W}@O{(XFҦV>g'JNjn*pnDb@@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ۙ>?z@Ho܂dKu=4pivotParentp.;]kI 忞@"lD`p4W}@O{$o׊;Jf|ڢ׊;Jf|ڢBWldMatrixWorld matrix `^02eE{|@R`o偢jD%~`8偢jD%~`8BObjMatrix Object's matrix `^02eE{|@RnWAGWAGOwnerMatrixOwner's matrix `^02eE{|@`F`n<ĠF姁J]<ĠF姁J]DMatrix,Object's input matrix `^02eE{|@TF(XFҦV"偢jD%~`8(XFҦV>g'JNjn*pF@@ Db@@T@B?׊;Jf|ڢWAG`^02eE{|@B????<ĠF姁J]`^02eE{|@B565??܂dKu=.pivotChild `m.;]kI 忞@"`e`c`V`Ol4W}@O{$ G?ŋ G?ŋ tSObjLtrueSpace object synchronization data W5f@(䐈Z`̒`Ғ`˒`k׊;Jf|ڢZ̒`“`˒j偢jD%~`8Z`jWAGfi<ĠF姁J]\`g$1&KߊPV$1&KߊPV$AutoShowPanelAutoShowPanel$h-V?XM%-V?XM%Material ListMaterial List +N⩊Ғ(XFҦV"gS $hKnPSVmS $hKnPSVm"RenderAttributes"RenderAttributes HEoq5vђ`Ӓ -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pFD@Bb@ b@?׊;Jf|ڢWAG G?ŋg'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0܂dKu=pMaterial Listc.;]kI 忞@"`a_`c4W}@O{$b-V?XM%h-V?XM%) 6G%g,Material List Manager`b-V?XM%Pba&zB}J?t&zB}J?&Active material ID2Active material class ID`b`a4W}@O{$`WyLMXtWyLMXMat Chunk 0BDynamic material input connector |E8y`b-V?XM%&zB}J?WyLMX܂dKu=\Material 0``.;]kI 忞@"`]`X_4W}@O{$`_gYأC۲+?gYأC۲+?Material ChunkMaterial Chunk |E8y`gYأC۲+?b=h0CRfw0Material Flavor Manager^gYأC۲+?P`_`^!EJGWMt!EJGWMMaterial IndexMaterial Index^]6~qK;2t&t6~qK;2t&Active Info4Active and validity flags NOI/)[&^`]4W}@O{$\yPE|Jc7UtyPE|Jc7UMat Item 0BDynamic material input connector^!EJGWM6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?yPE|Jc7U~wC쇀Dy Solid `\.F_P#T.F_P#Material Output material __W8E#(\[n%⟀A}aJtn%⟀A}aJDiffuseColorDiffuseColor -n,Njlpg`\`[>]zJ4 t>]zJ4 (VertexColorStrength(VertexColorStrength`\ZJ.HE /*gtJ.HE /*gShininessShininess`\`Z8VnZN:W pt8VnZN:W p DiffuseStrength DiffuseStrength`\Yll-#Ez k^tll-#Ez k^"SpecularStrength"SpecularStrength`\`YK#uiL$tK#uiL$AlphaTestAlphaTest :KrbSx`\X,L?D}t,L?D}AlphaTestValueAlphaTestValue`\`X4W}@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% Il?Editable shapeWVIQGіF͡TtVIQGіF͡TInput Mesh*Input Mesh for Shape >W5f@(䐈`W`WtveDCE`"IWJPBkV/nkUCEHLjt/nkUCEHLjSelection.Mesh selected elements >`g4RJLUD`W`V4W}@O{$/nkUCEHLjVIQGіF͡T>W5f@(䐈ٸ*ćIC7??ef?e f>?Vf>f?Vf> f>??? h* 6H?BJ y'HN LjUb)R 8{EE%D7[   ZpߘHXO>Cv?I>|v?>v?qڇ>v89Ig"?>?*?@?>@?*??*??>@?*?@?>>>?>>*??*?>?>>?>>?>*????*?>*?*?>>>tveDCE`"IWJqU F3f2Object Render AttributesUS $hKnPSVmPg`U8Ns2]t8Ns2] Surface Opacity Surface OpacityUT^mګA~Ksi[t^mګA~Ksi[Points opacityPoints opacityU`T(lrsGrt(lrsGrPoints Size>Point Size in Point rendering.US\Eh{5t\Eh{5Points ColorLColor of points during the rendering. -n,NjlpgU`S"PbEGDߗrt"PbEGDߗr0Ignore mesh point color0Ignore mesh point color URF?N dtF?N d.Ignore mesh point size.Ignore mesh point size U`R]*qBCxt]*qBCxEdges opacityEdges opacityUQ\J:I%7ut\J:I%7uEdges ColorEdges Color -n,NjlpgU`QiA޲1rIK>XtiA޲1rIK>X0Ignore mesh edges color0Ignore mesh edges color UP,ot"AaYt,ot"AaY$Show hidden lines`Do not use ZBuffer in point and wireframe modes U`P^RI8ÿRt^RI8ÿRShow backfaceslEnable two-sided rendering when Color mode is enabled UOçwH5#VtçwH5#V0Ignore layer attributesvDo not combine render attributes with layer defined values U`O4W}@O{%J@#QL-1OSM n#(XFҦV"W0@zdW0@zd%VersionVersion%Lȅ8vDCxZtȅ8vDCxZInvisibleInvisible flag U`LF+2MGtF+2MGCast shadows$Cast shadows flag UKI2GWM:).$tI2GWM:).$ Receive shadows Receive shadows U`KmBޖw ptmBޖw pLayer index(Modeler layer indexUJo[nfFto[nfF Overlay opacity Overlay opacityU`JzgGFohN)tzgGFohN)Overlay ColorOverlay Color. -n,NjlpgUIvhD zʔtvhD zʔ4Ignore mesh overlay color6Ignore mesh overlay color. U`IfB #^tfB #^$Transparency Mode@Quality of transparency solving :KrbSxUH|$}mK;)t|$}mK;) OverlayEnable*Enable color overlay  U`Hrg@*oHtrg@*oH OverlayColor*Color of the overlay -n,Njlpg UG!eLZE^Nt!eLZE^N OverlayStrengthJStrength (visibility) of the overlay U1cM@-"1cM@-"BOwnerNameOwnerNameBzgGFohN)I2GWM:).$ vhD zʔ]*qBCxS $hKnPSVm1cM@-"çwH5#V rg@*oH4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\J:I%7u-n,Njlpg???\Eh{5-n,Njlpg????(XFҦV>g'JNjn*pFD Bk@ b@?F?N d ȅ8vDCxZ 8Ns2]?F+2MG "PbEGDߗr J@#QL>g'JNjn*pFCBb@ h@?(lrsGr?^mګA~Ksi[o[nfFW0@zdmBޖw p-1OSM n 럆L<_ї DefaultAdvanced! 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= 01 }}ȅ8vDCxZZ`Ez]UOͽ>fdN*5Ւh 0, }}ȅ8vDCxZZ`Ez]UO GFʠN=0@1 }}F+2MGZ`Ez]UOͽ>fdN*5Ւh0@, }}F+2MGZ`Ez]UO GFʠN=@P1 }}I2GWM:).$Z`Ez]UOͽ>fdN*5Ւh@P, }}I2GWM:).$Z`Ez]UO GFʠN=P`1 }}mBޖw pZ`Ez]UO1釥GP>aP`0 }}mBޖw pZ`Ez]UO GFʠN=@(PZ6 }}Color\J:I%7uZ`Ez]UO B>I(@hPZ%}}\J:I%7uZ`Ez]UO GFʠN=P(`Z8 }}Opacity]*qBCxZ`Ez]UON\q+nN-K^(Ph`ZA}}?]*qBCxZ`Ez]UOY@ GFʠN=hP`Z@ }}Enable Obj ModeçwH5#VZ`Ez]UOͽ>fdN*5ՒhP`Z, }}çwH5#VZ`Ez]UO GFʠN=h 0Z6 }}Color\Eh{5Z`Ez]UO B>I 0Z%}}\Eh{5Z`Ez]UO GFʠN=h0@Z8 }}Opacity^mګA~Ksi[Z`Ez]UON\q+nN-K^0@ZA}}?^mګA~Ksi[Z`Ez]UOY@ GFʠN=h@PZ5 }}Size(lrsGrZ`Ez]UON\q+nN-K^@PZA}}?$@(lrsGrZ`Ez]UOY@ GFʠN= (0Z8 }}Opacity8Ns2]Z`Ez]UON\q+nN-K^( h0ZA}}?8Ns2]Z`Ez]UOY@ GFʠN=h Z(}}SurfaceZ`Ez]UO GFʠN=0h@Z&}}EdgesZ`Ez]UO GFʠN=h Z'}}PointsZ`Ez]UO GFʠN=`hpZ1 }}fB #^Z`Ez]UOnevG4'h`pZ4 }}fB #^Z`Ez]UO1釥GP>ahZ0 }}1cM@-"Z`Ez]UO GFʠN=hZ; }} Owner Name1cM@-"Z`Ez]UO}},ot"AaY ^RI8ÿR |$}mK;)!eLZE^NiA޲1rIK>X 47m2O ̠TransformF<ĠF姁J]pDE`E`FWAGp`EE偢jD%~`8PB`o`E׊;Jf|ڢPBo`jD4W}@O{$(XFҦV"偢jD%~`8(XFҦV>g'JNjn*pFB CX@1@?׊;Jf|ڢWAG<ĠF姁J]48@J `)|EB; DM M?' MD2|=Bynjz@Ho 2|=Bynjs@>`)|EB; 4/Project/Space 3D/Cone, 2M M?' MٿE33@2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ zNewCommandD// Execute // Called to execute the command function Execute(params) { var thenode = params.ConValue('thenode'); var pitch = params.ConValue('pitch'); // TODO: put your action code here RsTool.ShowAxes(thenode); RsTool.NormalizeLocation(thenode + '/Pivot'); RsTool.NormalizeRotation(thenode + '/Pivot'); //Node.Value(destNode + "/Pivot","Matrix") = myMatrix; //Widgets.Rotate(destNode + "/Pivot", 0, 0, yaw, 0,0,0); owner = System.ThisOwner(); myMatrix = System.CreateDO("Math Package/Matrix Float Data"); myMatrix = Node.Value(owner + "/pivotParent/pivotChild","WldMatrix"); roll = myMatrix.GetRoll(); pitch = myMatrix.GetPitch(); yaw = myMatrix.GetYaw(); Widgets.Rotate(thenode + "/Pivot", roll, pitch, yaw, 0,0,0); RsTool.ShowAxes(thenode); } NScript Object Package/jScript language_Pstringthenodes@>`)|EB; number pitchM M?' M4W}@O{(XFҦV>g'JNjn*pnD@YDb@@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ۙ>?z@Ho48@J l>ABޖXE)͞!B2|=Bynjz@Ho2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ `NewCommand// Execute // Called to execute the command function Execute(params) { var destNode = params.ConValue('destNode'); theMesh = System.CreateDO("Space 3D Package/Mesh Data"); dV = System.CreateDO("Space 3D Package/Vertex Stream Data"); dF = System.CreateDO("Space 3D Package/Triangle Vertices Stream Data"); theMatrix = System.CreateDO("Math Package/Matrix Float Data"); myVector = System.CreateDO('Math Package/Point Data'); myVector2 = System.CreateDO('Math Package/Point Data'); myVector3 = System.CreateDO('Math Package/Point Data'); myNorm = System.CreateDO('Math Package/Point Data'); myNormT = System.CreateDO('Math Package/Point Data'); seldata = System.CreateDO("Space 3D Package/Selection Data"); seldata = Node.Value(destNode,"Selection"); theMesh = Node.Value(destNode, "Mesh"); theMatrix = Node.Value(destNode, "WldMatrix"); //if(Node.ConExists(destNode, "Pivot")) // theMatrix = Node.Value(destNode, "Pivot"); //dNTri = theMesh.GetTrianglesStreamByName('Triangle Normals Stream Data'); //dN = theMesh.GetCustStreamByName('Normals Stream Data'); dV = theMesh.GetVertices(); dF = theMesh.GetTriangles(); triind = seldata.GetSelectedTriangle(0);//use first selected triangle to get the face normal //ijk px = dV.x(dF.j(triind)) - dV.x(dF.i(triind)); py = dV.y(dF.j(triind)) - dV.y(dF.i(triind)); pz = dV.z(dF.j(triind)) - dV.z(dF.i(triind)); qx = dV.x(dF.k(triind)) - dV.x(dF.i(triind)); qy = dV.y(dF.k(triind)) - dV.y(dF.i(triind)); qz = dV.z(dF.k(triind)) - dV.z(dF.i(triind)); //cross product = normal myVector2.x = py*qz - pz*qy; myVector2.y = pz*qx - px*qz; myVector2.z = px*qy - py*qx; //myVector2.Normalize(); //myVector2.x = -myVector2.x; //myVector2.y = -myVector2.y; //myVector2.z = -myVector2.z; //myVector = theMatrix.TransformPoint(myVector2); myVector = theMatrix.TransformVector(myVector2); System.Trace(myVector.x + ", " + myVector.y + ", " + myVector.z); //convert vector to angles yaw = Math.atan2(myVector.y, myVector.x );//angle from x axis pitch = Math.atan2(myVector.z, Math.sqrt((myVector.x * myVector.x) + (myVector.y * myVector.y))); //myMatrix = System.CreateDO("Math Package/Matrix Float Data"); //myMatrix.LoadIdentity(); //myMatrix.SetYaw(yaw); //myMatrix.SetPitch(pitch); pitch = pitch*180/3.14159 ; yaw = -yaw*180/3.14159; //use nodes to calculate pivot rotation owner = System.ThisOwner(); parentMatrix = System.CreateDO("Math Package/Matrix Float Data"); childMatrix = System.CreateDO("Math Package/Matrix Float Data"); parentMatrix.LoadIdentity(); childMatrix.LoadIdentity(); parentMatrix.SetYaw(yaw); Node.Value(owner + "/pivotParent", "Matrix") = parentMatrix; childMatrix.SetPitch(pitch); Node.Value(owner + "/pivotParent/pivotChild", "Matrix") = childMatrix; //yaw = yaw + 90; RsTool.ShowAxes(destNode); RsTool.NormalizeLocation(destNode + '/Pivot'); RsTool.NormalizeRotation(destNode + '/Pivot'); //Node.Value(destNode + "/Pivot","Matrix") = myMatrix; Widgets.Rotate(destNode + "/Pivot", 0, 0, yaw, 0,0,0); //Widgets.Rotate(destNode + "/Pivot", 0, pitch, 0, 0,0,0); RsTool.ShowAxes(destNode); //Widgets.Rotate(destNode , 0, -pitch, -yaw, 0,0,0); params.ConValue("yaw") = yaw; params.ConValue("pitch") = pitch; //params.ConValue("point2") = newPoint; // params.ConValue("normal") = ... } NScript Object Package/jScript language$QIDSpace 3D Package/Point Array Datapoint2 (F)ݟ{XpAttDSpace 3D Package/Point Array Datanormal (F)ݟ{IYH͏~}stringdestNode?GN'numberyaw; I> l>Anumber pitchޖXE)͞!IYH͏~}4W}@O{; I> l>A1N(XFҦV>g'JNjn*pnDDb@ `@2|=Bynj|?z@Hoۙ>?XpAttJ@#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]UO?GN'4/Project/Space 3D/Cone, 2MT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@HoޖXE)͞!ٿE33@ͤ*EgbĬobjRef 2AEHM'ceZU@䑧r%`64W}@O{$(XFҦV#.;]kI 忞@"-1OSM n#@֤A=3B@֤A=3BBsourceBOi?ϦOi?ϦBdestinationBOHBYDbOHBYDbBsourceCenter (F)ݟ{BT\UC{ENj&lHT\UC{ENj&lHBdestCenter (F)ݟ{B @֤A=3B</Project/Space 3D/Cylinder, 52AEHM'>g'JNjn*pFBC`@0@?ceZU@䑧r[җJs@ NewObject// OnComputeOutputs // Called to compute values of all output connectors function OnComputeOutputs(params) { // TODO: put your computation here // var sourceCenter = System.CreateDO('Space 3D Package/Point Array Data'); // var destCenter = System.CreateDO('Space 3D Package/Point Array Data'); // params.ConValue('source') = ... // params.ConValue('destination') = ... // params.ConValue('sourceCenter') = sourceCenter // params.ConValue('destCenter') = destCenter } NScript Object Package/jScript languagestringsource@֤A=3BstringdestinationOi?ϦDSpace 3D Package/Point Array DatasourceCenter (F)ݟ{OHBYDbDSpace 3D Package/Point Array DatadestCenter (F)ݟ{T\UC{ENj&lH4W}@O{(XFҦV>g'JNjn*pFAdB@H@?Oi?Ϧ./Project/Space 3D/CubeOHBYDbuMF86F`O??T\UC{ENj&lHuMF86F`O)WV @-1OSM n 럆L<_їDefault GFʠN=F@& 1 }}Oi?ϦZ`Ez]UO1釥GP>aF@& 0 }}Oi?ϦZ`Ez]UO GFʠN=F @& 1 }}@֤A=3BZ`Ez]UO1釥GP>aF @& 0 }}@֤A=3BZ`Ez]UO}}.;]kI 忞@48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { // TODO: put your action code here //exit PE mode Widgets.ActivateDefaultWidget(); owner = System.ThisOwner(); //read source world matrix myMatrix = System.CreateDO("Math Package/Matrix Float Data"); source = Node.Value(owner + "/objRef","source"); myMatrix = Node.Value(source,"Pivot"); x = myMatrix.GetTransX(); y = myMatrix.GetTransY(); z = myMatrix.GetTransZ(); roll = myMatrix.GetRoll(); pitch = myMatrix.GetPitch(); yaw = myMatrix.GetYaw(); //pitch = pitch*180/3.14159 ; //yaw = yaw*180/3.14159; //roll = roll*180/3.14159; Widgets.Move(source,-x,0.000,0.000); Widgets.Move(source,0.000,-y,0.000); Widgets.Move(source,0.000,0.000,-z); Widgets.Rotate(source,-roll,-0.000,0.000,0.000,0.000,0.000); Widgets.Rotate(source,0.000,-pitch,0.000,0.000,0.000,0.000); Widgets.Rotate(source,0.000,0.000,-yaw,0.000,0.000,0.000); } NScript Object Package/jScript language~൱DT C#^c4W}@O{(XFҦV>g'JNjn*pnCACb@O@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 g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommandZ// Execute // Called to execute the command function Execute(params) { // TODO: put your action code here //exit PE mode Widgets.ActivateDefaultWidget(); owner = System.ThisOwner(); //read source world matrix myMatrix = System.CreateDO("Math Package/Matrix Float Data"); source = Node.Value(owner + "/objRef","source"); myMatrix = Node.Value(owner + "/pivotParent/pivotChild","WldMatrix"); //x = myMatrix.GetTransX(); //y = myMatrix.GetTransY(); //z = myMatrix.GetTransZ(); roll = myMatrix.GetRoll(); pitch = myMatrix.GetPitch(); yaw = myMatrix.GetYaw(); //pitch = pitch*180/3.14159 ; //yaw = yaw*180/3.14159; //roll = roll*180/3.14159; //Widgets.Move(source,-x,0.000,0.000); //Widgets.Move(source,0.000,-y,0.000); //Widgets.Move(source,0.000,0.000,-z); //Widgets.Rotate(source,roll,-0.000,0.000,0.000,0.000,0.000); //Widgets.Rotate(source,0.000,pitch,0.000,0.000,0.000,0.000); //Widgets.Rotate(source,0.000,0.000,yaw,0.000,0.000,0.000); Widgets.Rotate(source,roll,pitch,yaw,0.000,0.000,0.000); } NScript Object Package/jScript language4W}@O{(XFҦV>g'JNjn*pn DBb@O@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 g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ < NewCommand // Execute // Called to execute the command function Execute(params) { // TODO: put your action code here //exit PE mode //Widgets.ActivateDefaultWidget(); owner = System.ThisOwner(); source = Node.Value(owner + "/objRef","source") //RsFileIO.SaveObject(System.GetMainDir() + '\\RS Data\\Copies.rsobj', source) //RsFileIO.LoadObject(System.GetMainDir() + '\\RS Data\\Copies.rsobj', Space.CurrentScene()) //read source world matrix //myMatrix = System.CreateDO("Math Package/Matrix Float Data"); //myMatrix = Node.Value(owner + "/parentPivot/childPivot","WldMatrix"); //x = myMatrix.GetTransX(); //y = myMatrix.GetTransY(); //z = myMatrix.GetTransZ(); //roll = myMatrix.GetRoll(); //pitch = myMatrix.GetPitch(); //yaw = myMatrix.GetYaw(); //pitch = pitch*180/3.14159 ; //yaw = yaw*180/3.14159; //roll = roll*180/3.14159; myPoint = System.CreateDO("Space 3D Package/Point Array Data"); myPoint = Node.Value(owner + "/objRef","destCenter"); x = myPoint.x; y = myPoint.y; z = myPoint.z; Widgets.Move(source,x,0.000,0.000); Widgets.Move(source,0.000,y,0.000); Widgets.Move(source,0.000,0.000,z); //Widgets.Rotate(source,roll,-0.000,0.000,0.000,0.000,0.000); //Widgets.Rotate(source,0.000,pitch,0.000,0.000,0.000,0.000); //Widgets.Rotate(source,0.000,0.000,yaw,0.000,0.000,0.000); } NScript Object Package/jScript language~൱D@ j#^c4W}@O{(XFҦV>g'JNjn*pn)DCb@O@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 l>ABޖXE)͞!B2|=Bynjz@Ho2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand:// Execute // Called to execute the command function Execute(params) { var destNode = params.ConValue('destNode'); owner = System.ThisOwner(); destNode = Node.Value(owner + "/objRef","destination"); destNode = Node.FirstSelected(); theMesh = System.CreateDO("Space 3D Package/Mesh Data"); dV = System.CreateDO("Space 3D Package/Vertex Stream Data"); dF = System.CreateDO("Space 3D Package/Triangle Vertices Stream Data"); theMatrix = System.CreateDO("Math Package/Matrix Float Data"); myVector = System.CreateDO('Math Package/Point Data'); myVector2 = System.CreateDO('Math Package/Point Data'); myVector3 = System.CreateDO('Math Package/Point Data'); myNorm = System.CreateDO('Math Package/Point Data'); myNormT = System.CreateDO('Math Package/Point Data'); seldata = System.CreateDO("Space 3D Package/Selection Data"); seldata = Node.Value(destNode,"Selection"); theMesh = Node.Value(destNode + "/Editable shape", "Input Mesh"); theMatrix = Node.Value(destNode, "WldMatrix"); //if(Node.ConExists(destNode, "Pivot")) // theMatrix = Node.Value(destNode, "Pivot"); //dNTri = theMesh.GetTrianglesStreamByName('Triangle Normals Stream Data'); //dN = theMesh.GetCustStreamByName('Normals Stream Data'); dV = theMesh.GetVertices(); dF = theMesh.GetTriangles(); numtri = seldata.GetNumSelectedTriangles(); if(numtri==0) return; triind = seldata.GetSelectedTriangle(0);//use first selected triangle to get the face normal seldata.ClearSelection(); //seldata.SelectTriangle(triind); fi = dF.i(triind); fj = dF.j(triind); fk = dF.k(triind); seldata.SelectVertex(fi, 1); seldata.SelectVertex(fj, 1); seldata.SelectVertex(fk, 1); Node.Value(destNode,"Selection") = seldata; System.Trace("tri ind= " + triind); System.Trace("vert ind= " + fi + ", " + fj + ", " + fk); return; //ijk px = dV.x(dF.j(triind)) - dV.x(dF.i(triind)); py = dV.y(dF.j(triind)) - dV.y(dF.i(triind)); pz = dV.z(dF.j(triind)) - dV.z(dF.i(triind)); qx = dV.x(dF.k(triind)) - dV.x(dF.i(triind)); qy = dV.y(dF.k(triind)) - dV.y(dF.i(triind)); qz = dV.z(dF.k(triind)) - dV.z(dF.i(triind)); //cross product = normal myVector2.x = py*qz - pz*qy; myVector2.y = pz*qx - px*qz; myVector2.z = px*qy - py*qx; //opposite of normal for matching other normal myVector2.x = -myVector2.x ; myVector2.y = -myVector2.y ; myVector2.z = -myVector2.z ; myVector2.Normalize(); //myVector2.x = -myVector2.x; //myVector2.y = -myVector2.y; //myVector2.z = -myVector2.z; //myVector = theMatrix.TransformPoint(myVector2); myVector = theMatrix.TransformVector(myVector2); System.Trace(myVector.x + ", " + myVector.y + ", " + myVector.z); //convert vector to angles yaw = Math.atan2(myVector.y, myVector.x );//angle from x axis pitch = Math.atan2(myVector.z, Math.sqrt((myVector.x * myVector.x) + (myVector.y * myVector.y))); pitch = pitch*180/3.14159 ; yaw = -yaw*180/3.14159; //use nodes to calculate pivot rotation owner = System.ThisOwner(); parentMatrix = System.CreateDO("Math Package/Matrix Float Data"); childMatrix = System.CreateDO("Math Package/Matrix Float Data"); parentMatrix.LoadIdentity(); childMatrix.LoadIdentity(); parentMatrix.SetYaw(yaw); Node.Value(owner + "/pivotParent", "Matrix") = parentMatrix; childMatrix.SetPitch(pitch); Node.Value(owner + "/pivotParent/pivotChild", "Matrix") = childMatrix; params.ConValue("yaw") = yaw; params.ConValue("pitch") = pitch; //params.ConValue("point2") = newPoint; // params.ConValue("normal") = ... } NScript Object Package/jScript languageDSpace 3D Package/Point Array Datapoint2 (F)ݟ{XpAttDSpace 3D Package/Point Array Datanormal (F)ݟ{IYH͏~}stringdestNode?GN'numberyaw; I> l>Anumber pitchޖXE)͞!4W}@O{IYH͏~}; I> l>AZV(XFҦV>g'JNjn*pnC@,D`@@P@2|=Bynj|?z@Hoۙ>?XpAttJ@#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ۙ>??GN'./Project/Space 3D/CubeޖXE)͞!z@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { // save point edit selection mode params.ConValue("PEselectionMode") = Node.Value('/Preferences/Mesh Editor Settings','PE selection mode'); //change to vertex mode Node.Value('/Preferences/Mesh Editor Settings','PE selection mode') = 'face'; //MeshModifiers.ActivatePointEditWidget('','','Default'); } NScript Object Package/jScript language~൱D;#^cstring PEselectionModeb/pEj F4W}@O{b/pEj Fvertex(XFҦV>g'JNjn*pnVD1Cb@@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 g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand*// Execute // Called to execute the command function Execute(params) { owner = System.ThisOwner(); Node.Value(owner ,"Copy") = -1; } NScript Object Package/jScript language~൱DЧ#^c4W}@O{(XFҦV>g'JNjn*pn 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@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand(// Execute // Called to execute the command function Execute(params) { owner = System.ThisOwner(); Node.Value(owner ,"Copy") = 0; } NScript Object Package/jScript language~൱Dœ#^c4W}@O{(XFҦV>g'JNjn*pnD7Cb@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@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommandb// Execute // Called to execute the command function Execute(params) { var Copy = params.ConValue('Copy'); if (!Copy) return owner = System.ThisOwner(); source = Node.Value(owner + "/objRef","source") RsFileIO.SaveObject(System.GetMainDir() + '\\RS Data\\Copy.rsobj', source) theCopy = RsFileIO.LoadObject(System.GetMainDir() + '\\RS Data\\Copy.rsobj', Space.CurrentScene()) params.ConValue("copyObject") = theCopy } NScript Object Package/jScript language~൱D@ j#^cboolean Copy L}Ho3stringcopyObjectTCB#O4W}@O{L}Ho3 (XFҦV>g'JNjn*pnCCb@@T@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?TCB#O</Project/Space 3D/Cylinder, 6-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@ HNewCommand// Execute // Called to execute the command function Execute(params) { var destNode = params.ConValue('destNode'); var newSource = params.ConValue('newSource'); //read from data node instead of link owner = System.ThisOwner(); destNode = Node.Value(owner + "/objRef","destination"); //if copy then doCopy = Node.Value(owner, "Copy"); if(doCopy) { //deselect all Space.Unselect(); //select new source and destination theSel = newSource + ";" + destNode; //Node.Select(theSel); Space.Select(theSel); } //params.ConValue("point2") = newPoint; // params.ConValue("normal") = ... } NScript Object Package/jScript language~൱DLg#^cDSpace 3D Package/Point Array Datapoint2 (F)ݟ{XpAttDSpace 3D Package/Point Array Datanormal (F)ݟ{IYH͏~}stringdestNode?GN'stringnewSource,0⟼L|%4W}@O{IYH͏~}(XFҦV>g'JNjn*pnDCb@@\@2|=Bynj|?z@Hoۙ>?XpAttJ@#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ۙ>??GN'./Project/Space 3D/Cube,0⟼L|%</Project/Space 3D/Cylinder, 6z@Ho8ʯȥJH|o7 gH]kDwP`d8pM*#ͺOD/tfѭ8Lwb"q(