INSERTタグを使用して、BLOCKREFERENCESとして図面に挿入されるパターンタイプとともにHATCHエンティティを抽出しようとしました。dxfの図面はhttps://drive.google.com/open?id=1SnGDaIh8XiMe0QKAQy1RXzpT-rLNcLk7です。
python-3.6で更新されたパッケージezdxf-0.12を使用して次のコードを使用しました
import ezdxf
import argparse
# construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--input", required=True,
help="path to input dxf file")
args = vars(ap.parse_args())
file = args["input"]
doc = ezdxf.readfile(file)
msp = doc.modelspace()
for flag_ref in msp.query('INSERT'):
for entity in flag_ref.virtual_entities():
if entity.dxftype() == 'HATCH':
print("HATCH", entity.dxf.pattern_name)
コードは、ANSI31パターンを持つHATCHエンティティを出力しませんでした。dxfファイルには2つあり、Autocadで表示できます(または通常のテキストエディタを使用して検索することもできます)。指定されたdxfファイルにSOLIDパターンを持つHATCHエンティティが通常どおりに印刷されたことに注意してください。
コードまたはパッケージアップデートにバグはありますか?
ブロック「TC」のブロック参照#385および#38Eには、不均一なスケーリング(-1、1、1)があり、ezdxfはデフォルトで無視します(ミラーリングは不均一なスケーリングとほぼ同じ複雑さです)。明示的に非均一スケーリングをアクティブ化する必要があります。による均一なスケーリングvirtual_entities(non_uniform_scaling=True)
。ただし、スケーリングが均一でない場合、一部のエンティティで誤った結果が生成されます。これはまだ実験的な機能です。また、HATCHエンティティにはバグがあり、ezdxfの次のリリースv0.12.1で修正される予定です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加