deving
This commit is contained in:
@@ -0,0 +1,234 @@
|
||||
# FreeCAD 安装配置指南
|
||||
|
||||
## 一、FreeCAD 安装
|
||||
|
||||
### 1.1 Windows 安装
|
||||
```bash
|
||||
# 方法1:使用 pip 安装
|
||||
pip install freecad
|
||||
|
||||
# 方法2:下载官方安装包
|
||||
# 访问 https://www.freecad.org/downloads.php
|
||||
# 下载 FreeCAD 0.21.2 或更新版本
|
||||
```
|
||||
|
||||
### 1.2 Linux 安装
|
||||
```bash
|
||||
# Ubuntu/Debian
|
||||
sudo apt-get install freecad freecad-python3
|
||||
|
||||
# CentOS/RHEL
|
||||
sudo yum install freecad
|
||||
|
||||
# 或使用 pip
|
||||
pip install freecad
|
||||
```
|
||||
|
||||
### 1.3 验证安装
|
||||
```python
|
||||
# 验证 FreeCAD Python API 是否可用
|
||||
import FreeCAD
|
||||
import Part
|
||||
import PartDesign
|
||||
|
||||
print("FreeCAD 版本:", FreeCAD.Version())
|
||||
print("安装成功!")
|
||||
```
|
||||
|
||||
## 二、项目依赖配置
|
||||
|
||||
### 2.1 更新 requirements.txt
|
||||
```txt
|
||||
# 现有依赖
|
||||
flask>=2.3.0
|
||||
flask-cors>=4.0.0
|
||||
pythonocc-core>=7.6.0
|
||||
numpy>=1.24.0
|
||||
scipy>=1.10.0
|
||||
pandas>=2.0.0
|
||||
matplotlib>=3.7.0
|
||||
plotly>=5.14.0
|
||||
psycopg2-binary>=2.9.0
|
||||
sqlalchemy>=2.0.0
|
||||
trimesh>=3.20.0
|
||||
pyvista>=0.38.0
|
||||
requests>=2.28.0
|
||||
pytest>=7.3.0
|
||||
|
||||
# 新增 FreeCAD 相关依赖
|
||||
freecad>=0.21.0
|
||||
freecad.part>=0.21.0
|
||||
freecad.partdesign>=0.21.0
|
||||
|
||||
# AI 相关依赖
|
||||
openai>=1.0.0
|
||||
langchain>=0.0.300
|
||||
scikit-learn>=1.3.0
|
||||
torch>=2.0.0
|
||||
```
|
||||
|
||||
### 2.2 安装依赖
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## 三、FreeCAD 模块结构
|
||||
|
||||
### 3.1 模块规划
|
||||
```
|
||||
src/core/freecad/
|
||||
├── __init__.py
|
||||
├── mold_generator.py # 模具生成器
|
||||
├── stp_importer.py # STP文件导入
|
||||
├── cavity_splitter.py # 型腔分割
|
||||
├── runner_designer.py # 流道设计
|
||||
├── cooling_designer.py # 冷却系统设计
|
||||
└── standard_parts.py # 标准件库
|
||||
```
|
||||
|
||||
### 3.2 核心类设计
|
||||
|
||||
#### FreeCADMoldGenerator(模具生成器)
|
||||
- `import_stp_file()` - 导入STP文件
|
||||
- `analyze_draft_angles()` - 拔模角分析
|
||||
- `detect_parting_line()` - 分型线检测
|
||||
- `split_cavity_core()` - 型腔/型芯分割
|
||||
|
||||
#### FreeCADSTPImporter(STP导入器)
|
||||
- `read_step_file()` - 读取STEP文件
|
||||
- `validate_geometry()` - 几何验证
|
||||
- `repair_geometry()` - 几何修复
|
||||
|
||||
#### FreeCADCavitySplitter(型腔分割器)
|
||||
- `create_parting_surface()` - 创建分型面
|
||||
- `boolean_split()` - 布尔运算分割
|
||||
- `create_mold_base()` - 创建模架
|
||||
|
||||
## 四、配置参数
|
||||
|
||||
### 4.1 模具参数配置
|
||||
```python
|
||||
# config/mold_parameters.py
|
||||
|
||||
# 材料收缩率
|
||||
MATERIAL_SHRINKAGE = {
|
||||
"ABS": 0.005,
|
||||
"PP": 0.016,
|
||||
"PC": 0.007,
|
||||
"POM": 0.020,
|
||||
"Nylon": 0.015
|
||||
}
|
||||
|
||||
# 拔模角度配置
|
||||
DRAFT_ANGLES = {
|
||||
"textured": 3.0, # 纹面
|
||||
"polished": 1.5, # 抛光
|
||||
"standard": 2.0 # 标准
|
||||
}
|
||||
|
||||
# 模具钢材参数
|
||||
MOLD_STEELS = {
|
||||
"P20": {"hardness": 30, "price": 1.0},
|
||||
"718": {"hardness": 35, "price": 1.2},
|
||||
"S136": {"hardness": 48, "price": 1.8},
|
||||
"NAK80": {"hardness": 40, "price": 2.0}
|
||||
}
|
||||
```
|
||||
|
||||
### 4.2 FreeCAD 配置
|
||||
```python
|
||||
# config/freecad_config.py
|
||||
|
||||
# FreeCAD 工作目录配置
|
||||
FREECAD_WORKSPACE = "workspace/freecad"
|
||||
FREECAD_TEMPLATES = "templates/freecad"
|
||||
|
||||
# 几何精度设置
|
||||
GEOMETRY_TOLERANCE = 1e-6
|
||||
BOOLEAN_PRECISION = 1e-5
|
||||
|
||||
# 导出设置
|
||||
EXPORT_FORMATS = ["step", "stl", "iges"]
|
||||
EXPORT_PRECISION = 0.001
|
||||
```
|
||||
|
||||
## 五、测试验证
|
||||
|
||||
### 5.1 功能测试
|
||||
```python
|
||||
# tests/test_freecad_integration.py
|
||||
|
||||
def test_stp_import():
|
||||
"""测试STP文件导入功能"""
|
||||
generator = FreeCADMoldGenerator()
|
||||
result = generator.import_stp_file("test.stp")
|
||||
assert result.success
|
||||
assert result.shape is not None
|
||||
|
||||
def test_cavity_split():
|
||||
"""测试型腔分割功能"""
|
||||
generator = FreeCADMoldGenerator()
|
||||
cavity, core = generator.split_cavity_core(test_shape)
|
||||
assert cavity.Volume > 0
|
||||
assert core.Volume > 0
|
||||
```
|
||||
|
||||
### 5.2 性能测试
|
||||
```python
|
||||
# tests/benchmark_freecad.py
|
||||
|
||||
def benchmark_boolean_operations():
|
||||
"""布尔运算性能测试"""
|
||||
# 测试不同复杂度的布尔运算性能
|
||||
pass
|
||||
```
|
||||
|
||||
## 六、故障排除
|
||||
|
||||
### 6.1 常见问题
|
||||
|
||||
#### FreeCAD 导入失败
|
||||
- **问题**: `ImportError: No module named 'FreeCAD'`
|
||||
- **解决**: 确保 FreeCAD 正确安装,检查 Python 路径
|
||||
|
||||
#### 布尔运算失败
|
||||
- **问题**: 复杂几何体布尔运算报错
|
||||
- **解决**: 使用几何修复工具,简化几何体
|
||||
|
||||
#### 内存不足
|
||||
- **问题**: 大模型处理时内存溢出
|
||||
- **解决**: 分块处理,使用内存优化算法
|
||||
|
||||
### 6.2 调试工具
|
||||
```python
|
||||
# utils/freecad_debug.py
|
||||
|
||||
def debug_geometry(shape):
|
||||
"""几何体调试工具"""
|
||||
print(f"顶点数: {len(shape.Vertexes)}")
|
||||
print(f"边数: {len(shape.Edges)}")
|
||||
print(f"面数: {len(shape.Faces)}")
|
||||
print(f"体积: {shape.Volume}")
|
||||
print(f"表面积: {shape.Area}")
|
||||
```
|
||||
|
||||
## 七、最佳实践
|
||||
|
||||
### 7.1 内存管理
|
||||
- 及时清理 FreeCAD 文档对象
|
||||
- 使用分块处理大模型
|
||||
- 避免同时打开多个复杂文档
|
||||
|
||||
### 7.2 错误处理
|
||||
- 所有 FreeCAD 操作添加异常捕获
|
||||
- 提供详细的错误信息和恢复建议
|
||||
- 实现自动几何修复机制
|
||||
|
||||
### 7.3 性能优化
|
||||
- 使用缓存机制存储中间结果
|
||||
- 并行处理多个几何操作
|
||||
- 优化布尔运算算法
|
||||
|
||||
---
|
||||
*文档版本:v1.0*
|
||||
*创建日期:2026-02-17*
|
||||
Reference in New Issue
Block a user