« スクリプトで階段押し出しNURBSの続き | トップページ | C4Dでグラフィック以外でも活動してる人 »

スクリプトで追加したオブジェクトにタグを付ける

更新できなくなる期限が迫ってきた。もうまもなく更新が週1?週2?月1…
どんどん行こう。気が変になるまで。いまだR9.6。まだまだ行ける。SDKがR10になるまでは…デモ版があるからコードを試すことぐらいは出来る。保存は出来ないが…

新規オブジェクトにタグをつけるにはどうする?BaseObjectクラスのInsertTag()メンバ関数かぁ。単純だなぁ。

/*
新規オブジェクトにタグを付ける。
08.06.06
*/


var obj = new(CubeObject);//立方体オブジェクト。このままではタグが無い。
var tag = new(PhongTag);//スムースタグの作成。
obj->InsertTag(tag);//オブジェクトにタグの取り付け。
doc->InsertObject(obj , NULL , NULL);//シーンにオブジェクトの追加。

これだけで良いのか?実行してみよう。
おぉ、でも角度の制限がされていないから、設定しないと。

tag#PHONGTAG_PHONG_ANGLELIMIT = TRUE;//角度制限
tag#PHONGTAG_PHONG_ANGLE = Radians(80.0);//スムージング角度80°
tag#PHONGTAG_PHONG_USEEDGES = TRUE;//シャープエッジを使う

これはvar tag = new(PhongTag);の後ならどこでもいい。
なるほど、完成だ。思ったより簡単だった。

次はどうする?ん?ちょっと待て。そう言えば、新規でオブジェクトを追加した、そのオブジェクトがアクティブオブジェクトではない。自分でアクティブにするのか?そういえばCallCommand()で追加すると追加したオブジェクトはアクティブだったような。
この場合は、SetBit()か?SetActiveObject()ってあたっけ?
おぉ、SetActiveObject()はありますねぇ。もし無かったら、追加したオブジェクトにSetBit(BIT_AOBJ)をして、それ以外のオブジェクトをオブジェクトマネージャの上から下まで自分でスキャンしてDelBit(BIT_AOBJ)を適用か?ん?違うなぁSearchNext(BIT_AOBJ)で選択されてるオブジェクトのみにDelBit(BIT_AOBJ)で良いのかぁ。まあSetActiveObject()があるから関係ないね。

/*
新規オブジェクトにタグを付ける。
08.06.06
*/


var obj = new(CubeObject);//立方体オブジェクト。このままではタグが無い。
var tag = new(PhongTag);//スムースタグの作成。
obj->InsertTag(tag);//オブジェクトにタグの取り付け。
tag#PHONGTAG_PHONG_ANGLELIMIT = TRUE;//角度制限。
tag#PHONGTAG_PHONG_ANGLE = Radians(80.0);//スムージング角度80°
tag#PHONGTAG_PHONG_USEEDGES = TRUE;//シャープエッジを使う。

doc->InsertObject(obj , NULL , NULL);//シーンにオブジェクトの追加。
doc->SetActiveObject(obj);//追加したオブジェクトをアクティブオブジェクトにする。

これで本当に完成だね。

|

« スクリプトで階段押し出しNURBSの続き | トップページ | C4Dでグラフィック以外でも活動してる人 »

コメント

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