どうやら、表の各行を INSERT ブロック図で作成し、 各カラムの枠は ATTDEF、枠に表示する値は ATTRIB による拡張属性で、 作成することもできるみたい。
このような表の内容を ezdxf for python で抽出する場合は以下
import ezdxf import re def main(): target_dxf = 'DXFS/hogehoge.dxf' target_doc = ezdxf.readfile( target_dxf ) selector = {"dxftype":"INSERT","name":"NS_OyaBuhinA_*"} inserts = query_entities_from_entitydb( target_doc, selector ) for i, insert in enumerate( inserts ): # 表示/非表示 属性 #if hasattr(insert.dxf, "invisible"): # print( insert.dxf.invisible ) # ATTRIB for attrib in insert.attribs: print( attrib, attrib.dxfattribs() ) # ATTDEF for attdef in target_doc.blocks.get( insert.dxf.name ): if attdef.dxftype() != "ATTDEF": continue print( attdef, attdef.dxfattribs() ) def query_entities_from_entitydb( doc, selector ): query_str = "*" if "dxftype" in selector: query_str = selector["dxftype"] attr_conds = {} if "name" in selector: re_pattern = selector["name"].replace("*",".*") attr_conds["name"] = re.compile(re_pattern) ret_entities = [] for entity in doc.entitydb.query( query_str ): is_found = True for attr_key, attr_val in attr_conds.items(): if attr_key=="name" and not attr_val.match( entity.dxf.name ): is_found = False break if is_found == True: ret_entities.append( entity ) return ret_entities if __name__ == '__main__': main()