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

如何用ezdxf筛选指定图层及named view内的DXF文本并存入DataFrame

从DXF模型空间的指定命名视图/图层提取文本并存入DataFrame

实现步骤

  • 遍历DXF文件中所有命名视图,获取每个视图的边界框(extmin为左下角坐标,extmax为右上角坐标)
  • 对每个视图,筛选出图层为"text"且插入点在视图边界框内的单行TEXT对象
  • 收集每个视图的文本数据,最终存入Pandas DataFrame

完整代码

import ezdxf
import pandas as pd

filepath = "C:/MBS_JOBS-16/8741-22/8741-22_(DTL).dxf"
doc = ezdxf.readfile(filepath)
msp = doc.modelspace()

# 存储所有视图的文本结果
all_view_data = []

# 遍历所有命名视图
for view in doc.views:
    # 获取视图的边界范围
    view_min = view.dxf.extmin
    view_max = view.dxf.extmax
    view_name = view.dxf.name
    
    # 筛选符合条件的文本对象
    for text_obj in msp.query('TEXT[layer=="text"]'):  # 仅处理单行TEXT,需包含MTEXT可改回原查询语句
        insert = text_obj.dxf.insert
        # 判断插入点是否在视图边界内
        if (view_min.x <= insert.x <= view_max.x) and (view_min.y <= insert.y <= view_max.y):
            all_view_data.append({
                "视图名称": view_name,
                "文本内容": text_obj.dxf.text,
                "插入点X": insert.x,
                "插入点Y": insert.y
            })

# 转换为DataFrame
result_df = pd.DataFrame(all_view_data)
print(result_df)

关键说明

  • doc.views:直接获取DXF文件中所有命名视图集合
  • 边界框判断:通过对比文本对象的insert坐标与视图的extmin/extmax,精准筛选视图内的文本
  • 数据结构:用字典存储每个文本的关联信息(视图名称、内容、坐标),便于后续DataFrame的结构化处理
  • 可扩展性:若需包含MTEXT,只需将查询语句改回'TEXT MTEXT[layer=="text"]'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:20:31