// We will Lock you 8 v0.435 @name "We will Lock you" @version 2.6 @warnings @script generic @define DESCRIPT "We will Lock you" var c1,c2,c3,c4,c5,c6,c7,c8,c9; var EnableScl; generic { var CurItems = Scene().getSelect(); if(CurItems == nil) return; var ItemNum = CurItems.size(); // ライトとカメラのスケールは読まない。 var IsX, IsY, IsZ; if(CurItems[1].isMesh() || CurItems[1].isBone()){ IsX = CurItems[ItemNum].axislocks[7] ^ 1; IsY = CurItems[ItemNum].axislocks[8] ^ 1; IsZ = CurItems[ItemNum].axislocks[9] ^ 1; EnableScl = true; }else{ IsX = false; IsY = false; IsZ = false; EnableScl = false; } reqbegin(DESCRIPT); reqsize(260,106); t1 = ctltext("","ItemLock"); ctlposition(t1, 5, 2); c0 = ctlchoice("", 1,@"Not Mod"," Lock","UnLock","Toggle"@, false); ctlposition(c0,50, 2, 204); // AxislockのLock(不可)状態は1、Unlock(可)状態は0 // CheckBoxのCheck(可)状態は1、UnCheck(不可)状態は0 // Lock(1)されてると見かけ上チェック(1)されてしまう為、反転する t2 = ctltext("","AxizLock"); ctlposition(t2, 5, 22); t3 = ctltext("","Checked"); ctlposition(t3, 5, 36); t4 = ctltext("","is Unlock"); ctlposition(t4, 5, 50); cA = ctlbutton(" X Y Z", 64, "changeXYZ"); ctlposition(cA, 56, 24, 64); c1 = ctlcheckbox("", CurItems[ItemNum].axislocks[1] ^ 1); ctlposition(c1, 56, 44, 21); c2 = ctlcheckbox("", CurItems[ItemNum].axislocks[2] ^ 1); ctlposition(c2, 77, 44, 21); c3 = ctlcheckbox("", CurItems[ItemNum].axislocks[3] ^ 1); ctlposition(c3, 98, 44, 21); cB = ctlbutton(" H P B", 64, "changeHPB"); ctlposition(cB,123, 24, 64); c4 = ctlcheckbox("", CurItems[ItemNum].axislocks[4] ^ 1); ctlposition(c4,123, 44, 21); c5 = ctlcheckbox("", CurItems[ItemNum].axislocks[5] ^ 1); ctlposition(c5,144, 44, 21); c6 = ctlcheckbox("", CurItems[ItemNum].axislocks[6] ^ 1); ctlposition(c6,165, 44, 21); cC = ctlbutton("sX sY sZ", 64, "changeSXYZ"); ctlposition(cC,190, 24, 64); c7 = ctlcheckbox("", IsX); ctlposition(c7,190, 44, 21); c8 = ctlcheckbox("", IsY); ctlposition(c8,211, 44, 21); c9 = ctlcheckbox("", IsZ); ctlposition(c9,232, 44, 21); return if !reqpost(); var LockType = getvalue(c0); // XYZを(可)にしたいなら1が入ってる var Xchk = getvalue(c1); var Ychk = getvalue(c2); var Zchk = getvalue(c3); var Hchk = getvalue(c4); var Pchk = getvalue(c5); var Bchk = getvalue(c6); var SXchk = getvalue(c7); var SYchk = getvalue(c8); var SZchk = getvalue(c9); reqend(); for(i = 1; i <= ItemNum; i++){ SelectItem(CurItems[i].id); // ItemLock()は引数無視のトグル動作 switch(LockType){ case 1: break; case 2: if(!CurItems[i].locked) ItemLock(1); break; case 3: if(CurItems[i].locked) ItemLock(0); break; case 4: ItemLock(1); break; default: break; } // チェックボックスはチェック(1:可)、ノーチェック(0:不可) // ロックフラグは可なら0、不可なら1 // 等しくない=状態が同じ。等しい=状態が違ってる if(EnableScl){ c = 0; if(SXchk == CurItems[i].axislocks[7]) c += 1; if(SYchk == CurItems[i].axislocks[8]) c += 2; if(SZchk == CurItems[i].axislocks[9]) c += 4; if(c != 0){ StretchTool(); changeExec(c); } } c = 0; if(Hchk == CurItems[i].axislocks[4]) c += 1; if(Pchk == CurItems[i].axislocks[5]) c += 2; if(Bchk == CurItems[i].axislocks[6]) c += 4; if(c != 0){ RotateTool(); changeExec(c); } c = 0; if(Xchk == CurItems[i].axislocks[1]) c += 1; if(Ychk == CurItems[i].axislocks[2]) c += 2; if(Zchk == CurItems[i].axislocks[3]) c += 4; if(c != 0){ MoveTool(); changeExec(c); } } if(ItemNum > 1){ for(i = ItemNum - 1; i >= 1; i--) AddToSelection(CurItems[i].id); } return; } // -------------------- changeExec: v { switch(v){ case 1: EnableXH(); break; case 2: EnableYP(); break; case 3: EnableXH(); EnableYP(); break; case 4: EnableZB(); break; case 5: EnableXH(); EnableZB(); break; case 6: EnableYP(); EnableZB(); break; case 7: EnableXH(); EnableYP(); EnableZB(); break; default: break; } } changeXYZ { setvalue(c1, getvalue(c1) ^ 1); setvalue(c2, getvalue(c2) ^ 1); setvalue(c3, getvalue(c3) ^ 1); } changeHPB { setvalue(c4, getvalue(c4) ^ 1); setvalue(c5, getvalue(c5) ^ 1); setvalue(c6, getvalue(c6) ^ 1); } changeSXYZ { if(EnableScl){ setvalue(c7, getvalue(c7) ^ 1); setvalue(c8, getvalue(c8) ^ 1); setvalue(c9, getvalue(c9) ^ 1); } }