0

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"
4

1 に答える 1