QCAD/CAMポストプロセッサ
QCAD/CAMは、CAD図面をCAM(コンピュータ支援製造)で使われるさまざまな形式にエクスポートできます。これらの形式は、Gコードの方言や、まったく異なる他の形式であることもあります。サポートされる各CAM形式は、形式の詳細を実装するECMAScript(JavaScript)ファイルである設定ファイル(または「ポストプロセッサ」)で定義されます。利用可能なすべての設定は、ディレクトリ postprocessors 内に保存されています。新しい形式の実装は、同じ場所に追加できます。
各設定ファイルには、スクリプトファイルと同じ名前のECMAScriptクラスが含まれます。スクリプトファイルが MyGCode.js という名前の場合、スクリプト内で定義されるクラスは MyGCode という名前でなければなりません。
このECMAScriptクラスは、QCAD/CAMによって定義されているクラス CamExporterV2 から直接または間接的に派生する必要があります。CamExporterV2 は、CAMエクスポータ設定クラスの基本構造を定義します。CamExporterV2 のさまざまなメソッドが呼び出されて、ファイルヘッダ、CAD図面内のさまざまなエンティティ、そしてフッタをエクスポートします。CamExporterV2 はまた、工具半径補正、リードイン / リードアウト、外側の輪郭より前に内側の輪郭を切削すること、パス最適化など、QCAD/CAMのさまざまな機能も処理します。
CamExporterV2 はそれ自体では何も出力せず、単独では空のファイルを生成します。CamExporterV2 は、エクスポートされるファイルに書き込むためのテキストストリーム(QTextStream)を提供します。このテキストストリームは、メンバ変数 this.stream を通じて公開されます。
望む出力がGコードの方言(例: 直線移動の G1 X10 Y20)である場合、設定は GCodeBase.js ファイルで定義されている、GCodeBase というGコード用の既存の設定から派生できます。これはほとんどの機械コントローラに当てはまります。Gコードをミリメートルで出力するためのそのような設定例の1つが、GCodeMM.js ファイルで定義され、ユーザーインターフェースではG-Code (G41/G42) [mm] という設定として利用できます。
GCodeBaseからの設定の派生
Section titled “GCodeBaseからの設定の派生”任意の一意な名前でファイルを作成します。この例では、新しい設定をMyGCodeと呼び、同じ名前のファイル、すなわちQCAD/CAMインストールのpostprocessorsディレクトリの下に MyGCode.js として保存します。
お気に入りのプレーンテキストエディタを使ってファイルを作成・記述できます。たとえば、WindowsではNotepad、macOSではTextEdit、Linuxシステムではvim、Emacsなどです。
MyGCode.js は、QCAD/CAMの有効な設定となるために、MyGCodeというクラスを定義する必要があります。厳密に言えばECMAScriptにはクラスはありませんが、コンストラクタ関数のprototypeオブジェクトに関数をアタッチすることで、似た概念を作成できます。これが正確にどのように機能するかは、このドキュメントの範囲を超えています。しかし、すべての設定ファイルに使える分かりやすいテンプレートがあります。
この例では、クラスMyGCodeの定義は次のようになります(// で始まる行はコメントで、必須ではない点に注意してください)。
// Include GCodeBase.js which contains the class 'GCodeBase',// used as base for our own configuration:include("GCodeBase.js");
// Constructor of our class:function MyGCode(documentInterface, newDocumentInterface) { // Call constructor of base class: GCodeBase.call(this, documentInterface, newDocumentInterface);}
// Derive our class from class GCodeBase:MyGCode.prototype = new GCodeBase();
// Display name shown in user interface:MyGCode.displayName = "My G-Code";これで、QCAD/CAMですぐに使え、基本的なGコードを生成する、「My G-Code」という新しい完全に動作する設定を作成しました。
設定の環境設定
Section titled “設定の環境設定”上で定義したコンストラクタは、基底クラスGCodeBaseのコンストラクタを呼び出します。コンストラクタでは、望む出力単位や、工具半径補正にG41/G42を使うか工具パスの中心を計算するかなど、設定のいくつかのパラメータを設定できます。
出力単位(機械やコントローラが期待する単位)を設定するには、メンバ変数unitをInchまたはMillimeterに設定できます。たとえば次のようにします。
this.unit = RS.Inch;または
this.unit = RS.Millimeter;コンストラクタで設定できるその他の設定は次のとおりです。
| 変数 | 可能な値 | 既定値 | 説明 |
|---|---|---|---|
this.outputOffsetPath |
true または false | false | G41/G42を使う代わりに工具半径補正を計算するには、trueに設定します。 |
this.lineNumber |
数値 | 10 | 行番号付け(N…)に使う初期番号。 |
this.lineNumberIncrement |
数値 | 10 | 行ごとの行番号の増分。 |
this.fileExtensions |
配列 | [ "nc", "cnc" ] |
このポストプロセッサでエクスポートするときにユーザーが選べるファイル拡張子のリスト。 |
完全なコンストラクタは次のようになります。
function MyGCode(documentInterface, newDocumentInterface) { GCodeBase.call(this, documentInterface, newDocumentInterface);
this.unit = RS.Inch; this.outputOffsetPath = true; this.lineNumber = 1; this.lineNumberIncrement = 1;}Gコード出力の定義
Section titled “Gコード出力の定義”コードブロック
Section titled “コードブロック”Gコード出力は、QCAD/CAMでCAMエクスポート機能を使うときに出力ファイルに書き込まれるコードブロックに構造化されています。たとえば、最初に書き込まれるコードブロックはコードブロック「header」です。各コードブロックは、名前で識別するメンバ変数で定義されます。たとえば this.header にはファイルヘッダ用のコードブロックが含まれます。
コードブロックは、任意のコード / テキストを含むようオーバーライドできます。コードブロックには通常、現在のX/Y座標、行番号、送り速度などを出力するための変数が含まれます。
たとえば、1本の線がGコードにエクスポートされるとします。線は、線の左側への工具半径補正(G41)でエクスポートされます。出力ファイルに書き込まれるコードブロックは次のとおりです。
| コードブロック | 説明 | 出力例 |
|---|---|---|
header |
出力のヘッダ(常に最初のコードブロック)。 | G21 G17 G90 G40 G49 G80 |
rapidMoveZ |
安全高さへの早送り移動。 | G0 Z100 |
rapidMove |
最初の輪郭の最初の位置(ここでは線のリードインの始点)への早送り移動。 | G0 X5 Y10 |
toolHeader |
新しい工具が動作を始めるときの最初のブロック(工具交換)。 | T1 |
rapidMoveZ |
クリアランス高さ(材料の上でホバリング)への早送り下降。 | G0 Z5 |
firstLinearMoveZ |
プランジ速度での材料への切り込み。 | G1 Z-5 F50 |
toolpathHeader |
新しいツールパスの最初のブロック。 | |
contourHeader |
ツールパス内の新しい輪郭の最初のブロック。 | |
singleZPassHeader |
単一Zパスのヘッダ。全深さを1パスで切削します。 | |
zPassFirstHeader |
単一または複数のZパスの最初のヘッダ。 | |
linearMoveCompensationLeft |
リードインに沿った線の始点への直線移動で、工具半径補正をオンにします。 | G41 X10 Y10 F500 |
linearMove |
線に沿って線の終点への直線移動。 | X30 Y10 |
linearMoveCompensationOff |
リードアウトに沿って終点から離れる直線移動で、工具半径補正をオフにします。 | G40 X35 Y10 |
zPassLastFooter |
単一または複数のZパスの最後のフッタ。 | |
singleZPassFooter |
単一Zパスのフッタ。 | |
contourFooter |
輪郭の終わり。 | |
toolpathFooter |
ツールパスの終わり。 | |
linearMoveZ |
材料から出てクリアランス高さへの移動。 | Z5 |
rapidMoveZ |
安全高さへの移動。 | G0 Z100 |
toolFooter |
この工具の終わり。 | |
footer |
プログラムの終わり。 | M30 |
これらのコードブロックの多くは通常使われず、何も出力しません(空のコードブロック)。
| メンバ変数 | 変数名 | 説明 |
|---|---|---|
| inputFileName | INFILENAME | 入力ファイル名(例: DXFファイル)。 |
| inputFilePath | INFILEPATH | 完全なパス付きの入力ファイル名。 |
| fileName | FILENAME | 出力ファイル名。 |
| filePath | FILEPATH | 完全なパス付きの出力ファイル名。 |
| dateTime | DATETIME | エクスポートの日時。 |
| lineNumber | N | 現在の行番号。 |
| spindleSpeed | S | スピンドル速度、通常はrpm。 |
| feedRate | F | 送り速度。 |
| plungeRate | FP | プランジ速度。 |
| xHomePosition | XH | CAM設定で構成されたホーム位置。 |
| yHomePosition | YH | |
| zHomePosition | ZH | |
| zSafety | ZS | 工具交換および開始 / 終了のためのZ安全高さ。 |
| zClearance | ZU | 材料に近づくためのZクリアランス高さ。 |
| zClearancePass | ZUP | 複数パス間のZクリアランス高さ。 |
| zCuttingDepth | ZD | Z切削高さ(合計)。 |
| xFirstPosition | XF | 最初のツールパスの最初の輪郭の最初の位置。 |
| yFirstPosition | YF | |
| xStartPosition | X1 | エンティティの始点(線 / 円弧の始点)。 |
| yStartPosition | Y1 | |
| zStartPosition | Z1 | |
| xPosition | X | 現在の目標位置。現在の線 / 円弧の終点。 |
| yPosition | Y | |
| zPosition | Z | |
| xRelPosition | XR | 始点を基準とした相対座標としての現在の目標位置。 |
| yRelPosition | YR | |
| zRelPosition | ZR | |
| iArcCenterInc | I | 始点を基準とした円弧の中心。 |
| jArcCenterInc | J | |
| iArcCenterAbs | IA | 円弧の中心、絶対値。 |
| jArcCenterAbs | JA | |
| arcRadius | RADIUS | 円弧の半径。 |
| arcDiameter | DIAMETER | 円弧の直径。 |
| arcSweep | SWEEP | 円弧の掃引(円弧が覆う角度、ラジアン、時計回りは負)。 |
| tool | T | 現在の工具。 |
| toolRadius | TR | 工具半径。 |
| toolDiameter | TD | 工具直径。 |
| toolpathOrder | TOOLPATH_ORDER | ツールパスのリスト内でのツールパスの順序。最初のツールパスは0から始まります。 |
| toolCalls | TOOL_CALLS | この工具が使われた回数。 |
| toolpathName | TOOLPATH_NAME | 現在のツールパスの名前(ユーザー定義)。 |
| programName | PROGRAM_NAME | CAM設定でユーザーが構成したプログラム名。 |
| xMin | X_MIN | 図面の最小範囲。 |
| yMin | Y_MIN | |
| zMin | Z_MIN | |
| xMax | X_MAX | 図面の最大範囲。 |
| yMax | Y_MAX | |
| zMax | Z_MAX |
ヘッダとフッタの変更
Section titled “ヘッダとフッタの変更”ヘッダやフッタでGコードやMコード、その他の情報を追加または変更するには、設定でメンバ変数headerとfooterを、たとえば次のようにコンストラクタでオーバーライドできます。
this.header = [ "[N] G0 Z100" ];this.footer = [ "[N] G0 Z100", "[N] M30" ];円弧の中心のI/J値に絶対値を使うには、円弧のコードブロックを次のようにオーバーライドできます。
this.firstArcCWMove = "[N] G2 [X] [Y] [IA] [JA] [F]";this.arcCWMove = "[N] G2 [X] [Y] [IA] [JA] [F]";this.firstArcCCWMove = "[N] G3 [X] [Y] [IA] [JA] [F]";this.arcCCWMove = "[N] G3 [X] [Y] [IA] [JA] [F]";ポストプロセッサテンプレートファイル
Section titled “ポストプロセッサテンプレートファイル”QCAD/CAMは、ポストプロセッサを設定または切り替えるときに、ポストプロセッサファイルと同じ名前のDXFテンプレートファイル(利用可能な場合)を自動的にマージします。たとえば、ポストプロセッサが「MyGCode」という名前で、postprocessors/MyGCode.jsに実装されているとします。工具定義を含むDXFファイルを postprocessors/MyGCode.dxf に作成します。このファイルには、工具定義、既定のレイヤ、または利用可能な作業面積の外形が含まれることがあります。注意: テンプレートファイルの表示可能な内容は、マージ時に自動的にロックされたレイヤに配置されるため、表示されるだけで選択はできません。