gH]kDwP$Rosetta Beta 7.61[VS_O93YJClinton Reese, Clintons 3D Creations`d8pM*#ͺOY9PNG  IHDR`ZIDATxA@DQQD APj("N`ggx@g1b  &@L1b  &@L1b  &@L1b  &@L1b  &@L1b  &@L/t_2/@L1b  &@L1b  &@L1b  &@L1b  &@L1b  &@L1bkN#*IENDB`/tfѭ8Lwb"q" ܂dKu=d&CurveToolsAutoloadH .;]kI 忞@.;]kI 忞@"SubObject*Encapsulated objects" h P ʭ"+8+ `LHyLŪs"i `di  4W}@O{4W}@O{$ Owner4Owner of the Encapsulator$(XFҦV(XFҦV"LE2Data$LE2 Data for node >g'JNjn*p"-1OSM n-1OSM n"LayoutLayout 럆L<_ї"(XFҦV>g'JNjn*pF@DBg@@P@@?-1OSM n 럆L<_ї˯Default GFʠN= M/}}January 7 2012Z`Ez]UO}}䣠iu8DMhbExOwnerName 6Vg'JNjn*pFCb@@@?48@J g'JNjn*pceZU@䑧rceZU@䑧r$_scriptData*Internal Script data [җJs@ %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, 2HVn|\mJD~n|\mJD~DPanelNameDxR '$@DYB ''$@DYB 'BToggleB 2|=Bynj2|=Bynj Control OutTransitionOut0|R z@Hoz@Ho Control InTransitionIn 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?n|\mJD~J/Project/Space 3D/CurveToolsAutoloadceZU@䑧r[җJs@ NewCommand Toggle = 0 function Execute(params) { Toggle = 1 - Toggle; if ((Toggle == 1)) { var PanelName = params.ConValue('PanelName') Activity.Run(System.ThisOwner() + "/AutoRunMe"); } params.ConValue("Toggle") = Toggle }NScript Object Package/jScript language\stringPanelNamen|\mJD~intToggle'$@DYB '4W}@O{(XFҦV>g'JNjn*pnDb@@T@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?'$@DYB '-1OSM n 럆L<_ї< GFʠN=PXd1 }}z@HoZ`Ez]UO1釥GP>aPXd0 }}z@HoZ`Ez]UO GFʠN=F Xd1 }}n|\mJD~Z`Ez]UO1釥GP>aF Xd0 }}n|\mJD~Z`Ez]UO GFʠN= P0Xd1 }}2|=BynjZ`Ez]UO1釥GP>aP 0Xd0 }}2|=BynjZ`Ez]UO GFʠN=0P@Xd1 }}'$@DYB 'Z`Ez]UO1釥GP>aP0@Xd0 }}'$@DYB 'Z`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Hoͤ*EgbĬlToggle2AEHM'ceZU@䑧r%h 4W}@O{$(XFҦV#.;]kI 忞@"-1OSM n# mnJeRHdtmnJeRHdDinValueNo descriptionD  G;DBZTG;DBZBActiveNo description B  2AEHM'>g'JNjn*pFBC`@0@?G;DBZ ceZU@䑧r[җJs@ .Toggle var OFF = false; var ON = false; function OnComputeOutputs(params) { var inValue = params.ConValue('inValue') if (inValue == 0) {OFF = true} if (inValue == 1) {ON = true} Active = true; if (OFF && ON) {Active = false} params.ConValue('Active') = Active } function OnPostLoad(params) { params.ConValue('Active') = true; } NScript Object Package/jScript languageintinValueNo descriptionmnJeRHdbooleanActiveNo description G;DBZ4W}@O{(XFҦV>g'JNjn*pF@DAb@H@?mnJeRHd-1OSM n 럆L<_ї0.;]kI 忞@}O΍ Timer Event  2|=Bynj0|R  TK?JFܟ5TK?JFܟ5ActiveActive flag uW}Mzq>uW}Mzq>Period&Timer period in msE;c_J8@E;c_J8@ FrameTime frame:.J NT):.J NT) Time$Time of the framez@HoP 4W}@O{$(XFҦV"-1OSM n"-ɭNaė?-ɭNaė?SessionId>Shared Space session Client ID v MFfw v MFfw NamebName of the participant that controls this timer[ʖ:LU77[ʖ:LU77$Privileges&Network privileges$ asvHhTG asvHhTG$NodeIconNodeIcon eSBgc$ 2|=Bynj-ɭNaė?:.J NT)V-/N@(XFҦV>g'JNjn*pFcCc@ a@? asvHhTGeSBgcd  TO 1BÕrCWysdxX6n vX  *HJww#- ݭbwΨtse=F~s6q'YZmmm{Ů]{0slL>3f&.> W޽`dl_ p^i)So߾ӧO>|x_̄8=~՚|mk쇍{?6gghӄfN0`; #F AddlWptro+%VcԘnC`QX+- c x7*R͞~O}}u7$?`XnuuX:AVVBBB>o`݇pX`}؀!}1p>tD6xX|DCO6A{W.'#Mܻb|җ0G6`*$Fİ1fƎC D6b`|<|FF`P %a@f3ۃH"&>8#O6;;go¨Qzr7<# 8DF`Q/>ä˜2WbC|dϟٓ B?4mfC#kO4%e_SS|7#&X?U0.,6 ӈOMI_1sWa9^R Pr>Ka"1L'ߘ:|f !L% PLs FP^0rt }?q|[Mo }q?\lHLi!J}AL{,a3nLi'S&ƌiC1cH_> Kg`զE*5+ !$gaJQI6whL>S@ Oq@9k FQ}0bŊEٻ@ZFÆ sZޗ| cɣ0IC1}`L(a+Bu٤Q}!L5a,գ~|1 #`@0e0,X1bتUV`b,ZGAbf-Ys1s8OI@e z- Xcb 1`LaYXb8^b oX??ӦBq;e,f&̇c1b}ڸA&<SɦcEք!:'eAߏ`sY>Yx2$` خ r;%~b^7KO%b?w2͚;bӆSN(qI0qPL=^&ݯ{TUI_}1?hpL yFcX4k,Mu4?S)D)ާP܉S,' c*]EgS(&EFxI68t]1Uh8=^x0/-Co TubH˯Z酐ıt$,X(1´#0v8GHb0((l4֯]j%ד&ü p53R #?&>9#A~E~1ڟB_z=#`b.(Ci$dBzHիgb  &` !F\aXM@*Bu2%eÇsCs~ ł!L뉓^4NJ99+zJbعK2뮤 }f+a-`# s=iXKF5,Hg6ŅXh Ҏ}34!?F6}6/3UYc:f2!T'`aHZ7w$%!Oΰ^ Kݵp0:Xƚ`)4\K@fGfg(d|z mg, 2!& #CM4+fbA:>mP%E NzV+E|͛93cL"0lQ฼302(l&7|(9 űa(dBjba(KCCe h Lfú`u` ,VZg \Me1(MAyjr\/4yu>rFQ5 w e29xY*x3vH`1Ls`_gB6QRT! 5NUƦMK +7,HIJ)X<R3mfTҩ⣡+McE^-+M q&dD!NJkšJ 2P *3aw,JW VZ/ {}٩ S F(Ow@C4e6h#=QhO:uy8^U8Ӎ!8^ZzLv=\[W,O p!FΟ3w 67s TByb5ӱb9E1wh,3 fe3iƦ':z?rplX KqdK~.$EtqPk COu7bċũ(ϲEK7 ݐC3h.w绡6B"V <9=RWBJ>NbS8*=d_=% QC0`h0g $#lmCmػO{Au*lYE f8V/!Hrs{Qq.Go^ ʫ.P}v'S]cҔ46υʼn뭁jܻ_H? %[ 6TEJQA*ύ[ @ aYS剔x#I!hGqUDkytnF'qV{/U g8Y|Lc$YkCg)X|S7Ǡj*6NcVDy<骩WR/!WK9[Yf!lMTDϜrѪ VlWX-8VXx‰j2^C AA .Fz2|\h҈!}y=>c!)7atӆ [m `p|@U;$,P.5H/57L.4ۨi` B v·龕p1Ͱ!f ɡT׉6ćH%R,h(uDgS_M<~qIH6'JV[p%U±¿'VFpRu5{/6ESS'/RK.Zz Wqd2LXvH $+WO>J#/=pk㝤m6%u%|ƆuX'!{~p\]۴IY0w?Ee0/'#%E*ŰZ wsy} 2<IV-"D1S0\lGē&=UJ\_Jv_O ND^=a@=~<u [_'Y>m5؟F!FĺES?\i##q5 Ɛ?е%J[qL;b7r~|`ؾC>HG!:ka/h;LHW](.$Cq6́2K+{2g`_v)`6blua+W4!Zq9K\Ev&4wS] sUT+=ԍ q䦺`h*G~-׊cpފ2ӐzI˷S?A~g<<0\jKEqX.(Mh,.Uk͓)ԐۧrbO?} D|`.iBS(MF|;#CnE;R=4Ғ]k)8HACcbsfsfM>ElawM[D| EQ;::³2׍ {Dw ,{ȯ oW TP=/u7sKUFR1r;zR}ɣ8|(S>I1w;UE ;\3ފq}x=8^n'*:('XH1`10>HC!K=y퇏^-ۨl6-RP!"'; >8ν}k{|Rp#7;Rp~w:b?7!WNYS8~(6_ #1xjM<=/8!>؜¼u|X֮PSZKSe>({̛# +-t؇k` MI[+Ff 9Dޙԇڅb LȠ\LeY8+T. 2E wL띬z)8M(Nܞ]}\&nj<3Y9sng=#RE+m Q$„pg Éi]S sHaֈ4C>w: g3pT['RF>b#0Sl8&]JBQW o⚮ȊsBZ- OKUX(BG] V?L N=5]5 n q^:8UV6:Eh* W3eZD☭U%;p _1ތ`]g:#5y<'ϩ/mݺd j3mUqPc fsOnG*qAnb6^*"+x|!By%FWo |V,AaKd.? ޤ}<#H7A'⫦: zūkCև54({b?aHդnFS}\Kyn&[:^j;a~*c{Ag<<K9@n>gsq8ֶU8W` ̜*cL2vhjHAKu"@jez \5^vjp4Fu@ 7`禥03237mS}EےPa3m7QA9V#1T](t\9~1}NeVFY[aS?Jzgs~p?4 P8 х,v<}tH!QJB#Z3g<ε%}B.i 'Q&cP?M:j*ښq5|3q6ehGf-"|GCؿs5-M?V*4; V맋eq%/eo"uE:?^jw +en-` *sIgi"9s}4xu=Vs?x w>cvX4.6׎'r{/;GO ;똎:|?O.G2 E&Xk+8{%J>r@:Z)]nO cb2đ}q`zWGR\9NGk2.6&di*S!ă4*lg ~ؗDz>ճqyHGAyYx9(#4x}Ή1"-E ᬶ}>չ㻡 5re|GMeWթoƞ9泜?5^AzM~Xg30}z%O7jz>I?PM8)i즆T۫})O +ۖR ց|N"K$O粙=tQ|ݾ>S=^7ܢplm1sBkz|J?P&:nvq-/]o㛻xuO.tTFFf9 |+gGcCjv$21?.xzv%[xȮ,U os{u_|~辗7_w$!>Q1j8VCp?|~q;p" nH'nHSLDM}]oۛ3c?QPS/_c?\K1Md &.egs}v2Eÿťb@ERB, g Zhptt{{nj+ӭH5tcn@l:¼Tc#} =kãBtFi MF;ag~f3㡠ڨt/.hFv;(#Uru rGyX$؟k\gJ:Ͻ3=8o 8_:s~|C 53OxE bY{}{$}|/{o7c͸c 7W+_7;Si a0ȮF\'_ܮOy>#{J^ŚXfz!=؊6lwv@RckyF8^kD - rȌ0ƙ0ruس~~I2<) G yq(nU+;gy߳;sٺ>۟U}=G!'@j?_Ͻu8Nk̪sڬ3^Çhc z|u8OµIXP fΩt8|jߑڽ6os>va '#E8n:oEzM6+傽 \w3Ȱƨ:ΏH"pQuxOxh=;{k ?=ʝji+`aX4}dLs,~|FpS<_sѨLDj%,z9 +﬉d7 5rT~8c+p1H%?BG kf0u]8g}^},g{;ohmN>Pz< j3Z.-9zg*.-ΤyWwa]IuT矑hS8;q/T BX:k,e?=m'ݯ$\7WCu7ì!̙>o}Ɔ])?AZ6F䧘Ot?Ԕzأjhbhb+=lT'Lod|?ȮKA}vlцJ$%b:1 9~5z>Ǒ޽oku-]}~s]Cn' \? X6g<spL!~b_?僟nwp)~u}@_~8;O8[ٳKap _.a}~6qi+P]BݏteSoσV4Vg y: :CĪ$hc`k :#HEʉxyŠ_UqYزfnw!wgygo1W/o5:\iM4+VRz?w:+cnI!-^gw?Ik1'N6x "q*|2j"y+QMR&~3n a!e"-Tٚ@cg hbk}xG+L7 ]^9GLa/Bk4붷T$zkx$twq9U?yxzf3<R | s=Ʊg~6,ٜÜM\|=VQ~ aHߟ$ކ'Wʰr8|4“z'cXHU ~s0~{3{+i7}ki f_xXFNTh\dqz|- Ug-ƭ%ބ^ `sT3^a{B, AQ2M::gzzզ<mkkxZ99GnW}6 b%i6/|}^Ͽ 2u]vwO=(|6qc/l\3KEf0RW|_ |j Wq؍po=65?-4WB>ϲ:UY!_ N;Q#_~[A-rH/ءZHg^Hng;w+ku0Gd7luC( ۣ{> s|b&I'pIVsp)9Y!|ϫ;TX/NN1VGP5d|O6;͙d9+>3Y1?Tl '$$$ sJ+qs,wY~Ѹt,:hzw\;,w.ۄ?[a\H'~'tm8_|}DmNr>/[{:|n9}X_7Ϛx{_/ǏOcuK&c lsmMSќ SLb=0oj~Td0_J%ഃu $nsG߉oI@v9ң yOὢ(e9ËDn5ʳ}Z/~c v0nA <%N01[<^@yX^քeϧVw=Q'FK 8SKMh?{_=(>]o 02z_QxuFz$a{x7Fc3c/G3xoٺ&M3vه472܉N_ibE<ϗ8 ue:tVL:4$4ݙ >Z#qpVEJ=h(~NY?$Bs,.X,_45oY[WZ+iK|>ޅ$j 9 ~L=_ ϵcsp!j}w}P9~xTq`4Q'm(yc4/Z _$2_L0,mu?Mhi%[!_؞nXͧ_O4@l.P(>p6'_Ey (/EFǙoL(\{t4w}gwȧ0ũqˍT_ z?++GI9>i5o،OÛ*~"Q-. +Bf4lX> Q_ ?W+q&n1#`f?#9p4ZOMpP<p?-KPt#dKgء6$qPwvN&}["n@i#p=g3]a=^n>4Đ~^5GAbp󫅂?7^.O]% AqՃx|Jkz)C!FrűQj5߳5BNG8 g;c\.{flP ^֛mz2v.Sό5kPQM=>e&:vvՁU!mJ$?;$ ][}J xI^`}N㳫<]:==o?Fͅ1VҽmTy`| qnfUF'Cqvns"]}ю98YHko`O?F_x1M}xyOf,׏/BPyzwjܪGC7"}{şLYU>8p2,6h#>69/U;(Xs$F!/jB;oy"3M%h.2`S]Nn ?/p+OD<"^8Nͥ{1|_$^=\|Y q Hl ǵ3)8IDg=/7z4p {;Du8~lwW:%7A:*jZ{Ɵ́!LԂ)2 -KzΗ!/5iȬ U`d ~y^ŧm8SH[ψ#, 7?.8 /5;i yXnBKi {gIƟ!vakEwd=d+h) B{gYp{G'T?6ytgKf/SNx|qnߟ]ϡ.KҀfܯGo^RҍŤ !Rҫ&"+%}9_7~c2f ~ 3ZL{w׀:mҖ"FI(w3~j3d1N8|gl|y?q=-=z_} :?{Oou_l\ev{OO//rxҞȏB>xsOw#6VjpTi\ Um aH$M ñ,ɴ:s_>g:ϓ ~γ^|>P#Y? sAkB:} kO3h,{|3_ҹӑ"c/"}臽qt{ >gGº]B+;QM/ 9how[tF6~U+}7}l8emrKi{jBKfp2ݮb؅vfw_@9@B.ʳN{f|E '/Mf_K̥{%RFPpV/aOWv8ӑb IH4k{G Qgϱ<ue \ v#l{Ne!;ӓ;<8YM0빶hoIB{Mh?]1/ )ijE|NRYǪ~(.EEI$\-%Yۜwׯ|Owq% 9 4nx3̬1lذ^|/\-n 2TU0Yŵ~fJ|}/aO>.=* 4 fBY2_؞V \i!司1LY~2Ւlv#j=pjslz^3q|S˩zmo,b@A/(ׁ͎.ٹedGkKwJ=:R]xP~/;}۹9>l. 4Qi!߹y{og ufs™Tz6 gw#}K|7'7ypeMz/[5z=Ia{~|Ҁ{hBe+b\lg}j3s4G@,*AsLVQ_ h^M=("m,weEi<@rڍ`_Cą6LqA4-@?^7:P{9-\<ۻgzO^υa9j><<Ұ{,7K CQz3H7R]πW'ŅR\BCr,gsll0|^_z9³CaƦ*R_};\ L7@mBQ|8͜?p.g~j%'c񜉘2q,gxuD_ y Ltue{n{{ݍ%`oBF>o9H y/Rb_l>w cOXrtw1vI8Dڎqg3U؞ L?!%n9\8Gs=sG#dc۩^܊Ko`{mV { @ L<$ي<4 iG[߶KR\=ou- س+Rмxz=?it F()IBZ?2qGy`%oWw d5} Lu;(XZ9lv7JiMf8^OY>MX{vY>th =(w3!8Y?Я?GopwBP=Uȩ(JbIq("`ۚqloqXg5;?9)OY7 \X¸u5!sxvsOφOl;Zwk˹ßn8[;!G0;x u6<ܟ0B\dz9ooƗ7$too>ş_=Տ7Tc[{R_5? ggg_)VXEr %IKsѨDA+R&;A1-pzA@lo#Фz1=߯T uao˞ M\?96/Wba$5su3-7qaؙq7o/n&p-bGO ݎ,Pψwz6cG{1(%u~!mPGzV0]`3JhR!9\@&.'0WBܶq{@l co7yPrˑVf0|j7*Ր'J!Funlإ>g^\|0j BebR܏ tFanM[>rNɭm^U7G3;9 >\x4/şF.;>l G/_mMuϺtTŠ՛[U::K[PֲQHMElYrgԔa~VXњk纸?lo3]O\VDŞfrs(|۹_ì?UB3G>]q~SLj[?Q>A9lemƇ[P-7 qg}F|EZnoSb'>Bd<,[C1i~xe_o_~ NoC+0i1t) ' 00id77"j9!sFh2)^f_Wݸtrrt͜:!hO\πi9\`Y@uMpbg_-V4mpy3g6>f;ѭ6|<<+_Qևo)gAŁˤCl x1/J@|<ݏ=?|> ~q xr=lCxks-v*D/)X4O|Ϗ ɥXYX.)F@Yꊃ OSuݤ4#G4 Vrs<>\=V;8rU Ӝ>( # {65R(Ղw.*{>?t ~mMP%Ƀ}n|tmvƔHP n<ۅ?MpA$Ԇф|TbmK:^GHG|l| _\އIl_Y>Ltyf0j&|y`X0ħ(DlY#/P/ޝLީ#m8_~o.)6n=Q3@Y2̸ww#bNYyNuzb~G;ppk 6z8g970a"|Js7mكdV 8wԅ"3cc;s=m"Ô`޷ غ"=rCM*JL9/N uHHDrf8b@5`L# S 8# F_VvVlSgF=+Tc?AOg>D&9!&fB%c`{ RAcn^۹FMY2<85!B,@fVǡ qh>8_^هGgcoP]L9х-58k)q_n #ȮEZAҤ̇p>Jy0ٮ6FSM*.!F>QL۳;k39iٵhoۃOS?(Hljށz "w_܏G؀nE~j= A:?n$ℓPB_2mCE vw/0v|= mçw ;69ًჭ8U`IA{q*jrñ S v#@bn DWj@ .*afL'^[3)tν?S-@v2/ʉJ(: Ǧ5y󻹾FFjVẄ́?7Ί|xc'v/ھSm ޾|ؑ;!p%oda%ظv6jӍu.i=xwW3ٷ͙XY4D k7S@.NDdVOPk O#$ŋQYE~Xd{(fݿO9SOt'ur#.ێKT8މtƣI:q*8A>zF93ckBcdGUbxoÅS}(Ϗ|.-)X`<T]p|RO<ǡ8Jqy&.N2y&]\艌`47k/wwG' AHp1}PB)bH>nkHvhjU8J>ub//ՐNq{@osg::NSpb#]Ղ>N9a+zV+g K[M vЀ@ ~sF)rCг,d; Ap]M8{1W7zܑ9kaqasQ!E:PJ K~?6롣B6`am8yqaddBEbA1#]PYuQ(CR%%!M0iۨ.U}UX7[GqZ!g4Jܠ8|rw1vqnP|f{GlƝ[qdξj6V:Ն@2ΎP}wϱ 7U*_}Tb tQo-E]N8*P䉼HWDG8bq1"3-=-^Ya 01dB9[65\<єc V.;pٌ76b ;{ 4:Lq`H97ES}e ҌڲDDS}*ׅ*38@_K6as[{L(4"Sd/%z0A0"d}mL46. 6d!L^~/7)dR 6%]K1&/˓"++kIukGEZK#QL /ٍ;2)vKĈͫŢE044^6+;#(TokH, q1Xd;]Zjp|=(Ay\:Ox'E.ٍ $ `g Y;V4=q.ІH=l{39Sd(]LZ?XZB]hzP, DuFY-XWdR~O'  ~0BQasc\QM6m9sm/4L5\ @hG!vjBf05`n k WV|6ʹac9Vֳ0FdG<-'ƽ>E&& iM!}Q*âa"k jQ ^I H C# 2sy#S7}'Ceӡc >>N#x8S\; ҝZ ߏ#Pz=d'0x >(KEi7J(91,s>Dgc8o3Đѿ!č)d8*{V0{ _B'ӊr9\L(W;:@(Є5#:BzvqyDDׁ|ߞ4Go1B-'@\ CH !5bxYóc$ȌAL\b\x JjHsDg v1P2ztrz5MHڬ/@}L̆ {+]Xۑvg9o ;la%Smkx6L fxpu0b.62G8Bz?Ff8;sa=G yH cNp3DX2.|:tԃiI1'wF:tx=̘> j3A]m4ơ> ZsA?g:4Uau&(G8Ígw~ěђPAq"!&!݂5瞃& &*6BȐ86 ›4n[ɉSwΌ6*l ?xMC}-L9\u5Vdf,ZB`DT8kj/'j/<Ӄ\XiÓAd1TO8M[Ad:3 6=hT~eqC8X ayE֠UUڄLDqѦofwŋ31c2IIX2Cj-׼OېW##q^~=rBτ#R棩sTW+< ww/:qTUU)Y`ffii 5*I v֤1bb- 8ak;BFF.q6֤cduW}Mzq>E;c_J8@TK?JFܟ5 [ʖ:LU77{LF-dEw v MFfw-1OSM n 럆L<_їDefault GFʠN=|1 }}TK?JFܟ5Z`Ez]UOͽ>fdN*5Ւh|, }}TK?JFܟ5Z`Ez]UO GFʠN=((7 }}PerioduW}Mzq>Z`Ez]UO1釥GP>ap(0 }}uW}Mzq>Z`Ez]UO GFʠN=hx= }} Control Out2|=BynjZ`Ez]UO GFʠN=(H81 }}E;c_J8@Z`Ez]UO1釥GP>aH(80 }}E;c_J8@Z`Ez]UO GFʠN=8HH1 }}:.J NT)Z`Ez]UO1釥GP>aH8H0 }}:.J NT)Z`Ez]UON\q+nN-K^(p(A\VV.@p@uW}Mzq>Z`Ez]UOY@1釥GP>aHHX0 }} v MFfwZ`Ez]UO GFʠN=HHX< }} Control own v MFfwZ`Ez]UOOˁ CRih[XHhNode.Value('%THIS_NAME%', 'SessionId') = Net.GetNodeSessionId('%THIS_NAME%', 0);Take controlZ`Ez]UOOˁ CRih[HXh̓ZNode.Value('%THIS_NAME%', 'SessionId') = '';Leave controlZ`Ez]UOz@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(); button1 = "loadCurveButton"; button2 = "polygon2curveButton"; button3 = "points2curveButton"; button4 = "sweepPathButton"; button5 = "extendCurveButton"; button6 = "insertControlPointButton"; button7 = "deleteControlPointButton"; theScript1 = "loadCurveScript"; theScript2 = "polygon2curveScript"; theScript3 = "points2curveScript"; theScript4 = "sweepPathScript"; theScript5 = "extendCurveScript"; theScript6 = "insertControlPointScript"; theScript7 = "deleteControlPointScript"; theWidget = "PE MakeCurve"; theWidgetPath = "/Widgets/Tools/Mesh editor"; // if(Node.Exists("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button1)) { Node.Delete("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button1); Node.Delete("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button2); Node.Delete("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button3); Node.Delete("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button4); Node.Delete("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button5); Node.Delete("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button6); Node.Delete("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button7); } //check for and create customframe if needed if(!Node.Exists("/Project/Windows Manager Space/NURBSFrame")) Node.Copy(owner + "/NURBSFrame","/Project/Windows Manager Space"); //copy buttons to custom frame oldButt = Node.Copy(owner + "/" + button1,"/Project/Windows Manager Space/NURBSFrame/Toolbar"); oldButt = Node.Copy(owner + "/" + button2,"/Project/Windows Manager Space/NURBSFrame/Toolbar"); oldButt = Node.Copy(owner + "/" + button3,"/Project/Windows Manager Space/NURBSFrame/Toolbar"); oldButt = Node.Copy(owner + "/" + button4,"/Project/Windows Manager Space/NURBSFrame/Toolbar"); oldButt = Node.Copy(owner + "/" + button5,"/Project/Windows Manager Space/NURBSFrame/Toolbar"); oldButt = Node.Copy(owner + "/" + button6,"/Project/Windows Manager Space/NURBSFrame/Toolbar"); oldButt = Node.Copy(owner + "/" + button7,"/Project/Windows Manager Space/NURBSFrame/Toolbar"); //create CustomCommands if needed and copy the scripts into it if(!Node.Exists("/Scripts/CustomCommands")) { temp = Node.Create("Kernel Package/Object","/Scripts"); custcom = Node.Rename(temp,"CustomCommands"); } if(Node.Exists("/Scripts/CustomCommands/" + theScript1)) { Node.Delete("/Scripts/CustomCommands/" + theScript1); Node.Delete("/Scripts/CustomCommands/" + theScript2); Node.Delete("/Scripts/CustomCommands/" + theScript3); Node.Delete("/Scripts/CustomCommands/" + theScript4); Node.Delete("/Scripts/CustomCommands/" + theScript5); Node.Delete("/Scripts/CustomCommands/" + theScript6); Node.Delete("/Scripts/CustomCommands/" + theScript7); } Node.Copy(owner + "/" + theScript1,"/Scripts/CustomCommands"); Node.Copy(owner + "/" + theScript2,"/Scripts/CustomCommands"); Node.Copy(owner + "/" + theScript3,"/Scripts/CustomCommands"); Node.Copy(owner + "/" + theScript4,"/Scripts/CustomCommands"); Node.Copy(owner + "/" + theScript5,"/Scripts/CustomCommands"); Node.Copy(owner + "/" + theScript6,"/Scripts/CustomCommands"); Node.Copy(owner + "/" + theScript7,"/Scripts/CustomCommands"); Node.Delete(theWidgetPath + "/" + theWidget);//delete non-original //copy replacement widget node Node.Copy(owner + "/" + theWidget, theWidgetPath); //activate it WindowsManager.Activate(); WindowsManager.UpdateWindowsStructure(); //reset the toolbar //1D Aspect WindowsManager.SetWindowAspect('/Project/Windows Manager Space/NURBSFrame', 1); //2D Aspect WindowsManager.SetWindowAspect('/Project/Windows Manager Space/NURBSFrame', 2); System.Trace("Curve tools installed."); } NScript Object Package/jScript language4W}@O{(XFҦV>g'JNjn*pnXDPb@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@Ho`._E#ބ6tNURBSFrame(X.;]kI 忞@"p4W}@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"&|_ DkJHx(V@WBXPjKɸtEmk~_Lb.8M0cryN{485B725E-A69D-4AD5-A876-B3BBA72D2C0A}[FB%n*j\q^2FII3wK8Y8O#=gtM6*Mv4 [GDJMRÒGbDeC 1f$I `7{Q !aOt Ī8mݧC>!7obFFJL}I)LL !v43N t (XFҦV>g'JNjn*pFDX@1@?^^Dy_N>G19@'s*O΢C}N{5FDDFE6E-518F-464A-B4B9-8D24B556E36C}˽OS-pϗO 0)mz!OHwc ϕ`&FSx9w>=жaMpTF L$3j^G@!,2bOdA)f 6^r[HJv-, ^r[HJv-, %]GJ7ψ>-MD'zZKXtO L?V{N7l VG))jHET~൱D@ j#^cN'D)L-86*n^HD9t |7EId KTLA7~f^r[HJv-, Toolbar.;]kI 忞@"p4W}@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}m O1Ww=JM@hM Q3 (XFҦV>g'JNjn*pFBCb@ f@?_N>G1Z_IFL!OS NL {JdWJc~8Cechg.S)A2UЍc n_<&KES Qo(K ]p d<9BH@b\ 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 owner = System.ThisOwner(); ownerOwner = Node.Owner(owner); if(ownerOwner == "/Scripts/AutoLoadTEMP") Node.Delete(owner); } NScript Object Package/jScript language4W}@O{(XFҦV>g'JNjn*pn@DBb@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@ VNewCommand// Execute // Called to execute the command function Execute(params) { // TODO: put your action code here owner = System.ThisOwner(); button1 = "loadCurveButton"; button2 = "polygon2curveButton"; button3 = "points2curveButton"; button4 = "sweepPathButton"; button5 = "extendCurveButton"; button6 = "insertControlPointButton"; button7 = "deleteControlPointButton"; theScript1 = "loadCurveScript"; theScript2 = "polygon2curveScript"; theScript3 = "points2curveScript"; theScript4 = "sweepPathScript"; theScript5 = "extendCurveScript"; theScript6 = "insertControlPointScript"; theScript7 = "deleteControlPointScript"; theWidget = "PE MakeCurve"; //theWidget2 = "PE lasso select"; theWidgetPath = "/Widgets/Tools/Mesh editor"; //remove buttons if(Node.Exists("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button1)) Node.Delete("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button1); if(Node.Exists("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button2)) Node.Delete("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button2); if(Node.Exists("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button3)) Node.Delete("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button3); if(Node.Exists("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button4)) Node.Delete("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button4); if(Node.Exists("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button5)) Node.Delete("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button5); if(Node.Exists("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button6)) Node.Delete("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button6); if(Node.Exists("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button7)) Node.Delete("/Project/Windows Manager Space/NURBSFrame/Toolbar/" + button7); //remove the script if(Node.Exists("/Scripts/CustomCommands/" + theScript1)) Node.Delete("/Scripts/CustomCommands/" + theScript1); if(Node.Exists("/Scripts/CustomCommands/" + theScript2)) Node.Delete("/Scripts/CustomCommands/" + theScript2); if(Node.Exists("/Scripts/CustomCommands/" + theScript3)) Node.Delete("/Scripts/CustomCommands/" + theScript3); if(Node.Exists("/Scripts/CustomCommands/" + theScript4)) Node.Delete("/Scripts/CustomCommands/" + theScript4); if(Node.Exists("/Scripts/CustomCommands/" + theScript5)) Node.Delete("/Scripts/CustomCommands/" + theScript5); if(Node.Exists("/Scripts/CustomCommands/" + theScript6)) Node.Delete("/Scripts/CustomCommands/" + theScript6); if(Node.Exists("/Scripts/CustomCommands/" + theScript7)) Node.Delete("/Scripts/CustomCommands/" + theScript7); if(Node.Exists(theWidgetPath + "/" + theWidget)) Node.Delete(theWidgetPath + "/" + theWidget); //replacing custom widgets for point edit rectangle select and lasso select with originals //activate it WindowsManager.Activate(); WindowsManager.UpdateWindowsStructure(); //reset the toolbar //1D Aspect WindowsManager.SetWindowAspect('/Project/Windows Manager Space/NURBSFrame', 1); //2D Aspect WindowsManager.SetWindowAspect('/Project/Windows Manager Space/NURBSFrame', 2); } NScript Object Package/jScript language4W}@O{(XFҦV>g'JNjn*pncCBb@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엩 sweepPathButton.;]kI 忞@"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"ko6b!i4EAPBLTPUhI\DyIdxr9ν3nϝfA>wz9 r{eu?Kx橉Yq8ssF氙K]j89֠{2NElcn٘㾒am<|[Kz@/Û!lä#%,5_0 d,sX\ Gq\vᎺ]_FBK y\G/H'A&5ڈaP3X~8s!^6p{2ˆ4P|(ʡD %tkT!Rͥzd4L8~p:}%b,,C5P| '%P D15t@w[/S*LW'Ty3S|nj\v3q7#fG7䃱$1d9`1= ?qHO2Tä٦.zf_OcF.zASR0DV,$:5g|h_ "cwAv<!D>Po7+ۑx8 n#;nG8v@N_sX̵iyybVPG;30W'+ 9^D;Dd2S6RIG'6ֻNYNwΓ?We!!B%ݛe "ĺ?ѿ٩bߕCyV%7/U9lYNqyrټl{@qVz?Al! mBo!h˟ ?q1n}, ck9G`'}T8aYg<aG$,핈x$B,*irb(y?PMH׾ f"?8.5ձ7=c1Hy;8%g?BL;~IhG$bȠ&C~2L8^z)7j08Ŀ$ x<>F&VP.wT#2.h>-5~d6g8Eo֒?A ghދ+ڧA|~/ɏD9P&ʁ-\_σXrO>ѦRi{A>{3cqCň1J{>ȏЌ)5%3 .\=F:\F2꼔]>azh.h'Lky/{2C1rpR4Hs<(OQ B5*k>ie.8nm̯9<I" #ؼg@#wrSugTly1idm(_RuPC7 DAAo cHToޯ }qb/̘462n⧯NiUw7?Yd/ /2ҎDhdlȩaVZae*+-sXLfaFkv( sH?DCR/$ķKniaW &points2curveButton.;]kI 忞@"ʭ4W}@O{$n_<&KES Qo(K ]p dQm6l3Ll/V^N="QEj%:$ܿORE bi*S]?G[~x;'0#ԪC'X/9}'0#ԪC'X/9} IndexItem IndexSr)B8DNOQsP'ѭiDsL[w4E*h>ǑJ]@<+fyOA7XCTl@fC.^&GZh0OY~ C ]8teO?s sH?DCIlfāA>ˁw/ru|GF0][D+Iv(?Aυ D)7t8{Nm(!(XFҦV"-1OSM n"ko6ǑJ]@<N{2BBC850E-6EEF-4364-9265-A4A606AE464B}N="QEj%:/ru|GF0N{5B44AED2-C4BF-460B-A1D9-7C83F91B307A}$ܿORE bi(XFҦV>g'JNjn*pF!DBb@z@?+fyOA7XC8{Nm(! ][D+Iv( ko6ˁw\pe&tp#/Widgets/Tools/Mesh editor/PE MakeCurven_<&KES Qpoints2curve?Aυ D)7tUTl@fC.^&GZo(K ]p dxselect points one at a time then rt click to create a curve]8teO?s-1OSM n 럆L<_ї0Sr)B8 sH?DCDNOQsP'ѭeSBgc C:\Documents and Settings\Clinton\My Documents\My Pictures\points2curveIcon_3.bmp TO 1BÕrCW xViTW~8hʪ$&nhd$,B+4H4twUWuUWuUuF,"HɘGEʼn',f<'3gTt1JȏJ:[~A/..T5<^/c]]xI@T )DtPMmoֱ%JH(5NQ~."C.Ɋv#mvIIS%ېv! v7jv$׿x IHݹ:r*+źcM:x#iQ-̀7:5^-`ں[0[0q#:ݣ us]=6k@ٓK?'!;_7Ė0?t wHQjU|_H}l15jݾ/aJKVz]?l[R!g$L&yu;̈́qC$IDV"l($OgŽpH7%W3fVCM8= շ5\&6]>W{+RX7"ِT諞f} MXP,:eGO= ih,^Zו0x:´M0UǷ穴UqY@{`1$ X"0Fy`0,(GK ;ׇ u/sk+C/q t딩|;%O-2hkaٱd[:oMXq*pHh]u&,r(̀Eͯy+x v!ҁ3!x $uD `z'##)(t(> c g'JNjn*p(XFҦVLE2Data, 1"qMN,,qjigzAZ{\>g'JNjn*pFBDC`@0@?4W}@O{(XFҦV>g'JNjn*pFZDAb@@T@0AHB?՞'fA5-_.;]kI 忞@-1OSM n 럆L<_ї08ܖE){hPE target weldCnf!E2)O=.Default ()K{()K{Help stringHelp string^H@$E)}Ϟ^H@$E)}Ϟ Icon Icon eSBgc Ad3@>'zCGAtAd3@>'zCGAAspect name4Name of the widget aspectx x 6Sm6FCbE^mt6Sm6FCbE^mAspect&Aspect name output9C]O<%`9C]O<%`All contextsCheck to make widget visible in all contexts. Uncheck to use context rules to evaluate widget visibility x WW} @?lWW} @?l$Coordinate systemJDefault coordinate system for widget 0d'O5S.JNCp;?NCp;?Cachable:Check to cache widget aspect x EP/Mv0d `EP/Mv0d `$Widget components^Widget components to activate with this aspect p\_Fœŗ!O[Lޜ~6pŗ!O[Lޜ~6pIn front8Render in front of geometry @ 4W}@O{$(XFҦVLE2Data, 1"-1OSM n" Ad3@>'zCGADefault4W}@O{ŗ!O[Lޜ~6p (XFҦV>g'JNjn*pFCb@ h@?-1OSM n 럆L<_ї09C]O<%` NCp;?6Sm6FCbE^mDefault^H@$E)}Ϟ()K{EP/Mv0d `WW} @?lpE LM})ĕ*World origin dockingX k>@  6 #Ā5B(N#Ā5B(N"Widget component"Widget component p\_Fœx X 4W}@O{$(XFҦV"-1OSM n"(XFҦV>g'JNjn*pFhRCb@H@?k>g'JNjn*p-1OSM n"nptDwJ@RvnptDwJ@RvLE2Data, 3$LE2 Data for node >g'JNjn*p՞'fA5-_՞'fA5-_D3DEYED3DEYE =xNT{lK E/&R6lK E/&R6LE2Data, 6$LE2 Data for node >g'JNjn*p9F*DI}58P9F*DI}58PLE2Data, 4$LE2 Data for node >g'JNjn*p(XFҦVLE2Data, 1"OCh}?d=OCh}?d=LE2Data, 2$LE2 Data for node >g'JNjn*p@  `|oC3`|oC3 DockingPosition"Docking position \J C[>`(azM@aazM@aLE2Data, 5$LE2 Data for node >g'JNjn*p lK E/&R6>g'JNjn*pFDC`@0@C,B)\?4W}@O{nptDwJ@Rv>g'JNjn*pFC@C`@0@?azM@a>g'JNjn*pFC@C`@0@$B?(XFҦV>g'JNjn*pFoCCb@@@?啯]`O둒B>g'JNjn*pFC@C`@0@BB?՞'fA5-_OCh}?d=>g'JNjn*pFC@C`@0@?9F*DI}58P>g'JNjn*pFC@C`@0@!?`|oC3.;]kI 忞@-1OSM n 럆L<_ї0wI}g/GestureWGA^ֵ WGA^ֵ InputFilterInput filters (C`N,n<%C`N,n<%ControlOut&Control activationt⸄BxɜJK@B>y⸄BxɜJK@B>yGestureGesture output Է`HgC:MU`)k1<:KU~k1<:KU~ActiveGesture active 4W}@O{$lK E/&R6LE2Data(XFҦVLE2Data, 1"-1OSM n"lK E/&R6>g'JNjn*pFCC`@T@?⸄BxɜJK@B>y4W}@O{(XFҦV>g'JNjn*pF>CCb@@T@?k1<:KU~ C`N,n<%WGA^ֵ -1OSM n 럆L<_ї0sN!{8EP:Background widget controller `(!N޷IZ}յQ!N޷IZ}յQ DockingPosition"Docking position \J C[>k+D"J>Pk+D"J>PActive>True, it base widget is active `)S:iD p\ohe}S:iD p\ohe}GesturesJGestures assigned to control surface Է`HgC:MUhd~F Hwhd~F HwOrientation6Coordinate system modifier `^02eE{|@cLo@d:cLo@d:$Coordinate system$Coordinate system 0d'O5S.J-1OSM n#`+4W}@O{%(XFҦVLE2Data, 1#dCu繹NdCu繹NPriorityTool priority dCu繹NS:iD p\ohe}4W}@O{hd~F Hw`^02eE{|@B????!N޷IZ}յQ(XFҦV>g'JNjn*pFCCb@_@?cLo@d:k+D"J>P -1OSM n 럆L<_ї02Owj%{gaMouse RClickbŽiI[_"tbŽiI[_"$Input stateInput state NO7*-%7z^drAE7z^drAEKeyfilterIn(Key control flow in mIo`'ǾpTmIo`'ǾpKeyfilterOut*Key control flow out 4W}@O{%(XFҦVLE2Data, 1#-1OSM n#4W}@O{(XFҦV>g'JNjn*pFCb@H@?mIo`'Ǿp-1OSM n 럆L<_ї07z^drAE bŽiI[_"A^[Lۇ~8k2Simple Script Command, 18ոV*!JLոV*!JLConntrolInControl inucT @daucT @daCommand&Command to execute9Lg x\9Lg x\Undo commandUndo commandJAQH\ 8JAQH\ 8$$Widget parameters2Hidden widget parameters WAMydY_$(XFҦV"4W}@O{$-1OSM n"9Lg x\(XFҦV>g'JNjn*pF*DCb@S@?JAQH\ 8ucT @daActivity.Run("Scripts/CustomCommands/points2curveScript/exitcurvemode");ոV*!JL-1OSM n 럆L<_ї0HZ>YTMH{[(Continuous Sequencetˆ%#@~ˆ%#@~ControlInControl inuB~OuqhcB~Ouqhc First8First action, button style.8ZqNBaZqNBaSecondBSecond action, continuous style.JAQH\ 8$(XFҦV"w4W}@O{$ˆ%#@~(XFҦV>g'JNjn*pFCCb@@P@?JAQH\ 8ZqNBaB~Ouqhc-Jcy솖$Coordinate system{JAQH\ 8p%p|p|0G_RE}T0G_RE}$Coordinate system$coordinate system 0d'O5S.Jx |4W}@O{%(XFҦV#-1OSM n#0G_RE}4W}@O{(XFҦV>g'JNjn*pFLb@@@?JAQH\ 8-1OSM n 럆L<_ї0܂dKu=ԏSelect_apply5.;]kI 忞@" x3_$0̡NP\ j ($"064W}@O{$6!N޷IZ}յQ$(XFҦV"-1OSM n"!N޷IZ}յQ(XFҦV>g'JNjn*pFCCBb@@@B?-1OSM n 럆L<_ї0"?@ !DסApply commandrT@ӘrT@ӘConntrolInControl inJAQH\ 8$x34W}@O{$(XFҦV"-1OSM n"(XFҦV>g'JNjn*pF$DsCb@@@?rT@ӘJAQH\ 8-1OSM n 럆L<_ї0\tCE=I& UdBasic select <4M.FN4M.FNControlInControl in< 6'BY:n 6'BY:n ModeSelection mode. vertex,triangle edge,face edge,triangle,face,auto=~2Dq@O=~~2Dq@O=~ Style<Selection style. all, visible-1OSM n"pa_M9hȴpa_M9hȴActiveActive D \MFRemove elements from selection ?JAQH\ 8p$`i:4Ox1i:4Ox1$ Active viewport6Active viewport parameters 3obݠOG`ѷ$_4W}@O{$(XFҦV"`O]DTO]DHighlite mesh0Selection highlite mesh >W5f@(䐈hO:UI9d(Q:UI9d(QEnabledEnabled  pa_M9hȴ ~2Dq@O=~allD \MFg'JNjn*pF@Db@ b@?Zn창LL); :UI9d(Q JAQH\ 84M.FNi:4Ox1 6'BY:nvertexO]D-1OSM n 럆L<_ї0sN!{8E:Background widget controller $!N޷IZ}յQk+D"J>P$S:iD p\ohe}hd~F HwcLo@d:-1OSM n#$4W}@O{%(XFҦVLE2Data, 1#dCu繹N dCu繹NS:iD p\ohe}4W}@O{hd~F Hw!N޷IZ}յQ(XFҦV>g'JNjn*pFCjb@_@?cLo@d:k+D"J>P -1OSM n 럆L<_ї0wI}g, Gesture0ʡWGA^ֵ ʡC`N,n<%Z0ˡ⸄BxɜJK@B>y$k1<:KU~0̡4W}@O{$lK E/&R6LE2Data(XFҦVLE2Data, 1"-1OSM n"lK E/&R6>g'JNjn*pFCC`@T@?⸄BxɜJK@B>y4W}@O{(XFҦV>g'JNjn*pFLClBb@@T@?k1<:KU~ C`N,n<%WGA^ֵ -1OSM n 럆L<_ї0܂dKu= Render Highlite hN.;]kI 忞@"ALȓX ȳ N4W}@O{$hOVIQGіF͡TVIQGіF͡TInput Mesh*Input Mesh for Shape >W5f@(䐈HX O׊;Jf|ڢ׊;Jf|ڢBWldMatrixWorld matrix `^02eE{|@[h hh `H-1OSM n#(XFҦV"hQtveDCE`"IWJtveDCE`"IWJB Mesh"Ouput Shape Mesh >W5f@(䐈Z` pj `HQ.F_P#.F_P#D3DMaterial Output material D瞲tEY&akPk RS $hKnPSVmS $hKnPSVm"RenderAttributes"RenderAttributes HEoq5v 0l  S $hKnPSVm4W}@O{(XFҦV>g'JNjn*pFJDBb@@X@?VIQGіF͡T.F_P#׊;Jf|ڢ.;]kI 忞@tveDCE`"IWJ-1OSM n 럆L<_ї0tg "AlѮ$D3DMaterialSimple@JurGNCltJurGNClDiffuseColorDiffuse color -n,NjlpgPAPA.F_P#PQA4W}@O{%(XFҦV"-1OSM n"JurGNCl-n,Njlpg????4W}@O{(XFҦV>g'JNjn*pFDCb@H@?.F_P#-1OSM n 럆L<_ї047m2O  TransformJ<ĠF姁J]t<ĠF姁J]DMatrix,Object's input matrix `^02eE{|@EKKJWAGtWAGOwnerMatrixOwner's matrix `^02eE{|@KK偢jD%~`8t偢jD%~`8BObjMatrix Object's matrix `^02eE{|@CK׊;Jf|ڢPCOL4W}@O{%(XFҦV"-1OSM n"4W}@O{偢jD%~`8(XFҦV>g'JNjn*pFDCb@@T@?׊;Jf|ڢWAG`^02eE{|@B????<ĠF姁J]`^02eE{|@B????-1OSM n 럆L<_ї0vEwTݬ4 ShapeȒX tveDCE`"IWJPBhQHX VIQGіF͡TpȒX ȓX 4W}@O{$(XFҦV"-1OSM n"(XFҦV>g'JNjn*pFD$Cb@H@?VIQGіF͡T-1OSM n 럆L<_ї0tveDCE`"IWJqU F3f )2Object Render Attributes S $hKnPSVmPRx 8Ns2]t8Ns2] Surface Opacity Surface Opacity  ^mګA~Ksi[t^mګA~Ksi[Points opacityPoints opacity x (lrsGrt(lrsGrPoints Size>Point Size in Point rendering.  \Eh{5t\Eh{5Points ColorLColor of points during the rendering. -n,Njlpg x "PbEGDߗrt"PbEGDߗr0Ignore mesh point color0Ignore mesh point color   F?N dtF?N d.Ignore mesh point size.Ignore mesh point size  x ]*qBCxt]*qBCxEdges opacityEdges opacity  \J:I%7ut\J:I%7uEdges ColorEdges Color -n,Njlpg @ iA޲1rIK>XtiA޲1rIK>X0Ignore mesh edges color0Ignore mesh edges color   ,ot"AaYt,ot"AaY$Show hidden lines`Do not use ZBuffer in point and wireframe modes  @ ^RI8ÿRt^RI8ÿRShow backfaceslEnable two-sided rendering when Color mode is enabled   çwH5#VtçwH5#V0Ignore layer attributesvDo not combine render attributes with layer defined values  W0@zdW0@zd%VersionVersion%ȳ 4W}@O{$(XFҦV"-1OSM n"H ȅ8vDCxZtȅ8vDCxZInvisibleInvisible flag  ȵ F+2MGtF+2MGCast shadows$Cast shadows flag  H I2GWM:).$tI2GWM:).$ Receive shadows Receive shadows   mBޖw ptmBޖw pLayer index(Modeler layer index h o[nfFto[nfF Overlay opacity Overlay opacity  zgGFohN)tzgGFohN)Overlay ColorOverlay Color. -n,Njlpg h vhD zʔtvhD zʔ4Ignore mesh overlay color6Ignore mesh overlay color.   fB #^tfB #^$Transparency Mode@Quality of transparency solving :KrbSx  |$}mK;)t|$}mK;) OverlayEnable*Enable color overlay   ` rg@*oHtrg@*oH OverlayColor*Color of the overlay -n,Njlpg   !eLZE^Nt!eLZE^N OverlayStrengthJStrength (visibility) of the overlay  zgGFohN)I2GWM:).$vhD zʔ]*qBCx?S $hKnPSVmrg@*oHçwH5#V fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\J:I%7u-n,Njlpg?\Eh{5-n,Njlpg?(XFҦV>g'JNjn*pFD}Cb@w@?F?N d ȅ8vDCxZ 8Ns2]F+2MG"PbEGDߗr (lrsGr?^mګA~Ksi[?o[nfF?W0@zdmBޖw p-1OSM n 럆L<_ї DefaultAdvanced GFʠN=5 }} ^RI8ÿRZ`Ez]UOͽ>fdN*5Ւh, ^RI8ÿRϱZ`Ez]UO GFʠN= 5 }} ,ot"AaYZ`Ez]UOͽ>fdN*5Ւh , Ϳ,ot"AaYZ`Ez]UO GFʠN= 05 }} ȅ8vDCxZZ`Ez]UOͽ>fdN*5Ւh 0, ȅ8vDCxZZ`Ez]UO GFʠN=0@5 }} F+2MGZ`Ez]UOͽ>fdN*5Ւh0@, F+2MGZ`Ez]UO GFʠN=@P5 }} I2GWM:).$Z`Ez]UOͽ>fdN*5Ւh@P, I2GWM:).$Z`Ez]UO GFʠN=P`5 }} mBޖw pZ`Ez]UO1釥GP>aP`,mBޖw pZ`Ez]UO GFʠN=0(@: }} Color\J:I%7uZ`Ez]UO B>I(0h@%\VV\J:I%7uZ`Ez]UO GFʠN=@(P< }} Opacity]*qBCxZ`Ez]UON\q+nN-K^(@hPA?]*qBCxZ`Ez]UOY@ GFʠN=h@PD }} Enable Obj ModeçwH5#VZ`Ez]UOͽ>fdN*5Ւh@P, çwH5#VZ`Ez]UO GFʠN=h : }} Color\Eh{5Z`Ez]UO B>I %\VV\Eh{5Z`Ez]UO GFʠN=h 0< }} Opacity^mګA~Ksi[Z`Ez]UON\q+nN-K^ 0A?^mګA~Ksi[Z`Ez]UOY@ GFʠN=h0@9 }} Size(lrsGrZ`Ez]UON\q+nN-K^0@A?$@(lrsGrZ`Ez]UOY@ GFʠN=( < }} Opacity8Ns2]Z`Ez]UON\q+nN-K^(h A?8Ns2]Z`Ez]UOY@ GFʠN=h,}} SurfaceZ`Ez]UO GFʠN= h0*}} EdgesZ`Ez]UO GFʠN=h+}} PointsZ`Ez]UO GFʠN=Ph`5 }} fB #^Z`Ez]UOnevG4'hP`̎ fB #^VNo hidden faces No solving Triangle sortZ`Ez]UO,ot"AaY !eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X R BO[8˕|PE select modeXOz+"ERhQovtz+"ERhQov NameHMesh editor settings connector name0P0P56gNƥ~3T56gNƥ~3 Value^Specified Mesh editor settings connector value<P4W}@O{$(XFҦV"-1OSM n"56gNƥ~3vertex(XFҦV>g'JNjn*pFC@b@H@?-1OSM n 럆L<_ї0z+"ERhQov$PE selection modeHZ>YTMH{(Continuous SequenceZˆ%#@~x[B~Ouqhc<[ZqNBa$JAQH\ 8$\4W}@O{$(XFҦV"-1OSM n"ˆ%#@~(XFҦV>g'JNjn*pFdCCb@@P@?JAQH\ 8ZqNBaB~Ouqhc-1OSM n 럆L<_ї0DOE<Mouse LDrag h bŽiI[_"p$ i 7z^drAE i mIo`'ǾpP0ʡ(XFҦV" j 4W}@O{$-1OSM n"(XFҦV>g'JNjn*pF$BBX@1@?mIo`'Ǿp7z^drAE bŽiI[_"-1OSM n 럆L<_ї0R BO[8˕| Pe select style]z+"ERhQovp$$56gNƥ~3P=($4W}@O{$(XFҦV"-1OSM n"56gNƥ~3all(XFҦV>g'JNjn*pFC)Cb@H@?-1OSM n 럆L<_ї0z+"ERhQov&PE selection styleA^[Lۇ~8,Simple Script Command$ոV*!JLucT @da9Lg x\JAQH\ 8$(XFҦV""4W}@O{$-1OSM n"9Lg x\(XFҦV>g'JNjn*pFCCb@@P@?JAQH\ 8ucT @daActivity.Run("Scripts/CustomCommands/points2curveScript/getnextvertex");ոV*!JL-1OSM n 럆L<_ї0܂dKu=Dx(polygon2curveScript 8+.;]kI 忞@"@}%ݣMXxh P{x`8"X_{%!+4W}@O{$8,׊;Jf|ڢR,偢jD%~`8R8-WAG-<ĠF姁J]Tx(XFҦV"-1OSM n" G?ŋ G?ŋ tSObjLtrueSpace object synchronization data g'JNjn*pFD|Ck@ d@ChB?׊;Jf|ڢWAG`^02eE{|@B???? G?ŋ~0iV@KU>x'a@0 }}{MwzM/P]%Z`Ez]UO GFʠN=P`@1 }}<ĠF姁J]Z`Ez]UO GFʠN=@P@1 }}WAGZ`Ez]UO GFʠN=`p@1 }}偢jD%~`8Z`Ez]UO GFʠN=p@1 }}׊;Jf|ڢZ`Ez]UON\q+nN-K^F(@A}}@y@{MwzM/P]%Z`Ez]UOh@Oˁ CRih[(@@}}fActivity.Run('%THIS_NAME%' + "/selectVertexMode");Make CurveZ`Ez]UO GFʠN=@,}} version 1.0Z`Ez]UO}}܂dKu="controlPointCone |%.;]kI 忞@"H* Xx!@W PW @}%4W}@O{$ G?ŋ"tveDCE`"IWJZ^V (" `H"׊;Jf|ڢZ_V ! `H"偢jD%~`8Z"WAG( "<ĠF姁J]\H( $1&KߊPV$1&KߊPV$AutoShowPanelAutoShowPanel$"-V?XM%-V?XM%Material ListMaterial List +N⩊# (XFҦV""S $hKnPSVm # -1OSM n" -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pFCAb@ d@A?׊;Jf|ڢWAG G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0{`D@}㒱Cone primitive 2 tveDCE`"IWJPB"`3 *tL V0*Pt*tL V0*PRadiusTop"Top radius value2 3 1)ps6DU9rLt1)ps6DU9rLRadiusBottom(Bottom radius value2 `4 @,G8R(t@,G8R(HeightMesh Height2 VH=1Gn@`U)tH=1Gn@`U) Radial segments.Count of side segments2 VDMN{ g;tDMN{ g;Cap segments4Count of top cap segments2 W[T}lAuܿxjt[T}lAuܿxj Height segments2Count of height segments2 WBƆK``;a!tBƆK``;a!SliceRadial,Radial slice to angle2 X4W}@O{$(XFҦV"-1OSM n" *tL V0*P[T}lAuܿxj(XFҦV>g'JNjn*pFCNCb@ b@?@,G8R(BAH=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 List!.;]kI 忞@"PA E x!4W}@O{$!-V?XM%"(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%,Material List Manager@!-V?XM%P!!&zB}J?t&zB}J?&Active material ID2Active material class ID@!PA 4W}@O{$A =ө6I)])t=ө6I)])Mat Chunk 0BDynamic material input connector |E8y@!-V?XM%&zB}J?=ө6I)])܂dKu=Y!Material 0xE .;]kI 忞@"hJ XW E 4W}@O{$xF gYأC۲+?gYأC۲+?Material ChunkMaterial Chunk |E8yA gYأC۲+?b=h0CRfi0Material Flavor ManagerH gYأC۲+?PxF hI !EJGWMt!EJGWMMaterial IndexMaterial IndexH I 6~qK;2t&t6~qK;2t&Active Info4Active and validity flags NOI/)[&H hJ 4W}@O{$J ?.9>DGl{?t?.9>DGl{?Mat Item 0BDynamic material input connectorH !EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀D Solid N .F_P#T.F_P#Material Output material __W8E#(J ؒW n%⟀A}aJtn%⟀A}aJDiffuseColorDiffuseColor -n,NjlpgN XW >]zJ4 t>]zJ4 (VertexColorStrength(VertexColorStrengthN ؓW J.HE /*gtJ.HE /*gShininessShininessN XW 8VnZN:W pt8VnZN:W p DiffuseStrength DiffuseStrengthN ؔW ll-#Ez k^tll-#Ez k^"SpecularStrength"SpecularStrengthN XW K#uiL$tK#uiL$AlphaTestAlphaTest :KrbSxN ؕW ,L?D}t,L?D}AlphaTestValueAlphaTestValueN XW 4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????,L?D}.F_P#K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabledll-#Ez k^8VnZN:W p?u8DMhbE,SOwnerNameW 6Vg'JNjn*pFBCX@1@?qU F3f|v2Object Render AttributesW S $hKnPSVmP"W 8Ns2]pW W ^mګA~Ksi[pW W (lrsGrpW W \Eh{5pW W "PbEGDߗrpW W F?N dpW W ]*qBCxpW W \J:I%7upW HW iA޲1rIK>XpW ȶW ,ot"AaYpW HW ^RI8ÿRpW ȷW çwH5#VpW PW 4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"W o[nfFpW (W zgGFohN)pW W vhD zʔpW W0@zdW0@zd$VersionVersion$@ȅ8vDCxZpW F+2MGpW @I2GWM:).$pW mBޖw ppW @fB #^pW |$}mK;)p W @rg@*oHp W !eLZE^Np W @pSLDMF:ɅpSLDMF:ɅDObject_NameObject_NameDI2GWM:).$ zgGFohN)vhD zʔS $hKnPSVm]*qBCx?rg@*oHçwH5#V 4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\Eh{5-n,Njlpg????\J:I%7u-n,Njlpgd?==?pSLDMF:Ʌ\/Project/mycurve/nurbsCurves/controlPointCone(XFҦV>g'JNjn*pFCg'JNjn*pFzCCb@q@?W0@zdo[nfFmBޖw p,ot"AaY -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!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X ܂dKu= ЭLODCone0ݣ.;]kI 忞@"  Bi Ni ݣ4W}@O{$ G?ŋޣtveDCE`"IWJZp' `H0ߣ׊;Jf|ڢZ8& `Hߣ偢jD%~`8Z0WAG@ <ĠF姁J]\ $1&KߊPV$-V?XM%' (XFҦV"S $hKnPSVmH( 0H=1Gn@`U) -1OSM n" -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pFC]Cb@ f@?׊;Jf|ڢWAG G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0{`D@}㒱Cone primitive tveDCE`"IWJPBޣ@ *tL V0*Pp  1)ps6DU9rLp @ @,G8R(p  H=1Gn@`U)p @ DMN{ g;p  [T}lAuܿxjp @ BƆK``;a!p  4W}@O{$(XFҦV"-1OSM n" *tL V0*P[T}lAuܿxj(XFҦV>g'JNjn*pFCDCb@ d@?@,G8R(BA-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 ListH .;]kI 忞@"X 4W}@O{$h-V?XM%(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%ޠ,Material List Manager-V?XM%Ph0&zB}J?p4W}@O{$0=ө6I)])p-V?XM%=ө6I)])&zB}J?܂dKu= X Material 0 .;]kI 忞@"X 4W}@O{$ gYأC۲+?0gYأC۲+?b=h0CRf0Material Flavor ManagerHgYأC۲+?P !EJGWMpHH6~qK;2t&pH4W}@O{$?.9>DGl{?pH!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀D$ Solid .F_P#T.F_P#Material Output material __W8E#(0n%⟀A}aJp>]zJ4 p0J.HE /*gp8VnZN:W pp0ll-#Ez k^pK#uiL$p0,L?D}p4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????.F_P#,L?D}ll-#Ez k^K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabled8VnZN:W p?u8DMhbE(OwnerNameAi 6Vg'JNjn*pFBCX@1@?qU F3f7 2Object Render AttributesXFi S $hKnPSVmPFi 8Ns2]pXFi XGi ^mګA~Ksi[pXFi Gi (lrsGrpXFi XHi \Eh{5pXFi Hi "PbEGDߗrpXFi XIi F?N dpXFi Ii ]*qBCxpXFi XJi \J:I%7upXFi Ki iA޲1rIK>XpXFi Li ,ot"AaYpXFi Li ^RI8ÿRpXFi Mi çwH5#VpXFi Ni 4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"`a o[nfFpXFi a zgGFohN)pXFi `b vhD zʔpXFi W0@zdW0@zd$VersionVersion$ d ȅ8vDCxZpXFi d F+2MGpXFi e I2GWM:).$pXFi e mBޖw ppXFi f fB #^pXFi g |$}mK;)p XFi g rg@*oHp XFi h !eLZE^Np XFi h pSLDMF:ɅDI2GWM:).$ zgGFohN)vhD zʔS $hKnPSVm]*qBCx?rg@*oHçwH5#V 4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\Eh{5-n,Njlpg????\J:I%7u-n,Njlpg??u??pSLDMF:ɅL/Project/Space 3D/nurbsCurves/LODCone(XFҦV>g'JNjn*pFC(Bk@ `@?F?N d ȅ8vDCxZ 8Ns2]F+2MG "PbEGDߗr ^mګA~Ksi[(lrsGr?J@#QL>g'JNjn*pFzCCb@q@?W0@zdo[nfFmBޖw p,ot"AaY -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!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X ܂dKu=ܼ"controlPointMeshL.;]kI 忞@"U 0_ pʬ֬AM4W}@O{$ G?ŋi tveDCE`"IWJZx, `Hi ׊;Jf|ڢZ(+ `Hi 偢jD%~`8Zi WAG T i <ĠF姁J]\S $1&KߊPV$i -V?XM%, (XFҦV"i S $hKnPSVm- i L[> IkF:ǭJL[> IkF:ǭJB Pivot0Local coordinate system `^02eE{|@R-1OSM n"i ȅ8vDCxZ@ -V?XM%S $hKnPSVm偢jD%~`8L[> IkF:ǭJ(XFҦV>g'JNjn*pF@b@ h@?ȅ8vDCxZ ׊;Jf|ڢWAG G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0܂dKu=4h%Material List^ .;]kI 忞@" h 0_ 4W}@O{$x -V?XM%i (XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%,Material List Manager -V?XM%Px @ &zB}J?p  4W}@O{$@ =ө6I)])p -V?XM%=ө6I)])&zB}J?܂dKu=Material 0 .;]kI 忞@" xh 4W}@O{$ gYأC۲+?@ gYأC۲+?b=h0CRf T0Material Flavor ManagerX gYأC۲+?P  !EJGWMpX X 6~qK;2t&pX  4W}@O{$X ?.9>DGl{?pX !EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀Dd Solid t.F_P#T.F_P#Material Output material __W8E#(X 0un%⟀A}aJptu>]zJ4 pt0vJ.HE /*gptv8VnZN:W ppt0wll-#Ez k^ptwK#uiL$pt0x,L?D}ptx4W}@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% ImEditable shape~VIQGіF͡TptveDCE`"IWJPBi ɬ/nkUCEHLjt/nkUCEHLjSelection.Mesh selected elements >`g4RJLUDpʬ4W}@O{$(XFҦV"/nkUCEHLj(XFҦV>g'JNjn*pFACb@@P@?VIQGіF͡T>W5f@(䐈jٸ*ćIC7 ?w @8Т ?'޿2? t ?06?G'fz>O/6ɿ&hu >.?F@ h* 6H?BJ                 8{EE%D7[    LjUb)R    !"#$!%&'(%y'HN89Ig" @?@???33s?3?Fe?fff??Y??|?L??@?"r>|?333??ff&?"r>Fe??? ?>@???ff>"r>a?>?43>"r>!?>?>?!?L>?>3?a?=?L=??@?ZpߘHXO)u[?>F>u[?>F>u[?>F>ѡ?}:?E>ѡ?}:?E>ѡ?}:?E>Jf?F>Jf?F>Jf?F>ѡ}:?E>ѡ}:?E>ѡ}:?E>u[>F>u[>F>u[>F>u[F>u[F>u[F>ѡ}:E>ѡ}:E>ѡ}:E>JfF>JfF>JfF>ѡ?}:E>ѡ?}:E>ѡ?}:E>u[?F>u[?F>u[?F>tveDCE`"IWJu8DMhbE OwnerName֬6Vg'JNjn*pFBQCX@1@?qU F3f82Object Render Attributes9S $hKnPSVmPi :8Ns2]p9:^mګA~Ksi[p9 ;(lrsGrp9;\Eh{5p9 <"PbEGDߗrp9<F?N dp9 =]*qBCxp9=\J:I%7up9>iA޲1rIK>Xp9h?,ot"AaYp9?^RI8ÿRp9h@çwH5#Vp9A4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"Do[nfFp9 EzgGFohN)p9EvhD zʔp9W0@zdW0@zd$VersionVersion$@ȅ8vDCxZp98AF+2MGp9AI2GWM:).$p98BmBޖw pp90CfB #^p9C|$}mK;)p 90Drg@*oHp 9D!eLZE^Np 90EpSLDMF:ɅDI2GWM:).$ zgGFohN)vhD zʔS $hKnPSVm]*qBCx?rg@*oHçwH5#V 4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\Eh{5-n,Njlpg????\J:I%7u-n,Njlpg{?t?<?pSLDMF:Ʌ/Project/Space 3D/install curve tools/polygon2curveScript/controlPointMesh(XFҦV>g'JNjn*pFCBk@ b@?F?N d ȅ8vDCxZ 8Ns2]F+2MG "PbEGDߗr ^mګA~Ksi[?(lrsGr@J@#QL>g'JNjn*pFzCCb@q@?W0@zdo[nfFmBޖw p,ot"AaY -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!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X "L2OƲ@5N$ PivotL[> IkF:ǭJPBi X<ĠF姁J]pDXWAGpXX׊;Jf|ڢpB4W}@O{$(XFҦV"L[> IkF:ǭJ(XFҦV>g'JNjn*pFBCX@1@?׊;Jf|ڢWAG<ĠF姁J]`^02eE{|@B???3?܂dKu=LODMesh.;]kI 忞@"X `8X4W}@O{$ G?ŋૢtveDCE`"IWJZ0 `H`׊;Jf|ڢZ0 `Hଢ偢jD%~`8Z`WAGୢ<ĠF姁J]\X$1&KߊPV$஢-V?XM%1 (XFҦV"௢S $hKnPSVm2 `L[> IkF:ǭJR-1OSM n"hȅ8vDCxZpP  -V?XM%S $hKnPSVm偢jD%~`8L[> IkF:ǭJ(XFҦV>g'JNjn*pFCDb@ h@?ȅ8vDCxZ ׊;Jf|ڢWAG G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0܂dKu= Material List.;]kI 忞@" P  4W}@O{$ -V?XM%஢(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G% ,Material List Manager -V?XM%P  &zB}J?p  4W}@O{$ =ө6I)])p -V?XM%&zB}J?=ө6I)])܂dKu= Material 0 .;]kI 忞@"PP 4W}@O{$ gYأC۲+? gYأC۲+?b=h0CRf 0Material Flavor Manager gYأC۲+?P X !EJGWMp 6~qK;2t&p P4W}@O{$?.9>DGl{?p !EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀D Solid .F_P#T.F_P#Material Output material __W8E#(hn%⟀A}aJp>]zJ4 phJ.HE /*gp8VnZN:W pphll-#Ez k^pK#uiL$ph,L?D}p4W}@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% IEditable shapeVIQGіF͡Tp``tveDCE`"IWJPBૢ/nkUCEHLjp``4W}@O{$(XFҦV"/nkUCEHLj(XFҦV>g'JNjn*pFBCX@1@?VIQGіF͡T>W5f@(䐈 ٸ*ćIC7?w @m?@?f>g?Q?N\???߿Z?NRR?0?2k< [ ʿֿڿ ŨmJOo"dқAx>9??e@ h* 6H?BJ (           8{EE%D7[ (== = =  ======" =!"%#!=$%(&$='(+)'=*+.,*=-.1/-=01420=34753=67:86=9:<;9=LjUb)R (        ! "!#"$#%$&%'&(')()y'HN (89Ig" >@?@???y?|?333??,?tô>s?ff&?? ?"r>Fe???33?C>S? ??ff?>@???43>C>9,?ff>?>"r>a?>?>tô>9 ?43>?ff>"r>!?>?̌>??>?hff>?!?L>?433>F%?9 ?>?>3?a?=?=QY?8> >/=2s<~?R8? O? > O?R8? >8>QY? >d?!>8QY? > OR8? >R8 O? >QY8> >d!>QY8 >R8 O > OR8 >8QY >d!>8>QY > O?R8 >R8? O >QY?8 >tveDCE`"IWJu8DMhbEěOwnerName6Vg'JNjn*pFBQCX@1@?qU F3f|2Object Render AttributespS $hKnPSVmP௢8Ns2]ppp^mګA~Ksi[pp(lrsGrppp\Eh{5pp"PbEGDߗrpppF?N dpp]*qBCxppp\J:I%7uppiA޲1rIK>Xpp8,ot"AaYpp^RI8ÿRpp8çwH5#Vpp4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"po[nfFppzgGFohN)pppvhD zʔppW0@zdW0@zd$VersionVersion$pP ȅ8vDCxZppP F+2MGpppQ I2GWM:).$ppQ mBޖw pppR fB #^pphT |$}mK;)p pT rg@*oHp phU !eLZE^Np pU pSLDMF:ɅDI2GWM:).$ zgGFohN)vhD zʔS $hKnPSVm]*qBCx?rg@*oHçwH5#V 4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\Eh{5-n,Njlpg<?@=?\J:I%7u-n,Njlpg?r?{??pSLDMF:Ʌ/Project/Space 3D/install curve tools/polygon2curveScript/LODMesh(XFҦV>g'JNjn*pFC9Ck@ b@?F?N d ȅ8vDCxZ 8Ns2]F+2MG "PbEGDߗr ^mګA~Ksi[?(lrsGr@J@#QL>g'JNjn*pFzCCb@q@?W0@zdo[nfFmBޖw p,ot"AaY -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!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X "L2OƲ@5Nd  PivotL[> IkF:ǭJPB`(<ĠF姁J]pD(WAGp((׊;Jf|ڢpB4W}@O{$(XFҦV"L[> IkF:ǭJ(XFҦV>g'JNjn*pFBCX@1@?׊;Jf|ڢWAG<ĠF姁J]`^02eE{|@B???&?47m2O Transformx<ĠF姁J]pDxWAGpx偢jD%~`8PB,׊;Jf|ڢPB8,"0i `x4W}@O{$(XFҦV"-1OSM n"偢jD%~`8(XFҦV>g'JNjn*pFX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0ͤ*EgbĬtLODcontrol2AEHM'ceZU@䑧r%h4W}@O{$(XFҦV#.;]kI 忞@"-1OSM n#h{MwzM/P]%pDizDFUTizDFUBLODoutB0XSR 2AEHM'>g'JNjn*pFBC`@0@?ceZU@䑧r[җJs@ NewObject// OnComputeOutputs // Called to compute values of all output connectors function OnComputeOutputs(params) { var LODin = params.ConValue('LODin'); // TODO: put your computation here params.ConValue('LODout') = LODin; } NScript Object Package/jScript languageint LODin{MwzM/P]%intLODoutizDFU{MwzM/P]%&4W}@O{(XFҦV>g'JNjn*pFCb@H@?izDFU&.;]kI 忞@-1OSM n 럆L<_їCDefault GFʠN=P|1 }}{MwzM/P]%Z`Ez]UO1釥GP>aP|0 }}{MwzM/P]%Z`Ez]UO GFʠN=P |1 }}izDFUZ`Ez]UO1釥GP>aP |0 }}izDFUZ`Ez]UON\q+nN-K^ 8|A}}@y@{MwzM/P]%Z`Ez]UOh@}}48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?MN(K9/7ceZU@䑧r[җJs@ .NewCommand,/// \original author Rob Bateman //http://nccastaff.bournemouth.ac.uk/jmacey/RobTheBloke/www/opengl_programming.html /// \date 9-feb-2005 // adapted for truespace // Clinton Reese // Dec 11 2010 // var g_Knots = new Array(); //g_Knots[0] = 0.0; //g_Knots[1] = 0.0; //g_Knots[2] = 0.0; //g_Knots[3] = 0.0; //g_Knots[4] = 1.0; //g_Knots[5] = 2.0; //g_Knots[6] = 3.0; //g_Knots[7] = 4.0; //g_Knots[8] = 4.0; //g_Knots[9] = 4.0; //g_Knots[10] = 4.0; // //------------------------------------------------------------ CoxDeBoor() // function CoxDeBoor(u,i,k,Knots) { if(k==1) { if( Knots[i] <= u && u <= Knots[i+1] ) { return 1.0; } return 0.0; } var Den1 = Knots[i+k-1] - Knots[i]; var Den2 = Knots[i+k] - Knots[i+1]; var Eq1=0,Eq2=0; if(Den1>0) { Eq1 = ((u-Knots[i]) / Den1) * CoxDeBoor(u,i,k-1,Knots); } if(Den2>0) { Eq2 = (Knots[i+k]-u) / Den2 * CoxDeBoor(u,i+1,k-1,Knots); } return Eq1+Eq2; } //------------------------------------------------------------ GetOutpoint() // function GetOutpoint(t,OutPoint) { // sum the effect of all CV's on the curve at this point to // get the evaluated curve point // for(var i=0;i<g_num_cvs;i++) { // calculate the effect of this point on the curve var Val = CoxDeBoor(t,i,g_order,g_Knots); if(Val>0.001) { // sum effect of CV on this part of the curve //OutPoint[0] += Val * g_Points[i][0]; //OutPoint[1] += Val * g_Points[i][1]; //OutPoint[2] += Val * g_Points[i][2]; OutPoint[0] += Val * g_Points.x(i); OutPoint[1] += Val * g_Points.y(i); OutPoint[2] += Val * g_Points.z(i); } } } // Execute // Called to execute the command function Execute(params) { var lLOD = params.ConValue('lLOD'); var fileknots = params.ConValue('fileknots'); var filepoints = params.ConValue('filepoints'); var curvename = params.ConValue('curvename'); System.Trace("dofilenurbs"); LOD = lLOD; //float g_Points[7][3] = { //{ 10,10,0 }, //{ 5,10,2 }, //{ -5,5,0 }, //{-10,5,-2}, //{-4,10,0}, //{-4,5,2}, //{-8,1,0} //}; //g_Knots[0] = 0.0; //g_Knots[1] = 0.0; //g_Knots[2] = 0.0; //g_Knots[3] = 0.0; //g_Knots[4] = 1.0; //g_Knots[5] = 1.0; //g_Knots[6] = 1.0; //g_Knots[7] = 2.0; //g_Knots[8] = 2.0; //g_Knots[9] = 2.0; //g_Knots[10] = 2.0; for(i=0;i<fileknots.GetSize();i++) { g_Knots[i] = fileknots.GetAt(i); } g_Points = System.CreateDO("Space 3D Package/Point Array Data"); g_Points.SetSize(filepoints.GetSize()); for(i=0;i<filepoints.GetSize();i++) { g_Points.x(i) = -filepoints.x(i);//adjust to mirror g_Points.y(i) = filepoints.y(i); g_Points.z(i) = filepoints.z(i); } //g_Points.x(0) = 10; g_Points.y(0) = 10; g_Points.z(0) = 0; //g_Points.x(1) = 5; g_Points.y(1) = 10; g_Points.z(1) = 2; //g_Points.x(2) = -5; g_Points.y(2) = 5; g_Points.z(2) = 0; //g_Points.x(3) = -10; g_Points.y(3) = 5; g_Points.z(3) = 2; //g_Points.x(4) = -4; g_Points.y(4) = 10; g_Points.z(4) = 0; //g_Points.x(5) = -4; g_Points.y(5) = 5; g_Points.z(5) = 2; //g_Points.x(6) = -8; g_Points.y(6) = 1; g_Points.z(6) = 0; g_num_cvs=filepoints.GetSize(); g_degree=3; g_order=g_degree+1; g_num_knots=g_num_cvs+g_order; owner = System.ThisOwner(); // //display the control points curve // cpMesh = System.CreateDO("Space 3D Package/Mesh Data"); cpMesh = Node.Value(owner + "/controlPointMesh","Mesh"); cpVert = System.CreateDO("Space 3D Package/Vertex Stream Data"); cpVert = cpMesh.GetVertices(); System.Trace(cpVert.GetNumVertices()); for(i=0;i<g_num_cvs;i++) { cpVert.x(i) = g_Points.x(i); cpVert.y(i) = g_Points.y(i); cpVert.z(i) = g_Points.z(i); } cpMesh.AttachVerticesStream(cpVert); faceEdgesCP = System.CreateDO('Space 3D Package/Face Edges Stream Data'); faceEdgesCP = cpMesh.GetTrianglesStreamByName("Face Edges Stream Data"); numtri = faceEdgesCP.GetNumTriangleEdges(); //make all edges invisible for(i=0;i<numtri;i++) { faceEdgesCP.edges(i) = 0; } noncontroledgetri = 2; for(i=0;i<numtri;i++) { testodd = i % 2; if(testodd==0) faceEdgesCP.edges(i) = 1; //else // faceEdgesCP.edges(i) = 0; if(i==numtri-2) faceEdgesCP.edges(i) = 0; if(i==noncontroledgetri) { faceEdgesCP.edges(i) = 0; noncontroledgetri = noncontroledgetri + 6; } } cpMesh.AttachTrianglesStream(faceEdgesCP); Node.Value(owner + "/controlPointMesh/Editable shape","Input Mesh") = cpMesh; // // do the nurbs curve // ncMesh = System.CreateDO("Space 3D Package/Mesh Data"); ncMesh = Node.Value(owner + "/LODMesh","Mesh"); ncVert = System.CreateDO("Space 3D Package/Vertex Stream Data"); ncVert = ncMesh.GetVertices(); faceEdges = System.CreateDO('Space 3D Package/Face Edges Stream Data'); faceEdges = ncMesh.GetTrianglesStreamByName("Face Edges Stream Data"); numtri = faceEdges.GetNumTriangleEdges(); for(i=0;i<numtri;i++) { testodd = i % 2; if(testodd==0) faceEdges.edges(i) = 1; else faceEdges.edges(i) = 0; if(i==numtri-2) faceEdges.edges(i) = 0; } ncMesh.AttachTrianglesStream(faceEdges); var t; var Outpoint = new Array(); for(var i=0;i<LOD;i++) { t = g_Knots[g_num_knots-1] * i / (LOD-1); if(i==LOD-1) t-=0.001;//???why??? Outpoint[0] = 0; Outpoint[1] = 0; Outpoint[2] = 0; GetOutpoint(t,Outpoint); //glVertex3fv(Outpoint); ncVert.x(i) = Outpoint[0]; ncVert.y(i) = Outpoint[1]; ncVert.z(i) = Outpoint[2]; } ncMesh.AttachVerticesStream(ncVert); Node.Value(owner + "/LODMesh/Editable shape","Input Mesh") = ncMesh; } NScript Object Package/jScript languageDint lLODMN(K9/7LCommon Data Package/Number Array Datafileknots GnKJO!i\t FWly~DSpace 3D Package/Point Array Datafilepoints (F)ݟ{HHKHa,4W}@O{(XFҦV>g'JNjn*pnCDb@@X@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?HHKHa,-1OSM n 럆L<_їaControlOˁ CRih[ e}}8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0 e}}:Activity.Stop('%THIS_NAME%') StopZ`Ez]UO GFʠN=00@ 4 }}LODtT1GCh*kZ`Ez]UO1釥GP>a00`@ 0 }}MN(K9/7Z`Ez]UO GFʠN=@`P 1 }} FWly~Z`Ez]UO GFʠN=P`` 1 }}HHKHa,Z`Ez]UO GFʠN=``p 1 }}z@HoZ`Ez]UO}}MT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho FWly~܂dKu=ycurveShaperz.;]kI 忞@"2hPؠ{U x$ }P{4W}@O{${"ĺI[e/1"ĺI[e/1Bcurvemesh >W5f@(䐈RP}OEnuE:(PIOEnuE:(PIDcpmesh >W5f@(䐈T~U (XFҦV"-1OSM n"~{MwzM/P]%ThP'N^'N^DcpMatrix `^02eE{|@T#"ĺI[e/1'N^`^02eE{|@B????{MwzM/P]%&(XFҦV>g'JNjn*pFp@b@ a@=qC?OEnuE:(PI>W5f@(䐈*ٸ*ćIC7A?`x@9"A>Z/@Z@A?@|?uy&>"t}>Զ_G>p>@8L8?<8 ۝>.3@F$J @(P>BPA˜sAƃAL;DAA#ο@ h* 6H?BJ                 y'HNLjUb)R                8{EE%D7[     !"#$"#%&$%'(&'(ZpߘHXOS??6o>qӔ> I٘>)Hr;BOX?j;C=xL rN?c Zc= >a|?2юT>1?>x>q?UfN p ?F),?n:?OHs&=Dw?; M?P#PÚ?ю[>a>mUI >I=l?x?$F?>p?L)::`g? >]w>?r:?y*?Ta?B?o M?|?3>89Ig")؉>?Nl>?؉>؉>?PD>N>?;>؉=?N=N>?>?= ???P8?A"??@?@?@???Nl??b'v?؉??;?,[$?(?߶??0>f?N>N{?.> 0?0>pj?.>PO?-1OSM n 럆L<_ї˥Default GFʠN=PlG1 }}OEnuE:(PIZ`Ez]UO GFʠN=P PlG1 }}{MwzM/P]%Z`Ez]UO1釥GP>aP PlG0 }}{MwzM/P]%Z`Ez]UO GFʠN= 0PlG1 }}"ĺI[e/1Z`Ez]UON\q+nN-K^0HPlGA}}@y@{MwzM/P]%Z`Ez]UOh@Oˁ CRih[H`XPlG}}\Activity.Run('%THIS_NAME%' + "/connectHead");connect headZ`Ez]UOOˁ CRih[X`hPlG}}bActivity.Run('%THIS_NAME%' + "/disconnectHead"); disconnect headZ`Ez]UOOˁ CRih[h`xPlG}}\Activity.Run('%THIS_NAME%' + "/freezeCurve");freeze curveZ`Ez]UO}}܂dKu=41LODCone(2.;]kI 忞@"pAY u 24W}@O{$ G?ŋ3tveDCE`"IWJZh#hp `H(4׊;Jf|ڢZpn `H4偢jD%~`8Z(5WAG?6<ĠF姁J]\p?$1&KߊPV$p8-V?XM%hq (XFҦV"p9S $hKnPSVmHr 9H=1Gn@`U)-1OSM n" -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pF#DBb@ f@?׊;Jf|ڢWAG`^02eE{|@B6?6?6?m$B8A6? G?ŋ~0iV@KU>x%Transformp?<ĠF姁J]pDp@@?WAGp@p@偢jD%~`8PB4@׊;Jf|ڢPB(4pA4W}@O{$(XFҦV"-1OSM n"偢jD%~`8(XFҦV>g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0{`D@}㒱Cone primitive tveDCE`"IWJPB38*tL V0*Pp1)ps6DU9rLp8@,G8R(pH=1Gn@`U)p8DMN{ g;p[T}lAuܿxjp8BƆK``;a!p4W}@O{$(XFҦV"-1OSM n" *tL V0*P[T}lAuܿxj(XFҦV>g'JNjn*pFCDCb@ b@?@,G8R(BA-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=\XMaterial ListPY.;]kI 忞@"`(gY4W}@O{$PZ-V?XM%p8(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%<^,Material List Manager0_-V?XM%PPZh`&zB}J?p0_`4W}@O{$ha=ө6I)])p0_-V?XM%=ө6I)])&zB}J?܂dKu=dMaterial 0f.;]kI 忞@"0l` (g4W}@O{$ggYأC۲+?hagYأC۲+?b=h0CRfi0Material Flavor ManagerjgYأC۲+?Pg0k!EJGWMpjk6~qK;2t&pj0l4W}@O{$l?.9>DGl{?pj!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀Do Solid ` .F_P#T.F_P#Material Output material __W8E#(l n%⟀A}aJp` ` >]zJ4 p`  J.HE /*gp` ` 8VnZN:W pp`  ll-#Ez k^p` ` K#uiL$p`  ,L?D}p` ` 4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????.F_P#,L?D}ll-#Ez k^K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabled8VnZN:W p?u8DMhbE4 OwnerName( 6Vg'JNjn*pFBCX@1@?qU F3fk 2Object Render Attributes0l S $hKnPSVmPp9l 8Ns2]p0l 0m ^mګA~Ksi[p0l m (lrsGrp0l 0n \Eh{5p0l n "PbEGDߗrp0l 0o F?N dp0l p ]*qBCxp0l 0q \J:I%7up0l xr iA޲1rIK>Xp0l r ,ot"AaYp0l xs ^RI8ÿRp0l s çwH5#Vp0l u 4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"0x o[nfFp0l x zgGFohN)p0l 0y vhD zʔp0l W0@zdW0@zd$VersionVersion$ ȅ8vDCxZp0l  F+2MGp0l  I2GWM:).$p0l  mBޖw pp0l x fB #^p0l  |$}mK;)p 0l x rg@*oHp 0l  !eLZE^Np 0l x pSLDMF:ɅDI2GWM:).$ zgGFohN)vhD zʔS $hKnPSVm]*qBCx?rg@*oHçwH5#V 4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\Eh{5-n,Njlpg????\J:I%7u-n,Njlpg??u??pSLDMF:Ʌ/Project/Space 3D/install curve tools/polygon2curveScript/curveShaper/LODCone(XFҦV>g'JNjn*pFC(Bk@ `@?F?N d ȅ8vDCxZ 8Ns2]F+2MG "PbEGDߗr ^mګA~Ksi[(lrsGr?J@#QL>g'JNjn*pFzCCb@q@?W0@zdo[nfFmBޖw p,ot"AaY -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!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X ͤ*EgbĬ4BLODcontrol2AEHM'ceZU@䑧r%h4W}@O{$(XFҦV#.;]kI 忞@"-1OSM n#h{MwzM/P]%pDizDFUPB9}U 2AEHM'>g'JNjn*pFBC`@0@?ceZU@䑧r[җJs@ NewObject// OnComputeOutputs // Called to compute values of all output connectors function OnComputeOutputs(params) { var LODin = params.ConValue('LODin'); // TODO: put your computation here params.ConValue('LODout') = LODin; } NScript Object Package/jScript languageint LODin{MwzM/P]%intLODoutizDFU{MwzM/P]%&4W}@O{(XFҦV>g'JNjn*pFCpAb@@R@?izDFU&.;]kI 忞@-1OSM n 럆L<_їCDefault GFʠN=Pp1 }}{MwzM/P]%Z`Ez]UO1釥GP>aPp0 }}{MwzM/P]%Z`Ez]UO GFʠN=P p1 }}izDFUZ`Ez]UO1釥GP>aP p0 }}izDFUZ`Ez]UON\q+nN-K^ 8pA}}@y@{MwzM/P]%Z`Ez]UOh@}}܂dKu=&curveHeadIndicator .;]kI 忞@"((aU hh P4W}@O{$ G?ŋPtveDCE`"IWJZ8v `H׊;Jf|ڢZ@t `HP偢jD%~`8ZWAG&P<ĠF姁J]\(&$1&KߊPV$P-V?XM%w (XFҦV"PS $hKnPSVm`x  -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pF@bDb@ d@?׊;Jf|ڢWAG`^02eE{|@B???? G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї08c+KjWNd0Cube primitive X2tveDCE`"IWJPBP2\5KZWDL&ft\5KZWDL&f WidthMesh widthX2X_[irH%}Jt[irH%}J DepthMesh depthX2_cCN!F)/tcCN!F)/HeightMesh heightX2X`XxEbN5g'JNjn*pFC Bb@ `@?[irH%}J>cCN!F)/>XxEbN5a@P0 }}ZK=nʼZ`Ez]UO GFʠN=p0@7 }}Height4MBLt6Z`Ez]UO1釥GP>ap@P0 }}4MBLt6Z`Ez]UO GFʠN=80p@6 }}WidthXxEbN5a8@`P0 }}XxEbN54MBLt6?K?Z`Ez]UOPN AnqH`@pP>XxEbN5ZK=nʼ?K?Z`Ez]UO GFʠN=08P)}}SegmentsZ`Ez]UO GFʠN= p01 }}[irH%}JZ`Ez]UO1釥GP>ap 00 }}[irH%}JZ`Ez]UOPN AnqH 0>[irH%}JK>Z`Ez]UO GFʠN=p 1 }}cCN!F)/Z`Ez]UO1釥GP>ap 0 }}cCN!F)/Z`Ez]UOPN AnqH >cCN!F)/K>Z`Ez]UO GFʠN=p1 }}\5KZWDL&fZ`Ez]UO1釥GP>ap0 }}\5KZWDL&fZ`Ez]UOPN AnqH>\5KZWDL&fK>Z`Ez]UOtveDCE`"IWJ\5KZWDL&f>4MBLt6ZK=nʼ܂dKu=tU Material ListhU .;]kI 忞@"pU U U 4W}@O{$hU -V?XM%P-V?XM%) 6G%|U ,Material List ManagerpU -V?XM%PhU U &zB}J?ppU pU 4W}@O{$U  xM֓t xM֓Mat Chunk 0BDynamic material input connector |E8ypU -V?XM%&zB}J? xM֓܂dKu=DGl{?pr!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀Dw Solid z.F_P#T.F_P#Material Output material __W8E#(t{n%⟀A}aJpzP}>]zJ4 pz}J.HE /*gpzP~8VnZN:W ppz~ll-#Ez k^pzPK#uiL$pz,L?D}pzP4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,NjlpgV?>L??,L?D}.F_P#K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabledll-#Ez k^8VnZN:W p?u8DMhbEOwnerName6VXpp,ot"AaYpph ^RI8ÿRpp çwH5#Vpph 4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1" o[nfFpp zgGFohN)ppvhD zʔppW0@zdW0@zd$VersionVersion$ȅ8vDCxZppXF+2MGppI2GWM:).$ppXmBޖw pppPfB #^pp|$}mK;)p pPrg@*oHp p!eLZE^Np pPpSLDMF:ɅDzgGFohN)I2GWM:).$ ]*qBCx?S $hKnPSVmvhD zʔçwH5#V rg@*oH4W}@O{\J:I%7u-n,NjlpgL?\>>?\Eh{5-n,Njlpg????fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort(XFҦV>g'JNjn*pFC(Bk@ b@?pSLDMF:Ʌ./Project/Space 3D/CubeF?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 ̧GCvҳ$ExpandInMatrix$ȎJxѝtȎJxѝMatrix(Expand input matrix `^02eE{|@($OIo9tOIo9txPosition X$$w<:'Cu`ntw<:'Cu`ntyPosition Y$ОU BPDC tОU BPDC tzPosition Z$UA0GF(K3tUA0GF(K3sxScale x$ a@7>t a@7>syScale y$ԕfHKUR8HtԕfHKUR8HszScale Z$_.%YBQ:Pt_.%YBQ:PshxShear X$hIu) thIu) shyShear Y$МglVL'{/:tglVL'{/:shzShear Z$P8S H"`7M_t8S H"`7M_ rollRotation by X$Нǰ϶F?tǰ϶F? pitchRotation by Y$PތdnJAy0VWtތdnJAy0VWyawRotation by Z$ؠ4W}@O{$(XFҦV"-1OSM n" a@7>?ȎJxѝ_.%YBQ:Pw<:'Cu`nz?(XFҦV>g'JNjn*p6DEX@ f@_.%YBQ:P1 =glVL'{/:i>hIu) =?8S H"`7M_glVL'{/:hIu) ԕfHKUR8H?-1OSM n 럆L<_їrDefault GFʠN=@(P1 }}ǰ϶F?Z`Ez]UO1釥GP>a(@`P0 }}ǰ϶F?Z`Ez]UO GFʠN=0(@1 }}8S H"`7M_Z`Ez]UO1釥GP>a(0`@0 }}8S H"`7M_Z`Ez]UO GFʠN=`(p1 }}UA0GF(K3Z`Ez]UO1釥GP>a(``p0 }}UA0GF(K3Z`Ez]UO GFʠN=p(1 }} a@7>Z`Ez]UO1釥GP>a(p`0 }} a@7>Z`Ez]UO GFʠN=(1 }}ԕfHKUR8HZ`Ez]UO1釥GP>a(`0 }}ԕfHKUR8HZ`Ez]UO GFʠN=(1 }}OIo9Z`Ez]UO1釥GP>a(`0 }}OIo9Z`Ez]UO GFʠN=( 1 }}w<:'Cu`nZ`Ez]UO1釥GP>a(` 0 }}w<:'Cu`nZ`Ez]UO GFʠN= (01 }}ОU BPDC Z`Ez]UO1釥GP>a( `00 }}ОU BPDC Z`Ez]UO GFʠN=P(`1 }}ތdnJAy0VWZ`Ez]UO1釥GP>a(P``0 }}ތdnJAy0VWZ`Ez]UO GFʠN=`1 }}ȎJxѝZ`Ez]UOތdnJAy0VWǰ϶F?UA0GF(K3?ОU BPDC  @OIo9 @ͤ*EgbĬyU curveUpdate2AEHM'ceZU@䑧r%{U 4W}@O{$(XFҦV#.;]kI 忞@"-1OSM n#}U g5pVxHm؋otg5pVxHm؋oD lLODD}U h##p#}U "ĺI[e/1PB{~U OEnuE:(PIpD}U h##p#h#zaƸAq ktzaƸAq kDLODmesh >W5f@(䐈D}U h##p##'N^pD}U h##p#h#_nt EuSrhT_nt EuSrhBtxB($# t7B!C K 'T t7B!C K 'BtyB$p#lE05DERTlE05DERBtzB"ĺI[e/12AEHM'>g'JNjn*pFBC`@0@?ceZU@䑧r[җJs@ &NewObject>#/// \original author Rob Bateman //http://nccastaff.bournemouth.ac.uk/jmacey/RobTheBloke/www/opengl_programming.html /// \date 9-feb-2005 // adapted for truespace // Clinton Reese // Dec 11 2010 // var g_Knots = new Array(); //------------------------------------------------------------ CoxDeBoor() // function CoxDeBoor(u,i,k,Knots) { if(k==1) { if( Knots[i] <= u && u <= Knots[i+1] ) { return 1.0; } return 0.0; } var Den1 = Knots[i+k-1] - Knots[i]; var Den2 = Knots[i+k] - Knots[i+1]; var Eq1=0,Eq2=0; if(Den1>0) { Eq1 = ((u-Knots[i]) / Den1) * CoxDeBoor(u,i,k-1,Knots); } if(Den2>0) { Eq2 = (Knots[i+k]-u) / Den2 * CoxDeBoor(u,i+1,k-1,Knots); } return Eq1+Eq2; } //------------------------------------------------------------ GetOutpoint() // function GetOutpoint(t,OutPoint) { // sum the effect of all CV's on the curve at this point to // get the evaluated curve point // for(var i=0;i<g_num_cvs;i++) { // calculate the effect of this point on the curve var Val = CoxDeBoor(t,i,g_order,g_Knots); if(Val>0.001) { // sum effect of CV on this part of the curve //OutPoint[0] += Val * g_Points[i][0]; //OutPoint[1] += Val * g_Points[i][1]; //OutPoint[2] += Val * g_Points[i][2]; OutPoint[0] += Val * g_Points.x(i); OutPoint[1] += Val * g_Points.y(i); OutPoint[2] += Val * g_Points.z(i); } } } // OnComputeOutputs // Called to compute values of all output connectors function OnComputeOutputs(params) { var lLOD = params.ConValue('lLOD'); var cpmesh = params.ConValue('cpmesh'); var LODmesh = params.ConValue('LODmesh'); var cpMatrix = params.ConValue('cpMatrix'); // TODO: put your computation here LOD = lLOD; cpVert = System.CreateDO("Space 3D Package/Vertex Stream Data"); cpVert = cpmesh.GetVertices(); g_num_cvs = cpVert.GetNumVertices() - 2; g_degree=3; g_order=g_degree+1; g_num_knots=g_num_cvs+g_order; g_Points = System.CreateDO("Space 3D Package/Point Array Data"); g_Points.SetSize(g_num_cvs); var clength = new Array(); curvelength = 0; clength[0] = 0; for(i=0;i<g_num_cvs;i++) { g_Points.x(i) = cpVert.x(i); g_Points.y(i) = cpVert.y(i); g_Points.z(i) = cpVert.z(i); //get curve length if(i>0) { dx = cpVert.x(i) - cpVert.x(i-1); dy = cpVert.y(i) - cpVert.y(i-1); dz = cpVert.z(i) - cpVert.z(i-1); dist = Math.sqrt(dx*dx + dy*dy + dz*dz); curvelength = curvelength + dist; clength[i] = curvelength; } } //set knots as running length divided by curve length g_Knots[0] = 0; g_Knots[1] = 0; g_Knots[2] = 0; g_Knots[3] = 0; g_Knots[g_num_knots-4] = 1; g_Knots[g_num_knots-3] = 1; g_Knots[g_num_knots-2] = 1; g_Knots[g_num_knots-1] = 1; curvepos = 0; for(i=4;i<g_num_knots-4;i=i+3) { g_Knots[i] = clength[i-1]/curvelength; g_Knots[i+1] = g_Knots[i]; g_Knots[i+2] = g_Knots[i]; //System.Trace(g_Knots[i]); } // // do the nurbs curve // ncMesh = System.CreateDO("Space 3D Package/Mesh Data"); ncMesh = LODmesh; ncVert = System.CreateDO("Space 3D Package/Vertex Stream Data"); ncVert = ncMesh.GetVertices(); faceEdges = System.CreateDO('Space 3D Package/Face Edges Stream Data'); faceEdges = ncMesh.GetTrianglesStreamByName("Face Edges Stream Data"); numtri = faceEdges.GetNumTriangleEdges(); for(i=0;i<numtri;i++) { testodd = i % 2; if(testodd==0) faceEdges.edges(i) = 1; else faceEdges.edges(i) = 0; if(i==numtri-2) faceEdges.edges(i) = 0; } ncMesh.AttachTrianglesStream(faceEdges); var t; var Outpoint = new Array(); for(var i=0;i<LOD;i++) { t = g_Knots[g_num_knots-1] * i / (LOD-1); if(i==LOD-1) t-=0.001;//???why??? Outpoint[0] = 0; Outpoint[1] = 0; Outpoint[2] = 0; GetOutpoint(t,Outpoint); //glVertex3fv(Outpoint); ncVert.x(i) = Outpoint[0]; ncVert.y(i) = Outpoint[1]; ncVert.z(i) = Outpoint[2]; } ncMesh.AttachVerticesStream(ncVert); params.ConValue("curvemesh") = ncMesh; // //position the curve head indicator // headPoint = System.CreateDO("Math Package/Point Data"); headPointA = System.CreateDO("Math Package/Point Data"); headPointA.x = cpVert.x(0); headPointA.y = cpVert.y(0); headPointA.z = cpVert.z(0); headPoint = cpMatrix.TransformPoint(headPointA); params.ConValue("tx") = headPoint.x; params.ConValue("ty") = headPoint.y; params.ConValue("tz") = headPoint.z; } NScript Object Package/jScript language~൱D #^cint lLODg5pVxHm؋o6Space 3D Package/Mesh Datacurvemesh >W5f@(䐈ɗ"ĺI[e/16Space 3D Package/Mesh Datacpmesh >W5f@(䐈ɭOEnuE:(PI6Space 3D Package/Mesh DataLODmesh >W5f@(䐈zaƸAq k>Math Package/Matrix Float DatacpMatrix `^02eE{|@'N^numbertx_nt EuSrhnumberty t7B!C K 'numbertzlE05DER'N^4W}@O{_nt EuSrh @g5pVxHm؋o(XFҦV>g'JNjn*pFCb@ b@?lE05DER @zaƸAq k t7B!C K 'z?OEnuE:(PI.;]kI 忞@-1OSM n 럆L<_ї048@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 owner = System.ThisOwner(); Node.Disconnect(owner + "/ExpandInMatrix", "Matrix", owner + "/curveHeadIndicator", "Matrix"); } NScript Object Package/jScript language04[4W}@O{(XFҦV>g'JNjn*pnCB`@@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) { // TODO: put your action code here owner = System.ThisOwner(); Node.ConnectTo(owner + "/ExpandInMatrix", "Matrix", owner + "/curveHeadIndicator", "Matrix"); } NScript Object Package/jScript language~൱DU #^c4W}@O{(XFҦV>g'JNjn*pnC?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@ NewCommandr// Execute // Called to execute the command function Execute(params) { owner = System.ThisOwner(); cpnode = Node.LinkedInputNode(owner, "cpmesh",0); curvenode = Node.LinkedOutputNode(owner, "curvemesh",0); Node.Disconnect(owner, "curvemesh", curvenode, "Input Mesh"); Node.Disconnect(cpnode, "WldMatrix", curvenode, "Matrix"); Node.Delete(cpnode); //Node.ConRemove(curvenode, "Input Mesh"); Node.Delete(owner); } NScript Object Package/jScript language+44W}@O{(XFҦV>g'JNjn*pnC`@@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 VJ0#>BjiO>VJ0#>BjDcurvenameDS~N$v)֒S~N$v)֒Dmatrix `^02eE{|@D@wsJ.pwsJ.pBlodnodeB8"2|=Bynj(@z@Ho 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { var curvename = params.ConValue('curvename'); var matrix = params.ConValue('matrix'); // TODO: put your action code here owner = System.ThisOwner(); scene = Space.CurrentScene(); newnode = Node.Copy(owner + "/LODMesh",scene); Node.Value(newnode,"Matrix") = matrix; matrix.LoadIdentity(); Node.Value(newnode,"OwnerMatrix") = matrix; params.ConValue("lodnode") = Node.SafeRename(newnode,curvename); } NScript Object Package/jScript language8YstringcurvenameiO>VJ0#>Bj>Math Package/Matrix Float Datamatrix `^02eE{|@S~N$v)֒stringlodnodewsJ.p4W}@O{(XFҦV>g'JNjn*pnC@Db@@X@2|=Bynj|?z@Hoۙ>?S~N$v)֒J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?wsJ.pD/Project/Space 3D, 6/polycurve, 1-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOiO>VJ0#>BjpolycurveMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J VJ0#>BjDS~N$v)֒D(_,A~:G}_,A~:G}BcpnodeB"2|=Bynj"(z@Ho 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { var curvename = params.ConValue('curvename'); var matrix = params.ConValue('matrix'); // TODO: put your action code here owner = System.ThisOwner(); scene = Space.CurrentScene(); newnode = Node.Copy(owner + "/controlPointMesh",scene); Node.Value(newnode,"Matrix") = matrix; matrix.LoadIdentity(); Node.Value(newnode,"OwnerMatrix") = matrix; params.ConValue("cpnode") = Node.SafeRename(newnode,"CPM_" + curvename); } NScript Object Package/jScript language~൱D@##^cstringcurvenameiO>VJ0#>Bj>Math Package/Matrix Float Datamatrix `^02eE{|@S~N$v)֒stringcpnode_,A~:G}4W}@O{(XFҦV>g'JNjn*pn'D&Db@@X@2|=Bynj|?z@Hoۙ>?S~N$v)֒J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?_,A~:G}L/Project/Space 3D, 6/CPM_polycurve, 1-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOiO>VJ0#>BjpolycurveMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J Hz_ֱٗѝ>Hz_ٗDlodnodeD"gɼM4gɼM4DcpnodeD"2|=Bynj"z@Ho 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?gɼM4L/Project/Space 3D, 6/CPM_polycurve, 1ceZU@䑧r[җJs@ NewCommand^// Execute // Called to execute the command function Execute(params) { var lodnode = params.ConValue('lodnode'); var cpnode = params.ConValue('cpnode'); // TODO: put your action code here owner = System.ThisOwner(); scene = Space.CurrentScene(); //copy curve shaper to the scene curveshaper = Node.Copy(owner + "/curveShaper",scene); //export mesh input from lod curve Node.ExportConnector(lodnode + "/Editable shape", "Input Mesh", "", 1, 1); //connect cp wldmatrix to lod matrix Node.ConnectTo(cpnode, "WldMatrix", lodnode, "Matrix"); //connect cp mesh to curve shaper cpmesh input Node.ConnectTo(cpnode, "Mesh", curveshaper, "cpmesh"); //connect curve shaper curvemesh to lod mesh new mesh input connector Node.ConnectTo(curveshaper, "curvemesh", lodnode, "Input Mesh"); //set curve resolution //Node.Value(curveshaper, "LODin") = Node.Value(owner + "/LODcontrol","LODin");uncomment later //connect cp wldmatrix to curve shaper cpMatrix input Node.ConnectTo(cpnode, "WldMatrix", curveshaper, "cpMatrix"); //move pivots to curve and control curve to center - DOES NOT WORK HERE //Node.Select(cpnode); //ScriptObject.RunCmd("tools package/show axes", "Selection", ""); //ScriptObject.RunCmd("tools package/reset axes", "Selection", "") //RsTool.ShowAxes(Node.Selection() ); //Node.Select(lodnode); //ScriptObject.RunCmd("tools package/show axes", "Selection", ""); //ScriptObject.RunCmd("tools package/reset axes", "Selection", "") //RsTool.ShowAxes(Node.Selection() ); //default to PE compatible head indicator Activity.Run(curveshaper + "/disconnectHead"); //Node.ConnectTo(selectedObj_, "WldMatrix", Space.CurrentScene() + "/NURBSCurve, 1", "Matrix") //Widgets.DeactivateDefaultWidgets(); //Node.ExportConnector( // Space.CurrentScene() + "/NURBSCurve, 1/Editable shape", "Input Mesh", // "", 1, 1) //Node.ConnectTo(selectedObj_, "Mesh", name2_, "cpmesh") //Node.ConnectTo(name2_, "curvemesh", Space.CurrentScene() + "/NURBSCurve, 1", "Input Mesh") //Node.Value(name2_, "LODin") = 62 } NScript Object Package/jScript language~൱DU #^cstringlodnodeֱѝ>Hz_ٗstringcpnodegɼM44W}@O{(XFҦV>g'JNjn*pnWD Db@@T@2|=Bynj|?z@Hoۙ>?ֱѝ>Hz_ٗD/Project/Space 3D, 6/polycurve, 1J@#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@ v.NewCommand@,// Execute // Called to execute the command function Execute(params) { owner = System.ThisOwner(); // get vertex selection - have converter node earlier in the chain 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; } theMesh = System.CreateDO("Space 3D Package/Mesh Data"); theMesh = Node.Value(firstSel,"Mesh"); theVerts = System.CreateDO("Space 3D Package/Vertex Stream Data"); theVerts = theMesh.GetVertices(); thesel = System.CreateDO("Space 3D Package/Selection Data"); thesel = Node.Value(firstSel,"Selection"); numpoints = thesel.GetNumSelectedVertices(); if(numpoints<2) { System.Alert("Select at least 2 points or a polygon or an edges first."); return; } //System.Trace(numpoints); //number ctrl points = (numpoints - 2) * 3 + 4 numctrl = 2 + (numpoints - 2) * 3 + 2;// 2 start, 3 each middle, 2 end //System.Trace(numctrl); //set curve node number of elements Node.Value(owner + "/LODcontrol","LODin") = numctrl * 3; //set control node number control points Node.Value(owner + "/controlPointCone/Cone primitive","Radial segments") = numctrl; contpts = System.CreateDO("Space 3D Package/Point Array Data"); contpts.SetSize(numctrl); tmppoint1 = System.CreateDO("Math Package/Point Data"); tmppoint2 = System.CreateDO("Math Package/Point Data"); tmppoint3 = System.CreateDO("Math Package/Point Data"); var knotvals = new Array(); knotvals[0] = -1;//dummy value to start the array curvelength = 0; //copy vertex sel to index 0 then +3 and so on for(i=0;i<numpoints;i++) { vertind = thesel.GetSelectedVertexIndex(i); contpts.x(i*3) = -theVerts.x(vertind);//works dont know why? contpts.y(i*3) = theVerts.y(vertind); contpts.z(i*3) = theVerts.z(vertind); //calc approx relative curve length if(i>0) { tmppoint1.x = contpts.x((i-1)*3); tmppoint1.y = contpts.y((i-1)*3); tmppoint1.z = contpts.z((i-1)*3); tmppoint2.x = contpts.x(i*3); tmppoint2.y = contpts.y(i*3); tmppoint2.z = contpts.z(i*3); dx = tmppoint2.x - tmppoint1.x; dy = tmppoint2.y - tmppoint1.y; dz = tmppoint2.z - tmppoint1.z; dist = Math.sqrt(dx*dx + dy*dy + dz+dz); curvelength = curvelength + dist; //each point on the polygon corresponds to knot values knotvals[i] = curvelength; } } //calculate middle contpts //3 to end-1 step 3 index for(i=3;i<numctrl-3;i=i+3) { //do parallel to ind -3 and +3 1/4 distance in both directions tmppoint1.x = contpts.x(i-3); tmppoint1.y = contpts.y(i-3); tmppoint1.z = contpts.z(i-3); tmppoint2.x = contpts.x(i+3); tmppoint2.y = contpts.y(i+3); tmppoint2.z = contpts.z(i+3); dx = tmppoint2.x - tmppoint1.x; dy = tmppoint2.y - tmppoint1.y; dz = tmppoint2.z - tmppoint1.z; contpts.x(i-1) = contpts.x(i) - 0.125*dx;//using points at twice the distance so use 1/8 not 1/4 contpts.y(i-1) = contpts.y(i) - 0.125*dy; contpts.z(i-1) = contpts.z(i) - 0.125*dz; contpts.x(i+1) = contpts.x(i) + 0.125*dx; contpts.y(i+1) = contpts.y(i) + 0.125*dy; contpts.z(i+1) = contpts.z(i) + 0.125*dz; } //do 2 ends //point to index 2 and end-2 at 1/2 distance tmppoint1.x = contpts.x(0); tmppoint1.y = contpts.y(0); tmppoint1.z = contpts.z(0); tmppoint2.x = contpts.x(2); tmppoint2.y = contpts.y(2); tmppoint2.z = contpts.z(2); dx = tmppoint2.x - tmppoint1.x; dy = tmppoint2.y - tmppoint1.y; dz = tmppoint2.z - tmppoint1.z; contpts.x(1) = contpts.x(0) + 0.5*dx; contpts.y(1) = contpts.y(0) + 0.5*dy; contpts.z(1) = contpts.z(0) + 0.5*dz; tmppoint1.x = contpts.x(numctrl-3); tmppoint1.y = contpts.y(numctrl-3); tmppoint1.z = contpts.z(numctrl-3); tmppoint2.x = contpts.x(numctrl-1); tmppoint2.y = contpts.y(numctrl-1); tmppoint2.z = contpts.z(numctrl-1); dx = tmppoint2.x - tmppoint1.x; dy = tmppoint2.y - tmppoint1.y; dz = tmppoint2.z - tmppoint1.z; contpts.x(numctrl-2) = contpts.x(numctrl-3) + 0.5*dx; contpts.y(numctrl-2) = contpts.y(numctrl-3) + 0.5*dy; contpts.z(numctrl-2) = contpts.z(numctrl-3) + 0.5*dz; //save the cont points //calc knots numknots = numctrl + 4;//add order which is degree 3 + 1 myknots = System.CreateDO("Common Data Package/Number Array Data"); myknots.Clear(); //start knots myknots.Add(0); myknots.Add(0); myknots.Add(0); myknots.Add(0); //each original middle polygon point has 3 knots for(i=1;i<numpoints-1;i++) { val = knotvals[i]/curvelength; myknots.Add(val); myknots.Add(val); myknots.Add(val); } //end knots myknots.Add(1); myknots.Add(1); myknots.Add(1); myknots.Add(1); finalknotcnt = myknots.GetSize(); System.Trace(finalknotcnt); theMatrix = System.CreateDO("Space 3D Package/Mesh Data"); theMatrix = Node.Value(firstSel,"WldMatrix"); //copy templates to mesh nodes Node.Value(owner + "/controlPointMesh/Editable shape","Input Mesh") = Node.Value(owner + "/controlPointCone","Mesh"); Node.Value(owner + "/LODMesh/Editable shape","Input Mesh") = Node.Value(owner + "/LODCone","Mesh"); params.ConValue("contpoints") = contpts; params.ConValue("knots") = myknots; params.ConValue("thematrix") = theMatrix; Activity.Run(owner + "/donurbs"); } NScript Object Package/jScript language~൱Dr#^cDSpace 3D Package/Point Array Datacontpoints (F)ݟ{MgdapIoHLCommon Data Package/Number Array Data knots GnKJO!i\t":HHO>Math Package/Matrix Float Datathematrix `^02eE{|@ tIu4W}@O{(XFҦV>g'JNjn*pn@@ Db@@X@2|=Bynj|?z@Hoۙ>?":HHOGnKJO!i\tzMNw?MNw?MNw?]EN?]EN?]EN?????J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?MgdapIoH(F)ݟ{~ ɿw @8Т= ?'?2? t @?06?G'@fz>@O/6?ɿ&h?u .߿F-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UO tIu`^02eE{|@B1?1?1?)AuHP?D{31?MT^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') = 'vertex'; MeshModifiers.ActivatePointEditWidget('','','Default'); } NScript Object Package/jScript languageP 0string PEselectionModeb/pEj F4W}@O{b/pEj F face(XFҦV>g'JNjn*pnCb@@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) { MeshModifiers.ConvertSelection('',''); } NScript Object Package/jScript language~൱D@ j#^c4W}@O{(XFҦV>g'JNjn*pnACb@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) { 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}DCb@@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~൱D@ j#^c4W}@O{(XFҦV>g'JNjn*pnDCb@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@HoR/$ķKniaW&  loadCurveButton'0#ԪC'X/9}]8teO?s% sH?DC%IlfāA>ˁw%/ru|GF0(XFҦVLE2Data, 1"-1OSM n".;]kI 忞@"8+ 4W}@O{$n_<&KES Qo(K ]p dQm6l3Ll/V^N="QEj%:$ܿORE bi*S]?G[~x;Sr)B8DNOQsP'ѭiDsL[w4E*h>ǑJ]@<+fyOA7XCTl@fC.^&GZh0OY~ C %?Aυ D)7t][D+Iv(8{Nm(!ko6qFO b=[#YStif[15h (/U T2RϼO#Od7c,RR7dJ⓪s=O!V%nJ(Z3{=4ԑ9r=eK¶8@= ֓# f0Pl!v)(ot=LJd`Gti/'pasAԝ!8Gb'UZP<%Ϸ\ñyfF11vB7MA60tn#ۼ=0oF{hEa3S0J^D)(:/HXRdgg;9N3:Wl Oc~<ӆ=Fĩ033rzV]G/TqDAtS9^`fmet4,)TSxaz/w4N9DèLS%֡쇁UpAƣ#c0PI5gIvGltFpJ` }zV&&.ꭋ}е@r gJy'|f:C# 䲆{BFrwST>hںo>/IDRƣoQ:1˜UzíڝJR": [l=-6YNEBu@?&PkUJoy 3<'<4+=r[AʾGq|>G W6 5քH(D " }Hdsui"`ݣRQC)h>Ua9}44߿VSocۿ_?܂dKu=J&points2curveScript K.;]kI 忞@"H8]pA@qxV$h&!3#`L4W}@O{$L׊;Jf|ڢR`M偢jD%~`8RXWAG><ĠF姁J]T>(XFҦV"-1OSM n" G?ŋ{MwzM/P]%TBh!#{MwzM/P]%"偢jD%~`8(XFҦV>g'JNjn*pFDCk@ a@@Df?׊;Jf|ڢWAG`^02eE{|@B???? G?ŋ~0iV@KU>x'ae|0 }}{MwzM/P]%Z`Ez]UO GFʠN=8He|1 }}<ĠF姁J]Z`Ez]UO GFʠN=(8e|1 }}WAGZ`Ez]UO GFʠN=HXe|1 }}偢jD%~`8Z`Ez]UO GFʠN=Xhe|1 }}׊;Jf|ڢZ`Ez]UON\q+nN-K^F(e|A}}@y@{MwzM/P]%Z`Ez]UOh@ GFʠN=hxe|,}} version 1.0Z`Ez]UO}}܂dKu="controlPointCone .;]kI 忞@"pHU ۯHV rH4W}@O{$ G?ŋHtveDCE`"IWJZH 5 `H׊;Jf|ڢZ( 5 `HH偢jD%~`8ZWAGPp<ĠF姁J]\p~$1&KߊPV$r-V?XM%6 (XFҦV"sS $hKnPSVm(7 -1OSM n" -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pFCAb@ d@A?׊;Jf|ڢWAG G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0{`D@}㒱TU Cone primitive HU tveDCE`"IWJPBHU *tL V0*PpHU HU 1)ps6DU9rLpHU U @,G8R(pHU HU H=1Gn@`U)pHU U DMN{ g;pHU HU [T}lAuܿxjpHU U BƆK``;a!pHU HU 4W}@O{$(XFҦV"-1OSM n" *tL V0*P[T}lAuܿxj(XFҦV>g'JNjn*pFCNCb@ b@?@,G8R(BAH=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 List0ۯ.;]kI 忞@"8Kۯ4W}@O{$0ܯ-V?XM%r(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%,Material List Manager-V?XM%P0ܯ&zB}J?p4W}@O{$xF=ө6I)])p-V?XM%&zB}J?=ө6I)])܂dKu=IMaterial 0J.;]kI 忞@"@QXV 8K4W}@O{$KgYأC۲+?xFgYأC۲+?b=h0CRfM0Material Flavor ManagerNgYأC۲+?PK@O!EJGWMpNP6~qK;2t&pN@Q4W}@O{$Q?.9>DGl{?pN!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀DT Solid W.F_P#T.F_P#Material Output material __W8E#(QpXn%⟀A}aJpWX>]zJ4 pWpYJ.HE /*gpWXV 8VnZN:W ppWV ll-#Ez k^pWXV K#uiL$pWV ,L?D}pWXV 4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????,L?D}.F_P#K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabledll-#Ez k^8VnZN:W p?u8DMhbEV OwnerNameV 6Vg'JNjn*pFBCX@1@?qU F3f4V 2Object Render Attributes(V S $hKnPSVmPsV 8Ns2]p(V (V ^mګA~Ksi[p(V V (lrsGrp(V (V \Eh{5p(V V "PbEGDߗrp(V (V F?N dp(V Hl]*qBCxp(V l\J:I%7up(V niA޲1rIK>Xp(V n,ot"AaYp(V o^RI8ÿRp(V oçwH5#Vp(V r4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"to[nfFp(V HuzgGFohN)p(V uvhD zʔp(V W0@zdW0@zd$VersionVersion$wȅ8vDCxZp(V xF+2MGp(V xI2GWM:).$p(V ymBޖw pp(V zfB #^p(V z|$}mK;)p (V |rg@*oHp (V |!eLZE^Np (V }pSLDMF:ɅDI2GWM:).$ zgGFohN)vhD zʔS $hKnPSVm]*qBCx?rg@*oHçwH5#V 4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\Eh{5-n,Njlpg????\J:I%7u-n,Njlpgd?==?pSLDMF:Ʌ\/Project/mycurve/nurbsCurves/controlPointCone(XFҦV>g'JNjn*pFCg'JNjn*pFzCCb@q@?W0@zdo[nfFmBޖw p,ot"AaY -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!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X ܂dKu=LODCone.;]kI 忞@" V ؄ 4W}@O{$ G?ŋ8tveDCE`"IWJZ : `H׊;Jf|ڢZ 9 `H8偢jD%~`8ZWAGp 8<ĠF姁J]\ $1&KߊPV$8-V?XM%; (XFҦV"8S $hKnPSVm < H=1Gn@`U)V -1OSM n" -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pFC]Cb@ f@?׊;Jf|ڢWAG G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0{`D@}㒱̣V Cone primitive V tveDCE`"IWJPB8@V *tL V0*PpV V 1)ps6DU9rLpV @V @,G8R(pV V H=1Gn@`U)pV @V DMN{ g;pV V [T}lAuܿxjpV @V BƆK``;a!pV V 4W}@O{$(XFҦV"-1OSM n" *tL V0*P[T}lAuܿxj(XFҦV>g'JNjn*pFCDCb@ d@?@,G8R(BA-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 List.;]kI 忞@"`\ 4W}@O{$-V?XM%8(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%l,Material List Manager`-V?XM%P&zB}J?p``4W}@O{$=ө6I)])p`-V?XM%=ө6I)])&zB}J?܂dKu=,Material 0[ .;]kI 忞@"a l \ 4W}@O{$\ gYأC۲+?gYأC۲+?b=h0CRf^ 0Material Flavor Manager_ gYأC۲+?P\ ` !EJGWMp_ ` 6~qK;2t&p_ a 4W}@O{$a ?.9>DGl{?p_ !EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀Dd  Solid Hh .F_P#T.F_P#Material Output material __W8E#(a  i n%⟀A}aJpHh i >]zJ4 pHh  j J.HE /*gpHh j 8VnZN:W ppHh  k ll-#Ez k^pHh k K#uiL$pHh  l ,L?D}pHh l 4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????.F_P#,L?D}ll-#Ez k^K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabled8VnZN:W p?u8DMhbEd OwnerNameX 6Vg'JNjn*pFBCX@1@?qU F3fĈ 2Object Render Attributes S $hKnPSVmP88 8Ns2]p  ^mګA~Ksi[p 8 (lrsGrp  \Eh{5p 8 "PbEGDߗrp  F?N dp 8 ]*qBCxp  \J:I%7up  iA޲1rIK>Xp  ,ot"AaYp  ^RI8ÿRp  çwH5#Vp 4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"Po[nfFp zgGFohN)p PvhD zʔp W0@zdW0@zd$VersionVersion$ȅ8vDCxZp F+2MGp I2GWM:).$p mBޖw pp fB #^p |$}mK;)p  rg@*oHp  !eLZE^Np  pSLDMF:ɅDI2GWM:).$ zgGFohN)vhD zʔS $hKnPSVm]*qBCx?rg@*oHçwH5#V 4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\Eh{5-n,Njlpg????\J:I%7u-n,Njlpg??u??pSLDMF:ɅL/Project/Space 3D/nurbsCurves/LODCone(XFҦV>g'JNjn*pFC(Bk@ `@?F?N d ȅ8vDCxZ 8Ns2]F+2MG "PbEGDߗr ^mګA~Ksi[(lrsGr?J@#QL>g'JNjn*pFzCCb@q@?W0@zdo[nfFmBޖw p,ot"AaY -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!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X ܂dKu=Z"controlPointMesh\.;]kI 忞@"Wb']k`8]4W}@O{$ G?ŋ8^tveDCE`"IWJZ8? `H^׊;Jf|ڢZe> `H8_偢jD%~`8Z_WAG`V8`<ĠF姁J]\U$1&KߊPV$8a-V?XM%@ (XFҦV"8bS $hKnPSVmnV A bL[> IkF:ǭJR-1OSM n"eȅ8vDCxZ7 -V?XM%S $hKnPSVm偢jD%~`8L[> IkF:ǭJ(XFҦV>g'JNjn*pF@b@ h@?ȅ8vDCxZ ׊;Jf|ڢWAG G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0܂dKu=`Material Lista.;]kI 忞@"^cb4W}@O{$c-V?XM%8a(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%\,Material List Manager]-V?XM%Pc^&zB}J?p]^4W}@O{$_=ө6I)])p]-V?XM%=ө6I)])&zB}J?܂dKu=dbMaterial 0Xc.;]kI 忞@"ic4W}@O{$XdgYأC۲+?_gYأC۲+?b=h0CRflg0Material Flavor Manager`hgYأC۲+?PXdh!EJGWMp`h`i6~qK;2t&p`hi4W}@O{$`j?.9>DGl{?p`h!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀Dm Solid h.F_P#T.F_P#Material Output material __W8E#(`j@n%⟀A}aJph>]zJ4 ph@J.HE /*gph8VnZN:W pph@ll-#Ez k^phK#uiL$ph@,L?D}ph4W}@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% ID$Editable shape8%VIQGіF͡Tp%%tveDCE`"IWJPB8^8&/nkUCEHLjp%'4W}@O{$(XFҦV"/nkUCEHLj(XFҦV>g'JNjn*pFACb@@P@?VIQGіF͡T>W5f@(䐈 ٸ*ćIC7 E<&ݿ;hĿŗ%7e<&]4''%Z <&]W0I% j ><&]>/t>tA?cҾ ><&]?>x?}.>x? E><&]?4?tA?>2jj?<&]>>Ew?>>,m?<&]x?C?%?e?<&]?oF?7?o>W0@<&ݿ@ h* 6H?BJ,           8{EE%D7[,CC C C  CCCCCC" C!"%#!C$%(&$C'(+)'C*+.,*C-.1/-C01420C34753C67:86C9:=;9C<=@><C?@BA?CLjUb)R,        ! "!#"$#%$&%'&(')(*)+*,+-,-y'HN,89Ig"D@?@???.z?Uh=?R?]t??n?5?ܙb?.h??b?=)?4^p?F]??EW?)?i7z?]tQ??K? ?i7z?.??.(?->4^p?"??F?Q>ܙb?E??]t?V/>R? ??t?>@???]>V/>-?.>?F>Q>$f?^t>?t>->̡?.>?>>?>?E>>Ħ?袋>?> ?Ħ?0h>?\tQ>)??.:>?">=)?̡? >?0=5?$f?.=?袋=Uh=?-?.:=?.<??@?ZpߘHXO.d?">>[?>">m= I< ?:@?> >Ȣ?b,?">Jؽ>O?!>p>,b?!>p,b?!>JؽO?!>Ȣb,?">:@> >>[>">d">>[">:@ >Ȣb,">JؽO!>p,b!>p>,b!>Jؽ>O!>Ȣ?b,">:@? >>[?">tveDCE`"IWJu8DMhbE|\OwnerNamep]6Vg'JNjn*pFBQCX@1@?qU F3fa2Object Render AttributesbS $hKnPSVmP8bPc8Ns2]pbc^mګA~Ksi[pbPd(lrsGrpbd\Eh{5pbPf"PbEGDߗrpbfF?N dpbPg]*qBCxpbg\J:I%7upbiiA޲1rIK>Xpbi,ot"AaYpbj^RI8ÿRpbjçwH5#Vpbk4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"4o[nfFpb5zgGFohN)pb6vhD zʔpbW0@zdW0@zd$VersionVersion$7ȅ8vDCxZpb@8F+2MGpb8I2GWM:).$pb@9mBޖw ppb8:fB #^pb:|$}mK;)p b8;rg@*oHp b;!eLZE^Np b8=pSLDMF:ɅDI2GWM:).$ zgGFohN)vhD zʔS $hKnPSVm]*qBCx?rg@*oHçwH5#V 4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\Eh{5-n,Njlpg????\J:I%7u-n,Njlpgl?x?<?pSLDMF:Ʌ/Project/Space 3D/install curve tools/points2curveScript/controlPointMesh(XFҦV>g'JNjn*pFCuCk@ b@?F?N d ȅ8vDCxZ 8Ns2]F+2MG "PbEGDߗr ^mګA~Ksi[?(lrsGr@J@#QL>g'JNjn*pFzCCb@q@?W0@zdo[nfFmBޖw p,ot"AaY -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!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X "L2OƲ@5N] Pivot^L[> IkF:ǭJPBb(_<ĠF姁J]pD^(`_WAGp^(`(`׊;Jf|ڢpB`4W}@O{$(XFҦV"L[> IkF:ǭJ(XFҦV>g'JNjn*pFBCX@1@?׊;Jf|ڢWAG<ĠF姁J]`^02eE{|@B???3?܂dKu=LODMesh.;]kI 忞@"VW h_ K P#p4W}@O{$ G?ŋptveDCE`"IWJZE `H׊;Jf|ڢZS"C `Hp偢jD%~`8ZWAGxp<ĠF姁J]\$1&KߊPV$p-V?XM%F (XFҦV"pS $hKnPSVmP|G L[> IkF:ǭJR-1OSM n"ȅ8vDCxZ(Q  -V?XM%S $hKnPSVm偢jD%~`8L[> IkF:ǭJ(XFҦV>g'JNjn*pFCDb@ h@?ȅ8vDCxZ ׊;Jf|ڢWAG G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0܂dKu=,UMaterial List V.;]kI 忞@"^@cV4W}@O{$ W-V?XM%p(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G% [,Material List Manager]-V?XM%P W]&zB}J?p]^4W}@O{$^=ө6I)])p]-V?XM%&zB}J?=ө6I)])܂dKu=aMaterial 0b.;]kI 忞@"h$0@c4W}@O{$cgYأC۲+?^gYأC۲+?b=h0CRf 0Material Flavor Manager!gYأC۲+?Pch#!EJGWMp!#6~qK;2t&p!h$4W}@O{$$?.9>DGl{?p!!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀D( Solid *.F_P#T.F_P#Material Output material __W8E#($+n%⟀A}aJp*,>]zJ4 p*,J.HE /*gp*-8VnZN:W pp*.ll-#Ez k^p*/K#uiL$p*/,L?D}p*04W}@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% ItU Editable shapehV VIQGіF͡TpV V tveDCE`"IWJPBphW /nkUCEHLjpV W 4W}@O{$(XFҦV"/nkUCEHLj(XFҦV>g'JNjn*pFBCX@1@?VIQGіF͡T>W5f@(䐈ٸ*ćIC7@ h* 6H?BJ 8{EE%D7[ LjUb)R y'HN 89Ig" ZpߘHXOtveDCE`"IWJu8DMhbE\ OwnerName^ 6Vg'JNjn*pFBQCX@1@?qU F3fTc 2Object Render AttributesHd S $hKnPSVmPpd 8Ns2]pHd He ^mګA~Ksi[pHd e (lrsGrpHd Hf \Eh{5pHd f "PbEGDߗrpHd Hg F?N dpHd h ]*qBCxpHd Hi \J:I%7upHd i iA޲1rIK>XpHd H ,ot"AaYpHd I ^RI8ÿRpHd I çwH5#VpHd K 4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"hM o[nfFpHd M zgGFohN)pHd hN vhD zʔpHd W0@zdW0@zd$VersionVersion$(Q ȅ8vDCxZpHd Q F+2MGpHd (R I2GWM:).$pHd R mBޖw ppHd S fB #^pHd T |$}mK;)p Hd T rg@*oHp Hd U !eLZE^Np Hd U pSLDMF:ɅDI2GWM:).$ zgGFohN)vhD zʔS $hKnPSVm]*qBCx?rg@*oHçwH5#V 4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\Eh{5-n,Njlpg=?<?\J:I%7u-n,Njlpg?u?{??pSLDMF:Ʌ/Project/Space 3D/install curve tools/points2curveScript/LODMesh(XFҦV>g'JNjn*pFCBk@ b@?F?N d ȅ8vDCxZ 8Ns2]F+2MG "PbEGDߗr ^mګA~Ksi[?(lrsGr@J@#QL>g'JNjn*pFzCCb@q@?W0@zdo[nfFmBޖw p,ot"AaY -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!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X "L2OƲ@5N\# PivotP#L[> IkF:ǭJPB#<ĠF姁J]pDP##P#WAGpP###׊;Jf|ڢpBP#4W}@O{$(XFҦV"L[> IkF:ǭJ(XFҦV>g'JNjn*pFBCX@1@?׊;Jf|ڢWAG<ĠF姁J]`^02eE{|@B???&?47m2O =Transform><ĠF姁J]pD??>WAGp??偢jD%~`8PB`M?׊;Jf|ڢPBL_A4W}@O{$(XFҦV"-1OSM n"偢jD%~`8(XFҦV>g'JNjn*pFX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0ͤ*EgbĬ>LODcontrol2AEHM'ceZU@䑧r%@4W}@O{$(XFҦV#.;]kI 忞@"-1OSM n#B{MwzM/P]%pDhChCizDFUPBs2AEHM'>g'JNjn*pFBC`@0@?ceZU@䑧r[җJs@ NewObject// OnComputeOutputs // Called to compute values of all output connectors function OnComputeOutputs(params) { var LODin = params.ConValue('LODin'); // TODO: put your computation here params.ConValue('LODout') = LODin; } NScript Object Package/jScript languageint LODin{MwzM/P]%intLODoutizDFU{MwzM/P]%"4W}@O{(XFҦV>g'JNjn*pF@AzCb@H@?izDFU".;]kI 忞@-1OSM n 럆L<_їCDefault GFʠN=P|1 }}{MwzM/P]%Z`Ez]UO1釥GP>aP|0 }}{MwzM/P]%Z`Ez]UO GFʠN=P |1 }}izDFUZ`Ez]UO1釥GP>aP |0 }}izDFUZ`Ez]UON\q+nN-K^ 8|A}}@y@{MwzM/P]%Z`Ez]UOh@}}48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?MN(K9/7"ceZU@䑧r[җJs@ .NewCommand,/// \original author Rob Bateman //http://nccastaff.bournemouth.ac.uk/jmacey/RobTheBloke/www/opengl_programming.html /// \date 9-feb-2005 // adapted for truespace // Clinton Reese // Dec 11 2010 // var g_Knots = new Array(); //g_Knots[0] = 0.0; //g_Knots[1] = 0.0; //g_Knots[2] = 0.0; //g_Knots[3] = 0.0; //g_Knots[4] = 1.0; //g_Knots[5] = 2.0; //g_Knots[6] = 3.0; //g_Knots[7] = 4.0; //g_Knots[8] = 4.0; //g_Knots[9] = 4.0; //g_Knots[10] = 4.0; // //------------------------------------------------------------ CoxDeBoor() // function CoxDeBoor(u,i,k,Knots) { if(k==1) { if( Knots[i] <= u && u <= Knots[i+1] ) { return 1.0; } return 0.0; } var Den1 = Knots[i+k-1] - Knots[i]; var Den2 = Knots[i+k] - Knots[i+1]; var Eq1=0,Eq2=0; if(Den1>0) { Eq1 = ((u-Knots[i]) / Den1) * CoxDeBoor(u,i,k-1,Knots); } if(Den2>0) { Eq2 = (Knots[i+k]-u) / Den2 * CoxDeBoor(u,i+1,k-1,Knots); } return Eq1+Eq2; } //------------------------------------------------------------ GetOutpoint() // function GetOutpoint(t,OutPoint) { // sum the effect of all CV's on the curve at this point to // get the evaluated curve point // for(var i=0;i<g_num_cvs;i++) { // calculate the effect of this point on the curve var Val = CoxDeBoor(t,i,g_order,g_Knots); if(Val>0.001) { // sum effect of CV on this part of the curve //OutPoint[0] += Val * g_Points[i][0]; //OutPoint[1] += Val * g_Points[i][1]; //OutPoint[2] += Val * g_Points[i][2]; OutPoint[0] += Val * g_Points.x(i); OutPoint[1] += Val * g_Points.y(i); OutPoint[2] += Val * g_Points.z(i); } } } // Execute // Called to execute the command function Execute(params) { var lLOD = params.ConValue('lLOD'); var fileknots = params.ConValue('fileknots'); var filepoints = params.ConValue('filepoints'); var curvename = params.ConValue('curvename'); System.Trace("dofilenurbs"); LOD = lLOD; //float g_Points[7][3] = { //{ 10,10,0 }, //{ 5,10,2 }, //{ -5,5,0 }, //{-10,5,-2}, //{-4,10,0}, //{-4,5,2}, //{-8,1,0} //}; //g_Knots[0] = 0.0; //g_Knots[1] = 0.0; //g_Knots[2] = 0.0; //g_Knots[3] = 0.0; //g_Knots[4] = 1.0; //g_Knots[5] = 1.0; //g_Knots[6] = 1.0; //g_Knots[7] = 2.0; //g_Knots[8] = 2.0; //g_Knots[9] = 2.0; //g_Knots[10] = 2.0; for(i=0;i<fileknots.GetSize();i++) { g_Knots[i] = fileknots.GetAt(i); } g_Points = System.CreateDO("Space 3D Package/Point Array Data"); g_Points.SetSize(filepoints.GetSize()); for(i=0;i<filepoints.GetSize();i++) { g_Points.x(i) = -filepoints.x(i);//adjust to mirror g_Points.y(i) = filepoints.y(i); g_Points.z(i) = filepoints.z(i); } //g_Points.x(0) = 10; g_Points.y(0) = 10; g_Points.z(0) = 0; //g_Points.x(1) = 5; g_Points.y(1) = 10; g_Points.z(1) = 2; //g_Points.x(2) = -5; g_Points.y(2) = 5; g_Points.z(2) = 0; //g_Points.x(3) = -10; g_Points.y(3) = 5; g_Points.z(3) = 2; //g_Points.x(4) = -4; g_Points.y(4) = 10; g_Points.z(4) = 0; //g_Points.x(5) = -4; g_Points.y(5) = 5; g_Points.z(5) = 2; //g_Points.x(6) = -8; g_Points.y(6) = 1; g_Points.z(6) = 0; g_num_cvs=filepoints.GetSize(); g_degree=3; g_order=g_degree+1; g_num_knots=g_num_cvs+g_order; owner = System.ThisOwner(); // //display the control points curve // cpMesh = System.CreateDO("Space 3D Package/Mesh Data"); cpMesh = Node.Value(owner + "/controlPointMesh","Mesh"); cpVert = System.CreateDO("Space 3D Package/Vertex Stream Data"); cpVert = cpMesh.GetVertices(); System.Trace(cpVert.GetNumVertices()); for(i=0;i<g_num_cvs;i++) { cpVert.x(i) = g_Points.x(i); cpVert.y(i) = g_Points.y(i); cpVert.z(i) = g_Points.z(i); } cpMesh.AttachVerticesStream(cpVert); faceEdgesCP = System.CreateDO('Space 3D Package/Face Edges Stream Data'); faceEdgesCP = cpMesh.GetTrianglesStreamByName("Face Edges Stream Data"); numtri = faceEdgesCP.GetNumTriangleEdges(); //make all edges invisible for(i=0;i<numtri;i++) { faceEdgesCP.edges(i) = 0; } noncontroledgetri = 2; for(i=0;i<numtri;i++) { testodd = i % 2; if(testodd==0) faceEdgesCP.edges(i) = 1; //else // faceEdgesCP.edges(i) = 0; if(i==numtri-2) faceEdgesCP.edges(i) = 0; if(i==noncontroledgetri) { faceEdgesCP.edges(i) = 0; noncontroledgetri = noncontroledgetri + 6; } } cpMesh.AttachTrianglesStream(faceEdgesCP); Node.Value(owner + "/controlPointMesh/Editable shape","Input Mesh") = cpMesh; // // do the nurbs curve // ncMesh = System.CreateDO("Space 3D Package/Mesh Data"); ncMesh = Node.Value(owner + "/LODMesh","Mesh"); ncVert = System.CreateDO("Space 3D Package/Vertex Stream Data"); ncVert = ncMesh.GetVertices(); faceEdges = System.CreateDO('Space 3D Package/Face Edges Stream Data'); faceEdges = ncMesh.GetTrianglesStreamByName("Face Edges Stream Data"); numtri = faceEdges.GetNumTriangleEdges(); for(i=0;i<numtri;i++) { testodd = i % 2; if(testodd==0) faceEdges.edges(i) = 1; else faceEdges.edges(i) = 0; if(i==numtri-2) faceEdges.edges(i) = 0; } ncMesh.AttachTrianglesStream(faceEdges); var t; var Outpoint = new Array(); for(var i=0;i<LOD;i++) { t = g_Knots[g_num_knots-1] * i / (LOD-1); if(i==LOD-1) t-=0.001;//???why??? Outpoint[0] = 0; Outpoint[1] = 0; Outpoint[2] = 0; GetOutpoint(t,Outpoint); //glVertex3fv(Outpoint); ncVert.x(i) = Outpoint[0]; ncVert.y(i) = Outpoint[1]; ncVert.z(i) = Outpoint[2]; } ncMesh.AttachVerticesStream(ncVert); Node.Value(owner + "/LODMesh/Editable shape","Input Mesh") = ncMesh; } NScript Object Package/jScript language(!Dint lLODMN(K9/7LCommon Data Package/Number Array Datafileknots GnKJO!i\t FWly~DSpace 3D Package/Point Array Datafilepoints (F)ݟ{HHKHa,4W}@O{(XFҦV>g'JNjn*pnCDb@@X@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?HHKHa,-1OSM n 럆L<_їaControlOˁ CRih[ e}}8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0 e}}:Activity.Stop('%THIS_NAME%') StopZ`Ez]UO GFʠN=00@ 4 }}LODtT1GCh*kZ`Ez]UO1釥GP>a00`@ 0 }}MN(K9/7Z`Ez]UO GFʠN=@`P 1 }} FWly~Z`Ez]UO GFʠN=P`` 1 }}HHKHa,Z`Ez]UO GFʠN=``p 1 }}z@HoZ`Ez]UO}}MT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho FWly~48@J VJ0#>BjDS~N$v)֒DwsJ.pBXP2|=Bynj@z@Ho 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ 4NewCommandv//copyLODnode //Jan 2011 //copy the curve mesh to the scene // // Execute // Called to execute the command function Execute(params) { var curvename = params.ConValue('curvename'); var matrix = params.ConValue('matrix'); // TODO: put your action code here owner = System.ThisOwner(); scene = Space.CurrentScene(); newnode = Node.Copy(owner + "/LODMesh",scene); Node.Value(newnode,"Matrix") = matrix; matrix.LoadIdentity(); Node.Value(newnode,"OwnerMatrix") = matrix; params.ConValue("lodnode") = Node.SafeRename(newnode,curvename); } NScript Object Package/jScript language~൱D#^cstringcurvenameiO>VJ0#>Bj>Math Package/Matrix Float Datamatrix `^02eE{|@S~N$v)֒stringlodnodewsJ.p4W}@O{(XFҦV>g'JNjn*pnC@Db@@X@2|=Bynj|?z@Hoۙ>?S~N$v)֒J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?wsJ.pD/Project/Space 3D, 6/polycurve, 2-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOiO>VJ0#>BjpolycurveMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J VJ0#>BjDS~N$v)֒D@_,A~:G}BhY2|=Bynj0[@z@Ho 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommandZ//copyCPnode //Jan 2011 // copy the control point mesh to the scene // // Execute // Called to execute the command function Execute(params) { var curvename = params.ConValue('curvename'); var matrix = params.ConValue('matrix'); owner = System.ThisOwner(); scene = Space.CurrentScene(); newnode = Node.Copy(owner + "/controlPointMesh",scene); Node.Value(newnode,"Matrix") = matrix; matrix.LoadIdentity(); Node.Value(newnode,"OwnerMatrix") = matrix; params.ConValue("cpnode") = Node.SafeRename(newnode,"CPM_" + curvename); } NScript Object Package/jScript language~൱D h#^cstringcurvenameiO>VJ0#>Bj>Math Package/Matrix Float Datamatrix `^02eE{|@S~N$v)֒stringcpnode_,A~:G}4W}@O{(XFҦV>g'JNjn*pn'D&Db@@X@2|=Bynj|?z@Hoۙ>?S~N$v)֒J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?_,A~:G}L/Project/Space 3D, 6/CPM_polycurve, 1-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOiO>VJ0#>BjpolycurveMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J Hz_ٗDhYgɼM4DZ2|=BynjH0[z@Ho 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?gɼM4L/Project/Space 3D, 6/CPM_polycurve, 1ceZU@䑧r[җJs@ NewCommand//copyCurveShaper //Jan 2011 //copy the curve shaper to the scene and hook it up // the curve shaper is a node that is used to translate the control points mesh to a nurbs curve representation // // Execute // Called to execute the command function Execute(params) { var lodnode = params.ConValue('lodnode'); var cpnode = params.ConValue('cpnode'); owner = System.ThisOwner(); scene = Space.CurrentScene(); //copy curve shaper to the scene curveshaper = Node.Copy(owner + "/curveShaper",scene); //export mesh input from lod curve Node.ExportConnector(lodnode + "/Editable shape", "Input Mesh", "", 1, 1); //connect cp wldmatrix to lod matrix Node.ConnectTo(cpnode, "WldMatrix", lodnode, "Matrix"); //connect cp mesh to curve shaper cpmesh input Node.ConnectTo(cpnode, "Mesh", curveshaper, "cpmesh"); //connect curve shaper curvemesh to lod mesh new mesh input connector Node.ConnectTo(curveshaper, "curvemesh", lodnode, "Input Mesh"); //set curve resolution //Node.Value(curveshaper, "LODin") = Node.Value(owner + "/LODcontrol","LODin");uncomment later //connect cp wldmatrix to curve shaper cpMatrix input Node.ConnectTo(cpnode, "WldMatrix", curveshaper, "cpMatrix"); //move pivots to curve and control curve to their centers for convenience Node.Select(cpnode); ScriptObject.RunCmd("tools package/show axes", "Selection", ""); //ScriptObject.RunCmd("tools package/normalize location", "Selection", ""); ScriptObject.RunCmd("tools package/reset axes", "Selection", "") RsTool.ShowAxes(Node.Selection() ); Node.Select(lodnode); ScriptObject.RunCmd("tools package/show axes", "Selection", ""); //ScriptObject.RunCmd("tools package/normalize location", "Selection", ""); ScriptObject.RunCmd("tools package/reset axes", "Selection", "") RsTool.ShowAxes(Node.Selection() ); //default to PE compatible head indicator //if the head indicator is active it will interfere with PE operations Activity.Run(curveshaper + "/disconnectHead"); } NScript Object Package/jScript language~൱D#^cstringlodnodeֱѝ>Hz_ٗstringcpnodegɼM44W}@O{(XFҦV>g'JNjn*pnWD Db@@T@2|=Bynj|?z@Hoۙ>?ֱѝ>Hz_ٗD/Project/Space 3D, 6/polycurve, 2J@#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*//calcNURBS //Jan 2011 //calculate the curve control points and knots //creates data for smooth curves(tangent handles) // // Execute // Called to execute the command function Execute(params) { owner = System.ThisOwner(); // get vertex selection - have converter node earlier in the chain firstSel = Node.FirstSelected(); theMesh = System.CreateDO("Space 3D Package/Mesh Data"); theMesh = Node.Value(firstSel,"Mesh"); theVerts = System.CreateDO("Space 3D Package/Vertex Stream Data"); theVerts = theMesh.GetVertices(); cfs = Node.AccessNearFnSet("curveFunctionSet"); numpoints = cfs.vertexList.GetSize(); if(numpoints<2) { System.Alert("Select at least 2 points first."); return; } numctrl = 2 + (numpoints - 2) * 3 + 2;// 2 at start, 3 for each middle, 2 at end //set curve node number of elements - cone segments for the curve Node.Value(owner + "/LODcontrol","LODin") = numctrl * 3; //set control node number control points - cone segments for the control point curve Node.Value(owner + "/controlPointCone/Cone primitive","Radial segments") = numctrl; contpts = System.CreateDO("Space 3D Package/Point Array Data"); contpts.SetSize(numctrl); tmppoint1 = System.CreateDO("Math Package/Point Data"); tmppoint2 = System.CreateDO("Math Package/Point Data"); tmppoint3 = System.CreateDO("Math Package/Point Data"); var knotvals = new Array(); knotvals[0] = -1;//dummy value to start the array curvelength = 0; //copy vertex sel to index 0 then +3 and so on for(i=0;i<numpoints;i++) { vertind = cfs.vertexList.GetAt(i); contpts.x(i*3) = -theVerts.x(vertind);//works dont know why negative? contpts.y(i*3) = theVerts.y(vertind); contpts.z(i*3) = theVerts.z(vertind); //calc approximate relative curve length if(i>0) { tmppoint1.x = contpts.x((i-1)*3); tmppoint1.y = contpts.y((i-1)*3); tmppoint1.z = contpts.z((i-1)*3); tmppoint2.x = contpts.x(i*3); tmppoint2.y = contpts.y(i*3); tmppoint2.z = contpts.z(i*3); dx = tmppoint2.x - tmppoint1.x; dy = tmppoint2.y - tmppoint1.y; dz = tmppoint2.z - tmppoint1.z; //segment length dist = Math.sqrt(dx*dx + dy*dy + dz+dz); //total curve length curvelength = curvelength + dist; //each point on the polygon corresponds to knot values knotvals[i] = curvelength; } } //calculate middle control points //3 to end-1 step 3 index - note 2 points for top and bottom of the cone mesh -1 => -3 for(i=3;i<numctrl-3;i=i+3) { //do parallel to control points at -3 and +3 1/4 distance in both directions tmppoint1.x = contpts.x(i-3); tmppoint1.y = contpts.y(i-3); tmppoint1.z = contpts.z(i-3); tmppoint2.x = contpts.x(i+3); tmppoint2.y = contpts.y(i+3); tmppoint2.z = contpts.z(i+3); dx = tmppoint2.x - tmppoint1.x; dy = tmppoint2.y - tmppoint1.y; dz = tmppoint2.z - tmppoint1.z; contpts.x(i-1) = contpts.x(i) - 0.125*dx;//using points at twice the distance so use 1/8 not 1/4 contpts.y(i-1) = contpts.y(i) - 0.125*dy; contpts.z(i-1) = contpts.z(i) - 0.125*dz; contpts.x(i+1) = contpts.x(i) + 0.125*dx; contpts.y(i+1) = contpts.y(i) + 0.125*dy; contpts.z(i+1) = contpts.z(i) + 0.125*dz; } //do 2 ends //point to index 2 and end-2 at 1/2 distance tmppoint1.x = contpts.x(0); tmppoint1.y = contpts.y(0); tmppoint1.z = contpts.z(0); tmppoint2.x = contpts.x(2); tmppoint2.y = contpts.y(2); tmppoint2.z = contpts.z(2); dx = tmppoint2.x - tmppoint1.x; dy = tmppoint2.y - tmppoint1.y; dz = tmppoint2.z - tmppoint1.z; contpts.x(1) = contpts.x(0) + 0.5*dx; contpts.y(1) = contpts.y(0) + 0.5*dy; contpts.z(1) = contpts.z(0) + 0.5*dz; tmppoint1.x = contpts.x(numctrl-3); tmppoint1.y = contpts.y(numctrl-3); tmppoint1.z = contpts.z(numctrl-3); tmppoint2.x = contpts.x(numctrl-1); tmppoint2.y = contpts.y(numctrl-1); tmppoint2.z = contpts.z(numctrl-1); dx = tmppoint2.x - tmppoint1.x; dy = tmppoint2.y - tmppoint1.y; dz = tmppoint2.z - tmppoint1.z; contpts.x(numctrl-2) = contpts.x(numctrl-3) + 0.5*dx; contpts.y(numctrl-2) = contpts.y(numctrl-3) + 0.5*dy; contpts.z(numctrl-2) = contpts.z(numctrl-3) + 0.5*dz; //save the cont points //calc knots numknots = numctrl + 4;//add order which is degree 3 + 1 myknots = System.CreateDO("Common Data Package/Number Array Data"); myknots.Clear(); //start knots myknots.Add(0); myknots.Add(0); myknots.Add(0); myknots.Add(0); //each original middle polygon point has 3 knots for(i=1;i<numpoints-1;i++) { val = knotvals[i]/curvelength; myknots.Add(val); myknots.Add(val); myknots.Add(val); } //end knots myknots.Add(1); myknots.Add(1); myknots.Add(1); myknots.Add(1); finalknotcnt = myknots.GetSize(); theMatrix = System.CreateDO("Space 3D Package/Mesh Data"); theMatrix = Node.Value(firstSel,"WldMatrix"); //copy cone templates to mesh nodes to start the meshes for control points and the curve Node.Value(owner + "/controlPointMesh/Editable shape","Input Mesh") = Node.Value(owner + "/controlPointCone","Mesh"); Node.Value(owner + "/LODMesh/Editable shape","Input Mesh") = Node.Value(owner + "/LODCone","Mesh"); params.ConValue("contpoints") = contpts; params.ConValue("knots") = myknots; params.ConValue("thematrix") = theMatrix; Activity.Run(owner + "/donurbs");//run next step } NScript Object Package/jScript language~൱D#^cDSpace 3D Package/Point Array Datacontpoints (F)ݟ{MgdapIoHLCommon Data Package/Number Array Data knots GnKJO!i\t":HHO>Math Package/Matrix Float Datathematrix `^02eE{|@ tIu4W}@O{(XFҦV>g'JNjn*pn@@ Db@@X@2|=Bynj|?z@Hoۙ>?":HHOGnKJO!i\t????J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?MgdapIoH(F)ݟ{ ?E<&ݿ;h?Ŀŗ?%7?e<&]4?''%Z? <&]W0?I% j? ><&]>?/t>tA?c> ><&]?>>x?}>.>x? >E><&]?=4?tA?2jj?<&]>젾Ew?>,m?<&]xC?%e?<&]oF?7޿o>W0<&ݿ-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UO tIu`^02eE{|@BQ?6?6Q??@'Z %??MT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@HojJ)MR "curveFunctionSetceZU@䑧r$h4W}@O{$(XFҦV"ceZU@䑧r[җJs@ RNewFunctionSet// This is a jScript Function Set // Put usefull functions, constants, enumerators here and share them across your project // Use Node.AccessFnSet / Node.AccessNearFnSet to get access here from your script commands // Hint: do not use commands like System.ThisOwner, System.ThisName or Node.NearValue here, as they reffer to caller's command location firstvertex = true; vertexList = System.CreateDO("Common Data Package/Int Array Data"); //functions for generating random guid for marker display function S4() { return (((1+Math.random())*0x10000)|0).toString(16).substring(1); } function guid() { return ("{" + S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4() + "}"); } function resetList() { vertexList.Clear(); } function add(ind) { vertexList.Add(ind); } //select all vertices so far function select() { firstSel = Node.FirstSelected(); thesel = System.CreateDO("Space 3D Package/Selection Data"); thesel = Node.Value(firstSel,"Selection"); numverts = vertexList.GetSize(); thesel.ClearSelection(); for(i=0;i<numverts;i++) { thesel.SelectVertex(vertexList.GetAt(i),1); } Node.Value(firstSel,"Selection") = thesel; } //preview the curve with straight line segment markers function previewcurve() { if(Node.Exists("/Widgets/Active Widgets Layer2/Markers")) Node.Delete("/Widgets/Active Widgets Layer2/Markers"); firstsel = Node.FirstSelected(); mymat = System.CreateDO("Math Package/Matrix Float Data"); mymat = Node.Value(firstsel,"Matrix"); mymesh = System.CreateDO("Space 3D Package/Mesh Data"); mymesh = Node.Value(firstsel,"Mesh"); verts = System.CreateDO("Space 3D Package/Vertex Stream Data"); verts = mymesh.GetVertices(); xdir = System.CreateDO('Math Package/Point Data'); ydir = System.CreateDO('Math Package/Point Data'); origin = System.CreateDO('Math Package/Point Data'); p1 = System.CreateDO('Math Package/Point Data'); p2 = System.CreateDO('Math Package/Point Data'); color = System.CreateDO("Common Data Package/Color Data"); color = Node.Value("Preferences/Mesh Editor Settings","SelectedColor"); //xdir.x = 0.05; xdir.y = 0; xdir.z = 0; //ydir.x = 0; ydir.y = 0.05; ydir.z = 0; myguid = guid();//get fresh random guid for the marker markers = Widgets.CreateMarkersSet(); numverts = vertexList.GetSize(); for(i=1;i<numverts;i++) { pind = vertexList.GetAt(i-1); p1.x = verts.x(pind); p1.y = verts.y(pind); p1.z = verts.z(pind); p1 = mymat.TransformPoint(p1); pind = vertexList.GetAt(i); p2.x = verts.x(pind); p2.y = verts.y(pind); p2.z = verts.z(pind); p2 = mymat.TransformPoint(p2); markers.AddEdge(p1, p2, color); } markers.AttachVisualizationMesh(myguid); }NScript Object Package/jScript language~൱Dl#^c(XFҦV>g'JNjn*pFCX@1@?48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand //getnextvertex //Jan 2011 // save the most recently selected vertex to a list // called from a custom mesh edit widget(PE MakeCurve) with each new PE selection // must get vertices one by one because truespace automatically sorts the selections // // Execute // Called to execute the command function Execute(params) { owner = System.ThisOwner(); sel = Node.FirstSelected();//get selected object //if not in point edit mode return if(!Node.ConExists(sel,"Selection")) return;//safety net should never happen //get the mesh and read it's selection data - IRdMeshSelection themesh = Node.Value(sel,"Mesh"); seldata = System.CreateDO('Space 3D Package/Selection Data'); seldata = Node.Value(sel,"Selection"); //curve function set used so several nodes have access to the same data cfs = Node.AccessNearFnSet("curveFunctionSet"); //return and restart if vertex selection count is not 1 vertcnt = seldata.GetNumSelectedVertices(); if(vertcnt!=1) { cfs.firstvertex = true; cfs.resetList(); return; } vertind0 = seldata.GetSelectedVertexIndex(0); //reset the list if this is the first vertex added to the list if(cfs.firstvertex ) { cfs.firstvertex = false; cfs.resetList(); } cfs.add(vertind0); size = cfs.vertexList.GetSize(); cfs.select();//select all the vertices select so far //indicate selection progress so far via edge visualizations - vertex selection was too subtle if(size>1) cfs.previewcurve(); if(Node.Exists("/Status Line")) { if(Node.ConExists("/Status Line","Model")) { Node.Value("/Status Line","Model") = "Curve Create: add point index = " + vertind0; } } //params.ConValue("firstvertex") = vertind0; params.ConValue("validvertex") = true; } NScript Object Package/jScript language~൱Dd#^cbooleanvalidvertex +HJ6v4W}@O{(XFҦV>g'JNjn*pnCb@@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+HJ6v 48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand,//exitcurvemode //Jan 2001 //go here on right click/cancel from the custom widget(PE MakeCurve) //selection is done next make a curve // // Execute // Called to execute the command function Execute(params) { //clear the status line if(Node.Exists("/Status Line")) { if(Node.ConExists("/Status Line","Model")) { Node.Value("/Status Line","Model") = ""; } } //remove markers if(Node.Exists("/Widgets/Active Widgets Layer2/Markers")) Node.Delete("/Widgets/Active Widgets Layer2/Markers"); } NScript Object Package/jScript language~൱D#^c4W}@O{(XFҦV>g'JNjn*pnj@ 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 g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommandd// Execute // Called to execute the command function Execute(params) { //command to run after a mesh edit widget has finished MeshModifiers.CancelSelectionBasedTool(); //reset for the next run cfs = Node.AccessNearFnSet("curveFunctionSet"); cfs.resetList(); cfs.firstvertex = true; } NScript Object Package/jScript language~൱Di#^c4W}@O{(XFҦV>g'JNjn*pn DCb@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=쾬curveShaperh#.;]kI 忞@"H0#`HrH>H*M#4W}@O{$h#"ĺI[e/1R#OEnuE:(PIT(B(XFҦV"-1OSM n"h!#{MwzM/P]%TPd!#'N^T(C"ĺI[e/1'N^`^02eE{|@B????{MwzM/P]%"(XFҦV>g'JNjn*pFD b@ a@%B?OEnuE:(PI>W5f@(䐈ٸ*ćIC7 h* 6H?BJy'HNLjUb)R8{EE%D7[ZpߘHXO89Ig"-1OSM n 럆L<_ї˥Default GFʠN=PlG1 }}OEnuE:(PIZ`Ez]UO GFʠN=P PlG1 }}{MwzM/P]%Z`Ez]UO1釥GP>aP PlG0 }}{MwzM/P]%Z`Ez]UO GFʠN= 0PlG1 }}"ĺI[e/1Z`Ez]UON\q+nN-K^0HPlGA}}@y@{MwzM/P]%Z`Ez]UOh@Oˁ CRih[H`XPlG}}\Activity.Run('%THIS_NAME%' + "/connectHead");connect headZ`Ez]UOOˁ CRih[X`hPlG}}bActivity.Run('%THIS_NAME%' + "/disconnectHead"); disconnect headZ`Ez]UOOˁ CRih[h`xPlG}}\Activity.Run('%THIS_NAME%' + "/freezeCurve");freeze curveZ`Ez]UO}}܂dKu=.#LODCone/#.;]kI 忞@" "֢s 8`H0#4W}@O{$ G?ŋH1#tveDCE`"IWJZB$0} `H1#׊;Jf|ڢZ` P| `HH2#偢jD%~`8Z8"WAG""<ĠF姁J]\ "$1&KߊPV$"-V?XM%  (XFҦV""S $hKnPSVm "H=1Gn@`U)Ԣ-1OSM n" -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pF#DBb@ f@?׊;Jf|ڢWAG`^02eE{|@B6?6?6?m$B8A6? G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0{`D@}㒱ѢCone primitive ҢtveDCE`"IWJPBH1#xӢ*tL V0*PpҢӢ1)ps6DU9rLpҢxԢ@,G8R(pҢԢH=1Gn@`U)pҢxբDMN{ g;pҢբ[T}lAuܿxjpҢx֢BƆK``;a!pҢ֢4W}@O{$(XFҦV"-1OSM n" *tL V0*P[T}lAuܿxj(XFҦV>g'JNjn*pFCDCb@ b@?@,G8R(BAH=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=dq Material ListXs .;]kI 忞@"8z V s 4W}@O{$Xt -V?XM%"(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%Dx ,Material List Manager8y -V?XM%PXt y &zB}J?p8y 8z 4W}@O{$z =ө6I)])p8y -V?XM%&zB}J?=ө6I)])܂dKu= V Material 0V .;]kI 忞@"V V 4W}@O{$V gYأC۲+?z gYأC۲+?b=h0CRfV 0Material Flavor ManagerV gYأC۲+?PV V !EJGWMpV V 6~qK;2t&pV V 4W}@O{$V ?.9>DGl{?pV !EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀DċV  Solid HV .F_P#T.F_P#Material Output material __W8E#(V ȐV n%⟀A}aJpHV HV >]zJ4 pHV ȑV J.HE /*gpHV HV 8VnZN:W ppHV PV ll-#Ez k^pHV ГV K#uiL$pHV PV ,L?D}pHV 4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????,L?D}.F_P#K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabledll-#Ez k^8VnZN:W p?u8DMhbEĪOwnerName6Vg'JNjn*pFBCX@1@?qU F3f$2Object Render AttributesS $hKnPSVmP"8Ns2]p^mګA~Ksi[p(lrsGrp\Eh{5p"PbEGDߗrpF?N dp]*qBCxp\J:I%7up`iA޲1rIK>Xpี,ot"AaYp`^RI8ÿRp๵çwH5#Vp`4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"o[nfFpzgGFohN)pvhD zʔpW0@zdW0@zd$VersionVersion$Hȅ8vDCxZpȉF+2MGpHI2GWM:).$pȊmBޖw ppfB #^p@|$}mK;)p rg@*oHp @!eLZE^Np pSLDMF:ɅDzgGFohN)I2GWM:).$ ]*qBCx?S $hKnPSVmvhD zʔçwH5#V rg@*oH4W}@O{\J:I%7u-n,Njlpg??u??\Eh{5-n,Njlpg????fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort(XFҦV>g'JNjn*pFC Bk@ `@?pSLDMF:Ʌ/Project/Space 3D/install curve tools/points2curveScript/curveShaper/LODConeF?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 ͤ*EgbĬ^LODcontrol2AEHM'ceZU@䑧r%`4W}@O{$(XFҦV#.;]kI 忞@"-1OSM n#Pd{MwzM/P]%pDddizDFUPB"(A2AEHM'>g'JNjn*pFBC`@0@?ceZU@䑧r[җJs@ NewObject// OnComputeOutputs // Called to compute values of all output connectors function OnComputeOutputs(params) { var LODin = params.ConValue('LODin'); // TODO: put your computation here params.ConValue('LODout') = LODin; } NScript Object Package/jScript languageint LODin{MwzM/P]%intLODoutizDFU{MwzM/P]%"4W}@O{(XFҦV>g'JNjn*pFCpAb@@R@?izDFU"-1OSM n 럆L<_їCDefault GFʠN=Pp1 }}{MwzM/P]%Z`Ez]UO1釥GP>aPp0 }}{MwzM/P]%Z`Ez]UO GFʠN=P p1 }}izDFUZ`Ez]UO1釥GP>aP p0 }}izDFUZ`Ez]UON\q+nN-K^ 8pA}}@y@{MwzM/P]%Z`Ez]UOh@}}.;]kI 忞@܂dKu=p&curveHeadIndicator q.;]kI 忞@"h  i Hr4W}@O{$ G?ŋHstveDCE`"IWJZHUT X `Hs׊;Jf|ڢZUT P `H 偢jD%~`8Z0 WAG  <ĠF姁J]\h $1&KߊPV$  -V?XM%8 (XFҦV"  S $hKnPSVmpQ  -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pF@bDb@ d@?׊;Jf|ڢWAG`^02eE{|@B???? G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї08c+KjWN Cube primitive  tveDCE`"IWJPBHs \5KZWDL&fp  [irH%}Jp  cCN!F)/p  XxEbN5g'JNjn*pFC Bb@ `@?[irH%}J>XxEbN5tveDCE`"IWJ-1OSM n 럆L<_їDefault1釥GP>a@P0 }}ZK=nʼZ`Ez]UO GFʠN=p0@7 }}Height4MBLt6Z`Ez]UO1釥GP>ap@P0 }}4MBLt6Z`Ez]UO GFʠN=80p@6 }}WidthXxEbN5a8@`P0 }}XxEbN54MBLt6?K?Z`Ez]UOPN AnqH`@pP>XxEbN5ZK=nʼ?K?Z`Ez]UO GFʠN=08P)}}SegmentsZ`Ez]UO GFʠN= p01 }}[irH%}JZ`Ez]UO1釥GP>ap 00 }}[irH%}JZ`Ez]UOPN AnqH 0>[irH%}JK>Z`Ez]UO GFʠN=p 1 }}cCN!F)/Z`Ez]UO1釥GP>ap 0 }}cCN!F)/Z`Ez]UOPN AnqH >cCN!F)/K>Z`Ez]UO GFʠN=p1 }}\5KZWDL&fZ`Ez]UO1釥GP>ap0 }}\5KZWDL&fZ`Ez]UOPN AnqH>\5KZWDL&fK>Z`Ez]UO\5KZWDL&f>ZK=nʼ4MBLt6܂dKu=|Material Listp.;]kI 忞@"x4W}@O{$p-V?XM%  -V?XM%) 6G%,Material List Managerx-V?XM%Pp&zB}J?pxx4W}@O{$ xM֓px-V?XM%&zB}J? xM֓܂dKu=DMaterial 08.;]kI 忞@" P4W}@O{$8gYأC۲+?gYأC۲+?b=h0CRfL0Material Flavor Manager@ gYأC۲+?P8 !EJGWMp@ @ 6~qK;2t&p@  4W}@O{$@ ?.9>DGl{?p@ !EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀D쓺 Solid p.F_P#T.F_P#Material Output material __W8E#(@ Hn%⟀A}aJppȘ>]zJ4 ppHJ.HE /*gppȚ8VnZN:W pppЛll-#Ez k^ppPK#uiL$ppМ,L?D}ppP4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,NjlpgV?>L??.F_P#,L?D}ll-#Ez k^K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabled8VnZN:W p?u8DMhbE$OwnerName6VXpi ,ot"AaYpi ^RI8ÿRpi çwH5#Vpi 4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"i o[nfFpHi zgGFohN)pi vhD zʔpW0@zdW0@zd$VersionVersion$i ȅ8vDCxZpi F+2MGpi I2GWM:).$pi mBޖw ppi fB #^pi |$}mK;)p i rg@*oHp i !eLZE^Np i pSLDMF:ɅDI2GWM:).$ zgGFohN)vhD zʔS $hKnPSVm]*qBCx?rg@*oHçwH5#V 4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\Eh{5-n,Njlpg????\J:I%7u-n,NjlpgL?\>>?pSLDMF:Ʌ./Project/Space 3D/Cube(XFҦV>g'JNjn*pFC(Bk@ b@?F?N d ȅ8vDCxZ 8Ns2]F+2MG "PbEGDߗr ^mګA~Ksi[(lrsGr?J@#QL>g'JNjn*pFzCCb@q@?W0@zdo[nfFmBޖw p,ot"AaY -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!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X ̧GCvҳعExpandInMatrixٹȎJxѝpڹOIo9pٹڹw<:'Cu`npٹܹОU BPDC pٹܹUA0GF(K3pٹݹ a@7>pٹݹԕfHKUR8Hpٹ޹_.%YBQ:Ppٹ޹hIu) pٹ߹glVL'{/:pٹ8S H"`7M_pٹ@ǰ϶F?pٹތdnJAy0VWpٹH4W}@O{$(XFҦV"-1OSM n"ȎJxѝ a@7>?w<:'Cu`nz?_.%YBQ:P(XFҦV>g'JNjn*p6DEX@ f@_.%YBQ:P1 =glVL'{/:i>hIu) =?8S H"`7M_hIu) glVL'{/:ԕfHKUR8H?ތdnJAy0VW-1OSM n 럆L<_їrDefault GFʠN=@(P1 }}ǰ϶F?Z`Ez]UO1釥GP>a(@`P0 }}ǰ϶F?Z`Ez]UO GFʠN=0(@1 }}8S H"`7M_Z`Ez]UO1釥GP>a(0`@0 }}8S H"`7M_Z`Ez]UO GFʠN=`(p1 }}UA0GF(K3Z`Ez]UO1釥GP>a(``p0 }}UA0GF(K3Z`Ez]UO GFʠN=p(1 }} a@7>Z`Ez]UO1釥GP>a(p`0 }} a@7>Z`Ez]UO GFʠN=(1 }}ԕfHKUR8HZ`Ez]UO1釥GP>a(`0 }}ԕfHKUR8HZ`Ez]UO GFʠN=(1 }}OIo9Z`Ez]UO1釥GP>a(`0 }}OIo9Z`Ez]UO GFʠN=( 1 }}w<:'Cu`nZ`Ez]UO1釥GP>a(` 0 }}w<:'Cu`nZ`Ez]UO GFʠN= (01 }}ОU BPDC Z`Ez]UO1釥GP>a( `00 }}ОU BPDC Z`Ez]UO GFʠN=P(`1 }}ތdnJAy0VWZ`Ez]UO1釥GP>a(P``0 }}ތdnJAy0VWZ`Ez]UO GFʠN=`1 }}ȎJxѝZ`Ez]UOOIo9 @ОU BPDC  @UA0GF(K3?ǰ϶F?ͤ*EgbĬ<curveUpdate2AEHM'ceZU@䑧r%>4W}@O{$(XFҦV#.;]kI 忞@"-1OSM n#(Ag5pVxHm؋opDAC(DDA"ĺI[e/1PBh#(BOEnuE:(PIpDAC(DDBzaƸAq kpDAC(DD(C'N^pDAC(DDC_nt EuSrhPBڹ(D t7B!C K 'PBڹDlE05DERPBܹ"ĺI[e/12AEHM'>g'JNjn*pFBC`@0@?'N^ceZU@䑧r[җJs@ (NewObjectp$//curveupdate //Jan 2011 //jscript object that automatically updates a curve based on detail setting and //PE manipulation of the control point mesh // /// \original author Rob Bateman //http://nccastaff.bournemouth.ac.uk/jmacey/RobTheBloke/www/opengl_programming.html /// \date 9-feb-2005 // adapted for truespace // Clinton Reese // Dec 11 2010 // var g_Knots = new Array(); //------------------------------------------------------------ CoxDeBoor() // function CoxDeBoor(u,i,k,Knots) { if(k==1) { if( Knots[i] <= u && u <= Knots[i+1] ) { return 1.0; } return 0.0; } var Den1 = Knots[i+k-1] - Knots[i]; var Den2 = Knots[i+k] - Knots[i+1]; var Eq1=0,Eq2=0; if(Den1>0) { Eq1 = ((u-Knots[i]) / Den1) * CoxDeBoor(u,i,k-1,Knots); } if(Den2>0) { Eq2 = (Knots[i+k]-u) / Den2 * CoxDeBoor(u,i+1,k-1,Knots); } return Eq1+Eq2; } //------------------------------------------------------------ GetOutpoint() // function GetOutpoint(t,OutPoint) { // sum the effect of all CV's on the curve at this point to // get the evaluated curve point // for(var i=0;i<g_num_cvs;i++) { // calculate the effect of this point on the curve var Val = CoxDeBoor(t,i,g_order,g_Knots); if(Val>0.001) { // sum effect of CV on this part of the curve //OutPoint[0] += Val * g_Points[i][0]; //OutPoint[1] += Val * g_Points[i][1]; //OutPoint[2] += Val * g_Points[i][2]; OutPoint[0] += Val * g_Points.x(i); OutPoint[1] += Val * g_Points.y(i); OutPoint[2] += Val * g_Points.z(i); } } } // OnComputeOutputs // Called to compute values of all output connectors function OnComputeOutputs(params) { var lLOD = params.ConValue('lLOD'); var cpmesh = params.ConValue('cpmesh'); var LODmesh = params.ConValue('LODmesh'); var cpMatrix = params.ConValue('cpMatrix'); // TODO: put your computation here LOD = lLOD; cpVert = System.CreateDO("Space 3D Package/Vertex Stream Data"); cpVert = cpmesh.GetVertices(); g_num_cvs = cpVert.GetNumVertices() - 2; g_degree=3; g_order=g_degree+1; g_num_knots=g_num_cvs+g_order; g_Points = System.CreateDO("Space 3D Package/Point Array Data"); g_Points.SetSize(g_num_cvs); var clength = new Array(); curvelength = 0; clength[0] = 0; for(i=0;i<g_num_cvs;i++) { g_Points.x(i) = cpVert.x(i); g_Points.y(i) = cpVert.y(i); g_Points.z(i) = cpVert.z(i); //get curve length if(i>0) { dx = cpVert.x(i) - cpVert.x(i-1); dy = cpVert.y(i) - cpVert.y(i-1); dz = cpVert.z(i) - cpVert.z(i-1); dist = Math.sqrt(dx*dx + dy*dy + dz*dz); curvelength = curvelength + dist; clength[i] = curvelength; } } //set knots as running length divided by curve length g_Knots[0] = 0; g_Knots[1] = 0; g_Knots[2] = 0; g_Knots[3] = 0; g_Knots[g_num_knots-4] = 1; g_Knots[g_num_knots-3] = 1; g_Knots[g_num_knots-2] = 1; g_Knots[g_num_knots-1] = 1; curvepos = 0; for(i=4;i<g_num_knots-4;i=i+3) { g_Knots[i] = clength[i-1]/curvelength; g_Knots[i+1] = g_Knots[i]; g_Knots[i+2] = g_Knots[i]; //System.Trace(g_Knots[i]); } // // do the nurbs curve // ncMesh = System.CreateDO("Space 3D Package/Mesh Data"); ncMesh = LODmesh; ncVert = System.CreateDO("Space 3D Package/Vertex Stream Data"); ncVert = ncMesh.GetVertices(); faceEdges = System.CreateDO('Space 3D Package/Face Edges Stream Data'); faceEdges = ncMesh.GetTrianglesStreamByName("Face Edges Stream Data"); numtri = faceEdges.GetNumTriangleEdges(); for(i=0;i<numtri;i++) { testodd = i % 2; if(testodd==0) faceEdges.edges(i) = 1; else faceEdges.edges(i) = 0; if(i==numtri-2) faceEdges.edges(i) = 0; } ncMesh.AttachTrianglesStream(faceEdges); var t; var Outpoint = new Array(); for(var i=0;i<LOD;i++) { t = g_Knots[g_num_knots-1] * i / (LOD-1); if(i==LOD-1) t-=0.001;//???why??? Outpoint[0] = 0; Outpoint[1] = 0; Outpoint[2] = 0; GetOutpoint(t,Outpoint); //glVertex3fv(Outpoint); ncVert.x(i) = Outpoint[0]; ncVert.y(i) = Outpoint[1]; ncVert.z(i) = Outpoint[2]; } ncMesh.AttachVerticesStream(ncVert); params.ConValue("curvemesh") = ncMesh; // //position the curve head indicator // headPoint = System.CreateDO("Math Package/Point Data"); headPointA = System.CreateDO("Math Package/Point Data"); headPointA.x = cpVert.x(0); headPointA.y = cpVert.y(0); headPointA.z = cpVert.z(0); headPoint = cpMatrix.TransformPoint(headPointA); params.ConValue("tx") = headPoint.x; params.ConValue("ty") = headPoint.y; params.ConValue("tz") = headPoint.z; } NScript Object Package/jScript language~൱DV#^cint lLODg5pVxHm؋o6Space 3D Package/Mesh Datacurvemesh >W5f@(䐈ɗ"ĺI[e/16Space 3D Package/Mesh Datacpmesh >W5f@(䐈ɭOEnuE:(PI6Space 3D Package/Mesh DataLODmesh >W5f@(䐈zaƸAq k>Math Package/Matrix Float DatacpMatrix `^02eE{|@'N^numbertx_nt EuSrhnumberty t7B!C K 'numbertzlE05DER_nt EuSrh @4W}@O{g5pVxHm؋o"(XFҦV>g'JNjn*pFCb@ b@?lE05DER @ t7B!C K 'z?zaƸAq kOEnuE:(PI-1OSM n 럆L<_ї0.;]kI 忞@48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand.// Execute // Called to execute the command function Execute(params) { //disconnect the curve start/head indicator so PE works properly owner = System.ThisOwner(); Node.Disconnect(owner + "/ExpandInMatrix", "Matrix", owner + "/curveHeadIndicator", "Matrix"); } NScript Object Package/jScript language~൱DT#^c4W}@O{(XFҦV>g'JNjn*pnCB`@@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@ NewCommandd// Execute // Called to execute the command function Execute(params) { //move the head indicator into position and maintain it's position relative to the curve start owner = System.ThisOwner(); Node.ConnectTo(owner + "/ExpandInMatrix", "Matrix", owner + "/curveHeadIndicator", "Matrix"); } NScript Object Package/jScript language~൱DL9#^c4W}@O{(XFҦV>g'JNjn*pnC?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@ NewCommandh//freezeCurve //Jan 2011 // disconnects the control mesh from the curve mesh // delete all controls in the process // // Execute // Called to execute the command function Execute(params) { owner = System.ThisOwner(); cpnode = Node.LinkedInputNode(owner, "cpmesh",0); curvenode = Node.LinkedOutputNode(owner, "curvemesh",0); Node.Disconnect(owner, "curvemesh", curvenode, "Input Mesh"); Node.Disconnect(cpnode, "WldMatrix", curvenode, "Matrix"); Node.Delete(cpnode); //Node.ConRemove(curvenode, "Input Mesh"); Node.Delete(owner); } NScript Object Package/jScript language~൱D#^c4W}@O{(XFҦV>g'JNjn*pnC`@@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܂dKu=LQ! sweepPathScript@R!.;]kI 忞@" `(<Xa 8n 7pF@Hy4W}@O{$(XFҦV"-1OSM n"(XFҦV>g'JNjn*pFD[Cd@@@D?-1OSM n 럆L<_ї˜ GFʠN=( ,}} version 1.0Z`Ez]UO}}܂dKu=|latheGuidesp.;]kI 忞@"4W}@O{$(XFҦV"-1OSM n"(XFҦV>g'JNjn*pFjCX@1@?-1OSM n 럆L<_ї0܂dKu=$tailRef.;]kI 忞@"ɫ#P#pu!P!4W}@O{$ G?ŋtveDCE`"IWJZx$p `H׊;Jf|ڢZ$h `H 偢jD%~`8ZWAGǫ <ĠF姁J]\ǫ$1&KߊPV$x-V?XM%P (XFҦV"x42N߻F0s!d42N߻F0s!dTarget MatrixTarget Matrix `^02eE{|@##-1OSM n"S $hKnPSVm0  -V?XM%S $hKnPSVm偢jD%~`842N߻F0s!d(XFҦV>g'JNjn*pF@DCb@ f@?׊;Jf|ڢWAG`^02eE{|@B???? G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї08c+KjWNCube primitive tveDCE`"IWJPB\5KZWDL&fp[irH%}JpcCN!F)/pXxEbN5g'JNjn*pFC Bb@ `@?[irH%}Jg?cCN!F)/Z?XxEbN5a@P0 }}ZK=nʼZ`Ez]UO GFʠN=p0@7 }}Height4MBLt6Z`Ez]UO1釥GP>ap@P0 }}4MBLt6Z`Ez]UO GFʠN=80p@6 }}WidthXxEbN5a8@`P0 }}XxEbN54MBLt6?K?Z`Ez]UOPN AnqH`@pP>XxEbN5ZK=nʼ?K?Z`Ez]UO GFʠN=08P)}}SegmentsZ`Ez]UO GFʠN= p01 }}[irH%}JZ`Ez]UO1釥GP>ap 00 }}[irH%}JZ`Ez]UOPN AnqH 0>[irH%}JK>Z`Ez]UO GFʠN=p 1 }}cCN!F)/Z`Ez]UO1釥GP>ap 0 }}cCN!F)/Z`Ez]UOPN AnqH >cCN!F)/K>Z`Ez]UO GFʠN=p1 }}\5KZWDL&fZ`Ez]UO1釥GP>ap0 }}\5KZWDL&fZ`Ez]UOPN AnqH>\5KZWDL&fK>Z`Ez]UO\5KZWDL&f U`?4MBLt6ZK=nʼ܂dKu=<#Material List0#.;]kI 忞@"8###4W}@O{$0#-V?XM%x-V?XM%) 6G%D#,Material List Manager8#-V?XM%P0##&zB}J?p8#8#4W}@O{$##x&XA@jt#x&XA@jMat Chunk 0BDynamic material input connector |E8y8#-V?XM%&zB}J?#x&XA@j܂dKu=\#Material 0P#.;]kI 忞@"###4W}@O{$P#gYأC۲+?#gYأC۲+?b=h0CRfd#0Material Flavor ManagerX#gYأC۲+?PP##!EJGWMpX#X#6~qK;2t&pX##4W}@O{$X#?.9>DGl{?pX#!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀D# Solid ( #.F_P#T.F_P#Material Output material __W8E#(X# #n%⟀A}aJp( #( #>]zJ4 p( # #J.HE /*gp( #( #8VnZN:W pp( #0#ll-#Ez k^p( ##K#uiL$p( #0#,L?D}p( ##4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg>-?R??,L?D}.F_P#K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabledll-#Ez k^8VnZN:W p? #ߺKg BZ#LookAt2x#7_ Bt7_ BSource MatrixSource Matrix `^02eE{|@P#P#)d"FcxfMt)d"FcxfM"Source ObjMatrix"Source ObjMatrix `^02eE{|@##42N߻F0s!dpP##P#׊;Jf|ڢPB#偢jD%~`8PB P#4W}@O{$偢jD%~`842N߻F0s!d)d"FcxfM׊;Jf|ڢ7_ Bu8DMhbEs!OwnerNamet!6VXpxx!!,ot"AaYpxx!H!^RI8ÿRpxx!ȁ!çwH5#Vpxx!P!4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"!o[nfFpxx!(!zgGFohN)pxx!!vhD zʔpxx!W0@zdW0@zd$VersionVersion$h!ȅ8vDCxZpxx!!F+2MGpxx!h!I2GWM:).$pxx! mBޖw ppxx! fB #^pxx!8 |$}mK;)p xx! rg@*oHp xx!8 !eLZE^Np xx! pSLDMF:ɅDI2GWM:).$ zgGFohN)vhD zʔS $hKnPSVm]*qBCxrg@*oHçwH5#V 4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\Eh{5-n,Njlpg????\J:I%7u-n,Njlpg???pSLDMF:Ʌr/Project/railextrudescn/rail extrude/latheGuides/tailRef(XFҦV>g'JNjn*pFC(Bk@ b@?F?N d ȅ8vDCxZ 8Ns2]?F+2MG "PbEGDߗr ^mګA~Ksi[(lrsGr?J@#QL>g'JNjn*pFzCCb@q@?W0@zdo[nfFmBޖw p,ot"AaY -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!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X ܂dKu=headRef .;]kI 忞@"PE0,04W}@O{$ G?ŋtveDCE`"IWJZh[ `H׊;Jf|ڢZx `H偢jD%~`8ZWAGB<ĠF姁J]\PB$1&KߊPV$-V?XM%h (XFҦV"-1OSM n" 7S $hKnPSVm H  -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pFDCb@ d@?׊;Jf|ڢWAG`^02eE{|@B???? G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї08c+KjWNMCube primitive tveDCE`"IWJPB\5KZWDL&fp[irH%}JpcCN!F)/pXxEbN5g'JNjn*pFC Bb@ `@?[irH%}Jg?XxEbN5a@P0 }}ZK=nʼZ`Ez]UO GFʠN=p0@7 }}Height4MBLt6Z`Ez]UO1釥GP>ap@P0 }}4MBLt6Z`Ez]UO GFʠN=80p@6 }}WidthXxEbN5a8@`P0 }}XxEbN54MBLt6?K?Z`Ez]UOPN AnqH`@pP>XxEbN5ZK=nʼ?K?Z`Ez]UO GFʠN=08P)}}SegmentsZ`Ez]UO GFʠN= p01 }}[irH%}JZ`Ez]UO1釥GP>ap 00 }}[irH%}JZ`Ez]UOPN AnqH 0>[irH%}JK>Z`Ez]UO GFʠN=p 1 }}cCN!F)/Z`Ez]UO1釥GP>ap 0 }}cCN!F)/Z`Ez]UOPN AnqH >cCN!F)/K>Z`Ez]UO GFʠN=p1 }}\5KZWDL&fZ`Ez]UO1釥GP>ap0 }}\5KZWDL&fZ`Ez]UOPN AnqH>\5KZWDL&fK>Z`Ez]UOtveDCE`"IWJ\5KZWDL&f U`?ZK=nʼ4MBLt6܂dKu=*Material List+.;]kI 忞@"- 3 0,4W}@O{$,-V?XM%-V?XM%) 6G%+ ,Material List Manager, -V?XM%P,0- &zB}J?p, - 4W}@O{$0. #x&XA@jp, -V?XM%#x&XA@j&zB}J?܂dKu=|1 Material 0p3 .;]kI 忞@"8 3 4W}@O{$p4 gYأC۲+?0. gYأC۲+?b=h0CRf6 0Material Flavor Managerx7 gYأC۲+?Pp4 7 !EJGWMpx7 x8 6~qK;2t&px7 8 4W}@O{$x9 ?.9>DGl{?px7 !EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀D4=  Solid HA .F_P#T.F_P#Material Output material __W8E#(x9 n%⟀A}aJpHA `>]zJ4 pHA J.HE /*gpHA `8VnZN:W ppHA hll-#Ez k^pHA K#uiL$pHA h,L?D}pHA 4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg>-?R??.F_P#,L?D}ll-#Ez k^K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabled8VnZN:W p?u8DMhbEOwnerName6VXp8,ot"AaYp8^RI8ÿRp8çwH5#Vp84W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"o[nfFp8zgGFohN)p8vhD zʔp8W0@zdW0@zd$VersionVersion$Hȅ8vDCxZp8ȍF+2MGp8HI2GWM:).$p8ȎmBޖw pp8fB #^p8@|$}mK;)p 8rg@*oHp 8@!eLZE^Np 8pSLDMF:ɅDI2GWM:).$ zgGFohN)vhD zʔS $hKnPSVm]*qBCxrg@*oHçwH5#V 4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\Eh{5-n,Njlpg????\J:I%7u-n,Njlpg???pSLDMF:Ʌr/Project/railextrudescn/rail extrude/latheGuides/headRef(XFҦV>g'JNjn*pFC(Bk@ b@?F?N d ȅ8vDCxZ 8Ns2]?F+2MG "PbEGDߗr ^mګA~Ksi[(lrsGr?J@#QL>g'JNjn*pFzCCb@q@?W0@zdo[nfFmBޖw p,ot"AaY -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!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X 48@J `g4RJLUDD`Gy05Mh&ep_Gy05Mh&ep_DarraynodeD?(s]LL#r?(s]LL#rD"facenormalmatrix `^02eE{|@D`2|=Bynj z@Ho 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ DNewCommandB//railIt //Jan 2011 //use the segments of a curve to control a series of sweeps // // 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'); basecone = arraynode;//curve mesh node based on a cone mesh 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(); //dynamic sweep arguements seg = 1; region = true; mode = 0; avgNorm = false; step = 0.001; small = 0.001; scene = Space.CurrentScene(); //numverts-1 and numverts-2 are the top and bottom of the cone //numverts-3 would be the "close the curve segment", only open curves supported //0 start no sweep yet for(railseg=1;railseg<numverts-3;railseg++) { curpos.x = ncVert.x(railseg); curpos.y = ncVert.y(railseg); curpos.z = ncVert.z(railseg); prevpos.x = ncVert.x(railseg-1); prevpos.y = ncVert.y(railseg-1); prevpos.z = ncVert.z(railseg-1); nextpos.x = ncVert.x(railseg+1); nextpos.y = ncVert.y(railseg+1); nextpos.z = ncVert.z(railseg+1); curposT = ncMatrix.TransformPoint(curpos); prevposT = ncMatrix.TransformPoint(prevpos); nextposT = ncMatrix.TransformPoint(nextpos); //get the current segment direction based on current position and the next position headMatrix = Node.Value(scene + "/latheGuides/headRef","WldMatrix"); headMatrix.SetTransX(nextposT.x ); headMatrix.SetTransY(nextposT.y ); headMatrix.SetTransZ(nextposT.z ); Node.Value(scene + "/latheGuides/headRef","Matrix") = headMatrix; tailMatrix = Node.Value(scene + "/latheGuides/tailRef","WldMatrix"); tailMatrix.SetTransX(curposT.x ); tailMatrix.SetTransY(curposT.y ); tailMatrix.SetTransZ(curposT.z ); tailMatrix.SetRoll(0); tailMatrix.SetPitch(0); tailMatrix.SetYaw(0); Node.Value(scene + "/latheGuides/tailRef","Matrix") = tailMatrix; tailMatrix = Node.Value(scene + "/latheGuides/tailRef","WldMatrix"); if(railseg==1) { prevMatrix = facenormalmatrix ;//face normal of the original face selection } //sweep the face a small amount MeshModifiers.NormalSweepSelection('', seg, region, mode, avgNorm, step); //step = -step;//is this needed? //move the selection to the origin for rotation //small sweep == previous position Widgets.Move('',-prevposT.x , -prevposT.y , -prevposT.z ); //get the difference in direction between the previous and the current section dyaw = tailMatrix.GetYaw() - prevMatrix.GetYaw(); dpitch = tailMatrix.GetPitch() - prevMatrix.GetPitch(); droll = tailMatrix.GetRoll() - prevMatrix.GetRoll(); //try to reduce twisting - seems to have no effect 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; //this section rotates the face to zero rotations(+Z facing) //removing translation make it better for inverting workMatrix1 = prevMatrix; workMatrix1.SetTransX(0); workMatrix1.SetTransY(0); workMatrix1.SetTransZ(0); invMatrix = workMatrix1.Invert(); workMatrix2 = invMatrix; //reverse order rotation on inverted matrix Widgets.Rotate('', 0, 0, workMatrix2.GetYaw(), 0, 0, 0); Widgets.Rotate('', 0, workMatrix2.GetPitch(), 0, 0, 0, 0); Widgets.Rotate('', workMatrix2.GetRoll(), 0, 0, 0, 0, 0); //now rotate to match new/current segment Widgets.Rotate('', tailMatrix.GetRoll(), tailMatrix.GetPitch(), tailMatrix.GetYaw(), 0, 0, 0); //translate back into position(new current position Widgets.Move('', curposT.x , curposT.y , curposT.z ); // //UV section // //expand selection-NOTE THIS WONT WORK IF ORIGINAL IS JUST A SINGLE FACE OBJECT //solution - dont allow single face meshes to start with //expand the selection MeshModifiers.GrowPointEditSelection(''); //do cylindrical uv projection on the segment UVEditor.ToggleUvProjection('Cylindrical',''); //move the uv widget to the origin so can rotate via the widget Widgets.Move('', -curposT.x , -curposT.y , -curposT.z ); //maybe scale here?? //rotate the uv widget to match Widgets.Rotate('', tailMatrix.GetRoll(), tailMatrix.GetPitch(), tailMatrix.GetYaw(), 0, 0, 0); //move widget back into position with correct orientation Widgets.Move('', curposT.x , curposT.y , curposT.z ); //shrink selection to get the original selection in vertex form and convert back to a face selection MeshModifiers.ShrinkPointEditSelection(''); //restore face selection Node.Value('/Preferences/Mesh Editor Settings','PE selection mode') = 'face'; MeshModifiers.ConvertSelection('',''); // //return to PE //MeshModifiers.ActivatePointEditWidget('','','Default');//this does not work ScriptObject.RunCmd("widgets package/activate managed widget", "Nodes list", '', "User parameters", "", "Widget group", "{E8913C00-9A2A-43cf-8238-27B4BFB50A1F}", "Widget", "/Widgets/Tools/Mesh editor/PE basic select", "Aspect", "Default"); //UVEditor.SliceSelection('');//THIS HAD NO EFFECT-NEXT UV PROJECTION REMOVES THE SLICE, ALSO NOTE UV PANEL MUST BE OPEN OR CRASH prevMatrix = tailMatrix; } //final rail //get distance head to tail and just do it dx = nextposT.x - curposT.x; dy = nextposT.y - curposT.y; dz = nextposT.z - curposT.z; distance = Math.sqrt(dx*dx + dy*dy + dz*dz); MeshModifiers.NormalSweepSelection('', seg, region, mode, avgNorm, distance); //UV for final segment MeshModifiers.GrowPointEditSelection(''); //do uv projection UVEditor.ToggleUvProjection('Cylindrical',''); //rotate to match Widgets.Move('', -curposT.x , -curposT.y , -curposT.z ); //maybe scale here?? Widgets.Rotate('', tailMatrix.GetRoll(), tailMatrix.GetPitch(), tailMatrix.GetYaw(), 0, 0, 0); Widgets.Move('', curposT.x , curposT.y , curposT.z ); //shrink selection MeshModifiers.ShrinkPointEditSelection(''); //restore face selection Node.Value('/Preferences/Mesh Editor Settings','PE selection mode') = 'face'; MeshModifiers.ConvertSelection('',''); // //return to PE //MeshModifiers.ActivatePointEditWidget('','','Default');//this does not work ScriptObject.RunCmd("widgets package/activate managed widget", "Nodes list", '', "User parameters", "", "Widget group", "{E8913C00-9A2A-43cf-8238-27B4BFB50A1F}", "Widget", "/Widgets/Tools/Mesh editor/PE basic select", "Aspect", "Default"); // //planer uv on end face //UVEditor.ToggleUvProjection('Planar',''); //ScriptObject.RunCmd("widgets package/activate managed widget", //"Nodes list", '', "User parameters", "", //"Widget group", "{E8913C00-9A2A-43cf-8238-27B4BFB50A1F}", //"Widget", "/Widgets/Tools/Mesh editor/PE basic select", "Aspect", "Default"); //remove the lathe lookat guides from the scene if(Node.Exists(scene + "/latheGuides")) Node.Delete(scene + "/latheGuides"); } NScript Object Package/jScript language~൱Dx6,#^cstringorigobjectTi;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/Cylinder4W}@O{(XFҦV>g'JNjn*pn Cb@@\@2|=Bynj|?z@Hoۙ>??(s]LL#rɆAW μ>`g4RJLUDJ@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?Gy05Mh&ep_:/Project/railextrudescn/Cone-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 language0ܧstring PEselectionModeb/pEj F4W}@O{b/pEj F face(XFҦV>g'JNjn*pnC`@@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) { MeshModifiers.ConvertSelection('',''); } NScript Object Package/jScript language~൱D@ j#^c4W}@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 l>A; I> l>AByawBޖXE)͞!ޖXE)͞!B pitchBKOT/' 'esKOT/' 'esBmatout `^02eE{|@B2|=Bynj z@Ho2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand//getnormal //calculate the face normal and save out a corresponding matrix // // // Execute // Called to execute the command function Execute(params) { var destNode = params.ConValue('destNode'); owner = System.ThisOwner(); scene = Space.CurrentScene(); 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"); //must read mesh from input of mesh node theMesh = Node.Value(destNode + "/Editable shape", "Input Mesh"); theMatrix = Node.Value(destNode, "WldMatrix"); dV = theMesh.GetVertices(); dF = theMesh.GetTriangles(); triind = seldata.GetSelectedTriangle(0);//use first selected triangle to get the face normal //TODO MAYBE USE ALL SELECTED TRIANGLES FOR NORMAL CALC //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)); pv = System.CreateDO("Math Package/Point Data"); qv = System.CreateDO("Math Package/Point Data"); pv.x = px; pv.y = py; pv.z = pz; pv.Normalize(); qv.x = qx; qv.y = qy; qv.z = qz; qv.Normalize(); //cross product = normal myVector2.x = pv.y*qv.z - pv.z*qv.y; myVector2.y = pv.z*qv.x - pv.x*qv.z; myVector2.z = pv.x*qv.y - pv.y*qv.x; myVector = theMatrix.TransformVector(myVector2); //get normal direction in euler angles by using the lookat guides added to the scene earlier //tailRef has a lookat constraint that points to the headRef headMatrix = System.CreateDO("Math Package/Matrix Float Data"); tailMatrix = System.CreateDO("Math Package/Matrix Float Data"); headMatrix = Node.Value(scene + "/latheGuides/headRef","WldMatrix"); headMatrix.SetTransX(myVector2.x ); headMatrix.SetTransY(myVector2.y ); headMatrix.SetTransZ(myVector2.z ); Node.Value(scene + "/latheGuides/headRef","Matrix") = headMatrix; tailMatrix = Node.Value(scene + "/latheGuides/tailRef","WldMatrix"); tailMatrix.SetTransX(0 ); tailMatrix.SetTransY(0 ); tailMatrix.SetTransZ(0 ); tailMatrix.SetRoll(0);//set rotations to zero just in case tailMatrix.SetPitch(0); tailMatrix.SetYaw(0); Node.Value(scene + "/latheGuides/tailRef","Matrix") = tailMatrix; tailMatrix = Node.Value(scene + "/latheGuides/tailRef","WldMatrix"); params.ConValue("matout") = tailMatrix; } NScript Object Package/jScript languagelQ DSpace 3D Package/Point Array Datapoint2 (F)ݟ{XpAttDSpace 3D Package/Point Array Datanormal (F)ݟ{IYH͏~}stringdestNode?GN'numberyaw; I> l>Anumber pitchޖXE)͞!>Math Package/Matrix Float Datamatout `^02eE{|@KOT/' 'es4W}@O{IYH͏~}; I> l>AN/Project/curvesDevelopment, 4/Cylinder(XFҦV>g'JNjn*pn@Cb@ b@2|=Bynj|?z@Hoۙ>?XpAttKOT/' 'es`^02eE{|@Bi44 ǵY,?6??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ۙ>??GN'@/Project/railextrudescn/Cube, 1ޖXE)͞!N/Project/curvesDevelopment, 4/Cylinderz@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 Ftriangle(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 DX@>@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 `g4RJLUDBJ0 >PJOSiZ>PJOSiZBcurobjBxI2|=Bynjz@Ho #J*J>`g4RJLUD2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ |NewCommand//savefacesel //Jan 2011 //saves the pe face selection before selecting a curve for the curve sweep // // Execute // Called to execute the command function Execute(params) { scene = Space.CurrentScene(); owner = System.ThisOwner(); //if not in PE mode return firstSel = Node.FirstSelected(); if(!firstSel) { System.Alert("Select something first."); return; } if(!Node.ConExists(firstSel,"Mesh") || Node.IsCamera(firstSel) || Node.IsLight(firstSel)) { System.Alert("Select a mesh 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.001 if(rollabs > small || yawabs > small || pitchabs > small) { System.Alert("The source object must have all rotations = 0"); return; } params.ConValue("curobj") = firstSel;//save reference to selected mesh thesel = System.CreateDO("Space 3D Package/Selection Data"); thesel = Node.Value(firstSel,"Selection"); //save the selection params.ConValue("savesel") = thesel; numfaces = thesel.GetNumSelectedFaceTriangles(); //if not a face selection return if(numfaces==0) { System.Alert("Select one or more mesh faces first."); return; } themesh = System.CreateDO("Space 3D Package/Mesh Data"); themesh = Node.Value(firstSel,"Mesh"); totnumtri = themesh.GetNumTriangles(); //script uses expand and contract selections so must have more than one face not selected if(numfaces==totnumtri) { System.Alert("Mesh must have at least one unselected face."); return; } //make sure mesh has uv coordinates in channel 1 dT = System.CreateDO("Space 3D Package/UV Coordinate Stream Data"); dT = themesh.GetCustStreamByName("UV Coordinate Stream Data"); if(!dT) { System.Alert("The mesh must have UV coordinates in uv set 1"); return; } //exit PE mode Widgets.ActivateDefaultWidget(); //run process to wait for curve selection Node.Value(owner + "/Selection Change Event","Active") = true; if(Node.Exists("/Status Line")) { if(Node.ConExists("/Status Line","Model")) { Node.Value("/Status Line","Model") = "Select a curve for the sweep."; } } // params.ConValue("savesel") = ... // params.ConValue("curobj") = ... } NScript Object Package/jScript language @Space 3D Package/Selection Datasavesel >`g4RJLUD#J*Jstringcurobj>PJOSiZ>PJOSiZ@/Project/railextrudescn/Cube, 14W}@O{(XFҦV>g'JNjn*pnC`@@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@HoxeSwCћ"-, .Selection Change EventTK?JFܟ5 62|=BynjKz@Ho 74W}@O{$(XFҦV"-1OSM n" asvHhTG$2|=Bynj(XFҦV>g'JNjn*pFmCb@O@? asvHhTGeSBgcp  TO 1BÕrCW0x]w]u׶nnVm%jW H:PCPPGbb28; gfı {`;J&bW]2㙓s}}jw{oHss~~wp>|cPbժz:8rN?ĉq's,[0m 0b03g>{{~=nm5/]A]B,fBSS3o?g?={_S_ jcЕU> 6 LD @< n@pa =w PJ/.8h0pl,Kj9s6l~+;U?+yU!e!X҂zp{& Pj}Y3gmWzwhlv^C`E)JZQ/΁khӘY0vd7 ؿ0^ϟGq5әXlPY:@J&ρTq$(`ǐ3NݨF Qc}zl>0D`Yxeh#?g!Xvc0+h46ړ8!N?=Ni<øF0)/iic@{Qr^U| QД[1?SB]̦M[Q7F]ey uBe:{[J"D GA< =1O0B*h?DgpN~Gz C.0T@T`P"C?׏_ʹ(`LcF]̳a77ϓ*Nc Ɣϣo8k2Cm Ѩ#GnsL z4w_ݵ n !br7> cC9p㞿ᰈz+=<]F]XC(6b#B#C U10q2ر yhh%.s9&ghk3Ns!AIB]XQuuu0wֽ~<  YcxC_{{` "ymvt>n.ܶXpqAA@g{\)\x s ( 48X$1U!hnjի"WW ”XrIZR6 ~C *= ch`2D76573WsLlǘ-z/qQg@,?U wQ_Wmhmj` Nsc˖(ߡc|"H5k#4%o VNԁ0th-̚u8pď!2Ϧ\Wq`<Y֧C> KRy<dOa,E_x5ɎwƲKE#<9v|#64cl,_*ցX_xz.^g%[.'$AuUԭSo6h@]pOCtL?2nLӠ/c y Q= "&-Zw\&gq}6g{g|>ۀº@+b`"w<0mBcp؂PQz ZW lAК{_M|"okt)6Y]y3A7bܳ8 B޸fzgOA\m=9#7t\0x Tyڅjqںf׀6@F;{ %k!&\K{u(g+% Tmz`XS@ =a^!(ԧh~戎>y$IP]]56]P=f] I{2nH1@o/Kʾ5h+{Akfx.Ӟrtz?smhS+νj b &S 7_0kڹS({m9hc࠿'_*j dOgO1{\>DmoBts\{Pr+e/2\̣)>q Q";҂"/@棽^n:\qGomq}`0ǁ*]yL}wc|Mڕ{5z.b|c3:rٕ|$g?GNaʾ}o(H۟_A#_wUGz]뎣WSٓ/ Tˠ]TR'&E5 P/hcI7Nϼi<^ } F;"t(Jq>\nr\O^eO;u~ӧ8m5w>K '%>z{` r=Te/=z ?~kP-9@@au[%|M}z0*ңm)Ƶ#ŗh^/Y\9Ak/Fh\{ <@(woU+Ƹ"߅: 0gǼ@aT"dWB埁ތ򧽅&@H1v=Ν{! qmSW Yq>q-H${eHnj=A E&u`hy]_0qd%&O 1 V$$,ȁߢ/[vr 7޸ @34O7ָxkYxZ;끆'=,] ځU(k\|}D0uh'gϢBp}.$_a;`6z-FiOdP7{Š->hFX7b0I06l`-x`HO ٠>R5iN8tb >.|K7oa`>0 &5 *~{9O7'ꬄ/`3f̂HB.ZjWhsR$h/.J: 2tSo\> ڳK` P'{@N}|`Yu+ NB<փ{_t^s|M@8*\L01.}/ s e/PQ$<ѢoF !~ݕ 0zt=9R|< '^OJe-oŮt ƢP?zLQ}!Z?T=Jy@߻;:Oeԁ@F فbӁ_X‘j}v䇐c.U| $ہ~b{`8ݾvvW[jf"QZ<](Ĭ#u`(_@Æ C@xPSS[ݣqF+%wO2(&_@ @z[gh/vkke[lgkZv qu c$I:57X|!Z];"Rk,8wDk+YKϋRG"rN>N?f3JrMk|*(|A2=~?/4;pg8"YS:)FNkPu5J*|!ygD WWQ+-1S;Nvj`U hn:@@~A.9u?hg>LK1,Z*!pBM(̞07@?%gʹB;1b$;ޙd,@ l{IBM,7x׈vf- )?@=HC by+ꟳwڍlv;ީpvwfΜ9;KI ;AgwD: A:ƾq؆сxU@q.|FN>'/>Ȼt>cc9.{!([@Oy; *"0ԟa|ݔç;w;ݗ(RL?[t6œ#ňB{?ܸ N±1S@##[jPUY X-jlN'a߾] H2Owma%fԁ9DtM y-@*Q1C&;i;3f#,{uvj@8sw 5]т >̳t'2 'l'򸝜yf!lPϑXNv7?u&g#`# }^˹3455eYZxTߣ97o b<J t:y^AflPWKRO-ux͝/[s9wli77Os_Fz0Gt { G)j3Rч]ĥϭXs9w :~S#{ӦS2퀛'&zxV#fsr? ͓kn {a'.z~}ev3vA;0tiGW~8){h qtT ݉>38!فh^4?6z{Ӳ?>6Crxt!#vM;RөSezQҁqfPEͩ/%G_Ӳ'=Xx=뻧 ;8y>G*&t8># zձˤeO.iP_jv Q+0?ԁGT]79w;,dڵZ"7(Nb4[r{NEt[kAN쀞ԁ(SZggu0߹{΁4u/X!^iYv#<;LHn 3=|n߅ ʼnztq,P":E۷%4E_F?3@ɿWʸ/8>ŭ^bzN  ZSs\b7Z=,H+0{j<Y9U?/_z+_FiC>ٳ#-;!=YǶ/^a耉> :@;< ڙO=<|_t23 ޗ}~耩n O̽Q?ْwTVeLes|w01gvT+ӈ6y^Js^ޠglA[fZs9>o1{[G]/uQJmO{\A-H)v1| %wrǧU{>ҸcmH@H<}ziՐς|c ^MfHVg=va˜/rw:E;`;Ae?&zx^=dfa\w5>>ݣw$#ڗ}!c5mCv ҹG/KtWta){)y}VXF('dgӧ)'du3"?w (Wi?hf19oNOα5W9ί2?\zWLJ>| TK?JFܟ5 -1OSM n 럆L<_їrDefault GFʠN=x1 }}TK?JFܟ5Z`Ez]UOͽ>fdN*5Ւhx, }}TK?JFܟ5Z`Ez]UO GFʠN= = }} Control Out2|=BynjZ`Ez]UOz@Ho48@J `g4RJLUDD2|=BynjKz@Ho <@kg'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>??.'@Fgʒ@/Project/railextrudescn/Cube, 1ceZU@䑧r[җJs@ ^ NewCommand //savecurveref //Jan 2011 //saves curve reference and renters PE mode // // Execute // Called to execute the command function Execute(params) { var peobj = params.ConValue('peobj'); var origselect = params.ConValue('origselect'); //clear the status line if(Node.Exists("/Status Line")) { if(Node.ConExists("/Status Line","Model")) { Node.Value("/Status Line","Model") = ""; } } owner = System.ThisOwner(); scene = Space.CurrentScene(); //stop waiting for curve selection Node.Value(owner + "/Selection Change Event","Active") = false; //make sure valid selection firstSel = Node.FirstSelected(); if(!firstSel) { System.Alert("Nothing selected."); return; } if(!Node.ConExists(firstSel,"Mesh") || Node.IsCamera(firstSel) || Node.IsLight(firstSel)) { System.Alert("Not a valid curve selection"); return; } params.ConValue("curveobj") = firstSel; //move the lookat references into the scene if(!Node.Exists(scene + "/latheGuides")) Node.Copy(owner + "/latheGuides", scene); //select the original mesh object Node.Select(peobj); //reenter PE mode MeshModifiers.ActivatePointEditWidget('','','Default'); //reapply the saved selection Node.Value(peobj,"Selection") = origselect; Activity.Run(owner + "/selectTriangleMode");//go to next step } NScript Object Package/jScript language stringcurveobj<@k`g4RJLUDԳ3E^F4W}@O{(XFҦV>g'JNjn*pn`yCb@@X@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ۙ>?3E^Fz@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand//uvadjustIt //Jan 2011 //set uv values for the sweep to evenly fit in the 0->1 uv v space // // the sweep results in the last face selected with vertex indices starting at zero // the vertex indices continue up the sweep in order(very convenient) // // 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'); firstsel = Node.FirstSelected(); basecone = arraynode; 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(); numverts = ncVert.GetNumVertices(); scene = Space.CurrentScene(); //vertex selection Node.Value('/Preferences/Mesh Editor Settings','PE selection mode') = 'vertex'; MeshModifiers.ConvertSelection('',''); sel = System.CreateDO("Space 3D Package/Selection Data"); sel = Node.Value(firstsel, "Selection"); numselverts = sel.GetNumSelectedVertices(); //exit PE mode Widgets.ActivateDefaultWidget(); curvert = 0; dM = System.CreateDO("Space 3D Package/Mesh Data"); dM = Node.Value(firstsel,"Mesh"); //dV = System.CreateDO("Space 3D Package/Vertex Stream Data"); dF = System.CreateDO("Space 3D Package/Triangle Vertices Stream Data"); dT = System.CreateDO("Space 3D Package/UV Coordinate Stream Data"); UVTri = System.CreateDO("Space 3D Package/UV Triangle Stream Data"); dF = dM.GetTriangles(); dT = dM.GetCustStreamByName("UV Coordinate Stream Data"); UVTri = dM.GetTrianglesStreamByName("UV Triangle Stream Data"); numtri = dM.GetNumTriangles(); for(railseg=numverts-3;railseg>=0;railseg--) { //set v value of uv of current segment for(j=0;j<numselverts;j++) { vertind = curvert + j; //look at every triangle since a vertex can have more than one uv value for(k=0;k<numtri;k++) { //check each triangle vertex index for a match with the current vertex if(dF.i(k)==vertind) { //get the uv index from the corresponding uv triangle index uvind = UVTri.i(k); dT.v(uvind) = railseg/(numverts-3); } if(dF.j(k)==vertind) { uvind = UVTri.j(k); dT.v(uvind) = railseg/(numverts-3); } if(dF.k(k)==vertind) { uvind = UVTri.k(k); dT.v(uvind) = railseg/(numverts-3); } } } curvert = curvert + numselverts; } dM.AttachCustStream(dT);//save new uv values back to the mesh Node.Value(firstsel + "/Editable shape","Input Mesh") = dM; //restore face selection //Node.Value('/Preferences/Mesh Editor Settings','PE selection mode') = 'face'; //MeshModifiers.ConvertSelection('',''); } NScript Object Package/jScript language~൱D_ #^cstringorigobjectTi;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/Cylinder4W}@O{(XFҦV>g'JNjn*pnFCb@@\@2|=Bynj|?z@Hoۙ>??(s]LL#r`^02eE{|@B]=3йd5ĵ5?[])?ɆAW μ>`g4RJLUDGy05Mh&ep_:/Project/railextrudescn/ConeJ@#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=K$extendCurveScriptxL.;]kI 忞@"XXEL4W}@O{$(XFҦV"-1OSM n"(XFҦV>g'JNjn*pFDCe@@@B?-1OSM n 럆L<_ї˜ GFʠN=ڏ,}} version 1.0Z`Ez]UO}}48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ B*NewCommand)//appendCP //Jan 2011 //bad script name should be extendCurve //lengthens a curve by adding a set of control points to the start or end of a curve // // Execute // Called to execute the command function Execute(params) { firstsel = Node.FirstSelected(); if(!Node.ConExists(firstsel,"Selection")) { System.Alert("PE mode first."); return; } //control point mesh cpmesh = System.CreateDO("Space 3D Package/Mesh Data"); cpmesh = Node.Value(firstsel,"Mesh"); totvert = cpmesh.GetNumVertices(); scene = Node.Owner(firstsel); owner = System.ThisOwner(); sel = System.CreateDO("Space 3D Package/Selection Data"); sel = Node.Value(firstsel,"Selection"); numverts = sel.GetNumSelectedVertices(); if(numverts != 1) { System.Alert("Select one of the end control point first."); return; } //make sure vertex is an end handle root handleindex = sel.GetSelectedVertexIndex(0);//index 0 only one vertex selected if(handleindex != 0 && handleindex != totvert-3) { System.Alert("Selected vertex must be at the end or beginning of the curve."); return; } //exit PE mode Widgets.ActivateDefaultWidget(); //set new cp cone segments newvertcount = totvert + 3; newsegcount = (totvert-2) + 3;//old seg count plus 3 Node.Value(owner + "/controlPointCone/Cone primitive","Radial segments") = newsegcount; //new control point cone mesh conemesh = System.CreateDO("Space 3D Package/Mesh Data"); conemesh = Node.Value(owner + "/controlPointCone","Mesh"); //set edge visibility faceEdgesCP = System.CreateDO('Space 3D Package/Face Edges Stream Data'); faceEdgesCP = conemesh.GetTrianglesStreamByName("Face Edges Stream Data"); numtri = faceEdgesCP.GetNumTriangleEdges(); //make all edges invisible for(i=0;i<numtri;i++) { faceEdgesCP.edges(i) = 0; } noncontroledgetri = 2; for(i=0;i<numtri;i++) { testodd = i % 2; if(testodd==0) faceEdgesCP.edges(i) = 1; if(i==numtri-2) faceEdgesCP.edges(i) = 0; if(i==noncontroledgetri) { faceEdgesCP.edges(i) = 0; noncontroledgetri = noncontroledgetri + 6; } } conemesh.AttachTrianglesStream(faceEdgesCP); //set vertex locations oldVerts = System.CreateDO("Space 3D Package/Vertex Stream Data"); oldVerts = cpmesh.GetVertices(); newVerts = System.CreateDO("Space 3D Package/Vertex Stream Data"); newVerts = conemesh.GetVertices(); tmppoint1 = System.CreateDO("Math Package/Point Data"); tmppoint2 = System.CreateDO("Math Package/Point Data"); delta = System.CreateDO("Math Package/Point Data"); pindex = -1; //if first vertex selected add to the start of the curve if(handleindex==0) { tmppoint1.x = oldVerts.x(1);//next to end tmppoint1.y = oldVerts.y(1); tmppoint1.z = oldVerts.z(1); tmppoint2.x = oldVerts.x(0);//the end tmppoint2.y = oldVerts.y(0); tmppoint2.z = oldVerts.z(0); delta.x = tmppoint2.x - tmppoint1.x ; delta.y = tmppoint2.y - tmppoint1.y ; delta.z = tmppoint2.z - tmppoint1.z ; newVerts.x(2) = tmppoint2.x + delta.x ; newVerts.y(2) = tmppoint2.y + delta.y ; newVerts.z(2) = tmppoint2.z + delta.z ; newVerts.x(1) = newVerts.x(2) + delta.x ; newVerts.y(1) = newVerts.y(2) + delta.y ; newVerts.z(1) = newVerts.z(2) + delta.z ; newVerts.x(0) = newVerts.x(1) + delta.x ; newVerts.y(0) = newVerts.y(1) + delta.y ; newVerts.z(0) = newVerts.z(1) + delta.z ; pindex = 2; } //copy the old vertices for(i=0;i<totvert;i++) { pindex++; newVerts.x(pindex) = oldVerts.x(i); newVerts.y(pindex) = oldVerts.y(i); newVerts.z(pindex) = oldVerts.z(i); } //if last vertex selected add to the end of the curve if(handleindex==totvert-3) { tmppoint1.x = oldVerts.x(totvert-4);//next to end tmppoint1.y = oldVerts.y(totvert-4); tmppoint1.z = oldVerts.z(totvert-4); tmppoint2.x = oldVerts.x(totvert-3);//the end tmppoint2.y = oldVerts.y(totvert-3); tmppoint2.z = oldVerts.z(totvert-3); delta.x = tmppoint2.x - tmppoint1.x ; delta.y = tmppoint2.y - tmppoint1.y ; delta.z = tmppoint2.z - tmppoint1.z ; pindex = totvert-2; newVerts.x(pindex) = tmppoint2.x + delta.x ; newVerts.y(pindex) = tmppoint2.y + delta.y ; newVerts.z(pindex) = tmppoint2.z + delta.z ; pindex++; newVerts.x(pindex) = newVerts.x(pindex-1) + delta.x ; newVerts.y(pindex) = newVerts.y(pindex-1) + delta.y ; newVerts.z(pindex) = newVerts.z(pindex-1) + delta.z ; pindex++; newVerts.x(pindex) = newVerts.x(pindex-1) + delta.x ; newVerts.y(pindex) = newVerts.y(pindex-1) + delta.y ; newVerts.z(pindex) = newVerts.z(pindex-1) + delta.z ; //original last 2 vertices of the mesh, top and bottom of the cone pindex++; newVerts.x(pindex) = oldVerts.x(totvert-2); newVerts.y(pindex) = oldVerts.y(totvert-2); newVerts.z(pindex) = oldVerts.z(totvert-2); pindex++; newVerts.x(pindex) = oldVerts.x(totvert-1); newVerts.y(pindex) = oldVerts.y(totvert-1); newVerts.z(pindex) = oldVerts.z(totvert-1); } conemesh.AttachVerticesStream(newVerts); //copy mesh to the cpmesh editable shape input mesh Node.Value(firstsel + "/Editable shape","Input Mesh") = conemesh; //reenter PE mode MeshModifiers.ActivatePointEditWidget('','','Default'); } NScript Object Package/jScript language~൱D #^c4W}@O{(XFҦV>g'JNjn*pnkDA`@@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܂dKu=B"controlPointCone C.;]kI 忞@"XCRx$NXE4W}@O{$ G?ŋXFtveDCE`"IWJZ̚K `HF׊;Jf|ڢZ̚I `HG偢jD%~`8Z`HWAGAH<ĠF姁J]\X@$1&KߊPV$J-V?XM%L (XFҦV"KS $hKnPSVm4M -1OSM n" -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pFvDCb@ d@A?׊;Jf|ڢWAG`^02eE{|@B???? G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0{`D@}㒱KCone primitive LtveDCE`"IWJPBXFM*tL V0*PpLM1)ps6DU9rLpLN@,G8R(pLNH=1Gn@`U)pLPDMN{ g;pLQ[T}lAuܿxjpLQBƆK``;a!pLR4W}@O{$(XFҦV"-1OSM n" *tL V0*P[T}lAuܿxj(XFҦV>g'JNjn*pFCNCb@ b@?@,G8R(BA-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 List#.;]kI 忞@"+@x$4W}@O{$$-V?XM%J(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%(,Material List Manager)-V?XM%P$X+&zB}J?p)+4W}@O{$X,=ө6I)])p)-V?XM%=ө6I)])&zB}J?܂dKu=̓Material 0.;]kI 忞@"H@4W}@O{$gYأC۲+?X,gYأC۲+?b=h0CRfԗ0Material Flavor ManagerȘgYأC۲+?PH!EJGWMpȘȚ6~qK;2t&pȘH4W}@O{$ț?.9>DGl{?pȘ!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀D Solid .F_P#T.F_P#Material Output material __W8E#(țn%⟀A}aJp>]zJ4 pJ.HE /*gp8VnZN:W ppll-#Ez k^pK#uiL$p,L?D}p4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????.F_P#,L?D}ll-#Ez k^K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabled8VnZN:W p?qU F3fD2Object Render AttributesxES $hKnPSVmPKE8Ns2]pxExF^mګA~Ksi[pxEF(lrsGrpxExG\Eh{5pxEG"PbEGDߗrpxExIF?N dpxEI]*qBCxpxExJ\J:I%7upxEKiA޲1rIK>XpxE@L,ot"AaYpxEL^RI8ÿRpxE@MçwH5#VpxEN4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"xQo[nfFpxEQzgGFohN)pxExSvhD zʔpxEW0@zdW0@zd$VersionVersion$8Uȅ8vDCxZpxEUF+2MGpxE8VI2GWM:).$pxEVmBޖw ppxEWfB #^pxE0X|$}mK;)p xEXrg@*oHp xE0Y!eLZE^Np xEYpSLDMF:ɅDzgGFohN)I2GWM:).$ ]*qBCx?S $hKnPSVmvhD zʔçwH5#V rg@*oH4W}@O{\J:I%7u-n,Njlpgd?==?\Eh{5-n,Njlpg????fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort(XFҦV>g'JNjn*pFCg'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 u8DMhbEOwnerName6Vg'JNjn*pF DCd@@@LCB?-1OSM n 럆L<_ї˛ GFʠN=H؏+}} versin 1.0Z`Ez]UO}}48@J  addCP 2|=Bynj2AEHM'ceZU@䑧r%@4W}@O{$(XFҦVLE2Data, 1#Az@HoMT^RwL~YYTLE2Data, 2J@#QLLE2Data, 3-1OSM n# 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand8//addCP //Jan 2011 // insert a control point into a curve segment // // Execute // Called to execute the command function Execute(params) { firstsel = Node.FirstSelected(); //i dont think this ever gets executed - safety first if(!Node.ConExists(firstsel,"Selection")) { System.Alert("Select an edge first."); return; } cpmesh = System.CreateDO("Space 3D Package/Mesh Data"); cpmesh = Node.Value(firstsel,"Mesh"); totvert = cpmesh.GetNumVertices(); scene = Node.Owner(firstsel); owner = System.ThisOwner(); sel = System.CreateDO("Space 3D Package/Selection Data"); sel = Node.Value(firstsel,"Selection"); numverts = sel.GetNumSelectedVertices(); //one edge == two vertices if(numverts != 2) { System.Alert("Select a non-control edge first."); return; } //selection is automatically in vertex order firstindex = sel.GetSelectedVertexIndex(0); secondindex = sel.GetSelectedVertexIndex(1); //exit PE mode Widgets.ActivateDefaultWidget(); //set new cp cone segments newvertcount = totvert + 3; newsegcount = (totvert-2) + 3;//old seg count plus 3 Node.Value(owner + "/controlPointCone/Cone primitive","Radial segments") = newsegcount; conemesh = System.CreateDO("Space 3D Package/Mesh Data"); conemesh = Node.Value(owner + "/controlPointCone","Mesh"); //set edge visibility faceEdgesCP = System.CreateDO('Space 3D Package/Face Edges Stream Data'); faceEdgesCP = conemesh.GetTrianglesStreamByName("Face Edges Stream Data"); numtri = faceEdgesCP.GetNumTriangleEdges(); //make all edges invisible for(i=0;i<numtri;i++) { faceEdgesCP.edges(i) = 0; } noncontroledgetri = 2; for(i=0;i<numtri;i++) { testodd = i % 2; if(testodd==0) faceEdgesCP.edges(i) = 1; if(i==numtri-2) faceEdgesCP.edges(i) = 0; if(i==noncontroledgetri) { faceEdgesCP.edges(i) = 0; noncontroledgetri = noncontroledgetri + 6; } } conemesh.AttachTrianglesStream(faceEdgesCP); //set vertex locations oldVerts = System.CreateDO("Space 3D Package/Vertex Stream Data"); oldVerts = cpmesh.GetVertices(); newVerts = System.CreateDO("Space 3D Package/Vertex Stream Data"); newVerts = conemesh.GetVertices(); tmppoint1 = System.CreateDO("Math Package/Point Data"); tmppoint2 = System.CreateDO("Math Package/Point Data"); delta = System.CreateDO("Math Package/Point Data"); tmppoint1.x = oldVerts.x(firstindex);// tmppoint1.y = oldVerts.y(firstindex); tmppoint1.z = oldVerts.z(firstindex); tmppoint2.x = oldVerts.x(secondindex);// tmppoint2.y = oldVerts.y(secondindex); tmppoint2.z = oldVerts.z(secondindex); delta.x = tmppoint2.x - tmppoint1.x ;//get magnitude and direction of the segment delta.y = tmppoint2.y - tmppoint1.y ; delta.z = tmppoint2.z - tmppoint1.z ; pindex = -1; //copy verts for(i=0;i<totvert;i++) { pindex++; newVerts.x(pindex) = oldVerts.x(i); newVerts.y(pindex) = oldVerts.y(i); newVerts.z(pindex) = oldVerts.z(i); //add new points between the first and second vertex selected(via edge) //new controls at 25,50 and 75% along the segment if(i==firstindex) { pindex++; newVerts.x(pindex) = oldVerts.x(i) + 0.25*delta.x ; newVerts.y(pindex) = oldVerts.y(i) + 0.25*delta.y ; newVerts.z(pindex) = oldVerts.z(i) + 0.25*delta.z ; pindex++; newVerts.x(pindex) = oldVerts.x(i) + 0.5*delta.x ; newVerts.y(pindex) = oldVerts.y(i) + 0.5*delta.y ; newVerts.z(pindex) = oldVerts.z(i) + 0.5*delta.z ; pindex++; newVerts.x(pindex) = oldVerts.x(i) + 0.75*delta.x ; newVerts.y(pindex) = oldVerts.y(i) + 0.75*delta.y ; newVerts.z(pindex) = oldVerts.z(i) + 0.75*delta.z ; } } conemesh.AttachVerticesStream(newVerts); //copy mesh to the cpmesh editable shape input mesh Node.Value(firstsel + "/Editable shape","Input Mesh") = conemesh; //reenter PE mode MeshModifiers.ActivatePointEditWidget('','','Default'); } NScript Object Package/jScript language~൱De #^c4W}@O{(XFҦV>g'JNjn*pnCBb@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="controlPointCone x.;]kI 忞@"~p(أ4W}@O{$ G?ŋtveDCE`"IWJZXTR `Hx׊;Jf|ڢZ8wP `H偢jD%~`8Z WAG| <ĠF姁J]\|$1&KߊPV$H"-V?XM%R (XFҦV"H#S $hKnPSVm`S -1OSM n" -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pFSCb@ d@A?׊;Jf|ڢWAG`^02eE{|@B???? G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0{`D@}㒱<Cone primitive 0tveDCE`"IWJPB*tL V0*Pp001)ps6DU9rLp0@,G8R(p00H=1Gn@`U)p0DMN{ g;p0p[T}lAuܿxjp0BƆK``;a!p0p4W}@O{$(XFҦV"-1OSM n" *tL V0*P[T}lAuܿxj(XFҦV>g'JNjn*pFCNCb@ b@?@,G8R(BAH=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 ListP.;]kI 忞@"ֺ(ܺ4W}@O{$P-V?XM%H"(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%<ź,Material List Manager0Ǻ-V?XM%PPhֺ&zB}J?p0Ǻֺ4W}@O{$h׺=ө6I)])p0Ǻ-V?XM%&zB}J?=ө6I)])܂dKu=ںMaterial 0ۺ.;]kI 忞@"0(ܺ4W}@O{$ܺgYأC۲+?h׺gYأC۲+?b=h0CRf޺0Material Flavor ManagerߺgYأC۲+?Pܺ0!EJGWMpߺ6~qK;2t&pߺ04W}@O{$?.9>DGl{?pߺ!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀Dl Solid .F_P#T.F_P#Material Output material __W8E#(n%⟀A}aJpH>]zJ4 pJ.HE /*gpH8VnZN:W ppPll-#Ez k^pK#uiL$pP,L?D}p4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????,L?D}.F_P#K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabledll-#Ez k^8VnZN:W p?qU F3f2Object Render AttributesS $hKnPSVmPH#X8Ns2]p^mګA~Ksi[pX(lrsGrp\Eh{5pX"PbEGDߗrpF?N dpX]*qBCxp\J:I%7up iA޲1rIK>Xp,ot"AaYp ^RI8ÿRpçwH5#Vp(4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"o[nfFpXzgGFohN)pvhD zʔpW0@zdW0@zd$VersionVersion$ȅ8vDCxZpF+2MGpI2GWM:).$pmBޖw ppfB #^p|$}mK;)p rg@*oHp !eLZE^Np pSLDMF:ɅDI2GWM:).$ zgGFohN)vhD zʔS $hKnPSVm]*qBCx?rg@*oHçwH5#V 4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\Eh{5-n,Njlpg????\J:I%7u-n,Njlpgd?==?pSLDMF:Ʌ\/Project/mycurve/nurbsCurves/controlPointCone(XFҦV>g'JNjn*pFCg'JNjn*pFzCCb@q@?W0@zdo[nfFmBޖw p,ot"AaY -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!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X u8DMhbEdOwnerNameX6Vg'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand //changeEdges //Jan 2011 //makes the edge segments between curve handles visible // and makes the handles invisible - new cp added in between // can only select visible line segments // // Execute // Called to execute the command function Execute(params) { // TODO: put your action code here firstsel = Node.FirstSelected(); if(!Node.ConExists(firstsel,"Selection")) { System.Alert("PE mode first."); return; } cpmesh = System.CreateDO("Space 3D Package/Mesh Data"); cpmesh = Node.Value(firstsel,"Mesh"); totvert = cpmesh.GetNumVertices(); //set edge visibility faceEdgesCP = System.CreateDO('Space 3D Package/Face Edges Stream Data'); faceEdgesCP = cpmesh.GetTrianglesStreamByName("Face Edges Stream Data"); numtri = faceEdgesCP.GetNumTriangleEdges(); //make all edges invisible for(i=0;i<numtri;i++) { faceEdgesCP.edges(i) = 0; } noncontroledgetri = 2; for(i=0;i<numtri;i++) { testodd = i % 2;//top "half" of cone triangles 0,2,4,6... if(testodd==0) { //set for next non control edge segment if(i==noncontroledgetri) { faceEdgesCP.edges(i) = 1; noncontroledgetri = noncontroledgetri + 6; } } if(i==numtri-2) faceEdgesCP.edges(i) = 0;//only open curves so open last segment } cpmesh.AttachTrianglesStream(faceEdgesCP); Node.Value(firstsel + "/Editable shape","Input Mesh") = cpmesh; } NScript Object Package/jScript language~൱D #^c4W}@O{(XFҦV>g'JNjn*pnBAb@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 + "/Selection Change Event","Active") = false; // 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 string PEselectionModeb/pEj F4W}@O{b/pEj Fface edge(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 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*pnBBb@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@ NewCommandV//refreshCurve //jan 2011 // first step of the insert control point for a curve // // point edit alters the order of triangle indices // so rebuild the curve from a fresh cone before adding points // note that point indices are not affected by pe move etc, just triangle indices // // Execute // Called to execute the command function Execute(params) { firstsel = Node.FirstSelected(); if(!Node.ConExists(firstsel,"Selection")) { System.Alert("PE mode first."); return; } cpmesh = System.CreateDO("Space 3D Package/Mesh Data"); cpmesh = Node.Value(firstsel,"Mesh"); totvert = cpmesh.GetNumVertices(); scene = Node.Owner(firstsel); owner = System.ThisOwner(); //exit PE mode Widgets.ActivateDefaultWidget(); //set new cp cone segments newvertcount = totvert; newsegcount = (totvert-2);//old seg count Node.Value(owner + "/controlPointCone/Cone primitive","Radial segments") = newsegcount; conemesh = System.CreateDO("Space 3D Package/Mesh Data"); conemesh = Node.Value(owner + "/controlPointCone","Mesh"); //set edge visibility faceEdgesCP = System.CreateDO('Space 3D Package/Face Edges Stream Data'); faceEdgesCP = conemesh.GetTrianglesStreamByName("Face Edges Stream Data"); numtri = faceEdgesCP.GetNumTriangleEdges(); //make all edges invisible for(i=0;i<numtri;i++) { faceEdgesCP.edges(i) = 0; } noncontroledgetri = 2; for(i=0;i<numtri;i++) { testodd = i % 2; if(testodd==0) faceEdgesCP.edges(i) = 1; if(i==numtri-2) faceEdgesCP.edges(i) = 0; if(i==noncontroledgetri) { faceEdgesCP.edges(i) = 0; noncontroledgetri = noncontroledgetri + 6; } } conemesh.AttachTrianglesStream(faceEdgesCP); //set vertex locations oldVerts = System.CreateDO("Space 3D Package/Vertex Stream Data"); oldVerts = cpmesh.GetVertices(); newVerts = System.CreateDO("Space 3D Package/Vertex Stream Data"); newVerts = conemesh.GetVertices(); tmppoint1 = System.CreateDO("Math Package/Point Data"); tmppoint2 = System.CreateDO("Math Package/Point Data"); //delta = System.CreateDO("Math Package/Point Data"); pindex = -1; //copy vertices for(i=0;i<totvert;i++) { pindex++; newVerts.x(pindex) = oldVerts.x(i); newVerts.y(pindex) = oldVerts.y(i); newVerts.z(pindex) = oldVerts.z(i); } conemesh.AttachVerticesStream(newVerts); //copy mesh to the cpmesh editable shape input mesh Node.Value(firstsel + "/Editable shape","Input Mesh") = conemesh; //reenter PE mode MeshModifiers.ActivatePointEditWidget('','','Default'); } NScript Object Package/jScript language~൱Dl#^c4W}@O{(XFҦV>g'JNjn*pnA`@@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) { // 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'; Node.Value("/Preferences/Mesh Editor Settings", "PE selection mode") = "face edge"; MeshModifiers.ActivatePointEditWidget('','','Default'); } NScript Object Package/jScript languagelstring PEselectionModeb/pEj F4W}@O{b/pEj Fvertex(XFҦV>g'JNjn*pnCpAb@@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@ hNewCommand//activateWait //Jan 2011 // start a wait for an edge selection loop // // Execute // Called to execute the command function Execute(params) { //paint select mode ScriptObject.RunCmd("mesh modifiers package/activate point edit widget", "Widget group", "{E8913C00-9A2A-43cf-8238-27B4BFB50A1F}", "Widget", "/Widgets/Tools/Mesh editor/PE basic select", "Aspect", "Default", "Selection", ""); Node.Value("/Preferences/Mesh Editor Settings", "PE selection tool") = "/Widgets/Tools/Mesh editor/PE basic select"; owner = System.ThisOwner(); Activity.Run(owner + "/Run Activity"); } NScript Object Package/jScript language~൱D|#^c4W}@O{(XFҦV>g'JNjn*pnDAb@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$ˋ%J)bkgLRun Activity M2|=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*pO4W}@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 asvHhTG$ 2|=Bynj,EwN:'eW[>g'JNjn*pFAC7C`@c@?19&FYL(W,>g'JNjn*pFCB`@c@?4W}@O{(XFҦV>g'JNjn*pF@ dBa@@T@? asvHhTGeSBgc  TO 1BÕrCWrxxǟ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ۙ>?u"MLeL ceZU@䑧r[җJs@ ,NewCommand// PEChangeDetect // Jan 2010 // Jan 2011 - use for edge selection detect // // // point edit selection detector - wait for PE selection // // Clinton Reese // // Execute // Called to execute the command function Execute(params) { sel = Node.FirstSelected();//get selected object //if not in point edit mode return if(!Node.ConExists(sel,"Selection")) return; //get the mesh and read it's selection data - IRdMeshSelection themesh = Node.Value(sel,"Mesh"); seldata = System.CreateDO('Space 3D Package/Selection Data'); seldata = Node.Value(sel,"Selection"); //return if edge selection count is zero edgecount = seldata.GetNumSelectedEdges(); if(edgecount==0) { params.ConValue("loop") = 1;//loop until an edge is selected return; } params.ConValue("exitLoop") = 1;//continue to next step }NScript Object Package/jScript language~൱D  #^cintpreviousVertexωmC MintexitLoopA AC(OS:oint loopu"MLeL 4W}@O{(XFҦV>g'JNjn*pnSCb@@T@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?ωmC M-1OSM n 럆L<_їjControlOˁ CRih[ Ca8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0 Ca:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOA AC(OS:oMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho܂dKu=,Ī2deleteControlPointScript Ū.;]kI 忞@"ѪhŪ4W}@O{$(XFҦV"-1OSM n"(XFҦV>g'JNjn*pF`DCd@@@#B?-1OSM n 럆L<_ї˜ GFʠN=֏,}} Version 1.0Z`Ez]UO}}48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand//deleteCP //Jan 2011 // delete a curve control point and it's handles(neighbor control points) // // Execute // Called to execute the command function Execute(params) { firstsel = Node.FirstSelected(); if(!Node.ConExists(firstsel,"Selection")) { System.Alert("Start PE mode first."); return; } //get the control point mesh cpmesh = System.CreateDO("Space 3D Package/Mesh Data"); cpmesh = Node.Value(firstsel,"Mesh"); totvert = cpmesh.GetNumVertices(); //curve made from cone mesh so vertex count top+bottom+cp >= 1+1+4 if(totvert < 7) { System.Alert("Curve must have more than 4 control points."); return; } scene = Node.Owner(firstsel); owner = System.ThisOwner(); sel = System.CreateDO("Space 3D Package/Selection Data"); sel = Node.Value(firstsel,"Selection"); numverts = sel.GetNumSelectedVertices(); if(numverts != 1) { System.Alert("Select one control point first."); return; } //make sure vertex is the root of a handle //index 0,3,6 etc handleindex = sel.GetSelectedVertexIndex(0);//index 0 only one selected handletest = handleindex % 3; if(handletest != 0) { System.Alert("Selected vertex must be the root of a handle."); return; } //save cp values minus the deleted handle and it's 2(middle) or 1(end) neighbors vertexList = System.CreateDO("Common Data Package/Int Array Data"); for(i=0;i<totvert-2;i++) { //cases delete first, delete last, delete middle if(handleindex==0) { if(i>2) vertexList.Add(i); } else if(handleindex==totvert-3) { if(i<totvert-5) vertexList.Add(i); } else if(i!=handleindex && i!=handleindex+1 && i!=handleindex-1) vertexList.Add(i); } //top and bottom of the cone vertexList.Add(totvert-2); vertexList.Add(totvert-1); //exit PE mode Widgets.ActivateDefaultWidget(); //set new cp cone segments newvertcount = vertexList.GetSize(); newsegcount = newvertcount - 2; Node.Value(owner + "/controlPointCone/Cone primitive","Radial segments") = newsegcount; conemesh = System.CreateDO("Space 3D Package/Mesh Data"); conemesh = Node.Value(owner + "/controlPointCone","Mesh"); //set edge visibility to resemble bezier handles faceEdgesCP = System.CreateDO('Space 3D Package/Face Edges Stream Data'); faceEdgesCP = conemesh.GetTrianglesStreamByName("Face Edges Stream Data"); numtri = faceEdgesCP.GetNumTriangleEdges(); //make all edges invisible for(i=0;i<numtri;i++) { faceEdgesCP.edges(i) = 0; } noncontroledgetri = 2;//first triangle index with all edges invisible for(i=0;i<numtri;i++) { testodd = i % 2;//cone mesh "top" half only if(testodd==0) faceEdgesCP.edges(i) = 1; if(i==numtri-2) faceEdgesCP.edges(i) = 0;//last segment invisible(otherwise looks like closed curve if(i==noncontroledgetri) { faceEdgesCP.edges(i) = 0; noncontroledgetri = noncontroledgetri + 6;//update to next invisible triangle } } conemesh.AttachTrianglesStream(faceEdgesCP); //set vertex locations oldVerts = System.CreateDO("Space 3D Package/Vertex Stream Data"); oldVerts = cpmesh.GetVertices(); newVerts = System.CreateDO("Space 3D Package/Vertex Stream Data"); newVerts = conemesh.GetVertices(); for(i=0;i<newvertcount;i++) { newVerts.x(i) = oldVerts.x(vertexList.GetAt(i)); newVerts.y(i) = oldVerts.y(vertexList.GetAt(i)); newVerts.z(i) = oldVerts.z(vertexList.GetAt(i)); } conemesh.AttachVerticesStream(newVerts); //copy mesh to the cpmesh editable shape input mesh Node.Value(firstsel + "/Editable shape","Input Mesh") = conemesh; //reenter PE mode MeshModifiers.ActivatePointEditWidget('','','Default'); } NScript Object Package/jScript language~൱D\#^c4W}@O{(XFҦV>g'JNjn*pnyD`B`@@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܂dKu=g"controlPointCone (h.;]kI 忞@"~   Hp"h4W}@O{$ G?ŋitveDCE`"IWJZȨ(X `H(j׊;Jf|ڢZ觩 V `H0k偢jD%~`8ZkWAG8}0l<ĠF姁J]\|$1&KߊPV$m-V?XM%Y (XFҦV"nS $hKnPSVm`´Y -1OSM n" -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pFvDCb@ d@A?׊;Jf|ڢWAG`^02eE{|@B???? G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0{`D@}㒱 Cone primitive  tveDCE`"IWJPBi *tL V0*Pp  1)ps6DU9rLp  @,G8R(p  H=1Gn@`U)p  DMN{ g;p  [T}lAuܿxjp  BƆK``;a!p  4W}@O{$(XFҦV"-1OSM n" *tL V0*P[T}lAuܿxj(XFҦV>g'JNjn*pFCNCb@ b@?@,G8R(BAH=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 List.;]kI 忞@"(4W}@O{$-V?XM%m(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%,Material List Manager-V?XM%Ph&zB}J?p4W}@O{$h=ө6I)])p-V?XM%&zB}J?=ө6I)])܂dKu=Material 0.;]kI 忞@"0( (4W}@O{$gYأC۲+?hgYأC۲+?b=h0CRf0Material Flavor ManagergYأC۲+?P0!EJGWMp6~qK;2t&p04W}@O{$?.9>DGl{?p!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀Dl Solid .F_P#T.F_P#Material Output material __W8E#(pn%⟀A}aJp >]zJ4 p  J.HE /*gp 8VnZN:W pp ll-#Ez k^p( K#uiL$p ,L?D}p( 4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????,L?D}.F_P#K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabledll-#Ez k^8VnZN:W p?qU F3f 2Object Render Attributes S $hKnPSVmPn 8Ns2]p  ^mګA~Ksi[p  (lrsGrp  \Eh{5p  "PbEGDߗrp  F?N dp  ]*qBCxp  \J:I%7up  iA޲1rIK>Xp ` ,ot"AaYp  ^RI8ÿRp ` çwH5#Vp  4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1" o[nfFp  zgGFohN)p  vhD zʔp W0@zdW0@zd$VersionVersion$X ȅ8vDCxZp  F+2MGp X  I2GWM:).$p  mBޖw pp X"fB #^p X"|$}mK;)p  Y"rg@*oHp  Z"!eLZE^Np  ["pSLDMF:ɅDI2GWM:).$ zgGFohN)vhD zʔS $hKnPSVm]*qBCx?rg@*oHçwH5#V 4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\Eh{5-n,Njlpg????\J:I%7u-n,Njlpgd?==?pSLDMF:Ʌ\/Project/mycurve/nurbsCurves/controlPointCone(XFҦV>g'JNjn*pFCg'JNjn*pFzCCb@q@?W0@zdo[nfFmBޖw p,ot"AaY -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!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X u8DMhbEn"OwnerNameo"6VǑJ]@<N{2BBC850E-6EEF-4364-9265-A4A606AE464B}N="QEj%:/ru|GF0N{5B44AED2-C4BF-460B-A1D9-7C83F91B307A}$ܿORE bi(XFҦV>g'JNjn*pFDCb@z@?+fyOA7XC8{Nm(! ][D+Iv( ko6ˁwpen_<&KES Qextendcurve?Aυ D)7tUTl@fC.^&GZo(K ]p dextend curve]8teO?s-1OSM n 럆L<_ї0Sr)B8 sH?DCDNOQsP'ѭeSBgcT C:\Documents and Settings\Clinton\My Documents\My Pictures\extendCurveIcon.bmp TO 1BÕrCWv xylefklD!D7B82tnk>_nHb&cAHFx$Ȁġ`Pm}P UU㸇*ʠ͡  {HyrGEb ,{K. AE0:EE:5<*D%]U@&$Y$JR,FbU Oɧ r@A`ŕ;rs^)qER՛BXQQfKb$o^୺n7 ^C@mlj÷G\7}/mx>T%oWR9JMOtM]؆S=]y,BkqUb/yߕ>Jk{K0uo *JU#Kԓ4MPTiRߦKv3?E7acdCL]2A% ׯ>Q],gH=DRN6zsSm@*G2^ҟ`{/|SO*PE:Z .'pxρY ϒ;aS3멼C'6~?nQhOFY\e%[clH, .䎆U+S硐J쟻漉_&1aʠ)ŧq~d:6T2`ʗ4 ٣Ku%Mͺ/NQ"Qg1wx|ph\TGoct.^}gx>ݝ݋{;=8;~mgD9}ŏ01TVU绻>˟+wV(0&R/$ķKniaW,2insertControlPointButton.;]kI 忞@"4W}@O{$n_<&KES Qo(K ]p dQm6l3Ll/V^N="QEj%:$ܿORE bi*S]?G[~x;'0#ԪC'X/9}'0#ԪC'X/9} IndexItem IndexSr)B8DNOQsP'ѭiDsL[w4E*h>ǑJ]@<+fyOA7XCTl@fC.^&GZh0OY~ C ]8teO?s sH?DCIlfāA>ˁw/ru|GF0][D+Iv(?Aυ D)7t8{Nm(!(XFҦV"-1OSM n"ko6ǑJ]@<N{2BBC850E-6EEF-4364-9265-A4A606AE464B}N="QEj%:/ru|GF0N{5B44AED2-C4BF-460B-A1D9-7C83F91B307A}$ܿORE bi(XFҦV>g'JNjn*pFDCb@z@?+fyOA7XC8{Nm(! ][D+Iv( ko6ˁwpen_<&KES Qinsertcp?Aυ D)7tUTl@fC.^&GZo(K ]p d*insert control point]8teO?s-1OSM n 럆L<_ї0Sr)B8 sH?DCDNOQsP'ѭeSBgc C:\Documents and Settings\Clinton\My Documents\My Pictures\insertCpIcon.bmp TO 1BÕrCW x{PTe?o,iW] . **ES$eog9{ h歌0I,ŒS҉,ѱlJr&-rRP3sή8N⪨Z. nDq> O,z V"bKCe0X[g͒'d k,ύX됌!9Q{NGܕd(Ωq2b1g V:(cP'ˏZ8HKi@ѮF;qkcPLԔcm1"#ʖdN@ľQ@V7 ]{0 *zsix,: u ۑ$>YgC٪x_#¸MNB@ilFgg4>U{2fcӃd; "f\̺׃S,7U>Z|dوLvUUU.+|tR/$ķKniaWi 2deleteControlPointButton.;]kI 忞@"i 4W}@O{$n_<&KES Qo(K ]p dQm6l3Ll/V^N="QEj%:$ܿORE bi*S]?G[~x;'0#ԪC'X/9}'0#ԪC'X/9} IndexItem IndexSr)B8DNOQsP'ѭiDsL[w4E*h>ǑJ]@<+fyOA7XCTl@fC.^&GZh0OY~ C ]8teO?s sH?DCIlfāA>ˁw/ru|GF0][D+Iv(?Aυ D)7t8{Nm(!(XFҦV"-1OSM n"ko6쩗͚M},r3n)o:+r#wC~0QYi2^7]IO~=BSQ )K- .118.Ar-chQCU#4gZ#'G/ulZ0E#>4! I$XOXP =sOVӎ&Rn'E|a׾/80?J״P]&X9=43H? Ùмɐ]QƏg5( g}}W·cQ }j=ji!=:N{8FCr AGX95 T˲]ǃXSO`(7 i=$*R9 q R$CNAV@Ɗ,nt ax 0L󕇐'Cf\m!z7 I%'H9c@ʴII ړC#0i [JC"ZO{_i X~y^e{ MӜpJbHH\ 9żBKB(W{! ҍ?|I"$ϖN@87߾k9ng!#|Cv+aJ Iz )2č%Bӥ(2Sw]KMY;A$ ڱyWΣ޸ߟ3ZO>Rz'=Yy"1长18ԳۊJklPEy}EeH٢H5?qK?1~U=_=SLLhiZTmm-eUzTPޒT=>G̿gPV\.6&7Y*BǑJ]@<+fyOA7XCTl@fC.^&GZh0OY~ C ]8teO?s sH?DCIlfāA>ˁw/ru|GF0][D+Iv(?Aυ D)7t8{Nm(!(XFҦV"-1OSM n"ko6ǑJ]@<N{2BBC850E-6EEF-4364-9265-A4A606AE464B}$ܿORE bi/ru|GF0N{5B44AED2-C4BF-460B-A1D9-7C83F91B307A}+fyOA7XC(XFҦV>g'JNjn*pF`DCb@z@?ko6ˁwpeo(K ]p d<create a curve from a polygonTl@fC.^&GZ?Aυ D)7tU]8teO?sSr)B8-1OSM n 럆L<_ї0DNOQsP'ѭeSBgc C:\Documents and Settings\Clinton\My Documents\My Pictures\poly2curveIcon_3.bmp TO 1BÕrCW xyPǟیmURTF4u]e]v߽eod9/<PG4kMEE W0V&~igwy}>cYU 4~BRiiD Ex$eq{<ϔ+IA|nrm'n8.tB"9=,:JIЖPH. l-,𽝩M7.8,N}qޏP}br~S{+]чؕ}߯;Ie50@i%G9^[:8uqQ} u:P}Sj/!"/1U1z7[ g;w&{Vv9sYL^1r:0j0X>%ي% t=. 5A(*1>sg &cH8p9,^oteb\-Ǩʳse ~';W]'/gsxSad;0yo`&Zy;WxW^g1V'[fLuD;ӻo N}1SfZ1,R2 fr-ʯ0͈]v /mVd'KK0mc1!نa⶗Jdޕo&ל;n>i@yQ~0Qkm)0xQEyPB~"y=z.bbxmFQYGz9k^Gw0[ĥ!pb/JJZNPO-YԱt1ܺDks7Y%:_4F":=p V)s2`+CV !,zzWVI4Y~#{1^^cZ#Gg J.WË=7Пz9%]2hEP@ޒM&_h?s]ZBUg`e0#qv:S7xj8fg<`9-M<(ZCYMҏV}m2>0~dbw8g8tX]D: dtF5<=, Lr0mZ8F9Px0Co!e{ܟcf76`{y\;êG+j!m,v/vYPɁsBYs2fV1P k+6q'aM,ɷ  C̩pnT, >#'K?D9~Gt#m,nH _9lhۉrl4l#cj9Iž[%ݞ,g|U$7V&!nF_zܣYz[5af#}V?OG5hԙD*bݙΔ_,y#2YZ\.ve-8ASIo?8F(İDkU z̉l6xzÏ}xޓ|='Z 4 sH?DC܂dKu=|  loadCurveScript (.;]kI 忞@"j h7 (Y H#(1E8 ؾ epV {0%i 4W}@O{$xi ׊;Jf|ڢRP(偢jD%~`8RpWAGX#<ĠF姁J]T(XFҦV"-1OSM n" G?ŋPo{MwzM/P]%T $pnpAFKO8+PpAFKO8+PDfilenameTG {MwzM/P]%&偢jD%~`8(XFҦV>g'JNjn*pF@RDBk@r@D?׊;Jf|ڢWAG`^02eE{|@B???? G?ŋ~0iV@KU>x'a(10 }}pAFKO8+PZ`Ez]UO GFʠN=8FP(11 }}{MwzM/P]%Z`Ez]UO1釥GP>a(8(10 }}{MwzM/P]%Z`Ez]UO GFʠN=x(11 }}<ĠF姁J]Z`Ez]UO GFʠN=hx(11 }}WAGZ`Ez]UO GFʠN=(11 }}偢jD%~`8Z`Ez]UO GFʠN=(11 }}׊;Jf|ڢZ`Ez]UON\q+nN-K^F8P(1A}}@y@{MwzM/P]%Z`Ez]UOh@#nKSM2F((1$}}pAFKO8+PZ`Ez]UOOˁ CRih[Ph(1}}ZActivity.Run('%THIS_NAME%' + "/loadCurves");Load Curve(s)Z`Ez]UO GFʠN=(1/}}October 9 2011Z`Ez]UO GFʠN=(1HOoSave curves in truespace6.6 ascii format. 7.6 format can take a while to read and binary won't read in at all.ƄvR^I҂{iks GFʠN=(1H}}'Also reads DXF files from TurboCAD v14.Z`Ez]UO}}pAFKO8+P܂dKu=4C "controlPointCone hl.;]kI 忞@"P(ȠH(  j4W}@O{$ G?ŋhtveDCE`"IWJZ%h `Hg׊;Jf|ڢZ & `H8g偢jD%~`8ZWAG8H(<ĠF姁J]\$1&KߊPV$-V?XM%X(XFҦV"XS $hKnPSVmӸ -1OSM n" -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pFCAb@ d@A?׊;Jf|ڢWAG G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0{`D@}㒱l|V Cone primitive V tveDCE`"IWJPBhh3*tL V0*PpV @(1)ps6DU9rLpV p4@,G8R(pV H=1Gn@`U)pV DMN{ g;pV Т[T}lAuܿxjpV 0(BƆK``;a!pV Ƞ4W}@O{$(XFҦV"-1OSM n" *tL V0*P[T}lAuܿxj(XFҦV>g'JNjn*pFCNCb@ b@?@,G8R(BA-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=7Material List.;]kI 忞@"8(` H(4W}@O{$-V?XM%(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%Lh,Material List Managerз-V?XM%P腨&zB}J?pз8(4W}@O{$=ө6I)])pз-V?XM%=ө6I)])&zB}J?܂dKu=GMaterial 0 .;]kI 忞@"8(p ` 4W}@O{$ gYأC۲+?gYأC۲+?b=h0CRfD 0Material Flavor ManagerP(gYأC۲+?P (!EJGWMpP((6~qK;2t&pP(8(4W}@O{$ȸ(?.9>DGl{?pP(!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀D Solid  .F_P#T.F_P#Material Output material __W8E#(ȸ(@(n%⟀A}aJp 0I>]zJ4 p (HJ.HE /*gp G8VnZN:W pp ll-#Ez k^p H¨K#uiL$p ,L?D}p p 4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????.F_P#,L?D}ll-#Ez k^K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabled8VnZN:W p?u8DMhbEèOwnerName 6Vg'JNjn*pFBCX@1@?qU F3f` 2Object Render Attributes!S $hKnPSVmPX 8Ns2]p!Бi ^mګA~Ksi[p!Pi (lrsGrp!Hi \Eh{5p!8i "PbEGDߗrp!(i F?N dp!(i ]*qBCxp!@i \J:I%7up!0i iA޲1rIK>Xp!h ,ot"AaYp!H ^RI8ÿRp! çwH5#Vp! 4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1" o[nfFp!h zgGFohN)p! vhD zʔp!W0@zdW0@zd$VersionVersion$ ȅ8vDCxZp! F+2MGp! I2GWM:).$p!@ mBޖw pp!0 fB #^p! |$}mK;)p !@ rg@*oHp !8 !eLZE^Np !( pSLDMF:ɅDzgGFohN)I2GWM:).$ ]*qBCx?S $hKnPSVmvhD zʔçwH5#V rg@*oH4W}@O{\J:I%7u-n,Njlpgd?==?\Eh{5-n,Njlpg????fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort(XFҦV>g'JNjn*pFCg'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=l LODCone .;]kI 忞@"7 CV Pi 誹 4W}@O{$ G?ŋ" tveDCE`"IWJZԸ `H# ׊;Jf|ڢZո `Hx$ 偢jD%~`8Z% WAGH4 h( <ĠF姁J]\X3 $1&KߊPV$p+ -V?XM%(X(XFҦV"P- S $hKnPSVmY. H=1Gn@`U)(-1OSM n" -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pFC]Cb@ f@?׊;Jf|ڢWAG G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0{`D@}㒱Cone primitive 8 tveDCE`"IWJPB"  9 *tL V0*Pp8 9 1)ps6DU9rLp8 8 @,G8R(p8 (H=1Gn@`U)p8  DMN{ g;p8 FV [T}lAuܿxjp8 EV BƆK``;a!p8 CV 4W}@O{$(XFҦV"-1OSM n" *tL V0*P[T}lAuܿxj(XFҦV>g'JNjn*pFCDCb@ d@?@,G8R(BAH=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=r Material ListxQi .;]kI 忞@"p2 P:V Pi 4W}@O{$+X -V?XM%p+ (XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%,Material List Manager*X -V?XM%P+X 8@V &zB}J?p*X p2 4W}@O{$H?V =ө6I)])p*X -V?XM%&zB}J?=ө6I)])܂dKu={ Material 09V .;]kI 忞@"HV P:V 4W}@O{$}gYأC۲+?H?V gYأC۲+?b=h0CRfkR 0Material Flavor ManagergYأC۲+?P}8 !EJGWMp 6~qK;2t&pHV 4W}@O{$GV ?.9>DGl{?p!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀Dd  Solid x.F_P#T.F_P#Material Output material __W8E#(GV Xn%⟀A}aJpx8>]zJ4 pxJ.HE /*gpx8VnZN:W ppx8ll-#Ez k^pxহK#uiL$px,L?D}px4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????,L?D}.F_P#K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabledll-#Ez k^8VnZN:W p?u8DMhbE$OwnerName6Vg'JNjn*pFBCX@1@?qU F3fDw2Object Render AttributesXS $hKnPSVmPP-  8Ns2]pX^mګA~Ksi[pX(lrsGrpXH\Eh{5pX"PbEGDߗrpX!F?N dpX"]*qBCxpXx#\J:I%7upXX$iA޲1rIK>XpXh,ot"AaYpX^RI8ÿRpXçwH5#VpX4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"o[nfFpXzgGFohN)pXhvhD zʔpXW0@zdW0@zd$VersionVersion$(ȅ8vDCxZpXF+2MGpXI2GWM:).$pXmBޖw ppXh.fB #^pXH/|$}mK;)p X(0rg@*oHp X1!eLZE^Np X4pSLDMF:ɅDzgGFohN)I2GWM:).$ ]*qBCx?S $hKnPSVmvhD zʔçwH5#V rg@*oH4W}@O{\J:I%7u-n,Njlpg??u??\Eh{5-n,Njlpg????fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort(XFҦV>g'JNjn*pFC(Bk@ `@?pSLDMF:ɅL/Project/Space 3D/nurbsCurves/LODConeF?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=D"controlPointMesh6.;]kI 忞@"@ (F m+ f Uh74W}@O{$ G?ŋ(9tveDCE`"IWJZX($`Hǣ׊;Jf|ڢZ8)$Y`HW偢jD%~`8Zx?WAG@F<ĠF姁J]\$1&KߊPV$-V?XM%h(XFҦV"hS $hKnPSVm0HL[> IkF:ǭJR-1OSM n"PMȅ8vDCxZ  -V?XM%S $hKnPSVmL[> IkF:ǭJ偢jD%~`8(XFҦV>g'JNjn*pF@b@ h@?ȅ8vDCxZ ׊;Jf|ڢWAG G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0܂dKu=\Material List B .;]kI 忞@" M P(F 4W}@O{$G -V?XM%(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%,V ,Material List Manager@K -V?XM%PG 0L &zB}J?p@K M 4W}@O{$N =ө6I)])p@K -V?XM%&zB}J?=ө6I)])܂dKu= Material 0O.;]kI 忞@"YfP4W}@O{$QgYأC۲+?N gYأC۲+?b=h0CRf, 0Material Flavor ManagerUgYأC۲+?PQV!EJGWMpUW6~qK;2t&pUY4W}@O{$[?.9>DGl{?pU!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀D  Solid \.F_P#T.F_P#Material Output material __W8E#([]n%⟀A}aJp\^>]zJ4 p\_J.HE /*gp\b8VnZN:W pp\ dll-#Ez k^p\eK#uiL$p\f,L?D}p\f4W}@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% IEditable shapehhVIQGіF͡TpxjxjtveDCE`"IWJPB(9l/nkUCEHLjpxjm4W}@O{$(XFҦV"/nkUCEHLj(XFҦV>g'JNjn*pFACb@@P@?VIQGіF͡T>W5f@(䐈~ٸ*ćIC7 @sht@-=@t@*@*tsht@-=@ h* 6H?BJ8{EE%D7[     y'HN!LjUb)R"   89Ig"#@?@???۶m?B'? r?m[??$I?o>8e~?n6??I$?>[?$I???>@;$?m>?n۶>o>Ț?$I>?m[>B'?y ?$I>?(I=??@?ZpߘHXO$Q?.1>>Q?.1>>Q?.1>>TdO>()c?>TdO>()c?>TdO>()c?>VF5+6?>VF5+6?>VF5+6?>i>i>i>VF5+6>VF5+6>VF5+6>TdO>()c>TdO>()c>TdO>()c>Q?.1ʾ>Q?.1ʾ>Q?.1ʾ>tveDCE`"IWJu8DMhbE6OwnerName * 6Vg'JNjn*pFBQCX@1@?qU F3f4? 2Object Render AttributesV S $hKnPSVmPhV 8Ns2]pV (^mګA~Ksi[pV p((lrsGrpV (\Eh{5pV "PbEGDߗrpV X F?N dpV X ]*qBCxpV xX \J:I%7upV XX iA޲1rIK>XpV @?,ot"AaYpV 6^RI8ÿRpV  çwH5#VpV f 4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"` o[nfFpV _ zgGFohN)pV @^ vhD zʔpV W0@zdW0@zd$VersionVersion$ ȅ8vDCxZpV 0F+2MGpV 8I2GWM:).$pV JmBޖw ppV KfB #^pV pL|$}mK;)p V u rg@*oHp V `w !eLZE^Np V pSLDMF:ɅDzgGFohN)I2GWM:).$ ]*qBCx?S $hKnPSVmvhD zʔçwH5#V rg@*oH4W}@O{\J:I%7u-n,Njlpgq?x?<?\Eh{5-n,Njlpg????fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort(XFҦV>g'JNjn*pFCBk@ b@?pSLDMF:Ʌ/Project/Space 3D/install curve tools/loadCurveScript/controlPointMeshF?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 "L2OƲ@5N;V  PivotL[> IkF:ǭJPB<ĠF姁J]pDPpWAGpPP׊;Jf|ڢpBU4W}@O{$(XFҦV"L[> IkF:ǭJ(XFҦV>g'JNjn*pFBCX@1@?׊;Jf|ڢWAG<ĠF姁J]`^02eE{|@B???3?܂dKu=LODMesh@.;]kI 忞@"pT  r ` 4W}@O{$ G?ŋ8X tveDCE`"IWJZкV `H ׊;Jf|ڢZV (`H/偢jD%~`8ZWAG߰<ĠF姁J]\4$1&KߊPV$-V?XM%(XFҦV" S $hKnPSVm0T#X L[> IkF:ǭJR-1OSM n"ȅ8vDCxZP -V?XM%S $hKnPSVmL[> IkF:ǭJ偢jD%~`8(XFҦV>g'JNjn*pFCDb@ h@?ȅ8vDCxZ ׊;Jf|ڢWAG G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0܂dKu=Material List@i.;]kI 忞@"uW 4W}@O{$-V?XM%(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%,d,Material List Manager-V?XM%P&zB}J?pu4W}@O{$=ө6I)])p-V?XM%=ө6I)])&zB}J?܂dKu=,Material 0 .;]kI 忞@"ՕؿW 4W}@O{$]gYأC۲+?gYأC۲+?b=h0CRf0Material Flavor Manager`}V gYأC۲+?P]C!EJGWMp`}V Pl6~qK;2t&p`}V Օ4W}@O{$Pޕ?.9>DGl{?p`}V !EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀D Solid +.F_P#T.F_P#Material Output material __W8E#(Pޕh,n%⟀A}aJp+H->]zJ4 p+(.J.HE /*gp+i 8VnZN:W pp+:ll-#Ez k^p+K#uiL$p+l%,L?D}p+ؿ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% IEditable shape VIQGіF͡Tp0T 0T tveDCE`"IWJPB8X /nkUCEHLjp0T  4W}@O{$(XFҦV"/nkUCEHLj(XFҦV>g'JNjn*pFBCX@1@?VIQGіF͡T>W5f@(䐈ٸ*ćIC7%(@S@ ?Sa@{?z`@F:@꫚@yp@H@3@WgV@@v@}@u?@|?T@|T@u@v}@WgV@H3@꫚yp@z`F:@Sa{?S ?T3X&S Sa{z`F:꫚ypH3WgVv}u|T|?Tu?v@}WgV@H@3꫚@ypz`@F:Sa@{S@ @ h* 6H?BJ&L'&'&'&'&'&'&'&'& '& ' & ' & ' & ' & ' &'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'&'& '& !' &!!"'!&""#'"&##$'#&$$%'$&%%'%&8{EE%D7['Lss s s  ssssss" s!"%#!s$%(&$s'(+)'s*+.,*s-.1/-s01420s34753s67:86s9:=;9s<=@><s?@CA?sBCFDBsEFIGEsHILJHsKLOMKsNORPNsQRUSQsTUXVTsWX[YWsZ[^\Zs]^a_]s`adb`scdgecsfgjhfsijmkislmpnlsoprqosy'HN(LLjUb)R)L        ! "!#"$#%$&%'&(')(*)+*,+-,.-/.0/102132435465768798:9;:<;=<>=?>@?A@BACBDCEDFEGFHGIHJIKJLKMLM89Ig"*t@?@???|? ??J?^Cy??u?E ? ~?5??2?>>z?l(/??+?>#u?k(??z %?N>o?(!??P?r>COg???6?hm>u^?5???v>T?Dy ?? ?꾁>J???Q^?>@???^C>꾁>Hw5?>?>v> 8+?z >?P>hm>!?6>?>r>?>?P^>N>?>?>>k ?l(>?k>>>c?(>?>>X?5>?Dy> n>7?>?>H?7?r>?x e> ?X?4W>?J>a?c?<>?l(/>3#?k ?(!>?5>X+??>?=G2??8=?=LI8?!?(=?=EDba?p> >O=;)?X?Ec>>H?> >Q4?Y ?>P?(? >>J??>:>$AQ? >_`>]? >=Gc?>Gc?>_`]? >:$AQ? >J??>P(? >Q4Y ?>H> >XEc>>Dbap> >d>Dbap >XEc>Hپ >Q4Y >P( >J?>:$AQ >_`] >Gc>=Gc>_`>] >:>$AQ >>J?>P?( >Q4?Y >H?پ >X?Ec>Dba?p >tveDCE`"IWJu8DMhbEl_OwnerName 6Vg'JNjn*pFBQCX@1@?qU F3f$2Object Render Attributes S $hKnPSVmP 8Ns2]p  ^mګA~Ksi[p t(lrsGrp 6\Eh{5p 8"PbEGDߗrp 9F?N dp ]*qBCxp \J:I%7up f%iA޲1rIK>Xp ,ot"AaYp p^RI8ÿRp çwH5#Vp `4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"`o[nfFp @zgGFohN)p  vhD zʔp W0@zdW0@zd$VersionVersion$Pȅ8vDCxZp ~F+2MGp I2GWM:).$p @mBޖw pp fB #^p |$}mK;)p  0k%rg@*oHp  (i%!eLZE^Np  l%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*pFCBk@ b@?pSLDMF:Ʌ|/Project/Space 3D/install curve tools/loadCurveScript/LODMeshF?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 "L2OƲ@5N$ PivotJV L[> IkF:ǭJPBX   <ĠF姁J]pDJV vWAGpJV vv׊;Jf|ڢpB 4W}@O{$(XFҦV"L[> IkF:ǭJ(XFҦV>g'JNjn*pFBCX@1@?׊;Jf|ڢWAG<ĠF姁J]`^02eE{|@B???&?47m2O TzTransform<ĠF姁J]pD=X#WAGp=偢jD%~`8PBP(=׊;Jf|ڢPBxi % x?(Y 4W}@O{$(XFҦV"-1OSM n"偢jD%~`8(XFҦV>g'JNjn*pFX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї048@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand<// Execute // Called to execute the command function Execute(params) { //System.Trace("initializeMesh"); //initialize the control points by copy owner = System.ThisOwner() Node.Value(owner + "/controlPointMesh/Editable shape","Input Mesh") = Node.Value(owner + "/controlPointCone","Mesh"); Node.Value(owner + "/LODMesh/Editable shape","Input Mesh") = Node.Value(owner + "/LODCone","Mesh"); } NScript Object Package/jScript language~൱Dt#^c4W}@O{(XFҦV>g'JNjn*pn%D@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@Hoͤ*EgbĬgLODcontrol2AEHM'ceZU@䑧r%(14W}@O{$(XFҦV#.;]kI 忞@"-1OSM n# {MwzM/P]%pDHHizDFUPB.  2AEHM'>g'JNjn*pFBC`@0@?ceZU@䑧r[җJs@ NewObject// OnComputeOutputs // Called to compute values of all output connectors function OnComputeOutputs(params) { var LODin = params.ConValue('LODin'); // TODO: put your computation here params.ConValue('LODout') = LODin; } NScript Object Package/jScript languageint LODin{MwzM/P]%intLODoutizDFU{MwzM/P]%&4W}@O{(XFҦV>g'JNjn*pFTCACb@H@?izDFU&-1OSM n 럆L<_їCDefault GFʠN=P|1 }}{MwzM/P]%Z`Ez]UO1釥GP>aP|0 }}{MwzM/P]%Z`Ez]UO GFʠN=P |1 }}izDFUZ`Ez]UO1釥GP>aP |0 }}izDFUZ`Ez]UON\q+nN-K^ 8|A}}@y@{MwzM/P]%Z`Ez]UOh@}}.;]kI 忞@ddKtN4 LV ActvLoop  2|=BynjHhE4W}@O{$(XFҦV" t|Iet|Ie Iteration count Iteration counth#nFO&h#nFO&LE2Data$LE2 Data for node >g'JNjn*ph; `A$%}; `A$%}LoopBodyLoopBody' 0,hML,hML$Current iteration$Current iteration-1OSM n#(.z@HouB!#~}uB!#~}LE2Data, 2$LE2 Data for node >g'JNjn*p asvHhTG$ 2|=Bynj4W}@O{(XFҦV>g'JNjn*pn Cb@@T@; `A$%}ߒ$)?? asvHhTGeSBgc$  TO 1BÕrCWx]y\q׼]B@Z]sIB7@d$F>bl8N!8PIS1!(qHlvm\B"m{Ǽ7켙7ZVu_w~FmFmFmFmv텵kÊ1|0aYs ÿ߰П`cmpW9L3< DQAt2e*Ys`˖ sQo杇j0l0D$P_&1lh|h=.F K,g{B6ܹAQT@nA,EAͼΓ>f s>RPOC2I0ck!kL8̞=f~߳RWU hZ03%sSdϥ;JP,(D@"{8q>^ÖL66mwqw}㦛S )C,,Sؼ$2 ׉FO%,XRطп; /_i$ͅh1^?~qܯ7])kw}^&(ŒB@v ?I>Ӡ ź^ЇrWs[$fѯNvׅ+Vȷ=z Tz2g'֐e3Y,bڂ^NuPܥ*~1G#y]φm YPK k˙-H$p㍷ OU\}&x~xO1{[b;/J}-ZH.xQT%,r.c:fͶ@;-}&=ojz.Vl:=uʠ{q 3F={*n:uOoz^jj,Wp ;Y dvl&{.ؽ-pW0{/|}39Z]3xq4ދ|8%6C<}?d3YzZm%/cj :::Q[ ˖t"2 ԓIM3[sWBdq(hr~%d0HTvN+/gG<Hdu+D/X<"0iW"żG˂,ޅ}7 UdŲ/2{cفZ޽A̕E@_Z}UqG00gS?#߱C{ptD9 02@{-bR=y~قq!E_Ws==!&D 烑>_{_'Uص9O= Xۍ>ݛ{ 8c$_{nnY$e|G4hg}G>hC9]^w)afcۙyAucǞ6'N²vx>F@O<,=ܷ`MEus,/#4m_ed_^i)_@ݶtɒp%\,Z30t}[pς$`tB/UG\:kbϗ.]Q]}Ff /Z+2TZ#x}Gچk1h̙| IgAS@悪]1:ԟ=˟lG>a.hl y@TO F% ڸBW#$ނhh;Xg5T[CuއCY6oMem dW6o!ڭ>9??ʄ~t]AoyWc} !KwQm 0;(yO1JN|qg1O7$x .~ԗ5=>oVRC|c˖#і/xڟZڈ׉ܧTM<= 5P˿˪E-_0öm;BǟUoj?[oꪫ]yc./`⢭OOcVa] \pqH df 9pc?|H 2ɀ}\x9>$/A]8V?şkr-w~_nwu-gV?"*~j +b`T}3ߔ͍3[rgsϩdo]mh'[]gZ迾Xӱ_ĽAO~^EcQs1b 9; F{<-?q_r= #'osV_fz-}-ÿ zo\Xjo sezs-~>}g5wAloΖ=7Lx~dSezO5gy'r.7nH'q?}ݯi.{yr}1~^W}D1s]?>O}7,\zkcqWZz_W{']>l)$~3cVcQEe^wF[{PH{s?ڼjNZfX/p;Coܵ^[zU "´r`ػ5c7ԫi).䧯rQ&/!W;xݶks/ۧ DN5pٟrϮMF=U`Yn=@D˾hiqa ֞J6c0X^{0Ǻbr:~xc=Y?q<3i~[K<_M{N^ϲ{ /$i[sl+ (S5\ ϠQQ>jwq}Um+//ul+b̼TTlީĉ#\'sǐY@\F0_!g@Rݏm4aݺ lΣ$WW3 좆e=Giln-S }и^ϽwU ޚAܧfQ,Q5gzqf~<~e=@P˟Ÿ`k$vT͉hL=bvz(oeefVkH~ ہW}ͮ$OzODksl d<~ެ]o=M1گK}N{ gp E\%?؜Fٹ,Zso`F]:_n.{ҳhcGVw[`q JR4[0uӓbI+\aS 5՗,ɂ3R]mur~'#$^bۻ{wӠYU(G{ 2O|mQ;5S5lOο9p%HZאa=1sIM{AWIYKs$[oW~o2i @|<˅w={ kko`FSQ= }P6Ϛo}w hO?n~# j@5wf=zn8 נWyWȗ~d+ bRmYdo9a vޭ%cѢMbߑ%쟰9ȿU(߀`ϜdWwܾ Z>_S6HN1?{cy`d63ۛKk]w?vLvßmY%=/^=΁z }+Kg5P>n1vqR Z8H|S.?l̿:?(xl 0TdǏ=^GRDǝ^'~majs.(?V5Ȕe '[Mdq0F]??ʣ H+4f1lnk^X:zr{E:STȀx@(ʫ{yF.gn8,Ni@$> K7[yDι7VǑÐ~2OA,00ߎuTUGX!|O9Q:Olx_.DKڳQsǓ|t&yě`_d ?-] ~0b="`*G9ӜDj ɓGB ,$oB=,{F'Eg}YޛwD*˻84Xǿ|ޘ7 Oym>O={Sj̿'gUἧjiF]ЙT[hNff?'EOZڻX/16{ &5|V}ol~ :b,ߖ{eSBuƌYcuW0Tԗjhi 9hIL}Z6t>^s ۨw=\w9`d_qah~%繦O}ɓ;صwAf12}'g~ WfΜݐw3xܸMqeՕ>$zۊ'.?/i5_=O:O+;X*SEwdOt+\oxJN]u`Oވrd9~rFPrV5g&͎S ʃQ\c,D;;S+eI"` 7uy+:g<^4, `B穑1b@M<xkXQP=>ojY<6/L@T;cBY'6O7H,^^,)aqR NlN,kQlpqilK5h{!f џCU,EFXk\B͝V_h^|P[DK?S?/}ejO>Gjg.+P{9mom豝hgɟEc-rsTja%KmlF5\.ݏr&{ p*Ǚ8䱎@ַ-P^Ǡ9>x}]o܆Wt`+ժ :37P jxcgu +06娇@%u7/6'}}KOC{as6kw7rFks+s{σ}k _)4Ļ^c|4jƤVߪ< y t~wmU+jBlZ1\`P4罙;g{EٗsgE`Ӧ-sP>z 6 l m5Jo堟)ٻ̾|M:Ur>@P-\w-ec-F{ F~_>T5_-b?f/M_dnUhePmye@5ںfe~Ơ Ƣ%+I]';Y:@5 B|^OªU}kpDzFl|k{ d 6 n(`ٲ|Pg>1ǧAO~ݏ[P+pӒBz}Y#qԌjol@6Gvg7>TO4~8Y {zھ`@vλexìyNN'*qYPn'{w\|BP\Gs4sc'as*3Lp 5Py>Q>Sf~2Xd@C*\˩ғnnjǝ魓zh'8`WnCiSAm</*堧h5cXHd&aZhyg|mי<Ϲű"|h _&WtfC֏t7 t^XjJ}Hv;\,׉A^RbhjD:jeAB_q$ &[3^mrrՠ^oߚ0u!Y{*ɨ/`Bh|=$2}:џ?KPREANbcAd:C(C3f~3ICvn{zC(@' OB[R1F: .f_g4t~ 3~ofDCa=g=CTsJܭ^ڣt}l>œTGgĶyz< ͩ%̚5ƌ&LfygY#FmFmFm ?Yڏt|Ieh#nFO&>g'JNjn*pFCC@f@X@?; `A$%},hML-1OSM n 럆L<_ї.Activity GFʠN= H0< }} Control Inz@HoZ`Ez]UO GFʠN=P@ }}Iteration countt|IeZ`Ez]UO1釥GP>aP0 }}t|IeZ`Ez]UO GFʠN=H 0= }} Control Out2|=BynjZ`Ez]UO GFʠN=` B }}Current iteration,hMLZ`Ez]UO1釥GP>a` 0 }},hMLZ`Ez]UO GFʠN=0@9 }}LoopBody; `A$%}Z`Ez]UOz@HouB!#~}>g'JNjn*pnC:Cb@T@; `A$%}ߒ$)??48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ /NewCommand-//dofilenurbs //Jan 2011 // calculate the nurbs curve points from the file data // creates cp curve and the nurbs curve meshes // /// \original author Rob Bateman //http://nccastaff.bournemouth.ac.uk/jmacey/RobTheBloke/www/opengl_programming.html /// \date 9-feb-2005 // adapted for truespace // Clinton Reese // Dec 11 2010 // var g_Knots = new Array(); //g_Knots[0] = 0.0; //g_Knots[1] = 0.0; //g_Knots[2] = 0.0; //g_Knots[3] = 0.0; //g_Knots[4] = 1.0; //g_Knots[5] = 2.0; //g_Knots[6] = 3.0; //g_Knots[7] = 4.0; //g_Knots[8] = 4.0; //g_Knots[9] = 4.0; //g_Knots[10] = 4.0; // //------------------------------------------------------------ CoxDeBoor() // function CoxDeBoor(u,i,k,Knots) { if(k==1) { if( Knots[i] <= u && u <= Knots[i+1] ) { return 1.0; } return 0.0; } var Den1 = Knots[i+k-1] - Knots[i]; var Den2 = Knots[i+k] - Knots[i+1]; var Eq1=0,Eq2=0; if(Den1>0) { Eq1 = ((u-Knots[i]) / Den1) * CoxDeBoor(u,i,k-1,Knots); } if(Den2>0) { Eq2 = (Knots[i+k]-u) / Den2 * CoxDeBoor(u,i+1,k-1,Knots); } return Eq1+Eq2; } //------------------------------------------------------------ GetOutpoint() // function GetOutpoint(t,OutPoint) { // sum the effect of all CV's on the curve at this point to // get the evaluated curve point // for(var i=0;i<g_num_cvs;i++) { // calculate the effect of this point on the curve var Val = CoxDeBoor(t,i,g_order,g_Knots); if(Val>0.001) { // sum effect of CV on this part of the curve //OutPoint[0] += Val * g_Points[i][0]; //OutPoint[1] += Val * g_Points[i][1]; //OutPoint[2] += Val * g_Points[i][2]; OutPoint[0] += Val * g_Points.x(i); OutPoint[1] += Val * g_Points.y(i); OutPoint[2] += Val * g_Points.z(i); } } } // Execute // Called to execute the command function Execute(params) { var lLOD = params.ConValue('lLOD'); var fileknots = params.ConValue('fileknots'); var filepoints = params.ConValue('filepoints'); var curvename = params.ConValue('curvename'); System.Trace("dofilenurbs"); LOD = lLOD; //float g_Points[7][3] = { //{ 10,10,0 }, //{ 5,10,2 }, //{ -5,5,0 }, //{-10,5,-2}, //{-4,10,0}, //{-4,5,2}, //{-8,1,0} //}; //g_Knots[0] = 0.0; //g_Knots[1] = 0.0; //g_Knots[2] = 0.0; //g_Knots[3] = 0.0; //g_Knots[4] = 1.0; //g_Knots[5] = 1.0; //g_Knots[6] = 1.0; //g_Knots[7] = 2.0; //g_Knots[8] = 2.0; //g_Knots[9] = 2.0; //g_Knots[10] = 2.0; for(i=0;i<fileknots.GetSize();i++) { g_Knots[i] = fileknots.GetAt(i); } g_Points = System.CreateDO("Space 3D Package/Point Array Data"); g_Points.SetSize(filepoints.GetSize()); for(i=0;i<filepoints.GetSize();i++) { g_Points.x(i) = -filepoints.x(i);//adjust to mirror g_Points.y(i) = filepoints.y(i); g_Points.z(i) = filepoints.z(i); } //g_Points.x(0) = 10; g_Points.y(0) = 10; g_Points.z(0) = 0; //g_Points.x(1) = 5; g_Points.y(1) = 10; g_Points.z(1) = 2; //g_Points.x(2) = -5; g_Points.y(2) = 5; g_Points.z(2) = 0; //g_Points.x(3) = -10; g_Points.y(3) = 5; g_Points.z(3) = 2; //g_Points.x(4) = -4; g_Points.y(4) = 10; g_Points.z(4) = 0; //g_Points.x(5) = -4; g_Points.y(5) = 5; g_Points.z(5) = 2; //g_Points.x(6) = -8; g_Points.y(6) = 1; g_Points.z(6) = 0; g_num_cvs=filepoints.GetSize(); g_degree=3; g_order=g_degree+1; g_num_knots=g_num_cvs+g_order; owner = System.ThisOwner(); // //display the control points curve // cpMesh = System.CreateDO("Space 3D Package/Mesh Data"); cpMesh = Node.Value(owner + "/controlPointMesh","Mesh"); cpVert = System.CreateDO("Space 3D Package/Vertex Stream Data"); cpVert = cpMesh.GetVertices(); System.Trace(cpVert.GetNumVertices()); for(i=0;i<g_num_cvs;i++) { cpVert.x(i) = g_Points.x(i); cpVert.y(i) = g_Points.y(i); cpVert.z(i) = g_Points.z(i); } cpMesh.AttachVerticesStream(cpVert); faceEdgesCP = System.CreateDO('Space 3D Package/Face Edges Stream Data'); faceEdgesCP = cpMesh.GetTrianglesStreamByName("Face Edges Stream Data"); numtri = faceEdgesCP.GetNumTriangleEdges(); //make all edges invisible for(i=0;i<numtri;i++) { faceEdgesCP.edges(i) = 0; } noncontroledgetri = 2; for(i=0;i<numtri;i++) { testodd = i % 2; if(testodd==0) faceEdgesCP.edges(i) = 1; //else // faceEdgesCP.edges(i) = 0; if(i==numtri-2) faceEdgesCP.edges(i) = 0; if(i==noncontroledgetri) { faceEdgesCP.edges(i) = 0; noncontroledgetri = noncontroledgetri + 6; } } cpMesh.AttachTrianglesStream(faceEdgesCP); Node.Value(owner + "/controlPointMesh/Editable shape","Input Mesh") = cpMesh; // // do the nurbs curve // ncMesh = System.CreateDO("Space 3D Package/Mesh Data"); ncMesh = Node.Value(owner + "/LODMesh","Mesh"); ncVert = System.CreateDO("Space 3D Package/Vertex Stream Data"); ncVert = ncMesh.GetVertices(); faceEdges = System.CreateDO('Space 3D Package/Face Edges Stream Data'); faceEdges = ncMesh.GetTrianglesStreamByName("Face Edges Stream Data"); numtri = faceEdges.GetNumTriangleEdges(); for(i=0;i<numtri;i++) { testodd = i % 2; if(testodd==0) faceEdges.edges(i) = 1; else faceEdges.edges(i) = 0; if(i==numtri-2) faceEdges.edges(i) = 0; } ncMesh.AttachTrianglesStream(faceEdges); var t; var Outpoint = new Array(); for(var i=0;i<LOD;i++) { t = g_Knots[g_num_knots-1] * i / (LOD-1); if(i==LOD-1) t-=0.001;//???why??? Outpoint[0] = 0; Outpoint[1] = 0; Outpoint[2] = 0; GetOutpoint(t,Outpoint); //glVertex3fv(Outpoint); ncVert.x(i) = Outpoint[0]; ncVert.y(i) = Outpoint[1]; ncVert.z(i) = Outpoint[2]; } ncMesh.AttachVerticesStream(ncVert); Node.Value(owner + "/LODMesh/Editable shape","Input Mesh") = ncMesh; } NScript Object Package/jScript language~൱D@ j#^cint lLODMN(K9/7LCommon Data Package/Number Array Datafileknots GnKJO!i\t FWly~DSpace 3D Package/Point Array Datafilepoints (F)ݟ{HHKHa,MN(K9/7&4W}@O{(XFҦV>g'JNjn*pnC$Db@@X@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?HHKHa,-1OSM n 럆L<_їaControlOˁ CRih[ e}}8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0 e}}:Activity.Stop('%THIS_NAME%') StopZ`Ez]UO GFʠN=00@ 4 }}LODtT1GCh*kZ`Ez]UO1釥GP>a00`@ 0 }}MN(K9/7Z`Ez]UO GFʠN=@`P 1 }} FWly~Z`Ez]UO GFʠN=P`` 1 }}HHKHa,Z`Ez]UO GFʠN=``p 1 }}z@HoZ`Ez]UO}}MT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>? FWly~z@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ 6NewCommand// Execute // Called to execute the command function Execute(params) { // needed because if file is ts7 format it will be oversized and take a while to read System.Alert("done processing"); } NScript Object Package/jScript language~൱DF#^c4W}@O{(XFҦV>g'JNjn*pnC@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 VJ0#>BjD@i S~N$v)֒D?wsJ.pBwx@2|=Bynj @z@Ho 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ hNewCommand// Execute // Called to execute the command function Execute(params) { var curvename = params.ConValue('curvename'); var matrix = params.ConValue('matrix'); owner = System.ThisOwner(); scene = Space.CurrentScene(); newnode = Node.Copy(owner + "/LODMesh",scene); Node.Value(newnode,"Matrix") = matrix; matrix.LoadIdentity(); Node.Value(newnode,"OwnerMatrix") = matrix; params.ConValue("lodnode") = Node.SafeRename(newnode,curvename); } NScript Object Package/jScript language~൱D\K#^cstringcurvenameiO>VJ0#>Bj>Math Package/Matrix Float Datamatrix `^02eE{|@S~N$v)֒stringlodnodewsJ.p4W}@O{(XFҦV>g'JNjn*pn%D3Db@@X@2|=Bynj|?z@Hoۙ>?S~N$v)֒wsJ.p@/Project/Space 3D/TCWcurve_2, 1J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?iO>VJ0#>BjTCWcurve_2-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 VJ0#>BjD\S~N$v)֒D_,A~:G}Bx 2|=Bynju z@Ho 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { var curvename = params.ConValue('curvename'); var matrix = params.ConValue('matrix'); owner = System.ThisOwner(); scene = Space.CurrentScene(); newnode = Node.Copy(owner + "/controlPointMesh",scene); Node.Value(newnode,"Matrix") = matrix; matrix.LoadIdentity(); Node.Value(newnode,"OwnerMatrix") = matrix; params.ConValue("cpnode") = Node.SafeRename(newnode,"CPM_" + curvename); } NScript Object Package/jScript language~൱Dį#^cstringcurvenameiO>VJ0#>Bj>Math Package/Matrix Float Datamatrix `^02eE{|@S~N$v)֒stringcpnode_,A~:G}4W}@O{(XFҦV>g'JNjn*pn@>DeDb@@X@2|=Bynj|?z@Hoۙ>?S~N$v)֒J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?_,A~:G}H/Project/Space 3D/CPM_TCWcurve_2, 1iO>VJ0#>BjTCWcurve_2-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 Hz_ٗDxgɼM4Dt2|=Bynj(.uz@Ho 2|=BynjgɼM4H/Project/Space 3D/CPM_TCWcurve_2, 12AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand // Execute // Called to execute the command function Execute(params) { var lodnode = params.ConValue('lodnode'); var cpnode = params.ConValue('cpnode'); owner = System.ThisOwner(); scene = Space.CurrentScene(); //copy curve shaper to the scene curveshaper = Node.Copy(owner + "/curveShaper",scene); //export mesh input from lod curve Node.ExportConnector(lodnode + "/Editable shape", "Input Mesh", "", 1, 1); //connect cp wldmatrix to lod matrix Node.ConnectTo(cpnode, "WldMatrix", lodnode, "Matrix"); //connect cp mesh to curve shaper cpmesh input Node.ConnectTo(cpnode, "Mesh", curveshaper, "cpmesh"); //connect curve shaper curvemesh to lod mesh new mesh input connector Node.ConnectTo(curveshaper, "curvemesh", lodnode, "Input Mesh"); //set curve resolution //Node.Value(curveshaper, "LODin") = Node.Value(owner + "/LODcontrol","LODin");uncomment later //connect cp wldmatrix to curve shaper cpMatrix input Node.ConnectTo(cpnode, "WldMatrix", curveshaper, "cpMatrix"); //move pivots to curve and control curve to center convenience Node.Select(cpnode); ScriptObject.RunCmd("tools package/show axes", "Selection", ""); //ScriptObject.RunCmd("tools package/normalize location", "Selection", ""); ScriptObject.RunCmd("tools package/reset axes", "Selection", "") RsTool.ShowAxes(Node.Selection() ); Node.Select(lodnode); ScriptObject.RunCmd("tools package/show axes", "Selection", ""); //ScriptObject.RunCmd("tools package/normalize location", "Selection", ""); ScriptObject.RunCmd("tools package/reset axes", "Selection", "") RsTool.ShowAxes(Node.Selection() ); //default to PE compatible head indicator Activity.Run(curveshaper + "/disconnectHead"); } NScript Object Package/jScript language~൱D1#^cstringlodnodeֱѝ>Hz_ٗstringcpnodegɼM44W}@O{(XFҦV>g'JNjn*pn DKDb@@T@2|=Bynj|?z@Hoۙ>?ֱѝ>Hz_ٗ@/Project/Space 3D/TCWcurve_2, 1J@#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=Y#curveShaper%.;]kI 忞@"p蚩XC(6 (= 0%4W}@O{$%"ĺI[e/1R%OEnuE:(PIT$(XFҦV"-1OSM n"${MwzM/P]%Th$'N^TS"ĺI[e/1'N^`^02eE{|@B????{MwzM/P]%&(XFҦV>g'JNjn*pF|b@ a@=qC?OEnuE:(PI>W5f@(䐈ٸ*ćIC7 h* 6H?BJy'HNLjUb)R8{EE%D7[ZpߘHXO89Ig"-1OSM n 럆L<_ї˥Default GFʠN=PlG1 }}OEnuE:(PIZ`Ez]UO GFʠN=P PlG1 }}{MwzM/P]%Z`Ez]UO1釥GP>aP PlG0 }}{MwzM/P]%Z`Ez]UO GFʠN= 0PlG1 }}"ĺI[e/1Z`Ez]UON\q+nN-K^0HPlGA}}@y@{MwzM/P]%Z`Ez]UOh@Oˁ CRih[H`XPlG}}\Activity.Run('%THIS_NAME%' + "/connectHead");connect headZ`Ez]UOOˁ CRih[X`hPlG}}bActivity.Run('%THIS_NAME%' + "/disconnectHead"); disconnect headZ`Ez]UOOˁ CRih[h`xPlG}}\Activity.Run('%THIS_NAME%' + "/freezeCurve");freeze curveZ`Ez]UO}}܂dKu=LODCone .;]kI 忞@"OR  p@4W}@O{$ G?ŋctveDCE`"IWJZ`$U#)`H d׊;Jf|ڢZ()`Hd偢jD%~`8ZWAGX;<ĠF姁J]\$1&KߊPV$ܘ-V?XM%)(XFҦV"ݘS $hKnPSVm)  H=1Gn@`U)0-1OSM n" -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pF#DBb@ f@?׊;Jf|ڢWAG`^02eE{|@B6?6?6?m$B8A6? G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї0{`D@}㒱dKS Cone primitive tveDCE`"IWJPBc*tL V0*Pp01)ps6DU9rLp@,G8R(p0H=1Gn@`U)plDMN{ g;pm[T}lAuܿxjpmBƆK``;a!p 4W}@O{$(XFҦV"-1OSM n" *tL V0*P[T}lAuܿxj(XFҦV>g'JNjn*pFCDCb@ b@?@,G8R(BAH=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=$aU Material List.;]kI 忞@"$p4W}@O{$-V?XM%ܘ(XFҦV"-V?XM%(XFҦV>g'JNjn*pFBBX@1@?) 6G%|i,Material List Manager`|-V?XM%P|&zB}J?p`|4W}@O{$=ө6I)])p`|-V?XM%&zB}J?=ө6I)])܂dKu=cMaterial 0$.;]kI 忞@"lR $4W}@O{$$gYأC۲+?gYأC۲+?b=h0CRfLT 0Material Flavor ManagerX)gYأC۲+?P$)!EJGWMpX)X*6~qK;2t&pX)lR 4W}@O{$mR ?.9>DGl{?pX)!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀D|T  Solid @.F_P#T.F_P#Material Output material __W8E#(mR n%⟀A}aJp@@>]zJ4 p@P}J.HE /*gp@}8VnZN:W pp@P~ll-#Ez k^p@K#uiL$p@,L?D}p@4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,Njlpg????,L?D}.F_P#K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabledll-#Ez k^8VnZN:W p?u8DMhbEDfOwnerName6Vg'JNjn*pFBCX@1@?qU F3fܬ2Object Render Attributes肵S $hKnPSVmPݘh8Ns2]p肵.$^mګA~Ksi[p肵/$(lrsGrp肵/$\Eh{5p肵0$"PbEGDߗrp肵@F?N dp肵`A]*qBCxp肵A\J:I%7up肵`BiA޲1rIK>Xp肵@,ot"AaYp肵^RI8ÿRp肵@çwH5#Vp肵4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"(#o[nfFp肵pzgGFohN)p肵vhD zʔp肵W0@zdW0@zd$VersionVersion$ȅ8vDCxZp肵8 F+2MGp肵 I2GWM:).$p肵8 mBޖw pp肵 fB #^p肵|$}mK;)p 肵rg@*oHp 肵!eLZE^Np 肵pSLDMF:ɅDzgGFohN)I2GWM:).$ ]*qBCx?S $hKnPSVmvhD zʔçwH5#V rg@*oH4W}@O{\J:I%7u-n,Njlpg??u??\Eh{5-n,Njlpg????fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort(XFҦV>g'JNjn*pFC(Bk@ `@?pSLDMF:Ʌ/Project/Space 3D/install curve tools/loadCurveScript/curveShaper/LODConeF?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 ͤ*EgbĬLLODcontrol2AEHM'ceZU@䑧r%p4W}@O{$(XFҦV#.;]kI 忞@"-1OSM n#h{MwzM/P]%pDttizDFUPB  $2AEHM'>g'JNjn*pFBC`@0@?ceZU@䑧r[җJs@ NewObject// OnComputeOutputs // Called to compute values of all output connectors function OnComputeOutputs(params) { var LODin = params.ConValue('LODin'); // TODO: put your computation here params.ConValue('LODout') = LODin; } NScript Object Package/jScript languageint LODin{MwzM/P]%intLODoutizDFU{MwzM/P]%&4W}@O{(XFҦV>g'JNjn*pFCpAb@@R@?izDFU&-1OSM n 럆L<_їCDefault GFʠN=Pp1 }}{MwzM/P]%Z`Ez]UO1釥GP>aPp0 }}{MwzM/P]%Z`Ez]UO GFʠN=P p1 }}izDFUZ`Ez]UO1釥GP>aP p0 }}izDFUZ`Ez]UON\q+nN-K^ 8pA}}@y@{MwzM/P]%Z`Ez]UOh@}}.;]kI 忞@܂dKu=\a &curveHeadIndicator .;]kI 忞@"p 艣` *T 蚩4W}@O{$ G?ŋ蛩tveDCE`"IWJZ؄`Hh׊;Jf|ڢZ)`HX偢jD%~`8ZتWAG$<ĠF姁J]\X$$1&KߊPV$-V?XM%(XFҦV" S $hKnPSVmñ -V?XM%S $hKnPSVm偢jD%~`8(XFҦV>g'JNjn*pF@bDb@ d@?׊;Jf|ڢWAG`^02eE{|@B???? G?ŋ~0iV@KU>x%g'JNjn*pFB BX@1@?׊;Jf|ڢWAG<ĠF姁J]-1OSM n 럆L<_ї08c+KjWN Cube primitive p tveDCE`"IWJPB蛩p \5KZWDL&fpp  [irH%}Jpp ( cCN!F)/pp  XxEbN5g'JNjn*pFC Bb@ `@?[irH%}J>XxEbN5tveDCE`"IWJ-1OSM n 럆L<_їDefault1釥GP>a@P0 }}ZK=nʼZ`Ez]UO GFʠN=p0@7 }}Height4MBLt6Z`Ez]UO1釥GP>ap@P0 }}4MBLt6Z`Ez]UO GFʠN=80p@6 }}WidthXxEbN5a8@`P0 }}XxEbN54MBLt6?K?Z`Ez]UOPN AnqH`@pP>XxEbN5ZK=nʼ?K?Z`Ez]UO GFʠN=08P)}}SegmentsZ`Ez]UO GFʠN= p01 }}[irH%}JZ`Ez]UO1釥GP>ap 00 }}[irH%}JZ`Ez]UOPN AnqH 0>[irH%}JK>Z`Ez]UO GFʠN=p 1 }}cCN!F)/Z`Ez]UO1釥GP>ap 0 }}cCN!F)/Z`Ez]UOPN AnqH >cCN!F)/K>Z`Ez]UO GFʠN=p1 }}\5KZWDL&fZ`Ez]UO1釥GP>ap0 }}\5KZWDL&fZ`Ez]UOPN AnqH>\5KZWDL&fK>Z`Ez]UO\5KZWDL&f>ZK=nʼ4MBLt6܂dKu= Material List.;]kI 忞@"@q`4W}@O{$`-V?XM%-V?XM%) 6G%v,Material List Manager@-V?XM%P`&zB}J?p@@4W}@O{$p xM֓p@-V?XM%&zB}J? xM֓܂dKu=Material 0.;]kI 忞@"nq4W}@O{$sgYأC۲+?pgYأC۲+?b=h0CRf#0Material Flavor ManagermgYأC۲+?Psm!EJGWMpmn6~qK;2t&pmn4W}@O{$u?.9>DGl{?pm!EJGWM?.9>DGl{?6~qK;2t&NOI/)[&2/ChˢjCgYأC۲+?~wC쇀D0T  Solid (w.F_P#T.F_P#Material Output material __W8E#(u۰n%⟀A}aJp(w >]zJ4 p(wx J.HE /*gp(w 8VnZN:W pp(whll-#Ez k^p(wK#uiL$p(wh,L?D}p(w4W}@O{$J.HE /*g?>]zJ4 n%⟀A}aJ-n,NjlpgV?>L??.F_P#,L?D}ll-#Ez k^K#uiL$:KrbSxbDisabledEnabledAs OpaqueDisabled8VnZN:W p?u8DMhbEOwnerName)T 6VXp+T ,ot"AaYp+T ^RI8ÿRp+T çwH5#Vp+T 4W}@O{ Owner%J@#QLLE2Data-1OSM n-1OSM n#LayoutLayout 럆L<_їLayout#(XFҦVLE2Data, 1"o[nfFp+T 0zgGFohN)p+T svhD zʔp+T W0@zdW0@zd$VersionVersion$tȅ8vDCxZp+T tF+2MGp+T uI2GWM:).$p+T  mBޖw pp+T  fB #^p+T  |$}mK;)p +T G rg@*oHp +T XH !eLZE^Np +T H pSLDMF:ɅDI2GWM:).$ zgGFohN)vhD zʔS $hKnPSVm]*qBCx?rg@*oHçwH5#V 4W}@O{fB #^:KrbSxv No Hidden FacesNo SortTriangle SortNo Sort\Eh{5-n,Njlpg????\J:I%7u-n,NjlpgL?\>>?pSLDMF:Ʌ./Project/Space 3D/Cube(XFҦV>g'JNjn*pFC(Bk@ b@?F?N d ȅ8vDCxZ 8Ns2]F+2MG "PbEGDߗr ^mګA~Ksi[(lrsGr?J@#QL>g'JNjn*pFzCCb@q@?W0@zdo[nfFmBޖw p,ot"AaY -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!eLZE^N|$}mK;)^RI8ÿR iA޲1rIK>X ̧GCvҳ}ExpandInMatrixȎJxѝpOIo9pwV w<:'Cu`nppxV ОU BPDC pxV UA0GF(K3pHb a@7>pbԕfHKUR8HpHc_.%YBQ:PpchIu) pHdglVL'{/:p08S H"`7M_pǰ϶F?p0ތdnJAy0VWpXC4W}@O{$(XFҦV"-1OSM n"ȎJxѝ a@7>?w<:'Cu`nz?_.%YBQ:P(XFҦV>g'JNjn*p6DEX@ f@_.%YBQ:P1 =hIu) =glVL'{/:i>?8S H"`7M_hIu) glVL'{/:ԕfHKUR8H?ތdnJAy0VW-1OSM n 럆L<_їrDefault GFʠN=@(P1 }}ǰ϶F?Z`Ez]UO1釥GP>a(@`P0 }}ǰ϶F?Z`Ez]UO GFʠN=0(@1 }}8S H"`7M_Z`Ez]UO1釥GP>a(0`@0 }}8S H"`7M_Z`Ez]UO GFʠN=`(p1 }}UA0GF(K3Z`Ez]UO1釥GP>a(``p0 }}UA0GF(K3Z`Ez]UO GFʠN=p(1 }} a@7>Z`Ez]UO1釥GP>a(p`0 }} a@7>Z`Ez]UO GFʠN=(1 }}ԕfHKUR8HZ`Ez]UO1釥GP>a(`0 }}ԕfHKUR8HZ`Ez]UO GFʠN=(1 }}OIo9Z`Ez]UO1釥GP>a(`0 }}OIo9Z`Ez]UO GFʠN=( 1 }}w<:'Cu`nZ`Ez]UO1釥GP>a(` 0 }}w<:'Cu`nZ`Ez]UO GFʠN= (01 }}ОU BPDC Z`Ez]UO1釥GP>a( `00 }}ОU BPDC Z`Ez]UO GFʠN=P(`1 }}ތdnJAy0VWZ`Ez]UO1釥GP>a(P``0 }}ތdnJAy0VWZ`Ez]UO GFʠN=`1 }}ȎJxѝZ`Ez]UOOIo9 @ОU BPDC  @UA0GF(K3?ǰ϶F?ͤ*EgbĬcurveUpdate2AEHM'ceZU@䑧r%(4W}@O{$(XFҦV#.;]kI 忞@"-1OSM n#$g5pVxHm؋opD`$SUU`$"ĺI[e/1PB%$OEnuE:(PIpD`$SUU`$zaƸAq kpD`$SUUS'N^pD`$SUUS_nt EuSrhPBU t7B!C K 'PBwV UlE05DERPBpxV "ĺI[e/12AEHM'>g'JNjn*pFBC`@0@?'N^ceZU@䑧r[җJs@ &NewObject>#/// \original author Rob Bateman //http://nccastaff.bournemouth.ac.uk/jmacey/RobTheBloke/www/opengl_programming.html /// \date 9-feb-2005 // adapted for truespace // Clinton Reese // Dec 11 2010 // var g_Knots = new Array(); //------------------------------------------------------------ CoxDeBoor() // function CoxDeBoor(u,i,k,Knots) { if(k==1) { if( Knots[i] <= u && u <= Knots[i+1] ) { return 1.0; } return 0.0; } var Den1 = Knots[i+k-1] - Knots[i]; var Den2 = Knots[i+k] - Knots[i+1]; var Eq1=0,Eq2=0; if(Den1>0) { Eq1 = ((u-Knots[i]) / Den1) * CoxDeBoor(u,i,k-1,Knots); } if(Den2>0) { Eq2 = (Knots[i+k]-u) / Den2 * CoxDeBoor(u,i+1,k-1,Knots); } return Eq1+Eq2; } //------------------------------------------------------------ GetOutpoint() // function GetOutpoint(t,OutPoint) { // sum the effect of all CV's on the curve at this point to // get the evaluated curve point // for(var i=0;i<g_num_cvs;i++) { // calculate the effect of this point on the curve var Val = CoxDeBoor(t,i,g_order,g_Knots); if(Val>0.001) { // sum effect of CV on this part of the curve //OutPoint[0] += Val * g_Points[i][0]; //OutPoint[1] += Val * g_Points[i][1]; //OutPoint[2] += Val * g_Points[i][2]; OutPoint[0] += Val * g_Points.x(i); OutPoint[1] += Val * g_Points.y(i); OutPoint[2] += Val * g_Points.z(i); } } } // OnComputeOutputs // Called to compute values of all output connectors function OnComputeOutputs(params) { var lLOD = params.ConValue('lLOD'); var cpmesh = params.ConValue('cpmesh'); var LODmesh = params.ConValue('LODmesh'); var cpMatrix = params.ConValue('cpMatrix'); // TODO: put your computation here LOD = lLOD; cpVert = System.CreateDO("Space 3D Package/Vertex Stream Data"); cpVert = cpmesh.GetVertices(); g_num_cvs = cpVert.GetNumVertices() - 2; g_degree=3; g_order=g_degree+1; g_num_knots=g_num_cvs+g_order; g_Points = System.CreateDO("Space 3D Package/Point Array Data"); g_Points.SetSize(g_num_cvs); var clength = new Array(); curvelength = 0; clength[0] = 0; for(i=0;i<g_num_cvs;i++) { g_Points.x(i) = cpVert.x(i); g_Points.y(i) = cpVert.y(i); g_Points.z(i) = cpVert.z(i); //get curve length if(i>0) { dx = cpVert.x(i) - cpVert.x(i-1); dy = cpVert.y(i) - cpVert.y(i-1); dz = cpVert.z(i) - cpVert.z(i-1); dist = Math.sqrt(dx*dx + dy*dy + dz*dz); curvelength = curvelength + dist; clength[i] = curvelength; } } //set knots as running length divided by curve length g_Knots[0] = 0; g_Knots[1] = 0; g_Knots[2] = 0; g_Knots[3] = 0; g_Knots[g_num_knots-4] = 1; g_Knots[g_num_knots-3] = 1; g_Knots[g_num_knots-2] = 1; g_Knots[g_num_knots-1] = 1; curvepos = 0; for(i=4;i<g_num_knots-4;i=i+3) { g_Knots[i] = clength[i-1]/curvelength; g_Knots[i+1] = g_Knots[i]; g_Knots[i+2] = g_Knots[i]; //System.Trace(g_Knots[i]); } // // do the nurbs curve // ncMesh = System.CreateDO("Space 3D Package/Mesh Data"); ncMesh = LODmesh; ncVert = System.CreateDO("Space 3D Package/Vertex Stream Data"); ncVert = ncMesh.GetVertices(); faceEdges = System.CreateDO('Space 3D Package/Face Edges Stream Data'); faceEdges = ncMesh.GetTrianglesStreamByName("Face Edges Stream Data"); numtri = faceEdges.GetNumTriangleEdges(); for(i=0;i<numtri;i++) { testodd = i % 2; if(testodd==0) faceEdges.edges(i) = 1; else faceEdges.edges(i) = 0; if(i==numtri-2) faceEdges.edges(i) = 0; } ncMesh.AttachTrianglesStream(faceEdges); var t; var Outpoint = new Array(); for(var i=0;i<LOD;i++) { t = g_Knots[g_num_knots-1] * i / (LOD-1); if(i==LOD-1) t-=0.001;//???why??? Outpoint[0] = 0; Outpoint[1] = 0; Outpoint[2] = 0; GetOutpoint(t,Outpoint); //glVertex3fv(Outpoint); ncVert.x(i) = Outpoint[0]; ncVert.y(i) = Outpoint[1]; ncVert.z(i) = Outpoint[2]; } ncMesh.AttachVerticesStream(ncVert); params.ConValue("curvemesh") = ncMesh; // //position the curve head indicator // headPoint = System.CreateDO("Math Package/Point Data"); headPointA = System.CreateDO("Math Package/Point Data"); headPointA.x = cpVert.x(0); headPointA.y = cpVert.y(0); headPointA.z = cpVert.z(0); headPoint = cpMatrix.TransformPoint(headPointA); params.ConValue("tx") = headPoint.x; params.ConValue("ty") = headPoint.y; params.ConValue("tz") = headPoint.z; } NScript Object Package/jScript languageint lLODg5pVxHm؋o6Space 3D Package/Mesh Datacurvemesh >W5f@(䐈ɗ"ĺI[e/16Space 3D Package/Mesh Datacpmesh >W5f@(䐈ɭOEnuE:(PI6Space 3D Package/Mesh DataLODmesh >W5f@(䐈zaƸAq k>Math Package/Matrix Float DatacpMatrix `^02eE{|@'N^numbertx_nt EuSrhnumberty t7B!C K 'numbertzlE05DER_nt EuSrh @4W}@O{g5pVxHm؋o&(XFҦV>g'JNjn*pFCb@ b@?lE05DER @ t7B!C K 'z?zaƸAq kOEnuE:(PI-1OSM n 럆L<_ї0.;]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 owner = System.ThisOwner(); Node.Disconnect(owner + "/ExpandInMatrix", "Matrix", owner + "/curveHeadIndicator", "Matrix"); } NScript Object Package/jScript language04[4W}@O{(XFҦV>g'JNjn*pnCB`@@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) { // TODO: put your action code here owner = System.ThisOwner(); Node.ConnectTo(owner + "/ExpandInMatrix", "Matrix", owner + "/curveHeadIndicator", "Matrix"); } NScript Object Package/jScript language~൱DU #^c4W}@O{(XFҦV>g'JNjn*pnC?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@ NewCommandr// Execute // Called to execute the command function Execute(params) { owner = System.ThisOwner(); cpnode = Node.LinkedInputNode(owner, "cpmesh",0); curvenode = Node.LinkedOutputNode(owner, "curvemesh",0); Node.Disconnect(owner, "curvemesh", curvenode, "Input Mesh"); Node.Disconnect(cpnode, "WldMatrix", curvenode, "Matrix"); Node.Delete(cpnode); //Node.ConRemove(curvenode, "Input Mesh"); Node.Delete(owner); } NScript Object Package/jScript language~൱D#^c4W}@O{(XFҦV>g'JNjn*pnC`@@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 vB1F>BcurvenameArray R1TKNXIB%DޖYzM fDޖYzM fB&controlpointsArray (F)ݟ{BXP&?ǟHhH%?ǟHhH%BknotsArray GnKJO!i\tBX&ySO?*=?ySO?*=?B matrixdataArray GnKJO!i\tBP's"}]M2ƒEs"}]M2ƒEB,numcontrolpointsArray ΉHA +BX'2|=Bynj(.z@Ho2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ `CNewCommand?// October 2011 add turbocad dxf support // // Execute // Called to execute the command function Execute(params) { var filename = params.ConValue('filename'); owner = System.ThisOwner(); scene = Space.CurrentScene(); g_Points = System.CreateDO("Space 3D Package/Point Array Data"); myknots = System.CreateDO("Common Data Package/Number Array Data"); names = System.CreateDO("Common Data Package/String Array Data"); rawmatrixlist = System.CreateDO("Common Data Package/Number Array Data"); g_Pointsx = System.CreateDO("Common Data Package/Number Array Data"); g_Pointsy = System.CreateDO("Common Data Package/Number Array Data"); g_Pointsz = System.CreateDO("Common Data Package/Number Array Data"); numPoints = System.CreateDO("Common Data Package/Int Array Data"); names.Clear(); myknots.Clear(); g_Points.Clear(); rawmatrixlist.Clear(); g_Pointsx.Clear(); g_Pointsy.Clear(); g_Pointsz.Clear(); numPoints.Clear(); var forReading = 1, forWriting = 2, forAppending = 8; var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0; fs = new ActiveXObject("Scripting.FileSystemObject"); f = fs.GetFile(filename); connToFile = f.OpenAsTextStream( forReading, TristateUseDefault); extension = fs.GetExtensionName(filename); //System.Trace(extension); if(extension=="dxf") loadDXFcurve(params); else loadTScurve(params); connToFile.Close(); // params.ConValue("numcurves") = ... // params.ConValue("curvenameArray") = ... // params.ConValue("controlpointsArray") = ... // params.ConValue("knotsArray") = ... // params.ConValue("matrixdataArray") = ... // params.ConValue("numcontrolpointsArray") = ... } function loadTScurve(params) { //read lines of var rline = ""; theorder = 4; var g_Knots = new Array(); numcurves = 0; totalcpcount = 0; curveData = false; while( !connToFile.AtEndOfStream ) { rline = connToFile.ReadLine(); msgtag = rline.split(" "); if(msgtag[0] == "NCur") { curveData = true; numcurves++; //System.Trace("found a curve"); rline = connToFile.ReadLine(); msgtag = rline.split(" "); thename=""; for(i=1;i < msgtag.length; i++) thename = thename + msgtag[i]; System.Trace(thename); names.Add(thename); } if(msgtag[0] == "Transform" && curveData) { //System.Trace("load transform"); //mymatrix.LoadIdentity(); rline = connToFile.ReadLine(); msgtag = rline.split(" "); rawmatrixlist.Add(parseFloat(msgtag[0])); rawmatrixlist.Add(parseFloat(msgtag[1])); rawmatrixlist.Add(parseFloat(msgtag[2])); rawmatrixlist.Add(parseFloat(msgtag[3])); rline = connToFile.ReadLine(); msgtag = rline.split(" "); rawmatrixlist.Add(parseFloat(msgtag[0])); rawmatrixlist.Add(parseFloat(msgtag[1])); rawmatrixlist.Add(parseFloat(msgtag[2])); rawmatrixlist.Add(parseFloat(msgtag[3])); rline = connToFile.ReadLine(); msgtag = rline.split(" "); rawmatrixlist.Add(parseFloat(msgtag[0])); rawmatrixlist.Add(parseFloat(msgtag[1])); rawmatrixlist.Add(parseFloat(msgtag[2])); rawmatrixlist.Add(parseFloat(msgtag[3])); } if(msgtag[0] == "Order" && curveData) { theorder = parseInt(msgtag[1]); //System.Trace("the order is " + theorder); } if(msgtag[0]=="Control" && msgtag[1]=="Points" && curveData) { numcontrol = parseInt(msgtag[2]); numPoints.Add(numcontrol); totalcpcount = totalcpcount + numcontrol; for(i=0;i<numcontrol;i++) { rline = connToFile.ReadLine(); msgtag = rline.split(" "); g_Pointsx.Add(parseFloat(msgtag[0])); g_Pointsy.Add(parseFloat(msgtag[1])); g_Pointsz.Add(parseFloat(msgtag[2])); } } if(msgtag[0]=="Knots" && curveData) { numknots = numcontrol + theorder; for(i=1;i<=numknots;i++) { curknot = parseFloat(msgtag[i]); myknots.Add(curknot); } curveData = false; } } g_Points.SetSize(totalcpcount); for(i=0;i<totalcpcount;i++) { g_Points.x(i) = g_Pointsx.GetAt(i); g_Points.y(i) = g_Pointsy.GetAt(i); g_Points.z(i) = g_Pointsz.GetAt(i); } params.ConValue("controlpointsArray") = g_Points; params.ConValue("matrixdataArray") = rawmatrixlist; params.ConValue("knotsArray") = myknots; params.ConValue("numcontrolpointsArray") = numPoints; params.ConValue("numcurves") = numcurves; params.ConValue("curvenameArray") = names; } function loadDXFcurve(params) { //System.Trace("load tcw dxf curve"); //read lines of var rline = ""; theorder = 4; var g_Knots = new Array(); numcurves = 0; totalcpcount = 0; curveConfidence = -1; while( !connToFile.AtEndOfStream ) { rline = connToFile.ReadLine(); //msgtag = rline.split(" "); if(rline == "TCW_CUSTOM_DATA") { curveConfidence = 0; //System.Trace("confidence = 0"); } if(rline.substr(0,11) == "CMD_BEZIER@") { //System.Trace("cmd_bezier found"); if(curveConfidence==0) { if(rline.length == 11) thename = "TCWcurve_" + numcurves; else thename = rline.substr(11,rline.length-11); names.Add(thename); System.Trace(thename); curveConfidence=1; } else curveConfidence=-1; } if(rline == "TCW30CURVE") if(curveConfidence==1) curveConfidence=2; else curveConfidence=-1; if(rline == "Continuous") { if(curveConfidence==2) { curveConfidence=3;//we have a curve numcurves++; rline = connToFile.ReadLine();//1000 rline = connToFile.ReadLine();//val rline = connToFile.ReadLine();//1071 rline = connToFile.ReadLine(); numcontrol = parseInt(rline); numPoints.Add(numcontrol); clength = new Array(); curvelength = 0; clength[0] = 0; totalcpcount = totalcpcount + numcontrol; //read control points for(i=0;i<numcontrol;i++) { rline = connToFile.ReadLine();//1071 rline = connToFile.ReadLine();//type of cp rline = connToFile.ReadLine();//1010 x rline = connToFile.ReadLine(); curx = parseFloat(rline); g_Pointsx.Add(curx); rline = connToFile.ReadLine();//1020 y rline = connToFile.ReadLine(); cury = parseFloat(rline); g_Pointsy.Add(cury); rline = connToFile.ReadLine();//1030 z rline = connToFile.ReadLine(); curz = parseFloat(rline); g_Pointsz.Add(curz); //get curve length if(i>0) { dx = curx - prevx; dy = cury - prevy; dz = curz - prevz; dist = Math.sqrt(dx*dx + dy*dy + dz*dz); curvelength = curvelength + dist; clength[i] = curvelength; } prevx = curx; prevy = cury; prevz = curz; } //calculate some knots(approximation) numknots = numcontrol + theorder; curvepos = 0; myknots.Add(0); myknots.Add(0); myknots.Add(0); myknots.Add(0); for(i=4;i<numknots-4;i=i+3) { curval = clength[i-1]/curvelength; myknots.Add(curval); myknots.Add(curval); myknots.Add(curval); } myknots.Add(1); myknots.Add(1); myknots.Add(1); myknots.Add(1); } //set rawmatrixlist - identity matrix // rawmatrixlist.Add(1); rawmatrixlist.Add(0); rawmatrixlist.Add(0); rawmatrixlist.Add(0); rawmatrixlist.Add(0); rawmatrixlist.Add(1); rawmatrixlist.Add(0); rawmatrixlist.Add(0); rawmatrixlist.Add(0); rawmatrixlist.Add(0); rawmatrixlist.Add(1); rawmatrixlist.Add(0); curveConfidence=-1; } } g_Points.SetSize(totalcpcount); for(i=0;i<totalcpcount;i++) { g_Points.x(i) = g_Pointsx.GetAt(i); g_Points.y(i) = g_Pointsy.GetAt(i); g_Points.z(i) = g_Pointsz.GetAt(i); } params.ConValue("controlpointsArray") = g_Points; params.ConValue("matrixdataArray") = rawmatrixlist; params.ConValue("knotsArray") = myknots; params.ConValue("numcontrolpointsArray") = numPoints; params.ConValue("numcurves") = numcurves; params.ConValue("curvenameArray") = names; }NScript Object Package/jScript languageTǫstringfilename٦YNQyintnumcurvesXJDSpace 3D Package/Point Array Data&controlpointsArray (F)ݟ{DޖYzM fLCommon Data Package/Number Array DataknotsArray GnKJO!i\t?ǟHhH%LCommon Data Package/Number Array Data matrixdataArray GnKJO!i\tySO?*=?FCommon Data Package/Int Array Data,numcontrolpointsArray ΉHA +s"}]M2ƒEySO?*=?GnKJO!i\t*$?????????4W}@O{(XFҦV>g'JNjn*pn_ZCb@ d@2|=Bynj|?z@Hoۙ>??ǟHhH%GnKJO!i\t!Gt`X?Gt`X?Gt`X?????gr`X?gr`X?gr`X?????s`X?s`X?s`X?????XJ@i@~ʼn@4?J@jH?{v@d@;@[@"@:YK@>q@c@@i@?~ʼn@'@J@mn]@{v@hW@;@@"@ѥ@>q@F?>h@I?@? @WF$@ν@_@@b@z@=@=o@J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?٦YNQy-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOvB1F>R1TKNXIXTCWcurve_0TCWcurve_1TCWcurve_2MT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?s"}]M2ƒEΉHA +z@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?@2NUR3(F)ݟ{ZF?>h@I?@? @WF$@ν@_@@b@z@=@=o@ceZU@䑧r[җJs@ NewCommand// Execute // Called to execute the command function Execute(params) { var curCurveInd= params.ConValue('curCurveInd'); var cpArrayIn = params.ConValue('cpArrayIn'); var curveNameIn = params.ConValue('curveNameIn'); var knotsIn = params.ConValue('knotsIn'); var matrixdataIn = params.ConValue('matrixdataIn'); var numcpIn = params.ConValue('numcpIn'); // TODO: put your action code here //cnt = curveNameIn.GetSize(); //System.Trace(cnt); curCurveIndM1 = curCurveInd-1; curvename = curveNameIn.GetAt(curCurveInd-1); //System.Trace("name is " + curvename); numcp = numcpIn.GetAt(curCurveInd-1); System.Trace(numcp); owner = System.ThisOwner(); Node.Value(owner + "/LODcontrol","LODin") = numcp * 3; Node.Value(owner + "/controlPointCone/Cone primitive","Radial segments") = numcp; Node.Value(owner + "/controlPointMesh/Editable shape","Input Mesh") = Node.Value(owner + "/controlPointCone","Mesh"); Node.Value(owner + "/LODMesh/Editable shape","Input Mesh") = Node.Value(owner + "/LODCone","Mesh"); cpArray = System.CreateDO("Space 3D Package/Point Array Data"); cpArray.SetSize(numcp); cpskipfactor = 0; kskipfactor = 0; theorder = 4; if(curCurveIndM1>0) { for(i=0;i<curCurveIndM1;i++) { cpskipfactor = cpskipfactor + numcpIn.GetAt(i); kskipfactor = cpskipfactor + theorder; } } knots = System.CreateDO("Common Data Package/Number Array Data"); knots.Clear(); for(i=0;i<numcp;i++) { cpArray.SetElem(i,cpArrayIn.x(cpskipfactor+i),cpArrayIn.y(cpskipfactor+i),cpArrayIn.z(cpskipfactor+i)); } numknots = numcp + theorder; for(i=0;i<numknots;i++) { knots.Add(knotsIn.GetAt(kskipfactor+i)); } mymatrix = System.CreateDO("Math Package/Matrix Float Data"); mymatrix.LoadIdentity(); mymatrix.SetAt(0,0,matrixdataIn.GetAt((curCurveInd-1)*12+0)); mymatrix.SetAt(1,0,matrixdataIn.GetAt((curCurveInd-1)*12+1)); mymatrix.SetAt(2,0,matrixdataIn.GetAt((curCurveInd-1)*12+2)); mymatrix.SetAt(3,0,matrixdataIn.GetAt((curCurveInd-1)*12+3)); mymatrix.SetAt(0,1,matrixdataIn.GetAt((curCurveInd-1)*12+4)); mymatrix.SetAt(1,1,matrixdataIn.GetAt((curCurveInd-1)*12+5)); mymatrix.SetAt(2,1,matrixdataIn.GetAt((curCurveInd-1)*12+6)); mymatrix.SetAt(3,1,matrixdataIn.GetAt((curCurveInd-1)*12+7)); mymatrix.SetAt(0,2,matrixdataIn.GetAt((curCurveInd-1)*12+8)); mymatrix.SetAt(1,2,matrixdataIn.GetAt((curCurveInd-1)*12+9)); mymatrix.SetAt(2,2,matrixdataIn.GetAt((curCurveInd-1)*12+10)); mymatrix.SetAt(3,2,matrixdataIn.GetAt((curCurveInd-1)*12+11)); mymatrix.SetTransX(-mymatrix.GetTransX()); params.ConValue("cpArrayOut") = cpArray; params.ConValue("curvename") = curvename; params.ConValue("knotsOut") = knots; params.ConValue("thematrix") = mymatrix; } NScript Object Package/jScript language~൱Da#^c intcurCurveIndp jLJQnDSpace 3D Package/Point Array DatacpArrayIn (F)ݟ{4:I2߳6rLCommon Data Package/String Array DatacurveNameIn R1TKNXIͭGrHwdLCommon Data Package/Number Array DataknotsIn GnKJO!i\th޽bJ0LCommon Data Package/Number Array DatamatrixdataIn GnKJO!i\tȫ@J!!FCommon Data Package/Int Array DatanumcpIn ΉHA +[Ns3;ml9DSpace 3D Package/Point Array DatacpArrayOut (F)ݟ{@2NUR3stringcurvenamezVotFoqC/LCommon Data Package/Number Array DataknotsOut GnKJO!i\t \5GTO>Math Package/Matrix Float Datathematrix `^02eE{|@KGvܲDHVquȫ@J!!4W}@O{(XFҦV>g'JNjn*pnDb@ j@2|=Bynj|?z@Hoۙ>?p jLJQnzVotFoqC/TCWcurve_24:I2߳6rJ@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?[Ns3;ml9h޽bJ0GrHwd \5GTOGnKJO!i\tb ????s`X?s`X?s`X?-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@HoKGvܲDHVqu`^02eE{|@B????8ʯȥJH|o7 gH]kDwP`d8pM*#ͺOYY/tfѭ8Lwb"q" !