FreeCAD アセンブリ機能の基本と使い方

FreeCAD アセンブリ機能の基本と使い方

はじめに

3D CADにおける「アセンブリ」機能は、設計プロセスの根幹をなす非常に重要な要素です。複数の部品(パーツ)を組み合わせ、実際の製品がどのように構成されるか、部品同士がどのように連携して動くかをシミュレーションするために不可欠です。単一の部品設計だけでは、複雑な機械や構造物全体の設計は完成しません。アセンブリ機能を使うことで、部品間の関係性、干渉の有無、そして全体の機能性を検証することができます。

FreeCADは、オープンソースでありながら強力な機能を備えた3D CADソフトウェアです。部品設計を行うための「Part Design」ワークベンチや「Part」ワークベンチはもちろんのこと、複数の部品を組み立てるためのアセンブリ機能も提供しています。FreeCADのアセンブリ機能は、他の商用CADソフトウェアと同様に、部品間に「拘束(Constraint)」を設定することで、部品の位置と向きを決定し、固定または特定の運動自由度を持たせます。

FreeCADのアセンブリ機能にはいくつかの選択肢があり、歴史的な経緯や開発状況によって異なるワークベンチが存在します。かつては「Assembly2」や「Assembly3」が使われていましたが、現在のFreeCADの主流なアセンブリワークベンチは「Assembly4」です。この記事では、主に現在推奨されているAssembly4ワークベンチを中心に、その基本概念から具体的な使い方、応用テクニックまでを詳細に解説します。Assembly3についても、その特徴と使い分けについて触れます。

アセンブリの概念:なぜ部品を組み立てるのか?

アセンブリとは、複数の独立した部品ファイル(またはサブアセンブリ)を一つのファイル(アセンブリファイル)内で配置し、部品間の相対的な位置や向きを定義したものです。なぜこのような機能が必要なのでしょうか?

  1. 部品の組み合わせと構造の確認: 製品は通常、多数の部品から成り立っています。アセンブリを作成することで、これらの部品が設計通りに組み合わさるか、全体の構造がどのようになるかを確認できます。
  2. 干渉チェック: 隣接する部品同士が物理的にぶつかっていないか(干渉していないか)を確認できます。これは設計ミスを防ぐために非常に重要です。
  3. 動きのシミュレーション: 部品間に特定の拘束を設定することで、部品がどのように動くかをシミュレーションできます。例えば、回転軸を設定したり、スライド機構を再現したりすることが可能です。Assembly3などは、より高度なメカニズムシミュレーション機能を持っています。
  4. 部品表(BOM)の作成: アセンブリに含まれる部品の種類と数を集計し、部品表(Bill of Materials)を作成するための基盤となります。
  5. 上位レベルのアセンブリへの組み込み: 完成したアセンブリ自体を、さらに大きな製品のアセンブリの部品(サブアセンブリ)として利用することができます。これにより、複雑な製品設計を階層的に管理できます。

単一の部品ファイル(例: Part Designで作成した.FCStdファイル)は、その部品自体の形状情報を含んでいます。一方、アセンブリファイルは、どの部品ファイルを読み込むか、そしてそれらの部品が互いにどのように配置されるか(=部品間の拘束)の情報を含んでいます。アセンブリファイル自体は部品の形状情報そのものは持ちません。

FreeCADでは、アセンブリのコンポーネントとして主に以下のものを使用します。
* Parts (部品): Part DesignやPartワークベンチなどで作成された個別の部品ファイル。
* Subassemblies (サブアセンブリ): 別のFreeCADアセンブリファイル。より大きなアセンブリの一部として機能します。

これらの部品やサブアセンブリをアセンブリファイル内に配置し、「拘束」と呼ばれるルールを適用して、それらの相対的な位置と向きを定義します。拘束は、部品の持つ「自由度」を制限するものです。

自由度(Degrees of Freedom – DoF)
3D空間上の剛体は、合計6つの自由度を持っています。
* 並進移動 (Translation): X軸、Y軸、Z軸方向への移動(3自由度)。
* 回転移動 (Rotation): X軸、Y軸、Z軸を中心とした回転(3自由度)。

部品をアセンブリに配置した直後は、通常6つの自由度を全て持っています(つまり、空間内の任意の位置と向きに自由に動かせます)。拘束を設定することで、これらの自由度を減らしていきます。例えば、「面一致拘束」は通常、3つの並進自由度と2つの回転自由度(面の法線方向の並進と、面内の2つの回転)を制限します。目的の位置と向きに部品を固定するには、全ての自由度(6つ)を拘束する必要があります。ただし、特定の運動を再現したい場合は、意図的にいくつかの自由度を残します(例:回転軸なら1つの回転自由度を残す)。

FreeCADにおけるアセンブリワークベンチ

FreeCADはモジュール式の設計になっており、様々な機能が「ワークベンチ」として提供されています。アセンブリ機能についても、複数のワークベンチが存在し、それぞれ開発経緯、機能、使用感が異なります。

  1. Assembly2/Assembly2+: FreeCADの比較的初期から存在した外部ワークベンチです。単純なインポートと手動配置、いくつかの基本的な拘束機能を提供していました。現在はあまり推奨されません。
  2. Assembly3: 拘束ソルバーを内蔵し、高度な拘束タイプやメカニズムシミュレーション機能を持つ外部ワークベンチです。より複雑なアセンブリやアニメーションに適していますが、Assembly4と比較すると、内部構造が複雑で安定性に課題がある場合がありました。また、App::Linkを使用しない方式でした。
  3. Assembly4: FreeCAD v0.19から導入された、App::Linkオブジェクトを活用した新しいアセンブリワークベンチです。シンプルながらも強力な拘束ソルバーを持ち、特にパフォーマンスと安定性に優れています。現在のFreeCADの標準的なアセンブリワークベンチとして推奨されています。

本記事では、現在主流であるAssembly4を中心に解説し、Assembly3についてもその特徴と使い分けについて触れます。

Assembly4ワークベンチの詳細

Assembly4は、FreeCAD v0.19で導入されたApp::Linkアーキテクチャを基盤として構築されています。App::Linkは、他のファイルにあるオブジェクト(部品やフィーチャー)への参照(リンク)を作成する機能です。これにより、アセンブリファイルは部品ファイルのコピーを持つのではなく、参照を持つため、ファイルサイズが小さくなり、部品ファイルの変更がアセンブリファイルに自動的に反映されるようになります。これは、大規模なアセンブリや、部品設計とアセンブリ設計を並行して行う場合に非常に大きな利点となります。

Assembly4のインストール

Assembly4ワークベンチは、FreeCADのアドオンマネージャーを通じて簡単にインストールできます。

  1. FreeCADを起動します。
  2. メニューバーから「ツール」→「アドオンマネージャー」を選択します。
  3. アドオンマネージャーのリストが表示されるまで待ちます。
  4. リストの中から「Assembly4」を探し、選択します。
  5. 右側に表示される情報パネルで「インストール」ボタンをクリックします。
  6. インストールが完了したら、FreeCADを再起動するよう指示される場合があります。指示に従って再起動します。

インストール後、ワークベンチセレクター(通常はツールバーのドロップダウンリスト)に「Assembly4」が表示されるようになります。

基本的なワークフロー

Assembly4を使ったアセンブリ作成の基本的な手順は以下の通りです。

  1. 新しいアセンブリファイルの作成: FreeCADで新しいドキュメントを作成し、ワークベンチを「Assembly4」に切り替えます。
  2. アセンブリコンテナの作成: Assembly4では、全てのアセンブリ要素(部品、サブアセンブリ、拘束など)を格納するためのトップレベルのコンテナが必要です。ツールバーの「Create an Assembly」アイコンをクリックします。これにより、ツリービューにアセンブリコンテナ(通常はAssemblyという名前)と、その中にOriginオブジェクトが作成されます。
  3. 部品のインポート: アセンブリに組み込みたい部品ファイル(.FCStd)を開くか、または現在開いている部品を挿入します。Assembly4ワークベンチで「Insert a Part from current document」または「Link a part from external document」アイコンをクリックします。

    • 「Insert a Part from current document」: 現在FreeCADで開いている別のタブにあるドキュメントから部品を挿入します。
    • 「Link a part from external document」: ファイルダイアログを開き、外部の.FCStdファイルから部品を挿入します。通常はこちらが推奨されます。

    部品をインポートすると、その部品へのApp::Linkオブジェクトがアセンブリツリーに作成されます。インポートされた部品は、デフォルトではAssemblyコンテナのOriginに配置されます。

  4. 部品の配置と拘束の設定:

    • インポートした部品は、最初の1つを除いて、他の部品に対して相対的な位置・向きが未定義です。これらの部品を選択し、他の部品のジオメトリ(頂点、エッジ、面、データムフィーチャーなど)やAssemblyコンテナのOriginに対して拘束を設定していきます。
    • 拘束ツールバーから適切な拘束タイプを選択し、拘束したい部品のジオメトリ要素(選択モードを「Sub-object mode」にすると便利)を選択します。
    • 選択したジオメトリに基づいて、拘束ダイアログが表示されます。拘束の種類、方向、オフセットなどを設定します。
    • 「Solve constraints」ボタンをクリックするか、設定によっては自動的にソルバーが実行され、部品の位置と向きが拘束に従って更新されます。
    • 全ての自由度が拘束されるか、意図した自由度だけが残るまで、このプロセスを繰り返します。
  5. アセンブリの保存: 作成したアセンブリを.FCStdファイルとして保存します。このファイルは、インポートした部品ファイルへのリンク情報を含んでいます。

重要な要素

Assembly4ワークベンチを理解する上で重要な要素がいくつかあります。

  • Assemblyコンテナ: 全てのアセンブリ要素を格納するトップレベルのグループオブジェクトです。一つのアセンブリファイルに一つだけ作成します。
  • Origin (Assembly Origin): Assemblyコンテナ内に自動的に作成される基準座標系です。X軸、Y軸、Z軸、XY平面、YZ平面、ZX平面などのデータムフィーチャーが含まれています。アセンブリの最初の部品を固定したり、他の部品の配置基準として利用できます。
  • App::Linkオブジェクト: 外部の.FCStdファイルや同じファイル内の別のボディへの参照です。Assembly4では、インポートされた部品やサブアセンブリは全てApp::Linkオブジェクトとして扱われます。これにより、元の部品ファイルに変更があった場合、アセンブリファイルを開き直すか再計算することで、自動的にその変更が反映されます。これはAssembly4の最大の利点の一つです。
  • Body (Part Design Body): Part Designワークベンチで作成された単一の固体部品は、Bodyオブジェクトとして扱われます。Assembly4は、インポートされたファイル内のBodyオブジェクトへのリンクを作成します。拘束は、これらのBody内のフィーチャー(頂点、エッジ、面など)に対して設定されます。
  • Constraint (拘束): 部品間の相対的な位置と向きを定義するルールです。拘束はアセンブリツリー内で管理され、いつでも編集または削除できます。
  • Solver (ソルバー): 設定された拘束を満たすように、部品の正確な位置と向きを計算するエンジンです。Assembly4は内部に効率的なソルバーを持っています。

拘束(Constraint)の種類と使い方 (Assembly4)

Assembly4ワークベンチには、部品の位置と向きを定義するための様々な拘束タイプが用意されています。これらの拘束を適切に組み合わせることで、部品の自由度を制御し、正確なアセンブリを構築します。拘束は、通常、2つの部品のジオメトリ要素(頂点、エッジ、面、軸など)間、または部品のジオメトリ要素とAssembly Originのデータム要素(平面、軸、点)間に設定します。

拘束を設定する一般的な手順は以下の通りです。
1. 拘束を設定したい2つのジオメトリ要素(例:面の中心、エッジ、平面など)を選択します。Ctrlキーを押しながらクリックすることで複数選択できます。
2. Assembly4ツールバーから、設定したい拘束タイプのアイコンをクリックします。
3. 表示されるダイアログで、必要に応じて拘束の向き、オフセット、方向などを調整し、「OK」をクリックします。
4. ソルバーが自動的に実行されるか、「Solve constraints」アイコンをクリックして、部品の位置が更新されるのを確認します。

以下に、Assembly4の主要な拘束タイプとその使い方、そして拘束によって制限される自由度について説明します。

1. Coincident (一致)

  • アイコン: 点が点に重なるようなアイコン
  • 説明: 選択した2つの点が空間的に一致するように拘束します。または、選択した2つのエッジや軸を空間的に一致させることもできます。
    • 点-点: 2つの頂点または点のフィーチャーを選択。3つの並進自由度 (Tx, Ty, Tz) を制限します。
    • 線/軸-線/軸: 2つの直線的なエッジ、データム軸、または円・円筒の中心軸を選択。2つの並進自由度 (Tx, Ty) と1つの回転自由度 (Rz – 軸周りの回転は自由) を制限します。一般的に、穴とシャフトの中心軸を一致させるのに使われます。
  • ダイアログオプション:
    • Lock Orientation: チェックを入れると、一致する軸の方向も固定し、軸周りの回転自由度も制限します(実質6自由度全て制限)。

2. Concentric (同心円/同軸)

  • アイコン: 同心円のアイコン
  • 説明: 選択した2つの円形のエッジ、円筒面、または円錐面が同心円または同軸になるように拘束します。Coincident (線/軸-線/軸) と似ていますが、円形のエッジや面に直接適用できる点が異なります。
    • 円/円筒/円錐 – 円/円筒/円錐: 2つの円形エッジ、円筒面、または円錐面を選択。Coincident (線/軸) と同様に、2つの並進自由度 (Tx, Ty) と1つの回転自由度 (Rz – 軸周りの回転は自由) を制限します。
  • ダイアログオプション:
    • Lock Orientation: チェックを入れると、軸の方向も固定し、軸周りの回転自由度も制限します。

3. Parallel (平行)

  • アイコン: 2つの平行線のアイコン
  • 説明: 選択した2つの直線的なエッジ、データム軸、または2つの平面が互いに平行になるように拘束します。
    • 線/軸 – 線/軸: 2つの直線的なエッジまたはデータム軸を選択。2つの回転自由度 (Rx, Ry – 軸に垂直な軸周りの回転) を制限します。軸周りの回転 (Rz) と3つの並進自由度は残ります。
    • 平面 – 平面: 2つの平面またはデータム平面を選択。3つの回転自由度 (Rx, Ry, Rz) を制限します。3つの並進自由度は残ります(ただし、Plane Coincidentを使う方が一般的)。
  • ダイアログオプション:
    • Flip Parallel: 選択した要素の向きを反転させる場合にチェックを入れます(例:面の法線方向を揃える/反対にする)。

4. Perpendicular (垂直)

  • アイコン: 直角のアイコン
  • 説明: 選択した2つの直線的なエッジ、データム軸、または2つの平面が互いに垂直になるように拘束します。
    • 線/軸 – 線/軸: 2つの直線的なエッジまたはデータム軸を選択。軸周りの回転以外の3つの回転自由度 (Rx, Ry, Rz – 垂直になるように調整される回転) を制限します。
    • 平面 – 平面: 2つの平面またはデータム平面を選択。3つの回転自由度 (Rx, Ry, Rz – 垂直になるように調整される回転) を制限します。
    • 線/軸 – 平面: 直線的なエッジまたはデータム軸と平面またはデータム平面を選択。軸が平面に垂直になるように回転を制限します。

5. Angular (角度)

  • アイコン: 角度のアイコン
  • 説明: 選択した2つの直線的なエッジ、データム軸、または2つの平面の間の角度を特定の値に拘束します。
    • 線/軸 – 線/軸: 2つの直線的なエッジまたはデータム軸を選択。2つの回転自由度 (軸に垂直な軸周りの回転) を制限します。
    • 平面 – 平面: 2つの平面またはデータム平面を選択。1つの回転自由度 (共通の交線周りの回転) を制限します。
    • 線/軸 – 平面: 直線的なエッジまたはデータム軸と平面またはデータム平面を選択。1つの回転自由度 (平面上の線に垂直な軸周りの回転) を制限します。
  • ダイアログオプション:
    • Angle: 設定したい角度の値を入力します。
    • Flip Angle: 角度の方向を反転させる場合にチェックを入れます。

6. Tangent (接線)

  • アイコン: 円と線の接線のアイコン
  • 説明: 直線的なエッジまたはデータム軸と円形のエッジ、円筒面、または球面の間に接線関係を設定します。または、円形のエッジ、円筒面、球面と平面の間にも設定できます。これは通常、曲がったサーフェスや回転する部品に対して使われます。
    • 線/軸 – 円/円筒/球: 直線的なエッジまたはデータム軸と円、円筒、または球を選択。軸が円/円筒に接するか、球面に接するように制限します。
    • 円/円筒/球 – 平面: 円形のエッジ、円筒、または球と平面を選択。円/円筒が平面に接するか、球が平面に接するように制限します。

7. Locked (固定)

  • アイコン: 錠前のアイコン
  • 説明: 選択した部品(App::Linkオブジェクト)を、現在の位置と向きに完全に固定します。アセンブリにおける最初の部品(基準部品)に対して使用するのが一般的です。これにより、その部品は全ての並進および回転自由度(6自由度)を失います。他の部品は、この固定された部品に対して位置決めされます。
    • 部品: Assemblyツリーで部品のApp::Linkオブジェクトを選択。
  • ダイアログオプション: なし。

8. Plane Coincident (平面一致)

  • アイコン: 2つの平面が重なるアイコン
  • 説明: 選択した2つの平面(またはデータム平面)が空間的に一致するように拘束します。これは非常に強力な拘束で、3つの並進自由度と2つの回転自由度(面の法線方向の並進、面内の2つの回転)を制限します。アセンブリで部品を基準平面に配置したり、2つの部品の面を合わせたりするのに頻繁に使用されます。
    • 平面 – 平面: 2つの平面またはデータム平面を選択。
  • ダイアログオプション:
    • Flip Plane: 選択した要素の向き(面の法線方向)を反転させる場合にチェックを入れます。

9. Plane Parallel (平面平行)

  • アイコン: 2つの平行な平面のアイコン
  • 説明: 選択した2つの平面(またはデータム平面)が互いに平行になるように拘束します。Parallel (線/軸) とは異なり、平面自体に作用します。3つの回転自由度を制限します。
    • 平面 – 平面: 2つの平面またはデータム平面を選択。
  • ダイアログオプション:
    • Flip Parallel: 選択した要素の向きを反転させる場合にチェックを入れます。

10. Plane Perpendicular (平面垂直)

  • アイコン: 2つの垂直な平面のアイコン
  • 説明: 選択した2つの平面(またはデータム平面)が互いに垂直になるように拘束します。3つの回転自由度を制限します。
    • 平面 – 平面: 2つの平面またはデータム平面を選択。

11. Offset (オフセット – 寸法拘束)

  • アイコン: 寸法のアイコン
  • 説明: 選択した要素間(点と点、点と平面、線と線、線と平面、平面と平面など)の距離または角度を指定した値に拘束します。これは、Coincident, Parallel, Plane Coincidentなどの拘束と組み合わせて使用することで、正確な寸法を指定した配置が可能です。

    • 点 – 点: 2つの点を指定距離に拘束(1並進自由度)。
    • 点 – 平面: 点と平面を指定距離に拘束(1並進自由度)。
    • 線/軸 – 線/軸: 2つの平行な線/軸を指定距離に拘束(1並進自由度)。
    • 線/軸 – 平面: 平行な線/軸と平面を指定距離に拘束(1並進自由度)。
    • 平面 – 平面: 2つの平行な平面を指定距離に拘束(1並進自由度)。
    • 線/軸 – 線/軸 (角度): 2つの交差する線/軸を指定角度に拘束(1回転自由度)。
    • 平面 – 平面 (角度): 2つの交差する平面を指定角度に拘束(1回転自由度)。

    Offset拘束は、既存の拘束によって残された自由度を制限するために使用されることが多いです。例えば、Plane Coincidentで2つの平面を合わせた後、その平面上の特定のフィーチャー間をOffset拘束で位置決めするなどです。
    * ダイアログオプション:
    * Offset: 距離または角度の値を入力します。
    * Reverse Offset: オフセットの方向を反転させます。
    * Alignment: 距離の測定方向(例:X, Y, Z方向の投影距離、最短距離など)や角度の測定方法を選択します。

アセンブリツリーの構造 (Assembly4)

Assembly4のアセンブリファイルを開くと、ツリービューには以下のような構造が表示されます。

  • [ファイル名] (ドキュメントルート)
    • Assembly (Assemblyコンテナ)
      • Origin (Assembly基準座標系)
        • X_Axis, Y_Axis, Z_Axis (データム軸)
        • XY_Plane, YZ_Plane, ZX_Plane (データム平面)
      • [部品名]_Link001 (部品1のApp::Link)
        • [部品名]_Link001#Body (部品1のBodyへのLink)
      • [部品名]_Link002 (部品2のApp::Link)
        • [部品名]_Link002#Body (部品2のBodyへのLink)
      • Constraint001 (拘束1)
      • Constraint002 (拘束2)
    • Solver (Assembly4ソルバーオブジェクト)
    • Assembly_solver_plan (ソルバーの計算計画 – 非表示の場合あり)

重要なのは、インポートされた各部品がApp::Linkオブジェクトとしてリストされ、そのリンクが元の部品ファイルのBodyを指している点です。拘束は、これらのBody内のジオメトリ要素(リンクを介して参照される)に対して設定されます。ツリービューで拘束オブジェクトを選択すると、それに含まれる要素が3Dビューでハイライト表示されます。

拘束の編集と削除

設定済みの拘束を編集するには、ツリービューで該当する拘束オブジェクトをダブルクリックします。拘束設定ダイアログが再度表示され、パラメータ(オフセット値、方向など)を変更できます。

拘束を削除するには、ツリービューで拘束オブジェクトを選択し、Deleteキーを押すか、右クリックメニューから「Delete」を選択します。

部品の移動と回転

アセンブリ内の部品を移動または回転させる方法はいくつかあります。

  1. 拘束による移動/回転: ほとんどの場合、部品は設定された拘束によって位置が決まります。拘束を変更(例:Offset値を変更)することで、部品の位置が変化します。
  2. 手動での移動/回転 (配置ツール): 拘束を設定する前や、一時的に拘束を無効にしたい場合、または拘束で自由度が残っている部品を動かしたい場合に、部品をマウスや座標入力で移動・回転させることができます。ツリービューで部品のApp::Linkオブジェクトを選択し、プロパティパネルの「Placement」プロパティを変更するか、ドラフトワークベンチの「Move」や「Rotate」ツール(Assembly4ツールバーにも同等の機能がある場合あり)を使用します。ただし、手動で配置した位置は、ソルバーが再計算されると拘束に従った位置にリセットされます。
  3. 拘束の無効化: 一時的に部品の拘束を無視して移動・回転させたい場合は、ツリービューで該当する拘束を選択し、プロパティパネルの「Suppressed」プロパティをTrueに設定するか、右クリックメニューから「抑制」を選択します。これにより、その拘束はソルバー計算から除外されます。作業が完了したら、Falseに戻して拘束を有効にします。

部品をインポートした直後は、通常どの部品も固定されていません。最初にインポートした部品(またはアセンブリの基準となる部品)をAssembly Originに対して「Locked」拘束で固定することをお勧めします。これにより、その部品がアセンブリの基準となり、他の部品がそれに追従するようになります。

サブアセンブリの作成と管理

複雑なアセンブリは、複数のサブアセンブリに分割して管理することで、設計が容易になり、パフォーマンスも向上します。

サブアセンブリを作成する手順は以下の通りです。
1. 新しいFreeCADドキュメントを作成し、Assembly4ワークベンチに切り替えます。
2. 「Create an Assembly」で新しいアセンブリコンテナを作成します。
3. このサブアセンブリに含めたい部品を「Link a part from external document」でインポートします。
4. これらの部品間に必要な拘束を設定し、サブアセンブリとして機能するように組み立てます。
5. サブアセンブリファイルを保存します(例: SubAssembly_Door.FCStd)。

このサブアセンブリを、さらに上位のメインアセンブリに組み込むには、メインアセンブリファイルを開き、「Link a part from external document」アイコンを使って、作成したサブアセンブリファイル(SubAssembly_Door.FCStd)をインポートします。Assembly4はこれを一つの部品として扱い、メインアセンブリ内でサブアセンブリ全体を配置・拘束できるようになります。

App::Linkのおかげで、サブアセンブリ内の部品に変更があっても、メインアセンブリでその変更が自動的に反映されます。これは、大規模プロジェクトにおけるチーム作業や、設計変更への対応を非常に効率的にします。

Assembly3ワークベンチの概要

Assembly3は、Assembly4よりも以前から存在し、Assembly4とは異なるアプローチと拘束ソルバーを持つ外部ワークベンチです。Assembly3は、より広範な拘束タイプと、メカニズムシミュレーションのためのキネマティックソルバーを特徴としています。

Assembly4との違い

  • 基盤: Assembly3はApp::Linkを使用しません。部品はアセンブリファイル内にコピーとして取り込まれるか、またはAssembly3独自のリンク機構を使用します。Assembly4のApp::Linkに比べると、外部参照の管理やパフォーマンス、安定性においてAssembly4が優位とされることが多いです。
  • 拘束ソルバー: Assembly3は独自の拘束ソルバーを持ち、Assembly4よりも多くの種類の拘束(歯車、滑車、スロットなど)や、運動を指定してシミュレーションを行うキネマティックソルバーを備えています。
  • 拘束タイプ: Assembly3はAssembly4にはない独自の拘束タイプを多数持っています。
  • GUI: Assembly3のGUIはAssembly4とは異なります。拘束の設定方法も若干異なります。

Assembly3の主要な拘束タイプ

Assembly3は非常に多くの拘束タイプを持っていますが、代表的なものをいくつか挙げます。

  • Lock: Assembly4のLocked拘束に相当。部品を完全に固定します。
  • Planar Face: 2つの平面を一致させ、面内の回転以外の自由度を拘束します。Assembly4のPlane Coincidentに近いですが、回転自由度の扱いが異なる場合があります。
  • Axial Alignment: 2つの円筒面や軸を同軸にします。Assembly4のConcentricやCoincident (線/軸) に相当します。
  • Point on Plane: 点を平面上に拘束します。
  • Point on Line: 点を直線上に拘束します。
  • Points Coincident: 2つの点を一致させます。
  • Angle: 2つの線や平面の間の角度を拘束します。
  • Distance: 2つの要素間の距離を拘束します。
  • Gears, Pulleys, Rack and Pinion: 歯車や滑車、ラックアンドピニオン機構の運動をシミュレーションするための特殊な拘束です。

Assembly3の使い分け

Assembly3は以下のような場合に検討されることがあります。

  • Assembly4にはない特定の拘束タイプが必要な場合(例:歯車機構など)。
  • 複雑なメカニズムの運動をシミュレーションしたい場合。

ただし、Assembly4がAssembly3の機能を取り込む形で進化していること、そしてApp::Linkによる安定性とパフォーマンスの利点から、多くの新規アセンブリプロジェクトではAssembly4が推奨されています。Assembly3を使用する場合は、Assembly4とは異なるファイル管理や操作に慣れる必要があります。

実践的なアセンブリテクニック (Assembly4中心)

基準フィーチャーの利用

部品設計時、アセンブリでの利用を考慮して、基準となるデータムフィーチャー(データム平面、データム軸、データム点)を作成しておくことが有効です。Assembly4で部品をインポートした後、これらのデータムフィーチャーを選択して拘束を設定することで、より意図通りの位置決めが容易になります。例えば、部品の取り付け面や回転中心にデータムフィーチャーを作成しておくと便利です。

Assemblyコンテナ内のOrigin(基準座標系)も重要な基準です。アセンブリの最初の部品は、このOriginに対して拘束(通常はLocked拘束)を設定することで、アセンブリ全体の基準点を定めます。

部品の配置戦略

アセンブリを効率的に行うための配置戦略はいくつかあります。

  1. 基準部品の固定: アセンブリの中で最も動きが少なく、他の部品の基準となる部品を1つ選び、Assembly Originに対してLocked拘束で固定します。
  2. 連鎖的な拘束: 基準部品に最も近い部品から順に拘束を設定していきます。部品Aを基準部品に拘束し、次に部品Bを部品Aに拘束、部品Cを部品Bに拘束、といったように、部品間の関係性を明確にしながら組み立てていきます。
  3. 主要な拘束から設定: 位置を大きく決める拘束(例:Plane Coincident)から先に設定し、その後、詳細な位置や方向を決める拘束(例:Concentric, Offset)を追加していくと効率的です。
  4. 自由度の意識: 各部品にあといくつの自由度が残っているかを意識しながら拘束を設定します。プロパティパネルの「Placement」プロパティを見ると、ソルバーによる計算結果としての部品の位置と向きを確認できます。意図した位置になっていない場合は、拘束が足りないか、間違っている可能性があります。

パフォーマンスの考慮

複雑なアセンブリを扱う際には、パフォーマンスが問題になることがあります。

  • App::Linkの活用: Assembly4がApp::Linkを使用することは、パフォーマンス向上に貢献します。部品ファイルのデータをコピーせず参照するため、ファイルサイズやメモリ使用量が抑えられます。
  • 部品の簡略化: アセンブリでは見えない内部フィーチャーや微細なフィレット、面取りなどが多数あると、ソルバーの計算負荷が増大します。アセンブリ専用に、これらの詳細を削除したり簡略化したりした「コンフィギュレーション」や「派生パーツ」を作成し、アセンブリではそちらを使用することを検討します。特に外部から入手した複雑な部品(ネジなど)は、アセンブリ用途では単純な形状に置き換えることが有効です。
  • サブアセンブリの利用: 複雑なモジュールをサブアセンブリとしてまとめると、メインアセンブリでの管理が容易になり、パフォーマンスが向上する場合があります。

外部参照(リンク切れ)の対処法

Assembly4は外部の部品ファイルへのリンクを使用するため、元の部品ファイルの名前や場所が変更されると、アセンブリファイルでリンク切れが発生することがあります。FreeCADは通常、リンク切れが発生しているオブジェクトをツリービューで赤く表示するなどして通知します。

リンク切れを修復するには、リンク切れしているApp::Linkオブジェクトを選択し、プロパティパネルの「Linked object」プロパティを編集して、新しいファイルパスまたはオブジェクトを指定します。または、リンク切れの警告メッセージが表示された際に、ファイルの場所を指定するオプションが表示される場合もあります。

リンク切れを防ぐためには、アセンブリに関わる全ての部品ファイルとアセンブリファイルを、決まったフォルダ構造の中で管理することが推奨されます。プロジェクト全体を一つの親フォルダの下に置き、その中に「Parts」「Assemblies」「Drawings」などのサブフォルダを作成するといった方法が有効です。

アセンブリ機能の応用

分解図(Exploded View)の作成

製品の組み立て手順を示すためなどに、部品が分解された状態を図示する分解図がよく使われます。Assembly4ワークベンチ自体には専用の分解図作成ツールはありませんが、以下の方法で実現できます。

  1. 手動で部品を移動: アセンブリファイルをコピーし、そのコピーファイルで各部品を拘束を一時的に無効にするか削除し、手動でそれぞれの分解後の位置に移動させます。配置プロパティを直接編集するのが最も一般的です。
  2. Assembly4のDisplacements機能(実験的): Assembly4には実験的な機能としてDisplacements(変位)を設定する機能があります。特定の拘束(例:Offset)の値をアニメーションのように変化させ、そのキーフレームを設定することで分解状態を作成できる可能性があります。
  3. 外部ツール/マクロ: FreeCADコミュニティによって開発された、分解図を自動または半自動で作成するマクロやワークベンチ(例:ExplodedViewワークベンチ)が存在します。

分解図を作成したら、DraftワークベンチやTechDrawワークベンチを使って注釈(バルーン)を追加し、図面を作成するのが一般的です。

部品表(BOM – Bill of Materials)の生成

アセンブリに含まれる部品の種類と数を一覧にした部品表(BOM)は、製造や購買において非常に重要です。Assembly4ワークベンチ自体にBOM生成機能はありませんが、以下の方法で実現できます。

  1. Spreadsheetワークベンチとの連携: Spreadsheetワークベンチを使用して、BOMを手動または半自動で作成できます。Assemblyツリーの構造から部品のリストを作成し、部品名、数量、材質などの情報をスプレッドシートに入力します。アセンブリツリーの情報を取得するマクロを利用すると効率的です。
  2. 外部マクロ/ワークベンチ: FreeCADコミュニティによって、アセンブリツリーからBOMを自動生成するマクロやワークベンチが開発されています。これらを利用すると、部品名や数量などを自動的に集計し、SpreadsheetやCSVファイルとして出力できます。

TechDrawワークベンチで図面を作成する際に、BOMテーブルを自動生成する機能を持つマクロや外部ワークベンチもあります。

アニメーション

Assembly3はキネマティックソルバーを持つため、アセンブリのメカニズムの動きをシミュレーションする機能が比較的豊富です。Assembly4は主に静的な拘束によるアセンブリ構築に特化していますが、いくつかの方法でアニメーションを作成できます。

  1. Assembly4 Displacements (実験的): 前述の分解図と同様に、拘束のパラメータを時間軸で変化させてアニメーションを作成する実験的な機能があります。
  2. Pathワークベンチとの連携: PathワークベンチはCAM(Computer-Aided Manufacturing)のためのワークベンチですが、特定のフィーチャーやオブジェクトのパス(軌跡)を生成する機能を持っています。これを応用して、Assembly4で定義されたアセンブリ部品の動きのパスを生成し、視覚化することができます。
  3. 外部アニメーションツール: Blenderなどの外部3Dアニメーションソフトウェアにアセンブリをエクスポートし、そこでアニメーションを作成する方法もあります。

トラブルシューティング

アセンブリ作業中には様々な問題が発生することがあります。ここでは、Assembly4でよくあるトラブルとその解決策について説明します。

拘束の競合や過剰拘束

複数の拘束が互いに矛盾していたり、必要以上に多くの拘束を設定してしまったりすると、ソルバーが解を見つけられずにエラーとなることがあります。

  • 症状: ソルバーを実行した際にエラーメッセージが表示される(例: “Solver returned an error”, “Redundant constraints detected”, “Constraint inconsistencies”)。部品が予期しない位置に飛んだり、全く動かなくなったりする。
  • 原因:
    • 部品の自由度を6つ以上拘束している(過剰拘束)。
    • 設定した拘束が幾何学的に両立しない(競合)。
    • 特に、Locked拘束を複数部品に設定したり、部品をAssembly Originと他の部品の両方に固定するような拘束を設定すると発生しやすい。
  • 解決策:
    1. 最新の拘束を確認: 最後に追加した拘束から順に、その拘束が何をしているのか、他の拘束と矛盾していないかを確認します。
    2. 拘束を一時的に無効化: エラーの原因となっている可能性のある拘束を、ツリービューで選択しプロパティのSuppressedTrueにするか、右クリックメニューから「抑制」を選択して無効化します。ソルバーを再実行してエラーが解消されるか確認します。原因となっている拘束を特定したら、その拘束を削除するか、適切に編集します。
    3. 自由度を確認: 各部品に設定されている拘束の数や種類から、理論上あといくつの自由度が残っているかを考えます。6つの自由度を完全に制限するためには、通常3つから5つ程度の拘束が必要です(拘束の種類によります)。Locked拘束を使えば1つの拘束で6自由度全てを制限できます。
    4. Locked拘束の見直し: Locked拘束はアセンブリの基準となる1つの部品にのみ適用するのが基本です。複数の部品をAssembly Originに固定したい場合は、Plane CoincidentやOffsetなどの拘束を組み合わせて行うべきです。
    5. アセンブリを単純化: 問題のある部分だけを新しいアセンブリファイルにコピーして切り分け、原因を特定します。
    6. ソルバーのリセット/再構築: まれにソルバーの状態がおかしくなることがあります。FreeCADを再起動するか、アセンブリコンテナを削除して再作成し、部品と拘束を再構築することを検討します(最後の手段)。

ソルバーエラー

上記以外にも、計算上の問題でソルバーがエラーを返すことがあります。

  • 症状: “Solver returned an error”などのメッセージが表示される。
  • 原因:
    • ジオメトリに問題がある(非常に小さな隙間、自己交差など)。
    • 拘束が非常に複雑で、数値計算が困難になっている。
    • FreeCADやAssembly4のバグ。
  • 解決策:
    1. ジオメトリの確認: Part DesignやPartワークベンチで元の部品ファイルを開き、ジオメトリに問題がないか確認します。ValidateSketchやCheckGeometryなどのツールが役立ちます。
    2. 拘束の単純化: 可能であれば、同じ結果を得られるより単純な拘束の組み合わせに変更することを検討します。
    3. FreeCADの更新: 使用しているFreeCADやAssembly4のバージョンが古い場合は、最新版に更新することで問題が解決する場合があります。
    4. フォーラムで報告: どうしても解決しない場合は、FreeCADフォーラムで問題を報告し、助けを求めます。再現可能な最小限のアセンブリファイルを提供すると、開発者や他のユーザーが原因究明に協力しやすくなります。

部品が見つからない、リンクが切れる

App::Linkを使用している特性上、元の部品ファイルが移動、名前変更、または削除されると発生します。

  • 症状: アセンブリファイルを開くと、一部の部品が表示されず、ツリービューでApp::Linkオブジェクトが赤くなるか、警告メッセージが表示される。
  • 原因: リンク先の部品ファイルが存在しないか、パスが間違っている。
  • 解決策:
    1. ファイルパスの確認: リンク切れしているApp::Linkオブジェクトのプロパティパネルで「Linked object」プロパティを確認し、ファイルパスが正しいか確認します。元の部品ファイルがある場所に手動でパスを修正します。
    2. プロジェクトフォルダの管理: アセンブリと関連部品ファイルを常に同じ相対パスで管理できるフォルダ構造で作業します。プロジェクトを別の場所に移動する際は、フォルダごと移動します。
    3. ファイル名の変更: 部品ファイルの名前を変更した場合もリンク切れします。Assemblyファイルを開き、リンク切れのオブジェクトのプロパティで新しいファイル名を指定してリンクを修復します。

パフォーマンス問題

アセンブリが非常に大きくなると、操作が重くなったり、ソルバーの計算に時間がかかったりすることがあります。

  • 症状: 3Dビューでの回転やズームが滑らかでない、拘束の追加や編集後にソルバーの応答が遅い。
  • 原因:
    • アセンブリに含まれる部品数が非常に多い。
    • 各部品のジオメトリが非常に複雑(多数のフィーチャー、微細なディテール)。
    • 古いグラフィックカードや十分なメモリがないコンピュータを使用している。
  • 解決策:
    1. 部品の簡略化: アセンブリに使用する部品ファイルに対して、詳細を削除した「アセンブリ用」のバージョンを作成します(Part DesignでSimplifyコマンドを使用したり、不要なフィーチャーを削除するなど)。アセンブリにはこの簡略化されたバージョンをリンクします。
    2. サブアセンブリの活用: 複雑なサブシステムをサブアセンブリとしてまとめます。
    3. 拘束の見直し: 必要最低限の拘束のみを使用するようにします。不必要な拘束(特にOver-constrainingになっているもの)を削除します。
    4. ハードウェアの確認: 可能であれば、より高性能なグラフィックカードや十分なメモリを備えたコンピュータを使用します。FreeCADの設定でキャッシュサイズやレンダリング品質を調整することも検討します。

今後の展望

FreeCADのアセンブリ機能は、Assembly4とAssembly3を中心に現在も活発に開発が進められています。

  • Assembly4: App::Linkを基盤とした安定性とパフォーマンスをさらに向上させるとともに、より高度な拘束タイプや機能(例えば、分解図やシンプルなアニメーション機能など)を取り込んでいく可能性があります。FreeCADの標準的なアセンブリワークベンチとしての位置づけをさらに強めていくと考えられます。
  • Assembly3: キネマティックシミュレーションなどの強みを活かしつつ、安定性の向上やAssembly4との連携などが進む可能性があります。ただし、開発リソースの分散を避けるため、将来的にAssembly4に機能が統合されていくといった方向性も考えられます。

どちらのワークベンチも発展途上であり、ユーザーからのフィードバックや開発者の努力によって日々改善されています。最新の情報はFreeCADの公式ウェブサイト、Wiki、およびフォーラムで確認することをお勧めします。

まとめ

FreeCADのアセンブリ機能は、複数の部品を組み合わせて製品全体の構造を定義し、部品間の関係性や動きを検証するための不可欠な機能です。特にAssembly4ワークベンチは、App::Linkアーキテクチャによる効率的な外部参照管理、シンプルな操作性、そして安定した拘束ソルバーを備えており、現在のFreeCADにおける標準的なアセンブリ手法として強く推奨されます。

この記事では、Assembly4を中心に、アセンブリの基本概念、ワークベンチのインストールと基本的なワークフロー、App::LinkやOriginといった重要な要素、そして様々な拘束タイプ(Coincident, Concentric, Parallel, Perpendicular, Angular, Tangent, Locked, Plane Coincident, Plane Parallel, Plane Perpendicular, Offset)の詳細な使い方を解説しました。また、Assembly3の概要とAssembly4との違い、実践的なアセンブリテクニック(基準フィーチャー、配置戦略、パフォーマンス)、アセンブリ機能の応用(分解図、BOM、アニメーション)、そしてよくあるトラブルシューティングについても触れました。

FreeCADで複雑な製品設計を行うためには、アセンブリ機能の習得が必須です。最初は単純なアセンブリから始め、様々な拘束を試しながら、部品の自由度を制御する方法を理解していくのが良いでしょう。この記事が、FreeCADのアセンブリ機能を使いこなし、より高度な設計を実現するための助けとなれば幸いです。

FreeCADはオープンソースプロジェクトであり、常に進化しています。最新の機能やより詳細な情報は、公式Wikiやコミュニティフォーラムで積極的に収集することをお勧めします。頑張ってください!

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール