広告
公式ドキュメントの和訳です。
原文:「Basic API Concepts」
FusionのAPI入門
Getting Started with Fusion's API
Fusion APIとこれらの概念を理解することを通して使用することは、APIを遥かに簡単に理解して、使用することができる、いくつかの基本的な概念があります。
オブジェクト
Objects
Fusion APIは、対となるオブジェクトを通して、公開されるオブジェクト指向APIです。これらのオブジェクトの多くには、あなたが、これまでにFusionユーザーとしてなれたものとの1対1の対応があります。例えば、Fusionモデルの押し出しは、APIで、ExtrudeFeatureオブジェクトによって表現されています。ExtrudeFeatureオブジェクトにより提供される機能を通して、あなたは、あなたは、ユーザーインターフェイスを通して行う同じことを行うことができます。例えば、あなたは、新しい押し出しを作成し、タイムライン上で、その名前を取得し、設定し、それを抑制し、それを削除し、あるいは、関連するスケッチを呼び出し、編集することができます。
APIオブジェクトに加えて、それは、あなたが、既になれていることを、Fusion UIで表現します。APIでの作業に固有の機能を提供する「APIのみ」のオブジェクトもあります。例えば、APIを使用して、モデルを照会し、その幾何学的形状の全てを抽出することができます。APIのみの機能のもう一つの例は、新しいコマンドを作成する機能です。そして、Fusionユーザー・インターフェイスに、それらを追加します。
オブジェクト・モデル
Object Model
Fusionユーザー・インターフェイスを使用することとAPIの間の基本的な違いの1つは、特定のオブジェクトが、どのように呼び出されるかです。ユーザー・インターフェイスで、あなたは、ブラウザ、タイムラインとグラフィックウィンドウの中で、視覚的にものを(クリックする)選択します。新しいオブジェクトは、押し出しを作成する「押出し」や新しい直方体を作成する「直方体」のような、専用のコマンドを使用して作成されます。APIで、オブジェクトは、「オブジェクト・モデル」と呼ばれる何を呼び出します。Fusionオブジェクト・モデルは、以下で示されるチャートで表されるオブジェクトの階層構造です。APIで作業するとき、このチャートは役に立つ道具です。あなたは、ここのチャートのプリント可能なpdfバージョンをダウンロードすることができます。
※私が印刷した時点では、A4のポスター印刷で印刷して、9枚になりました。また、APIの更新と一緒に更新されているようです。
以下に示すのは、押し出しを作成するとき使用する、オブジェクト・モデルの一部です。最上位のApplicationオブジェクトは、全てのFusionを表します。Applicationオブジェクトは、直接の子供たちだけでなく、アプリケーションの広範囲のプロパティに、アクセスを提供します。(Documentは、最も重要です)。Documentは、モデリングやCAMデータのような、異なる型のデータを含めることができます。Designオブジェクトは、文書の範囲内のモデリング・データのすべてを示します。Designオブジェクトには、ルート・コンポーネントとして知られている最上位のコンポーネントが、単独で含まれています。デザインの中に含まれるスケッチ、機能、構造ジオメトリー、コンポーネント、その他の全ては、ルート・コンポーネントから呼び出されます。
オブジェクト・モデルでは、オブジェクトの全ては、この親子構造で系統化されています。ほとんどの場合、特定のオブジェクトを取得ための構造が何であるかは、かなり論理的である必要があります。例えば、あなたが、特定のスケッチの線を呼び出したい場合、何が、スケッチの線を所有しているかについて考えます。実体のスケッチのさまざまなデータ型の全ては、スケッチによって所有されており、そして、スケッチは、コンポーネントによって所有されています。多くの場合、同じ構造は、ブラウザ内で表示されます。
一般的なオブジェクトの機能
Common Object Functionality
Fusion内のすべてのオブジェクトは、次に示す関数をサポートします。:
- objectType
オブジェクトの型を示す文字列を返します。
- classType
名前を返す静的関数は、特別なクラスで関連付けられています。オブジェクト参照が、特定のデータ型の場合、これは、確認するために、objectTypeプロパティと組み合わせて使用することができます。
- IsValid
オブジェクト参照がまだ有効である場合、それを示すブーリアンを返します。(すなわち、いくつかの他の動作によって削除や無効にされていません)。
静的関数
Static Functions
すべての関数は、最初に、オブジェクト・モデルを通して、オブジェクトに参照を取得することで、呼び出す必要はありません。一時的な、そして、所有者がいないことを示す、「一時的な」多くのオブジェクトが、あります。それらは、一般的に、特定の種類のデータをAPIに渡すために、使用されます。これらは「静的」関数です。そして、オブジェクトに参照を取得することなく、クラス上で、直接、呼び出すことができます。例えば、関数に、オブジェクトのグループを渡すために使用されるObjectCollectionオブジェクトを作成するために、あなたは、下記のコードを使用することができます。
JavaScript
// ObjectCollectionを新規作成します。
var objColl = adsk.core.ObjectCollection.create();
Python
// ObjectCollectionを新規作成します。
objColl = adsk.core.ObjectCollection.create()
コレクション
Collections
コレクションは、一般的なオブジェクトのセットにアクセスを提供します。例えば、ExtrudeFeaturesコレクション・オブジェクトは、コンポーネント内の押出し機能のすべてへのアクセスを提供します。すべてのコレクションは、カウント・プロパティとアイテム・メソッドをサポートしています。カウント・プロパティは、コレクション内の項目の数を返します。そして、アイテム・メソッドは、コレクション内の特定のオブジェクトを返します。
すべてのコレクションは、入力として、インデックスを取得するアイテム・メソッドをサポートしています。そして、そのインデックスで、オブジェクトを返します。コレクション内の最初の項目は、0のインデックスを持っています。最後の項目は、count-1と等しいインデックスを持っています。また、多くのコレクションは、アイテム・メソッドの他のタイプをサポートしています。最も一般的なのは、itemByNameです。コレクション内の項目が、固有の名前やIDを持っているとき、itemByNameやitemByIdは、その名前やIDを指定することによって、コレクション内の項目を取得するために使用することができます。
また、コレクションは、さまざまな、addメソッドによって、新しいオブジェクトの作成のためのサポートを提供します。例えば、SketchArcsオブジェクトは、スケッチの中で新しい弧を作成することのための、複数のaddメソッド(addByCenterStartSweep、addByThreePointsとaddFillet)と一緒にスケッチ内の既存の弧のすべてにアクセスを提供します。
下記は、Sketchオブジェクトで開始する例です。SketchCirclesコレクションを取得します。そして、addメソッドで返す、新しい円を作成します。
JavaScript
// 既存のスケッチからSketchCirclesコレクションを取得します。
var circles = sketch.sketchCurves.sketchCircles;
// 新しい円を作成するために、コレクション上で、addメソッドを呼び出します。
var circle1 = circles.addByCenterRadius(adsk.core.Point3D.create(0,0,0), 2);
Python
# 既存のスケッチからSketchCirclesコレクションを取得します。
circles = sketch.sketchCurves.sketchCircles
# 新しい円を作成するために、コレクション上で、addメソッドを呼び出します。
circle1 = circles.addByCenterRadius(adsk.core.Point3D.create(0,0,0), 2)
リスト
Lists
また、Listは、同じように、型指定されたオブジェクトのセットを返すために、使用されるコレクションの特別な型です。また、リストは、countプロパティとitemメソッドをサポートしています。しかし、どんな、addメソッドも提供していません。リストが使用されてる場所の一つの例は、スケッチで長方形を作成している時です。Sketchlinesオブジェクトの4つの新しい線の作成の結果から、1つのaddメソッドを使用して長方形を作成します。addメソッドは、4つの新しい線が含まれている、SketchLineListオブジェクトを返します。
入力オブジェクト
Input Objects
Inputオブジェクトは、より複雑なオブジェクトを作成するために、求められる入力の全てを定義するために使用されます。入力オブジェクトは、コマンド・ダイアログでAPIと等価と考えることができます。これを説明するために、Extrudeコマンドとそれに関連するダイアログについて考えてみてください。ユーザー・インターフェイスで、押出しフィーチャーを作成するために、さまざまな必要とされる入力値とオプションを指定する、ダイアログをポップするExtrudeコマンドを実行し、そして、機能を作成するために「OK」をクリックします。
以下のダイアログで示すように、押出しフィーチャーの作成は、複数の入力とオプションを必要とします。異なるオプションを選択することは、ダイアログの他の領域を、ときどき有効、および/または、無効にします。ダイアログが集めた入力とオプションは、押出しフィーチャーを作成するために必要です。APIでは、押出しフィーチャーのための入力オブジェクトは、ダイアログと同じことを行います。それは、さまざまな入力とオプションの全てを指定するために、押出しフィーチャーを定義する、メソッドとプロパティを持っています。
必要な入力が定義されると、Addメソッドが、呼び出され、入力オブジェクトに渡します。Addメソッドは、ダイアログで「OK」ボタンをクリックすることと同じです。
下記のコードは、既存のスケッチが使用されている押し出しを作成するための、作業の流れを説明します。
JavaScript
// 既存のスケッチから最初のプロファイルを取得します。
var prof = sketch.profiles.item(0);
// ExtrudeFeaturesコレクションを取得します。
var extrudes = rootComp.features.extrudeFeatures;
// 押し出しのための入力を定義する、押し出し入力オブジェクトを作成します。
// 入力オブジェクトを作成すると、一般的な入力は、引数として提供されます。
var extInput = extrudes.createInput(prof, adsk.fusion.FeatureOperations.NewBodyFeatureOperation);
// 5cmの距離で、押し出しのための大きさを定義します。
var distance = adsk.core.ValueInput.createByReal(5);
extInput.setDistanceExtent(false, distance);
// ExtrudeFeaturesコレクションで、addメソッドを呼び出すことによって、押し出しを作成し、そして、それをExtrudeInputオブジェクトに渡します。
var ext = extrudes.add(extInput);
Python
#既存のスケッチから最初のプロファイルを取得します。
prof = sketch.profiles.item(0)
# ExtrudeFeaturesコレクションを取得します。
extrudes = rootComp.features.extrudeFeatures
#押し出しのための入力を定義する、押し出し入力オブジェクトを作成します。
#入力オブジェクトを作成すると、一般的な入力が、引数として提供されます。
extInput = extrudes.createInput(prof, adsk.fusion.FeatureOperations.NewBodyFeatureOperation)
# 5cmの距離で、押し出しのための大きさを定義します。
distance = adsk.core.ValueInput.createByReal(5)
extInput.setDistanceExtent(false, distance)
# ExtrudeFeaturesコレクションで、addメソッドを呼び出すことによって、押し出しを作成し、そして、それをExtrudeInputオブジェクトに渡します。
ext = extrudes.add(extInput)
ValueInputオブジェクト
ValueInput Objects
上記のコードで、押し出しの距離は、ValueInputオブジェクトを提供することで、定義することに注意してください。ValueInputオブジェクトは、パラメーターの作成の結果として生じる値を定義するために使用されます。ValueInputオブジェクトは、現実のあるいは文字列の値を使用して定義されることができます。現実の値は、常に、Fusionのデータベース・ユニットとして解釈されます。;長さは常にセンチメートルです。そして、角度は常にラジアンです。既定では、文字列は、現在のドキュメント・ユニットを使用して解釈されます。例えば、長さのために「5」を指定することは、長さの既定の単位が、インチに設定されるドキュメントの5インチと解釈されます。また、文字列は、直接、単位を指定することができます。例えば、文字列「15mm」は、15ミリメートルと解釈されます。既定の設定に関係なく、単位を記録します。また、文字列を方程式にすることもできます。それは、「d0 / 2」のように、既存のパラメーターと数を一緒に含めることができます。どんな有効な方程式でも、それ以外の場合には、ValueInputオブジェクトを使用して、Fusionダイアログで、値として入力することができます。ValueInputオブジェクトは、dsk.core.ValueInputクラス上で、createByStringとcreateByRealメソッドを使用して、静的に作成されます。
定義オブジェクト
Definition Objects
Definitionオブジェクトは、入力オブジェクトに似ていますが、Definitionオブジェクトが、既存のフーチャーを編集するために使用する、新しいフューチャーを作成する代わりに、使用されます。入力オブジェクトの間のもう一つの顕著な違いとDefinitionオブジェクトは、今、読取専用で、Parameterオブジェクトを返す、作成の間、ValueInputオブジェクトを取得する(入力オブジェクトの)プロパティです。
広告