Openscadには.svg
ファイルや.dxf
ファイル中の指定レイヤを平面として押し出す機能、import
がある。
機能の詳しい解説は以下のサイトや、インストール時に付属しているモデリング例を見てみてほしい。
OpenSCAD User Manual/3D Modelling - Wikibooks, open books for an open world
ここでのdxfファイルは若干内部の構造が特殊なのか、jwcadで編集してみたデータの読み込みができなかった。
どうすれば平面の押し出しができるのか探していたところ、この度解決方法を発見できたため同じような悩みを抱えた人らのためにここに寄稿する。
解決方法
LibreCADで保存されたdxfファイルであれば、ヘッダ情報がopenscad側で読み込んでくれる形となるようだ。
ということで。。
まずは、以下からLibreCADをダウンロードする。
LibreCAD - Free Open Source 2D CAD
アプリを起動して、テキトーに図形でも書いてみる。
保存場所だが、さしあたり、Desktop
にファイルを保存する。
対応する.scad
ファイルを作成。中に以下のプログラムを記述する。
intersection() {
linear_extrude(height = 10, convexity = 1)
import(file = "keinz.dxf", layer = "0");
}
出力 :
解説
LibreCAD経由にすると OpenSCAD が素直に読んでくれる理由は、DXFの中身(特にヘッダやエンティティの表現形式)が DXF R12 相当で、TEXT や SOLID がレイヤ単位で分離されやすいためである。
ちなみに、Jw_cad が書き出す DXF は、基本的に AutoCAD 2004(AC1018)形式であるようだ。
- エンティティの対応表
対応しているエンティティ表を以下に配置する。
エンティティ | OpenSCAD対応 | 備考 |
---|---|---|
LINE | ✅ 対応 | 単純な線分 |
LWPOLYLINE | ✅ 対応 | 推奨、R12形式で安定 |
ARC | ✅ 対応 | 円弧 |
CIRCLE | ✅ 対応 | 円 |
SPLINE | ❌ 非対応 | ポリライン化が必要 |
TEXT / MTEXT | ❌ 非対応 | 寸法線や注記は除外 |
SOLID | ❌ 非対応 | 塗りつぶしは無視される |
対応してないエンティティ、これを行うとOpenscad側で注意が出る。
WARNING: Unsupported DXF Entity 'SOLID' (4) in layer '0' of Untitled.dxf
WARNING: Unsupported DXF Entity 'MTEXT' (2) in layer '0' of Untitled.dxf
これは、レイヤーを作図補助レイヤーに設定(チェックを付ける)すれば無くなる。
スプラインを認識してもらうには
スプライン図形を認識してもらうには、ポリラインに分解してしまえばよい。
画面中でスプラインのエンティティを選択し、
変更・修正
よりポリラインを分解(p)
を押すことでポリラインに分解できる。
参考
検索用語 : openscad dxf