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