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ですが機能的に大きな違いはないようです.
基本的な操作は簡単で,
メニューの[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ファイルのレイヤー名の先頭に以下の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_cadとNCVCを使ってみましたが,できればLinux上で作業したかったので,Linux上で動作するソフトを検討した結果QCADとdxf2gcodeを使うことにしました.
QCADはLinux用の2次元CADとして有名なソフトです.
日本語でQCADを解説しているページはあまり見つかりませんが,操作はとても分かりやすくて使いやすく,こちらのページのチュートリアルを読めば一通りの操作が分かります.また,こちらで公開されているリファレンスシートも見やすくまとまっています.
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(一時停止)を埋め込んで加工を中断し,途中で固定位置をずらすようにしています.