def convert_dxf_to_svg(dxf_file_path, svg_file_path):
# 读取DXF文件
dxf = dxfgrabber.readfile(dxf_file_path)
# 找到DXF中的最大和最小坐标值,以计算视图框
min_x = min(vertex[0] for entity in dxf.entities for vertex in entity.points)
max_x = max(vertex[0] for entity in dxf.entities for vertex in entity.points)
min_y = min(vertex[1] for entity in dxf.entities for vertex in entity.points)
max_y = max(vertex[1] for entity in dxf.entities for vertex in entity.points)
width = max_x - min_x
height = max_y - min_y
# 计算平移量,将图像向右下方平移
offset_x = 25 # 设置X轴平移量
offset_y = 25 # 设置Y轴平移量
# 创建SVG绘图对象
svg_drawing = Drawing(svg_file_path, profile='tiny', size=(f"{width + 50}px", f"{height + 50}px"))
# 遍历DXF文件中的实体
for entity in dxf.entities:
# 处理LWPOLYLINE实体
if entity.dxftype == 'POLYLINE':
polyline = entity
vertices = polyline.points
# 创建多边形的点坐标列表,并进行平移
# points = [(vertex[0] - min_x, max_y - vertex[1]) for vertex in vertices]
points = [(vertex[0] - min_x + offset_x, max_y - vertex[1] + offset_y) for vertex in vertices]
# 创建多边形,设置填充和边框颜色属性
polygon = svg_drawing.polygon(points=points, fill="#FFFFFF", stroke="#000000")
# 将多边形添加到SVG绘图对象中
svg_drawing.add(polygon)
# 保存SVG文件
svg_drawing.save()