如何用Python遍历AutoCAD多布局/图纸空间的块属性?
解决AutoCAD多布局块属性遍历问题
你原来的代码仅遍历了当前激活布局的图纸空间(PaperSpace),要获取所有布局的块属性,需要遍历文档的Layouts集合——每个布局对应独立的图纸空间块(Block对象),通过Layout.Block属性即可访问该布局下的所有实体。
修改后的代码如下:
import win32com.client acad = win32com.client.Dispatch("AutoCAD.Application") doc = acad.ActiveDocument # 遍历所有布局 for layout in doc.Layouts: print(f"=== 布局: {layout.Name} ===") # 获取当前布局对应的图纸空间块 layout_block = layout.Block # 遍历块内的所有实体 for entity in layout_block: if entity.EntityName == 'AcDbBlockReference': if entity.HasAttributes: for attrib in entity.GetAttributes(): print(f" {attrib.TagString}: {attrib.TextString}") print("\n")
关键说明:
doc.Layouts:包含当前文档的所有图纸布局,每个Layout对象对应一个独立的图纸布局layout.Block:返回该布局对应的图纸空间块对象,所有布局内的实体都存储在这里,替代原来的PaperSpace(PaperSpace本质就是当前激活布局的Block)- 遍历每个布局的Block实体,即可获取该布局下所有带属性的块引用及其属性值
内容的提问来源于stack exchange,提问作者Vcrewchief
相关产品推荐
相关产品推荐

