そのお仕事は紙原稿の折れ線グラフ(横軸が年、縦軸が何やらの数値)を読み取ってエクセルに数値を記入するというもの。
原稿に定規を当てて数値を読み取ってエクセルに記入するという方法が普通なのかな。
でも大量の原稿なのでその方法だとミス続発だ。
ミスしまいと入念にチェックしながらすると時間が掛かるし神経が磨り減る。
なのでこんな方法にした。
・原稿全てをスキャンする。
・AutoCADにスキャンしたラスターを貼り付ける。
(貼り付け方はグラフの縦軸をCADのY座標と合わしておく。)
・グラフをポリラインでトレスする。
・エクセルで作成したプログラムを実行。
・CADがアクティブになり「オブジェクトを選択」になる。
・ポリラインを選択。
・ポリラインの頂点のY座標が順番にエクセルに入る。
この方法ならば気を使う所はラスターを正しい位置にアタッチする事のみ。
間違っていてもエクセルと原稿を少し見比べればすぐにミスに気づく。
よって全ての数値をチェックする必要も無い。
アナログ的に数値を読み取る方法に比べてどれだけ速かったかは判らないけど
「神経を衰弱させずに済む=間違えない」
これもプログラムのいい所なのでございます。

前回までのあらすじ:
膨大なDXFデータをPDFに自動連続出力しようと試みたが真っ白なPDFが作成されていて途方に暮れるリーダーであった。
途方になんか暮れてないぜー!
前回書いたように大きなポイントの一つと考えていた訳だから、それなりの構想は当然練ってある。
データ中の用紙枠の左下と右上の点の座標が取得できればいいのだ。
幸いな事にこのデータ達のレイヤー管理は完璧だ。
用紙枠のレイヤーは決まっている。
ただしそのレイヤーにあるのは用紙枠だけという訳ではない。
図枠などもそのレイヤーにある。
用紙枠は2Dポリラインで作成されている。
以上の様な条件から次の様にした。
データ中の決まったレイヤーにある2Dポリラインを順番に取り出して、その2Dポリラインの頂点の座標を順に取り出す。
最大X・最大Y・最小X・最小Yの変数を用意しておき、1つ目に取り出したX・Y座標を最大と最小の両方に入れる。
2つ目以降に取り出した座標が最大X・Y座標より大きければ最大X・Y座標に数値を入れなおす。
最小X・Yについても同様。
その作業をポリラインの頂点がある限りループさせる。
すると最終的に変数に入っている座標は用紙枠の左下と右上の点の座標となるのだ。
その点を図面範囲として設定してやればOK!
(最大X-最小Y)/用紙の幅 で縮尺もでるよん。
この様な処理を追加した後は快調にPDFが出来ていきました。
途中UCSがワールドになっていなくて止まったり、用紙枠が線分になっていて止まったりするデータもあったけどその度に改良して無事に終わりましたとさ。
DXFデータをPDFに出力するお仕事を頂いた。
かなりの枚数を短期間で出力しなければならない。
前回書いたような手法で自動的にPDFを作るようにするぞ!
しかし印刷というのはなかなか手強い。
自ら作った図面なら予め連続出力を想定したデータを作っていくのだが、
頂いたデータが決まった法則に基づいて作られているかどうかが鍵だ。
実は頂いたデータを連続PDF出力するのは初めて。
今回クリアしなければならない大きなポイントは2つ。
1.印刷領域をどのように設定するか。
2.PDF出力する際にPDFをDXFデータと同じフォルダに作らなければならない。
印刷領域はオブジェクト範囲でいきたい所だがラスターが用紙枠をはみ出すように配置されている。
となると図面範囲だが、設定されているだろうか。
幾つかのデータを見てみると図面範囲の設定がされているではないか。
とりあえず、全てのデータが図面範囲設定されてる事を祈ろう。
PDFに出力する際には通常どこに保存するかというダイアログボックスが出てくる。
それは連続出力の妨げになる。
フォルダを設定してそこに作成していくことは出来るが、図面と同じフォルダに作成することは出来ない。
なので一度CドライブにPDFを作成して、それを図面と同じフォルダに移動させるという方法にした。
透過性のラスターがアタッチされた図面を出力すると重いPDFになってしまうのを回避する工夫等を盛り込んだ後、プログラム実行!
次々と図面が開いてはPDFが作られていく。
一台のPCで実行させて、もう一台のPCでPDFを確認だ。
よしよしチャンと出来ているぞ。
と思ったのも束の間。あるファイルより後は真っ白けのPDFだー!
甘かった…。やはり図面範囲なんか設定されていない…。
どうするオレ!? つづく…。