// Points Set Align 0.324 @name "PointsSetAlign" @version 2.5 @warnings @script modeler @define DESCRIPT "Points Set Align" var SrcVec[6]; var vx,vy,vz,cx,cy,cz; var AllFlag = true; // LS2.5用フラグ var SeleFlag = false; main { selmode(DIRECT); var SelPts = pointcount(); if(!SelPts) error("
Need Select"); selmode(USER); var BoxLow, BoxHigh; editbegin(); SrcVec[1] = pointinfo(points[1]); SrcVec[2] = pointinfo(points[SelPts]); editend(); (BoxLow, BoxHigh) = boundingbox(); SrcVec[3] = BoxLow; SrcVec[4] = center(BoxLow, BoxHigh); SrcVec[5] = BoxHigh; SrcVec[6] = <0.0,0.0,0.0>; reqbegin(DESCRIPT); reqsize(300,110); c0 = ctlchoice("", 1, @" 1st"," Last"," Min","Center"," Max"," Zero"@, false); ctlposition(c0, 3, 2,270); cx = ctlcheckbox(" X", false); ctlposition(cx, 9,22,84); cy = ctlcheckbox(" Y", false); ctlposition(cy, 99,22,84); cz = ctlcheckbox(" Z", false); ctlposition(cz,189,22,84); ca = ctlbutton(" ", 16, "checkAll"); ctlposition(ca,279,22); vx = ctldistance("", SrcVec[1].x); ctlposition(vx, 3,42,90); vy = ctldistance("", SrcVec[1].y); ctlposition(vy, 93,42,90); vz = ctldistance("", SrcVec[1].z); ctlposition(vz,183,42,90); ctlrefresh(c0, "changeVal"); ctlrefresh(vx, "changeFlagX"); ctlrefresh(vy, "changeFlagY"); ctlrefresh(vz, "changeFlagZ"); return if !reqpost(); var XOn = getvalue(cx); var YOn = getvalue(cy) * 2; var ZOn = getvalue(cz) * 4; var VecX = getvalue(vx); var VecY = getvalue(vy); var VecZ = getvalue(vz); reqend(); var Vec; editbegin(); switch(XOn + YOn + ZOn){ case 1: for(i = 1; i <= SelPts; i++) pointmove(points[i], ); break; case 2: for(i = 1; i <= SelPts; i++) pointmove(points[i], ); break; case 3: for(i = 1; i <= SelPts; i++) pointmove(points[i], ); break; case 4: for(i = 1; i <= SelPts; i++) pointmove(points[i], ); break; case 5: for(i = 1; i <= SelPts; i++) pointmove(points[i], ); break; case 6: for(i = 1; i <= SelPts; i++) pointmove(points[i], ); break; case 7: Vec = ; for(i = 1; i <= SelPts; i++) pointmove(points[i], Vec); break; default: info("
Not select Axis"); break; } editend(); } // ------------------------------ checkAll { f = getvalue(cx); f += getvalue(cy); f += getvalue(cz); if((f >= 1)&& AllFlag){ AllFlag = false; }else if((f == 0)&& !AllFlag){ AllFlag = true; } setvalue(cx, AllFlag); setvalue(cy, AllFlag); setvalue(cz, AllFlag); AllFlag ^= 1; } changeVal: v { setvalue(vx, SrcVec[v].x); setvalue(vy, SrcVec[v].y); setvalue(vz, SrcVec[v].z); SeleFlag = true; // 種別BOXによる値変化で3軸全てのrefreshが発動する。 // この流れの中でchangeFlagが呼ばれた時refreshさせない為のフラグを立てる。 } // フラグがfalseの時のみキー入力があったとし、軸有効ボタンをONにする。 changeFlagX: v { if(!SeleFlag) setvalue(cx, true); } changeFlagY: v { if(!SeleFlag) setvalue(cy, true); } changeFlagZ: v { if(!SeleFlag) setvalue(cz, true); else SeleFlag = false; // 種別BOXによる値変化でX Y Zの3回呼ばれる為、個々でなく最後にフラグクリアする。 }