0

我有 .dxf 格式的绘图文件。每个文件由不同的形状组成,如下图所示。

绘画

我想使用 Python 读取所有维度。我开始了解ezdxf包裹。所以我能够在 Python 环境中加载文件并使用下面的代码获得可用于绘图的形状,但我不知道如何获取尺寸。

提前致谢。

import ezdxf as ez
import sys

doc = ez.readfile("Drawing1.dxf")
msp = doc.modelspace()

for i in msp:
    print(i)

输出

 - LWPOLYLINE(#259)
 - CIRCLE(#261)
 - LWPOLYLINE(#262)
 - ELLIPSE(#264)
 - LINE(#265)
 - CIRCLE(#266)
4

1 回答 1

3

您只需要像本例中给出的那样指定:

for e in msp:
    print(e)
    if e.dxftype() == 'LINE':
        dl = math.sqrt((e.dxf.start[0] - e.dxf.end[0])**2 + (e.dxf.start[1])**2)
        print('linea:' + str(dl))
        longitud_total = longitud_total + dl
    elif e.dxftype() == 'CIRCLE'
        dc = 2 * math.pi * e.dxf.radius
        print('radio: ' + str(e.dxf.radius))
        print('circulo: ' + str(dc))
        longitud_total = longitud_total + dc
    elif e.dxftype() == 'SPLINE':
        puntos = e.control_points()
        for i in range(len(Puntos) -1):
            ds = math. sqrt ((puntos[i][0]-puntos[i+1][0])**2 + (puntos[i][1] - puntos[i + 1][1])**2)
            print('curva:' + str(ds))
            longitude total = longitud_total+ ds

注意:由于软件包折旧,最后一部分不起作用,但您可以从中获得一些见解。我得到了如下所示的输出:只需将计算添加到您的代码中并获得所需的尺寸。

LWPOLYLINE(#77)
CIRCLE(#79)
radio: 1042.834851203736
circulo: 6552.324614898124
CIRCLE(#7A)
radio: 973.9919030240113
circulo: 6119.771614392353
CIRCLE(#7B)
radio: 922.8928365325164
circulo: 5798.706710602399
LWPOLYLINE(#7C)
ARC(#7D)
SPLINE(#7E)
于 2021-06-02T08:23:07.743 回答