用途
CAD To Data 是一个基于 DDC 方法论(第 2.4 章)的技能,用于将 CAD 和 BIM 文件转换为结构化数据。它从 Revit、IFC、DWG、DGN 等文件中提取构件属性、工程量和关系信息。
主要能力
该技能定义了以下核心数据结构:
- CADFormat:支持的 CAD/BIM 格式枚举,包括 IFC、RVT、DWG、DXF、DGN、NWD、STEP。
- ElementCategory:BIM 构件类别枚举,包括墙、楼板、屋顶、天花板、门、窗、柱、梁、楼梯、坡道、家具、设备、管道、风管、电缆桥架、空间、通用等。
- Point3D、BoundingBox3D:三维点和三维包围盒,包围盒提供 width、depth、height、volume 属性。
- MaterialInfo:材质信息,包含名称、类别、颜色、面积、体积和属性。
- CADElement:提取的 CAD/BIM 构件,包含 id、guid、名称、类别、类型名称、标高、包围盒、属性、工程量、材质和关系。
- CADLayer:CAD 图层信息,包含名称、颜色、线型、可见性和构件数量。
- CADExtractionResult:提取结果,包含文件路径、格式、构件列表、图层、标高、构件总数、类别统计、提取时间和元数据。
该技能提供以下提取器与转换器:
- IFCExtractor:从 IFC 文件提取数据,内置 IFC 类型到类别的映射(如 IfcWall 映射为 WALL,IfcSlab 映射为 FLOOR 等),支持按类别过滤,可聚合工程量。
- DWGExtractor:从 DWG/DXF 文件提取数据,支持 LINE、POLYLINE、CIRCLE、ARC、TEXT、MTEXT、INSERT、HATCH 等实体,支持按图层过滤。
- CADDataConverter:统一转换入口,自动检测文件格式,根据格式调用对应提取器,并支持输出为 JSON、CSV 或 dataframe。
使用方式
基本用法如下:
converter = CADDataConverter()
# 将 IFC 转换为结构化数据
data = converter.convert("building.ifc", output_format="json")
print(f"Total elements: {data['total_elements']}")
print(f"Categories: {data['categories']}")
# 访问构件
for element in data['elements'][:5]:
print(f" {element['name']}: {element['type']}")
提取工程量:
quantities = converter.extract_quantities(
"building.ifc",
categories=[ElementCategory.WALL]
)
其他可用方法包括:
extract_schedule(file_path, category, fields):提取指定类别的明细表数据。export_to_json(result, output_path):将提取结果导出为 JSON 文件。generate_report(result):生成提取报告,包含文件信息、构件总数、提取时间、按类别统计的构件数量、标高列表和图层列表。
适用场景
- 从 IFC 文件提取建筑构件数据并转换为结构化格式。
- 从 DWG/DXF 文件提取图层和实体信息。
- 进行工程量汇总(如按类别统计墙、门、空间等的长度、面积、体积)。
- 生成构件明细表。
- 将提取结果导出为 JSON 或生成报告。
限制
- 资料中标注生产环境应使用 ifcopenshell 处理 IFC 文件、使用 ezdxf 处理 DWG 文件,当前代码中的提取逻辑为模拟实现。
- 资料中仅展示了 IFC 和 DWG/DXF 的提取器实现,RVT、DGN、NWD、STEP 等格式在格式枚举中列出,但未提供对应的提取器实现。
- 资料中未提供安装命令、收费信息、平台要求或性能数据。