// 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回呼ばれる為、個々でなく最後にフラグクリアする。
}