Wednesday 22 March 2017

DYN04.11 : အေၿခခံ Geometry တည္ေဆာက္ၿခင္း - အပိုင္း(၁၁)

မဂၤလာပါ။

ဒီတခါေတာ့ List ေတြရဲ့ အသံုးၿပဳပံုေတြကို အက်ဥ္းခ်ံဳးၿပီး တင္ၿပေဆြးေႏြးသြားဖို ့စီစဥ္ထားပါတယ္။

List ဆိုတာ Information ေတြကို သက္ဆိုင္ရာအစုအဖြဲ ့အလိုက္ အစီအစဥ္က်နေအာင္ စီစဥ္ေပးတဲ့ Node လို ့ ဆိုႏိုင္ပါတယ္။ Dynamo မွာ List ဆိုတဲ့ Node ေတြကို Create အားၿဖင့္ေတာ့ (၃) ခုသာေတြ ့ရမွာၿဖစ္ၿပီး၊ Action အားၿဖင့္အေၿမာက္အၿမား ၿမင္ေတြ ့ရမွာၿဖစ္ပါတယ္။ Query အားၿဖင့္ေတာ့ (၁) ခုတည္းကိုသာ ၿမင္ေတြ ့ႏိုင္ပါတယ္။ Create အေနနဲ ့သံုးလို ့ရမယ့္ List ေတြကို ေရွ  ့က Post ေတြမွာလည္း အသံုးၿပဳၿပခဲ့ၿပီးပါၿပီ။
List.Create မွာ Input အေနနဲ ့ List အစုအဖြဲ ့ေတြကို တခုထက္အက ကိုယ္ႀကိဳက္သေလာက္ ဖန္တီးႏိုင္ပါတယ္။



အထက္ေဖာ္ၿပပါ ပံုကို ႀကည့္မယ္ ဆိုရင္ Construction Material စာရင္းတခုကို ေတြ ့ၿမင္ႏိုင္မွာၿဖစ္ပါတယ္။ အဲ့ဒီ အစုအဖြဲ ့တခုစီ ၿဖစ္ေနတဲ့ Information သူ ့အစုနဲ ့သူ စာရင္းၿပဳစုႏိုင္ဖို ့အတြက္ List.Create ကို အသံုးၿပဳႀကရပါမယ္။ List ေတြကို (0) ကေန စတင္ေရတြက္ရတာကိုလည္း သတိၿပဳမိဖို ့လိုအပ္ပါတယ္။

အခုဆိုရင္ေတာ့ ပထမအဆင့္ အေနနဲ ့ List ေတြကို သူ ့အစုနဲ ့သူ စာရင္းၿပဳစုၿပီးပါၿပီ။ သူ စာရင္းၿပဳစုပံုက Information ရဲ့ Source အလိုက္ ၿဖစ္ေနတာမို ့Information ေတြဟာ သူ ့List တခုစီနဲ ့သူ သီးသီးၿခားၿခားႀကီး ၿဖစ္ေနပါတယ္။ တကယ္တမ္းၿဖစ္ခ်င္တာက
  • 1, Cement, 10, bag
  • 2, Sand, 200, cuft
  • 3, Gravel, 400, cuft
  • 4, Rebar, 550, kg
  • 5, Formwork, 350, sqft
အဲဒီလို ၿဖစ္ဖို ့ရာ List ရဲ့ Action ေအာက္က List.Transpose ကို အသံုးၿပဳရပါမယ္။
လက္ရွိရထားတဲ့ List ကိုသာ Excel ကို Export လုပ္မယ္ ဆိုရင္ ေအာက္ေဖာ္ၿပပါပံုအတိုင္း ၿမင္ေတြ ့ ႀကရမွာပါ။
ဒီအေၿခအေနမွာ သူတို ့အတြက္ Header အေနနဲ ့ ထည့္ေပးဖို ့ လိုအပ္လာမယ္ ဆိုရင္ေတာ့ List ရဲ့ Action ေအာက္က List.AddItemToFront ကို အသံုးၿပဳရပါမယ္။
ဒါမွလည္း Excel မွာ ေအာက္ေဖာ္ၿပပါပံုအတိုင္း စနစ္တက် စာရင္းၿပဳစုႏိုင္မွာ ၿဖစ္ပါတယ္။
တကယ္လို ့ လက္ရွိ List ထဲကမွ Rebar နဲ ့ပတ္သက္တဲ့ Information ဖယ္ရွားပစ္ခ်င္တယ္ ဆိုရင္ေတာ့ List ရဲ့ Action ေအာက္က List.RemoveItemAtIndex ကို အသံုးၿပဳရပါမယ္။ သူ ့မွာ Input အေနနဲ ့ List, Indices ဆိုၿပီး ပါ၀င္ေနပါတယ္။ ကိုယ္ဖယ္ရွားခ်င္တဲ့  List ရဲ့ Index number ကို Indices နဲ ့ ခ်ိတ္ဆက္ေပးလိုက္ ရံုပါပဲ။
List ရဲ့ Action ေအာက္က တၿခားေသာ အသံုး၀င္တဲ့ Node ေတြကိုလည္း ကိုယ့္ဖာသာကိုယ္ ဆက္လက္ ေလ့လာႀကပါ...လို ့တိုက္တြန္းရင္း အေၿခခံ Geometry တည္ေဆာက္ၿခင္းဆိုတဲ့ ေဆြးေႏြးခန္းကို ဒီေနရာမွာ ခဏနားပါရေစ။
(ေရွ  ့ လာမယ့္ Post ေတြက်ေတာ့မွပဲ အလ်င္းသင့္ရင္ သင့္သလို ထူးၿခားတဲ့ List ရဲ့ Node ေတြ တင္ၿပေဆြးေႏြးသြားေပးပါ့မယ္။)

လာမယ့္  Post ေတြက စလို ့ Revit နဲ ့ တြဲဖက္အသံုးၿပဳမယ့္ Dynamo ရဲ့ Code ေတြအေႀကာင္းကို ဆက္လက္တင္ၿပ ေဆြးေႏြးသြားဖို ့ ရည္မွန္းထားပါတယ္။

Sunday 19 March 2017

DYN04.10 : အေၿခခံ Geometry တည္ေဆာက္ၿခင္း - အပိုင္း(၁၀)

မဂၤလာပါ အေပါင္းအသင္းတို ့ေရ...

ဒီ Post မွာေတာ့ အေၿခခံ 3D Solid ေတြကိုဖန္တီးႀကတဲ့ ေနရာမွာ အသံုးၿပဳေလ့ရွိႀကတဲ့ Extrude, Sweep, Revolve,...စတဲ့ နည္းလမ္းေတြနဲ ့ အသံုးၿပဳ တင္ၿပေဆြးေႏြးသြားဖို ့ရွိပါတယ္။

Library ေအာက္က Geometry > Solid ဆီကို သြားတဲ့အခါ ေအာက္ေဖာ္ၿပပါ ပံုအတိုင္း Create အေနနဲ ့ Node (၈)ခု၊ Action အေနနဲ ့ Node (၉)ခု၊ Query အေနနဲ ့ Node (၂)ခု ကို ေတြ ့ၿမင္ႀကရမွာပါ။
ေဖာ္ၿပပါ Node ေတြထဲကမွ Solid.ByLoft(crossSections) ေလးနဲ ့ 3D Solid တခု ဖန္တီးႀကရေအာင္။

သူ ့မွာ input အေနနဲ ့က crossSections ဆိုတဲ့ တခုသာ ပါ၀င္ေနတာကို သတိထားမိႀကမွာပါ။ သူ ့ရဲ့ လိုအပ္ခ်က္ကေတာ့ Closed Curve (၂)ခုပါပဲ။ အဲ့ဒီအတြက္ Circle တခုနဲ ့ Ellipse တခုကို အရင္ဖန္တီးႀကတာေပါ့။
(အထက္ေဖာ္ၿပပါ ပံုကေတာ့ Circle တခုနဲ ့ Ellipse တခုကို ဖန္တီးတဲ့ေနရာမွာ သူတို ့ရဲ့ မူလ Node ေရာ Code Block ကိုပါ အသံုးၿပဳၿပေပးထားတာပါ။ အသံုးၿပဳသူအေနနဲ ့က ႏွစ္သက္ရာကို လြတ္လပ္စြာ အသံုးၿပဳႏိုင္ပါတယ္။ မူလ Node ေတြကိုပဲ သံုးခ်င္ရင္ေတာ့ သက္ဆိုင္ရာ input ေတြကိုပါ ၿဖည့္စြက္ေပးဖို ့ လိုအပ္ပါလိမ့္မယ္။)
က်ေနာ့္အေနနဲ ့ Code Block ေတြကိုပဲ အသံုးၿပဳၿပီး Run လိုက္တဲ့အခါ အထက္ေဖာ္ၿပပါ ပံုအတိုင္း Circle တခုနဲ ့ Ellipse တခုကို ဖန္တီးထားတာကို ၿမင္ေတြ ့ရမွာပါ။

ဒီေနရာမွာ အခက္အခဲတခု ႀကံဳေနရတာက Solid.ByLoft(crossSections) ရဲ့ input က တခုတည္းရွိေနၿပီး တကယ္ input လုပ္ရမွာက Circle နဲ ့ Ellipse ဆိုတဲ့ input (၂)ခု ၿဖစ္ေနတာပါပဲ။

အဲ့ဒီအခက္အခဲကို ေၿပလည္ေစဖို ့အတြက္ Dynamo က List.Create ဆိုတဲ့ Node ကို စီစဥ္ေပးထားပါတယ္။ List ဆိုတာ သက္ဆိုင္ရာ Element ေတြရဲ့ Information ေတြကို အစီအရီ ေနရာခ်ေပးတဲ့ အလုပ္ကို လုပ္ေဆာင္ေပးပါတယ္။ Dynamo မွာ Code ေတြကိုေရးႀကတဲ့အခါ မသိမၿဖစ္တဲ့ အစိတ္အပိုင္း လို ့လည္း ဆိုႏိုင္ပါတယ္။

Library ေအာက္ကေန Core > List > List.Create (or) Search Box > List.Create ကိုသံုးၿပီး List.Create ဆိုတဲ့ Node ကိုရယူပါမယ္။ ၿပီးရင္ေတာ့ ေအာက္ေဖာ္ၿပပါ ပံုအတိုင္း 3D Solid တခုကို ၿဖစ္ေပၚေစမယ့္ Code တခုကို ဖန္တီးပါ့မယ္။
ဒီတခါေတာ့ Solid.ByLoft(crossSections, guideCurve) ကို အသံုးၿပဳႀကည့္ပါမယ္။ သူ ့မွာ guideCurve ဆိုတဲ့ input တခု ပိုလာတာေႀကာင့္ Closed Curve (၂)ခု အၿပင္ Path တခုကိုပါ  ဖန္တီးေပးဖို ့လိုအပ္ လာပါတယ္။
ဒီ Code အရင္ဆံုး guideCurve အတြက္ Nurbs.ByPoints တခုကို ဖန္တီးပါမယ္။ အဲဒီအတြက္ လိုအပ္ေနတာက Point ေတြၿဖစ္တာေႀကာင့္ Code Block သံုးၿပီး Point (၃)ခုကို အရင္ ဖန္တီးပါ့မယ္။ ၿပီးရင္ေတာ့ ေအာက္က ပံုအတိုင္း guideCurve တခုဖန္တီးပါ့မယ္။

ဒုတိယ အဆင့္အေနနဲ ့ crossSections အတြက္ Closed Curve (၂)ခုကို ဖန္တီးရပါ့မယ္။ ဒီေနရာမွာ Closed Curve (၁)ခု ကို guideCurve ရဲ့ အစ Point မွာ ထားၿပီး ေနာက္ Closed Curve (၁)ခု ကို guideCurve ရဲ့ အဆံုး Point မွာ ထားခ်င္ပါတယ္။ ဒါတင္မကပဲ Closed Curve (၂)ခုဟာ guideCurve နဲ ့ Perpendicular လည္းက်ေနဖို ့ လိုအပ္ပါမယ္။
အဲ့ဒီအတြက္ Library ေအာက္ကေန Geometry > Curve (Action) > PlaneAtParameter ကို အသံုးၿပဳပါ့မယ္။ သူ ့မွာ input အေနနဲ ့ curve, param တို ့ပါ၀င္ေနပါမယ္။
curve အတြက္ကေတာ့ အထက္ေဖာ္ၿပပါ ပံုအတိုင္း ခ်ိတ္ဆက္ေပးလိုက္ရံုပါပဲ။ param အတြက္က်ေတာ့ {0,1}; လို ့ရိုက္ထည့္ေပးရပါမယ္။ ဆိုလိုတာက Plane တခုကို အစမွာ ဖန္တီးၿပီး ေနာက္ Plane တခုကိုေတာ့ အဆံုးမွာ ဖန္တီးမယ္ ဆိုတဲ့ သေဘာပါပဲ။
(တကယ္လို ့ guideCurve ရဲ့ 1/4 မွာ Plane တခု၊ 3/4 မွာ Plane တခု ထပ္ထည့္ခ်င္တယ္ဆိုရင္ေတာ့ {0,0.25,0.75,1}; လို ့ ရိုက္ထည့္ေပးလိုက္ရံုပါပဲ။)
အခုဆိုရင္ Plane (၂)ခု ရၿပီမို ့ Plane တခု မွာ Closed Curve တခုစီ ဖန္တီးဖို ့ လိုအပ္လာပါၿပီ။
ဆိုေတာ့ကာ...Library ေအာက္ကေန
- Geometry > Circle > ByPlaneRadius
- Geometry > Ellipse > ByPlaneRadii ... နဲ ့Circle တခု Ellipse တခုကို ဖန္တီးပါမယ္။
အခုအတိုင္း ဆိုရင္ေတာ့ Circle တခု နဲ ့ Ellipse တခုဟာ Plane (၂)ခုစလံုး အေပၚမွာ ဖန္တီးၿပီးေနတာကို ေတြ ့ၿမင္ႀကရမွာပါ။ လိုခ်င္တာက Plane တခုမွာ Closed Curve တမ်ိဳးစီသာ သီးၿခားစီ ဖန္တီးခ်င္တာပါ။ ဒါေႀကာင့္ပဲ List.RemoveItemIdex ဆိုတဲ့ Node ကိုအသံုးၿပဳၿပီး ကိုယ္မလိုခ်င္တဲ့ List ကို ဖယ္ရွားမွာ ၿဖစ္ပါတယ္။
ဒီေနရာမွာ List ေတြစီစဥ္ပံုကို အနည္းငယ္ တင္ၿပေဆြးေႏြးခ်င္ပါတယ္။
အခုလို Library ကေန Search Box > Watch လို ့ရိုက္ထည့္ၿပီး ရလာတဲ့ Watch (Node) ကို ခ်ိတ္ဆက္ၿပီး Run တဲ့အခါ အထက္ေဖာ္ၿပပါပံုအတိုင္း List စီစဥ္ပံုကို Watch မွာေတြ ့ၿမင္ႏိုင္ပါမယ္။ List ေတြကို စီတဲ့အခါ (0) ကေန စၿပီး ေရတြက္ေလ့ရွိတာကို သတိထားမိဖို ့လိုပါမယ္။ ဒါမွ ကိုယ္ဖယ္ရွားခ်င္တဲ့ List ကို အတိအက် ေရြးခ်ယ္ႏိုင္မွာ ၿဖစ္ပါတယ္။
ကဲ... List.RemoveItemIdex ကိုစၿပီး အသံုးၿပဳပါေတာ့မယ္။
အေပၚက ေဖာ္ၿပထားတဲ့ ပံုကို ေလ့လာရင္း List.RemoveItemIdex ရဲ့သေဘာကို နားလည္ႏိုင္မယ္လို ့ ေမွ်ာ္လင့္ပါတယ္။
အခုဆိုရင္ Plane တခုစီ ခြဲထားခဲ့ၿပီမို ့ Closed Curve ေတြကို ကိုယ္ႏွစ္သက္ရာ Plane ေပၚမွာ ဖန္တီးႏိုင္ႀကပါၿပီ။
ကဲ... အခုဆိုရင္ Closed Curve (၂) ခု နဲ ့ guideCurve (၁)ခုဟာ အဆင္သင့္ ၿဖစ္ေနၿပီမို ့က်ေနာ္တို ့လိုခ်င္တဲ့ Solid.ByLoft(crossSections, guideCurve) နဲ ့အတူ 3D Solid တခုကို ေအာက္ေဖာ္ၿပပါ ပံုအတိုင္း ဖန္တီးႏိုင္ပါၿပီ။
အေၿခအေနက ေမွ်ာ္လင့္ထားသလို ၿဖစ္မလာခဲ့ဘဲ Closed Curve (၂) ခုႀကား ဆက္သြယ္မွုတခု လစ္ဟေနၿပန္ပါတယ္။ အဲ့ဒီအတြက္ PolyCurve.ByJoinedCurve ဆိုတဲ့ Node ကိုသံုးၿပီး Closed Curve (၂)ခု ကိုဆက္စပ္ေပးလိုက္တဲ့ အခါက်ေတာ့မွပဲ လိုခ်င္တဲ့ 3D Solid တခုကို ေအာက္ေဖာ္ၿပပါ ပံုအတိုင္း ဖန္တီးႏိုင္ပါေတာ့တယ္။
ဒီ Post ဟာ အေတာ္ေလး ရွည္သလို လိုအပ္ခ်က္ေတြနဲ ့ အသံုးၿပဳရတဲ့ Node ေတြကလည္း အေၿခခံကို ေလ့လာေနသူအတြက္ နဲနဲေတာ့ စိတ္ရွုပ္ေထြးေစမွာ အမွန္ပါပဲ။
ဒါေပမယ့္ Programming ရဲ့သေဘာကိုက ကိုယ္လိုခ်င္တဲ့ ရလဒ္တခုကေန အေၿခတည္လိို ့ ထပ္ဆင့္လိုအပ္ခ်က္ေတြကို ၿဖည့္စြက္ရင္း Code ေတြေရးသားႀကရတာပါပဲ။

က်န္ေနေသးတဲ့ Extrude နဲ ့ Revolve အသံုးေတြကိုလည္း ကိုယ့္ဖာသာ ႀကိဳးစားၿပီး ဖန္တီးႀကည့္ႀကဖို ့ တိုက္တြန္းလိုက္ပါရေစ။

လာမယ့္ Post က်ရင္ေတာ့ List ေတြ အလုပ္လုပ္ပံုေတြကို အက်ဥ္းခ်ံဳးၿပီး တင္ၿပေဆြးေႏြးသြားဖို ့ စီစဥ္ထားပါတယ္။

Saturday 18 March 2017

DYN04.09 : အေၿခခံ Geometry တည္ေဆာက္ၿခင္း - အပိုင္း(၉)

မဂၤလာပါ အေပါင္းအသင္းတို ့ေရ...

ဒီ Post က စလို ့ 3D Geometry ဖန္တီးပံုေတြကို တင္ၿပေဆြးေႏြးသြားဖို ့ ရွိပါတယ္။ 3D Geometry ဖန္တီးပံု ဆိုေပမယ့္လည္း 3D တခု ၿဖစ္လာဖို ့ ဆိုတာ 2D Geometry နဲ ့ ေပါင္းစပ္ဖြဲ ့စည္းရတာမို ့ 2D Geometry အပိုင္းမွာ ေဆြးေႏြးၿပီးသား အပိုင္းေတြေရာ၊ မေဆြးေႏြးၿဖစ္ေသးတဲ့ အပိုင္းေတြကိုပါ အလ်င္းသင့္သလို တင္ၿပသြားဖို ့ စီစဥ္ထားပါတယ္။

(က်ေနာ္ကိုယ္တိုင္ကိုက ဒီ Programming ကို ေလ့လာေနသူတဦး အဆင့္သာ ရွိေသးတာေႀကာင္း တင္ၿပေဆြးေႏြးမွုေတြဟာ အေၿခခံမွာတင္ တ၀ဲလည္လည္လည္း ၿဖစ္ေကာင္းၿဖစ္ေနႏိုင္တာကို နားလည္ေပးႏိုင္လိမ့္မယ္လို ့ ေမွ်ာ္လင့္ပါတယ္။

လုပ္ငန္းခြင္မွာ အသံုး၀င္တဲ့ Code ေတြေရးသားပံုကိုလည္း အတတ္ႏိုင္ဆံုးနဲ ့ အၿမန္ဆံုးေဆြးေႏြး တင္ၿပခ်င္ပါတယ္။ ဒါေပမယ့္ Programming ရဲ့သေဘာအရ အေၿခခံမွ ပိုင္ႏိုင္မွု မရွိရင္ Code ေတြေရးသားႏိုင္သူ ၿဖစ္မလာပဲ Code ေတြ Copy/ Paste လုပ္သူသာ ၿဖစ္သြားႏိုင္တာမို ့အခုလို အေၿခခံ အပိုင္းေတြကို အခ်ိန္ေပးၿပီး တင္ၿပေနရၿခင္းပဲ ၿဖစ္ပါတယ္။

တဖက္ကႀကည့္ၿပန္ရင္လည္း အေၿခခံမွာတင္ တ၀ဲလည္လည္လည္း ၿဖစ္လြန္းေနၿပန္ရင္လည္း က်ေနာ္ေရာ အေပါင္းအသင္းတို ့ပါ အီလည္လည္ၿဖစ္ၿပီး ပ်င္းရိ စိတ္ပ်က္သြားမွာကိုေတာ့ စိုးရိမ္မိပါတယ္။ ဒီ 3D Geometry ဖန္တီးပံုကို အတတ္ႏိုင္ဆံုး အတိုခ်ံဳးၿပီး ထိထိေရာက္ရွိေအာင္ တင္ၿပ ေဆြးေႏြးသြားပါမယ္။

တကယ္လို ့ က်ေနာ့္တင္ၿပေဆြးေႏြးမွုမွာ မပါ၀င္လိုက္တဲ့ တခ်ိဳ ့ေသာ Node ေတြအေႀကာင္းကို သိခ်င္ရင္ Facebook ကေနၿဖစ္ေစ၊ Post တြေအာက္က Comment Box ကေနၿဖစ္ေစ ေမးၿမန္းႏိုင္ပါတယ္။
က်ေနာ္ မေၿဖႏိုင္တဲ့ ေမးခြန္းေတြ ဆိုရင္လည္း တတ္သိကၽြမ္းက်င္တဲ့ သူေတြဆီကို ေမးၿမန္းၿပီး ၿပန္လည္ေၿဖႀကားေပးပါ့မယ္။)

3D Geometry အတြက္ ပထမဆံုး အေနနဲ ့ Cuboid ေလးနဲ ့စလိုက္ႀကရေအာင္။
Library ကေန Geometry > Cuboid ကို သြားလိုက္တာနဲ ့ Create အတြက္ Node (၄)ခုရယ္၊ Query အတြက္ Node (၃)ခုရယ္ကို အရင္ဆံုး ေတြ ့ၿမင္ရမွာပါ။
အဲ့ဒီ Create အတြက္ Node (၄)ခုထဲကမွ ဒုတိယတခုၿဖစ္တဲ့ Cuboid.ByLengths (width, length, height) ဆိုတဲ့ Node နဲ ့ Cuboid တခု ဖန္တီးႀကရေအာင္။ သူ ့မွာ width, length, height ဆိုတဲ့ input (၃)ခု ပါ၀င္ေနပါမယ္။

ဘာ Value မွမေပးဘဲ အဲ့ဒီ Node နဲ ့တင္ Run လိုက္ရင္ေတာ့ width, length, height ရဲ့ Value ေတြဟာ 1 unit စီ ရွိေနၿပီး သူ ့ရဲ့ Centroid ဟာ (0,0,0) မွာ Default အေနနဲ ့ၿမင္ေတြ ့ႀကရမွာပါ။
ဒီေနရာမွာ ေမးစရာ ရွိလာတာက ဘယ္လိုအေၿခအေနမ်ိဳးမွာ က်န္တဲ့ Node ေတြကို သံုးရမလဲ ဆိုတာပါပဲ။
တတိယ Node ၿဖစ္တဲ့ Cuboid.ByLengths (origin, width, length, height) မွာ ဆိုရင္ေတာ့ origin ဆိုတဲ့ input (၁)ခု ပိုပါလာတာကို ေတြ ့ရမွာပါ။ width, length, height တို ့ရဲ့ တန္ဖိုး အၿပင္ အဲ့ဒီ Cuboid ရဲ့ Centroid (or) Origin တန္ဖိုးကိုပါ ေပးလို ့ရေနပါၿပီ။
 
ေနာက္ဆံုး Node ၿဖစ္တဲ့ Cuboid.ByLengths (cs, width, length, height) မွာ ဆိုရင္ေတာ့ Cuboid ရဲ့ Centroid အတြက္ Coordinate System ကိုပါ ေပးလို ့ရတဲ့ အေၿခအေနမ်ိဳး ၿဖစ္ေနပါၿပီ။

ဘယ္အခ်ိန္မွာ Origin တန္ဖိုး သတ္မွတ္ဖို ့လိုမယ္၊ ဘယ္အခ်ိန္မွာ Coordinate System သတ္မွတ္ဖို ့လိုမယ္ ဆိုတာကေတာ့ ကိုယ္ဖန္တီးခ်င္တဲ့ Code ရဲ့ လိုအပ္ခ်က္ အေပၚမွာပဲ မူတည္ေနမွာ ၿဖစ္ပါတယ္။ အသံုး၀င္တဲ့ Node ေတြ အေၿမာက္အၿမား ေပးထားတဲ့ ႀကားကေနမွ ကိုယ္ဖန္တီးခ်င္တဲ့ Code ရဲ့ လိုအပ္ခ်က္ေတြကို ၿဖည့္စြက္ႏိုင္ဖို ့ ဆိုတာကေတာ့ ရွာေဖြစမ္းသပ္ႏိုင္မွုေတြ၊ ေလ့လာစူးစမ္းလိုမွုေတြ အေပၚမွာ အမ်ားႀကီး မူတည္ေနပါတယ္။

လာမယ့္ Post မွာေတာ့ Solid Form ေတြ ဖန္တီးပံုကို ဆက္လက္ တင္ၿပေဆြးေႏြးသြားဖို ့ရွိပါတယ္။ Solid Form ဆိုေပမယ့္လည္း သူ ့ရဲ့ ၿဖစ္တည္မွုအတြက္ လိုအပ္ေနမယ့္ အေထာက္အပံ့ေတြ ၿဖစ္ႀကတဲ့ Create, Action, Query ဆိုတဲ့ Node အမ်ိဳးအစားေတြထဲက သင့္ေတာ္ရာ Node ေတြကို အသံုးၿပဳတင္ၿပေဆြးေႏြးသြားမွာမို ့ ေစာင့္ေမွ်ာ္အားေပးႀကပါအံုး...လို ့။

Saturday 11 March 2017

DYN04.08 : အေၿခခံ Geometry တည္ေဆာက္ၿခင္း - အပိုင္း(၈)

မဂၤလာပါ။

ဒီ Post မွာေတာ့ Surface.ByPatch ဆိုတဲ့ Node အသံုးကို Code Block နဲ ့တြဲဖက္ၿပီး တင္ၿပေဆြးေႏြးသြားမွာ ၿဖစ္ပါတယ္။ ဒါမွလည္း Code Block ထဲမွာ Script ေရးသားပံုေတြကိုပါ ရင္းႏွီးသြား၊ အေလ့အက်င့္ ရသြားမွာ ၿဖစ္ပါတယ္။

Surface.ByPatch မွာ input အေနနဲ ့ closedCurve တခုနည္း ပါ၀င္တာကို ေတြ ့ၿမင္ရမွာပါ။
  • Surface.ByPatch တခု ဖန္တီးဖို ့ရာ closedCurve တခုလိုအပ္ပါမယ္။
  •  closedCurve အတြက္ Circle တခု ဖန္တီးဖို ့လိုအပ္ပါမယ္။ အဲ့ဒီအတြက္ Circle.ByCenterPointRadius ကို အသံုးၿပဳမွာ ၿဖစ္ပါတယ္။
  • Circle.ByCenterPointRadius ကို အသံုးၿပဳမယ္ ဆိုရင္ Center Point နဲ ့Radius ေတြလိုအပ္လာပါလိမ့္မယ္။
  • အဲ့ဒီအတြက္  Circle.ByCenterPointRadius (CenterPoint , Radius); ဆိုၿပီး Code Block ထဲမွာ စတင္ေရးသားရမွာ ၿဖစ္ပါတယ္။
  • Center Point အတြက္ Point.ByCoordinates နဲ ့ Radius အတြက္ Number ေတြ လိုအပ္လာပါမယ္။
  • အဲ့ဒီအတြက္ Code Block ထဲက CenterPoint ေနရာမွာ Point.ByCoordinates (0,0,0) နဲ ့အစား ထိုးေပးရပါမယ္။ Radius ေနရာမွာေတာ့ လိုခ်င္တဲ့ Radius ရဲ့ တန္ဖိုးကို အစား ထိုးေပးရမွာ ၿဖစ္ပါတယ္။
  • အားလံုးကို ေပါင္းစည္းလိုက္တဲ့အခါ ...  Circle.ByCenterPointRadius(Point.ByCoordinates(0,0,0),6); ဆိုတဲ့ closedCurve တခုကို ဖန္တီးတဲ့ Node တခု ဖန္တီးၿပီးသား ၿဖစ္ေနတာကို ေတြ ့ၿမင္ႀကရမွာပါ။
ဒီ Node ထဲမွာပဲ Curve.Patch ကိုထည့္သြင္းခ်င္ရင္ေတာ့ Script ကို ေအာက္ေဖာ္ၿပပါ ပံုအတိုင္း ၿဖည့္စြက္ ေရးသားေပးႏိုင္ပါတယ္။
(Surface.ByPatch အစား Curve.Patch ရ့ဲ Node ၿဖစ္တဲ့ .Patch() ကို ထည့္သြင္းအသံုးၿပဳရမွာ ၿဖစ္ပါတယ္။)
လာမယ့္ Post မွာေတာ့ Solid Geometry ေတြ ဖန္တီးပံုကို ဆက္လက္ တင္ၿပေဆြးေႏြးသြားဖို ့ စီစဥ္ထားပါတယ္။

DYN04.07 : အေၿခခံ Geometry တည္ေဆာက္ၿခင္း - အပိုင္း(၇)

အားလံုးပဲ မဂၤလာပါ။

ဒီ Post ကေန စ လို ့အေၿခခံ 3D Geometry ေတြ ဖန္တီးပံုကို တင္ၿပ ေဆြးေႏြးသြားမွာ ၿဖစ္ပါတယ္။ 3D Geometry ဆိုေပမယ့္လဲ 3D ၿဖစ္တည္လာဖို ့အတြက္ 2D Geometry ေတြကေတာ့ ဖန္တီးေနရအံုးမွာပါပဲ။ ဒါေႀကာင့္လည္း 2D Geometry ဖန္တီးမွုေတြကို သက္သက္မေဆြးေႏြးေတာ့တာပါ။ ေနာက္လာမယ့္ Post ေတြဟာဆိုရင္ ပိုၿပီး စိတ္၀င္စားစရာ ေကာင္းလာလိမ့္မယ္ လို ့ ေမွ်ာ္လင့္ရပါတယ္။

အရင္ဆံုး Library ထဲက Surface ကို အရင္ ေလ့လာႀကရေအာင္။
Surface တခုဖန္တီးဖို ့အတြက္ Node ေတြကိုေတာ့ အထက္ေဖာ္ၿပပါပံုထဲမွာ ေတြ ့ၿမင္ႏိုင္ပါတယ္။ အဲဒီ Node ေတြထဲကမွ အေပၚဆံုးက Surface.BySweep ဆိုတဲ့ Node နဲ ့ စတင္ႀကည့္ပါမယ္။

Surface.BySweep မွာ input အေနနဲ ့ Profile, Path တို ့ ပါ၀င္ေနတာမို ့ Profile အတြက္ NurbsCurve တခုကို အရင္ ဖန္တီးေပးဖို ့ လိုအပ္ပါမယ္။ NurbsCurve.ByPoints မွာကလည္း input အေနနဲ ့ Points သာ ပါ၀င္ေနတာမို ့NurbsCurve အတြက္ Points ေတြကို အရင္ ဖန္တီးေပးရပါတယ္။
Path အတြက္ Line တခုလည္းဖန္တီးေပးဖို ့ လိုအပ္ပါမယ္။

အထက္ေဖာ္ၿပပါ ပံုကေတာ့ လိုအပ္ေနတဲ့ Profile အတြက္ NurbsCurve တခုကို Points ေတြကေနတဆင့္ ဖန္တီးထားတာၿဖစ္ပါတယ္။ ၿပီေတာ့ Path အတြက္ Line တခုကိုလည္း ဖန္တီးထားပါတယ္။

အဲ့ဒီ  Profile နဲ ့ Path ေတြကေနမွ Surface.BySweep နဲ ့ခ်ိတ္ဆက္ၿပီး Surface တခုကို ေအာက္ေဖာ္ၿပပါ ပံုအတိုင္း ဖန္တီးယူရမွာ ၿဖစ္ပါတယ္။

တကယ္လို ့ Surface.BySweep2Rails ကို အသံုးၿပဳမယ္ဆိုရင္ေတာ့ ေနာက္ထပ္ Path အပိုတခုနဲ ့ Surface ေတြကို ဖန္တီးႏိုင္ပါလိမ့္မယ္။

ေနာက္တခါ ဒီ  Surface ကို Offset လုပ္ခ်င္တယ္ ဆိုရင္ေတာ့ Surface.Offset ဆိုတဲ့ Node ကို အသံုးၿပဳႏိုင္ပါတယ္။ သူ ့မွာ input အေနနဲ ့Surface, Offset တို ့ပါ၀င္ေနပါမယ္။
လာမယ့္ Post မွာေတာ့ Surface.ByPatch အသံုးကို ေဆြးေႏြးတင္ၿပသြားဖို ့ စီစဥ္ထားပါတယ္။

DYN04.06 : အေၿခခံ Geometry တည္ေဆာက္ၿခင္း - အပိုင္း(၆)

မဂၤလာပါ။

ဒီ Post မွာေတာ့ Line ေတြ Curve ေတြတေလွ်ာက္မွာ Point ေတြကို Array လုပ္ပံုေလး တင္ၿပေဆြးေႏြးသြားခ်င္ပါတယ္။

အရင္ဆံုး Line တခု ဖန္တီးဖို ့ရာ ေအာက္ေဖာ္ၿပပါ ပံုအတိုင္း Code Block ကို သံုးၿပီး Node တခု ဖန္တီးႀကည့္ရေအာင္။
ဒီ Code Block ဟာဆိုရင္ Point (0,0) နဲ ့Point (5,2) တိုက္ရိုက္ဖန္တီးေပးတဲ့ Node တခုပါပဲ။ ပံုမွန္အားၿဖင့္ Library ထဲက Point.ByCoordinates (x,y) ကိုသံုးမယ္ဆိုရင္ အနည္းဆံုး Node (၃) ခုေလာက္ကို အသံုးၿပဳရမွာပါ။ တကယ္လို ့ (၂) ခုထက္ ပိုတဲ့ Point ေတြလိုခ်င္ရင္လည္း ေအာက္ကေန လိုအပ္တဲ့ Information ေတြၿဖည့္ၿပီး ဆက္ေရးလို ့ရပါေသးတယ္။
(Code Block ဆိုတဲ့ Node ရဲ့ နာမည္ကို ေၿပာင္းခ်င္ရင္ေတာ့ အဲ့ဒီ Code Block ဆိုတဲ့ စာအေပၚမွာ Double-Click လုပ္ၿပီး ကိုယ္ႏွစ္သက္ရာ နာမည္ကို ေၿပာင္းလဲႏိုင္ပါတယ္။)

ဒုတိယအေနနဲ ့ Line.ByStartPointEndPoint ကိုသံုးၿပီး Line တခုကို ဖန္တီးပါ့မယ္။
ခုဆိုရင္ Line တခု ရပါၿပီ။ ဒီလိုင္းတေလွ်ာက္မွာ Point ေတြကို Array လုပ္ဖို ့ရာ Geometry> Curve> PointAtDistance ကို အသံုးၿပဳပါမယ္။ သူ ့မွာ input အေနနဲ ့ Curve, Distance တို ့ ပါ၀င္ေနပါတယ္။
  • Curve ဆိုတာက Point ေတြကို Array လုပ္ခ်င္တဲ့ လမ္းေႀကာင္းပါပဲ။ 
  • Distance ဆိုတာက အဲ့ဒီ Curve မွာ ခ်ခ်င္တဲ့ Point ေတြနဲ ့ Curve ရဲ့ စမွတ္ကေန ကြာတဲ့ အကြာအေ၀းလို ့ ဆိုႏိုင္ပါတယ္။
Curve ကို Line Node ရဲ့ output နဲ ့ ခ်ိတ္ဆက္ေပးၿပီး Distance ရဲ့ တန္ဖိုးကို (၅) လို ့ေပးလိုက္တဲ့အခါ အေပၚကေဖာ္ၿပထားတဲ့ ပံုအတိုင္း Line ရဲ့ စမွတ္ကေန 5 units အကြာမွာ Point တခုဖန္တီးေပးထားတာကို ၿမင္ေတြ ့ႀကရမွာပါ။ Point ေတြတခုထက္ ပိုၿပီး ဖန္တီးခ်င္ရင္ေတာ့ Distance ရဲ့ တန္ဖိုးကို Number အစား Range နဲ ့ေၿပာင္းလဲ အသံုးၿပဳရမွာ ၿဖစ္ပါတယ္။

Range ကို အသံုးၿပဳတဲ့အခါမွာ အစမွတ္၊ အဆံုးမွတ္၊ ႀကားအကြာအေ၀းေတြ လိုအပ္ပါတယ္။ စမွတ္ ကေတာ့ 0 unit မို ့ ၿပသနာမရွိေပမယ့္ အဆံုးမွတ္ အတြက္က်ေတာ့ အဲ့ဒီ Line ရဲ့ Length ကို သိဖို ့ လိုလာပါတယ္။ ဒါေႀကာင့္ပဲ Range အတြက္ Code Block နဲ ့ Node ေရးတဲ့အခါ
  • 0..x..1.5; လို ့ေရးလိုက္ရပါတယ္။
  • အဆံုးမွတ္ (x) အတြက္ လိိုအပ္ေနတဲ့ တန္ဖိုးကေတာ့ Line ရဲ့ Length ပဲၿဖစ္ပါတယ္။
  • အဲဒီအတြက္ Geometry> Curve ရဲ့ Query> Curve.Length ဆိုတဲ့ Node ကို အသံုးၿပဳၿပီး Line ရဲ့ Length ကို Extract လုပ္ယူလိုက္ရပါတယ္။ 
  • ရလဒ္ကို ေအာက္ေဖာ္ၿပပါ ပံုအတိုင္း ရရွိပါမယ္။
ေလာေလာဆယ္ ရရွိထားတဲ့ ရလဒ္အရ Array ဖန္တီးထားတဲ့ Point ေတြက 1.5 units စီၿခားေနတာပါ။ တယ္လို ့ Spacing  နဲ ့မလိုခ်င္ပဲ အေရအတြက္နဲ ့ အညီအမွ် လိုခ်င္တယ္ ဆိုပါဆို ့။

Code Block မွာ 0..x..#6 လို ့ေၿပာင္းေရးလိုက္တာ ၿဖစ္ပါတယ္။
  • အစမွတ္ ဟာ (0) ၿဖစ္ရမယ္။
  • အဆံုးမွတ္ဟာ (x) ၿဖစ္ရမယ္။
  •  # ခံလိုက္တဲ့ အတြက္ Spacing အစား Point (၆) ခုကို အညီမွ်ေ၀မယ္... ဆိုတဲ့ သေဘာကို သက္ေရာက္သြားေစခဲ့ပါတယ္။
Code Block ေတြကို အသံုးၿပဳၿပီး တၿခား Node ေတြကို ကိုယ့္ဖာသာ ဖန္တီးႀကည့္ႀကဖို ့လည္း တိုက္တြန္းလိုက္ပါရေစ။

လာမယ့္ Post မွာေတာ့ 3D Geometry ေတြ ဖန္တီးပံုကို တင္ၿပေဆြးေႏြးသြားဖို ့ရွိပါတယ္။

Thursday 9 March 2017

DYN04.05 : အေၿခခံ Geometry တည္ေဆာက္ၿခင္း - အပိုင္း(၅)

ဒီ Post မွာေတာ့ Line တခု တည္ေဆာက္ပံုေလး ေဆြးေႏြးႀကရေအာင္။

Line တခု ဖန္တီးဖို ့ရာ Create Node (၅)ခု ေပးထားၿပီး Query Node အေနနဲ ့တခုကိုပဲ ၿမင္ေတြ ့ႀကရမွာပါ။
အလြယ္ဆံုးအေနနဲ ့ ByStartPointEndPoint ေလးနဲ ့ပဲ စလိုက္ႀကရေအာင္။ သူ ့မွာ input အေနနဲ ့ StartPoint ရယ္ EndPoint ရယ္ဆိုတာကို ေတြ ့ရမွာပါ။ Line တခု အတြက္ Point ႏွစ္ခု အနည္းဆံုးရွိရမယ္ ဆိုတာကေတာ့ အထူး ေၿပာစရာ လိုမယ္ မထင္ပါဘူး။ ဆိုေတာ့ကာ အရိုးရွင္းဆံုး Line တခုကို ေအာက္ေဖာ္ၿပပါ ပံုအတိုင္း ဖန္တီးႀကည့္ႀကရေအာင္။
StartPoint (2,0,0) နဲ ့ EndPoint (10,0,0) ရွိတဲ့ Line တခု ကို ေတြ ့ရမွာပါ။
ေနာက္ထပ္ Line တခုကို StartPoint (2,0,5), EndPoint (8,0,4) နဲ ့ ထပ္ဆြဲႀကည့္ရေအာင္။
တကယ္လို ့ ေအာက္ဖက္က Line ကို Y-direction အတိုင္း Spacing 1.5 unit နဲ ့ Array ၅ ခုပြားခ်င္တယ္ ဆိုႀကပါစို ့။
အေပၚက ခပ္ေစာင္းေစာင္း Line ကိုပါ ေအာက္ကအတိုင္း Array ၅ ခုပြားခ်င္ရင္ေကာ ဘာလုပ္ႀကရင္ ေကာင္းမလဲေနာ္။

ဒါ့အၿပင္ Arc ဖန္တီးပံုေလးကိုလည္း လက္ရွိ သိေနၿပီးသား Node ေတြနဲ ့ ႀကိဳးစားၿပီး ဖန္တီးႀကည့္ႀကဖို ့ တိုက္တြန္းလိုက္ပါရေစ။

လာမယ့္ Post မွာေတာ့ Line, Arc, Circle တို ့တေလွ်ာက္ Point ေတြၿဖန္ ့က်က္ပံုေတြကို တင္ၿပေဆြးေႏြးသြားဖို ့ စီစဥ္ထားပါတယ္။

DYN04.04 : အေၿခခံ Geometry တည္ေဆာက္ၿခင္း - အပိုင္း(၄)

ဒီ Post မွာေတာ့ Circle တခု တည္ေဆာက္ပံုေလးနဲ ့ စလိုက္ႀကရေအာင္။ ဒီ Program ရဲ့သေဘာက လိုခ်င္တဲ့ ရလဒ္ကေန အစၿပဳရတာပါပဲ။

Circle တခု တည္ေဆာက္ဖို ့ အရင္ဆံုး Library ေအာက္ကေန Geometry> Circle ကို သြားတဲ့အခါ ေအာက္ပါပံုအတိုင္း Create အတြက္ Node (၅) ခုရယ္၊ Query အတြက္ Node (၂) ခုရယ္ ကိုအရင္ဆံုး ၿမင္ေတြ ့ႀကရမွာပါ။

Action အတြက္ Node (၅) ခုကေတာ့ Circle တခု တည္ေဆာက္ဖို ့ၿဖစ္ၿပီး က်န္တဲ့ Node (၂) ခု ကေတာ့ Circle တခုရဲ့ Center Point နဲ ့ Radius ကို Query လုပ္ဖို ့ေပးထားတာ ၿဖစ္ပါတယ္။ Action Node (၅) ခုထဲကမွ ByCenterPointRadius ကို ေရြးခ်ယ္ၿပီး စလိုက္ႀကရေအာင္။

ဒီ Node မွာ Input အေနနဲ ့ Center Point နဲ ့Radius ကိုေတြ ့မွာပါ။ ဘာ Input မွမေပးခင္ Run ႀကည့္လိုက္ရင္ေတာ့ 1 unit ရွိတဲ့ Radius နဲ ့ (0,0) ကို ဗဟိုၿပဳၿပီး Circle တခုကို တည္ေဆာက္ေပးပါလိမ့္မယ္။

ဒုတိယ အဆင့္အေနနဲ ့ Circle ရဲ့ Center Point အတြက္ အပိုင္း (၃) မွာ ေဖာ္ၿပခဲ့သလိုပဲ Point တခုကို ဖန္တီးရပါ့မယ္။
Radius အတြက္ Number Slider ကိုအသံုးၿပဳႀကည့္ပါ့မယ္။

ဒီ Code ရဲ့ ဆိုလိုရင္းကေတာ့ 0.5 unit ရွိတဲ့ Radius နဲ ့ Spacing 2 units စီၿခားတဲ့ Circle ၁၀ခုကို X-axis အတိုင္း Array လုပ္ၿပထားတာပါ။
တကယ္လို ့ Code Block မွာ Sequence အစား Range ကို သံုးလိုက္မယ္ ဆိုရင္ေတာ့ ရလဒ္ဟာ ေအာက္ပါပံုအတိုင္း ၿမင္ေတြ ့ႀကရမွာပါ။

10 units ရွိတဲ့ Range ထဲမွာ 0.5 unit Radius ရွိတဲ့ Circle ေတြကို Spacing 2 units စီၿခားၿပီး တည္ေဆာက္ၿပသြားတာ ၿဖစ္ပါတယ္။
တကယ္လို ့ Range အေနနဲ ့ေရးထားတဲ့ Code Block ကို x တင္မက y မွာပါ ခ်ိတ္ဆက္လိုက္မယ္ဆိုရင္ေကာ။
ရလဒ္ကို အေပၚက ပံုအတိုင္း ၿမင္ေတြ ့ႀကရမွာပါပဲ။
အဲ့ဒီအေၿခအေနမွာမွ ByCenterPointRadius ရဲ့ Lacing ကို Cross Product ေၿပညင္းလိုက္မယ္ ဆိုရင္ေတာ့...
အခုလို Rectangular Array အေနနဲ ့ ၿမင္ေတြ ့ႀကရမွာပဲ ၿဖစ္ပါတယ္။

ဒီအေၿခအေနမွာ Circle ရဲ့ ဗဟိုက Point ေတြကို မၿမင္ခ်င္ဘူး ဆိုရင္ေတာ့ ByCenterPointRadius အေပၚမွာ Mouse Pointer (Casa) ကိုတင္ Right Click လုပ္ၿပီး Preview ကို Uncheck လုပ္လိုက္ရံုပါပဲ။

တၿခား Node (၄) မ်ိဳးကို အသံုးၿပဳၿပီး Circle ေတြစမ္းသပ္ တည္ေဆာက္ႀကဖို ့ကိုလည္း တိုက္တြန္းလိုက္ပါရေစ။

လာမယ့္ Post မွာေတာ့ Line ဆြဲနည္းကို ဆက္လက္တင္ၿပေဆြးေႏြး ေပးသြားမွာၿဖစ္ပါတယ္။

Sunday 5 March 2017

DYN04.03 : အေၿခခံ Geometry တည္ေဆာက္ၿခင္း - အပိုင္း(၃)

ဒီ Post မွာေတာ့ Range ရဲ့ အသံုးနဲ ့အတူ Number Slider  နဲ ့ Integer Slider တို ့ကိုပါ တင္ၿပေဆြးေႏြးသြားဖို ့ ရွိပါတယ္။

အရင္ဆံုး New ေတာင္းၿပီး Code အသစ္တခုဖြင့္လိုက္ႀကရေအာင္။ ၿပီးရင္ေတာ့ Search Box ကိုသံုးၿပီး
  • Point.ByCoordinates (x,y,z)
  • Range
  • Number 
  • Number Slider
  • Integer Slider ... တို ့ကို Library ကေန ထုတ္ယူပါ့မယ္။
 ၿပီးရင္ေတာ့ ေအာက္ပါပံုအတိုင္း ခ်ိတ္ဆက္ပါ့မယ္။
အရင္ဆံုး  Range ရဲ့အေႀကာင္းကို ေလ့လာႀကရေအာင္။ Range မွာ input အေနနဲ ့
  • Start ( အစမွတ္ Point Value)
  • End ( အဆံုးမွတ္ Point Value )
  • Step ( ႀကားမွာရွိမယ့္ Point အေတြရဲ့ Spacing) ... ရယ္ဆိုၿပီး ပါ၀င္ေနပါတယ္။
Integer Slider ဆိုတာက ကိန္းၿပည့္ ေတြကို Minimum Value, Maximum Value နဲ ့ Step Value ေတြကို ႀကိဳတင္ သတ္မွတ္ႏိုင္တဲ့ တန္ဖိုးအစုအေ၀းတခုပါပဲ။ ၿပီးေတာ့ သတ္မွတ္ထားတဲ့ Range အတြင္းမွာ Step အလိုက္ လိုအပ္မယ့္ တန္ဖိုးေတြကို Slider သံုးၿပီး အလြယ္တကူ ေၿပာင္းလဲႏိုင္ပါမယ္။ ေလာေလာဆယ္ေတာ့ ပံုပါအတိုင္း Value ေတြ ထည့္သြင္းေပးထားပါ။

Number Slider ဆိုတာကလည္း Integer Slider လိုပဲ ဖြဲ ့စည္းထားတာပါပဲ။ မတူတာကေတာ့ Number Slider မွာ ကိန္းဂဏန္းေတြၿဖစ္ႀကတဲ့ ကိန္းၿပည့္ေတြေရာ ဒသမ ကိန္းေတြကိုပါ ထည့္သြင္းႏိုင္တာပါပဲ။
ေလာေလာဆယ္ေတာ့ ပံုပါအတိုင္း Value ေတြ ထည့္သြင္းေပးထားပါ။

အားလံုးၿပီးလို ့ Run လိုက္တဲ့ အခါမွာ  Range ရဲ့ သေဘာသဘာ၀ကို ေအာက္ေဖာ္ၿပပါ ပံုအတိုင္း ေတြ ့ၿမင္ႀကရမွာ ၿဖစ္ပါတယ္။

က်န္တဲ့ အဆင့္ေတြကိုလည္း Sequence တုန္းကအတိုင္း စမ္းသပ္ေလ့လာႀကည့္ႀကဖို ့ တိုက္တြန္းပါရေစ။

Bonus အေနနဲ ့ Code Block ရဲ့ အေၿခခံ အသံုးေလးကို တင္ၿပေဆြးေႏြးေပးပါ့မယ္။

Code Block ဆိုတာ Blank Node တခုပါပဲ။ ဖဲသမားေၿပာ ေၿပာရရင္ေတာ့ Joker ေပါ့ဗ်ာ။ သူ ့ကို ကိုယ္ဥာဏ္ရွိရင္ ရွိသလို အသံုးၿပဳႏိုင္တယ္။ ဒီ Post မွာေတာ့ Number, Sequence နဲ ့ Range ေတြေနရာမွာ အစားထိုး သံုးႀကည့္ႀကတာေပါ့။

Working Space ေပၚမွာ Double Click ႏွိပ္လိုက္တာနဲ ့ Code Block တခုဟာ အလိုေလွ်ာက္ ေပၚလာပါလိမ့္မယ္။
  • Number ရဲ့ Value 0 အတြက္ 0; လို ့ရိုက္လိုက္ရံုပါပဲ။
  •  Sequence အတြက္ကေတာ့ 0..#10..2; လို ့ရိုက္လိုက္ရံုပါပဲ။
  
  • Range အတြက္ကေတာ့ 0..10..2; လို ့ရိုက္လိုက္ရံုပါပဲ။
 
Code Block ေတြကို Number အေနနဲ ့ ၿဖစ္ေစ၊ Sequence အေနနဲ ့ ၿဖစ္ေစ၊ Range အေနနဲ ့ ၿဖစ္ေစ၊ String အေနနဲ ့ ၿဖစ္ေစ ဒါ့အၿပင္ Script ေတြအေနနဲ ့ ၿဖစ္ေစ ကိုယ္ ဥာဏ္ရွိရင္ ရွိသေလာက္ အသံုးၿပဳႏိုင္ႀကလို ့ ထပ္ဆင့္ ေလ့လာႀကဖို ့ တိုက္တြန္းလိုက္ရပါတယ္။
(Code Block ေတြကို သံုးတဲ့အခါ ေနာက္ဆံုးမွာ Semicolon (;) ေတြနဲ ့ အဆံုးသတ္ဖို ့ မေမ့ႀကပါနဲ ့လို ့ သတိေပးပါရေစ။)

လာမယ့္ Post မွာေတာ့ Circle တည္ေဆာက္ပံုကို ဆက္လက္တင္ၿပေဆြးေႏြး ေပးသြားမွာၿဖစ္ပါတယ္။