共有定義の管理

システム、アセンブリ、解析などのコンテナエンティティは、データセットやテンプレートなどの他のエンティティとともに、定義ベースのエンティティと呼ばれます。これらのエンティティは、定義ブロックを参照するMDLのインスタンス化ステートメントによって作成されます(インスタンスによってコールされます)。次の例を参照してください:



Figure 1. システム定義をインスタンス化するMDLステートメント

このため、複数のインスタンスを同一の定義ブロックからインスタンス化できます。このようなインスタンスは共有インスタンスまたはリンクインスタンスと呼ばれます。したがって、同一の定義ブロックを参照することでインスタンス化される複数のシステムは、共有システムまたはリンクシステムと呼ばれます。共有を確立できるのは、テキストエディタを使用してMDL言語でモデルを作成する方法のみです。現時点では、MotionViewのグラフィカルユーザーインターフェースを使用して共有インターフェースを作成することはできません。次に例を示します:



Figure 2.

MotionViewバージョン10.0以前のグラフィカルユーザーインターフェースでは、共有インスタンスが別の定義から生じるかのように扱われていました。共有インスタンスを含むモデルがMotionViewに読み込まれ、いずれかの共有インスタンスが変更されると、リンクが切断され、MotionViewでは、それらに別の定義を参照させることでインスタンスが保存されていました。この従来の挙動は、バージョン11.0と12.0では廃止されました。言い換えると、内部のエンティティのトポロジを追加、削除、または変更することでコンテナエンティティを変更すると、同じ定義を共有する他のインスタンスにも同じ変更が適用されます。

システムまたは解析のインスタンスの変更には、コンテナへのエンティティの追加または削除も含まれます。また、エンティティの再定義を引き起こす、次のようなエンティティの変更も含まれます(ただし、これらに制限されません):

  • ボディ、ジョイント、ブッシュ、またはフォーストポロジの変更(MDLの*Bodyステートメントまたは*xxxJointステートメントをリライトすることになります。このxxxには、ジョイントのタイプに応じてrevolute、translational、ballなどが入ります)。
  • グラフィックトポロジまたはその寸法の変更(MDLの*Graphicステートメントをリライトすることになります)。

上記の効果は、エンティティプロパティ(ポイントの座標値またはボディの質量と慣性モーメントなど)を変更するときにはシステムや解析に適用できません。これらのプロパティは、インスタンスごとに適用される別々の*BeginContextブロックによって管理されるからです。

MotionViewのグラフィカルユーザーインターフェースにおける共有インスタンスのサポートは次のように改善されています:

  • Project Browserでは、エンティティの標準アイコンに別個の手のアイコンを付加することで、インスタンス間の共有が示されます。この変更が適用されるエンティティは、システム、解析(インライン)、グラフィックシステム、データセット、テンプレート、コマンドセット、フォームです。


    Figure 3.
  • Project Browserを右クリックして表示されるコンテキストメニューには、次のオプションが表示されます(上の図を参照):
    Show Shared Instances 共有インスタンスに関連する情報を表示できます。
    Separate Definition 定義の共有を停止できます。

    詳細については、ブラウザのコンテキストメニューのトピックをご参照ください。

  • 個別のインスタンスが変更されたときに共有インスタンス間のリンクを維持するのか、リンクを切断するのか選択できます。
  • Optionsダイアログ - Build ModelTools > Options > Build Model)で、Create a separate definition when modifying a shared instanceオプションが使用できます。このオプションでは、共有インスタンスの変更時の処理方法を制御できます。


    Figure 4.

    デフォルトでこのオプションはオンになっており、共有インスタンスを変更すると個別の定義が作成されます。共有を維持する必要があり、1つのインスタンスへの変更を他の共有インスタンスにも適用する必要がある場合には、このオプションをオフにします。

これらの変更により、インスタンスの変更時に共有インスタンスが受ける影響を制御できるようになりました。上記の変更は、アセンブリと外部の解析以外のすべての定義ベースのエンティティに適用可能です。

アセンブリの共有

システムまたはインライン解析の共有と同じように、同じ定義を参照する、アセンブリの複数のインスタンスを作成することができます。ただし、上記の方法を使用して、アセンブリの定義、またはアセンブリ内の他の共有インスタンスの定義を分離することはできません。共有アセンブリを分離するには、Save Asオプション(右クリックで表示されるコンテキストメニューから使用可能)を使用して、個別のファイル名で定義を保存します。