使用用于Python的DXF文件读取/写入库” ezdxf”将DXF文件转换为PNG


模块版本

python v3.8.5
ezdxf v0.14
matplotlib v3.3.1

生成样本DXF文件

*该站点的源代码已被修改。
谢谢??
image.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import ezdxf
import math

DXFVERSION  = 'R2010'
NUMCORNERS = 5

def create_dxf():
    """ 五芒星のDXFファイルを生成
    """
    # 星の角座標計算
    startangle = math.pi / 2.0
    pitchangle = math.pi * 2.0 / 5.0

    # オフセットと半径
    offset_x, offset_y, radius = 100, 100, 10

    points = []
    for i in range(0, NUMCORNERS):
        angle = startangle + pitchangle * i
        if 2.0 * math.pi < angle:
            angle = angle - 2.0 * math.pi
        x = math.cos(angle) * radius + offset_x
        y = math.sin(angle) * radius + offset_y
        points.append((x, y))

    # DXFインスタンス生成
    dxf = ezdxf.new(DXFVERSION)
    modelspace = dxf.modelspace()

    # 五芒星描画
    last, i, count = -1, 0, 0
    while count < NUMCORNERS + 1:
        if 0 <= last:
            modelspace.add_line(points[i], points[last])
        last = i
        i += 2
        if NUMCORNERS <= i:
            i -= NUMCORNERS
        count += 1

    # DXFファイル出力
    dxf.saveas('/<出力先のパス>/star.dxf')

if __name__ == "__main__":
    create_dxf()

将DXF文件转换为PNG文件

ezdxf具有将DXF文件转换为图像和PDF的附加组件,因此可以使用它进行转换。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import ezdxf
from ezdxf import recover
from ezdxf.addons.drawing import matplotlib


def convert_dxf_to_png():
    try:
        dxf, auditor = recover.readfile('/<DXFファイルのパス>/star.dxf')
    except IOError as ioerror:
        print(ioerror)
        raise ioerror
    except ezdxf.DXFStructureError as dxf_structure_error:
        print(dxf_structure_error)
        raise dxf_structure_error

    if not auditor.has_errors:
        matplotlib.qsave(dxf.modelspace(), '/<出力先のパス>/star.png')

if __name__ == "__main__":
    convert_dxf_to_png()

我能够用这么短的代码将DXF文件转换为PNG。
即使扩展名是" .jpg"或" .pdf",它也可以工作。
Python很方便! !! !!
image.png