左半分を削除してミラーコピーするスクリプトと、軸のセンターに近いポイントを0にそろえるスクリプト
ミラーコピーするスクリプトは、「/* 入力パネル」の行を削除するか、頭にスラッシュを追加して「//* 入力パネル」にして、コメントアウトしてある部分を元に戻せば入力パネルが開くようになる
/**************************************
左半分(backビューで)を削除して
ミラー複製をしてから中央のポイントを
結合するモデラースクリプト***************************************/
@script modeler
@name EZMirror
@version 2.3main
{
axis = X;
offset = 0.0;
doMerge = true;
/* 入力パネル
axisType = @X,Y,Z@;
reqbegin("EZ Mirror");
ctl_1 = ctlchoice("MirrorAxis",1,@"X","Y","Z"@);
ctl_2 = ctlnumber("Offset",0.0);
ctl_3 = ctlcheckbox("Merge center points", true);
return if !reqpost();
axis = axisType[getvalue(ctl_1)];
offset = getvalue(ctl_2);
doMerge = (getvalue(ctl_3) ? true : false);
reqend();
//*/
bb = boundingbox();
bb[2].x = 0.0;
//ボリューム選択するには
//選択モードを「USER」に
selmode(USER);
selpolygon(CLEAR);
selpolygon(SET,VOLEXCL,bb[1],bb[2]);
delete();
mirror(axis,offset);
if(doMerge)
{
bb[1].x = 0.0;
selpoint(SET,VOLUME,bb[1],bb[2]);
mergepoints();
}
}
/**************************************
軸のセンターに近いポイントを
0にそろえるモデラースクリプト***************************************/
@script modeler
@name NearToCenter
@version 2.3main
{
reqbegin("Near to Center");
ctl_1 = ctlchoice("Axis",1,@"X","Y","Z"@);
ctl_2 = ctlnumber("Distance(m)",0.001);
return if !reqpost();
axis = getvalue(ctl_1);
d = getvalue(ctl_2);
reqend();
bb = boundingbox();
if(axis == 1){
bb[1].x = -d;
bb[2].x = d;
}else if(axis == 2){
bb[1].y = -d;
bb[2].y = d;
}else{
bb[1].z = -d;
bb[2].z = d;
}
selmode(USER);
selpoint(CLEAR);
selpoint(SET,VOLUME,bb[1],bb[2]);
numPnts = editbegin();
for(i=1;i<=numPnts;i++)
{
pos = pointinfo(points[i]);
if(axis == 1) pos.x = 0.0;
else if(axis == 2) pos.y = 0.0;
else pos.z = 0.0;
pointmove(points[i],pos);
}
editend();
}