如何用Python为已有AutoCAD块添加属性?解决AddAttribute报错
给AutoCAD块批量添加属性的Python脚本问题解决
问题背景
需处理多个包含大量已定义块的AutoCAD文件,目标是用Python脚本为每个文件中的每个块添加3个新属性,尝试以下代码后报错:
import win32com.client import pandas as pd from pyautocad import Autocad, aDouble acad = win32com.client.Dispatch("AutoCAD.Application") doc = acad.ActiveDocument # Document object for entity in acad.ActiveDocument.ModelSpace: name = entity.EntityName if name == 'AcDbBlockReference': HasAttributes = entity.HasAttributes if HasAttributes: entity.AddAttribute(50, 0, "test", aDouble(200, 100, 0), "TEST", "TEST TEXT")
报错信息
AttributeError: <unknown>.AddAttribute. Did you mean: 'GetAttributes'?
错误原因
原代码操作的是**块引用(AcDbBlockReference)对象,但AddAttribute方法属于块定义(Block)**对象——块引用仅能读取或修改已有属性,无法添加新的属性定义。
正确代码
from pyautocad import Autocad, aDouble acad = Autocad(create_if_not_exists=True) doc = acad.ActiveDocument blocks = acad.ActiveDocument.Blocks print(blocks.ObjectName, ' 元素数量: ', blocks.Count) for block in blocks: block.addAttribute((50, 0, "test", aDouble(200, 100, 0), "TEST", "TEST TEXT"))
后续操作
添加完属性定义后,需要执行AutoCAD的ATTSYNC命令(中文为属性同步),使已插入到图纸中的块引用同步更新新添加的属性。
内容的提问来源于stack exchange,提问作者Bire
相关产品推荐
相关产品推荐

