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

如何无需SOLIDWORKS从STEP文件提取数据存入数据库?

从STEP文件提取CAD数据的无依赖解决方案

针对无需依赖SolidWorks或第三方查看器,提取STEP文件中零件属性、装配体BOM并入库的需求,以下是可落地的最优方案:

核心认知前提

STEP文件(以AP203/AP214为主)是结构化纯文本格式,但质量、自定义属性这类非几何数据仅在CAD导出时明确勾选才会被写入。如果原导出流程未配置这些选项,STEP文件中不会包含对应数据,需先规范导出配置。


零件数据提取(尺寸、体积、质量、自定义属性)

几何数据(尺寸、体积)

使用开源CAD几何库直接解析STEP,无需任何商业软件:

  • 工具选择:C++用OpenCASCADE,Python用pythonocc-core(OpenCASCADE的Python绑定)
  • 实现逻辑:
    1. 读取STEP文件并加载拓扑形状
    2. 计算外形尺寸:遍历形状的 bounding box,取极值差得到长宽高
    3. 计算体积:调用库内置的体积计算API(默认返回体积值,需质量则乘以密度)
    4. 质量计算:STEP默认不存储密度,需预设密度值或从外部数据源(如PDM)同步后,用「体积×密度」得到

自定义属性提取

仅AP214版本的STEP支持存储产品自定义属性,解析时需遍历ProductDefinition或PropertyDefinition节点,提取键值对。AP203版本无此支持,需提前确认STEP导出版本。


装配体缩进式BOM提取

STEP通过ComponentUsage和ProductDefinitionFormation节点维护装配层级:

  1. 递归遍历装配体的组件树,记录每个组件的ID、名称、数量
  2. 维护层级缩进值,生成结构化的BOM数据
  3. 注意区分组件的「原部件」和「实例」,避免重复计算零件属性

代码示例(Python,基于pythonocc-core)

from OCC.Core.STEPControl import STEPControl_Reader
from OCC.Core.GProp import GProp_GProps
from OCC.Core.BRepGProp import brepgprop_VolumeProperties
from OCC.Core.TopAbs import TopAbs_COMPOUND

# 读取STEP文件
reader = STEPControl_Reader()
if reader.ReadFile("your_file.step") != STEPControl_Reader_RetDone:
    raise ValueError("Failed to read STEP file")
reader.TransferRoots()
shape = reader.OneShape()

# 处理零件/装配体
if shape.ShapeType() == TopAbs_COMPOUND:
    # 装配体逻辑:递归遍历组件(示例框架)
    # 可通过TopExp_Explorer遍历子形状,维护层级缩进
    pass
else:
    # 零件逻辑:计算尺寸和体积
    bbox = shape.BoundingBox()
    length = bbox.XMax() - bbox.XMin()
    width = bbox.YMax() - bbox.YMin()
    height = bbox.ZMax() - bbox.ZMin()
    
    # 计算体积
    props = GProp_GProps()
    brepgprop_VolumeProperties(shape, props)
    volume = props.Mass()  # 默认密度为1,返回值即为体积
    
    # 质量计算(以钢铁密度7.8e-6 kg/mm³为例)
    density = 7.8e-6
    mass = volume * density
    
    print(f"Length: {length:.2f}mm, Width: {width:.2f}mm, Height: {height:.2f}mm")
    print(f"Volume: {volume:.2f}mm³, Mass: {mass:.2f}kg")

数据库入库建议

  • 零件表:设计字段包括 id, part_name, length, width, height, volume, mass, custom_properties(JSON),JSON字段用于存储灵活的自定义属性键值对
  • BOM表:设计字段包括 id, assembly_id, component_id, quantity, indent_level,通过外键关联零件表,实现装配层级的关联存储
  • 批量入库时建议用事务处理,避免数据不一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:31:05