ロゴ メインコンテンツへ
RSSフィード
「デジタルコンテンツ制作」に関連する記事一覧

OpenMaya カスタムコマンドでフラグなしの引数を取得

2012/04/15
(この記事の文字数: 642)
MELやPythonでは一発でできない文字列操作用のカスタムコマンドをC++で作ろうと思い、久しぶりにOpenMayaを触ったんですが、ほとんど細かいところを忘れてしまっていました。

そのうちまた仕事で使うことになる可能性が高いので、思い出した内容を備忘録も兼ねてここに記していこうと思います。

とりあえず、カスタムコマンドにフラグなしの引数を与えて、戻り値を返す書き方すら忘れてしまっていたので、それを書いておきます。

シンプルな例として2つの引数を加算して戻り値で返すだけのmyCommandコマンドを作ることを考えます。Mayaで実行すると次のように結果が返るコマンドです。

myCommand 4 7;

// Result: 11 // 
 
まずカスタムコマンドを作るためにはMPxCommandクラスを継承したクラスを作る必要がありました。myCommandコマンドの中身を定義するMyCommandクラスをMPxCommandを継承して作ります。

下記はMyCommandクラスのdoIt関数の中身です。



MStatus MyCommand::doIt(const MArgList& args)

{

        MStatus stat;

        int res;



        //** check number of arguments

        if(args.length() != 2) { 

                return MStatus::kFailure; 

        }



        //** get 1st argument as MString

        int a = args.asInt(0, &stat);

        if(stat!=MS::kSuccess)

        { return MStatus::kFailure; }



        //** get 2nd argument as int

        int b = args.asInt(1, &stat);

        if(stat!=MS::kSuccess)

        { return MStatus::kFailure; }



        //** main operation(add 2 values)

        res = a+b;



        //** set return value

        MPxCommand::setResult(res);



        return MStatus::kSuccess;

}


args.asInt(0, stat)で0番目の引数の値を整数型で取得します。statには成功したか失敗したかが入ります。同じくargs.asInt(1, stat)で1番目の引数の値を整数型で取得します。

最後にsetResult(res)で戻り値にresの値が設定されます。

本当に基本的なことですが、最近記憶力が衰えてきて、しばらく触っていないと忘れてしまいます。メモはつけるように心がけたいです。

  このエントリーをはてなブックマークに追加  

<<「デジタルコンテンツ制作」の記事一覧に戻る

<<「デジタルコンテンツ制作」の次の記事
「デジタルコンテンツ制作」の前の記事 >>

コメント(0 件)



コンテンツロード: 0.0078 sec
Copyright(C)2006-2024 puarts All Rights Reserved