問題
Autodesk Fusionで設計した3Dモデルから、レーザー加工機用のデータを作成し、アクリルやMDFなどの板から部品を切り出すことも多いでしょう。この場合、Autodesk FusionのスケッチをDXF形式で保存することと思います。ところが、スプライン曲線を含むスケッチをDXF形式で保存して、Inkscape等で開くとスプライン曲線が表示されないことがあります。
原因
Autodesk Fusionでは、5次のスプラインを用いて滑らかな曲線を実現しています。一方、他の多くのソフトでは3次のスプラインしかサポートしていません。そのため、Fusionから書き出したDXFファイルを他のソフトで読み込むと、スプライン曲線が表示されないことがあります。
解決方法
スプラインをポリラインに変換することで解決できます。ポリラインとは連続した線分の集まりです。曲線を細かい線分の集まりによって近似します。線分の数がじゅうぶん多ければ、ほぼ滑らかな曲線に見えます。レーザー加工の場合、デザインにもよるでしょうが、線分の数は100もあればじゅうぶんなように感じます。
PythonでDXFファイルを変換するスクリプトを作成しました。
まず、ezdxfライブラリをインストールします。
pip install ezdxf
Pythonスクリプトを以下に示します。
import ezdxf
# スプラインをポリラインに変換
# input_file : 入力ファイル名 (DXF)
# output_file : 出力ファイル名 (DXF)
# segments : 線分の数
def spline_to_polyline(input_file: str, output_file: str, segments: int = 100):
# DXFファイルを読み込み、モデル空間を取得
doc = ezdxf.readfile(input_file)
msp = doc.modelspace()
# モデル空間に含まれる各々のスプライン要素をポリライン要素に変換
for spline in msp.query("SPLINE"):
# スプラインを、指定した数の線分で近似し、その頂点を取得
points = spline.construction_tool().approximate(segments)
# 取得した頂点から新しいポリラインを作成してモデル空間に追加
msp.add_lwpolyline(points, format="xy", close=False)
# 元のスプラインを削除
msp.delete_entity(spline)
# DXFファイルに保存
doc.saveas(output_file)
print(f"スプラインがポリラインに変換され、{output_file}に保存されました。")
# 使い方
input_dxf = "input.dxf"
output_dxf = "output.dxf"
spline_to_polyline(input_dxf, output_dxf)
1
投稿者の人気記事
-
lipoyang
さんが
昨日の12:51
に
編集
をしました。
(メッセージ: 初版)
-
lipoyang
さんが
昨日の13:05
に
編集
をしました。
-
lipoyang
さんが
昨日の14:44
に
編集
をしました。
ログインしてコメントを投稿する