レーザーはラスタ出力モードとベクタ出力モードがあるようですが、
今回は、画像をわざわざというか、ベクタのラインの集合で出力してみます。
なんかこっちの方がキレイにできそうな気がしたからです。
あと、閉領域の出力のテストを兼ねてってことにもなります。
とりあえず画像はモノクロ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 件のコメント:
コメントを投稿