目的: 3Dプリンタ向けデータ作成の効率化
(先に結果を言っておきます。今回はカメラで得た画像からエッジ検出し、その座標データをテキスト化しその先のCADソフトに渡すExcelアドインを作成中です - github)
私は趣味で電子工作を行っており、3DプリンタでABS製のケースや治具など作っています。
しかし、安いFDM(熱溶解積層法)3Dプリンタを使用しているため、一度で狙い通りのアウトプットを得ることが難しいです。
作成するものは単純形状ですが、設計通りの寸法になっていないと「はまらない」「しまらない」等の問題により、微調整して再プリントを繰り返すことになります。
この微調整作業を簡単に行うために、形状データの作成をOpenSCADというスクリプト型CADソフトによる数値入力によるモデリングを行っています。
データ作成作業の問題点
- 既存の形状にぴったりフィットする形状を目指すため微妙なカーブ形状にしたいが出来ない(プリント後に加工するのが面倒)
解決案
- 既存形状をトレースし形状データを作成する
実践プラン
- 既存形状をトレースするには3Dスキャナがあれば良いのだが、既製の家庭向け3Dスキャナで形状データを取得しても、そのまま使える精度(±0.1m)が得られるとは思えないので、自分で何とかする。
- 自分用のものづくりのときは、思い付きでさらっと設計するためプロっぽいことはしない。めんどくさいことはできるかぎりやらない。
KinectやRealsenseで2D画像と深度による3D計測すれば・・・特殊なカメラだと誰でも使えない。というか売ってるものを買うほうが早い。3D計測はあきらめて、正確な2Dの面データを作成し複数の面データをCADで手作業でくっつけて3D化することにする。
画像からエッジ検出し、その座標データをExcelに送る
あとは罫線とオートシェイプで2D図面を書けばいい。
エクセルを使えば、専用ソフトを探して使い方を覚える必要がないので誰にでも使えるものができるはず
こういう専用ソフト・機能は既に存在しているが、おまけ機能程度のお遊びレベルのものしか知らない。いいのがあったら教えてください(2万円まで)
作ったもの & 使い方
- windows10 office2010以降のPCとusbWebカメラ(内臓も可)を用意する
- xlTrace-AddIn-packed.xllをダウンロードしてダブルクリックで開く(Excel立ち上がる)
- 新規ブックを開く(既存ブックも可)
- リボン:アドインxlTrace-Capture(別ウィンドウ開く)
- カメラに映ったものが白黒変換して表示されるので右上のTakeOneShotをクリックする(Excelオートシェイプにする)
- 取り込まれたAutoShapeを選択し、リボン:アドインxlTrace-SelectionFreeformToOpenSCADを押す。
- クリップボードにOpenSCAD向けスクリプトが書き出される
あとがき
-
3Dプリンタtipsとかあればコメントにて教えてください
-
githubに公開
Excelの32/64bitは別なので自分の環境に合わせたものをダウンロードしてください。
- Excelアドイン開発方法についてニーズがあれば解説記事を書きます。コメント下さい
ソース解説もしようと思ったけど作ったものの紹介記事を書くだけで力尽きました・・・
解説できるのは独自リボンタブの実装・作業ウィンドウの実装・高速処理tipsくらい。もちろん我流です。
.NetでのExcelアドインの作成の難点はどうやってExcelに組み込むのか?だけで、実装方法はVBAをC#に書き換えるだけです。組み込む部分はVSTO・ExcelDNAがやってくれるのでVBAを書く力とWindows向けアプリの実装力があれば誰でもできます。難点は昔ながらのCOMなのでインスタンス開放忘れ=メモリリークとなり、Excelを閉じたのにプロセスに残り続ける現象に陥りやすいです。いい加減になんとかしてほしいのだけど、MSでもどうにもできないのだろう・・・
また、Excelアドインの開発は通常はVSTOを使うと思いますが、VSTOで作ると「インストールしないと使えない」点が個人的に気に入らないためExcelDNAを使っています。所見では*.vstoって何?アンインストールの仕方がわからないという事態になった。
ExcelDNAは*.xllをダブルクリックするだけ!シングルバイナリだし素晴らしいね
- まだカメラからの取り込みしか実装していないので、使い物にならない。
ほんとはスクリーンキャプチャで罫線取り込みから実装したかったのだけど大人の事情で出来なかった。今後スクリーンキャプチャ、色フィルタ、範囲指定などをやりたい