SuperAPI AI 工具集

cad-to-data

数据与分析

查看项目

更新于 10-15 11:42

技能介绍

用途

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 等格式在格式枚举中列出,但未提供对应的提取器实现。
  • 资料中未提供安装命令、收费信息、平台要求或性能数据。