昨日は解決した(というか、正解ではないが回避策がわかった)ラジオボタン問題。
mixiのコミュニティで正しい解決法を聞いてみようと思いうまくいかない例を
作ってみたが、なぜかうまく動いてしまう。
いろいろ試すうちに”ウィンドウをたくさん作って消す”ような動作をさせていると
おかしくなる事がわかった。
つまり“MAYA操作中にできるゴミデータが変数に残っている”のが原因じゃなかろうか?
★★★★これでウィンドウをたくさん出しては消し、とやるとおかしくなる★★★★
global proc makePrimitive()
{
global string $radioCollection1;
string $selected;
$selected = `radioCollection -q -select $radioCollection1`;
if($selected == "rB1")
{
polySphere;
}
else if($selected == "rB2")
{
polyCube;
}
}
global proc btn()
{
string $windowName = `window -title "test"`;
columnLayout;
text -label "make Primitive";
string $radioCollection1 = `radioCollection`;
radioButton -label "make Sphere" -select rB1;
radioButton -label "make Cube" rB2;
button -label " Aplly " -command "makePrimitive()";
showWindow;
}
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
なので変数をクリアするおまじないを入れてみた。
★★★★★★★★おまじないをいれた改良版★★★★★★★★
global proc makePrimitive()
{
global string $radioCollection1;
string $selected;
$selected = `radioCollection -q -select $radioCollection1`;
if($selected == "rB1")
{
polySphere;
}
else if($selected == "rB2")
{
polyCube;
}
}
global proc btn()
{
global string $radioCollection1;
$radioCollection1 = "";
string $windowName = `window -title "test"`;
columnLayout;
text -label "make Primitive";
string $radioCollection1 = `radioCollection`;
radioButton -label "make Sphere" -select rB1;
radioButton -label "make Cube" rB2;
button -label " Aplly " -command "makePrimitive()";
showWindow;
}
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
いまのところうまく動作しているようだ。昔作って今動かなくなっている別の
スクリプトにも組み込んでみたが正しく動作した。
どうやらこれが正解のようだ。 こういう仕様はアレかね、動的な扱いができるスクリプトで
あるが故に、ある物体の名前が同じならそれは絶対同一の物体であることを保証できないっつう
ことですかねえ。
なんにせよ変数の初期化やウィンドウの存在確認は懇ろにやっておくにこしたことはないようだ。
.
2009年から仕事でMAYAを勉強。MAYAはデフォルトでは使い勝手が悪い。逆にスクリプトを覚えてカスタマイズするとかなり強力なツールになることがわかってきた。
物覚えが悪いので勉強したことはリマインダとしてココに書き留めるようにする。
ブログ アーカイブ
-
▼
09
(31)
-
▼
5月
(18)
- 外部ファイルの存在チェック
- ラジオボタンの謎 2
- ちょっと寄り道・・・ラジオボタンの謎
- 汎用パーツをLibみたいにする 2
- 汎用パーツをLibみたいにする
- 今日のスクリプト格言
- 見やすいコーディングを考える
- skinClusterの名前を引っ張る 2
- skinClusterの名前を引っ張る
- 【MEL】頂点ウェイトの値から端数を取る 3
- 【MEL】頂点ウェイトの値から端数を取る 2
- 【MEL】頂点ウェイトの値から端数を取る
- 【MEL】複数の配列を格納、読み込み
- 【MEL】ファイル(配列)読み込み
- XSI風味のプロジェクトマネージャー
- スクリプトのインデント
- 【MEL】ファイルへの配列書き込み 2
- 【MEL】ファイルへの配列書き込み
-
▼
5月
(18)
0 件のコメント:
コメントを投稿