アドインを作成する

アドインとはプラグインのことですが、新しい JavaScript API を公開する DLL のロードも行います。

FormIt API をダウンロードする

FormIt をサポートする DLL をビルドするには、FormIt API が必要です。FormIt API は、 Autodesk デベロッパー ネットワークからダウンロードできます。ダウンロードを行うにはログインが必要です。

ログインすると、SOFTWARE から FormIt API を取得できるようになります。

アドインで、FormIt API および FormIt モデリング カーネル C++ API にアクセスできます。

アドインは次のような構造になっています。

            // FormIt looks for REGISTERAPIMETHODS to load new JS APIs
            REGISTERAPIMETHODS
            {
                // Declare new namespace for the new JS APIs
                REGISTERNAMESPACE("HelloDLL")
                // Create a JS API with no arguments
                APIMETHOD(HelloDLL, API1, "") {}
                // Create a JS API with 1 argument
                APIMETHOD(HelloDLL, API2, "arg1") {}
                // Create a JS API with 2 argument
                APIMETHOD(HelloDLL, API3, "arg1, arg2") {}
                ...
                ...
            }

引数を C++ 変数に変換するには、SCRIPTCONVERTER を使用します。

            // Create a JS API with 2 argument
            APIMETHOD(HelloDLL, API3, "arg1, arg2")
            {
                // NOTE: The arg names above ^^^^ have to match the args in the macros below.
                // arg1 expects a bool
                SCRIPTCONVERTER(bool, arg1);
                // arg2 expects an int
                SCRIPTCONVERTER(int, arg2);
                return JSON_UNDEFINED;
            }

JSON_UNDEFINED か任意の JSON オブジェクトのいずれかを返すことができます。to_json を使用して、C++ 変数を json に変換します。

            // Create a JS API with 2 argument
            APIMETHOD(HelloDLL, API3, "arg1, arg2")
            {
                // NOTE: The arg names above ^^^^ have to match the args in the macros below.
                // arg1 expects a bool
                SCRIPTCONVERTER(bool, arg1);
                // arg2 expects an int
                SCRIPTCONVERTER(int, arg2);

                std::string myValue = "Test";
                return to_json(myValue);
            }

DLL で必要なすべての JS API を定義したら、プラグインは、どの DLL のロードが必要かを FormIt に伝える必要があります。これは、manifest で行います。

        "DLLs" : ["PLUGINLOCATION/MyClass.dll", "PLUGINLOCATION/HelloDLL.dll"]

HelloAddIn は動作の一例です。アドインの作成方法がわかります。

HelloWSMAddIn も動作の一例ですが、FormIt モデリング カーネル C++ API を使用するアドインの作成方法がわかります。

Last updated