レーザーはラスタ出力モードとベクタ出力モードがあるようですが、
今回は、画像をわざわざというか、ベクタのラインの集合で出力してみます。
なんかこっちの方がキレイにできそうな気がしたからです。
あと、閉領域の出力のテストを兼ねてってことにもなります。
とりあえず画像はモノクロ2値とし、テストで出力するまでがこんな感じです。
(1)まず最初STEP値を決める。解像度の逆数みたいなもの。
(2)次に解像度に合わせてイメージのビットマップを拡縮をかける
(3)1行ずつ、ビットフィールドを始点-終点に変換した座標のarrayを作成
(4)そのarrayで線の数だけLOOP。
※全て左から右へ移動してレーザー出力するようにしている。
結果としてはまぁまぁです。
始点や終点の【キレ】は、相変わらず甘いです。
キカイで調整できうるところは、別フェーズでやってみますが、
どこかに限界は有りそうな気はしてしまいます^^;
●SRC
int laserCom = searchLaser(); printf(":%d\n",laserCom); if(laserCom == 0){ // 見つからない return 0; } laserOpen(laserCom); // 初期化はこの2行 laserInit(); // 初期化はこの2行 setLineSpeed(500); // setForce(6); // aLaserPic AL; AL.setStep(0.10); //最少STEP(mm) AL.setSize(30,0); //実際の大きさ(mm) AL.setOffset(10,10); //左上座標 bool b = AL.loadPng("C:/temp/LS01.png"); int yline = AL.getPicHeight(); for(int y=0;y<yline;y++){ double* dp = 0; int n = AL.getValue(y,&dp); if(!n) continue; double xx = dp[0] - 2.0; double yy = dp[1]; moveTo(xx,yy); for(int w=0;w<n;w++){ double x1 = dp[w*3+0]; double y1 = dp[w*3+1]; double x2 = dp[w*3+2]; double y2 = dp[w*3+1]; moveTo(x1,y1); lineTo(x2,y2); } } laserClose();
●元データ
●元データ反転
●元データをスキャン(数値をファイル化してexcelで表示)
●竹材へ出力
●MDFへ出力
0 件のコメント:
コメントを投稿