// Check Symmetric Polygons Point Order v0.102 @name "ChkSymPolsPntOrder" @version 2.5 @warnings @script modeler main { selmode(DIRECT); var i, c, half, SelPol; // 捨て読み (i,,,,SelPol,) = polycount(); // 90/92/93 はpoint/poly countでUndoバッファを消費する @if version < 2.2 undo(); @end @if version > 2.7 undo(); @end if(i < 2){ error("
Need Select"); return; } var SrcPol[5]; var DstPol[5]; var PntIdx[4]; var SrcVec; var ModPol[SelPol + 1]; var p = 1; var x = 1; Half = SelPol >> 1; editbegin(); for(i = 1; i <= Half; i++){ @if version == 2.5 SrcPol = polyinfo(polygons[p]); SrcVec = pointinfo(SrcPol[2]); @else SrcVec = pointinfo(polygons[p].points[1]); @end SrcVec.x *= -1.0; p += 1; DstPol = polyinfo(polygons[p]); for(c = 2; c <= 5; c++){ if(SrcVec == pointinfo(DstPol[c])){ if(c == 2){ ModPol[x] = polygons[p - 1]; x += 1; ModPol[x] = polygons[p]; x += 1; } break; } } p += 1; } editend(); // 90/92/93 は変化の無いeditbeginでもUndoバッファを消費する @if version < 2.2 undo(); @end @if version > 2.7 undo(); @end selmode(USER); if(x != 1){ selpolygon(CLEAR); selpolygon(SET, POLYID, ModPol); // 90/92/93 はeditbegin/end の後のselpoint/polyでUndoバッファを消費する @if version < 2.2 undo(); @end @if version > 2.7 undo(); @end selhide(SELECTED); // 9.2と9.3のselhideがバグってる事への対策。捨て実行で対症療法するしかない @if version < 2.2 move(0.0, 0.0, 0.0); @end @if version == 2.9 move(0.0, 0.0, 0.0); @end } }