OpenSCADにSVGを読み込む:寸法を決めて押し出せる形状へ
OpenSCADへSVG形状を読み込み、穴と寸法を確認してから、寸法を決めた形状を押し出します。白い中心を本当の穴にするために修正が必要な理由も解説します。
目次
OpenSCADでのSVG読み込みは、import("emblem.svg");から始めます。これで2次元の形状が読み込まれます。立体にするには、読み込みをlinear_extrude()で囲みます。高さを加える前に、輪郭、空いた部分、目的の幅を確認してください。ブラウザーで正しく見える図案にも、背景長方形や、穴のつもりの場所に白い図形が含まれている場合があります。
このガイドでは、トレースした花の紋章を使い、こうした確認を分けて説明します。元画像、実際のPerfectVector出力、明示的に編集したSVGにより、CAD工程の前に何を変えたかが分かります。SVGの形状は確認済みですが、以下のOpenSCADの例は自分のファイルで実行するための手順であり、試験済みのOpenSCADモデルの結果ではありません。
製造したい形状から始める
元のベクターファイルがあるなら、それを使います。既存SVGのスクリーンショットを再トレースすると手間が増え、輪郭が変わる可能性があります。PNG、JPG、生成画像しかないなら、PerfectVectorで3Dプリント用SVGを準備し、ダウンロードしたパスを確認してからCADに読み込みます。
最初の押し出しには、十分に広い開口部がある太いシルエットを1つ選びます。小さな文字、細い橋状の部分、離れた点、装飾的なテクスチャは後の版に回します。画面上の図案のサイズだけでは、最終的な部品サイズでそれらが残るかは分かりません。
作業用ファイルでは、3つの問いに答えられる必要があります。
- どの領域を固体の材料にするか。
- どの領域を部品を貫通する空間として残すか。
- 完成する輪郭の幅を何ミリメートルにするか。
より広い3Dプリント用の画像からSVGへの手順では元画像の選び方を扱っています。ここでの作業は、意図した形状と寸法で、その輪郭をOpenSCADへ取り込むことです。
白い中心がそのまま穴になるとは限らない
用意した1,254 × 1,254のラスターの花をPerfectVectorで変換し、変更していないSVGを調べました。3本の閉じたパスがありました。ほぼ白い背景長方形、黒い花のシルエット、ほぼ白い中心の円です。埋め込みのラスター画像はありませんでした。
白いページでは中心が空に見えましたが、実際には別の塗られた図形でした。その円だけを削除すると、下にある塗りつぶされた黒い花が現れます。穴を開けることにはなりません。
別の作業用SVGでは、確認済みの背景を削除し、元の花と円の輪郭を、偶奇の塗りルールを使う1つの複合パスにしました。輪郭の座標は変えていません。編集したSVGを描画し、中心と花の外側のピクセルが透明で、その間の花弁部分が不透明な黒であることを確認しました。これはSVGの空白部分を確認するもので、有効なOpenSCADの立体や印刷可能な部品を証明するものではありません。

OpenSCADの読み込み機能は、塗られた見た目をモデリングの指示として扱うのではなく、閉じた図形の形状を使います。文書に記載された対応範囲にも、テキスト、クリッピング、マスキングの制限があります。CAD用の準備では、材料にしたい部分を明確なパスにし、穴にしたい部分を本当の切り抜きにしてください。SVG読み込みのドキュメントをご覧ください。
ベクターエディターでコピーを編集します。外側のシルエットと内側の図形を特定し、外側から内側を減算して結果を保存します。一時的に対照的な背景を置き、開口部が透明なことを確認します。CAD用コピーを保存する前に、その一時的な背景は削除してください。シルエットに複数の穴があるなら、それぞれ確認します。
準備したSVGを2D形状として読み込む
CAD用に準備したファイルを、OpenSCADドキュメントの隣へemblem-cad.svgとして保存します。最初は次だけを使います。
import("emblem-cad.svg", center = true);読み込みのプレビューを上から見ます。図案を囲む長方形がなく、目的の輪郭と開口部が見えるはずです。center = trueは、読み込んだ境界ボックスを中央に配置します。パスの修正や不要な図形の削除はしません。OpenSCADのSVG読み込みリファレンスでは、このパラメーターと既定の動作を説明しています。
何も読み込まれない場合、まずファイル名と相対的な保存場所を確認し、コンソールのメッセージを読みます。ベクターエディターでSVGを開き、埋め込み画像ではなく実際の図形があるかを確認してください。.svgという拡張子だけでは、その画像がトレースされたとはいえません。
中心が塗りつぶされたら、作業用SVGへ戻ります。見える色を白へ変えることは修正になりません。長方形が現れたら、別の押し出し設定を試す前に背景の形状を確認します。
高さを加える前に幅を明確に設定する
SVGの寸法は、ドキュメントサイズ、単位、座標系で表されます。OpenSCADのdpiパラメーターは、対象の寸法に明示的な単位がない、または寸法が欠けている場合に適用されます。どんな場合にも使える縮尺修正ではありません。形状がそれらしく見えるまでDPIを何度も変えないでください。読み込みマニュアルは、適用される条件を説明しています。
全体の幅を40 mmにしたい紋章なら、その寸法を明確に設定します。
resize([40, 0, 0], auto = true)
import("emblem-cad.svg", center = true);ここではresize()でX方向の寸法を40にし、auto = trueで未指定の寸法を比例して拡大縮小します。既存の寸法に倍率を掛けるscale()とは異なります。変換のリファレンスは、両方の操作を説明しています。
この幅が有効なのは、不要な背景形状を除いた後です。そうしなければ、紋章ではなく周囲の長方形のサイズを決める可能性があります。アプリケーション間で既知の実寸を保つ必要があるなら、毎回読み込みサイズを上書きするのではなく、ドキュメントの単位を修正して確認します。SVGが誤ったサイズで読み込まれる場合のガイドでは、その違いを順に説明しています。
40ミリメートルは寸法の例であり、推奨最小値ではありません。選んだサイズで、最も細い橋状の部分、中央の開口部、独立した領域を、プリンター、材料、部品の要件と照らして確認します。
押し出し、レンダリングし、書き出したモデルを確認する
2Dの輪郭と幅が正しくなったら、直線的な押し出しを加えます。
linear_extrude(height = 3)
resize([40, 0, 0], auto = true)
import("emblem-cad.svg", center = true);内側から外側へ読んでください。準備した形状を読み込み、幅を設定し、高さ3 mmを与えます。これは2Dサブシステムのマニュアルにある基本的なSVG押し出しの形です。高さも例として選んだ値であり、構造上の推奨値ではありません。
最初のモデルはシンプルに保ちます。ねじり、テーパー、結合、表面への配置を追加すると、元の読み込みが正しかったか分かりにくくなる場合があります。上面と側面を確認してください。押し出し全体を貫通する穴が残り、目的の輪郭に高さが付いている必要があります。
F6で完全なレンダリングを行い、エラーを確認してから、次のアプリケーションが必要とする形式がSTLなら、モデルをSTLとして書き出します。STL書き出しガイドは、レンダリングと書き出しを区別しています。プレビューの成功だけでは最終的な合格確認にはなりません。
書き出したファイルをスライサーで開きます。全体の寸法、開口部、部品を通る層を確認します。離れた装飾部分は、有効な形状でも目的のオブジェクトに適さない場合があります。整ったSVGと完了したレンダリングが、その設計判断を代わりに行うことはありません。
どの段階で問題があるかを調べる
| 見える症状 | 最初に確認するもの | 次に役立つ操作 |
|---|---|---|
| 塗りつぶされた長方形 | トレースされた背景パス | 作業用SVGで、確認済みの背景を削除する。 |
| 中心が埋まる | 本当の穴ではなく白い重ね図形 | シルエットから中心を減算し、透明性を再確認する。 |
| 輪郭のサイズが違う | ドキュメント寸法、単位、不要な境界範囲 | 元の単位を確認するか、比率を保って目的の幅に設定する。 |
| 線が消える、または太さが変わる | 開いたパスか閉じたパスか | 材料にしたい部分を明確な塗りのある図形へ変換する。 |
| プレビューはよくてもレンダリングに失敗する | コンソールのエラーと疑わしいパス交差 | 読み込みだけに簡略化し、元の形状を修正する。 |
| スライサーで小さな細部が消える | 最終縮尺での特徴のサイズ | デザインを拡大または簡略化し、層を再確認する。 |
SVG押し出しのトラブル対処ガイドでは、途切れた輪郭などの形状修正を詳しく扱っています。未加工のSVGを作業用コピーとともに残し、変換による変更とCAD用に行った変更を区別できるようにします。
よくある質問
OpenSCADでSVGを直接読み込めますか?
はい。import("emblem.svg");で対応する2D形状を読み込みます。パスと寸法を確認してから、読み込みをlinear_extrude()で囲んで3D形状を作ります。
SVGの穴がOpenSCADで埋まるのはなぜですか? 穴に見えるものが、塗りつぶされたシルエットに重なった白いオブジェクトかもしれません。作業用SVGで本当の切り抜きを作り、対照的な背景で確認してから再度読み込みます。
読み込んだSVGのサイズはどう制御しますか?
まずドキュメントの寸法と単位を確認します。全体の幅を指定するには、押し出し前にresize([40, 0, 0], auto = true)を適用し、40を目的の幅へ置き換えます。境界範囲のサイズを決める前に、不要な背景形状を削除してください。
画像をSVGに変換すれば、そのまま印刷できますか? いいえ。変換で得られるのは、確認して準備するためのパスです。適切な閉じた形状、意図した穴と寸法、有効な押し出し、個別のデザインと工程に合うスライサーでの確認がまだ必要です。
参考資料
- OpenSCADのSVG読み込みリファレンス — 対応する形状、読み込みパラメーター、単位、制限。
- OpenSCADの変換 — 比率を保つサイズ変更、拡大縮小、変換の順序。
- OpenSCADの2Dサブシステム — 読み込んだSVG形状の直線的な押し出し。
- OpenSCADのSTL書き出し — 完全なレンダリングと書き出し工程。
紋章がまだピクセルでしか存在しないなら、ラスター図案をSVGパスへ変換し、シルエット1つと開口部1つを確認してからOpenSCADモデルを作ります。元のベクターですでに必要な形状が得られる場合は、それを残してください。

