dxf2gcodeによるGコードの生成


はじめに

dxf2gcodeは2次元CADで作成したDXFファイルからCNCフライスを動かすためのGコードを生成するオープンソースのソフトです.シンプルながら自分の用途には十分な機能を持っていて,WindowsでもLinuxでも動作するので重宝しています.一つの欠点は,このソフトに関する情報を探すのに少し苦労したことです.昔このページにまとめた情報がかなり古くなっていたので更新しました.なお以前はパッチを当てて改造して使っていましたが,現在はそのまま使っています.

インストール方法

Windowsで使う場合,拡張子がmsiのファイルをダウンロードして実行すると自動でインストールされてそのまま使うことができます.ただし自分はDXF2GCODE_Win32_2016-04-17.zipというやや古いWindows版を使っています.これはzipファイルで配布されていますが,適当なディレクトリに展開して中のdxf2gcode.exeを実行すればすぐに動きます.これよりも新しいバージョンだとOpenGLに関するエラーが出て3次元でのプレビュー表示が動きませんでした.最新版はDXF2GCODE-2019.10.25-win32.msiですが機能的に大きな違いはないようです.

基本的な使い方

基本的な操作は簡単で,

  1. ソフトを起動する.
  2. メニューの[File]->[Open...]で変換するDXFファイルを選択する.
    [Layers]タブで出力したいレイヤーにチェックが入っていることを確認する.初期状態では後述するIGNOREレイヤー以外は全て選択されている.
  3. メニューの[Export]->[Optimize Paths]を実行するとツールのパスが生成されてプレビューできるようになる.
    後述の設定で3次元表示を有効にしている場合,シフトキーを押しながらマウスの左ボタンでドラッグするとパン操作,Altキーでドラッグすると回転操作,ホイールでズーム操作が可能.
  4. メニューの[Export]->[Export Shapes]を実行すると生成されたパスのGコードをファイルに保存できる.

メニューの[Export]->[Optimize and Export Shapes]を実行すると2と3のステップを一度に行うことができます.
DXFファイル上の原点が,XとY座標の原点になります.

基本的な設定

メニューの[Options]->[Configurations...]で設定を変えることができます.以下は自分がデフォルトの設定から変更した点です.

必要であれば[Options]->[Postprocessor Configurations]で後処理の設定を変更します.例えば,NC工作機械がG64に対応していないのであればこの命令をStartupから削除したり,小数点のない数字が電卓表記ではなく標準表記で解釈される場合に小数点を追加したりすることができます.

dxf2gcodeの便利な機能としてソフト側で工具径補正を行うことができます.これはエンドミルを使って加工を行う際に,CAD上の線に沿って工具を移動するのではなく,エンドミルの半径だけずらして工具を移動することで加工の結果CAD上の線が得られるようにするものです.この機能を利用するには上記のとおりメニューで設定を変更して,さらに工具径を指定する必要があります.メニューの[View]->[Show Path Directions]をオンにすると線のどちら側をツールが通るのかを確認できます.補正方向が逆の場合はプレビュー表示されている図形をクリックして,右クリックのメニューから[Cutter Compensation]を選んで手動で修正します.このソフトでは各図形のbounding boxの包含関係を調べることで補正の方向が内側か外側かを簡易的に調べているので,矩形同士以外では補正の方向を誤認識する場合があります.

パラメータの説明

dxf2gcodeでは,Gコードを生成するための条件を指定するために次のパラメータが存在します.

パラメータ名 [単位] 識別子 デフォルト値 意味
Z Retraction area [mm] Rh 15.0 工具を早送りするときのZ軸高さ.
Z Safety margin [mm] Sm 3.0 早送りから切削送りに切り替わる高さ(R点高さ).
Z Workpiece top [mm] SMd 0.0 加工対象物の上面の高さ(切り込み開始位置).
Z Infeed depth [mm] Sd -1.5 切り込み量.
Z Final mill depth [mm] Md -3.0 加工対象物の底面の高さ(切り込み終了位置).
Feed rate XY [mm/min] Fxy 400 G01でのX軸とY軸の送り速度.
Feed rate Z [mm/min] Fz 150 G01でのZ軸の送り速度.
Tool number Tn
工具番号.
Tool diameter [mm] Td
工具径.
Spindle speed S
主軸回転数.
Start radius Sr
(工具径補正をNC工作機械側で行う場合以外は使われない)

レイヤー名を利用したDXFファイルへのパラメータ埋め込み

DXFファイルのレイヤー名の先頭に以下の4つの文字列のどれかを入れることで,そのレイヤーの機能を指定することができます.

MILL エンドミルで切削を行うレイヤーです.
IGNORE デフォルトで無視されるレイヤーです.
DRILL ドリルでの穴あけを行うレイヤーです.点で穴をあける位置を指定します.SdとMdを同じにしないと冗長なGコードが出力されるようです.
BREAKS 材料から加工物を切り出す場合に完全に切り抜いてしまうと材料が暴れて壊れたりします.それを防ぐため,プラモデルのように加工物の一部を材料とつなげておくタブという部分を簡単に作れるようにするレイヤーです.

DXFファイルからGコードを生成するには,材料の厚さや切り込み量などのパラメータを指定する必要があります.しかしこのような加工物に依存したパラメータをソフ ト側で行うのは面倒で誤りの原因にもなります.dxf2gcodeでは,上の表の「識別子」を使ってこれらのパラメータもDXFファイルのレイヤー名に入れておくことができます.例えば,"MILL: mylayer Md: -1.3 Sd: -0.22"というレイヤー名は,mylayerという名前のエンドミル加工を行うレイヤーで,切り込み終了位置(Md)に-1.3を,切り込み量(Sd)に-0.22を指定しています.QCADなどのソフトではレイヤー名にコロン(:)を使えないため,前述の設定のようにチルダ(~)など別の記号を使うようにする必要があります.このDXFファイルは,上の4種類のレイヤーを全て含んだ例となっています.なお注意点として,"Z Retraction area (Rh)"については最初の図形の位置まで移動する際にはレイヤーで指定した値は使われずデフォルトの値が使われるという仕様になっています.



(以下は更新前の古い情報です)

はじめに

以前CNCフライス盤を自作しましたが,それを動かすにはGコードを用意する必要があります.
初めのうちはWindows上でJw_cadNCVCを使ってみましたが,できればLinux上で作業したかったので,Linux上で動作するソフトを検討した結果QCADとdxf2gcodeを使うことにしました.

QCAD

QCADはLinux用の2次元CADとして有名なソフトです.
日本語でQCADを解説しているページはあまり見つかりませんが,操作はとても分かりやすくて使いやすく,こちらのページのチュートリアルを読めば一通りの操作が分かります.また,こちらで公開されているリファレンスシートも見やすくまとまっています.

dxf2gcode

dxf2gcodeは2次元CADのDXFファイルからGコードを生成するソフトで,Pythonで書かれています.

そのままでは使いにくかったので少し改造して使っています.そのパッチをここに置いておきます.使い方は,まずdxf2gcodeのページから2008-07-27-dxf2gcode_v01_src.zipというファイルをダウンロードして適当なディレクトリに展開し,その展開したディレクトリで"patch < dxf2gcode.patch"としてパッチを当てます.
このパッチを当てると,

という動作をするようになります.
最近dxf2gcodeの新しいバージョンが公開されたようですが,まだ使っていないのでどのような違いがあるのかよく分かりません.

dxf2gcodeの使い方としては,引数にDXFファイルを指定して起動するか,あるいは引数を付けずに起動してからメニューのFile->Read DXFでファイルを読み込み,その後メニューのExport->Write G-Codeを実行するとGコードが生成されます.
画面上に表示されているパラメータで生成されるGコードの設定を行うことができますが,各パラメータの意味は次のようになっているようです:

パラメータ名 意味
Tool diameter エンドミルの直径
Start radius (for tool comp.) ?
Start at X 切削開始位置のX座標
Start at Y 切削開始位置のY座標
Z retraction area 主軸移動時のZ軸の高さ
Z safety margin 加工する材料のZ軸の高さ
Z infeed depth Z軸を1回あたり切り込める最大量(マイナスの数値で指定)
Z mill depth Z軸を削る深さ
G1 feed Z-direction Z軸移動速度
G1 feed XY-direction XY軸移動速度

加工例

実際にプラスチック製のケースを加工するため,QCADで製図しdxf2gcodeでGコードを生成しました.元のDXFファイルを,下の画面の設定によりGコードに変換し,加工した結果が下の写真です.なお,このプラスチック製のケースは適当なバイスで固定できなかったため下の写真のようにネジと鉄のプレートで固定しています.そのままだと加工中に鉄のプレートが邪魔になるので,Gコードの中にM0(一時停止)を埋め込んで加工を中断し,途中で固定位置をずらすようにしています.

DXFファイル DXFファイル  dxf2gcodeの画面  dxf2gcodeの画面

 加工されたプラスチックケース 加工されたプラスチックケース  加工中の様子  加工中の様子


[戻る]
2020-06-03 ページ更新
2010-04-05 ページ作成
(2010-02 作成)
T. Nakagawa