Files
zwt13703 4983048268 feat: 新增 CAD 元素识别模块,支持柱子/文字/墙体候选检测
- 新增 element_detector.py,包含 ColumnDetector、TextExtractor、WallCandidateDetector
- ColumnDetector:通过 INSERT 块名关键词识别柱子候选
- TextExtractor:提取 TEXT/MTEXT 内容、坐标、图层
- WallCandidateDetector:按长度阈值筛选 LINE/LWPOLYLINE,排除标注图层
- 采用 OOP 设计,所有规则可配置,保留原始 handle 追溯
- 输出 element_detection.json 和 element_report.txt
- 更新 main.py 集成元素识别步骤
2026-07-08 14:39:54 +08:00
..

DXF 解析工具

解析 DXF 格式的 CAD 图纸文件,输出结构化的图层分析、实体统计、块引用和文本信息。

目录结构

experiments/dxf-parser/
├── main.py              # 入口脚本
├── layer_analysis.py    # 图层分析模块
├── entity_analysis.py   # 实体分析模块
├── requirements.txt     # 依赖
├── output/              # 输出目录
│   └── {文件名}_cad_analysis.json
└── README.md

安装依赖

cd experiments/dxf-parser
pip install -r requirements.txt

使用方式

  1. 将要解析的 DXF 文件放入 samples/ 目录
  2. 修改 main.py 中的 DXF_FILE 变量指向目标文件
  3. 运行:
python main.py

输出说明

终端会打印解析摘要(图层、实体类型统计、块引用、文本内容),同时在 output/{文件名}_cad_analysis.json 中生成结构化 JSON

{
  "file_info": {
    "filename": "洗浴中心C-48.dxf",
    "dxf_version": "AC1032",
    "encoding": "gbk",
    "units": null,
    "extents": { "min": [...], "max": [...] },
    "total_entities": 719
  },
  "layers": [
    {
      "name": "DOOR",
      "entity_count": 52,
      "entity_types": ["INSERT", "LINE"],
      "suggested_role": "门窗"
    }
  ],
  "entities": {
    "LINE": 321,
    "TEXT": 71
  },
  "blocks": [
    {
      "block_name": "A$C6B90F135",
      "count": 8,
      "inserts": [...]
    }
  ],
  "texts": [
    {
      "handle": "2A",
      "layer": "TEXT",
      "type": "TEXT",
      "content": "办公室",
      "insert": [150, 300]
    }
  ]
}

模块说明

  • layer_analysis.py:遍历所有图层,统计每层实体数量和类型,基于常见命名规则推断图层角色(仅作建议)
  • entity_analysis.py:统计模型空间中各实体类型数量,对 INSERT 实体按块名聚合,提取所有 TEXT/MTEXT 文本内容