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

使用ezdxf提取块属性至DataFrame遇问题:自定义属性未返回

提取CAD块属性(含自定义属性)并存储为DataFrame

问题分析

你当前代码的核心问题是:遍历了模型空间所有实体,且attribs()方法仅返回图元的基础系统属性(如handle、layer),而块的自定义属性(用户添加的属性字段)是块引用(INSERT)的附属ATTRIB对象,需要单独提取。

修正代码

import ezdxf as ez
import pandas as pd

# 读取DXF文件
doc = ez.readfile("data.dxf")
msp = doc.modelspace()

# 用于存储所有块属性的列表
block_records = []

# 仅遍历模型空间中的块引用实体
for entity in msp:
    if entity.dxftype() == "INSERT":
        # 获取块引用的基础属性
        base_props = entity.attribs()
        # 提取自定义属性(标签+值)
        custom_props = {}
        for attrib in entity.attribs:
            custom_props[attrib.dxf.tag] = attrib.dxf.text
        # 合并基础属性与自定义属性
        full_record = {**base_props, **custom_props}
        block_records.append(full_record)

# 转换为DataFrame
entities_df = pd.DataFrame(block_records)
print(entities_df)

关键细节

  • 筛选块引用:用entity.dxftype() == "INSERT"精准定位块引用实体,避免处理直线、圆等无关图元
  • 提取自定义属性:块的自定义属性存储在entity.attribs列表中,每个ATTRIB对象的dxf.tag是属性名称,dxf.text是属性值
  • 属性合并:通过字典解包将基础系统属性与自定义属性整合为一条完整记录,确保DataFrame包含所有需要的字段

内容的提问来源于stack exchange,提问作者Lucas Paiva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:22:20