如何使用 dxfgrabber 或 ezdxf 包从 dxf 文件中查找实体的长度
how to find length of entity from dxf file using dxfgrabber or ezdxf packages
我正在尝试从 dxf 文件中找到样条曲线的总长度(周长)和面积。
dxfgrabber 或 ezdxf 中是否有任何函数可以从 dxf 文件中查找实体的总长度?
dxfgrabber和ezdxf只是DXF格式的接口,不提供任何CAD或计算功能,DXF实体的几何长度不是DXF格式的可用属性。
你可以遍历实体,每个实体都有组成它的线的坐标,然后你可以用这些点来计算实体的长度。
此代码计算.DXF 文件中直线、曲线和圆的长度
import ezdxf
import math
dwg = ezdxf.readfile("arc.dxf")
msp = dwg.modelspace()
longitud_total = 0
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]-
e.dxf.end[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.get_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))
longitud_total = longitud_total + ds
print('Longitud Total: '+ str(longitud_total))
我正在尝试从 dxf 文件中找到样条曲线的总长度(周长)和面积。 dxfgrabber 或 ezdxf 中是否有任何函数可以从 dxf 文件中查找实体的总长度?
dxfgrabber和ezdxf只是DXF格式的接口,不提供任何CAD或计算功能,DXF实体的几何长度不是DXF格式的可用属性。
你可以遍历实体,每个实体都有组成它的线的坐标,然后你可以用这些点来计算实体的长度。 此代码计算.DXF 文件中直线、曲线和圆的长度
import ezdxf
import math
dwg = ezdxf.readfile("arc.dxf")
msp = dwg.modelspace()
longitud_total = 0
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]-
e.dxf.end[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.get_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))
longitud_total = longitud_total + ds
print('Longitud Total: '+ str(longitud_total))