dxf ドキュメントの LWPOLYLINE から LINES 座標を取得するにはどうすればよいですか?
次のコードがあります。
import sys
import ezdxf
Coordenadas = str()
Coordenadas_texto = str()
try:
doc = ezdxf.readfile(str(arq)+".dxf")
except IOError:
print('Erro de arquivo. Certifique-se que é um arquivo .dxf')
sys.exit(1)
except ezdxf.DXFStructureError:
print('Arquivo invalido ou corrompoido.')
sys.exit(2)
msp = doc.modelspace()
for insert in msp.query('INSERT'):
block = doc.blocks[insert.dxf.name]
for e in block:
if e.dxftype() == 'LINE':
Coordenadas = Coordenadas + str(e.dxf.start) + "\n"
Coordenadas = Coordenadas + str(e.dxf.end) + "\n"
上記for
は、ブロック「INSERT」を取得し、それらを分割して、LINESのみを取得できます。LWPOLYLINE についても同じことを試みましたが、うまくいきませんでした。
以下のコードはすべての座標を取得しますが、行ごとにフィルターして座標を取得する必要があります。
for flag_ref in msp.query('LWPOLYLINE'):
for entity in flag_ref:
print(entity)
以下のコードが突然動かなくなりました。ライブラリ ezdxf が変更されたようです。エラーが発生します
「LWPolyline」オブジェクトには属性「virtual_entities」がありません
for flag_ref in msp.query('LWPOLYLINE'):
for entity in flag_ref.virtual_entities():
if entity.dxftype() == 'LINE':
Coordenadas = Coordenadas + str(entity.dxf.start)+ "\n"
Coordenadas = Coordenadas + str(entity.dxf.end)+ "\n"