如何从dxf块布局中提取与文本值关联的标记。
这是一个截图:
例如,TITLE是作为绘图格式布局的一部分的标题,DESC是与TITLE内容“BASE”相关联的文本标记。如何使用TITLE内容提取DESC(&TITLE)。
我尝试在记事本中查看dxf文件,但没有这些标记条目。有没有办法不仅提取文本,还提取相关标签?
正如ezdxf已经说过的那样,ezdxf使用DXF文件而不是DWG或DRW文件,与DXF不同,DWG是一种未记录的二进制编码的AutoCAD文件格式。
也许您可以将文件导出为DXF文件以使用ezdxf处理它们:
场景1,ATTRIB附加到块引用INSERT:
doc = ezdxf.readfile('YourFile.dxf')
msp = doc.modelspace()
# block reference attributes (tags) are stored in the INSERT entity
for insert in msp.query('INSERT')
print(str(insert))
for attrib in insert.attribs():
print("Tag: {}, Value: {}".format(attrib.dxf.tag, attrib.dxf.text))
场景2,ATTRIBUTE TEXT或TEXT作为模型空间或论文空间中的独立实体:
msp = doc.modelspace()
# or getting paperspace:
# psp = doc.layout('TabName')
# search for ATTRIB entities
for attrib in msp.query('ATTRIB')
print("Tag: {}, Value: {}".format(attrib.dxf.tag, attrib.dxf.text))
# search for MTEXT entities
for mtext in msp.query('MTEXT')
print("MTEXT content: {}".format(mtext.get_text())
for text in msp.query('TEXT')
print("TEXT content: {}".format(text.dxf.text)
场景3,位于BLOCK定义中的实体:
for block in doc.blocks:
print('searching in BLOCK definition {}'.format(block.name))
# search for ATTRIB entities (or MTEXT and TEXT see above)
for attrib in block.query('ATTRIB')
print("Tag: {}, Value: {}".format(attrib.dxf.tag, attrib.dxf.text))
# or like scenarion 1, search for INSERT with attached ATTRIB
for insert in block.query('INSERT'):
for attrib in insert.attribs()
print("Tag: {}, Value: {}".format(attrib.dxf.tag, attrib.dxf.text))