アプリケーション プログラミング インターフェース(API)を使用して、マシン デザイン ファイルの機能を拡張することができます。このプログラミング環境では、BASIC プログラミング言語を用いてマシン デザイン機能をカスタマイズしたり、強化したりします。
API を使用して、次のような多様な状況での機能が追加されています。
通常、これらのスクリプトは比較的簡単にプログラミングすることができます。多くの場合、別のマシンから似たようなコードをコピーし、多少の編集を加えて新規マシンに適用することができます。標準的な機能に対しては、この手順(コピーと編集)が推奨されています。
マシン デザイン ファイルに関する BASIC スクリプトは、FeatureCAM に完全管理されています。ブラウザを使用して表示できる別のファイルなどはありません。次の方法で、FeatureCAM のみからアクセスすることができます。
注意事項
次では、マシン デザイン ファイルの BASIC スクリプトのサンプルとして、メインスピンドルの爪を開くコードを紹介しています。コード以下の注釈は、注意点です。
Public Sub MachineSim_spindle( Doc As FeatureCAM.MFGDocument, _
ByVal data As Double, _
ByVal Action As FeatureCAM.tagFMMachineSimSpindleActionType, _
ByVal spindle As Long)
Dim Vw As MFGWindow
Dim Err As Long
Dim i As Integer
Dim dOpen As Double
Dim dCls As Double
Set Vw = Doc.ActiveWindow
Err = 0
i = 0
If( Doc.Metric ) Then
dOpen = 4
dCls = -1
Else
dOpen = .25
dCls = -.125
End If
Vw.SimIgnoreClashes(0)
If( Action = eSimAction_Open And spindle = 0 ) Then
Vw.SimIgnoreClashes(1)
While Err = 0 And i<3
Vw.SimCutMove( "main_jaw_1", dOpen, 0, 0 )
Vw.SimCutMove( "main_jaw_2", dOpen, 0, 0 )
Vw.SimCutMove( "main_jaw_3", dOpen, 0, 0 )
Vw.SimPerformCut Err
If( Err = 0 ) Then
Vw.SimUpdateGraphics
End If
i = i + 1
Wend
End If
End Sub
MachineSim_spindle ルーチンは、スピンドル動作の制御を取得するためのフックです。
マシンは、メトリックかインチで定義されていますが、実際にファイルを使用するユーザーが FeatureCAM ドキュメントをどちらの単位で使用するかは分かりません。マシン デザイン ファイルは、両方の単位に対応できるよう計算、変換されます。
eSimAction_Open enum は、動作「Open」が生成されたことを示します。その他のタイプには、eSimAction_Close や eSimAction_Position などがあります。詳細については、API ガイドを参照してください。
メインスピンドルは 0、サブスピンドルは 1 と識別されます。よって、このブロックは、メインスピンドルのみを開くイベントを取得します。
ガウジ チェックを無効にします。ガウジ チェックは、スクリプト内で手動で処理しなければなりません。
動きを小さな増分に分割するため、通常、移動はループで実行されます。ここでは、爪は 3 ステップで開かれます。一般的に、干渉しないと思われる箇所にはより大きな増分を使用することができます。しかし、爪を閉じる際は、爪がストックに触れた時点で確実に停止できるよう 50 ステップ使用します。
ソリッドを直線状に動かすための基本コマンドです。(これに類似したコマンド SimCutRotate は、回転に使用されます。) マシン デザイン ファイルで指定されている従動部(子)のソリッドすべても、あわせて動きます。ソリッドの名前は、最初のアーギュメントです。マシン デザイン ファイル内のソリッド名と一致していなければなりません。動作は、ソリッドに定義したローカル座標系に相対します。ローカル座標系が未定義の場合は、テーブルの座標系に相対します。
指定されたすべての動作を実行し、同時にガウジ チェックも行います。動作は同時に実行されます。順番に実行されるのではありません。
エラーの有無を確認します。場合によっては、デバッグのためにエラー チェックを無効にすることも有用ですが、モデルでの作業時には有効に戻しておきます。
エラーがなければ、グラフィックを更新します。