コンテンツにスキップ

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] という設定として利用できます。

任意の一意な名前でファイルを作成します。この例では、新しい設定を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」という新しい完全に動作する設定を作成しました。

上で定義したコンストラクタは、基底クラス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コード出力は、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

ヘッダやフッタで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 に作成します。このファイルには、工具定義、既定のレイヤ、または利用可能な作業面積の外形が含まれることがあります。注意: テンプレートファイルの表示可能な内容は、マージ時に自動的にロックされたレイヤに配置されるため、表示されるだけで選択はできません。