Python 3.x 是否可以使用ezdxf定位现有图层上的文本?
我想在一个图层上获取多个Python 3.x 是否可以使用ezdxf定位现有图层上的文本?,python-3.x,autocad,dxf,ezdxf,Python 3.x,Autocad,Dxf,Ezdxf,我想在一个图层上获取多个文本或多行文本位置信息,但我不知道如何获取 请给出一些建议。可以在for中找到演示如何完成此任务的教程和示例 例如,要获取驻留在模型空间特定层上的所有单行文本(text)和多行文本(MTEXT)的集合,可以使用: msp = doc.modelspace() textset = msp.query('TEXT MTEXT[layer=="YourLayerHere"]') 获取此集合后,您可以迭代实体并查询插入点: for e in msp.query('TEXT M
文本
或多行文本
位置信息,但我不知道如何获取
请给出一些建议。可以在for中找到演示如何完成此任务的教程和示例 例如,要获取驻留在模型空间特定层上的所有单行文本(
text
)和多行文本(MTEXT
)的集合,可以使用:
msp = doc.modelspace()
textset = msp.query('TEXT MTEXT[layer=="YourLayerHere"]')
获取此集合后,您可以迭代实体并查询插入点:
for e in msp.query('TEXT MTEXT[layer=="YourLayerHere"]'):
if e.dxftype() == 'MTEXT' or (e.dxf.valign == 0 and e.dxf.halign in [0,3,5]):
print("Position: %s\n" % e.dxf.insert)
else:
print("Position: %s\n" % e.dxf.align_point)
要选择多个实体类型,请使用:“TEXT-MTEXT[layer==…]”@mozman我最初认为查询语言字符串可能是用类似于AutoLISP
ssget
过滤器列表的逻辑实现的,其中列表具有隐式和
逻辑,因此,TEXT和MTEXT
将永远不会获得任何结果,因为实体类型不能同时为这两种类型。您是说ezdxf实现了一个隐式的inclusive或逻辑,使得TEXT-MTEXT
返回TEXT
或MTEXT
(或两者都返回)?另外,*TEXT
是否可以同时匹配这两种类型?实体查询将作为隐式或
操作实现,并返回所有列出的实体类型。*
是一个特殊的名称,不是通配符,代表所有实体类型,因为我认为实体类型的通配符没有意义“*TEXT”
有效,但返回所有实体类型,“*TEXT”
不返回任何内容,因为搜索的是字面上的*TEXT
。但是我在v0.10中添加了一个排除功能:“*!LINE”
,返回除LINE
之外的所有实体类型,这可能很有用。@Lee_Mac-测试提到Lee Mac,这行吗@LeeMac
消失。@mozman感谢您的澄清-我已经更新了上面的答案。我原以为它需要'TEXT[layer==“yourlayerher”]MTEXT[layer==“yourlayerher”]
,否则我会假设它将在任何层上获得TEXT
,并在指定层上获得MTEXT
。关于提及:由于帖子所有者总是得到通知,因此提及变得多余,因此会自动消失。