広告
公式ドキュメントの和訳です。
2016年1月のFusionの更新は、最初に、CAMに関連するAPIが含まれました。このリリースは、APIを提供します。それは、CAM作業スペース内の機能の部分的な適用範囲を持っています。そして、このように、CAMの完全なAPIの適用範囲を最終的に提供するための、多段階的なアプローチの「第1段階」と考えるべきです。
段階1のAPIでサポートされる主な自動化作業工程は、Fusionドキュメントの中に、すでに、存在するCAM操作のために、NCファイルを送って、設定シートを作成するツール・パスの生成です。CAM APIの、この最初のリリースは、まだ、新しいセットアップ、操作やツール・パスを作成するための、どんなメソッドも含まれていないことに、注意することは重要です。
それで、実用的なユースケースの観点から、あなたが、既存のFusionデザインを持っていることを想像します。全てのツール・パスを完了するために、一部を機械加工することが必要です。ツール・パス、そして、また、セットアップ・シートは、すべてが作成され、すべてが送られたと想像します。次に、設計パラメータに小さな変更を作成することを想像します。それは、どんな影響を受けたツール・パスも、再生するために、あなたに必然的に求めるでしょう。その上さらに、また、どんな再生するツール・パスも、再び送信する必要があります。そして、最後に、また、どんな関連したセットアップ・シートでも、再生する必要があります。CAM APIのこの最初の段階リリースは、この種の更新作業の流れを、完全に自動化するための、オブジェクト、メソッドとプロパティへ、必要なアクセスを提供します。
CAM APIを始める
Getting Started with the CAM API’s
CAM APIの機能は、Fusionと異なるCAM固有のライブラリによって提供されています。これらのライブラリ/モジュールは、あなたのスクリプトとアドインで参照する必要があります。それで、それらは新しいCAM APIの機能にアクセスします。
- Python
あなたが、新しいPythonスクリプトやアドインを作成する、Fusionのスクリプトとアドイン・マネージャーから、「作成」コマンドを使用する場合、あなたは、adsk.camが、インクルードするために、モジュールのリストに含まれていることに気がつくでしょう。
import adsk.core, adsk.fusion, adsk.cam, traceback
- JavaScript
あなたが、新しいJavaScriptスクリプトやアドインを作成する、Fusionのスクリプトとアドイン・マネージャーから、「作成」コマンドを使用する場合、あなたは、.manifestファイルが、あなたのプログラムに、参照される"autodeskLibraries"のリスト内の"cam"と"operations"の両方を、含めるために、作成されることに気がつくでしょう。
{ "autodeskProduct": "Fusion360", "type": "script", "author": "", "description": { "": "" }, "supportedOS": "windows|mac", "autodeskLibraries": ["application", "dashboard", "geometry", "materials", "userInterface", "utilities", "bRep", "components", "construction", "features", "fusion", "meshBody", "meshData", "sketch", "tSpline", “cam”, “operations”], "editEnabled": true }
- C++
あなたが、新しいC++スクリプトやアドインを作成する、Fusionのスクリプトとアドイン・マネージャーから、「作成」コマンドを使用する場合、あなたは、結果として得られるcppファイルに、必要な#includeが含まれている、そして、cam名前空間とヘッダファイルを参照しているステートメントを使用していることに、注意します。
Fusion文書内のCAMプロダクトを呼び出す
Accessing the CAM Product within a Fusion Document
Fusion文書は、別々の部分に分割されます。これらの断片の各々は、モデリング、CAM、シミュレーションなどのような、データの特定の設定が含まれています。APIは、「Product」として、これらの断片の各々を参照します。あなたは、データの特定の種類のための、Fusion文書内の製品の一種のコンテナと考えることができます。プログラムから、特定のデータ型を呼び出すために、あなたは、そのデータ型が含まれる製品を最初に呼び出す必要があります。例えば、作成されるデザイン・データを取得するために、モデリングやスカルプ作業スペース・コマンドを使用します。あなたは、文書内の「デザイン」製品を呼び出す必要があります。下記のPythonコードは、これを示しています。
# アプリケーションを取得します。
app = adsk.core.Application.get()
# アクティブ・ドキュメントを取得します。
doc = app.activeDocument
# アクティブ・ドキュメントで、製品コレクションを取得します。
products = doc.products
# デザイン製品を取得します。
product = products.itemByProductType('DesignProductType')
design = adsk.fusion.Design.cast(product)
それで、あなたが、一旦、デザイン製品を取得した場合、あなたは、それで、Productクラスから派生しているDesignクラスで提供されるメソッドとプロパティを使用して、コンポーネント、スケッチ、パラメータなどのような、保存されるデータ型にアクセスすることができます。
以下に示すように、あなたは、とても良く似た方法で、CAMプロダクトを取得することができます。
# アプリケーションを取得します。
app = adsk.core.Application.get()
# アクティブ・ドキュメントを取得します。
doc = app.activeDocument
# アクティブ・ドキュメントで、製品コレクションを取得します。
products = doc.products
# CAMプロダクトを取得します。
product = products.itemByProductType('CAMProductType')
# 文書が、CAMProductTypeを持っているかどうか確認します。そには、CAM操作が、存在しないでしょう。
if product == None:
ui.messageBox('There are no CAM operations in the active document')
return
# CAMオブジェクト(製品の部分型)に、CAMプロダクトを型変換します。
cam = adsk.cam.CAM.cast(product)
変数 "product"が、Noneに等しい場合、コードは、確かめるために確認していることに注意してください。その種類のデータが、ドキュメントの中に存在しない場合は、itemByProductTypeメソッドは、nullやNoneを返すことができます。この場合、それは、文書に、少しのCAM操作も含まれていないことを示しています。すべてのFusion文書は、既定でDesignProductTypeが含まれていることに、注意することが重要です。しかし、必ずしも、他のどんな製品タイプも必要ありません。デザイン以外のデータ型のための製品は、ドキュメントの中に存在するだけです。ユーザーが、明示的に、その型のデータを作成する場合、例えば、CAMセットアップや操作が、文書内に存在しない場合、CAMプロダクトが、参照にないでしょう。Fusionは、自動的に、文書内の異なるデータ型の製品を作成します。データの製品型は、関連する作業スペースのコマンドを通して、作成します。
セットアップ、操作、フォルダとパターンを呼び出す
Accessing Setups, Operations, Folders and Patterns
あなたが、一旦、文書のCAMオブジェクトへの参照を取得した場合、セットアップと操作をそれに取得することは、かなり簡単です。あなたは、CAMクラスで、setupsプロパティを使用して、文書の既存のセットアップを取得することができます。それは、Setupsコレクションを返します。(すなわち、setups = cam.setups)
CAMのためのAPIオブジェクト・モデルは、以下に示すように、あなたが、CAM作業スペース・ブラウザで見る、構造を密接に反映させます。文書は、1つ以上のセットアップが含まれているかもしれません。セットアップは、1つ以上の操作、フォルダやパターンが含まれているかもしれません。フォルダとパターン(パターンは、一種のフォルダです)は、1つ以上の操作、フォルダとパターンなどが、含まれているかもしれません。
それで、APIを用いて、あなたは、同じ構造を移動するでしょう。あなたが、特定のCAMオブジェクトを呼び出すために、ブラウザ内で確認します。下記は、コード・スニペットは、(ここでも、Python)です。それは、その操作とフォルダと一緒に、上で表示されるブラウザで表示されるような文書で、最初のセットアップをどのように、呼び出すかを示します。
# 文書のすべてのセットアップのSetupsコレクションを手に入れます。
setups = cam.setups
# 文書内の最初のセットアップを取得します。
setup = setups.item(0)
# 最初のセットアップで、すべての操作の操作コレクションを手に入れます。
operations = setup.operations
# 最初のセットアップの最初の操作を手に入れます。
operation = operations.item(0)
# 最初のセットアップのFoldersコレクションを手に入れます。
folders = setup.folders
# 最初のセットアップの最初のフォルダを取得します。
folder = folders.item(0)
# 最初のセットアップの最初のフォルダから、Operationsコレクションを取得します。
folderOperations = folder.operations
# 最初のセットアップの最初のフォルダから、最初の操作を取得します。
firstOperationInFolder = folderOperations.item(0)
上記のコードは、セットアップ、操作とフォルダを取得するために、itemメソッドを使用しています。各々の場合、最初のものを取得するために、0のインデックスを使用しています。また、下記に示すように、itemByNameメソッドを使用することは、その名前を使用して取得できるため、極めて役に立ちます。
# 文書のすべてのセットアップのSetupsコレクションを手に入れます。
setups = cam.setups
# 「Setup1」という名前のセットアップを取得します。
setup = setups.itemByName('Setup1')
# このセットアップ内の「Folder1」という名前のフォルダを取得します。
folder = setup.folders.itemByName('Folder1')
# フォルダ内の「Horizontal1」という名前の操作を取得します。
horizOperation = folder.operations.itemByName('Horizontal1')
ツール・パスを作成する
Generating Toolpaths
CAMクラスは、ツール・パスを作成するための、2つの異なるメソッドを提供しています。;文書内で、すべてのツール・パスを作成するための「generateAllToolpaths」と特定の操作をするためのツール・パスを作成するための「generateToolpath」、操作のコレクション、あるいは、すべてのツール・パスの特定のセットアップ、フォルダやパターン。
あなたが、既に、CAMオブジェクトに参照していることを想定します。あなたは、以下に示すPythonコードの一行で、文書内のすべてのツール・パスを作成することができます。
future = cam.generateAllToolpaths(False)
generateAllToolpathsメソッドは、指定するために、一つのブール引数を取得します。ツール・パスが、有効かどうかにかかわらず、読みとばし、そして、無効なツール・パスだけを再生成します。
ツール・パスを作成することは、ツールパスを生成するための呼び出しが、プロセスを開始することを表す非同期動作です。しかし、あなたが、それを、背後で、処理するために継続している間、コントロールを背後へ返します。generateAllToolpathsとgenerateToolPathメソッドは、GenerateToolpathFutureオブジェクトを返します。あなたは、ツール・パス生成の現在の状態を確認するために、使用することができます。GenerateToolpathFutureクラスは、関係する操作の数を取得するために、プロパティを提供しています。生成が完了している場合、完成したツール・パス、そして、決定するための数を取得します。
サンプルプログラムの設定のCAMカテゴリーがあります。それは、APIヘルプの一部で、そして、それらのいくらかは生成ツール・パスを説明します。
下記のPythonコードは、1つの操作、操作のコレクション、特定のセットアップ、あるいは、セットアップのコレクションのためのすべての操作のための作成するツール・パスを説明します。
future = cam.generateToolpath(operation)
future = cam.generateToolpath(collectionOfOperations)
future = cam.generateToolpath(setup)
future = cam.generateToolpath(collectionOfSetups)
NCファイルを送る
Posting NC Files
CAMクラスは、NCファイルを送るための、2つの異なるメソッドを提供します。;文書で、すべてのツール・パスを送るためのpostProcessAllそして、特定の操作のためのツール・パスを送るためのpostProcess、操作のコレクション、あるいは、特定のセットアップのすべてのツール・パス、フォルダやパターン。
あなたが、既に、CAMオブジェクトに参照していることを想定します。下記のPythonコードは、文書内のすべてのツール・パスを送ります。
# プログラム名を指定します。
programName = '101'
# 転送先のフォルダを指定します。
outputFolder = 'C:/MyNcFolder'
# 使用するポスト設定を指定します。
postConfig = cam.genericPostFolder + '/' + 'fanuc.cps'
# NCファイルの出力装置を指定します。
units = adsk.cam.PostOutputUnitOptions.DocumentUnitsOutput
# postInputオブジェクトを作成します。
postInput = adsk.cam.PostProcessInput.create(programName, postConfig, outputFolder, units)
# 表示するためのエディタで、結果として得られるNCファイルを開きます
postInput.isOpenInEditor = True
# 文書内のすべてのツール・パスを送ります
cam.postProcessAll(postInput)
1つの操作のためのNCファイルを送るために、あなたは、操作のコレクション、あるいは、特定のセットアップのすべての操作のための、postProcessメソッドを使用することができます。あなたが、既に、定義されたpostInputを持っていることを想定しています。下記のPythonコードは、文書内の最初のセットアップの最初の操作のためにツール・パスを送るでしょう。
setup = setups[0]
operations = setup.allOperations
operation = operations[0]
if operation.hasToolpath == True:
cam.postProcess(operation, postInput)
else:
ui.messageBox('Operation has no toolpath to post.')
return
APIヘルプ内のCAMカテゴリーは、NCファイルを送ることを説明するいくつかのサンプルがあります。
セットアップ・シートを作成する
Generating Setup Sheets
CAMクラスは、セットアップ・シートを作成するための、2つの異なるメソッドを提供しています。;文書内で、すべての操作のためのすべてのセットアップ・シートを作成するためのgenerateAllSetupSheetsそして、特定の操作のためのセットアップ・シートを作成するためのgenerateSetupSheet、操作のコレクション、あるいは、特定のセットアップのすべての操作、フォルダやパターン。
あなたが、既に、CAMオブジェクトに参照していることを想定します。下記のPythonコードは、文書内で、すべての操作のための、すべてのセットアップ・シートを作成します。
# セットアップ・シートのための出力フォルダとフォーマットを指定します。
outputFolder = 'C:/MySetupSheetsFolder'
# シート・フォーマットを指定します。.ExcelFormatが、Mac上でサポートされないことに注意します。
sheetFormat = adsk.cam.SetupSheetFormats.HTMLFormat
# 文書内で、すべての操作のためのセットアップ・シートを作成し、結果を表示します。
cam.generateAllSetupSheets(sheetFormat, outputFolder, True)
1つの操作のためのセットアップ・シートを作成するために、操作のコレクション、あるいは、特定のセットアップのすべての操作のための、あなたが、使用するgenerateSetupSheetメソッド。下記のPythonコードは、文書内の最初のセットアップの最初の操作のためのセットアップ・シートを生成するでしょう。
setups = cam.setups
setup = setups[0]
operations = setup.allOperations
operation = operations[0]
if operation.hasToolpath == True:
cam.generateSetupSheet(operation, sheetFormat, outputFolder, True)
else:
ui.messageBox('This operation has no toolpath.')
return
APIヘルプ内のCAMカテゴリーでは、セットアップ・ファイルを作成することを説明する、いくつかのサンプルを持っています。
CAM作業スペースをアクティブにする
Activating the CAM Workspace
それは、Fusion UIで、あなたのCAMスクリプトを動作するために、CAM作業スペースをアクティブにする必要は、ありませんが、あなたは、便宜上、ユーザーのために、スクリプトの始め、あるいは、最後に、それを行いたいかもしれません。それで、スクリプト(必要な時/場合)を実行した結果は、すぐCAMブラウザとグラフィックウィンドウで、表示することができます。次のPythonコードは、これを行う、1つの可能な方法を表示しています。
# それが、すでに、アクティブでない場合、ユーザーに、オプションをCAM作業スペースに切り替えることを、促します。
if ui.activeWorkspace.name != 'CAM':
answer = ui.messageBox('Activate the CAM Workspace?','CAM Workspace Activate', adsk.core.MessageBoxButtonTypes.YesNoButtonType, adsk.core.MessageBoxIconTypes.QuestionIconType)
if answer == adsk.core.DialogResults.DialogYes:
workspaces = ui.workspaces
for ws in workspaces:
if ws.name == 'CAM':
ws.activate()
広告