open3dとdxfgrabberを使えばよい.
dxf2stl.py
import open3d as o3d
import dxfgrabber
# DXFを読み込み
dxf = dxfgrabber.readfile("test.dxf")
# 実線の円だけ選択
c_cirs = [e for e in dxf.entities if e.dxftype == 'CIRCLE' and e.linetype == 'CONTINUOUS']
# 立体化
mesh = None
H = 50.0 # 円筒の高さ
Z = 0.0 # 円筒を並べるZ値
for c in c_cirs:
m = o3d.geometry.TriangleMesh.create_cylinder(radius=c.radius, height=H)
m.translate([c.center[0], c.center[1], Z])
if mesh is None:
mesh = m
else:
mesh += m
mesh.compute_vertex_normals()
# STLで出力
o3d.io.write_triangle_mesh("sample.stl", mesh)
色とかレイヤー毎に高さ決めたDXF描いて,自動で立体化したい.