end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

FreeCADの Compound + boolean演算による一括穴あけ

穴となる円柱をリンクやコピーで複数作成し、 更にCompoundで一体化することで、 boolean減算による複数一括穴あけができるようです。

Compound以外にFuse(Fusion)による一体化でもできる気がしますが、試していません

以下詳細

NGな例 - 穴となる円柱をリンクやコピーで複数作成するのみ

当初、穴となる円柱をリンクで複数作成し、ブーリアン減算を試みましたが、 リンク元の1個の円柱しか選択できず、NG

OKな例 - 更にCompoundで一体化

各穴を複数作成後、更にCompoundで一体化することで、 boolean減算による複数一括穴あけができました。

FreeCAD Part Designで XZ垂直面から押し出す際の向き

FreeCAD Skecher画面で XZ垂直面に四角を描き、 次にPart Design画面のPadで押し出すことで、立体にすると、 手前のマイナスY側に押し出され、直方体が形成されます。

理由は不明ですが「方向/エッジ = カスタム方向」とした上で、 「Y = -1 -> 1」とすると、プラスY側に直方体が形成されるようになります。

FreeCAD Skecherの距離拘束 (Constraint Distance)における +/-

以下の位置関係にある四角スケッチを原点に対し距離拘束を行う場合、 スケッチ側基準の距離となる為、-値(マイナス、負)となるっぽい

一方で、水平距離拘束(Constraint Distance H)や、垂直距離拘束(Constraint Distance V)は、 同様の位置を拘束しても、+値(プラス、正)となるっぽい。

+/-が異なる理由が不明です

FreeCAD TechDrawにおけるオレオレ図枠Templatesの利用

FreeCAD TechDraw の図枠Templatesはsvg形式で独自のものを使用できます。

また、svgヘッダに

xmlns:freecad="http://www.freecad.org/wiki/index.php?title=Svg_Namespace"

を指定した上で

<text id="text191" x="220.4196" y="235.17798" style="line-height:0%;fill:#008000">
  <tspan id="tspan189" style="fill:#008000">〇△×□工業株式会社</tspan>
</text>

のような textフィールドを用意すると、 FreeCAD TechDrawワークベンチにテンプレートを読み込んだ後から、 textフィールド内に文字を入力できます。

詳細は、FreeCADに付属しているテンプレートのsvgを見ると早いと思います

SVGテンプレート例の抜粋

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   width="419.99966" height="297.146" viewBox="0 0 419.99966 297.146"
   version="1.1" id="svg45"
   sodipodi:docname="my_draw_frame.svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns:freecad="http://www.freecad.org/wiki/index.php?title=Svg_Namespace">
   
    <text id="text191" x="220.4196" y="235.17798" style="line-height:0%;fill:#008000">
      <tspan id="tspan189" style="fill:#008000">〇△×□工業株式会社</tspan>
    </text>
  </g>
</svg>

freecad:editable

参考url等

FreeCADのアセンブルワークベンチは、Assembly4 > A2plus ?

FreeCADにおけるアセンブルワークベンチには Assembly4 と A2plus があり、 インターネットで検索すると、どちらをすべきか迷います。

Assembly4 Workbench - FreeCAD Documentation

Assembly4 was inspired by  A2plus and  Assembly3

とありますので、今後 Assembly4 を使用する方が良い気がします

FreeCAD Assembly 4 Tutorial 1 の deepl翻訳

FreeCADのアセンブルワークベンチのdeepl翻訳は今回で一旦、区切り

【目次】

オリジナルのdocument

https://github.com/Zolko-123/FreeCAD_Examples/blob/master/Asm4_Tutorial1/README.md

クイック・スタート・ガイド

このチュートリアルでは、以下のアセンブリの作り方を説明します

軸は PartDesignワークベンチで設計し、軸受はSTEPファイルからインポートします

このチュートリアルはビデオでもご覧いただけます

youtu.be

事前準備

Assembly4の説明を読み、Assembly4がインストール済みであることや、 FreeCADの特にSketcherとPartDesignの基本知識があることが前提です。

STEPファイルbearing_20x37x9.stp をローカルディスクにダウンロードしてください。

ツールバーとメニュー

ツールバーボタンは、関連するオブジェクトの選択によりアクティブになります。 使用したいボタンがアクティブでない場合、マウスで選択を変更してください。

これらの機能は、メニューバーのアセンブリからもアクセスできます:

ドキュメントの作成

空の FreeCAD から始めます。

  1. 新しいドキュメントを3つ作成: ファイル > 新規作成(またはctrl-n)
  2. 1つ目にモデル(又はアセンブリ)を作成:メニュ>Assembly>New Model(又はNew Assembly)
    1. これがアセンブリになり、asm_tuto1.fcstdとしてファイルを保存
  3. 2つ目にPartDesign::Bodyを作成: メニュ > Assembly > New Body
    1. 「Axis」の名称でボディを作成し、この後、軸を設計します
    2. axis.fcstdとしてファイル保存してください
  4. 3つ目にパーツを作成: メニュ > Assembly > New Part
    1. 「Bearing」の名称でパーツ作成し、この後、STEPファイルからインポートします
    2. bearing.fcstdとしてファイル保存してください
  5. 3つのドキュメントをすべて閉じ、再度開きます (FreeCADを閉じる必要はありません)

以上で、Assembly4を使い、これらのドキュメントを使用する準備が完了です

軸ドキュメント

タブをクリックし、軸ドキュメントに切り替えてください。

ボディ

  1. ボディの右クリックから「アクティブボディを切り替え」でPartDesignワークベンチへ切り替え
  2. 新スケッチを作成し。タスクビュ:XY_Planeを選択(スケッチはアクティブボディ内にあります)
  3. 以下のスケッチを描きます
  4. スケッチを一回転させます

ローカル座標系 LCS_1

  1. Assembly4ワークベンチに切り替え、軸ボディを選択
  2. モデルツリーの軸ボディ右クリックからCreate > New Coordinate Systemで座標系(LCS_1)作成
  3. Property View の MapMode を編集。図のように軸の円周と、MapMode=同心を選択
  4. モデルツリーの軸ボディ右クリックから「表示」を選択し、シェイプの色を目立つ色に変更
  5. 保存

以上で、部品軸の組立準備が完了しました

軸受ドキュメント

  1. タブをクリックし、軸受ドキュメントに切り替えてください
  2. 未なら、STEPファイル bearing_20x37x9.stpを axis.fcstd、bearing.fcstd、asm_tuto1.fcstdと同じディレクトリにダウンロード

STEPのインポート

  1. 前述のSTEPファイルbearing_20x37x9.stpをインポートします(File > Import)。 複数のソリッド束は作成されるが、1つの軸受パーツは作成されない場合、手動対処が必要です。 Std Part - FreeCAD Documentation
  2. モデルツリー内でソリッド束を全選択し、ツリー内の軸受パーツにドラッグします。
  3. ソリッド束が本当に移動したかは、モデルツリーの小さな三角形を折りたたむことで確認できます。【注意】うまくいかない場合、必要であれば、bearing.fcstdファイルを削除し、やり直してください。

ローカル座標系

軸受をアセンブリに配置するには、2つの新しいローカル座標系が必要です。 LCS_0は中央にあるように見えますが、STEPのインポートを信用することはできないので、 これは使いません。 代わりに、2つの新しいローカル座標系を作成し、ジオメトリの中心に配置します。

  1. ツリービューでモデルを選択します
  2. 新しいローカル座標系(LCS)を作成し(Assembly > New Coordinate System)、デフォルト名LCS_1のままにして、OKをクリックします
  3. 新しいローカル座標系(LCS)を作成し(Assembly > New Coordinate System)、デフォルト名LCS_2のままにして、OKをクリックします

ローカル座標系の配置

  1. ツリーで LCS_1 を右クリックし「データムの編集」を選択
  2. 下のスクリーンショットのようにエッジを選択
  3. Concentric(同心円状) オプションを選択し、OKをクリック
  4. 同じ手順でLCS_2を配置しますが、下のスクリーンショットのようにベアリングの反対側のエッジを選択します:
  5. 保存してください

以上で、軸受の組立準備が完了しました。

asm_tuto1 ドキュメント

メインウィンドウでタブを選択し、asm_tuto1ドキュメントに切り替えてください。

軸のインサート

  1. メニュ > Assembly > Insert Part を選択するか、 ツールバー をクリック
  2. タスクパネルに以下のダイアログが表示されます
  3. 「axis#Axis」軸を選択
  4. 「Axis」などの名前を入力
  5. OKをクリックすると、部品がアセンブリに挿入されます。
  6. 挿入した部品が選択されたまま をクリックると、部品配置のダイアログが表示 【注意】この操作の間、配置されている部品は透明です
  7. 上のスクリーンショットと同じ選択をします
    1. 左側のパネルで、部品LCSにLCS_0を選択
    2. コンボボックスで、Parent Assemblyを選択
    3. 右側のパネルで、親LCSにLCS_Originを選択 【注意】部品配置ダイアログで無視をクリックした場合、 部品はアセンブリ内に残りますが、配置はされません。 このリンクはFreeCAD内蔵のドラッガー(右クリック>変形)でアセンブリ内で移動できます。
  8. asm_tuto1 内のツリーに新しい軸インスタンスが表示されます。 新しいインスタンスには、以下のプロパティを持つアセンブリ・プロパティ・セクションがあります:
    • AssemblyType : どのアセンブリソルバーを適用するか (ここではAsm4EE)
    • AttachedBy : このインスタンスがリンク先のどの座標系でアセンブリにアタッチされているか。#で区切って記述
    • AttachedTo : インスタンスがどの親に、そしてその親の内部でどの座標系に、#で区切ってアタッチされているか
    • AttachmentOffset : App::Placement プロパティで、リンクされた部品のアタッチメント LCS とアセンブリのターゲット LCS の間にオフセットを適用
  9. OKをクリック

以上で、軸部分が、ツリーを含むasm_tuto1ドキュメントに、すべてのサブオブジェクトとともに表示されます。

軸受1のインサート

  1. メニュ > Assembly > Insert Partから、「bearing#Bearing」を選択
  2. 名前をbearing_1に変更し、OKをクリック
  3. これで 軸受パーツへのリンクが挿入されます。
  4. 挿入した部品を配置ダイアログを表示
    1. 左側のパネルでLCSを選択
    2. ドロップダウンのコンボボックスで、アタッチする部品を選択
    3. 右のパネルで親のLCSを選択し、LCS_0を選択 これで軸受が配置されますが、向きが変です。これは通常のことで、LCSのマッピングの際に向きが異なるためです。

ただ、これは簡単に修正できます。

  1. 軸受が正しい位置になるまで、RotX、RotY、RotZをクリックし、OKをクリック

【注意】軸の色を変えると便利なことが分かると思います

軸受2のインサート

  1. メニュ > Assembly > Insert Partから、「bearing#Bearing」を選択
  2. 名前をbearing_2に変更し、OKをクリック
  3. リンクの配置ダイアログを表示
    1. 左側のパネルで、部品LCSを選択し、LCS_1を選択
    2. コンボボックスで、取付部品を選択し、bearing_1部品を選択
    3. 右側のパネルで「Select LCS in Parent」から「LCS_2」を選択 【注意】LCSの名前が変更された場合、このように表示されます。
  4. 以上で向きが正しくなり、OKをクリック

軸受3のインサート

今回は時間を節約します。

  1. モデルツリーで、以前挿入したbearing_1またはbearing_2を選択し、メニュ > Assembly > Insert Partをクリックし、OKをクリック
  2. リンクの配置ダイアログを表示
    1. 左側のパネルでLCSを選択
    2. コンボボックスで、アタッチする部品を選択
    3. 右側のパネルで Parent LCSに LCS_1を選択
    4. 回転X、回転Y、回転Zボタンで、bearing_3を正しい位置に合わせます

軸受3のオフセット

現実には、これは標準的な3軸受のリードスクリューとなり、 向かい合う2つの軸受はスラストも受けられる ダイアゴナルコンタクトベアリングで、 3つ目の単独軸受は深溝ボールベアリングです。 軸を過剰に拘束しないため、3つ目の軸受が軸フランジに触れてはならず、温度膨張の補正、熱膨張を許容するスペースが必要です。

ここで、インスタンスの AttachmentOffset プロパティが登場します。 挿入されたパーツを方向付けるために使用される回転を 保存するだけでなく、挿入されたパーツのターゲットLCSに対する 相対的な移動を適用することもできます。

  1. モデル・ツリーでインスタンス bearing_3 を選択
  2. AttachmentOffsetプロパティのMapModeを開く
  3. Zフィールドに「2mm」と入力
  4. 適用をクリックし、OKをクリック
  5. 保存
  6. 「はい」をクリック

これで最初のAssembly4は完成です!

確認

...しかし、すべてが計画通りに進んだかどうかをチェックしたいよね?

  1. 3つのドキュメントをすべて閉じる
  2. asm_tuto1.fcstdを再度開く。
  3. 「列挙インデックス-1は範囲外です」の警告は無視してください

  4. モデルツリーで、軸パーツのRevolutionにあるSketchを右クリックし、Edit Sketchを選択

  5. 下の画像のようにスケッチを修正
  6. 「閉じる」をクリック
  7. アセンブリが新しく、軸が長くなり、軸受が追従するようになりました
  8. 軸内側のボディを右クリックすると、アクティブなボディをトグルし、PartDesignで編集できます

アセンブリを修正した際、いくつかのパーツが反応しなかった場合、 そのパーツを右クリックし、コンテキストメニューから Recompute objectを選択してください。

【注意】トップレベルのアセンブリModelでもRecomputeオブジェクトを実行できます。

フィードバック

このチュートリアルは役に立ちましたか? チケットを開くか、このチュートリアルに関連する FreeCADフォーラムの専用スレッドで何か言及してください。 あなたの変更案をPRすることもできます。

Assembly 4 workbench - FreeCAD Forum

Happy Assembling!

FreeCAD Assembly4 workbench documentの deepl翻訳 (2/3)

先程のentryの続き。今度は、github.comにあるdocumentを翻訳

参考url

概要

このアセンブリワークベンチは、1つのアセンブリコンテナに 他のFreeCADオブジェクトをアセンブルし、相対的に配置できます。 アセンブリ内の部品は、アセンブリと同じドキュメントにあることも、 外部ドキュメントにあることもできます。 パーツが元のドキュメントで変更されると、アセンブリでも即座に更新されます。

パーツは、パーツ内のフィーチャをマッチングさせることで相対的に配置されます。 具体的には、Assembly4では、これらのフィーチャはLCS (ローカル座標系、データム座標系)と呼ばれる仮想オブジェクトで、 FreeCADの組み込みPart::AttacherとExpressionEngineを使用して取り付けられます。 部品同士の相対的な配置や拘束にジオメトリを使用しないため、 トポロジカルな命名に関する多くの問題を回避できます。

アセンブリ4 アセンブリはFreeCADの標準App::Partコンテナであるため、 互換性があり、App::Partオブジェクトを扱うすべてのFreeCADツールで操作できます。 特に、別のアセンブリに挿入し、任意レベルでネストされたアセンブリを作成することもできます。 また、ソリッド、データムオブジェクト、スケッチを含むこともできます。 ドキュメントには1つのアセンブリしか含めることができません。

※注意: 現在のセッションで開いているオブジェクトのみ、 アセンブリに新規挿入できます。 以前に挿入されたオブジェクトのドキュメントはバックグラウンドで開かれますので、 手動で開く必要はありません。

※注意:挿入できるのは、ドキュメントのルートにあるPartとBodyコンテナのみです。 コンテナ内にネストされたオブジェクトは、Assembly4で直接使用することはできません。

※注意:リンクされたパートと同じドキュメント内にあり、 App::Partコンテナの外側にあるオブジェクトは挿入されません。

※重要な注意:version 0.11.5には隠れた厄介なバグがあり、 それによって作成されたパーツも破損していました。 残念ながら、これらのパーツを自動的に修正することはできません。 影響を受けるのはv0.11.5で作成されたパーツのみで、v0.11.5で使用されたパーツは影響を受けません。

この問題を回避するには、App::Partコンテナで影響を受けるパートをラップします。 ローカル座標系をコンテナPartにコピーします。

インストール

アドオン マネージャ (推奨)

アセンブリ4はFreeCADアドオンマネージャから入手できます。 (メニュのツール > アドオンマネージャ) アドオンリポジトリではAssembly4です。

重要:アセンブリ4はFreeCAD v0.19以上が必要です。 Assembly4はFreeCAD v0.18以前とは互換性がありません。

手動インストール

FreeCADのローカルワークベンチディレクトリへ手動インストールも可能です。 ユーザ手順書もご覧ください。

https://github.com/Zolko-123/FreeCAD_Assembly4/blob/master/INSTRUCTIONS.md:tite

Getting Started

Assembly4はFreeCADの組み込みのPart::Attacherを多用しています。

Part::Attacherのドキュメントは、次のurlにあります。 https://wiki.freecadweb.org/Part_EditAttachment

ワークベンチを最大限に活用するために、この機能に精通しておくことをお勧めします。

また、

の更なる情報や、ワークベンチの特徴を試す例も

https://github.com/Zolko-123/FreeCAD_Examples

にあります。

オンラインチュートリアルもあります:

ディスカッション

FreeCADフォーラム専用スレッドで、フィードバックを提供したり、 開発者と連絡を取ってください。

https://forum.freecadweb.org/viewtopic.php?f=20&t=34806

アドオン リポジトリ

https://github.com/Zolko-123/FreeCAD_Assembly4

リリースノート

https://github.com/Zolko-123/FreeCAD_Assembly4/blob/master/CHANGELOG.md

ライセンス

LGPLv2.1

FreeCAD Assembly 4 workbench documentの deepl翻訳

先日のa2plusのdocumentを翻訳し、使用してみましたが、 a2plusでは角柱の中心線を基準としたアセンブルができないようです。

なので、今回、Assembly4のdocumentを翻訳。

参考url

はじめに

Assembly4は、1つのファイルまたは複数ドキュメントにある異なるボディの アセンブルの為に使用される外部ワークベンチです。 これは、Assembly3の新機能(App Linkオブジェクトや新しい式エンジンなど)を利用するため、 v0.19の開発サイクルで作成されました。

真の制約ソルバーは必要なく、 「ボディに付属する異なるローカル座標系間の関係確立にはエクスプレッション・エンジンで十分」 という考えで開発されました。 そのため、プロトタイプ名は「Assembly without solver(ソルバーなしのアセンブリ)」 つまりAWSとなりました。

インストール

Assembly4はアドオンマネージャーからインストールできます。

互換性

Assembly4はAssembly3で作られた新しいツール、特にApp Linkオブジェクトと 改良されたエクスプレッションエンジンから開発されました。

Assembly4はA2plusとAssembly3にインスパイアされたものですが、互換性はありません。 これら2つのワークベンチで作られた古いモデルをお持ちの場合、 それらのワークベンチを使ってモデルを開くようにしてください。

リンク

チュートリアル

FreeCAD A2PLUSのPlane on Plane拘束におけるoffset

2つの面を選択した状態で 「PlainCoincident制約」ボタンのクリックにより 表示されるダイアログでオフセット量を指定できますが、 FreeCADの再描画機能の影響でしょうか、 画面上ではオフセットされていることが分かりづらい印象

一度、Plane on Plane制約を設定した後でも、 以下のように「制約編集」ボタンからオフセット量を変更できます。

FreeCAD + python による 部品形状の同一性判定

https://wiki.freecad.org/TopoShape_API

上記にあるfreecadのdocumentによれば、 部品形状の同一性判定には、isSame()、isEqual()、isPartner()の メソッドがあるようですが、 私の環境?ではなぜか False ばかりになってしまいます。

なので、以下のように自作

#!/usr/bin/python
# -*- coding: utf-8 -*-
import FreeCAD

tolerance = 0.0005 # 許容差

def main():
    doc  = FreeCAD.ActiveDocument
    objs = doc.findObjects('Part::FeaturePython')
    chk_result = is_same_shape(objs[0], objs[1] )
    print( "is_same_shape()=",chk_result )

def is_same_shape(obj_1,obj_2):
    # 元のobjectを壊さない様、copy
    shp_1 = obj_1.Shape.copy()
    shp_2 = obj_2.Shape.copy()
     
    # 体積と表面積を比較
    for (val_1,val_2) in [(shp_1.Volume,shp_2.Volume),
                          (shp_1.Area,  shp_2.Area  )]:
         if abs(val_1 - val_2) > tolerance:
              return False
         
    # boundary boxの中心を原点へ移動
    move_to_origin(shp_1)
    move_to_origin(shp_2)

    # 同じ向きに回転
    rot_same_dir(shp_1, shp_2)

    # 互いをboolean減算し、差がなければ、同一形状と判定
    ret_obj = shp_1.cut(shp_2 )
    if ret_obj.Volume < tolerance:
         return True
    return False

def rot_same_dir(shp_1, shp_2):

    x_1 = shp_1.CenterOfMass.x
    y_1 = shp_1.CenterOfMass.y
    z_1 = shp_1.CenterOfMass.z
    x_2 = shp_2.CenterOfMass.x
    y_2 = shp_2.CenterOfMass.y
    z_2 = shp_2.CenterOfMass.z
    # 回転角算出。が、判定式は怪しい。TODO
    pitch = 0
    if abs(z_1 - z_2) < tolerance:
        pitch = 0
    elif abs(z_1 + z_2) < tolerance:
        pitch = 180
    elif abs(z_1 + x_2) < tolerance:
        pitch = 90
    elif abs(z_1 - x_2) < tolerance:
        pitch = -90
    yaw = 0
    if abs(x_1 - x_2) < tolerance:
        yaw = 0
    elif abs(x_1 + x_2) < tolerance:
        yaw = 180
    elif abs(x_1 + y_2) < tolerance:
        yaw = 180
    elif abs(x_1 - y_2) < tolerance:
        yaw = 180

    # https://blog.freecad.org/2023/01/16/the-rotation-api-in-freecad/
    shp_2.Placement = App.Placement(shp_2.Placement.Base,
                                    App.Rotation(yaw, pitch, 0),
                                    shp_2.Placement.Base.negative())

def move_to_origin(shp):
    shp.Placement = App.Placement(App.Vector(0,0,0),
                                  App.Rotation(App.Vector(1,0,0),0))
    shp.Placement = App.Placement(shp.BoundBox.Center.negative(),
                                  App.Rotation(App.Vector(1,0,0),0))
    return shp

if __name__ == '__main__':
    main()

↑こう書くと、以下のようにA2PLUSでアセンブルしたパーツに対し、True が返ります

FreeCAD Documentation - A2plus Workbench の deepl和訳

FreeCADでのパーツ組立(アセンブリ)には A2plus や Assembly4 のアドオンがあります。

インターネットで検索すると、 座標指定で組み立てる Assembly4 の情報の方が多いようですが、 A2plusの方が初心者には操作が簡単なようですので、今回はA2plus。

しかし、私にも理解できるレベルのA2plusに関する情報がなく 公式?の A2plus Workbench - FreeCAD Documentation も 日本語の情報はありません。

なので、deeplの助けを借り、公式ドキュメントである A2plus Workbench - FreeCAD Documentation を以下に和訳してみました。

目次

参考url

wiki.freecad.org

はじめに

A2plusは、FreeCADでさまざまなパーツを組み立てるための外部ワークベンチです。

このドキュメントは、A2plusバージョン0.4.56以降について説明しています。

インストール

A2plusワークベンチはFreeCADのアドオンです。 メニューにあるツール → Addon managerからアドオン・マネージャーで 簡単にインストールできます。 A2plusは活発に開発されており、頻繁に新機能が追加されます。 そのため、アドオン・マネージャーを使用し、定期的に更新する必要があります。 A2plusのコードはGitHubで管理・開発されていますので、 FreeCADのModディレクトリにコピーし手動インストールもできます。

スタート

まず、FreeCADのA2plusツールバーに切り替ます。 アセンブリ作成は最初にFreeCADで新規ファイルを作成し、保存する必要があります。 この際、アセンブリしたい部品と同じフォルダへの保存をお勧めします。

ツールバー ボタンまたは ボタンで 部品をアセンブリに追加できます。 ボタンは、 選択したファイル内のすべてのボディを1つの部品として追加します。 ボタンは、ファイルからどのパーツをインポートするかを選択できます。 こうすることで、例えばスケッチだけをインポートして、 そのスケッチを使ってパーツの位置を決定し、さらにパーツを組み立てることができます。

最初に追加されるパーツは、デフォルトで固定位置になります。 (後からパーツプロパティDatafixed Positionで変更もできます)。

既にアセンブリ内にあるパーツは、ツールバーボタン で複製できます。

アセンブリ内のパーツ編集はモデルツリーでパーツを選択し、 ツールバーボタン でできます。 この操作により、FreeCADの新しいタブで部品が開かれるか、 ファイルがすでに開かれている場合はそのタブに切り替わります。

アセンブリ内で変更された部品の更新にはツールバーボタン をクリックします。 ツールバーボタン は部品をインポートしますが、サブアセンブリ再帰的にインポートします。 FreeCADのツリービューで1つまたはいくつかの部品を選択すると、 A2plusは選択された部品のみを更新するように要求します。

インポートされた部品は外部依存を保持し、編集することができます。 しかし、ネジのように明確に定義された部品の場合、形状を編集できない方が便利です。 これは、選択した部品を元の部品の静的コピーに変換するツールバーボタン で可能です。

アセンブリを保存し、その後閉じるには、ツールバーボタン を使用します。

ツールバーボタン で、複数エッジや面などの選択方法を切り替えできます。 (シングルクリック選択、または、Ctrlキー+クリック選択)

組み立て

パーツの組み立ては、パーツ間に制約を追加することで行われます。 A2plusは、制約を加えると、可能であればその制約に従ってパーツを移動させます。

部品間に拘束を作成するには、 Ctrlキーを押しながら、2つの部品の辺または面をそれぞれ選択します。 次に、希望する拘束のツールバーボタンをクリックします。 Constraintsセクションで説明するダイアログがポップアップします。 制約は、影響を受ける部品に接続されたモデルツリーに追加されます。

部品間の複雑な制約では、A2plusは制約を解決できないかもしれません。 そのような場合の解決策については、「トラブルシューティング」を参照してください。

ラッキング

パーツの数が増えれば増えるほど、パーツを把握することが重要になります。 そこでA2plusでは、パーツを移動したり確認したりするためのツールを用意しています。

アセンブリ内でパーツを移動するには、モデル・ツリーでパーツを選択し、 ツールバー ボタンを使用します。 部品を好きな場所に配置したら、マウスを左クリックします。 移動した部品にすでに制約がある場合、ツールバーボタン を押すと、 アセンブリのすべての制約を解決するトリガーになるので、それに従って配置されます。

〇制約を表示するには、モデル・ツリーでコンストレイントを選択し、 ツールバー ボタンを使用します。 これにより、アセンブリ全体が透明になり、 コンストレイントを介して接続されている2つのオブジェクトがハイライトされます。 通常の表示に戻るには、アセンブリを左クリックします。

アセンブリの特定のパーツだけを表示するには、モデル・ツリーでそれらのパーツを選択し、 ツールバー ボタンを使います。 また、モデル・ツリーで特定のパーツを選択し、Spaceキーを押して表示/非表示を切り替えることもできます。

アセンブリ全体の透明度表示を切り替えるには、ツールバーのボタン

〇すべての部品は、FreeCADの通常の編集を使用して透明にすることができます。 しかし、FreeCADのバグにより、 アセンブリを再度開いたときに部品の透明度設定が失われることがあります。 回避策として、ツールバーボタン を使用して透明度設定を復元することができます。

制約

制約を作成する際、制約ツールバーボタンを押すと、次のダイアログが表示されます。

特定の制約では、制約の方向を変更できます。

Solveボタンで、 新しい制約がA2plusで解けるかを事前チェックできます。 解けない場合、「トラブルシューティング」をご覧ください。

制約は、可視性を変更することで無効にできます。 これは、ツリービューで制約を選択し、Spaceを押すことによって行われます。 これにより、DataSuppressedプロパティが切り替わり、 無効にされた制約は、アセンブリが解かれる際に考慮されません。

A2plusには以下のような制約があります。

Point on Point

各パーツの頂点(点)、円、球のいずれかを選択してください。 この際、円または球が選択された場合、その中心点が拘束に使用されます。 次にツールバー ボタンで、頂点を一致させるpointIdentity拘束を追加できます。

Point on Line

一方のパーツの頂点(点)、円形エッジ(中心点選択)、球面(中心点選択)を選択し、 もう一方のパーツのエッジを選択します。 次にツールバー ボタンで、pointOnLine制約を追加できまう。これで頂点を辺に置けます。

Point on Plane

一方のパーツの頂点(点)、円形エッジ(中心点選択)、球面(中心点選択)を選択し、 もう一方のパーツの平面を選択します。 次にツールバー ボタンで、pointOnPlane制約を追加できます。 拘束ダイアログでは、点と平面間のオフセット指定や、 オフセットの平面の両側での反転もできます。 オフセット=0の場合、頂点を平面に置きます。

Sphere on Sphere

両方のパーツの球面か頂点(点)を選択し、 ツールバー ボタンでsphereCenterIdent制約を追加できます。 これで球の中心、球と頂点の中心、または頂点を一致できます。

Circular Edge on Circular Edge

両方のパーツの円形エッジを選択し、ツールバー ボタンで、circularEdge制約を追加できます。 拘束ダイアログでは、エッジ間のオフセットや、 オフセットの反転、拘束方向、パーツ回転ロックを指定できます。 オフセット=0の場合、辺を同じ平面の同心に配置します。

Axis Coincident

両方のパーツの円筒面または直線エッジのいずれかを選択し、 ツールバー ボタンでaxisCoincident制約を追加できます。 拘束ダイアログでは、軸の方向や、部品の回転ロックを指定できます。 この拘束では軸または線を一致させます。

Axis Parallel

両方のパーツの円筒面または直線エッジのいずれかを選択し、 ツールバー ボタンで、axisParallel制約を追加できます。 拘束ダイアログでは軸の方向を指定できます。 この拘束は軸または線を平行にします。

Axis on Plane parallel

一方のパーツで円筒面または直線エッジを選択し、もう一方のパーツで平面を選択します。 その後、ツールバー ボタンで、axisPlaneParallel制約を追加できます。 この拘束は、軸または線を平面に平行にします。

Axis on Plane normal

一方のパーツの円筒面または直線エッジを選択し、もう一方のパーツの平面を選択します。 次にツールバー ボタンで、axisPlaneNormal制約を追加できます。 この拘束は、軸または線を平面の法線にします。

Axis on Plane angle

一方のパーツの円筒面または直線エッジを選択し、もう一方のパーツの平面を選択します。 次にツールバー ボタンで、axisPlaneAngle拘束を追加できます。 この拘束は最初に軸を平面に平行にし、 その後、現れる拘束設定ダイアログで軸の角度を調整できます。

Plane Parallel

両方のパーツの平面を選択し、ツールバー ボタンで、planesParallel制約を追加できます。 制約ダイアログでは、制約の方向を指定できます。 この拘束により平面を平行にできます。

Plane on Plane

両方のパーツの平面を選択し、ツールバー ボタンで、planeCoincident制約を追加できます。 拘束ダイアログでは、拘束方向と平面間オフセットを指定できます。 このオフセットは反転することもできますし、オフセット=0の場合、平面を一致できます。

Plane Angular

両方のパーツの平面を選択し、ツールバー ボタンで、angledPlanes制約を追加できます。 制約ダイアログでは、平面の間の角度を指定できます。 この拘束は、平面を平行にし、更に角度の指定も可能です。

Coincidence at Center of Mass

両方のパーツの閉じた辺か平面を選択し、 ツールバー ボタンでcenterOfMass制約を追加できます。 拘束ダイアログでは、辺または平面間のオフセットや、 オフセットの反転、拘束の方向、パーツ回転のロックを指定できます。 オフセット=0の場合、拘束は辺または平面を同じ平面に配置します。

サブアセンブリ

アセンブリは他のアセンブリを含むことができます。 ツールバーボタン から、アセンブリを含む「*.FCStd」ファイルを選択することで、 パーツと同様に追加されます。 このサブアセンブリは、ツールバーボタン で部品のように編集もできます。 上位のアセンブリで変更があった際、ツールバー・ボタン でサブアセンブリ再帰的に更新するようにしてください。

制約処理

選択範囲に可能な制約は、対応するボタンを有効にすることで、 ツールバーと制約ツールダイアログに表示されます。 制約ツールダイアログは、ツールバーボタン から開きます。 このダイアログは、アセンブリにいくつかの制約を素早く追加するために 開いておくことを意図しています。

既存の制約を編集するには、モデルツリーで制約を選択し、 ダブルクリックするか、ツールバーボタン を使用します。 これにより、制約プロパティダイアログが開きます。

モデルツリーで制約を選択し、 ツリー要素のプロパティ DataSuppressed を変更することで、 制約を一時的に抑制することができます。

制約を削除するには、モデル・ツリーで制約を選択して Del キーを押すか、 モデル・ツリーで制約のあるパーツを選択してツールバー ボタンを使用します。

すべての制約は、ツールバーボタン でいつでも解決できます。 ツールバーボタン がオンの場合、解決は、制約を編集するたびに自動的に行われます。

ツールバーボタン は、最も最近追加された制約に影響します。 それは、制約の方向を反転させます。

この ツールで、既存の制約を表示したり、検査したりすることができます。 クリックすると、ダイアログがポップアップします。 そして、ツリーで部品を選択して、この部品のすべての制約を得るために、 「Import from part」ボタンをクリックするか、ツリーで1つ以上の制約を選択して、 「Import from Tree」ボタンをクリックします。 その結果、制約に関するすべての情報が得られます。 Suppress列をクリックすると、1つの制約を抑制することができます。 より多くの機能については、他のダイアログ・ボタンのツールチップに従ってください。

パーツリスト

アセンブリのパーツリストを作成するには、 アセンブリのさまざまなパーツがA2plusで読み取れるパーツ情報を取得する必要があります。 これは、ツールバーボタン を使用して部品を編集することによって行われます。 開いたパーツでツールバーボタン を押すと、#PARTINFO#という名前のスプレッドシートが作成されます。

スプレッドシートの構成は以下の通りです。

グレーのフィールドに対し、最終的なパーツリストに必要な情報を入力してください。

アセンブリまたはサブアセンブリツールバーボタン を使用します。 すべてのサブアセンブリ再帰的に反復するかどうか尋ねられます。 Yesをクリックしてください。 これにより、#PARTSLIST#という名前の新しいスプレッドシートが作成されます。

PARTSLIST#という名前の新しいスプレッドシートが作成され、

PARTSINFO#スプレッドシートから取得した部品の情報がこのようなリストで表示されます:

位置(POS)は、モデルツリー内のパーツの外観に応じて自動的に設定されます。 最上位のパーツは POS 1 になります。

数量(QTY)はアセンブリから自動的に計算されます。 部品がアセンブリ内に2つある場合は、QTY 2になります。

部品情報を更新した場合、ツールバーボタン をもう一度押すと、 部品リストを更新することができます。

サブアセンブリの場合、ツールバーボタン を使用して 情報スプレッドシートを作成することもできます。 メイン・アセンブリのパーツ・リストを作成または更新する際、 すべてのサブ・アセンブリ再帰的に反復するかどうかの質問でNoをクリックすると、 この情報が使用されます。 この場合、異なるパーツはパーツリストには表示されず、サブアセンブリのみに表示されます。

特別な機能

組立構造

ツールバーボタン は、アセンブリの構造を持つ HTML ファイルを作成します。 次のような構造のファイルがデフォルトでアセンブリファイルのフォルダに作成されます。

自由度

このボタン は、アセンブリのすべてのパーツにその自由度を表示します。 さらに、すべての部品とその依存関係のリストを出力します。 リストはFreeCADのウィジェットReportビューに出力されます。 このウィジェットが表示されていない場合は、 FreeCADのツールバーエリアの何もないところで右クリックし、 表示されるコンテキストメニューから選択するか、 表示→パネル→レポートビューメニューで表示できます。

自由度ラベルは ボタンをもう一度クリックすることで削除できます。

パーツラベル

このボタン は、3Dビューのアセンブリのすべてのパーツにその名前をラベル付けします。 再度ボタン をクリックすると、パーツラベルを削除できます。

アセンブリ全体の形状

アセンブリ全体を1つの結合された形状にする必要がある場合があります。 この結合形状は、例えばメッシュワークベンチでの3Dプリントや TechDrawワークベンチでの図面に使用できます。 この結合形状は、ツールバー で作成できますが、デフォルトで形状は表示されません。 アセンブリに変更があった場合、同じボタンで形状を更新してください。

絶対パス相対パスに変換

メニューバーの「A2plus」→「Misc」→ 絶対パス相対パスへ変換」で、 インポートした部品の絶対パス相対パスに変換できます。

設定

a2plusの環境設定は、 FreeCADのメニュー編集→環境設定からA2plusのセクションにアクセスできます。 以下のオプションを設定できます。

デフォルトの解法

Use solving of partial systems

ソルバーは、プロパティDatafixed Positionがtrueに設定されたパートと、 それに拘束されたパートから始まります。他のすべてのパーツは計算されない。 解が見つかれば、次の拘束されたパートが計算に追加され、以下同様である。

「マグネット」ソルバーで、全パーツを一度に解く

ソルバーは、プロパティDatafixed Positionがtrueに設定されているパーツに対して、 すべてのパーツを一度に移動させようとする。 ほとんどの場合、解の計算に時間がかかることに注意してください。

強制固定位置

これは、アセンブリ内のすべてのパーツに対して、 プロパティDatafixed Positionをtrueに設定します。 すべてのパーツは常に作成された位置に固定されるため、実際には計算は行われません。

ソルバーのデフォルト動作

制約プロパティが変更された場合に自動的に解決する

ソルバーが自動的に起動します。 ツールバーボタン のオンと同じです。

インポートした部品を更新する際の動作

インポートした部品を更新する前に再計算する

サブアセンブリを含むアセンブリのすべての部品は、 スプレッドシートからの値を使用して再構築するためにFreeCADで開かれます。 この機能は完全にパラメトリックに構築するように設計されています。

注意:この機能は非常に実験的で、重要プロジェクトにはお勧めできません。

既知の問題

〇部品のトポロジー名参照が間違っていて、アセンブリが破壊されることがある。

〇参照部品ファイルが閉じられている状態で編集すると、 マスタースプレッドシートが壊れることがある。 これは FreeCAD をクラッシュさせる可能性があります。

インポートされた部品の再帰的更新を有効にする

すべてのサブアセンブリ再帰的に開いて更新する。

実験的なトポロジカル・ネーミングを使用

パーツをアセンブリにインポートする際、 アルゴリズムはインポートされた形状の各サブエレメントのトポロジカル名を生成します。 トポロジカル名はDatamux Infoに書き込まれます。 インポートされた部品を更新する必要がある場合、 これらのトポロジカル名は、制約のサブ要素を更新するために使用されます。 そのため、アセンブリはFreeCADの不安定なサブ要素番号に対してより堅牢になります。

注意:

これにより、ファイルサイズが大きくなり、部品のインポート時の計算時間が長くなります。 トポロジカルネーミングを使用する場合は、アセンブリを作成する前に有効にする必要があります。

パーツやサブアセンブリから面ごとの透明性を継承する

インポートしたパーツの色と透明度の設定を使用します。

注:この機能は非常に実験的なもので、重要なプロジェクトにはお勧めできません。

不可視図形をインポートしない

これにより、見えないデータム/コンストラクションシェイプが非表示になります。

注意:上位のサブアセンブリや他のサブアセンブリのデータム/コンストラクション形状に 制約を接続してはいけません。そうしないと、アセンブリが壊れてしまいます。

部品とサブアセンブリのインポートには、ソリッドユニオンを使用します。

インポートされたすべてのパーツは、直接ユニオンとしてまとめられます。 この機能は、FEMシミュレーションや3Dプリントで1つのソリッドしか使用できない場合に便利です。 後でアセンブリ全体の形状を作成することもできます。

ユーザーインターフェースの設定

ツールバーに制約を表示する

このオプションを使用しない場合、ツールバーのスペースを節約するために、 さまざまな制約のツールバーボタンは表示されません。 新しい制約は、制約ツールダイアログを使って設定できます。

OSのネイティブファイルマネージャーを使用する

このオプションを使用すると、アセンブリのファイルを選択するときに、 OSのファイルダイアログが表示されます。

ファイルの保管

インポートされた部品に相対パスを使用する

パートファイルへの相対ファイルパスを使用します。

インポート部品に絶対パスを使用する

パートファイルへの絶対ファイルパスを使用します。

すべてのファイルはこのプロジェクトフォルダにある

すべてのプロジェクトファイルは指定されたフォルダになければなりません。 このフォルダのサブフォルダにあっても問題ありません。

注意:フォルダ内にファイルが複数存在することは許されません(異なるサブフォルダなど)。

このオプションは、プロジェクトフォルダーをコピーするだけでよいので、 異なるマシンで作業する場合に便利です。

トラブルシューティング

A2plusが設定した制約を解くことができないという問題に直面すると思います。 これを解消するために、さまざまな戦略があります:

コンフリクトファインダーツールの使用

このツールは、競合する制約を見つけるまで、次々に制約を解決しようとするので、 複数の制約がある場合、これが最も安全な方法です。 そして、特定された制約を解決するために、他の戦略をとることができます。 このツールは、ツールバーボタンです。

制約の方向のチェック

制約が一貫して定義されているように見えても、解決できないことがあります。

例えば、2つの平面にplanesParallel制約が設定されているとします。 同じ平面にplaneCoincident制約を設定したい場合、A2plusはこれを解くことができません。 その場合、planesParallelとplanesCoincidentの制約方向は異なります。 これを解決するには、両方の制約に同じ方向を使用します。

A2plusは、ツールバーボタン を使用して、 アセンブリのすべての制約の正しい方向を自動的にチェックします。

制約の削除

解けない制約のほとんどのケースは、新しい制約を追加するときに直接発生します。 解決策は、最後に追加した制約を削除することで、A2plusもこれを提案します。

例えば、FreeCADで部品を編集して、制約に接続された面や辺がなくなった場合などです。 その場合、変更された部品に接続されている制約を一度に1つ削除する必要があります。 削除するたびにツールバーのボタン を使って、解ける状態になったかどうかを確認してください。

解けるアセンブリができたら、必要な制約を段階的に追加していきます。

パーツの移動

場合によっては、ソルバーが制約を解くために必要なのは、より良い開始値だけです。 例えば、車軸部品と車輪部品がある場合です。 axisCoincident制約を追加し、ソルバーが失敗したという情報は得られませんが、 部品はそれに応じて移動されず、 FreeCADのレポートビューウィジェットで「REACHED POS-ACCURACY :0.0」と表示されます。 これを解決するには、制約によって得たい位置に部品を近づけることです。

注意: 制約の少なくとも1つの部品は、 プロパティDatafixed Positionがfalseに設定されていることを確認してください。

チッププロパティの設定

A2plusアセンブリにインポートした後、 部品の一部のフィーチャーを見逃した場合は、DataTipプロパティを確認してください。

A2plusは、先端フィーチャーまでのすべてのフィーチャーを持つ部品本体をインポートします。 これは、先端を特定のフィーチャーに設定することは、 先端より後ろのすべてのフィーチャーが最終的な部品に表示されないことを意味するため、 理にかなっています。 したがって、A2plusで部品のフィーチャーを見逃した場合、 ツールバーのボタン で部品を開き、ボディを選択してそのプロパティDataTipを見てください。 ヒントが必要なフィーチャーにない場合は、 ヒントがあるべきフィーチャーを右クリックし、Set tip を選択します。 最後にパーツを保存し、ツールバーボタン を使ってアセンブリをリロードします。

アセンブリツリーの修理

いくつかの制約が解決できない明確な理由がわからない場合は、 ツールバーの ボタン を使ってみてください。 これは、すべての制約を解決し、異なるパーツの下に再びグループ化します。

古いA2plusアセンブリの移行

2019年3月以前のA2plusで作成されたアセンブリは、 インポートされたパーツのアイコンが正しく表示されず、 プロパティが旧式になっています。 これらのアセンブリは、メニュー A2plus → Misc → Migrate proxies of imported parts を使用して、A2plus バージョン 0.4.35 以降に移行できます。 この作業を行った後、アセンブリファイルを保存し、再度開く必要があります。

アクセント記号を避ける

windowsでは、この戦略は必要ありません。

オペレーティング・システムによっては、 部品やアセンブリのファイル名やファイル・パスにアクセント記号付きの文字が含まれていると、 問題が発生することがあります。 そのため、そのような文字や特殊文字全般は避けてください。

位置の固定

A2plus 0.3.11以降で作成されたアセンブリでは、固定位置が見つからない場合に 警告が表示されるようになったため、この方法は必要なくなりました。

2つのパーツ間に拘束を設定したときに、 どのパーツにも Datafixed Position プロパティが true に設定されていないか、 または Datafixed Position が true に設定されているパーツに拘束によって 接続されていない場合、拘束を解くことができません。 制約の両方のパートにDatafixed Positionがtrueに設定されている場合も同様です。

その後、A2plusは失敗したソリューションの情報を出力しますが、 パーツが移動していないことだけが表示され、 FreeCADのレポートビューウィジェットには「REACHED POS-ACCURACY :0.0」と 表示されることがあります。 これは、ソルバーがエラーなしで終了したが、 実際には制約を解けなかったことを意味します。

したがって、アセンブリ内の少なくとも1つの部品がDatafixed Positionを trueに設定していることを確認してください。 そして、固定部品に何らかの形で接続されている部品にのみ 制約を設定することを確認してください。 これらの依存関係を視覚化するには、アセンブリ構造セクションを参照してください。

回転部品

A2plus 0.4.0以降で作成されたアセンブリでは、 ソルバーが十分な開始角度を得るために、 A2plusがバックグラウンドでパーツを自動的に少し回転させるようになったため、 この戦略は必要なくなりました。

選択された2つの平面の角度が0°または180°の場合、 anglePlanes制約でソルバーが失敗することがありました。 (部品はそれに応じて移動されず、FreeCADのレポートビューウィジェットで "REACHED POS-ACCURACY :0.0 "と表示されます)。 これを解決するには、FreeCADの変形機能(モデルツリーで部品を右クリックし、 コンテキストメニューの変形を選択)を使って1つの部品を数度回転させます。

注意: 制約の少なくとも1つの部品は、 プロパティDatafixed Positionがfalseに設定されていることを確認してください。

アニメーション

A2plusでは、ドラッグ操作とPythonスクリプトによるアニメーションが可能です。

ドラッグ操作

ドラッグ・アニメーションは、アセンブリの一部をドラッグすることで発動する インタラクティブなものです。

このようなアニメーションを作成するには

1 移動または回転をアニメーションさせるパーツを完全に拘束する。

2 ツールバーボタン をクリックすると、ドラッグモードが有効になります。

3 アセンブリの目的のパーツをクリックします。

4 これでマウスを動かすことができ、部品は定義された制約の範囲内でマウスの動きに追従します。

5 ドラッグモードの終了には、アセンブリ内で左クリックか、ESCキーを押してください。

ドラッグアニメーションを試すためのアセンブリの例を示します。

スクリプト

ドラッグ・モードは素晴らしいインタラクティブなアニメーションを提供しますが、 スクリーンキャストやビデオには十分な精度が得られないことがあります。 スクリプトアニメーションの利点は、定義された方法で動きや回転を アニメーション化できることです。 例えば、パーツを前後に10°ずつ正確に回転させることができます。 以下の例では、部品を回転させるアセンブリを使用しています。 これをドラッグモードでアニメートしようとすると、例えばプレゼンテーションで 上司に見せるような前後方向の回転を得るのがいかに難しいかがわかるでしょう。 しかし、インタラクティブなサンプルスクリプトを使えば、これは簡単な作業です。

スクリプト・アニメーションは通常このように動作します:

1 アセンブリは完全に拘束されています。

2 スクリプトは、たとえば部品の位置や回転角度などのパラメータを変更します。

3 パラメータの変更後、アセンブリの制約が解決されます。

4 ステップ2.と3.が繰り返され、アニメーションが生成されます。

配置パラメータの代わりに、2つの平面間の距離を変更することも可能です。

簡単なスクリプトの例

アニメーションをスクリプト化する最も簡単な方法は、 定義された動きに従う非インタラクティブなアニメーションです。

以下はその例です:

まず、アセンブリファイルをダウンロード: A2p_animated-example.FCStd

また、Pythonスクリプトをダウンロード: A2p_animation-example-script.py

スクリプト内で「#」で始まる行は、スクリプトの行が何をするかを説明しています:

アニメーションを実行するためにスクリプトを使用するには、次のことが必要です。

1 FreeCAD でアセンブリファイルを開く。

2 FreeCAD でスクリプトファイルを開く。

3 ツールバーのボタンをクリックしてスクリプト(マクロともいう)を実行する。

4 回転を見るためにアセンブリのタブに変更する。

練習のために、スクリプトの何かを変更してから実行する。例えば、ステップを5に増やします。

これがアニメーション結果の例です:

対話型スクリプトの例

最初のスクリプト例では、 ユーザーからのフィードバックなしでアニメーションを作成する方法を示しました。 ほとんどのアプリケーションでは、アニメーションと対話する必要があります。 例えば、この例で興味深いのは、 駆動ピンがホイールの中央の溝をどのように横切るかを見ることです。 より詳しく見るために、この詳細を同僚や上司に見せるかもしれません。 そのため、インタラクティブなソリューションが必要です。

これには、スライダー付きのカスタムアニメーションダイアログを使用します。 スライダーを動かすことによって回転角度を設定することができ、 興味深い位置で前後に回転することができます。

同じアセンブリファイルを使います: A2p_animated-example.FCStd

またこのPythonスクリプトも使います: A2p_animation-example-script.py。

これは、インタラクティブなアニメーションダイアログを得るのスクリプトです:

スクリプトで定義されたダイアログは次のようになります:

スクリプトコマンド

スクリプトの構文をよりよく理解するために、コマンドの情報をいくつか紹介します:

starWheel.Placement.Rotation.Angle = math.radians(angle)

ここでは、以前にstarWheelとして取得したパーツの配置プロパティ Rotation.Angleを変更します。 このプロパティは角度をラジアンとして取得します。 ライブラリ math の関数 radians() は、角度を度からラジアンに変換します。

Rotation.Angleプロパティは、パーツの現在の配置軸(この例ではX軸)を使用します。 部品をZ軸の周りに回転させるには、(回転コマンドを呼び出す前に) コマンドを使用して回転軸を設定します:

starWheel.Placement.Rotation.Axis = FreeCAD.Vector(0,0,1)

回転の代わりに、パーツを動かすこともできます。 例えば、車輪のY方向の配置を変更するには、次のようにコマンドを実行します:

starWheel.Placement.Base.y = PositionShift

この場合、可変角度を定義するのではなく、 ループの実行ごとに変更するPositionShiftを定義することになります。

パーツ配置の設定にはさまざまな方法があります。 いくつかはここで文書化されていますが、残念ながら、 可能なすべての配置コマンドのリストは(まだ)ありません。

a2p_solver.solveConstraints(document, useTransaction=False/True)

これはA2plus固有のコマンドです。 以前にドキュメントとして取得したアセンブリアセンブリ制約を解決します。 useTransactionオプションは、 FreeCADがすべての変更を取り消し/やり直しスタックに保存するかどうかを指定します。 大きなアニメーションの場合、falseに設定するとよいです。