好きな山域を3Dプリントしよう

山の立体ディスプレイ
遠くから眺めてよし、頂を目指すもよし。頂から遠くの山を眺めるもよし。
思い出の山、これから登る山を3Dプリントしてみましょう。地理院地図の3Dツールを使って好きな山域のSTLファイルを作成します。STLファイルは小さな3角形のメッシュで3次元形状を表現するファイル形式で、多くのアプリケーションで共通に使われています。地理院地図の3Dツールは緯度、経度に沿った長方形の範囲の標高データをSTLファイルで出力します。そのまま3Dプリントしても良いのですが、手に持って色々な方向から山域を眺めるには外形が円形の方が便利ですから、ここでは外径115mmのディスク状にする方法を説明します。
黒部渓谷・立山・剱岳を含む山域の3Dプリントの例です。PLAクリアフィラメントでプリントしてフルカラーLEDで下から照らすと立体感が増します。

OLYMPUS DIGITAL CAMERA

大まかな作成手順
(1) 地理院地図の3Dツールを使って立体ディスプレイを作る山域(正方形)のSTLファイルを作成します。
(2)Fusion360を使って直径115mmの円筒状にくり抜くツールとなるSTLファイルを作成します。
(3) Fusion360に山域のSTLファイルを読み込んで縮尺を調整します。
(4)くり抜きツールのSTLファイルも読み込んで、山域メッシュとツールメッシュの両方に含まれる部分を結合ツール(交差)で取り出してSTL形式で保存します。
(5) 3Dプリンターでプリントします。

 

(1) 地理院地図の3Dツールで山域のSTLファイルを作成
まず地理院地図で作成する山域を表示します。ここでは富士山で説明します。
「作図・ファイル」ツールでプリントしたい範囲に円を描きましょう。
3Dツールでは3D化する範囲の指定方法として「大(縦横2048px)」「小(縦横1024px)」「カスタム」がありますので、「カスタム」を選び、四隅の選択点をドラッグして先ほど描いた円に外接する正方形を指定して「OK」ボタンを押します。
ブラウザに新しいタブが作られて指定した範囲の3次元の地図が表示されます。
画面の右下端に3種類のファイルのダウンロードボタンが表示されますので、STLファイルをダウンロードします。画面の立体表示には等高線などが描かれていますが、STLファイルには描かれません。dem.stlという名前になっていますので、MtFuji.stlなど分かりやすい名前に変更すると良いでしょう。このSTLデータは一辺(長方形の場合は長辺)が150mmのデータになっています。

(2) 円筒形状のツールSTLファイルの作成(2回目以降は不要)
Fusion360のソリッドモードで、左上のブラウザの原点タブにあるXY面を右クリックしてスケッチを作成します。原点を中心として直径115mmの円を描いてスケッチを終了します。スケッチで描いた円をクリックして押し出しツールで115mmの長さの円筒を作成します。ブラウザのボディタブで円筒のボディを右クリックして「メッシュとして保存」を選択します。Cylinder.stlとして保存し、このデザインを閉じます。

(3) 山域STLファイルの読み込みと縮尺変更
新規デザインで新しいページを開きます。「挿入」メニューの「メッシュを挿入」を選択し、MtFuji.stlを開きます。この時、「上方向を反転」ボタンを押して、Y軸とZ軸の方向を反転します。「中心」ボタンを押して、メッシュデータの中心を原点に移動し、「地面に移動」ボタンを押してデータの底面がXY面と一致させます。
メッシュモードを選択し、「修正→メッシュを尺度指定」を使って一辺150mmの正方形の範囲のデータを一辺115mmに縮小します。縮小してもデータの底面がXY面になるように、「点」(縮小拡大の基準点)に底面の中心を指定します。視点を「下」にすれば選択しやすくなります。「エンティティ」は縮小拡大するメッシュを指定します。150mmを115mmに縮小したいので縮小倍率は0.77(≒115/150)と入力して「OK」ボタンを押します。データの底面がXY面にあることを確認してください。
(4) ツールSTLファイルの読み込みと結合ツール(交差)
Cylinder.stlを読み込みます。メッシュモードの結合ツール(交差)を選択し、「ターゲットボディ」にMtFujiメッシュボディ、「ツールボディ」にCylinderメッシュボディを指定します。もしも厚みが大きくてプリント時間が余分にかかりそうな場合は、結合ツールを実行する前にMtFujiメッシュボディをZ軸のマイナス側に移動します。下げすぎて底に穴を開けないように注意します。
作成したメッシュボディを右クリックし、「メッシュとして保存」を選んで、例えばMtFujiDisk.stlのようにファイル名をつけて保存します。

(5) 3Dプリンターでプリント
作成したSTLファイル(たとえば、MtFujiDisk.stl)を3Dプリンターでプリントします。

OLYMPUS DIGITAL CAMERA

LibreOffice DrawのSVGファイルをAI風のSVGファイルに変換する方法

背景
レーザー加工用の切断データはパス(Path)と呼ばれるベクトルデータで作成します。周知のようにベクトルグラフィックソフトのデファクトスタンダードはAdobe Illustrator(AI)ですが比較的高価なため、趣味として切断データを作成する場合にはLibreOffice Drawなど無料のベクトルグラフィックソフトを使います。

課題
自宅でLibreOffice Drawを使って切断データを作成し、SVG形式のファイルをUSBメモリに保存してレーザー加工機のあるファブ施設に向かいます。ファブ施設ではデファクトスタンダードなAIがレーザー加工機のインターフェースとなっている場合が多いので、LibreOffice DrawのSVGファイルをAIに読み込ませます。AIで開くと、一見、作成した時と同じ図形のように表示されますが、実際は同じ図形が二重になっています。そのままレーザー加工機で加工を行うとレーザーが二度通過するために多くの時間がかかったり、切断面が焦げてしまいます。慣れないAIを使って手作業で重なったパスを取り除くのはかなり苦痛な作業です。AIはプロが素早く作業ができることを目指していて、素人が使うようにはできていないのです。
SVGファイルならば全て二重になるかといえば、そんなことはありません。AIで作成した切断データをSVG形式で保存して、それをAIで読み込んだ場合は二重になるような不具合は生じません。
SVGファイルはテキストで書かれているので、テキストエディタで開いて両方のファイルを比べてみると、AIで作成したSVGファイルはヘッダーとパスしかないシンプルなファイルであることがわかりました。つまり、AI風なSVGならOK!!

無料のベクトルグラフィックソフトで作成した加工図を使って不具合なくレーザー加工をするために、「LibreOffice DrawのSVGファイルをAIで作成したSVGファイルのように変換したい」

解決方法
LibreOffice DrawのSVGファイルからAIが必要とする部分だけを抽出して新しいファイルを作成する。テキストファイルの文字列操作なので、ほとんどのプログラム言語で容易に作成することができるはずです。ここではMac OS、Windows 10、Linux用に実行ファイルを作成できるProcessing(バージョン3.3.5)を使用しました。個々のPCで実行するためには無料のJava実行環境をインストールする必要があります。Mac OSとWindows 10では動作を確認しましたが、Linuxでの動作は未確認です。

プログラムを実行し、ユーザーが変換するファイルを指定すると、「xml:space=”preserve”>」が含まれるヘッダー行と「<path fill=”none”」が含まれるパスデータだけを抽出して、ファイルの末尾に「</svg>」を置きます。そしてファイル名の末尾に「_ai」を追加した新しいファイルを作成します。

ProcessingプログラムファイルとサンプルSVGファイル
実行ファイル(Javaランタイムエンジンを別途ダウンロードする必要がある)
Windows64bit
Windows32bit
Mac OS
Linux64
Linux32
LinuxArm64
LinuxArmV6hf

その他
InkscapeのSVGファイルも同様な処理をすればAI風なSVGにできると思いますが、私にはInkscapeが使いづらいので確認する意欲がありません。Inkscapeの好きな人は多いと思いますのでどなたか検討していただけるとありがたいと感じてくれる人が多いのではないかと思います。

LibreOffice Drawは使いやすいですよ。