Pythonのezdxfを使ってDXFファイルを読んでみる
2021/09/18 categories:Python| tags:Python|ezdxf|
Pythonのezdxfを使ってDXFデータを読み込んでみました。
テスト用のDXFデータ
Solid Edge 2D Drafting 2021を使用して簡単な絵を書いて、DXFデータとして保存したデータを使用しました。
DXFファイルを読み込む
readfileでファイル名を指定するとDXFデータを読み込み、ezdxf.document.Drawingのオブジェクトとして読み込めます。DXFを読み込むだけのコードは下記の通りです。
import ezdxf
dxf = ezdxf.readfile('Draft1.dxf')
print(dxf)
DXFファイルの全てのグラフィカルエンティティを取得
DXFのEntitySectionを全て取得するにはezdxf.document.Drawing.entitiesで取得できます。EntitySectionは線や文字などのグラフィカルなデータで、図面として描画されるデータらしいです。EntitySectionを5個だけ取得するコードは下記の通りです。
import ezdxf
dxf = ezdxf.readfile('Draft1.dxf')
entities = [ entity for entity in dxf.entities ]
for entity in entities[:5]:
print( type(entity), entity )
結果は下記の通りです。
<class 'ezdxf.entities.line.Line'> LINE(#6F)
<class 'ezdxf.entities.line.Line'> LINE(#70)
<class 'ezdxf.entities.line.Line'> LINE(#71)
<class 'ezdxf.entities.line.Line'> LINE(#72)
<class 'ezdxf.entities.line.Line'> LINE(#73)
テキストを全て取得する
EntitySectionには以下のようなデータがあるようです。
この中から文字列に関係あると思うのはMTextとTextだと思うので、これらを下記のコードで全て取得します。
import ezdxf
from ezdxf.entities.mtext import MText
from ezdxf.entities.text import Text
dxf = ezdxf.readfile('Draft1.dxf')
for entity in dxf.entities:
if type(entity) is MText or type(entity) is Text:
print( entity.plain_text() )
実行結果は以下のように、DXFの全ての文字列が表示されます。
注記1.指示なきエッジ部は糸面取りのこと。
だれ側
あああ
DRAWN
CHECKED
ENG APPR
MGR APPR
UNLESS OTHERWISE SPECIFIED
DIMENSIONS ARE IN MILLIMETERS
ANGLES ±X.X°
2 PL ±X.XX 3 PL ±X.XXX
NAME
DATE
Solid Edge
TITLE
SIZE
A2
DWG NO
REV
SCALE:
WEIGHT:
REVISION HISTORY
REV
DESCRIPTION
DATE
APPROVED
同様に、ezdxfを使用すればDXFデータから色々なデータが取得できます。データの取得だけではなく、データの作成なども出来るようです。