You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:44:55