« C.O.F.F.E.E.でポリゴンオブジェクトのポイント | トップページ | C.O.F.F.E.E.でポリゴンオブジェクトの選択ポイント »

C.O.F.F.E.E.でポリゴンオブジェクトのポイントを変更

続いて、オブジェクトからポイントデータを取得して縮小してオブジェクトに適用する。

/*
ポイントオブジェクトを0.5に縮小
2008.12.22
*/


if(!instanceof(op , PointObject))return;//選択されたオブジェクトがPointObjectクラス以外ならば処理を終了

var pt = op->GetPoints();//全ポイントを取得
var pc = op->GetPointCount();//全ポイント数を取得
var i;//カウンター

for(i = 0 ; i < pc ; i++){
  pt[i] = pt[i] * 0.5;//ポイントデータを0.5倍にする
}

op->SetPoints(pt);//オブジェクトにポイントを適用
op->Message(MSG_UPDATE);//オブジェクトを更新

前回と変わったところは、ポイントオブジェクトが選択されているか判定して、されていなければ処理を終了します。次にコンソールにデータを表示していた部分をポイントデータに0.5を掛けて値を小さくしています。更に値が小さくなったデータ配列をオブジェクトに適用。最後にオブジェクトを更新します。今回はGetPoints()でポイント配列を取得しました。そしてポイント配列を適用するのにSetPoints(n)を使いました。GetPoint(n)の場合は…

/*
ポイントオブジェクトを0.5に縮小
2008.12.22
*/


if(!instanceof(op , PointObject))return;//選択されたオブジェクトがPointObjectクラス以外ならば処理を終了

var pt;
var pc = op->GetPointCount();//全ポイント数を取得
var i;//カウンター

for(i = 0 ; i < pc ; i++){
  pt = op->GetPoint(i) * 0.5;//取得したポイントデータを0.5倍にする
  op->SetPoint(i , pt);//ポイント番号を指定してポイントデータ適用
}

op->Message(MSG_UPDATE);//オブジェクトを更新


このスクリプトはポイントオブジェクト全般共通なので、スプラインオブジェクトにも実行可能です。デフォーマのFFDオブジェクトもポイントオブジェクトです。
今回はデータを0.5倍しただけなので、オブジェクトの軸に対して大きさが0.5になります。

|

« C.O.F.F.E.E.でポリゴンオブジェクトのポイント | トップページ | C.O.F.F.E.E.でポリゴンオブジェクトの選択ポイント »

コメント

この記事へのコメントは終了しました。