マリオネット解説講座

第13回「マリオネットスクリプトの暗号化」

ArchitectLandmarkSpotlightDesigner2021
マリオネットで作成したプログラムはPythonスクリプト形式で取り出すことができるのをご存知でしょうか。今回はこのPythonスクリプト取り出し機能を使ってマリオネットスクリプトを暗号化する方法をご紹介します。

マリオネットで作成されたネットワーク、オブジェクト、コマンドはすべてオープンになっており、どのようなノードをどうのようにつなげて作っているのか、ノード内はどのようなコードで定義されているか、別のユーザが作った場合でもすべて見ることができます。これにはユーザ間のプログラム共有を活性化させ、より精度の高いプログラムが生まれる可能性があるというメリットがあります。

一方で、

「いい機能を作ったので多くのひとに使ってもらいたい。しかし秘伝のアルゴリズムを使っている。」

のようにすべてオープンにされると困る場面があります。マリオネットのビジュアルプログラミングにより、ノンプログラマーでもアイデアを機能として実装することができるようになりました。秘伝を公開する必要があるという制限によって、すばらしいアイデアが世の中に出ていかないのは非常に勿体のないことです。

マリオネットネットワークのコンテキストメニューから「マリオネットスクリプトをPython Scriptとして保存」を選択することで、対象のマリオネットネットワークで定義されているプログラムをPythonスクリプトの形式で書き出すことができます。この機能は主にマリオネットで作成したプログラムの詳細なデバッグを目的としていますが、Pythonスクリプトは汎用性が高くデバッグ以外の用途にも利用することができます。

このマリオネットのPython取り出し機能と、Vectorworksプラグインの暗号化機能を合わせて利用することにより、マリオネットスクリプトの暗号化を実現する方法を解説します。

13-1. Pythonスクリプト取り出し手順

( 1 ) 任意のマリオネットネットワークを作成します。ここでは円を描画するプログラムとしています。

 

 

( 2 ) マリオネットネットワークのコンテキストメニューから「マリオネットスクリプトをPython Scriptとして保存」を選択します。

( 3 ) 保存ダイアログボックスが開きます。ファイル名と保存先を指定して保存をクリックします。

 

( 4 ) 保存したファイルを確認します。保存したファイルは拡張子が”.py”のPythonスクリプトになっています。ファイルの中を見るとノード内に書かれていたPythonコードが並んでいます。ここではコードの内容を理解する必要はありません。

 

( 5 ) プログラムを実行してみましょう。「ツール > プラグイン > スクリプトを実行…」を選択します。

 

( 6 ) ファイル選択ダイアログボックスが開きます。先ほど保存したPythonスクリプトを選択して開くをクリックします。プログラムが実行され、円が描画されます。

 

13-2. コマンドの暗号化

マリオネット解説講座第6回で紹介した「手すりに変換」コマンドを例に、プログラムの暗号化を実施します。

第6回「メニューコマンドを作成する」

1. 「手すりに変換」機能のマリオネットネットワークを作成する

 

「手すりに変換」は任意のパスから円を断面とした3Dパス図形を作成するコマンドです。3Dパス図形を作成する「Path Extrude」ノードや、円を作成する「Circle」を使用してマリオネットネットワークを作成します。

 

2. Pythonスクリプト取り出しを実行する

マリオネットネットワークを選択して「マリオネットスクリプトをPython Scriptとして保存」を実行します。保存するファイル名は任意ですが半角英数字としておくのがベターです。ここでは”ConvertRail.py”とします。

書き出しが完了したら動作を確認しましょう。パスとなる図形を作図し選択した状態で、「ツール > プラグイン > スクリプトを実行…」から”ConvertRail.py”を選択して実行します。

パス図形に沿って手すり状の3Dパス図形が生成されました。これでマリオネット側の準備は完了です。

3. プラグインコマンドを新規作成する

プラグインコマンドは、プラグインファイル内に記述したスクリプトをメニューコマンドとして実行することができます。マリオネットコマンドは登録できる場所が決まっていましたが、プラグインコマンドでは作業画面の好きな位置に組み込むことができます。

プラグインマネージャを開きます。

ツール > プラグイン > プラグインマネージャ...

左端の”カスタムプラグイン”タブを開き “新規” をクリックします。新規作成ダイアログが表示されます。

スクリプトプラグインの名前を「手すりに変換」に設定し、一番上の”メニュー(M)”にチェックを入れ”OK”をクリックします。

プラグインマネージャダイアログに戻り”カスタムプラグイン”のリストに「手すりに変換」が追加されていれば成功です。

4. 取り出したPythonスクリプトをプラグインファイルに埋め込む

それでは、作成したプラグインコマンドに、マリオネットから書き出したPythonスクリプトを埋め込んでいきます。

“カスタムプラグイン”のリストから「手すりに変換」を選択して、”スクリプトの編集…”をクリックします。

スクリプトの編集ダイアログが表示されます。

スクリプト言語のプルダウンからPythonを選択します。

“ConvertRail.py”に記述されているスクリプトをすべてコピーして、スクリプト編集画面にペーストします。

歯車マークをクリックしてコンパイルします。問題なければ”OK”をクリックして完了です。

あとは暗号化するだけですが、暗号化するとスクリプトの編集ができなくなりますので、実行のテストをします。

“閉じる”をクリックしてプラグインマネージャを閉じ、Vectorworksを再起動します。※ 新しく作成したプラグインコマンドを有効化するには、Vectorworksを再起動して読み込む必要があるためです。

再起動したら作業画面編集ダイアログを表示します。

ツール > 作業画面編集 > 現在の作業画面を編集

新規メニュー「自作コマンド」を作成して、その他カテゴリにある「手すりに変換」を追加します。OKをクリックして作業画面編集ダイアログを閉じます。

アクティブな作業画面が更新され自作コマンドのメニューに「手すりに変換」が表示されます。

パスとなる図形を作図および選択した状態で「手すりに変換」を実行します。

手すり状の3Dパス図形が生成されました。

5. プラグインファイルを暗号化する

ここまでの操作で動作するプラグインコマンドを作成することができましたが、中身のスクリプトはすべて見えてしまっている状態です。プラグインの暗号化を実施してスクリプトが見えないようにします。

準備:暗号化のための設定ファイルを作成します。

    • 手すりに変換.xml
<Plugin>
    <Package>
    </Package>
</Plugin>

設定ファイルをプラグインファイルと同じ階層(ユーザフォルダの”Plug-ins”フォルダ直下)に配置します。これで準備完了です。

プラグインマネージャを開きます。

ツール > プラグイン > プラグインマネージャ...

「手すりに変換」を選択して暗号化実行キーを入力します。

暗号化実行キー:

macOS:CapsLock+command+Shift+Option
windows:CapsLock+Ctrl+Shift+Option

暗号化実行キーを押下した状態で、「手すりに変換」をダブルクリックします。

暗号化の実行を確認するアラートが2種類表示されます。どちらも”はい”を選択してください。これで暗号化の完了です。

暗号化された「手すりに変換」コマンドはスクリプト編集画面を開くことができなくなっており中のスクリプトが隠された状態になります。

最後に、Vectorworksを再起動して、コマンドの動作を確認します。3Dパス図形が生成されました。

今回作成したプラグインコマンドを共有する場合は、ユーザフォルダに生成されているプラグインファイル(.vsm)をコピーして使用します。コマンドを使用したいコンピュータのユーザフォルダまたは、アプリケーションフォルダの「Plug-Ins」フォルダに配置して利用します。

この機能を利用できる製品

Architect

Vectorworks Architect

建築設計や内装、ディスプレイデザインに対応した先進的なBIM・インテリア設計支援機能、拡張機能、さらには豊富な建築向けのデータライブラリを搭載した建築/内装業界向け製品
詳細情報 購入ページ

Landmark

Vectorworks Landmark

地形モデルや多彩な植栽、灌水設備計画等に対応するランドスケープデザイン機能、さらには豊富な造園向けのデータライブラリを搭載した都市計画/造園業界向け製品
詳細情報 購入ページ

Spotlight

Vectorworks Spotlight

ステージプランニングやライティング計画に対応した先進的な舞台照明計画支援機能、さらには各種メーカー製のトラスや照明機材、音響機器等の豊富なデータライブラリを搭載したエンタテインメント業界向け製品
詳細情報 購入ページ

Designer

Vectorworks Designer

専門分野別(建築設計/ディスプレイデザイン、ランドスケープデザイン、ステージデザイン&スポットライトプランニング)の設計支援機能、拡張機能、さらには豊富なデータライブラリを搭載した最上位の製品
詳細情報 購入ページ