物理的な parts アセンブリを表すモデル要素: 拘束によって、座標 frames に位置するには 2 つの方法があります。 拘束は、Inventor などの拘束ベースの位置をサポートするホストに対してのみ使用できます。フレーム ベースの配置は、すべてのホストに使用できます。このセクションでは、フレーム ベースの配置の背後にある概念と、コンポーネントを配置しやすくする Intent 言語で使用できるツールの一部について説明します。
フレームベースの配置の基本的な概念は、Intent の最初のデータ型である "frame" 座標です。 Frame 実質的にする 3D 座標系の位置および方向 X の 「 ワールド 」、Y、および Z 座標を表す行列を基準に変換されます。 "WorldFrame " は、恒等変換です。WorldFrame の X、Y、Z 座標を使用して Point 実際にそれらの座標の point です。 内部的には、すべての( points および Vectors )はワールド座標で格納されます。 これらの座標は、特定の出力などの[イミディエイト]ウィンドウ内の値、または point [プロパティ]パネルの[リプレゼンテーションで表示できる場合もあります。
Intent の位置と方向の処理の基本パラメータと frames その他(Other) rules が提供する FrameMixin Design です。 FrameMixin にミックスされているサポームベースの配置については、 Design コンポーネントを選択します。 FrameMixin のキーアトリビュートは、 Frame タイプの localFrame であり、ローカル コンポーネントの座標系のトランスフォームはワールドに対して相対的に保持します。 コンポーネントを配置するには、いくつかの代替方法があり、すべて最終的な結果は localFrame の設定になります。
既に FrameMixin にミックスされます。 Designs ほとんどの Intent 物理的なボディ(レポート、BOM など)を表さないものだけがこれを含みません。これは、Intent に含まれる基本的な Design である BasePart にミックスされます。
points vectors または Point() または Vector() 関数を使用して作成されると、これらの関数は自動的に points または vectors [localFrame に相対的に作成します。 これについて単純な例を示します。
Design myRoot : BasePart
Rule p1 As Point = Point(1,2,3)
Child c1 As :myChild
Origin = p1
End Child
End Design
Design myChild : BasePart
Rule p2 As Point = Point(10,0,0)
End Design
points の値をチェックします。
Intent >Root.p1
--> Point_(1.0, 2.0, 3.0, WorldFrame())
Intent >Root.c1.p2
--> Point_(11.0, 2.0, 3.0, WorldFrame())
これらの参照の出力は、Point_()関数の呼び出しです。この関数は、座標が解釈されるのは、 Frame に明示的に必要である以外は、Point() 関数と同じです。 Vectors Vector _ ()は、同様の機能があります。
Point() 関数の呼び出しは、常に myRoot worldFrame である、ルートの localFrame を使用します。 localFrame は恒等変換で、 point p1 ワールド座標として入力されます。 C1 child この point に配置されます。 これは、その localFrame は原点が p<1,2,3> になるように変換されることを意味します。
Point() 関数に child c1 の localFrame を使用し、したがって指定された座標を変換します。 point <10,0,0 > C1 に相対的に、ワールド内の<11,2,3 > は point p を選択します。
ユーザは実際には Intent によって使用される座標を知る必要はありません。 Design myRoot は、ルートでない場合でも同様に機能します。 child C1 にまったく同じ場所で、親を基準にして、親であるとは無関係になります。 作成されるすべての座標は変更されますが、 rules しないでください。 さらに、c1.p2 への参照は修正され、呼び出し元は c1 の位置に注意を払う必要がありません。
さらに、Intent モデル内のすべての Frames を管理します。 この例のように、ルールの作成者は "ローカル" 座標でのみルールを記述する必要があります。Intent のアセンブリ モデリングの動作は、常に評価が正しく実行されることを確認します。上位アセンブリが再配置されると、すべてのサブアセンブリが自動的に更新されます。
基づいて frame 配置を parts 配置の一般的なテクニックは、Intent 言語に組み込まれた幾何代数機能を使用します。 システムはデータ型を認識しているため、これらの型の代数は正しく実行されます。たとえば、システムは Point + Vector と Point が作成されることを認識します。 スカラー量(数値)と同じ方向に生成された Vector Vector と、長さが異なる場合があります。 Point 時間スカラー量は、エラーが発生します。 Point を Point に追加されてもエラーになります。
これらの機能を使用すると、 rule writer 座標として含まれている[無視] Frames できるようになります。 Intent は詳細を管理します。これは、"座標がない" ジオメトリと呼ばれます。
次の Inventor の例では、3 つの球を作成し、それらを積み重ねて単純な雪だるまを形成します。
Design Snowman : Office IvAssemblyDocument
Parameter Rule baseSize As Number = 50
Child base As :IvSphere
radius = baseSize
' you can specify an offset of a point by
' adding a scaled vector to a point
origin = Me.origin + unitY * child.radius
' align the X axis of this sphere with the assembly X axis
xDirection = unitX
' align the Y axis with the negative Z axis of the assembly
yDirection = -unitZ
color = "White"
ignorePosition? = False
grounded? = True ' position the part and ground it
End Child
Child body As :IvSphere
radius = baseSize * 0.75
origin = base.origin + base.unitZ * (child.radius + base.radius)
xDirection = base.unitX
yDirection = base.unitY
color = "White"
ignorePosition? = False
grounded? = True
End Child
Child head As :IvSphere
radius = baseSize * 0.50
origin = body.origin + body.unitZ * (child.radius + body.radius)
xDirection = body.unitX
yDirection = body.unitY
color = "White"
ignorePosition? = False
grounded? = True
End Child
End Design
ignorePosition? パラメータは、Inventor の既定の動作が拘束ベースの配置を使用するため、Inventor でのみ必要です。grounded? パラメータは、Inventor でのみ必要です。
原点、xDirection、yDirection、unitX, unitY、および unitZ rules すべて FrameMixin によって提供されています。
origin = Me.origin + unitY * child.radius
vector Unity、Y 軸は Y 軸に位置合わせ] vector は、1 つの単位()、底面の半径の積を、アセンブリの原点(Me .origin)から開始します。
origin = base.origin + base.unitZ * (child.radius + base.radius)
ボディ上へのヘッドの配置は、基部にボディを配置するのと同様です。
ここまで、FrameMixin の原点のパラメータについて説明してきました。原点を単独で使用すると、変換のみ行われます。その他のパラメータが指定されている場合、完全に全体的な方向を定義できます。全体的な方向を実行する最も簡単な方法は、xDirection と yDirection パラメータを使用します。その名前が示すように、xDirection は Vector パラメータであり、localFrame の X 軸の方向を指定します。 名前からすると少し変ですが、yDirection は実際には Y 軸を指定しません。軸は直交している必要があり、独立したパラメータの制限はないため、システムは平面と Y 軸の全体的な方向の判定に yDirection の値だけを使用します。したがって、xDirection が優先されます。
これらの 3 つのパラメータを使用して、コンポーネントの任意の位置および方向を完全に指定することができます。上記の雪だるまの例ではこれも示しており、xDirection と yDirection を設定しています。球の方向の変更を確認するのが難しいときに、何か他のものをこれに相対的に配置したときの方向を把握することが重要です。