4983048268
- 新增 element_detector.py,包含 ColumnDetector、TextExtractor、WallCandidateDetector - ColumnDetector:通过 INSERT 块名关键词识别柱子候选 - TextExtractor:提取 TEXT/MTEXT 内容、坐标、图层 - WallCandidateDetector:按长度阈值筛选 LINE/LWPOLYLINE,排除标注图层 - 采用 OOP 设计,所有规则可配置,保留原始 handle 追溯 - 输出 element_detection.json 和 element_report.txt - 更新 main.py 集成元素识别步骤
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
使用方式
- 将要解析的 DXF 文件放入
samples/目录 - 修改
main.py中的DXF_FILE变量指向目标文件 - 运行:
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 文本内容