2012/12/12

CNCフライス用の面出しGコード生成プログラムを書いてみた



こんにちは、てってらです。内容はタイトルまんまです。


学校でoriginalmind社のmini-CNC BLACKII 1520っていうフライス盤使ってるんですが、その捨て板がボコボコになってきたんで平面出しをすることに。で、純正(?)のncdデータをoriginalmindのサイトからパクろうとしたんですがエンドミルの径が2mmと4mmのしかなかったので、手元にある3mmのエンドミル用に新しく書き出すことにしました。ついでにJavaScriptの練習もしたかったってのもあったんでGコード手打ちじゃなくてプログラム組んでみました。せっかくなので晒します。


で、できたのがこれ
うp方法わかんないんでそのまんま貼っつけますよん


・GcodeMaker.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Generate G-code</title>
        <script src="GcodeMaker.js"></script>
    </head>

    <body>
        <output></output>
    </body>
</html>




・GcodeMaker.js

window.addEventListener("load", function(){
    var diam, margin;
    var depth, moving_speed, motor_speed;
    var vartical_length, horizontal_length;
    var repeat;

    diam = 3;                       //スピンドル径[mm]
    margin = 0.5;                  //重ねる幅[mm]
    depth = 0.2                    //削る深さ[mm]
    moving_speed = 500;        //送り速度
    motor_speed = 3000;        //回転数
    vartical_length = 200;       //ステージの縦幅(Y軸方向)[mm]
    horizontal_length = 150;    //ステージの横幅(X軸方向)[mm]
  
    repeat = vartical_length / (diam - margin) + 1; //横移動回数


    var ele = document.getElementsByTagName("output")[0];

    //G-code書き出し(原点へ移動->スピンドル下ろす)
    ele.innerHTML += "G01 Z5.00 F500" + "<br>";
    ele.innerHTML += "G01 X0.00 Y0.00 F" + moving_speed + "<br>";
    ele.innerHTML += "S" + motor_speed + " M03" + "<br>";
    ele.innerHTML += "G01 Z-" + depth + " F200" + "<br>";


    var x_n, y_n;                    //桁数変換用変数
    var x_axis, y_axis;             //G-code用の座標格納変数
    x_n = y_n = x_axis = y_axis = 0;

    for(var roop_cnt=0; roop_cnt<repeat; roop_cnt++){
        x_n = (roop_cnt % 2 == 0) ? horizontal_length : 0;  //往路:X=横幅, 復路:X=0
        x_axis = x_n.toFixed(2);    //小数点以下2桁まで

        //G-code書き出し(横移動)
        ele.innerHTML += "G01" + " X" + x_axis + " Y" + y_axis + " F" + moving_speed;
        ele.innerHTML += "<br>";

        y_n += (diam - margin); //Y座標を一段移動
        y_axis = y_n.toFixed(2); //小数点以下2桁まで

        //G-code書き出し(縦移動)
        ele.innerHTML += "G01" + " X" + x_axis + " Y" + y_axis + " F" + moving_speed;
        ele.innerHTML += "<br>";
    }

    //G-code書き出し(スピンドル上げる->原点へ移動)
    ele.innerHTML += "G01 Z5.00 F200" +"<br>";
    ele.innerHTML += "M06" + "<br>";
    ele.innerHTML += "G01 X0.00 Y0.00 F500" + "<br>";
}, false);



変なとこがあればぜひ教えてください。お願いします
あとスピンドルモータの回転数とか送り速度とかはほんとにテキトーなんで、くれぐれも信用しないでください

これで基板彫るときの刃折れが少なくなるといいなー

0 件のコメント:

コメントを投稿