アセンブリの作製と編集

アセンブリはシステムまたはサブシステムの一種であり、インタラクティブな方法またはテキストエディターで、システムエンティティを使用して作成できます。Assembly Wizard、システム、およびサブシステムを使用してモデルを作成および編集します。

このようなシステムには、ボディ、ジョイント、ブッシュのセットなど、あらゆるタイプのモデリングエンティティを置くことができます。作成したシステム定義を保存しておき、個別に読み込む(インポートする)ことで再利用できます。また、システム定義のセットをライブラリに保存し、Assembly Wizardを使用してモデル構築を自動化することもできます。

システムはその他いくつかの利点を有しますが、一方で下記の2つの制約もあります:

  • システム定義がインポートされる際、その定義はモデルにコピーされます。したがって、それらは元のシステムに関係なくモデルに保存されます。モデル内部でシステム定義を変更しても、モデルを保存するときに元の定義は更新されません。したがって、共有やコラボレーションが困難となります。
  • データ(システム定義に対応する)は別々に保存、共有することができません。

アセンブリエンティティはシステムの拡張版であり、これを使用することで上記の制約から解放されます。この手法は、各アセンブリについて定義とデータを外部ファイルに保持します。アセンブリは、データが保存されたデータファイルを参照し、各データファイルは、それぞれに関連付けられて定義が保存された定義ファイルを参照します。

この新しい手法の利点は、データまたはトポロジーをMotionViewの内部で修正し、モデルを保存すると、使用された元のファイルセットに、そのデータとトポロジーが保存されることにあります。1つのアセンブリが1つのモデル内で個別に修正され、元のデータおよび定義ファイルに保存されると、それらの修正は、同じサブアセンブリを使用する別のモデルに影響を与えます。

例えば、航空機の着陸装置のアセンブリは、航空機本体のアセンブリに使用されています。着陸装置のシステムは、着陸装置のアセンブリのみを含むモデル内で別個にスタディすることができます。このスタディ中に着陸装置に加えられた変更は、対応するデータ / 定義ファイルに保存されます。これらの変更は、着陸装置のアセンブリと同じデータおよび定義ファイルを使用する航空機本体のアセンブリのモデルにも有効となります。

また、航空機本体のアセンブリにある2つの異なる着陸装置アセンブリは、同じトポロジーを備えていれば、共通の定義ファイルを参照できます。その場合、各着陸装置アセンブリについてのデータファイルは、1つの定義ファイルを共有します。

アセンブリを持つモデルの構造

アセンブリ階層はその深さに制限がなく、MDLシンタックスには、それが使用されている階層のレベルに関係なく、一貫性と独立性があります。下の図は、モデルがそのモデルツリーのルーツとは別にアセンブリ(複数可)を持つことができることを示しています。これらのアセンブリはそれぞれ、1つの関連付けされたデータファイルを参照します。また、これらのアセンブリデータファイルはそれぞれ、1つの定義ファイルを参照します。



図 1.

アセンブリには次の3つの主要要素があります:

  • Assemblyプレースホルダー
  • データファイル
  • 定義ファイル

Assemblyプレースホルダー

その名前が示すように、アセンブリプレースホルダは、アセンブリを擁することができるトポロジー要素です。アセンブリプレースホルダは、空または空値のアセンブリと考えることができます。データおよび定義ファイルをプレースホルダに指定すると、任意のタイプのモデリングエンティティを有するアセンブリで、そのプレースホルダを満たすことができます。アセンブリプレースホルダの情報は、定義ファイルに伝わります。

データファイル

データファイルはアセンブリに関連したデータを擁し、下記の情報を含みます:

  • 使用されている定義ファイル
  • 定義ファイルで定義されたエンティティに対応するデータ

定義ファイル

定義ファイルは、そのアセンブリについての主定義を擁します。アセンブリ定義は、*DefineAssembly()ブロックにあります。これには、アセンブリ内のエンティティに関するトポロジーステートメントが含まれ、また、*Setステートメント(デフォルトデータとみなされる)を擁すことが可能です。*Setステートメントが定義の一部であることの理由については、HyperWorks DesktopオンラインヘルプのMDL Model Statementsトピック内、Data and Definitionセクションをご参照ください。

定義ファイルには、アセンブリで使用するシステム、データセット、フォーム、テンプレートなどの定義ベースのエンティティに属している*Defineブロックを置くこともできます。

アセンブリタイプと選択のタイプ

アセンブリタイプは、あるアセンブリ定義について指定されるトポロジー的なタイプ識別子です。これは、アセンブリプレースホルダへのアセンブリを選択、または以前有効となっていたアセンブリを再度選択する際の適合性を確実にします。

アセンブリプレースホルダは、“Selection Type”(選択タイプ)という名の対応する属性を有します。この属性は、プレースホルダに入ることのできるアセンブリのタイプを制限するために指定できます。例えば、アセンブリプレースホルダが選択タイプ“StrutAssembly”を擁する場合、定義にアセンブリタイプ“StrutAssembly”が含まれるアセンブリのみが指定できます。

このタイプは、変数または定義名(大文字または小文字の文字、数値、アンダースコア( _ )。文字から始まらなくてはならない)と同じ命名規則に従います。

アセンブリのためのMDL

下の図は、上述の構造を、アセンブリと子アセンブリを持つ1つのモデルに必要なMDLブロック、ステートメント、および関連する定義ファイルとデータファイルのセットで示したものです(わかりやすくするために、詳しいシンタックスとコンテンツは省略されています)。



図 2.

*AssemblyPlaceholderステートメントは、空のアセンブリである親コンテナー(アセンブリまたはモデル)にアセンブリプレースホルダーを作成します。このプレースホルダーは、アセンブリデータファイルを参照する*DataIncludeステートメントを記述した*BeginAssemblySelectionブロックを参照することによって、アセンブリをプレースホルダーにインスタンス化します。

データファイルは、アセンブリ定義ファイルを参照する*DefinitionIncludeステートメントを保持する*BeginAssemblyDataFileブロックを収めています。この定義ファイルは、*DefineAssemblyブロックにエンティティの定義を収めています。また、システム、データセット、テンプレートなどの定義ベースのエンティティのインスタンス化に使用する他の*Defineブロックも置くことができます。*DefineXXXブロックはすべて、*BeginDefinitionFileブロックにあります。

アセンブリの概念を説明する単気筒エンジン機構のモデル例が~hw_install/demos/mv_hv_hg/modeling/mdl_examples/container_entities/assemblyに用意されています。



図 3.

このモデルは、“Inline Engine Assembly”という名の概要レベルのアセンブリで構成され、このアセンブリは子アセンブリ“Cylinder 1 Assembly”および“Crank Shaft Single Cylinder Assembly”を備えています。

下の図は、MDL言語を用いてこのアセンブリを定義する方法を示しています。モデルMDLファイルには、*BeginAssemblySelectionブロックを参照する*AssemblyPlaceholderステートメント(assem_eng_inline)が記述されています。このブロックには、Inline Engine Assembly(data_inline_engine.mdl)のデータファイルを参照する*DataIncludeステートメントが記述されています。



図 4.

このデータファイルは、*BeginAssemblyDataFileの親ブロックを擁します。このデータファイルでは、*DefinintionIncludeステートメントを介してdefinition file def_inline_engine.mdlを参照します。この定義ファイルは、“Cylinder 1 Assembly”と“Crank Shaft Assembly”のためのアセンブリプレースホルダを*DefineAssemblyブロック内に含む、この最上レベルのアセンブリの定義を有しています。また、この定義ファイルにはデータセットの定義も含まれます。対応する*BeginAssemblySelectionブロックはデータファイルにあります。これらのブロックは、それぞれシリンダーアセンブリ(data_cyl.mdl)とクランクシャフトアセンブリ(data_crank.mdl)のデータファイルを参照します。データファイルには、定義内のエンティティに関連したデータも含まれます。



図 5.

シリンダーアセンブリとクランクシャフトアセンブリと定義ファイルの構造は、先述の親アセンブリ構造と類似しています。これらの子アセンブリも、下の図に示されるとおり、アタッチメントをとります。



図 6.
注: 上記の例には2つのレベルがあります。同様のアセンブリを"N"個の階層レベルで生成することが可能です。

アセンブリの追加

モデルにアセンブリを追加するにはAssemblyツールを使用します。

  1. アセンブリリボンのArrangeツールグループから、Assemblyアイコンをクリックします。
    Add Assemblyダイアログが表示されます。
  2. AssemblyラジオボタンをアクティブにしてNextをクリックします。
    Add Assemblyダイアログが表示されます。
  3. 既存のファイルからアセンブリを追加するには、次の手順を実行します。
    1. Existing data fileを選択してNextをクリックします。
    2. 新しいアセンブリの保存先とする親エンティティを変更するには、Parentコレクターをダブルクリックして、モデルツリーでアセンブリまたはアナリシスを選択します。
    3. File browserアイコンを使用し、使用するデータファイルを選択してOpenをクリックします。
      データファイルによって参照される定義ファイル、名称、タイプが、対応する欄に自動的に表示されます。
  4. 新しいデータファイルからアセンブリを追加するには、次の手順を実行します。
    1. New data fileを選択してNextをクリックします。
    2. 新しいアセンブリデータファイルは、既存の定義ファイルまたは新しく作成した定義ファイルを参照するように作成できます。そのどちらかを選択して、使用するファイルを指定します。
    3. 新しいアセンブリの保存先とする親エンティティを変更するには、Parentコレクターをダブルクリックして、モデルツリーでアセンブリまたはアナリシスを選択します。
  5. 後でデータファイルを選択するには、次の手順を実行します。
    1. Specify data file laterを選択してNextをクリックします。
    2. データファイルの準備ができたら、アセンブリプレースホルダのデータファイルまたは定義ファイルを指定するために、Projectブラウザでプレースホルダを右クリックしてSelect Assemblyをクリックし、前述の方法でアセンブリを定義します。
      注: Projectブラウザに用意されているReselect Assemblyコンテキストメニューオプションを使用して、データファイルと定義ファイルを再指定できます。このコンテキストメニューには、既存のアセンブリのプレースホルダへの選択を解除するオプションも用意されています。
  6. システムの変数名を指定します。
  7. システムのラベルを指定します。
  8. システムの定義名を指定します。
  9. OKをクリックしてウィンドウを閉じるか、Applyをクリックしてエンティティの作成を継続します。
    アセンブリがモデルに追加されます。