Skip to content

AshlynYang-dev/PartLibraryExtractor

Repository files navigation

零部件库提取器 (PartLibraryExtractor)

基于 DeepNestPort 项目的 DXF/SVG 格式模型展开图提取工具,支持将几何数据存储到 PostgreSQL 数据库(配置 PostGIS 和 pgvector 扩展)。

项目概述

本项目能够:

  • 将 STEP 文件转换为 DXF 格式
  • 处理 DXF 和 SVG 文件,提取几何特征
  • 存储零部件信息到 PostgreSQL 数据库
  • 支持相似性搜索和空间查询
  • 生成形状特征向量用于机器学习

环境要求

  • .NET 8.0 SDK
  • SolidWorks
  • Docker 和 Docker Compose
  • PostgreSQL 15 with PostGIS 和 pgvector 扩展

快速开始

1. 环境安装

安装 .NET 8.0 SDK

# 下载并安装 .NET 8.0 SDK
# https://dotnet.microsoft.com/download/dotnet/8.0

验证安装

dotnet --version

2. 数据库设置

启动 PostgreSQL 数据库

# 启动 Docker 数据库服务
docker-compose up -d

# 查看运行状态
docker ps

数据库连接信息

  • 主机: localhost
  • 端口: 5433 (如果有端口冲突,可能是 5432)
  • 数据库: postgres
  • 用户名: postgres
  • 密码: postgres

3. 项目构建

# 还原 NuGet 包
dotnet restore

# 编译项目
dotnet build

# 运行项目(查看帮助)
dotnet run

主要功能和命令

1. 查看统计信息

dotnet run stats

显示数据库中零部件的统计信息,包括总数量、材料种类、平均面积等。

2. STEP 文件转换

# 将 STEP 文件转换为 DXF 格式
dotnet run convert initData/PCSWP2.step output/PCSWP2.dxf

# 创建输出目录(如果不存在)
mkdir output

3. 处理 DXF/SVG 文件

# 处理整个目录中的文件,指定材料和和厚度
dotnet run process output --material=Q235 --thickness=2.0

# 可处理单个文件,也可以不指定材料和厚度
dotnet run process output/PCSWP2_polygon.dxf

4. 搜索零部件

# 基本搜索
dotnet run search

# 按材料搜索
dotnet run search --material=Q235

# 复合条件搜索
dotnet run search --material=Q235 --min-thickness=1.0 --max-thickness=5.0 --min-area=100

5. 相似性搜索

# 查找相似零部件(需要先有数据)
dotnet run similar <零部件ID> [数量限制]

# 示例
dotnet run similar 6f5fefe9-30f6-410e-8d73-42ac9cf4ad26 5

数据库操作

连接数据库(命令行)

# 通过 Docker 容器连接
docker exec -it pgvector-db psql -U postgres

# 在 psql 中的常用命令
\l                    # 列出所有数据库
\c postgres          # 连接到 postgres 数据库
\dt                  # 列出所有表
\d part_library      # 查看表结构

查看数据

-- 查看所有零部件
SELECT * FROM part_library;

-- 查看特定字段
SELECT part_id, filename, material_code, thickness_mm, flat_area, created_at 
FROM part_library;

-- 按材料筛选
SELECT * FROM part_library WHERE material_code = 'Q235';

pgAdmin 连接配置

  • 主机名/地址: localhost
  • 端口: 5433
  • 维护数据库: postgres
  • 用户名: postgres
  • 密码: postgres

如果连接失败,在 psql 中设置密码:

ALTER USER postgres PASSWORD 'postgres';

项目结构

database/
├── Program.cs              # 主程序入口
├── appsettings.json        # 配置文件
├── docker-compose.yml      # Docker 配置
├── Dockerfile             # 数据库镜像配置
├── Models/
│   └── PartLibrary.cs     # 数据模型
├── Data/
│   └── PartLibraryContext.cs  # EF Core 数据库上下文
├── Services/
│   ├── GeometryProcessor.cs   # 几何处理服务
│   ├── FileProcessor.cs      # 文件处理服务
│   └── StepProcessor.cs      # STEP 文件处理服务
├── initData/
│   └── PCSWP2.step        # 示例 STEP 文件
├── output/                # 转换后的 DXF 文件
└── README.md              # 项目说明

数据库表结构

part_library 表

字段名 类型 说明
part_id UUID 零部件唯一标识
filename TEXT 文件名
material_code TEXT 材料代码
thickness_mm DECIMAL 厚度(毫米)
bbox_l DOUBLE 边界框长度
bbox_w DOUBLE 边界框宽度
flat_area DOUBLE 展开面积
contour_wkt GEOMETRY PostGIS 几何数据
nfp_hash TEXT NFP 哈希值
shape_vec VECTOR(512) pgvector 形状特征向量
upload_batch TEXT 上传批次
created_at TIMESTAMP 创建时间
updated_at TIMESTAMP 更新时间

技术特性

几何处理

  • 基于 DeepNestPort 的几何算法
  • 支持 DXF 文件解析(多段线、圆形、线段)
  • 简化的 SVG 解析(路径、矩形、多边形)
  • 轮廓提取和面积计算

数据库功能

  • PostGIS 空间数据存储
  • pgvector 向量相似性搜索
  • 支持复杂的空间查询
  • 512 维形状特征向量

文件支持

  • STEP 文件转换(SolidWorks API)
    • 原生 STEP 文件解析
    • 自动材料和厚度提取
    • 钣金零件识别和展开
    • 专业级 DXF 导出
  • DXF 文件处理
    • 支持多个版本的 DXF 格式
    • 处理多段线、圆形、线段等实体
  • SVG 文件处理
  • 批量文件处理

故障排除

常见问题

  1. 数据库连接失败

    # 检查 Docker 容器状态
    docker ps
    
    # 重启数据库容器
    docker-compose restart
  2. 端口冲突

    # 查看端口占用
    netstat -an | findstr :5432
    netstat -an | findstr :5433
  3. NuGet 包问题

    # 清理并重新还原
    dotnet clean
    dotnet restore
  4. DXF 文件无法加载

    • 检查 DXF 文件格式是否标准
    • 使用 netDxf 库生成的文件通常没问题
    • 手动编写的 DXF 可能格式不完整

日志查看

程序运行时会显示详细的日志信息,包括:

  • 数据库连接状态
  • 文件处理进度
  • 错误信息和堆栈跟踪

开发历程

主要解决的问题

  1. .NET SDK 环境配置 - 安装并配置 .NET 8.0 SDK
  2. STEP 文件解析 - 集成 SolidWorks API 实现专业级转换
  3. 钣金展开 - 利用 SolidWorks 原生钣金展开功能
  4. 材料和厚度提取 - 从 STEP 文件自动提取工程属性
  5. NuGet 包依赖 - 解决 NetTopologySuite 版本冲突,配置 pgvector 支持
  6. 数据库连接 - 配置 PostgreSQL、PostGIS 和 pgvector 扩展
  7. DXF 文件格式 - 处理不同版本的 DXF 文件格式兼容性

技术栈

  • .NET 8.0 - 主要开发框架
  • SolidWorks API - STEP 文件转换和钣金展开
  • Entity Framework Core - ORM 框架
  • Npgsql - PostgreSQL 数据库驱动
  • NetTopologySuite - 空间几何处理
  • netDxf - DXF 文件处理
  • Pgvector - 向量相似性搜索
  • Docker - 数据库容器化部署

About

基于 DeepNestPort 项目的 DXF/SVG 格式模型展开图提取工具,支持将几何数据存储到 PostgreSQL 数据库(配置 PostGIS 和 pgvector 扩展)。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors